(57)【要約】  本発明は、コンピュータシステム（７０）に対してユーザを認証するための方法（５０）であって、トークン（１０）内で実行される以下のステップ、すなわち、トークン（１０）内に実装される計数ユニット（１２）を利用することにより、カウンタ値（２０、２２）を生成するステップ（５２）であって、生成されるカウンタ値（２０、２２）の少なくとも一部分は、厳密な単調数列を形成するステップ（５２）と、生成されたカウンタ値（２０、２２）に依存してメッセージ（３０）を生成するステップ（５４）と、生成されたメッセージ（３０）に、ユーザの秘密鍵（２４）を利用することにより署名するステップ（５６）であって、秘密鍵（２４）は、トークン（１０）に記憶され、かつ秘密鍵（２４）またはそのコピーは、コンピュータシステム（７０）へ提供されないステップ（５６）と、署名付きメッセージをコンピュータシステム（７０）へ送信するステップ（５８）を含む方法（５０）に関する。本発明は更に、コンピュータシステム（７０）に対してユーザを認証するためのトークン（１０）、およびユーザを認証するためにコンピュータシステム（７０）上で実行される方法（６０）に関する。本発明によるトークン(１０Ａ, １０Ｂ)はモバイルデバイス（８０Ａ, ８０Ｂ）内のハードウェアあるいはソフトウェア内に実装される。本発明は更に、プロセッサ（７２、８２）上で実行されると本発明の方法のステップを実装する命令を含む、コンピュータ・プログラム・プロダクトに関する。【選択図】  図１
2019527518.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステム（７０）に対してユーザを認証するための方法（５０）であって、前記方法は、トークン（１０）内で実行される以下のステップ、すなわち、
前記トークン（１０）内に実装される計数ユニット（１２）を利用することにより、カウンタ値（２０、２２）を生成するステップ（５２）であって、生成されるカウンタ値（２０、２２）の少なくとも一部分は、厳密な単調数列を形成するステップ（５２）と、
生成された前記カウンタ値（２０、２２）に依存してメッセージ（３０）を生成するステップ（５４）と、
生成された前記メッセージ（３０）に、前記ユーザの秘密鍵（２４）を利用することにより署名するステップ（５６）であって、前記秘密鍵（２４）は、前記トークン（１０）に記憶され、かつ前記秘密鍵（２４）またはそのコピーは、前記コンピュータシステム（７０）へ提供されないステップ（５６）と、
前記署名付きメッセージを前記コンピュータシステム（７０）へ送信するステップ（５８）と、を含む、
方法（５０）。
【請求項２】
前記トークン（１０）は、前記コンピュータシステム（７０）へ入力デバイス（ヒューマン・インタフェース・デバイス）としてログオンするように適合化され、
前記署名付きメッセージを送信するステップ（５８）は、前記署名付きメッセージを入力データ、特にキーボード入力データとして符号化しかつ送信することを含む、
請求項１に記載の方法（５０）。
【請求項３】
前記メッセージ（３０）は、さらに、前記トークン（１０）の識別特徴（３６）に依存して生成される、
請求項１または２に記載の方法（５０）。
【請求項４】
前記計数ユニット（１２）は、クロックを含み、かつ前記カウンタ値（２０、２２）は、タイムスタンプ（２２）を含む、
請求項１〜３のいずれか一項に記載の方法（５０）。
【請求項５】
前記署名付きメッセージを送信する前記ステップ（５８）は、ユニバーサル・シリアル・バス（ＵＳＢ）、ブルートゥースまたは近距離無線通信（ＮＦＣ）を介する、
請求項１〜４のいずれか一項に記載の方法（５０）。
【請求項６】
コンピュータシステム（７０）に対してユーザを認証するためのトークン（１０）であって、
カウンタ値（２０、２２）を生成する（５２）ための計数ユニット（１２）であって、生成されるカウンタ値（２０、２２）の少なくとも一部分は、厳密な単調数列を形成する計数ユニット（１２）と、
前記ユーザに関連づけられる秘密鍵（２４）を記憶するためのメモリ（１４）と、
生成される前記カウンタ値（２０、２２）に依存してメッセージ（３０）を生成し（５４）、かつ生成された前記メッセージ（３０）に前記秘密鍵（２４）を利用して署名する（５６）ための処理ユニット（１６）と、
前記署名付きメッセージを前記コンピュータシステム（７０）に送信するための送信ユニット（１８）とを含み、
前記トークン（１０）は、請求項１〜５のいずれか一項に記載の前記方法（５０）を実行するように適合化される、
トークン（１０）。
【請求項７】
前記トークン（１０）は、認証プロセス（５０）を開始するための第１の制御エレメントを含む、
請求項６に記載のトークン（１０）。
【請求項８】
前記メモリ（１４）は、前記秘密鍵（２４）に関連づけられる公開鍵（２６）を含む、
請求項６または請求項７に記載のトークン（１０）。
【請求項９】
前記トークン（１０）は、前記コンピュータシステム（７０）への公開鍵（２６）の送信を開始するための第２の制御エレメントを含む、
請求項８に記載のトークン（１０）。
【請求項１０】
ユーザを認証するための方法（６０）であって、前記方法は、コンピュータシステム（７０）内で実行される以下のステップ、すなわち、
請求項６〜９のいずれか一項に記載のトークン（１０）から署名付きメッセージを受信するステップ（６２）であって、前記署名付きメッセージは、前記トークン（１０）のカウンタ値（２０、２２）に依存するステップ（６２）と、
識別特徴（３６）によって前記ユーザを前記署名付きメッセージに割り当てるステップ（６４）と、
前記ユーザの公開鍵（２６）を利用することにより、前記署名付きメッセージの前記署名を検証するステップ（６６）と、
前記メッセージ（３０）から抽出される前記カウンタ値（２０、２２）を、前記ユーザの先行する認証プロセス（６０）の前記カウンタ値（２０、２２）と比較するステップ（６８）とを含み、
前記ユーザの連続する認証プロセスのカウンタ値（２０、２２）の少なくとも一部分は、厳密な単調数列を形成する、
方法（６０）。
【請求項１１】
ハードウェア実装トークン（１０Ａ）を含むモバイルデバイス（８０Ａ）であって、前記ハードウェア実装トークン（１０Ａ）は、請求項６〜９のいずれか一項に記載のトークン（１０）を含む、
モバイルデバイス（８０Ａ）。
【請求項１２】
ソフトウェア実装トークン（１０Ｂ）を含むモバイルデバイス（８０Ｂ）であって、前記ソフトウェア実装トークン（１０Ｂ）は、前記モバイルデバイス（８０Ｂ）のプロセッサ（８２）上で実行されると請求項１〜５のいずれか一項に記載の方法（５０）のステップを実装する命令を含む、
モバイルデバイス（８０Ｂ）。
【請求項１３】
プロセッサ（７２、８２）上で実行されると請求項１〜５または１０のいずれか一項に記載の方法（５０、６０）のステップを実装する命令を含む、
コンピュータ・プログラム・プロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピュータシステムを安全にする分野に関し、より具体的には、コンピュータシステムに対してユーザを認証することに関する。
【背景技術】
【０００２】
ユーザがコンピュータシステム上でアプリケーションおよびデータにアクセスすることを認証するためには、ユーザの識別を検証する必要がある。  
アプリケーションおよびデータへのアクセスは、主張された識別が首尾良く検証されて初めて認められることになる。
【０００３】
ユーザの申し立てによる識別を検証する一般的な方法は、静的パスワードの照会である。  
この手順には、ユーザが、エラーが発生しやすくかつユーザにとって煩わしいパスワード入力を行わなければならないという欠点がある。  
また、静的パスワードの照会には、通常、安全なパスワードを打ち込む必要があり、よって、そのパスワードを非認可者によって記録される可能性があるという欠点もある。  
一方で、単純なパスワードが選択されていれば、これは、容易に推測される可能性があり、よって、例えばプロービング（「ブルート・フォース・アタック」）により、かなり短時間で決定され得る。
【０００４】
米国特許出願公開第２０１０／００４９９８４（Ａ１）号明細書は、サーバに対して携帯電話のユーザを認証する方法を開示している。  
携帯電話は、ユーザ識別を保存する集積回路を含んでいる。  
ユーザ識別および現在時刻は、署名鍵で署名されてサーバへ送信される。  
サーバは、同じ署名鍵、よってユーザとサーバとの共通鍵として機能する署名鍵、を用いて署名の有効性を検証する。
【０００５】
特開２０１２−１３８６５０（Ａ）号公報からは、データストリームの時間ベース認証方法が知られている。  
データストリームから、電子署名により生成されるハッシュデータが生成される。
【０００６】
米国登録特許第８，３７０，９５２（Ｂ１）号明細書からは、トークンのオーナーシップを識別プロバイダにより実行される秘密鍵を用いる暗号化によって匿名にするトークンが知られている。  
対応する公開鍵を持つサービスプロバイダは、これを復号化できなくても有効な識別を結論づけることができる。
【０００７】
国際公開第２００７／１２２２２４（Ａ１）号パンフレットは、コンピュータシステムに入力デバイス（ヒューマン・インタフェース・デバイス、ＨＩＤ）としてログオンし、ボタンを押せばキーストロークを発行することができる、ＵＳＢ（ユニバーサル・シリアル・バス）トークンを開示している。  
これにより、入力デバイスは、プレーンテキストまたは暗号化されたパスワード等の事前に規定されたキーストロークを対称法によってコンピュータシステムに送信することができる。
【０００８】
このＵＳＢトークンには、複数のアプリケーションを統合する度に同じパスワードの使用またはユーザが作成する特定のセレクションの使用のいずれかを必要とし、そのＵＳＢトークンが複数のパスワードを保存できる場合には、ＵＳＢトークンに保存されているパスワードが個々のアプリケーションへ送信される、という欠点がある。
【０００９】
さらに、パスワード等の秘密の送信は、概して、セキュリティが危うくされる。  
チャレンジレスポンス方式は、認証のための秘密（共有秘密鍵）を送信することではなく、認証機関に対してチャレンジを設定することにより、付随する危険を減らす。  
認証されるべきユーザのレスポンスに基づいて、認証機関は、ユーザがその秘密を知っていると認識することができる。
【００１０】
適宜送信されるメッセージを保護するためには、公開鍵基盤（ＰＫＩ）を用いることができる。  
公開鍵基盤の各ユーザには、公開鍵および秘密鍵の両方が割り当てられる。  
この鍵ペアは、各々の公開鍵および秘密鍵を関連ユーザにバインドする信用のある認証局により発行される証明書に関連づけられることが可能である。
【００１１】
セキュリティを保証するためには、ユーザの秘密鍵は、秘密のままであって、この鍵が割り当てられる認証されたユーザだけが署名を生成する、またはメッセージを復号するために利用できることが保証されなければならない。  
多くの場合、秘密鍵と公開鍵、および証明書を保存し、かつ秘密鍵に関連づけられる暗号計算を実行するためには、スマートカードまたはＵＳＢトークンが使用される。
【００１２】
このようなスマートカードおよびＵＳＢトークンの使用には、従来の入力デバイスによる通信ではなくスマートカードにメッセージを送信しなければならないことから、アプリケーションの認証ルーチンに特定の適合化が必要とされるという欠点がある。  
スマートカードは、受信されるメッセージに署名して、署名付きのメッセージを確認のためにアプリケーションへ送信する。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】米国特許出願公開第２０１０／００４９９８４（Ａ１）号明細書
【特許文献２】特開２０１２−１３８６５０（Ａ）号公報
【特許文献３】米国登録特許第８，３７０，９５２（Ｂ１）号明細書
【特許文献４】国際公開第２００７／１２２２２４（Ａ１）号パンフレット
【発明の概要】
【００１４】
本発明の目的は、ユーザの認証を、一方で高レベルのセキュリティを提供し、かつ一方で既存のアプリケーションが関与する適合化努力を可能な限り少なくする形で可能にすることにある。
【００１５】
本発明は、ユーザの安全な認証のために、ユーザとオーセンティケータとの間で共有される、秘密に保たれなければならない情報は不要である、という概念を基礎とする。  
本発明の場合、（ｉ）メッセージに特定の設定で署名し、（ｉｉ）署名の有効性を非対称暗号化方式で検証し、かつ（ｉｉｉ）メッセージの特定の構造に基づいて、妥当な時間間隔内で既に受信されているメッセージの繰り返された検証を認識することが不可欠である。
【００１６】
本発明の利点は、認証側の秘密鍵が不要であることにある。  
認証に必要なデータは、全て、公知であってもよい。
【００１７】
本発明の第１の態様によれば、コンピュータシステムに対してユーザを認証するための方法が提供され、本方法は、トークン内で実行される以下のステップ、すなわち、
トークン内に実装される計数ユニットを利用することにより、カウンタ値を生成するステップであって、生成されるカウンタ値の少なくとも一部分は、厳密な単調数列を形成するステップと、
生成されたカウンタ値に依存してメッセージを生成するステップと、
生成されたメッセージに、ユーザの秘密鍵を利用することにより署名するステップであって、秘密鍵は、トークンに記憶され、かつ秘密鍵またはそのコピーは、コンピュータシステム（７０）へ提供されないステップと、
署名付きメッセージをコンピュータシステムへ送信するステップと、を含む。
【００１８】
好ましくは、トークンは、トークンに保存される秘密鍵をトークン外部のリソースから読み取れないように配置される。
【００１９】
本発明の好ましい一実施形態において、トークンは、コンピュータシステムへ入力デバイス（ヒューマン・インタフェース・デバイス）としてログオンするように設定される。  
署名付きメッセージの送信は、署名付きメッセージを入力データとして、具体的には（例えば、キーボード・スキャン・コードによる）キーボード入力データとして、符号化しかつ送信することを含んでもよい。
【００２０】
メッセージは、１つ以上の追加的なカウンタ値に依存して生成されることが可能である。  
カウンタ値は、計数ユニットが再びポーリングされると増分されるカウンタ数値、例えば整数、であってもよい。  
しかしながら、他のタイプのカウンタ値も企図される。  
したがって、例えば、タイムスタンプとしての日付を含む時間表示が提供されてもよい。  
時間表示に含まれる日付は、例えばグレゴリオ暦である従来のカレンダに従ってコード化されてもよい。  
また、日付は、例えば、最初の日付以降の秒単位で数値表現されてもよい。
【００２１】
本発明の好適な一実施形態において、計数ユニットは、クロックを備える。  
カウンタ値は、タイムスタンプを含んでもよい。  
この場合、メッセージにおいてコード化されるカウンタ値は、例えば、タイムスタンプに基づくものであっても、カウンタ数値に加えて存在するものであってもよい。
【００２２】
基本的に、カウンタ値は、計数ユニットの新しくされたクエリにより、先に生成されたカウンタ値に対する後に生成されたカウンタ値として識別され得る任意のコンテンツによって表わされてもよい。  
この規則は、少なくとも、連続して生成されるカウンタ値の大部分に適用されなければならない。  
これに関しては、生成される同じタイプのカウンタ値の一部分の厳密な単調さが当てはまる。  
「部分」という用語は、共にカウンタ値の一部分を形成する、互いの直後に生成される所定数のカウンタ値を含む。  
カウンタ値の少なくとも一部分に適用されるべき厳密な単調さの境界条件は、記憶および処理の間のカウンタ値の限度から生じる。  
所定数のカウンタ値が生成されると、カウンタ値は上限値に達するが、これは、カウンタがオーバーフローする前に発生する。  
この場合、遅くとも、カウンタは、次の計数の継続を、下限に対応するカウンタ値を用いて行わなければならない。  
安全上の理由から、カウンタの幅は相応に大きいものとなる。  
ある好適な実施形態では、カウンタは、３２ビットを含み、よって約４０億のカウンタ値を区別することができる。
【００２３】
潜在的攻撃者が特定のカウンタ値を有する傍受したメッセージを再利用できるためには多くの時間を費やさなければならないと思われる場合、その間にも、この傍受したメッセージが後続のものと見なされなければならないクエリは多く発生していることから、カウンタの幅は、十分に大きいものであるように選択される。
【００２４】
本発明の好適な一実施形態では、メッセージは、さらに、トークンの識別特徴に依存して生成される。  
識別特徴は、受信側のコンピュータシステムがトークンに関連づけられるユーザを識別できるようにする。  
この情報は、受信されるメッセージの署名を検証するために必要な関連の公開鍵を識別するために要求される。  
関連の公開鍵を別の方法でも決定できる限り、署名付きメッセージにおける識別特徴の送信は、必須ではない。  
ユーザは、コンピュータシステムにおける認証プロセスの一部としてのユーザ選択を、例えばキーボードを介して自分のユーザ名を手動入力（ログイン）することにより行ってもよい。
【００２５】
また、メッセージは、プロトコルバージョンに依存して生成されることも可能である。  
受信側コンピュータシステムは、コード化されたプロトコルバージョンに依存してメッセージを様々に処理できることから、受信されるメッセージからプロトコルバージョンを抽出することは、生成されるメッセージ用に異なるフォーマットを用いることを可能にする。
【００２６】
また、メッセージは、フラグに依存して生成されることも可能である。  
フラグは、署名付きメッセージの作成における問題点を示すために使用可能である。  
好ましくは、フラグは、トークンにおける電源故障を示す。  
したがって、フラグは、場合により存在するトークン内のリアルタイムクロックが、このリアルタイムクロックが電源故障の間に開始値にリセットされたか、停止されたために、正確なタイムスタンプを生成できていない状態を示す。  
代替的または追加的に、フラグは、受信側コンピュータシステムが続いて、上限ではなく下限に対応するカウンタ値を解釈し得るように、目下のカウンタオーバーランをシグナリングしてもよい。
【００２７】
また、メッセージは、ユーザ定義のプレフィクスに依存して生成されることも可能である。  
ユーザ定義のプレフィクスは、好ましくは、トークンをグループ化するために、例えば会社の部門を識別するために使用される。  
また、ユーザ定義のプレフィクスは、ユーザの様々なトークンを区別するため、例えば、ユーザの役割（プライベートトークン、ビジネストークン）を区別するために使用されることも可能である。
【００２８】
サポートされるメッセージの最大長さに依存して、メッセージには、コンピュータシステム上でさらなる処理のために利用可能な追加のコンテンツが組み込まれてもよい。
【００２９】
好ましくは、署名されるべきメッセージは、例えばＡＳＣＩＩ文字としてコード化される３２バイトの最小長さを含む。  
署名されるべきメッセージが最小長さより短い場合、これは、定義されたパディング規則に従ってパディングバイトでパディングされることが可能である。  
パディングバイトは、署名が生成された後に、再び取り除くことができる。
【００３０】
好ましくは、パディングバイトのない署名されるべきメッセージは、２３バイトの長さを有するが、パディングバイトによって３２バイトにまで増加される。  
パディングバイトがメッセージの送信前に署名付きメッセージから除去される場合、パディング規則は、未送信のパディングバイトが検証されるべき署名付きメッセージへ追加し戻されて署名が正しく検証されるように、認証側コンピュータシステムに知らされなければならない。  
パディングバイトは、署名されるべきメッセージにおける定義されたロケーションに位置決めされる単一のＡＳＣＩＩ文字であってもよい。  
署名は、好ましくは、各々１バイトである６４文字を含み、メッセージに添付される。  
従って、署名付きメッセージは、８７バイトを含み、そのうちの２３バイトがパディングバイト除去後のメッセージ用であり、６４バイトが、３２バイトまで拡張されるメッセージの署名用である。
【００３１】
ある好適な実施形態では、署名付きメッセージは、メッセージの長さが４／３の割合で、例えば８７バイトから１１６バイトに増加するように、Ｂａｓｅ６４または同等のフォーマットに従って符号化される。  
Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓシリーズのオペレーティングシステムの場合、パスワードの入力限度は、１２７バイトである。  
これに関しては、受信されるメッセージを、パスワード入力フィールドに読み込むことが可能である。
【００３２】
ある実施形態において、トークンは、パスワード照会用キーボード等の、セキュリティ機能を検索するための手段を含む。  
この実施形態では、メッセージは、要求されるパスワードにも依存して生成される。  
あるいは、署名付きメッセージと共に、パスワードが送信される。  
ある好適な実施形態では、署名付きメッセージと共に、または署名付きメッセージ内でパスワードを送信するために８バイトが留保される。
【００３３】
Ｂａｓｅ６４エンコーディングには、符号化されかつ署名されたＢａｓｅ６４メッセージを送信する際のメッセージ内に特殊文字が存在しないという利点がある。  
Ｂａｓｅ６４エンコーディングは、アルファベット２６文字の小文字および大文字（ａ〜ｚ、Ａ〜Ｚ）、数字０〜９およびＡＳＣＩＩ文字であるプラス（「＋」）およびスラッシュ（「／」）を含む６４個のＡＳＣＩＩ文字の使用を基礎とする。  
ある好適な実施形態では、プラス（「＋」）およびスラッシュ（「／」）の代わりに、ＡＳＣＩＩ文字であるカンマ（「，」）およびセミコロン（「；」）を有するＢａｓｅ６４派生語が使用される。
【００３４】
本発明の好適な一実施形態では、送信されかつ場合により符号化されたメッセージは、ユニバーサル・シリアル・バス（ＵＳＢ）、ブルートゥース、または近距離無線通信（ＮＦＣ）を介して送信される。  
好ましくは、署名されかつ場合により符号化されたメッセージは、コンピュータシステム上にヒューマン・インタフェース・デバイスとして登録されかつ例えばＵＳＢまたはブルートゥースキーボードとして認識されるトークンにより、コンピュータシステムへ擬似キーボード入力として送信される。署名されかつ場合により符号化されたメッセージの送信は、キーボード・スキャン・コードを介して行われることが可能である。  
キーボード・スキャン・コードは、コンピュータシステムにおけるＡＳＣＩＩコードが割り当てられているキーボード上のキーストロークの符号化を表す。
【００３５】
符号化されたＢａｓｅ６４メッセージのＡＳＣＩＩ文字は、好ましくは、個々の関連するキーボード・スキャン・コードの符号化において送信される。  
ＡＳＣＩＩ文字とキーボード・スキャン・コードとの間の割当てが、コンピュータシステムの言語設定に依存することは留意されるべきである。  
多くのキーボード・スキャン・コードは、設定言語とは無関係であるが、現行キーボードの所与の言語に依存して、個々のＡＳＣＩＩ文字が異なるキーボード・スキャン・コードによって表されることはある。
【００３６】
この挙動の第１の例は、英語キーボード上の「ｚ」キーのキーボード・スキャン・コードであって、ドイツ語キーボード上ではこれが「ｙ」として解釈される。  
第２の例は、英語キーボード上の「ｚ」キーのキーボード・スキャン・コードであって、フランス語キーボード上ではこれが「ｗ」として解釈される。  
さらに、フランス語キーボード上のキー「；」は、ドイツ語キーボード上ではキー「，」に換えられる。  
キリル文字のキーボードでは、ほとんどすべての英語キーボード・スキャン・コードが、異なるＡＳＣＩＩコードを有する特殊キリル文字に対応する。  
これに関しては、言語の違いを含む以前に合意された２つの異なるＡＳＣＩＩ文字のキーボード・スキャン・コードを生成し、かつコンピュータシステムにより生成されるＡＳＣＩＩコードを検索することによって、設定された言語構成を推測することが可能である。
【００３７】
ある好適な実施形態では、署名されかつ場合により符号化されたメッセージに検証コードが提供される。  
検証コードは、異なる言語設定を区別することに適する、先に合意された少なくとも２つのＡＳＣＩＩ文字のキーボード・スキャン・コードを含む。  
好ましくは、メッセージの検証コードは、接頭辞として付けられる。  
検証コードとしては、例えば、既定言語から選択される次のような文字ペア、すなわちドイツ語キーボード上の「ｙ」および「，」、これに対応する英語キーボード上のキー「ｚ」および「；」のうちの一方が区別のために使用され得る。  
実施形態によっては、検証コードは、署名されるべきメッセージ内に１つの属性として包含される。
【００３８】
Ｂａｓｅ６４エンコーディングの場合、メッセージの利用可能な「アルファベット」は、６４文字から成り、これらは、好ましくは、キーボード・スキャン・コードによって表現される。  
実施形態によっては、Ｂａｓｅ６４エンコーディングの６４文字は、アルファベット２６文字（ａ〜ｚ）のキーボード・スキャン・コード、数字０〜９、シフトキー、およびカンマ（「，」）のキーボード・スキャン・コードによって表現される。  
シフトキーは、アルファベットおよびカンマ記号に作用することから、文字Ａ〜Ｚおよびセミコロン（＝ドイツ語キーボードではシフトキーとカンマ）または「小なり」記号（＝英語キーボードではシフトキーとカンマ）は、合計６４文字を表示できるようにシフトキーと組み合わせて表示されることが可能である。  
トークンおよびコンピュータシステムが同じ言語設定を使用すれば、コンピュータシステムは、キーボード・スキャン・コードから、識別される言語設定により生じるＡＳＣＩＩ文字へのマッピングを適用することによって、受信されるメッセージのキーボード・スキャン・コードを、ＡＳＣＩＩ文字として符号化された署名付きメッセージに変換することができる。
【００３９】
本発明の第２の態様によれば、コンピュータシステムに対してユーザを認証するためのトークンが提供され、本トークンは、カウンタ値を生成するための計数ユニットであって、生成されるカウンタ値の少なくとも一部分は、厳密な単調数列を形成する計数ユニットと、ユーザに関連づけられる秘密鍵を記憶するためのメモリと、生成されるカウンタ値に依存してメッセージを生成し、かつ生成されたメッセージに前記秘密鍵を利用して署名するための処理ユニットと、署名付きメッセージをコンピュータシステムに送信するための送信ユニットとを含み、本トークンは、本発明の第１の態様による方法を実行するように適合化される。  
秘密鍵は、ユーザを認証すべくコンピュータシステムにアクセス可能にされる必要はない。
【００４０】
トークンは、専用ハードウェアに、スタンドアロン電子デバイス、またはより包括的な電子デバイスの一部、の双方として統合されてもよい（「ハードウェアトークン」）。
【００４１】
ハードウェアに実装されるトークンのコンポーネントは、バスシステムを介して、例えばＩ２Ｃバスを介して、互いに通信してもよい。
【００４２】
メモリは、ユーザの秘密鍵を記憶するセキュリティチップを含んでもよい。  
好ましくは、秘密鍵は、セキュリティチップへメッセージに署名するための機能を提供することに留まらない。  
セキュリティチップは、秘密鍵を読み取って記憶するためのインタフェースを含んでもよい。  
好ましくは、セキュリティチップは、秘密鍵および関連する公開鍵を生成するための機能と、公開鍵を読み取るための機能とを有する。
【００４３】
計数ユニットは、計数するための１つ以上のコンポーネントを含んでもよく、個々のコンポーネントは、例えば、ハードウェアカウンタまたはリアルタイムクロック（ＲＴＣ）であってもよい。
【００４４】
ある好適な実施形態では、ハードウェアカウンタは、要求に応じて、先行の要求から増分されている整数を提供する。  
ハードウェアカウンタは、上限に達すると、例えば、カウンタオーバーフローの直前に、下限から再開することができる。  
上限への到達または下限からの継続は、コンピュータシステムへメッセージで伝達されてもよい。  
コンピュータシステムには、カウンタ値の構造が通知されてもよく、よって、上限に達すると下限から継続されることが分かり得る。
【００４５】
好ましくは、リアルタイムクロックは、外的な時間信号とは無関係にトークン内で動作するクロックである。  
リアルタイムクロックは、精度を高めるための温度補償を有することが可能である。  
リアルタイムクロックは、ＧＰＳ信号から時間を抽出することができるＧＰＳ受信機であってもよい。  
リアルタイムクロックは、ＤＣＦ７７等の電波時計受信機であってもよい。  
また、リアルタイムクロックは、認証プロセスにおいてトークンが関連づけられるコンピュータシステムの時刻を受信するためのユニットであってもよい。  
リアルタイムクロックは、さらに、インターネット上で通信するためのユニットであってもよく、時間は、１つ以上のタイムサーバから取得される。
【００４６】
処理ユニットは、計算のための１つ以上のコンポーネントを含んでもよく、個々のコンポーネントは、中央処理装置（ＣＰＵ）、マイクロコントローラ（ＭＣＵ）、算術論理演算装置（ＡＬＵ）または並列論理装置（ＰＬＵ）である。  
したがって、処理ユニットの別々のコンポーネントがメッセージへの署名を担当してもよく、かつ１つ以上の異なるコンポーネントが１つ以上のカウンタ値の生成を担当してもよい。
【００４７】
送信ユニットは、メッセージをコンピュータシステムに送信するための１つ以上のコンポーネントを含み、個々のコンポーネントは、ユニバーサル・シリアル・バス（ＵＳＢ）、ブルートゥースまたは近距離無線通信（ＮＦＣ）のインタフェースとして実装されてもよい。  
好ましくは、トークンは、トークンが送信ユニットを介してコンピュータシステムに接続されると認証されるべき、コンピュータシステムに対するキーボードとしての機能を表す。  
「キーボード」という動作モードに加えて、送信ユニットは、例えばトークンに記憶されているキーを送信するための他の動作モードも有することが可能である。  
トークンが、別個のセキュリティ機能を２ファクタ認証の一部として送信する場合、このセキュリティ機能は、送信ユニットの別個の動作モードで送信されることが可能である。
【００４８】
送信ユニットという用語は、送信ユニットが、例えば、データが正常に受信されたことをコンピュータシステムに肯定応答するためのデータ、またはトークンを構成するためのデータ、例えば鍵ペアのアップロードまたは鍵ペアを生成する命令の受信といったデータ、の受信もできることを排除するものではない。
【００４９】
ハードウェアに実施されるトークンは、幾つかのコンポーネント内に、トークンのコンポーネント間にインタフェースを有して実装されてもよい。  
トークンは、好ましくは、無線インタフェース、例えばブルートゥースおよび／または近距離無線通信（ＮＦＣ）を含む。  
アドオンモジュールは、例えばユニバーサル・シリアル・バス（ＵＳＢ）によるインタフェースである他のインタフェースを用いてトークンを拡張することができる。
【００５０】
好ましくは、ユニバーサル・シリアル・バス（ＵＳＢ）インタフェースは、トークンがＵＳＢインタフェースを介してコンピュータシステムに接続されるとすぐにトークンをコンピュータシステムにＵＳＢキーボードとしてログオンするマイクロコントローラを有する。
【００５１】
ハードウェアに実装されるトークンは、内部電源を有してもよく、これは、コンピュータシステムと通信するための唯一の、または複数の無線インタフェースを有するトークンにとって特に有利である。  
特にトークンのリアルタイムクロックを供給する必要がある場合、内部電源は、外部電源を許容する有線インタフェースを有するトークンにとっても有利であり得る。  
内部電源は、例えば、アキュムレータ、バッテリまたは太陽電池であってもよい。  
トークンは、外部電源へのインタフェースを有してもよい。
【００５２】
トークンがソフトウェアに実装される場合には、計数ユニット、メモリ、処理ユニットおよび送信ユニットといった前記コンポーネントを、トークンソフトウェアを実装するデバイスの対応するコンポーネントで置き換えることができる。  
送信ユニットは、ユーザをソフトウェアトークンがインストールされるデバイスに対して認証するために、デバイスのオペレーティングシステムまたはアプリケーションプログラムへのソフトウェアインタフェースを含んでもよい。
【００５３】
本発明の好適な一実施形態では、トークンは、認証プロセスを開始するための第１の制御エレメントを含む。  
第１の制御エレメントは、署名付きメッセージの生成および送信を実行するためにユーザにより操作されるボタンであってもよい。  
ヒューマン・インタフェース・デバイスとして登録されるデバイスの場合、コンピュータシステムには、トークンが、第１の制御エレメントを押すと署名付きメッセージを表現する擬似キーストロークを生成するキーボードのように現出する。
【００５４】
本発明の好適な一実施形態では、メモリは、秘密鍵に関連づけられる公開鍵を含む。  
公開鍵は、トークンにおける署名付きメッセージの生成には不要である。  
しかしながら、ユーザを認証するためには、公開鍵は、トークンが添付されるあらゆるコンピュータシステムにアクセス可能でなければならない。  
この点に関しては、公開鍵を要求に応じてコンピュータシステムにインポートできるように、公開鍵をトークンに入れることが効果的である。
【００５５】
本発明の好適な一実施形態では、トークンは、コンピュータシステムへの公開鍵の送信を開始するための第２の制御エレメントを含む。  
第２の制御エレメントは、ボタンであってもよい。  
公開鍵は、キーボード・スキャン・コードを介して送信されることが可能である。  
トークンは、さらに、コンピュータシステムへ転送するために公開鍵を入れておくことができるＵＳＢデータキャリアとして設計されることが可能である。
【００５６】
本発明の第３の態様によれば、ユーザを認証するための方法が提供され、本方法は、コンピュータシステム内で実行される以下のステップ、すなわち、
トークンから署名付きメッセージを受信するステップであって、前記署名付きメッセージは、本発明の第２の態様によるトークンのカウンタ値に依存するステップと、
識別特徴を利用して、ユーザを署名付きメッセージに割り当てるステップと、
ユーザの公開鍵を用いて署名付きメッセージの署名を検証するステップと、
メッセージから抽出されるカウンタ値を、ユーザの先行する認証プロセスのカウンタ値と比較するステップとを含み、ユーザの連続する認証プロセスのカウンタ値の少なくとも一部分は、厳密な単調数列を形成する。
【００５７】
ある好適な実施形態によれば、トークンは、コンピュータシステムにヒューマン・インタフェース・デバイスとして接続される。  
トークンは、署名付きメッセージを、キーボード・スキャン・コードで符号化された擬似キーボード入力として送信してもよい。  
好ましくは、受信されるメッセージに検証コードが先行し、または、検証コードが署名付きメッセージに組み込まれる。  
検証コードは、異なる言語設定を区別することに適する、先に合意された少なくとも２つのＡＳＣＩＩ文字のキーボード・スキャン・コードを含む。  
トークンとコンピュータシステムとの間には、検証コードにおいて提出されるべきＡＳＣＩＩ文字に関する合意があることから、コンピュータシステムは、受信されるキーボード・スキャン・コードにどの言語設定が対応するかを決定して、このキーボード・スキャン・コードを個々の割り当てられたＡＳＣＩＩ文字に割り当てることができる。  
受信されたメッセージは、これで、それがトークンにより符号化されたものであれば、Ｂａｓｅ６４に従って復号されることが可能である。
【００５８】
署名を検証するには、適切な公開鍵が識別されなければならない。  
このためには、受信されるメッセージをユーザに割り当てて、決定されたユーザから関連の公開鍵を決定することが必要である。  
したがって、ユーザの認証に際して、ユーザおよびコンピュータシステムは、ユーザの秘密鍵等の秘密特徴を共有する必要がない。  
ユーザは、署名付きメッセージにおける識別子から決定されることが可能である。  
ユーザは、他の関連づけによって、例えば、パスワード入力がトークンによって開始される間に、コンピュータシステム上のキーボードを介してユーザ名を入力すること（ログイン）によって識別されることも可能である。  
その結果、識別特徴をメッセージに統合することは、不可欠ではない。
【００５９】
署名されるべきメッセージがパディングバイトにより最小長さに拡張されていて、このパディングバイトが署名付きメッセージの送信前に除去されている場合、コンピュータシステムは、受信したメッセージの署名を検証する前に、対応するパディング規則に従って未送信のパディングバイトを補足する。
【００６０】
実施形態によっては、トークンの署名付きメッセージに加えて、別のセキュリティ機能が、例えばコンピュータシステムのキーボードまたはトークンを介してパスワードを入力することにより検証されてもよい（２ファクタ認証）。  
コンピュータシステムまたはコンピュータシステムのアプリケーションへのアクセスは、入力されたパスワードおよびトークンの署名付きメッセージの検証が肯定的である場合にのみ許可される。
【００６１】
トークンを検証することは、署名を検証することと、メッセージに含まれるカウンタ値の厳密な単調さまたはメッセージに含まれるカウンタ値を検証することを含む。  
ユーザ認証にトークンを用いる異なるコンピュータシステムのセキュリティ要件および同期に依存して、厳密な単調さの検証は、さらに、検証されるカウンタ値が検証された最新のカウンタ値のずれのない増分を表すことの検証を含んでもよい。
【００６２】
他の実施形態では、具体的にはユーザ認証トークンが複数の同期しない、またはさほど頻繁には同期しないコンピュータシステム上で使用される場合、現行のカウンタ値と最後に検証されたカウンタ値とのずれは、許容され得る。  
しかしながら、この場合、非認可者は、第１のコンピュータシステム上のメッセージを改竄して、傍受したメッセージを、第１のコンピュータシステム上の認証プロセスについてまだ知らされていない第２のコンピュータシステムへインポートする可能性もある。  
トークン検証の誤った肯定結果を防ぐためには、コンピュータシステム間で検証済みカウンタ値の同期をとることができる。  
代替的または追加的に、メッセージに、メッセージの短い有効期間を保証するタイムスタンプまたは同等の属性を包含することができる。  
この目的に沿って、メッセージに含まれる、受信されたメッセージの使用を定義された時間期間内でのみ許容するタイムスタンプを使用することができる。
【００６３】
署名の検証、およびタイムスタンプを含む全てのカウンタ値の検証の双方が肯定的であった場合、ユーザの認証は成功である。  
これにより、傍受されたメッセージが他の非同期のコンピュータシステム上で首尾良く再生されることが防止される。
【００６４】
本発明による認証プロセスは、既存の認証モジュールに、適合化努力をほとんど要することなく実装することができる。
【００６５】
例えば、本発明の認証プロセスは、受信されるパスワードデータを本発明の第３の態様に従って処理する際に、ＬＤＡＰ認証モジュールの既存のフック上でハングされることがある。  
したがって、本発明による認証プロセスは、ＬＤＡＰ認証モジュールにより呼び出されるダイナミックライブラリに実装されることが可能である。  
したがって、オペレーティングシステムおよびアプリケーションプログラムの観点から、なおも規格準拠のＬＤＡＰ認証が想定されている。
【００６６】
Ｗｉｎｄｏｗｓシリーズのオペレーティングシステムにおける本発明の認証の組み入れは、プログラミングインターフェースを介して、例えばＷｉｎｄｏｗｓのクレデンシャル管理ＡＰＩを介して可能である。  
本発明による認証の組み入れは、好ましくは、オープン・ソース・ソフトウェアｐＧｉｎａを介して行われ、これは、拡張可能なプラグインアーキテクチャを有し、かつＷｉｎｄｏｗｓのクレデンシャル管理ＡＰＩのプログラミングインターフェースを用いる。  
本発明による認証は、ｐＧｉｎａを介してＷｉｎｄｏｗｓのクレデンシャル管理ＡＰＩに接続されるＬＤＡＰサーバに実装されることが可能である。  
ＬＤＡＰサーバは、好ましくは、ユーザに割り当てられる静的パスワードを記憶し、これが検証のためにＷｉｎｄｏｗｓのクレデンシャル管理ＡＰＩへ送られる。  
あるいは、静的パスワードは、トークンに記憶されてコンピュータシステムへ送信されてもよい。  
静的パスワードは、Ｗｉｎｄｏｗｓがユーザのパスワードを用いてユーザデータを暗号化することに起因して、Ｗｉｎｄｏｗｓシリーズのオペレーティングシステム上で必要とされる。
【００６７】
認証が実行されるコンピュータシステムは、認証が適切である他の電子デバイスも含むことがある。  
したがって、コンピュータシステムは、アクセス制御および／または時間記録のための端末および電子ドアロックも含んでもよい。
【００６８】
コンピュータシステム上の認証は、例えば、Ｗｉｎｄｏｗｓ、Ｍａｃ  ＯＳ  Ｘ、ＬｉｎｕｘおよびＵｎｉｘ等のオペレーティングシステムの下でローカルアクセス制御に使用されることが可能である。  
コンピュータシステム上の認証は、たとえばＷｉｎｄｏｗｓのアクティブディレクトリ、ＳＭＢおよびＣＩＦＳの下でのディレクトリログオンに使用可能である。  
さらに、コンピュータシステムに対する認証は、アプリケーションプログラム、サービス、ウェブアプリケーションおよびＶＰＮへのアクセス制御を提供してもよい。
【００６９】
本発明の第４の態様によれば、ハードウェアに実装されるトークンを含むモバイルデバイスが提供されていて、前記ハードウェア実装トークンは、本発明の第２の態様によるトークンを含む。
【００７０】
本発明の第５の態様によれば、ソフトウェアに実装されるトークンを含むモバイルデバイスが提供されていて、前記ソフトウェア実装トークンは、モバイルデバイスのプロセッサ上で実行されると本発明の第１の態様による方法のステップを実装する命令を有する。
【００７１】
本発明の第６の態様によれば、プロセッサ上で実行されると、本発明の第１の態様または第３の態様による方法のステップを実装する命令を含むコンピュータ・プログラム・プロダクトが提供されている。
【００７２】
本発明は、既存の秘密鍵および場合により関連の公開鍵をトークンに転送するセットアップおよびメンテナンスプログラムを含んでもよい。  
好ましくは、セットアップおよびメンテナンスプログラムは、秘密鍵と対応する公開鍵とから成る鍵ペアを生成するための関数、または鍵ペアを生成するためのトークンをプロンプトする関数を有する。  
セットアップおよびメンテナンスプログラムは、トークンのリアルタイムクロックの時刻を設定しかつ／または読み取るために、例えば、初めて時刻を設定するため、またはトークンのリアルタイムクロックの停止またはリセットに至っている停電の後に時刻を設定するために使用されてもよい。  
セットアップおよびメンテナンスプログラムは、ユーザ定義のプレフィクスを設定しかつ／または読み取るための関数を有してもよい。  
セットアップおよびメンテナンスプログラムは、カウンタ値を設定しかつ／または読み取るための関数を含んでもよい。
【図面の簡単な説明】
【００７３】
本発明のさらなる特徴、目的および利点は、添付の略図に関連して解釈される以下の詳細な説明から明らかとなるであろう。
【００７４】
【図１】本発明の一実施形態によるトークンを示す略図である。
【図２】本発明の一実施形態による、トークンにより署名されたメッセージを示す略図である。
【図３】本発明の一実施形態による、コンピュータシステムに対してユーザを認証するための方法を示す。
【図４】本発明の一実施形態による、コンピュータシステムに対してユーザを認証するための方法を示す。
【図５】本発明の一実施形態による、ハードウェアトークンを有するモバイルデバイスを示す略図である。
【図６】本発明の一実施形態による、ソフトウェアトークンを有するモバイルデバイスを示す略図である。
【発明を実施するための形態】
【００７５】
本発明は、コンピュータシステムにおいてユーザを認証するために使用される。  
本発明は、好ましくは、ユーザをオペレーティングシステムにログインするために使用される。  
また、本発明は、アプリケーションプログラムまたはウェブアプリケーションにおける認証、例えばソーシャルネットワークにおける認証、にも使用可能である。  
本発明は、トークンに割り当てられるユーザの識別を検証することに適する。  
トークンは、専用ハードウェアに、スタンドアロン電子デバイス、またはより包括的な電子デバイスの一部、の双方として統合されてもよい（「ハードウェアトークン」）。  
トークンは、コンピュータ、タブレットコンピュータ、スマートフォン、ネットブック、ノートブックまたはラップトップ等のモバイル・ポータブル・コンピュータにおいて、これがモバイルデバイスを用いてコンピュータシステム、特殊アプリケーションプログラムまたはデータにアクセスすることになる時点で使用するためのソフトウェアにおける実装（「ソフトウェアトークン」）にも適する。  
また、ソフトウェアトークンは、ソフトウェアトークンがインストールされるモバイルデバイスでの認証にも使用可能である。  
ハードウェアトークンとしての好ましい使用法は、単に適用分野としての１つの可能性と見なされるべきである。
【００７６】
以下の実施形態では、本発明は、ユーザがコンピュータシステムのオペレーティングシステムにログオンできるようにする独立したハードウェアトークンとして実装される。  
しかしながら、実施形態はこれに限定されるものではなく、同様の方法で、本発明の各実施形態およびその開示される特徴は、あらゆる適用分野に当てはまる。
【００７７】
個々の実施形態は、ほとんどの場合、単に本発明の個々の特徴を強調表示したものである。  
この例証は、本発明を明確にし、かつより良く理解するためのものである。本発明の他の特徴から独立している本発明の特徴は、必要に応じて任意に組み合わされてもよい。
【００７８】
図１は、計数ユニット１２と、メモリ１４と、処理ユニット１６と、送信ユニット１８とを含むトークン１０を示す構造略図である。  
計数ユニット１２は、１つ以上のカウンタ値２０、２２を生成するために使用される。  
例えば、数値であるカウンタ値２０および／またはタイムスタンプ２２は、カウンタ値２０、２２として使用されてもよい。  
メモリ１４は、トークン１０のユーザに関連づけられる秘密鍵２４を記憶する。  
秘密鍵２４は、ユーザを認証すべくコンピュータシステムにアクセス可能にされる必要はない。  
メモリ１４は、さらに、秘密鍵２４に関連づけられる公開鍵２６を含んでもよい。  
認証のためにコンピュータシステムにアクセス可能とされるものは、公開鍵２６またはそのコピーに限定されなければならない。  
処理ユニット１６は、計数ユニット１２に少なくとも１つのカウンタ値２０、２２を生成させることによりメッセージ３０を生成するように構成される。  
生成される少なくとも１つのカウンタ値２０、２２は、生成される少なくとも１つのカウンタ値２０、２２を用いてメッセージ３０を生成するためのベースとして機能する。  
生成されるカウンタ値２０、２２は、カウンタ値２０、２２が、先に生成されたカウンタ値２０、２２に対して新たなカウンタ値２０、２２が生成される度に、生成される後続のカウンタ値として識別され得ることを特徴とする。  
この条件は、少なくとも、連続値内に最小数のカウンタ値を有する連続値のカウンタ値に適用されなければならない。  
数値に制限はなく、生成されるコンテンツを、十分に大きい画定された連続するコンテンツ内で、先に生成されたコンテンツに対する続いて生成されたコンテンツとして識別できる限り、カウンタ値２０、２２として如何なるコンテンツが提供されてもよい。  
実施形態によっては、「続いて」という用語は、すぐ後に続くものとして理解されてもよいが、他の実施形態では、所定数のカウンタ値２０、２２が、生成される現行のカウンタ値と先のカウンタ値２０、２２との間であってもよい。  
処理ユニット３０は、さらに、生成されたメッセージ３０に秘密鍵２４で署名するように構成される。  
署名付きメッセージは、送信ユニット１８が署名されかつ場合により符号化されたメッセージをコンピュータシステム７０へ送信する前に、送信経路および受信側コンピュータシステムの要件に従って適切に符号化されてもよい。  
コンピュータシステム７０は、署名されかつ場合により符号化されたメッセージを受信し、署名付きメッセージに基づいてユーザを認証する。
【００７９】
図２は、本発明の一実施形態による、署名されるべきメッセージ３０の構造を示す。  
メッセージ３０は、好ましくは、例えばＡＳＣＩＩである１つ以上の文字エンコーディングに属する３２文字を、１文字につき１バイトで含んでもよい。  
メッセージ３０は、例えば、互いに隣接して配置されかつ場合により分離子によって互いから分離される１つ以上の属性から生成される。  
このメッセージ例３０は、以下の６つの属性から成る。
【００８０】
第１の属性３２は、メッセージ３０のプロトコルバージョンを表し、よって、受信側コンピュータシステム７０は、メッセージ３０の構造を他のプロトコルバージョンのメッセージ３０から区別することができる。  
プロトコルバージョン３２は、例えば３バイトで符号化されることが可能である。
【００８１】
第２の属性３４は、メッセージの生成における、トークン内に停電が起こってタイムスタンプを生成するためのトークン内のリアルタイムクロックが停止している、または開始値にリセットされているといったような問題のあるインスタンスをシグナリングするフラグを表す。  
フラグ３４は、例えば１バイトで符号化されてもよい。
【００８２】
第３の属性３６は、トークンをユーザに割り当てることができるように、トークン１０の識別特徴を表す。  
トークン１０の識別特徴３６は、例えば６バイトで符号化されることが可能である。
【００８３】
第４の属性３８は、例えばトークンを会社の部門毎にグループ化するための、または複数のトークンを一人のユーザに関連づけるためのユーザ定義のプレフィクスを表す。  
ユーザ定義のプレフィクス３８は、例えば４バイトで符号化されてもよい。
【００８４】
第５の属性４０は、符号化された第１のカウンタ値を表す。  
符号化された第１のカウンタ値４０は、カウンタ１２により生成されるカウンタ値２０、２２に対応するか、生成されるカウンタ値２０、２２に基づいて計算される。  
符号化された第１のカウンタ値４０は、例えば４バイトで符号化される数値としてのカウンタ値２０であってもよい。
【００８５】
第６の属性４２は、符号化された第２のカウンタ値を表す。  
符号化された第２のカウンタ値４２は、カウンタ１２により生成されるカウンタ値２０、２２に対応するか、生成されるカウンタ値２０、２２に基づいて計算される。  
符号化された第２のカウンタ値４２は、タイムスタンプ２２であってもよく、例えば５バイトで符号化されてもよい。
【００８６】
また、メッセージ３０は、６つの属性のうちの１つ以上に基づいて、例えば６つの属性のうちの１つ以上を任意の順序で並置することにより生成されることもある。
【００８７】
ある好適な実施形態では、メッセージ３０内に、文字列のＡＳＣＩＩ表現「ｂｉｔａｇｅｎｔ＊」（括弧なし）等の署名されるべきメッセージの最小長さを保証するためのさらなるコンポーネントが包含され、前記属性は、先に生成されたメッセージ３０の隣接する任意の２文字の間に挿入される。  
これで、生成されたメッセージ３０に署名することができる。  
挿入される追加のコンポーネントは、署名が生成された後にメッセージから再び除去することができ、よって、これらは、署名を生成しかつこれを後に検証するためにのみメッセージに含まれ、メッセージの送信中には含まれない。
【００８８】
図３は、コンピュータシステム７０に対してユーザを認証するための方法５０を示す。これらの方法ステップは、トークン１０において実行される。
【００８９】
第１の方法ステップ５２において、トークン１０内に実装される計数ユニット１２は、少なくとも１つのカウンタ値２０、２２を生成する。  
生成されるカウンタ値２０、２２は、少なくとも１つのカウンタ値２０、２２が、先に生成された１つのカウンタ値２０、２２に対して新たなカウンタ値２０、２２が生成される度に、生成される後続のカウンタ値として識別され得ることを特徴とする。  
これに関して、生成されるカウンタ値２０、２２の少なくとも一部分は、厳密な単調数列を形成する。
【００９０】
第２の方法ステップ５４では、メッセージ３０が、生成される少なくとも１つのカウンタ値２０、２２の関数として生成される。  
この目的に沿って、少なくとも１つのカウンタ値２０、２２は、関連する符号化されたカウンタ値４０、４２に変換されることが可能である。  
メッセージ３０には、より多くの属性および固定コンポーネントが追加されてもよい。
【００９１】
第３の方法ステップ５６では、生成されたメッセージ３０が、トークン１０に割り当てられるユーザの秘密鍵２４を用いて署名される。  
秘密鍵２４は、トークン１０内に記憶されてもよい。  
署名付きメッセージは、メッセージを受信するコンピュータシステム７０および選択される送信経路に依存して符号化されてもよい。
【００９２】
第４の方法ステップ５８では、署名されかつ場合により符号化されたメッセージが、ユーザの認証のためにコンピュータシステム７０へ送られる。
【００９３】
図４は、コンピュータシステム７０に対してユーザを認証するための方法６０を示す。
【００９４】
第１の方法ステップ６２において、コンピュータシステム７０は、ユーザのトークン１０から、署名されかつ場合により符号化されたメッセージを受信する。
【００９５】
第２の方法ステップ６４において、コンピュータシステム７０は、署名付きメッセージをどのユーザに割り当てることができるかを決定する。  
この目的に沿って、適切な識別特徴３６が検証される。  
識別特徴３６は、好ましくは、受信されるメッセージにおける１つの属性として符号化される。  
識別特徴３６は、他の入力チャネルを介して、例えばキーボードを介する手動データ入力によって、またはユーザの選択によっても提供されることが可能である。  
ユーザは、マッピングテーブルを用いることによって識別特徴３６から導出されてもよい。
【００９６】
第３の方法ステップ６６において、コンピュータシステム７０は、識別された識別特徴３６に関連づけられるユーザの公開鍵２６を決定する。  
受信されたメッセージがユーザに関連づけられる秘密鍵２４を用いて署名されると、コンピュータシステム７０は、決定された公開鍵２６を用いて、受信されたメッセージの信憑性を検証することができる。
【００９７】
認証プロセスを、傍受された署名付きメッセージの繰り返されるインポートから保護するために、第４の方法ステップ６８において、メッセージに含まれる少なくとも１つのカウンタ値２０、２２の厳密な単調さが検証される。  
この目的に沿って、受信されたメッセージに含まれる少なくとも１つのカウンタ値２０、２２がメッセージから抽出され、かつユーザの先の認証プロセス６０の個々に割り当てられた先のカウンタ値２０、２２と比較される。この場合、新しく受信される１つ以上のカウンタ値は、各々、先行する認証プロセス６０と比較した後続の値として識別されなければならない。  
例示的な実施形態によっては、受信されるカウンタ値のうちの１つ以上が直後で続くこと、または、新しく受信される個々のカウンタ値と先に受信された関連のカウンタ値との距離が限界値を下回ることが検証される。  
代替的または追加的に、メッセージの有効期間も、例えばメッセージに含まれるタイムスタンプ２２に基づいて検証されることが可能である。
【００９８】
トークンは、電子デバイスを表すハードウェアトークンとして設計されることが可能である。  
図５は、本発明によるトークンがハードウェアトークン１０Ａとして統合されるモバイルデバイス８０Ａを示す。  
モバイルデバイス８０Ａは、トークンの機能のために特に設計され、かつコンピュータシステムと通信するためのインタフェースを装備してもよい。  
また、モバイルデバイスは、場合により第２のデバイスまたはそれ以上のデバイスへのインタフェースを有するモバイルコンピュータ、例えばタブレットコンピュータ、ネットブック、ノートブックまたはスマートフォンであってもよい。  
ハードウェアトークン１０Ａの定義は、それがトークンの機能を実現するための命令が実行されるプロセッサを含むことを排除するものではなく、その限りにおいて、ハードウェアトークンの機能は、ソフトウェアによっても実行される。  
ハードウェアトークンとしての分類にとって決定的なことは、ソフトウェアがハードウェアトークンの閉システム内で実行されるという事実にある。
【００９９】
また、トークンは、電子デバイスのプロセッサ上で実行されるためのソフトウェアトークンとしても実装されることがある。  
図６は、本発明によるトークンがソフトウェアトークン１０Ｂとして統合されるモバイルデバイス８０Ｂを示す。  
ソフトウェアトークン１０Ｂは、モバイルデバイス８０Ｂのアプリケーションプログラム（「Ａｐｐ」）として、ミドルウェア内に、またはオペレーティングシステム内に統合されてもよい。  
ソフトウェアトークンは、モバイルデバイス８０Ｂの少なくとも１つのプロセッサ８２上で実行される命令を含む。
【０１００】
ソフトウェアトークン１０Ｂを、ハードウェアトークン１０Ａのソフトウェアに対して描写すると、これは、トークンソフトウェアを実行するためのリソースをモバイルデバイス８０Ｂの残りのアプリケーションおよびサービスと共有するが、ハードウェアトークン１０Ａのソフトウェアは、専ら、モバイルデバイス８０Ａの残りのリソースから分離されているハードウェアトークン１０Ａのリソース上で実行される。
【０１０１】
ちなみに、本発明は、例示的な実施形態において言及している、ハードウェアまたはソフトウェアトークンの実現に必要とされる全てのコンポーネントを含む。  
これまでの例示的な実施形態において述べたトークンの個々のコンポーネント間のタスク分配は、一例として理解されるべきである。  
トークンのコンポーネント間には、本発明の記載された特徴を同等の形で実現する、考え得る他の区分もある。
【０１０２】
実施形態に関するこれまでの説明に含まれる詳細は、本発明の範囲を限定するものとして解釈されるべきではなく、どちらかと言えば、その実施形態のうちの幾つかを例証するものである。  
多くの変形が可能であって、それらは、当業者に直ちに明らかである。  
具体的には、これは、本明細書に開示している個々の実施形態の特徴の組合せを含む変形例に関する。  
したがって、本発明の範囲は、例示された実施形態ではなく、添付の特許請求の範囲およびその法的な等価物によって決定されるべきである。
【図１】
2019527518.tif 000003
【図２】
2019527518.tif 000004
【図３】
2019527518.tif 000005
【図４】
2019527518.tif 000006
【図５】
2019527518.tif 000007
【図６】
2019527518.tif 000008
【手続補正書】
【提出日】平成30年8月10日(2018.8.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータシステム（７０）に対してユーザを認証するための方法（５０）であって、前記方法は、トークン（１０）内で実行される以下のステップ、すなわち、
前記トークン（１０）内に実装される計数ユニット（１２）を利用することにより、カウンタ値（２０、２２）を生成するステップ（５２）であって、生成されるカウンタ値（２０、２２）の少なくとも一部分は、厳密な単調数列を形成するステップ（５２）と、
生成された前記カウンタ値（２０、２２）に依存してメッセージ（３０）を生成するステップ（５４）と、
生成された前記メッセージ（３０）に、前記ユーザの秘密鍵（２４）を利用することにより署名するステップ（５６）であって、前記秘密鍵（２４）は、前記トークン（１０）に記憶され、かつ前記秘密鍵（２４）またはそのコピーは、前記コンピュータシステム（７０）へ提供されないステップ（５６）と、
前記署名付きメッセージを前記コンピュータシステム（７０）へ送信するステップ（５８）と、を含み、
前記トークン（１０）は、前記コンピュータシステム（７０）へ入力デバイス（ヒューマン・インタフェース・デバイス）としてログオンするように適合化され、
前記署名付きメッセージを送信するステップ（５８）は、前記署名付きメッセージを入力データとして符号化しかつ送信することを含み、
前記入力データは、定義される言語設定のキーボード・スキャン・コードとして符号化され、かつ前記メッセージは、前記キーボード・スキャン・コードの異なる言語設定を区別することに適する、先に合意された少なくとも２つのＡＳＣＩＩ文字の前記キーボード・スキャン・コードを含むチェックコードを含む、
方法（５０）。
【請求項２】
署名されるべき前記メッセージは、３２バイトの最小長さを有する、
請求項１に記載の方法（５０）。
【請求項３】
送信される前記メッセージは、最大１２７バイトを含む、
請求項１または２に記載の方法（５０）。
【請求項４】
前記署名付きメッセージは、前記メッセージの長さが４／３の割合で増加するように、Ｂａｓｅ６４または同等のフォーマットに従って符号化される、
請求項１〜３のいずれか一項に記載の方法（５０）。
【請求項５】
署名されるべき前記メッセージは、前記署名付きメッセージの送信時に送信されないパディングバイトを含む、
請求項１〜４のいずれか一項に記載の方法（５０）。
【請求項６】
前記メッセージ（３０）は、さらに、前記トークン（１０）の識別特徴（３６）に依存して生成される、
請求項１〜５のいずれか一項に記載の方法（５０）。
【請求項７】
前記計数ユニット（１２）は、クロックを含み、かつ前記カウンタ値（２０、２２）は、タイムスタンプ（２２）を含む、
請求項１〜６のいずれか一項に記載の方法（５０）。
【請求項８】
前記署名付きメッセージを送信する前記ステップ（５８）は、ユニバーサル・シリアル・バス（ＵＳＢ）、ブルートゥースまたは近距離無線通信（ＮＦＣ）を介する、
請求項１〜７のいずれか一項に記載の方法（５０）。
【請求項９】
コンピュータシステム（７０）に対してユーザを認証するためのトークン（１０）であって、
カウンタ値（２０、２２）を生成する（５２）ための計数ユニット（１２）であって、生成されるカウンタ値（２０、２２）の少なくとも一部分は、厳密な単調数列を形成する計数ユニット（１２）と、
前記ユーザに関連づけられる秘密鍵（２４）を記憶するためのメモリ（１４）と、
生成される前記カウンタ値（２０、２２）に依存してメッセージ（３０）を生成し（５４）、かつ生成された前記メッセージ（３０）に前記秘密鍵（２４）を利用して署名する（５６）ための処理ユニット（１６）と、
前記署名付きメッセージを前記コンピュータシステム（７０）に送信するための送信ユニット（１８）とを含み、
前記トークン（１０）は、請求項１〜８のいずれか一項に記載の前記方法（５０）を実行するように適合化される、
トークン（１０）。
【請求項１０】
前記トークン（１０）は、認証プロセス（５０）を開始するための第１の制御エレメントを含む、
請求項９に記載のトークン（１０）。
【請求項１１】
前記メモリ（１４）は、前記秘密鍵（２４）に関連づけられる公開鍵（２６）を含む、
請求項９または請求項１０に記載のトークン（１０）。
【請求項１２】
前記トークン（１０）は、前記コンピュータシステム（７０）への公開鍵（２６）の送信を開始するための第２の制御エレメントを含む、
請求項１１に記載のトークン（１０）。
【請求項１３】
ユーザを認証するための方法（６０）であって、前記方法は、コンピュータシステム（７０）内で実行される以下のステップ、すなわち、
請求項９〜１２のいずれか一項に記載のトークン（１０）から署名付きメッセージを受信するステップ（６２）であって、前記署名付きメッセージは、前記トークン（１０）のカウンタ値（２０、２２）に依存するステップ（６２）と、
識別特徴（３６）によって前記ユーザを前記署名付きメッセージに割り当てるステップ（６４）と、
前記ユーザの公開鍵（２６）を利用することにより、前記署名付きメッセージの前記署名を検証するステップ（６６）と、
前記メッセージ（３０）から抽出される前記カウンタ値（２０、２２）を、前記ユーザの先行する認証プロセス（６０）の前記カウンタ値（２０、２２）と比較するステップ（６８）とを含み、
前記ユーザの連続する認証プロセスのカウンタ値（２０、２２）の少なくとも一部分は、厳密な単調数列を形成し、
前記コンピュータシステム（７０）は、前記トークン（１０）が前記コンピュータシステム（７０）に入力デバイス（ヒューマン・インタフェース・デバイス）としてログオンすることをサポートするように適合化され、
前記署名付きメッセージを受信する前記ステップ（６２）は、前記署名付きメッセージを入力データとして復号することを含み、かつ、
前記入力データは、定義される言語設定のキーボード・スキャン・コードとして符号化され、かつ前記メッセージは、前記キーボード・スキャン・コードの異なる言語設定を区別することに適する、先に合意された少なくとも２つのＡＳＣＩＩ文字の前記キーボード・スキャン・コードを含むチェックコードを含む、
方法（６０）。
【請求項１４】
ハードウェア実装トークン（１０Ａ）を含むモバイルデバイス（８０Ａ）であって、前記ハードウェア実装トークン（１０Ａ）は、請求項９〜１２のいずれか一項に記載のトークン（１０）を含む、
モバイルデバイス（８０Ａ）。
【請求項１５】
ソフトウェア実装トークン（１０Ｂ）を含むモバイルデバイス（８０Ｂ）であって、前記ソフトウェア実装トークン（１０Ｂ）は、前記モバイルデバイス（８０Ｂ）のプロセッサ（８２）上で実行されると請求項１〜８のいずれか一項に記載の方法（５０）のステップを実装する命令を含む、
モバイルデバイス（８０Ｂ）。
【請求項１６】
プロセッサ（７２、８２）上で実行されると請求項１〜８または１３のいずれか一項に記載の方法（５０、６０）のステップを実装する命令を含む、
コンピュータ・プログラム・プロダクト。
【国際調査報告】
2019527518.tif 000009
2019527518.tif 000010
2019527518.tif 000011
2019527518.tif 000012
2019527518.tif 000013
2019527518.tif 000014