IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ビタゲントゥア ゲーエムベーハー ウント ツェーオー カーゲーの特許一覧

特許7002767署名付きメッセージを用いるトークンベースの認証
<>
  • 特許-署名付きメッセージを用いるトークンベースの認証 図1
  • 特許-署名付きメッセージを用いるトークンベースの認証 図2
  • 特許-署名付きメッセージを用いるトークンベースの認証 図3
  • 特許-署名付きメッセージを用いるトークンベースの認証 図4
  • 特許-署名付きメッセージを用いるトークンベースの認証 図5
  • 特許-署名付きメッセージを用いるトークンベースの認証 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-05
(45)【発行日】2022-01-20
(54)【発明の名称】署名付きメッセージを用いるトークンベースの認証
(51)【国際特許分類】
   H04L 9/32 20060101AFI20220113BHJP
   G09C 1/00 20060101ALI20220113BHJP
   G06F 21/64 20130101ALI20220113BHJP
   G06F 21/31 20130101ALI20220113BHJP
【FI】
H04L9/32 200B
G09C1/00 640E
G06F21/64
G06F21/31
【請求項の数】 16
(21)【出願番号】P 2019503483
(86)(22)【出願日】2017-07-18
(65)【公表番号】
(43)【公表日】2019-09-26
(86)【国際出願番号】 EP2017068161
(87)【国際公開番号】W WO2018015402
(87)【国際公開日】2018-01-25
【審査請求日】2020-07-03
(31)【優先権主張番号】102016213104.4
(32)【優先日】2016-07-18
(33)【優先権主張国・地域又は機関】DE
(73)【特許権者】
【識別番号】519018037
【氏名又は名称】ビタゲントゥア ゲーエムベーハー ウント ツェーオー カーゲー
(74)【代理人】
【識別番号】100121603
【弁理士】
【氏名又は名称】永田 元昭
(74)【代理人】
【識別番号】100141656
【弁理士】
【氏名又は名称】大田 英司
(74)【代理人】
【識別番号】100182888
【弁理士】
【氏名又は名称】西村 弘
(74)【代理人】
【識別番号】100196357
【弁理士】
【氏名又は名称】北村 吉章
(74)【代理人】
【識別番号】100067747
【弁理士】
【氏名又は名称】永田 良昭
(72)【発明者】
【氏名】アイデンシンク マキシミリアン
(72)【発明者】
【氏名】ゼンフ マルセル
【審査官】行田 悦資
(56)【参考文献】
【文献】特表2009-521032(JP,A)
【文献】特開2010-049420(JP,A)
【文献】特開2009-140275(JP,A)
【文献】特開2009-043037(JP,A)
【文献】特開2002-041223(JP,A)
【文献】特表2014-530371(JP,A)
【文献】特開2009-049916(JP,A)
【文献】国際公開第2009/097260(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G09C 1/00
G06F 21/64
G06F 21/31
(57)【特許請求の範囲】
【請求項1】
コンピュータシステム(70)に対してユーザを認証するための方法(50)であって、前記方法は、トークン(10)内で実行される以下のステップ、すなわち、
前記トークン(10)内に実装される計数ユニット(12)を利用することにより、カウンタ値(20、22)を生成するステップ(52)であって、生成されるカウンタ値(20、22)の少なくとも一部分は、厳密な単調数列を形成するステップ(52)と、
生成された前記カウンタ値(20、22)に依存してメッセージ(30)を生成するステップ(54)と、
生成された前記メッセージ(30)に、前記ユーザの秘密鍵(24)を利用することにより署名するステップ(56)であって、前記秘密鍵(24)は、前記トークン(10)に記憶され、かつ前記秘密鍵(24)またはそのコピーは、前記コンピュータシステム(70)へ提供されないステップ(56)と、
前記署名付きメッセージを前記コンピュータシステム(70)へ送信するステップ(58)と、を含み、
前記トークン(10)は、前記コンピュータシステム(70)へ入力デバイス(ヒューマン・インタフェース・デバイス)としてログオンするように適合化され、
前記署名付きメッセージを送信するステップ(58)は、前記署名付きメッセージを入力データとして符号化しかつ送信することを含み、
前記入力データは、定義される言語設定のキーボード・スキャン・コードとして符号化され、かつ前記メッセージは、前記キーボード・スキャン・コードの異なる言語設定を区別することに適する、先に合意された少なくとも2つのASCII文字の前記キーボード・スキャン・コードを含むチェックコードを含む、
方法(50)。
【請求項2】
署名されるべき前記メッセージは、32バイトの最小長さを有する、
請求項1に記載の方法(50)。
【請求項3】
送信される前記メッセージは、最大127バイトを含む、
請求項1または2に記載の方法(50)。
【請求項4】
前記署名付きメッセージは、前記メッセージの長さが4/3の割合で増加するように、Base64または同等のフォーマットに従って符号化される、
請求項1~3のいずれか一項に記載の方法(50)。
【請求項5】
署名されるべき前記メッセージは、前記署名付きメッセージの送信時に送信されないパディングバイトを含む、
請求項1~4のいずれか一項に記載の方法(50)。
【請求項6】
前記メッセージ(30)は、さらに、前記トークン(10)の識別特徴(36)に依存して生成される、
請求項1~5のいずれか一項に記載の方法(50)。
【請求項7】
前記計数ユニット(12)は、クロックを含み、かつ前記カウンタ値(20、22)は、タイムスタンプ(22)を含む、
請求項1~6のいずれか一項に記載の方法(50)。
【請求項8】
前記署名付きメッセージを送信する前記ステップ(58)は、ユニバーサル・シリアル・バス(USB)、ブルートゥースまたは近距離無線通信(NFC)を介する、
請求項1~7のいずれか一項に記載の方法(50)。
【請求項9】
コンピュータシステム(70)に対してユーザを認証するためのトークン(10)であって、
カウンタ値(20、22)を生成する(52)ための計数ユニット(12)であって、生成されるカウンタ値(20、22)の少なくとも一部分は、厳密な単調数列を形成する計数ユニット(12)と、
前記ユーザに関連づけられる秘密鍵(24)を記憶するためのメモリ(14)と、
生成される前記カウンタ値(20、22)に依存してメッセージ(30)を生成し(54)、かつ生成された前記メッセージ(30)に前記秘密鍵(24)を利用して署名する(56)ための処理ユニット(16)と、
前記署名付きメッセージを前記コンピュータシステム(70)に送信するための送信ユニット(18)とを含み、
前記トークン(10)は、前記コンピュータシステム(70)へ入力デバイス(ヒューマン・インタフェース・デバイス)としてログオンするように適合化され、
前記送信ユニット(18)は、前記署名付きメッセージを入力データとして符号化しかつ送信することを含み、
前記入力データは、定義される言語設定のキーボード・スキャン・コードとして符号化され、かつ前記メッセージは、前記キーボード・スキャン・コードの異なる言語設定を区別することに適する、先に合意された少なくとも2つのASCII文字の前記キーボード・スキャン・コードを含むチェックコードを含む、
トークン(10)。
【請求項10】
前記トークン(10)は、認証プロセス(50)を開始するための第1の制御エレメントを含む、
請求項9に記載のトークン(10)。
【請求項11】
前記メモリ(14)は、前記秘密鍵(24)に関連づけられる公開鍵(26)を含む、
請求項9または請求項10に記載のトークン(10)。
【請求項12】
前記トークン(10)は、前記コンピュータシステム(70)への公開鍵(26)の送信を開始するための第2の制御エレメントを含む、
請求項11に記載のトークン(10)。
【請求項13】
ユーザを認証するための方法(60)であって、前記方法は、コンピュータシステム(70)内で実行される以下のステップ、すなわち、
カウンタ値(20、22)を生成する(52)ための計数ユニット(12)であって、生成されるカウンタ値(20、22)の少なくとも一部分が、厳密な単調数列を形成する計数ユニット(12)と、前記ユーザに関連づけられる秘密鍵(24)を記憶するためのメモリ(14)と、生成される前記カウンタ値(20、22)に依存してメッセージ(30)を生成し(54)、かつ生成された前記メッセージ(30)に前記秘密鍵(24)を利用して署名する(56)ための処理ユニット(16)と、前記署名付きメッセージを前記コンピュータシステム(70)に送信するための送信ユニット(18)とを含み、前記送信ユニット(18)が、前記署名付きメッセージを入力データとして符号化しかつ送信することを含み、前記入力データが、定義される言語設定のキーボード・スキャン・コードとして符号化され、かつ前記メッセージが、前記キーボード・スキャン・コードの異なる言語設定を区別することに適する、先に合意された少なくとも2つのASCII文字の前記キーボード・スキャン・コードを含むチェックコードを含み、前記コンピュータシステム(70)へ入力デバイス(ヒューマン・インタフェース・デバイス)としてログオンするように適合化されたトークン(10)から署名付きメッセージを受信するステップ(62)であって、前記署名付きメッセージは、前記トークン(10)のカウンタ値(20、22)に依存するステップ(62)と、
識別特徴(36)によって前記ユーザを前記署名付きメッセージに割り当てるステップ(64)と、
前記ユーザの公開鍵(26)を利用することにより、前記署名付きメッセージの前記署名を検証するステップ(66)と、
前記メッセージ(30)から抽出される前記カウンタ値(20、22)を、前記ユーザの先行する認証プロセス(60)の前記カウンタ値(20、22)と比較するステップ(68)とを含み、
前記ユーザの連続する認証プロセスのカウンタ値(20、22)の少なくとも一部分は、厳密な単調数列を形成し、
前記コンピュータシステム(70)は、前記トークン(10)が前記コンピュータシステム(70)に入力デバイス(ヒューマン・インタフェース・デバイス)としてログオンすることをサポートするように適合化され、
前記署名付きメッセージを受信する前記ステップ(62)は、前記署名付きメッセージを入力データとして復号することを含み、かつ、
前記入力データは、定義される言語設定のキーボード・スキャン・コードとして符号化され、かつ前記メッセージは、前記キーボード・スキャン・コードの異なる言語設定を区別することに適する、先に合意された少なくとも2つのASCII文字の前記キーボード・スキャン・コードを含むチェックコードを含む、
方法(60)。
【請求項14】
ハードウェア実装トークン(10A)を含むモバイルデバイス(80A)であって、前記ハードウェア実装トークン(10A)は、請求項9~12のいずれか一項に記載のトークン(10)を含む、
モバイルデバイス(80A)。
【請求項15】
ソフトウェアトークンとして実装されたソフトウェア実装トークン(10B)を含むモバイルデバイス(80B)であって、前記ソフトウェア実装トークン(10B)は、前記モバイルデバイス(80B)のプロセッサ(82)上で実行されると請求項1~8のいずれか一項に記載の方法(50)のステップを実装する命令を含む、
モバイルデバイス(80B)。
【請求項16】
プロセッサ(72、82)上で実行されると請求項1~8または13のいずれか一項に記載の方法(50、60)のステップを実装する命令を含む、
コンピュータ・プログラム・プロダクト。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、コンピュータシステムを安全にする分野に関し、より具体的には、コンピュータシステムに対してユーザを認証することに関する。
【背景技術】
【0002】
ユーザがコンピュータシステム上でアプリケーションおよびデータにアクセスすることを認証するためには、ユーザの識別を検証する必要がある。
アプリケーションおよびデータへのアクセスは、主張された識別が首尾良く検証されて初めて認められることになる。
【0003】
ユーザの申し立てによる識別を検証する一般的な方法は、静的パスワードの照会である。
この手順には、ユーザが、エラーが発生しやすくかつユーザにとって煩わしいパスワード入力を行わなければならないという欠点がある。
また、静的パスワードの照会には、通常、安全なパスワードを打ち込む必要があり、よって、そのパスワードを非認可者によって記録される可能性があるという欠点もある。
一方で、単純なパスワードが選択されていれば、これは、容易に推測される可能性があり、よって、例えばプロービング(「ブルート・フォース・アタック」)により、かなり短時間で決定され得る。
【0004】
米国特許出願公開第2010/0049984(A1)号明細書は、サーバに対して携帯電話のユーザを認証する方法を開示している。
携帯電話は、ユーザ識別を保存する集積回路を含んでいる。
ユーザ識別および現在時刻は、署名鍵で署名されてサーバへ送信される。
サーバは、同じ署名鍵、よってユーザとサーバとの共通鍵として機能する署名鍵、を用いて署名の有効性を検証する。
【0005】
特開2012-138650(A)号公報からは、データストリームの時間ベース認証方法が知られている。
データストリームから、電子署名により生成されるハッシュデータが生成される。
【0006】
米国登録特許第8,370,952(B1)号明細書からは、トークンのオーナーシップを識別プロバイダにより実行される秘密鍵を用いる暗号化によって匿名にするトークンが知られている。
対応する公開鍵を持つサービスプロバイダは、これを復号化できなくても有効な識別を結論づけることができる。
【0007】
国際公開第2007/122224(A1)号パンフレットは、コンピュータシステムに入力デバイス(ヒューマン・インタフェース・デバイス、HID)としてログオンし、ボタンを押せばキーストロークを発行することができる、USB(ユニバーサル・シリアル・バス)トークンを開示している。
これにより、入力デバイスは、プレーンテキストまたは暗号化されたパスワード等の事前に規定されたキーストロークを対称法によってコンピュータシステムに送信することができる。
【0008】
このUSBトークンには、複数のアプリケーションを統合する度に同じパスワードの使用またはユーザが作成する特定のセレクションの使用のいずれかを必要とし、そのUSBトークンが複数のパスワードを保存できる場合には、USBトークンに保存されているパスワードが個々のアプリケーションへ送信される、という欠点がある。
【0009】
さらに、パスワード等の秘密の送信は、概して、セキュリティが危うくされる。
チャレンジレスポンス方式は、認証のための秘密(共有秘密鍵)を送信することではなく、認証機関に対してチャレンジを設定することにより、付随する危険を減らす。
認証されるべきユーザのレスポンスに基づいて、認証機関は、ユーザがその秘密を知っていると認識することができる。
【0010】
適宜送信されるメッセージを保護するためには、公開鍵基盤(PKI)を用いることができる。
公開鍵基盤の各ユーザには、公開鍵および秘密鍵の両方が割り当てられる。
この鍵ペアは、各々の公開鍵および秘密鍵を関連ユーザにバインドする信用のある認証局により発行される証明書に関連づけられることが可能である。
【0011】
セキュリティを保証するためには、ユーザの秘密鍵は、秘密のままであって、この鍵が割り当てられる認証されたユーザだけが署名を生成する、またはメッセージを復号するために利用できることが保証されなければならない。
多くの場合、秘密鍵と公開鍵、および証明書を保存し、かつ秘密鍵に関連づけられる暗号計算を実行するためには、スマートカードまたはUSBトークンが使用される。
【0012】
このようなスマートカードおよびUSBトークンの使用には、従来の入力デバイスによる通信ではなくスマートカードにメッセージを送信しなければならないことから、アプリケーションの認証ルーチンに特定の適合化が必要とされるという欠点がある。
スマートカードは、受信されるメッセージに署名して、署名付きのメッセージを確認のためにアプリケーションへ送信する。
【先行技術文献】
【特許文献】
【0013】
【文献】米国特許出願公開第2010/0049984(A1)号明細書
【文献】特開2012-138650(A)号公報
【文献】米国登録特許第8,370,952(B1)号明細書
【文献】国際公開第2007/122224(A1)号パンフレット
【発明の概要】
【0014】
本発明の目的は、ユーザの認証を、一方で高レベルのセキュリティを提供し、かつ一方で既存のアプリケーションが関与する適合化努力を可能な限り少なくする形で可能にすることにある。
【0015】
本発明は、ユーザの安全な認証のために、ユーザとオーセンティケータとの間で共有される、秘密に保たれなければならない情報は不要である、という概念を基礎とする。
本発明の場合、(i)メッセージに特定の設定で署名し、(ii)署名の有効性を非対称暗号化方式で検証し、かつ(iii)メッセージの特定の構造に基づいて、妥当な時間間隔内で既に受信されているメッセージの繰り返された検証を認識することが不可欠である。
【0016】
本発明の利点は、認証側の秘密鍵が不要であることにある。
認証に必要なデータは、全て、公知であってもよい。
【0017】
本発明の第1の態様によれば、コンピュータシステムに対してユーザを認証するための方法が提供され、本方法は、トークン内で実行される以下のステップ、すなわち、
トークン内に実装される計数ユニットを利用することにより、カウンタ値を生成するステップであって、生成されるカウンタ値の少なくとも一部分は、厳密な単調数列を形成するステップと、
生成されたカウンタ値に依存してメッセージを生成するステップと、
生成されたメッセージに、ユーザの秘密鍵を利用することにより署名するステップであって、秘密鍵は、トークンに記憶され、かつ秘密鍵またはそのコピーは、コンピュータシステム(70)へ提供されないステップと、
署名付きメッセージをコンピュータシステムへ送信するステップと、を含む。
【0018】
好ましくは、トークンは、トークンに保存される秘密鍵をトークン外部のリソースから読み取れないように配置される。
【0019】
本発明の好ましい一実施形態において、トークンは、コンピュータシステムへ入力デバイス(ヒューマン・インタフェース・デバイス)としてログオンするように設定される。
署名付きメッセージの送信は、署名付きメッセージを入力データとして、具体的には(例えば、キーボード・スキャン・コードによる)キーボード入力データとして、符号化しかつ送信することを含んでもよい。
【0020】
メッセージは、1つ以上の追加的なカウンタ値に依存して生成されることが可能である。
カウンタ値は、計数ユニットが再びポーリングされると増分されるカウンタ数値、例えば整数、であってもよい。
しかしながら、他のタイプのカウンタ値も企図される。
したがって、例えば、タイムスタンプとしての日付を含む時間表示が提供されてもよい。
時間表示に含まれる日付は、例えばグレゴリオ暦である従来のカレンダに従ってコード化されてもよい。
また、日付は、例えば、最初の日付以降の秒単位で数値表現されてもよい。
【0021】
本発明の好適な一実施形態において、計数ユニットは、クロックを備える。
カウンタ値は、タイムスタンプを含んでもよい。
この場合、メッセージにおいてコード化されるカウンタ値は、例えば、タイムスタンプに基づくものであっても、カウンタ数値に加えて存在するものであってもよい。
【0022】
基本的に、カウンタ値は、計数ユニットの新しくされたクエリにより、先に生成されたカウンタ値に対する後に生成されたカウンタ値として識別され得る任意のコンテンツによって表わされてもよい。
この規則は、少なくとも、連続して生成されるカウンタ値の大部分に適用されなければならない。
これに関しては、生成される同じタイプのカウンタ値の一部分の厳密な単調さが当てはまる。
「部分」という用語は、共にカウンタ値の一部分を形成する、互いの直後に生成される所定数のカウンタ値を含む。
カウンタ値の少なくとも一部分に適用されるべき厳密な単調さの境界条件は、記憶および処理の間のカウンタ値の限度から生じる。
所定数のカウンタ値が生成されると、カウンタ値は上限値に達するが、これは、カウンタがオーバーフローする前に発生する。
この場合、遅くとも、カウンタは、次の計数の継続を、下限に対応するカウンタ値を用いて行わなければならない。
安全上の理由から、カウンタの幅は相応に大きいものとなる。
ある好適な実施形態では、カウンタは、32ビットを含み、よって約40億のカウンタ値を区別することができる。
【0023】
潜在的攻撃者が特定のカウンタ値を有する傍受したメッセージを再利用できるためには多くの時間を費やさなければならないと思われる場合、その間にも、この傍受したメッセージが後続のものと見なされなければならないクエリは多く発生していることから、カウンタの幅は、十分に大きいものであるように選択される。
【0024】
本発明の好適な一実施形態では、メッセージは、さらに、トークンの識別特徴に依存して生成される。
識別特徴は、受信側のコンピュータシステムがトークンに関連づけられるユーザを識別できるようにする。
この情報は、受信されるメッセージの署名を検証するために必要な関連の公開鍵を識別するために要求される。
関連の公開鍵を別の方法でも決定できる限り、署名付きメッセージにおける識別特徴の送信は、必須ではない。
ユーザは、コンピュータシステムにおける認証プロセスの一部としてのユーザ選択を、例えばキーボードを介して自分のユーザ名を手動入力(ログイン)することにより行ってもよい。
【0025】
また、メッセージは、プロトコルバージョンに依存して生成されることも可能である。
受信側コンピュータシステムは、コード化されたプロトコルバージョンに依存してメッセージを様々に処理できることから、受信されるメッセージからプロトコルバージョンを抽出することは、生成されるメッセージ用に異なるフォーマットを用いることを可能にする。
【0026】
また、メッセージは、フラグに依存して生成されることも可能である。
フラグは、署名付きメッセージの作成における問題点を示すために使用可能である。
好ましくは、フラグは、トークンにおける電源故障を示す。
したがって、フラグは、場合により存在するトークン内のリアルタイムクロックが、このリアルタイムクロックが電源故障の間に開始値にリセットされたか、停止されたために、正確なタイムスタンプを生成できていない状態を示す。
代替的または追加的に、フラグは、受信側コンピュータシステムが続いて、上限ではなく下限に対応するカウンタ値を解釈し得るように、目下のカウンタオーバーランをシグナリングしてもよい。
【0027】
また、メッセージは、ユーザ定義のプレフィクスに依存して生成されることも可能である。
ユーザ定義のプレフィクスは、好ましくは、トークンをグループ化するために、例えば会社の部門を識別するために使用される。
また、ユーザ定義のプレフィクスは、ユーザの様々なトークンを区別するため、例えば、ユーザの役割(プライベートトークン、ビジネストークン)を区別するために使用されることも可能である。
【0028】
サポートされるメッセージの最大長さに依存して、メッセージには、コンピュータシステム上でさらなる処理のために利用可能な追加のコンテンツが組み込まれてもよい。
【0029】
好ましくは、署名されるべきメッセージは、例えばASCII文字としてコード化される32バイトの最小長さを含む。
署名されるべきメッセージが最小長さより短い場合、これは、定義されたパディング規則に従ってパディングバイトでパディングされることが可能である。
パディングバイトは、署名が生成された後に、再び取り除くことができる。
【0030】
好ましくは、パディングバイトのない署名されるべきメッセージは、23バイトの長さを有するが、パディングバイトによって32バイトにまで増加される。
パディングバイトがメッセージの送信前に署名付きメッセージから除去される場合、パディング規則は、未送信のパディングバイトが検証されるべき署名付きメッセージへ追加し戻されて署名が正しく検証されるように、認証側コンピュータシステムに知らされなければならない。
パディングバイトは、署名されるべきメッセージにおける定義されたロケーションに位置決めされる単一のASCII文字であってもよい。
署名は、好ましくは、各々1バイトである64文字を含み、メッセージに添付される。
従って、署名付きメッセージは、87バイトを含み、そのうちの23バイトがパディングバイト除去後のメッセージ用であり、64バイトが、32バイトまで拡張されるメッセージの署名用である。
【0031】
ある好適な実施形態では、署名付きメッセージは、メッセージの長さが4/3の割合で、例えば87バイトから116バイトに増加するように、Base64または同等のフォーマットに従って符号化される。
Microsoft社のWindowsシリーズのオペレーティングシステムの場合、パスワードの入力限度は、127バイトである。
これに関しては、受信されるメッセージを、パスワード入力フィールドに読み込むことが可能である。
【0032】
ある実施形態において、トークンは、パスワード照会用キーボード等の、セキュリティ機能を検索するための手段を含む。
この実施形態では、メッセージは、要求されるパスワードにも依存して生成される。
あるいは、署名付きメッセージと共に、パスワードが送信される。
ある好適な実施形態では、署名付きメッセージと共に、または署名付きメッセージ内でパスワードを送信するために8バイトが留保される。
【0033】
Base64エンコーディングには、符号化されかつ署名されたBase64メッセージを送信する際のメッセージ内に特殊文字が存在しないという利点がある。
Base64エンコーディングは、アルファベット26文字の小文字および大文字(a~z、A~Z)、数字0~9およびASCII文字であるプラス(「+」)およびスラッシュ(「/」)を含む64個のASCII文字の使用を基礎とする。
ある好適な実施形態では、プラス(「+」)およびスラッシュ(「/」)の代わりに、ASCII文字であるカンマ(「,」)およびセミコロン(「;」)を有するBase64派生語が使用される。
【0034】
本発明の好適な一実施形態では、送信されかつ場合により符号化されたメッセージは、ユニバーサル・シリアル・バス(USB)、ブルートゥース、または近距離無線通信(NFC)を介して送信される。
好ましくは、署名されかつ場合により符号化されたメッセージは、コンピュータシステム上にヒューマン・インタフェース・デバイスとして登録されかつ例えばUSBまたはブルートゥースキーボードとして認識されるトークンにより、コンピュータシステムへ擬似キーボード入力として送信される。署名されかつ場合により符号化されたメッセージの送信は、キーボード・スキャン・コードを介して行われることが可能である。
キーボード・スキャン・コードは、コンピュータシステムにおけるASCIIコードが割り当てられているキーボード上のキーストロークの符号化を表す。
【0035】
符号化されたBase64メッセージのASCII文字は、好ましくは、個々の関連するキーボード・スキャン・コードの符号化において送信される。
ASCII文字とキーボード・スキャン・コードとの間の割当てが、コンピュータシステムの言語設定に依存することは留意されるべきである。
多くのキーボード・スキャン・コードは、設定言語とは無関係であるが、現行キーボードの所与の言語に依存して、個々のASCII文字が異なるキーボード・スキャン・コードによって表されることはある。
【0036】
この挙動の第1の例は、英語キーボード上の「z」キーのキーボード・スキャン・コードであって、ドイツ語キーボード上ではこれが「y」として解釈される。
第2の例は、英語キーボード上の「z」キーのキーボード・スキャン・コードであって、フランス語キーボード上ではこれが「w」として解釈される。
さらに、フランス語キーボード上のキー「;」は、ドイツ語キーボード上ではキー「,」に換えられる。
キリル文字のキーボードでは、ほとんどすべての英語キーボード・スキャン・コードが、異なるASCIIコードを有する特殊キリル文字に対応する。
これに関しては、言語の違いを含む以前に合意された2つの異なるASCII文字のキーボード・スキャン・コードを生成し、かつコンピュータシステムにより生成されるASCIIコードを検索することによって、設定された言語構成を推測することが可能である。
【0037】
ある好適な実施形態では、署名されかつ場合により符号化されたメッセージに検証コードが提供される。
検証コードは、異なる言語設定を区別することに適する、先に合意された少なくとも2つのASCII文字のキーボード・スキャン・コードを含む。
好ましくは、メッセージの検証コードは、接頭辞として付けられる。
検証コードとしては、例えば、既定言語から選択される次のような文字ペア、すなわちドイツ語キーボード上の「y」および「,」、これに対応する英語キーボード上のキー「z」および「;」のうちの一方が区別のために使用され得る。
実施形態によっては、検証コードは、署名されるべきメッセージ内に1つの属性として包含される。
【0038】
Base64エンコーディングの場合、メッセージの利用可能な「アルファベット」は、64文字から成り、これらは、好ましくは、キーボード・スキャン・コードによって表現される。
実施形態によっては、Base64エンコーディングの64文字は、アルファベット26文字(a~z)のキーボード・スキャン・コード、数字0~9、シフトキー、およびカンマ(「,」)のキーボード・スキャン・コードによって表現される。
シフトキーは、アルファベットおよびカンマ記号に作用することから、文字A~Zおよびセミコロン(=ドイツ語キーボードではシフトキーとカンマ)または「小なり」記号(=英語キーボードではシフトキーとカンマ)は、合計64文字を表示できるようにシフトキーと組み合わせて表示されることが可能である。
トークンおよびコンピュータシステムが同じ言語設定を使用すれば、コンピュータシステムは、キーボード・スキャン・コードから、識別される言語設定により生じるASCII文字へのマッピングを適用することによって、受信されるメッセージのキーボード・スキャン・コードを、ASCII文字として符号化された署名付きメッセージに変換することができる。
【0039】
本発明の第2の態様によれば、コンピュータシステムに対してユーザを認証するためのトークンが提供され、本トークンは、カウンタ値を生成するための計数ユニットであって、生成されるカウンタ値の少なくとも一部分は、厳密な単調数列を形成する計数ユニットと、ユーザに関連づけられる秘密鍵を記憶するためのメモリと、生成されるカウンタ値に依存してメッセージを生成し、かつ生成されたメッセージに前記秘密鍵を利用して署名するための処理ユニットと、署名付きメッセージをコンピュータシステムに送信するための送信ユニットとを含み、本トークンは、前記コンピュータシステムへ入力デバイス(ヒューマン・インタフェース・デバイス)としてログオンするように適合化され、前記送信ユニットは、前記署名付きメッセージを入力データとして符号化しかつ送信することを含み、前記入力データは、定義される言語設定のキーボード・スキャン・コードとして符号化され、かつ前記メッセージは、前記キーボード・スキャン・コードの異なる言語設定を区別することに適する、先に合意された少なくとも2つのASCII文字の前記キーボード・スキャン・コードを含むチェックコードを含む
秘密鍵は、ユーザを認証すべくコンピュータシステムにアクセス可能にされる必要はない。
【0040】
トークンは、専用ハードウェアに、スタンドアロン電子デバイス、またはより包括的な電子デバイスの一部、の双方として統合されてもよい(「ハードウェアトークン」)。
【0041】
ハードウェアに実装されるトークンのコンポーネントは、バスシステムを介して、例えばICバスを介して、互いに通信してもよい。
【0042】
メモリは、ユーザの秘密鍵を記憶するセキュリティチップを含んでもよい。
好ましくは、秘密鍵は、セキュリティチップへメッセージに署名するための機能を提供することに留まらない。
セキュリティチップは、秘密鍵を読み取って記憶するためのインタフェースを含んでもよい。
好ましくは、セキュリティチップは、秘密鍵および関連する公開鍵を生成するための機能と、公開鍵を読み取るための機能とを有する。
【0043】
計数ユニットは、計数するための1つ以上のコンポーネントを含んでもよく、個々のコンポーネントは、例えば、ハードウェアカウンタまたはリアルタイムクロック(RTC)であってもよい。
【0044】
ある好適な実施形態では、ハードウェアカウンタは、要求に応じて、先行の要求から増分されている整数を提供する。
ハードウェアカウンタは、上限に達すると、例えば、カウンタオーバーフローの直前に、下限から再開することができる。
上限への到達または下限からの継続は、コンピュータシステムへメッセージで伝達されてもよい。
コンピュータシステムには、カウンタ値の構造が通知されてもよく、よって、上限に達すると下限から継続されることが分かり得る。
【0045】
好ましくは、リアルタイムクロックは、外的な時間信号とは無関係にトークン内で動作するクロックである。
リアルタイムクロックは、精度を高めるための温度補償を有することが可能である。
リアルタイムクロックは、GPS信号から時間を抽出することができるGPS受信機であってもよい。
リアルタイムクロックは、DCF77等の電波時計受信機であってもよい。
また、リアルタイムクロックは、認証プロセスにおいてトークンが関連づけられるコンピュータシステムの時刻を受信するためのユニットであってもよい。
リアルタイムクロックは、さらに、インターネット上で通信するためのユニットであってもよく、時間は、1つ以上のタイムサーバから取得される。
【0046】
処理ユニットは、計算のための1つ以上のコンポーネントを含んでもよく、個々のコンポーネントは、中央処理装置(CPU)、マイクロコントローラ(MCU)、算術論理演算装置(ALU)または並列論理装置(PLU)である。
したがって、処理ユニットの別々のコンポーネントがメッセージへの署名を担当してもよく、かつ1つ以上の異なるコンポーネントが1つ以上のカウンタ値の生成を担当してもよい。
【0047】
送信ユニットは、メッセージをコンピュータシステムに送信するための1つ以上のコンポーネントを含み、個々のコンポーネントは、ユニバーサル・シリアル・バス(USB)、ブルートゥースまたは近距離無線通信(NFC)のインタフェースとして実装されてもよい。
好ましくは、トークンは、トークンが送信ユニットを介してコンピュータシステムに接続されると認証されるべき、コンピュータシステムに対するキーボードとしての機能を表す。
「キーボード」という動作モードに加えて、送信ユニットは、例えばトークンに記憶されているキーを送信するための他の動作モードも有することが可能である。
トークンが、別個のセキュリティ機能を2ファクタ認証の一部として送信する場合、このセキュリティ機能は、送信ユニットの別個の動作モードで送信されることが可能である。
【0048】
送信ユニットという用語は、送信ユニットが、例えば、データが正常に受信されたことをコンピュータシステムに肯定応答するためのデータ、またはトークンを構成するためのデータ、例えば鍵ペアのアップロードまたは鍵ペアを生成する命令の受信といったデータ、の受信もできることを排除するものではない。
【0049】
ハードウェアに実施されるトークンは、幾つかのコンポーネント内に、トークンのコンポーネント間にインタフェースを有して実装されてもよい。
トークンは、好ましくは、無線インタフェース、例えばブルートゥースおよび/または近距離無線通信(NFC)を含む。
アドオンモジュールは、例えばユニバーサル・シリアル・バス(USB)によるインタフェースである他のインタフェースを用いてトークンを拡張することができる。
【0050】
好ましくは、ユニバーサル・シリアル・バス(USB)インタフェースは、トークンがUSBインタフェースを介してコンピュータシステムに接続されるとすぐにトークンをコンピュータシステムにUSBキーボードとしてログオンするマイクロコントローラを有する。
【0051】
ハードウェアに実装されるトークンは、内部電源を有してもよく、これは、コンピュータシステムと通信するための唯一の、または複数の無線インタフェースを有するトークンにとって特に有利である。
特にトークンのリアルタイムクロックを供給する必要がある場合、内部電源は、外部電源を許容する有線インタフェースを有するトークンにとっても有利であり得る。
内部電源は、例えば、アキュムレータ、バッテリまたは太陽電池であってもよい。
トークンは、外部電源へのインタフェースを有してもよい。
【0052】
トークンがソフトウェアに実装される場合には、計数ユニット、メモリ、処理ユニットおよび送信ユニットといった前記コンポーネントを、トークンソフトウェアを実装するデバイスの対応するコンポーネントで置き換えることができる。
送信ユニットは、ユーザをソフトウェアトークンがインストールされるデバイスに対して認証するために、デバイスのオペレーティングシステムまたはアプリケーションプログラムへのソフトウェアインタフェースを含んでもよい。
【0053】
本発明の好適な一実施形態では、トークンは、認証プロセスを開始するための第1の制御エレメントを含む。
第1の制御エレメントは、署名付きメッセージの生成および送信を実行するためにユーザにより操作されるボタンであってもよい。
ヒューマン・インタフェース・デバイスとして登録されるデバイスの場合、コンピュータシステムには、トークンが、第1の制御エレメントを押すと署名付きメッセージを表現する擬似キーストロークを生成するキーボードのように現出する。
【0054】
本発明の好適な一実施形態では、メモリは、秘密鍵に関連づけられる公開鍵を含む。
公開鍵は、トークンにおける署名付きメッセージの生成には不要である。
しかしながら、ユーザを認証するためには、公開鍵は、トークンが添付されるあらゆるコンピュータシステムにアクセス可能でなければならない。
この点に関しては、公開鍵を要求に応じてコンピュータシステムにインポートできるように、公開鍵をトークンに入れることが効果的である。
【0055】
本発明の好適な一実施形態では、トークンは、コンピュータシステムへの公開鍵の送信を開始するための第2の制御エレメントを含む。
第2の制御エレメントは、ボタンであってもよい。
公開鍵は、キーボード・スキャン・コードを介して送信されることが可能である。
トークンは、さらに、コンピュータシステムへ転送するために公開鍵を入れておくことができるUSBデータキャリアとして設計されることが可能である。
【0056】
本発明の第3の態様によれば、ユーザを認証するための方法が提供され、本方法は、コンピュータシステム内で実行される以下のステップ、すなわち、
カウンタ値を生成するための計数ユニットであって、生成されるカウンタ値の少なくとも一部分が、厳密な単調数列を形成する計数ユニットと、前記ユーザに関連づけられる秘密鍵を記憶するためのメモリと、生成される前記カウンタ値に依存してメッセージを生成し、かつ生成された前記メッセージに前記秘密鍵を利用して署名するための処理ユニットと、前記署名付きメッセージを前記コンピュータシステムに送信するための送信ユニットとを含み、前記送信ユニットが、前記署名付きメッセージを入力データとして符号化しかつ送信することを含み、前記入力データが、定義される言語設定のキーボード・スキャン・コードとして符号化され、かつ前記メッセージが、前記キーボード・スキャン・コードの異なる言語設定を区別することに適する、先に合意された少なくとも2つのASCII文字の前記キーボード・スキャン・コードを含むチェックコードを含み、前記コンピュータシステムへ入力デバイス(ヒューマン・インタフェース・デバイス)としてログオンするように適合化されたトークンから署名付きメッセージを受信するステップであって、前記署名付きメッセージは、本発明の第2の態様によるトークンのカウンタ値に依存するステップと、
識別特徴を利用して、ユーザを署名付きメッセージに割り当てるステップと、
ユーザの公開鍵を用いて署名付きメッセージの署名を検証するステップと、
メッセージから抽出されるカウンタ値を、ユーザの先行する認証プロセスのカウンタ値と比較するステップとを含み、ユーザの連続する認証プロセスのカウンタ値の少なくとも一部分は、厳密な単調数列を形成し、
前記コンピュータシステム(70)は、前記トークン(10)が前記コンピュータシステム(70)に入力デバイス(ヒューマン・インタフェース・デバイス)としてログオンすることをサポートするように適合化され、
前記署名付きメッセージを受信する前記ステップ(62)は、前記署名付きメッセージを入力データとして復号することを含み、かつ、
前記入力データは、定義される言語設定のキーボード・スキャン・コードとして符号化され、かつ前記メッセージは、前記キーボード・スキャン・コードの異なる言語設定を区別することに適する、先に合意された少なくとも2つのASCII文字の前記キーボード・スキャン・コードを含むチェックコードを含む
【0057】
ある好適な実施形態によれば、トークンは、コンピュータシステムにヒューマン・インタフェース・デバイスとして接続される。
トークンは、署名付きメッセージを、キーボード・スキャン・コードで符号化された擬似キーボード入力として送信してもよい。
好ましくは、受信されるメッセージに検証コードが先行し、または、検証コードが署名付きメッセージに組み込まれる。
検証コードは、異なる言語設定を区別することに適する、先に合意された少なくとも2つのASCII文字のキーボード・スキャン・コードを含む。
トークンとコンピュータシステムとの間には、検証コードにおいて提出されるべきASCII文字に関する合意があることから、コンピュータシステムは、受信されるキーボード・スキャン・コードにどの言語設定が対応するかを決定して、このキーボード・スキャン・コードを個々の割り当てられたASCII文字に割り当てることができる。
受信されたメッセージは、これで、それがトークンにより符号化されたものであれば、Base64に従って復号されることが可能である。
【0058】
署名を検証するには、適切な公開鍵が識別されなければならない。
このためには、受信されるメッセージをユーザに割り当てて、決定されたユーザから関連の公開鍵を決定することが必要である。
したがって、ユーザの認証に際して、ユーザおよびコンピュータシステムは、ユーザの秘密鍵等の秘密特徴を共有する必要がない。
ユーザは、署名付きメッセージにおける識別子から決定されることが可能である。
ユーザは、他の関連づけによって、例えば、パスワード入力がトークンによって開始される間に、コンピュータシステム上のキーボードを介してユーザ名を入力すること(ログイン)によって識別されることも可能である。
その結果、識別特徴をメッセージに統合することは、不可欠ではない。
【0059】
署名されるべきメッセージがパディングバイトにより最小長さに拡張されていて、このパディングバイトが署名付きメッセージの送信前に除去されている場合、コンピュータシステムは、受信したメッセージの署名を検証する前に、対応するパディング規則に従って未送信のパディングバイトを補足する。
【0060】
実施形態によっては、トークンの署名付きメッセージに加えて、別のセキュリティ機能が、例えばコンピュータシステムのキーボードまたはトークンを介してパスワードを入力することにより検証されてもよい(2ファクタ認証)。
コンピュータシステムまたはコンピュータシステムのアプリケーションへのアクセスは、入力されたパスワードおよびトークンの署名付きメッセージの検証が肯定的である場合にのみ許可される。
【0061】
トークンを検証することは、署名を検証することと、メッセージに含まれるカウンタ値の厳密な単調さまたはメッセージに含まれるカウンタ値を検証することを含む。
ユーザ認証にトークンを用いる異なるコンピュータシステムのセキュリティ要件および同期に依存して、厳密な単調さの検証は、さらに、検証されるカウンタ値が検証された最新のカウンタ値のずれのない増分を表すことの検証を含んでもよい。
【0062】
他の実施形態では、具体的にはユーザ認証トークンが複数の同期しない、またはさほど頻繁には同期しないコンピュータシステム上で使用される場合、現行のカウンタ値と最後に検証されたカウンタ値とのずれは、許容され得る。
しかしながら、この場合、非認可者は、第1のコンピュータシステム上のメッセージを改竄して、傍受したメッセージを、第1のコンピュータシステム上の認証プロセスについてまだ知らされていない第2のコンピュータシステムへインポートする可能性もある。
トークン検証の誤った肯定結果を防ぐためには、コンピュータシステム間で検証済みカウンタ値の同期をとることができる。
代替的または追加的に、メッセージに、メッセージの短い有効期間を保証するタイムスタンプまたは同等の属性を包含することができる。
この目的に沿って、メッセージに含まれる、受信されたメッセージの使用を定義された時間期間内でのみ許容するタイムスタンプを使用することができる。
【0063】
署名の検証、およびタイムスタンプを含む全てのカウンタ値の検証の双方が肯定的であった場合、ユーザの認証は成功である。
これにより、傍受されたメッセージが他の非同期のコンピュータシステム上で首尾良く再生されることが防止される。
【0064】
本発明による認証プロセスは、既存の認証モジュールに、適合化努力をほとんど要することなく実装することができる。
【0065】
例えば、本発明の認証プロセスは、受信されるパスワードデータを本発明の第3の態様に従って処理する際に、LDAP認証モジュールの既存のフック上でハングされることがある。
したがって、本発明による認証プロセスは、LDAP認証モジュールにより呼び出されるダイナミックライブラリに実装されることが可能である。
したがって、オペレーティングシステムおよびアプリケーションプログラムの観点から、なおも規格準拠のLDAP認証が想定されている。
【0066】
Windowsシリーズのオペレーティングシステムにおける本発明の認証の組み入れは、プログラミングインターフェースを介して、例えばWindowsのクレデンシャル管理APIを介して可能である。
本発明による認証の組み入れは、好ましくは、オープン・ソース・ソフトウェアpGinaを介して行われ、これは、拡張可能なプラグインアーキテクチャを有し、かつWindowsのクレデンシャル管理APIのプログラミングインターフェースを用いる。
本発明による認証は、pGinaを介してWindowsのクレデンシャル管理APIに接続されるLDAPサーバに実装されることが可能である。
LDAPサーバは、好ましくは、ユーザに割り当てられる静的パスワードを記憶し、これが検証のためにWindowsのクレデンシャル管理APIへ送られる。
あるいは、静的パスワードは、トークンに記憶されてコンピュータシステムへ送信されてもよい。
静的パスワードは、Windowsがユーザのパスワードを用いてユーザデータを暗号化することに起因して、Windowsシリーズのオペレーティングシステム上で必要とされる。
【0067】
認証が実行されるコンピュータシステムは、認証が適切である他の電子デバイスも含むことがある。
したがって、コンピュータシステムは、アクセス制御および/または時間記録のための端末および電子ドアロックも含んでもよい。
【0068】
コンピュータシステム上の認証は、例えば、Windows、Mac OS X、LinuxおよびUnix等のオペレーティングシステムの下でローカルアクセス制御に使用されることが可能である。
コンピュータシステム上の認証は、たとえばWindowsのアクティブディレクトリ、SMBおよびCIFSの下でのディレクトリログオンに使用可能である。
さらに、コンピュータシステムに対する認証は、アプリケーションプログラム、サービス、ウェブアプリケーションおよびVPNへのアクセス制御を提供してもよい。
【0069】
本発明の第4の態様によれば、ハードウェアに実装されるトークンを含むモバイルデバイスが提供されていて、前記ハードウェア実装トークンは、本発明の第2の態様によるトークンを含む。
【0070】
本発明の第5の態様によれば、ソフトウェアトークンとして実装されたソフトウェア実装トークンを含むモバイルデバイスが提供されていて、前記ソフトウェア実装トークンは、モバイルデバイスのプロセッサ上で実行されると本発明の第1の態様による方法のステップを実装する命令を有する。
【0071】
本発明の第6の態様によれば、プロセッサ上で実行されると、本発明の第1の態様または第3の態様による方法のステップを実装する命令を含むコンピュータ・プログラム・プロダクトが提供されている。
【0072】
本発明は、既存の秘密鍵および場合により関連の公開鍵をトークンに転送するセットアップおよびメンテナンスプログラムを含んでもよい。
好ましくは、セットアップおよびメンテナンスプログラムは、秘密鍵と対応する公開鍵とから成る鍵ペアを生成するための関数、または鍵ペアを生成するためのトークンをプロンプトする関数を有する。
セットアップおよびメンテナンスプログラムは、トークンのリアルタイムクロックの時刻を設定しかつ/または読み取るために、例えば、初めて時刻を設定するため、またはトークンのリアルタイムクロックの停止またはリセットに至っている停電の後に時刻を設定するために使用されてもよい。
セットアップおよびメンテナンスプログラムは、ユーザ定義のプレフィクスを設定しかつ/または読み取るための関数を有してもよい。
セットアップおよびメンテナンスプログラムは、カウンタ値を設定しかつ/または読み取るための関数を含んでもよい。
【図面の簡単な説明】
【0073】
本発明のさらなる特徴、目的および利点は、添付の略図に関連して解釈される以下の詳細な説明から明らかとなるであろう。
【0074】
図1】本発明の一実施形態によるトークンを示す略図である。
図2】本発明の一実施形態による、トークンにより署名されたメッセージを示す略図である。
図3】本発明の一実施形態による、コンピュータシステムに対してユーザを認証するための方法を示す。
図4】本発明の一実施形態による、コンピュータシステムに対してユーザを認証するための方法を示す。
図5】本発明の一実施形態による、ハードウェアトークンを有するモバイルデバイスを示す略図である。
図6】本発明の一実施形態による、ソフトウェアトークンを有するモバイルデバイスを示す略図である。
【発明を実施するための形態】
【0075】
本発明は、コンピュータシステムにおいてユーザを認証するために使用される。
本発明は、好ましくは、ユーザをオペレーティングシステムにログインするために使用される。
また、本発明は、アプリケーションプログラムまたはウェブアプリケーションにおける認証、例えばソーシャルネットワークにおける認証、にも使用可能である。
本発明は、トークンに割り当てられるユーザの識別を検証することに適する。
トークンは、専用ハードウェアに、スタンドアロン電子デバイス、またはより包括的な電子デバイスの一部、の双方として統合されてもよい(「ハードウェアトークン」)。
トークンは、コンピュータ、タブレットコンピュータ、スマートフォン、ネットブック、ノートブックまたはラップトップ等のモバイル・ポータブル・コンピュータにおいて、これがモバイルデバイスを用いてコンピュータシステム、特殊アプリケーションプログラムまたはデータにアクセスすることになる時点で使用するためのソフトウェアにおける実装(「ソフトウェアトークン」)にも適する。
また、ソフトウェアトークンは、ソフトウェアトークンがインストールされるモバイルデバイスでの認証にも使用可能である。
ハードウェアトークンとしての好ましい使用法は、単に適用分野としての1つの可能性と見なされるべきである。
【0076】
以下の実施形態では、本発明は、ユーザがコンピュータシステムのオペレーティングシステムにログオンできるようにする独立したハードウェアトークンとして実装される。
しかしながら、実施形態はこれに限定されるものではなく、同様の方法で、本発明の各実施形態およびその開示される特徴は、あらゆる適用分野に当てはまる。
【0077】
個々の実施形態は、ほとんどの場合、単に本発明の個々の特徴を強調表示したものである。
この例証は、本発明を明確にし、かつより良く理解するためのものである。本発明の他の特徴から独立している本発明の特徴は、必要に応じて任意に組み合わされてもよい。
【0078】
図1は、計数ユニット12と、メモリ14と、処理ユニット16と、送信ユニット18とを含むトークン10を示す構造略図である。
計数ユニット12は、1つ以上のカウンタ値20、22を生成するために使用される。
例えば、数値であるカウンタ値20および/またはタイムスタンプ22は、カウンタ値20、22として使用されてもよい。
メモリ14は、トークン10のユーザに関連づけられる秘密鍵24を記憶する。
秘密鍵24は、ユーザを認証すべくコンピュータシステムにアクセス可能にされる必要はない。
メモリ14は、さらに、秘密鍵24に関連づけられる公開鍵26を含んでもよい。
認証のためにコンピュータシステムにアクセス可能とされるものは、公開鍵26またはそのコピーに限定されなければならない。
処理ユニット16は、計数ユニット12に少なくとも1つのカウンタ値20、22を生成させることによりメッセージ30を生成するように構成される。
生成される少なくとも1つのカウンタ値20、22は、生成される少なくとも1つのカウンタ値20、22を用いてメッセージ30を生成するためのベースとして機能する。
生成されるカウンタ値20、22は、カウンタ値20、22が、先に生成されたカウンタ値20、22に対して新たなカウンタ値20、22が生成される度に、生成される後続のカウンタ値として識別され得ることを特徴とする。
この条件は、少なくとも、連続値内に最小数のカウンタ値を有する連続値のカウンタ値に適用されなければならない。
数値に制限はなく、生成されるコンテンツを、十分に大きい画定された連続するコンテンツ内で、先に生成されたコンテンツに対する続いて生成されたコンテンツとして識別できる限り、カウンタ値20、22として如何なるコンテンツが提供されてもよい。
実施形態によっては、「続いて」という用語は、すぐ後に続くものとして理解されてもよいが、他の実施形態では、所定数のカウンタ値20、22が、生成される現行のカウンタ値と先のカウンタ値20、22との間であってもよい。
処理ユニット16は、さらに、生成されたメッセージ30に秘密鍵24で署名するように構成される。
署名付きメッセージは、送信ユニット18が署名されかつ場合により符号化されたメッセージをコンピュータシステム70へ送信する前に、送信経路および受信側コンピュータシステムの要件に従って適切に符号化されてもよい。
コンピュータシステム70は、署名されかつ場合により符号化されたメッセージを受信し、署名付きメッセージに基づいてユーザを認証する。
【0079】
図2は、本発明の一実施形態による、署名されるべきメッセージ30の構造を示す。
メッセージ30は、好ましくは、例えばASCIIである1つ以上の文字エンコーディングに属する32文字を、1文字につき1バイトで含んでもよい。
メッセージ30は、例えば、互いに隣接して配置されかつ場合により分離子によって互いから分離される1つ以上の属性から生成される。
このメッセージ例30は、以下の6つの属性から成る。
【0080】
第1の属性32は、メッセージ30のプロトコルバージョンを表し、よって、受信側コンピュータシステム70は、メッセージ30の構造を他のプロトコルバージョンのメッセージ30から区別することができる。
プロトコルバージョン32は、例えば3バイトで符号化されることが可能である。
【0081】
第2の属性34は、メッセージの生成における、トークン内に停電が起こってタイムスタンプを生成するためのトークン内のリアルタイムクロックが停止している、または開始値にリセットされているといったような問題のあるインスタンスをシグナリングするフラグを表す。
フラグ34は、例えば1バイトで符号化されてもよい。
【0082】
第3の属性36は、トークンをユーザに割り当てることができるように、トークン10の識別特徴を表す。
トークン10の識別特徴36は、例えば6バイトで符号化されることが可能である。
【0083】
第4の属性38は、例えばトークンを会社の部門毎にグループ化するための、または複数のトークンを一人のユーザに関連づけるためのユーザ定義のプレフィクスを表す。
ユーザ定義のプレフィクス38は、例えば4バイトで符号化されてもよい。
【0084】
第5の属性40は、符号化された第1のカウンタ値を表す。
符号化された第1のカウンタ値40は、計数ユニット12により生成されるカウンタ値20、22に対応するか、生成されるカウンタ値20、22に基づいて計算される。
符号化された第1のカウンタ値40は、例えば4バイトで符号化される数値としてのカウンタ値20であってもよい。
【0085】
第6の属性42は、符号化された第2のカウンタ値を表す。
符号化された第2のカウンタ値42は、計数ユニット12により生成されるカウンタ値20、22に対応するか、生成されるカウンタ値20、22に基づいて計算される。
符号化された第2のカウンタ値42は、タイムスタンプ22であってもよく、例えば5バイトで符号化されてもよい。
【0086】
また、メッセージ30は、6つの属性のうちの1つ以上に基づいて、例えば6つの属性のうちの1つ以上を任意の順序で並置することにより生成されることもある。
【0087】
ある好適な実施形態では、メッセージ30内に、文字列のASCII表現「bitagent*」(括弧なし)等の署名されるべきメッセージの最小長さを保証するためのさらなるコンポーネントが包含され、前記属性は、先に生成されたメッセージ30の隣接する任意の2文字の間に挿入される。
これで、生成されたメッセージ30に署名することができる。
挿入される追加のコンポーネントは、署名が生成された後にメッセージから再び除去することができ、よって、これらは、署名を生成しかつこれを後に検証するためにのみメッセージに含まれ、メッセージの送信中には含まれない。
【0088】
図3は、コンピュータシステム70に対してユーザを認証するための方法50を示す。これらの方法ステップは、トークン10において実行される。
【0089】
第1の方法ステップ52において、トークン10内に実装される計数ユニット12は、少なくとも1つのカウンタ値20、22を生成する。
生成されるカウンタ値20、22は、少なくとも1つのカウンタ値20、22が、先に生成された1つのカウンタ値20、22に対して新たなカウンタ値20、22が生成される度に、生成される後続のカウンタ値として識別され得ることを特徴とする。
これに関して、生成されるカウンタ値20、22の少なくとも一部分は、厳密な単調数列を形成する。
【0090】
第2の方法ステップ54では、メッセージ30が、生成される少なくとも1つのカウンタ値20、22の関数として生成される。
この目的に沿って、少なくとも1つのカウンタ値20、22は、関連する符号化されたカウンタ値40、42に変換されることが可能である。
メッセージ30には、より多くの属性および固定コンポーネントが追加されてもよい。
【0091】
第3の方法ステップ56では、生成されたメッセージ30が、トークン10に割り当てられるユーザの秘密鍵24を用いて署名される。
秘密鍵24は、トークン10内に記憶されてもよい。
署名付きメッセージは、メッセージを受信するコンピュータシステム70および選択される送信経路に依存して符号化されてもよい。
【0092】
第4の方法ステップ58では、署名されかつ場合により符号化されたメッセージが、ユーザの認証のためにコンピュータシステム70へ送られる。
【0093】
図4は、コンピュータシステム70に対してユーザを認証するための方法60を示す。
【0094】
第1の方法ステップ62において、コンピュータシステム70は、ユーザのトークン10から、署名されかつ場合により符号化されたメッセージを受信する。
【0095】
第2の方法ステップ64において、コンピュータシステム70は、署名付きメッセージをどのユーザに割り当てることができるかを決定する。
この目的に沿って、適切な識別特徴36が検証される。
識別特徴36は、好ましくは、受信されるメッセージにおける1つの属性として符号化される。
識別特徴36は、他の入力チャネルを介して、例えばキーボードを介する手動データ入力によって、またはユーザの選択によっても提供されることが可能である。
ユーザは、マッピングテーブルを用いることによって識別特徴36から導出されてもよい。
【0096】
第3の方法ステップ66において、コンピュータシステム70は、識別された識別特徴36に関連づけられるユーザの公開鍵26を決定する。
受信されたメッセージがユーザに関連づけられる秘密鍵24を用いて署名されると、コンピュータシステム70は、決定された公開鍵26を用いて、受信されたメッセージの信憑性を検証することができる。
【0097】
認証プロセスを、傍受された署名付きメッセージの繰り返されるインポートから保護するために、第4の方法ステップ68において、メッセージに含まれる少なくとも1つのカウンタ値20、22の厳密な単調さが検証される。
この目的に沿って、受信されたメッセージに含まれる少なくとも1つのカウンタ値20、22がメッセージから抽出され、かつユーザの先の認証プロセス60の個々に割り当てられた先のカウンタ値20、22と比較される。この場合、新しく受信される1つ以上のカウンタ値は、各々、先行する認証プロセス60と比較した後続の値として識別されなければならない。
例示的な実施形態によっては、受信されるカウンタ値のうちの1つ以上が直後で続くこと、または、新しく受信される個々のカウンタ値と先に受信された関連のカウンタ値との距離が限界値を下回ることが検証される。
代替的または追加的に、メッセージの有効期間も、例えばメッセージに含まれるタイムスタンプ22に基づいて検証されることが可能である。
【0098】
トークンは、電子デバイスを表すハードウェアトークンとして設計されることが可能である。
図5は、本発明によるトークンがハードウェアトークン10Aとして統合されるモバイルデバイス80Aを示す。
モバイルデバイス80Aは、トークンの機能のために特に設計され、かつコンピュータシステムと通信するためのインタフェースを装備してもよい。
また、モバイルデバイスは、場合により第2のデバイスまたはそれ以上のデバイスへのインタフェースを有するモバイルコンピュータ、例えばタブレットコンピュータ、ネットブック、ノートブックまたはスマートフォンであってもよい。
ハードウェアトークン10Aの定義は、それがトークンの機能を実現するための命令が実行されるプロセッサを含むことを排除するものではなく、その限りにおいて、ハードウェアトークンの機能は、ソフトウェアによっても実行される。
ハードウェアトークンとしての分類にとって決定的なことは、ソフトウェアがハードウェアトークンの閉システム内で実行されるという事実にある。
【0099】
また、トークンは、電子デバイスのプロセッサ上で実行されるためのソフトウェアトークンとしても実装されることがある。
図6は、本発明によるトークンがソフトウェアトークン10Bとして統合されるモバイルデバイス80Bを示す。
ソフトウェアトークン10Bは、モバイルデバイス80Bのアプリケーションプログラム(「App」)として、ミドルウェア内に、またはオペレーティングシステム内に統合されてもよい。
ソフトウェアトークンは、モバイルデバイス80Bの少なくとも1つのプロセッサ82上で実行される命令を含む。
【0100】
ソフトウェアトークン10Bを、ハードウェアトークン10Aのソフトウェアに対して描写すると、これは、トークンソフトウェアを実行するためのリソースをモバイルデバイス80Bの残りのアプリケーションおよびサービスと共有するが、ハードウェアトークン10Aのソフトウェアは、専ら、モバイルデバイス80Aの残りのリソースから分離されているハードウェアトークン10Aのリソース上で実行される。
【0101】
ちなみに、本発明は、例示的な実施形態において言及している、ハードウェアまたはソフトウェアトークンの実現に必要とされる全てのコンポーネントを含む。
これまでの例示的な実施形態において述べたトークンの個々のコンポーネント間のタスク分配は、一例として理解されるべきである。
トークンのコンポーネント間には、本発明の記載された特徴を同等の形で実現する、考え得る他の区分もある。
【0102】
実施形態に関するこれまでの説明に含まれる詳細は、本発明の範囲を限定するものとして解釈されるべきではなく、どちらかと言えば、その実施形態のうちの幾つかを例証するものである。
多くの変形が可能であって、それらは、当業者に直ちに明らかである。
具体的には、これは、本明細書に開示している個々の実施形態の特徴の組合せを含む変形例に関する。
したがって、本発明の範囲は、例示された実施形態ではなく、添付の特許請求の範囲およびその法的な等価物によって決定されるべきである。
図1
図2
図3
図4
図5
図6