(57)【要約】【課題】コンピュータネットワーク上におけるコンピュータ及びアプリケーションに対するリモートアクセス並びにリモートトランザクションの保護に関する。【解決手段】ユーザーとコンピュータに基づいたアプリケーションの間におけるやり取りを保護するべくパスコードを使用する方法、装置、及びシステムが開示されている。【選択図】図２
2019506789.tif 000002
【特許請求の範囲】
【請求項１】
動的認証クレデンシャルを生成する方法であって、
パスコードの値を取得するステップと、
パスコードブラインディングデータ要素の値を取得するステップと、
動的変数の値を取得するステップと、
暗号クレデンシャル生成キーの値を取得するステップと、
前記取得されたパスコード値及び前記取得されたパスコードブラインディングデータ要素値からパスコードベリファイアデータ要素の値を算出するステップと、
前記算出されたパスコードベリファイアデータ要素値、前記取得された動的変数値、及び前記取得された暗号クレデンシャル生成キー値から、前記動的認証クレデンシャルを算出するステップと、
を有する方法。
【請求項２】
前記パスコードの前記値を取得するステップは、ユーザーから前記パスコードの前記値を受け取るステップを有する、請求項１に記載の方法。
【請求項３】
前記パスコードブラインディングデータ要素の前記値を取得するステップは、前記方法を実行している認証トークン又は認証クライアントのメモリから、前記パスコードブラインディングデータ要素値を読み取るステップを有する、請求項１又は２に記載の方法。
【請求項４】
前記パスコードブラインディングデータ要素を生成するステップと、前記動的認証クレデンシャルを算出する前に、初期化フェーズにおいて、前記生成されたパスコードブラインディングデータ要素を前記メモリ内において保存するステップと、を更に有する、請求項３に記載の方法。
【請求項５】
前記パスコードブラインディングデータ要素を生成するステップは、ランダム又は疑似ランダム数生成器によって生成されたランダム又は疑似ランダム数を使用している、請求項４に記載の方法。
【請求項６】
前記動的変数値を取得するステップは、データメッセージを受け取るステップと、前記受け取られたデータメッセージに含まれているデータ要素の関数として前記動的変数値を判定するステップと、を有する、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
前記動的変数値を取得するステップは、トランザクションデータの関数として前記動的変数を判定するステップと、前記トランザクションデータを承認のためにユーザーに対して提示するステップと、前記ユーザーの承認を取得するステップと、を有する、請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
前記パスコードベリファイアデータ要素値を算出するステップは、前記取得されたパスコード値及び前記取得されたパスコードブラインディングデータ要素値の第１不可逆関数として前記パスコードベリファイアデータ要素値を算出するステップを有する、請求項１乃至７のいずれか一項に記載の方法。
【請求項９】
前記算出されたパスコードベリファイアデータ要素値、前記取得された動的変数値、及び前記取得された暗号クレデンシャル生成キー値から前記動的認証クレデンシャルを算出するステップは、前記算出されたパスコードベリファイアデータ要素値、前記取得された動的変数値、及び前記取得された暗号クレデンシャル生成キー値の第２不可逆関数として前記動的認証クレデンシャルを算出するステップを有する、請求項１乃至８のいずれか一項に記載の方法。
【請求項１０】
前記パスコードベリファイアデータ要素値を算出するステップの後に、前記取得されたパスコード値を破棄するステップを更に有する、請求項１乃至９のいずれか一項に記載の方法。
【請求項１１】
前記取得されたパスコード値を破棄するステップは、前記方法を実行している認証トークン又は認証クライアントのメモリから前記取得されたパスコード値のすべての複写を消去するステップを有する、請求項１０に記載の方法。
【請求項１２】
前記動的認証クレデンシャルを算出する前記ステップの後に、前記算出されたパスコードベリファイアデータ要素値を破棄するステップを更に有する、請求項１乃至１１のいずれか一項に記載の方法。
【請求項１３】
前記算出されたパスコードベリファイアデータ要素を破棄するステップは、前記方法を実行している認証トークン又は認証クライアントのメモリから、前記算出されたパスコードベリファイアデータ要素値のすべての複写を消去するステップを有する、請求項１２に記載の方法。
【請求項１４】
前記方法を実行している認証トークン又は認証クライアントのメモリ内において状態変数の値を維持及び保存するステップを更に有し、
前記暗号クレデンシャル生成キー値を取得するステップは、前記方法を実行している前記認証トークン又は認証クライアントの前記メモリから前記状態変数の前記値を読み取るステップと、前記状態変数の前記値の関数として前記暗号クレデンシャル生成キー値を判定するステップと、を有する、請求項１乃至１３のいずれか一項に記載の方法。
【請求項１５】
前記状態変数の値の関数として暗号クレデンシャル生成キー値を判定するステップは、前記暗号クレデンシャル生成キー値を前記状態変数の前記値に設定するステップを有する、請求項１４に記載の方法。
【請求項１６】
前記状態変数の前記値として前記暗号クレデンシャル生成キー値を判定するステップは、第３不可逆関数を前記状態変数の前記値に適用した結果として前記暗号クレデンシャル生成キー値を算出するステップを有する、請求項１４に記載の方法。
【請求項１７】
第４不可逆関数を前記状態変数の前記現在の値に対して適用した結果として前記状態変数の新しい値を算出するステップと、
前記算出された新しい値によって前記状態変数の前記値を更新するステップと、
を更に有する、請求項１４乃至１６のいずれか一項に記載の方法。
【請求項１８】
前記算出された新しい値によって前記状態変数の前記値を更新するステップは、前記方法を実行している前記認証トークン又は認証クライアントの前記メモリ内において、前記算出された新しい値によって前記状態変数の前記現在の値を上書きするステップを有する、請求項１７に記載の方法。
【請求項１９】
前記状態変数の前記新しい値を算出する前記ステップの後に、前記状態変数の前記現在の値を破棄するステップを更に有する、請求項１７又は１８に記載の方法。
【請求項２０】
前記状態変数の前記値の関数として前記暗号クレデンシャル生成キー値を判定する前記ステップの後に、且つ、前記状態変数の前記新しい値を算出する前記ステップの後に、前記状態変数の前記現在の値を破棄するステップを更に有する、請求項１７又は１８に記載の方法。
【請求項２１】
前記状態変数の前記現在の値を破棄するステップは、前記方法を実行する前記認証トークン又は認証クライアントの前記メモリから前記状態変数の前記現在の値のすべての複写を消去するステップを有する、請求項１９又は２０に記載の方法。
【請求項２２】
前記動的認証クレデンシャルを算出する前記ステップの後に、前記暗号クレデンシャル生成キー値を破棄するステップを更に有する、請求項１４乃至２１のいずれか一項に記載の方法。
【請求項２３】
前記暗号クレデンシャル生成キー値を破棄するステップは、前記方法を実行している前記認証トークン又は認証クライアントの前記メモリから前記暗号クレデンシャル生成キー値のすべての複写を消去するステップを有する、請求項２２に記載の方法。
【請求項２４】
動的認証クレデンシャルの値を検証する方法であって、
前記動的認証クレデンシャル値を受け取るステップと、
動的変数の値を取得するステップと、
パスコードベリファイアデータ要素の値及び暗号クレデンシャル生成キーの値を取得するステップと、
前記取得されたパスコードベリファイアデータ要素値、前記取得された動的変数値、及び前記取得された暗号クレデンシャル生成キー値の第１不可逆関数としてクレデンシャル基準値を算出するステップと、
前記受け取られた動的認証クレデンシャル値が前記算出されたクレデンシャル基準値とマッチングしているかどうかを検証するステップと、
を有する方法。
【請求項２５】
前記受け取られた動的認証クレデンシャル値が前記算出されたクレデンシャル基準値とマッチングしているかどうかを通知する信号を生成するステップを更に有する、請求項２４に記載の方法。
【請求項２６】
前記動的変数は、前記動的認証クレデンシャルによって認可されるべきトランザクションを表すトランザクションデータを有する、或いは、これから導出される、請求項２４又は２５に記載の方法。
【請求項２７】
前記パスコードベリファイアデータ要素値及び前記暗号クレデンシャル生成キー値を取得するステップは、認証クライアントの特定のユーザーと関連するユーザー又は認証クライアント固有のデータの組を取得するステップと、このユーザー又は認証クライアント固有のデータの組から、前記パスコードベリファイアデータ要素値及び前記暗号クレデンシャル生成キー値を取得又は導出するステップと、を有する、請求項２４乃至２６のいずれか一項に記載の方法。
【請求項２８】
前記方法の前記ステップを実行する認証サーバーに含まれている、或いは、これによってアクセス可能である、メモリ又はデータベース内において前記ユーザー又は認証クライアント固有のデータの組を保存又は維持するステップを更に有し、
前記ユーザー又は認証クライアント固有のデータの組を取得するステップは、前記メモリ又はデータベースから、前記ユーザー又は認証クライアント固有のデータの組を読み取るステップを有する、請求項２７に記載の方法。
【請求項２９】
前記ユーザー又は認証クライアント固有のデータの組は、状態変数の値を有し、且つ、前記暗号クレデンシャル生成キー値を取得するステップは、前記ユーザー又は認証クライアント固有のデータの組に含まれている前記状態変数の前記値の関数として前記暗号クレデンシャル生成キー値を判定するステップを有する、請求項２７又は２８に記載の方法。
【請求項３０】
前記状態変数の前記値の関数として前記暗号クレデンシャル生成キー値を判定するステップは、前記暗号クレデンシャル生成キー値を前記状態変数の前記値に設定するステップを有する、請求項２９に記載の方法。
【請求項３１】
前記暗号クレデンシャル生成キー値を前記状態変数の前記値の関数として判定するステップは、第２不可逆関数を前記状態変数の前記値に適用した結果として前記暗号クレデンシャル生成キー値を算出するステップを有する、請求項２９に記載の方法。
【請求項３２】
前記ユーザー又は認証クライアント固有のデータの組に含まれている前記状態変数の前記値の第３不可逆関数として算出された新しい値によって前記状態変数の前記値を更新するステップと、
この算出された新しい値によって前記ユーザー又は認証クライアント固有のデータの組に含まれている前記状態変数の前記値を置換するステップと、
を更に有する、請求項２９乃至３１のいずれか一項に記載の方法。
【請求項３３】
前記ユーザー又は認証クライアント固有のデータの組に含まれている前記状態変数の前記値の関数として前記状態変数の前記新しい値を算出する前記ステップの後に、前記ユーザー又は認証クライアント固有のデータの組に含まれている前記状態変数の前記値を破棄するステップを更に有する、請求項３２に記載の方法。
【請求項３４】
前記ユーザー又は認証クライアント固有のデータの組に含まれている前記状態変数の前記値を破棄する前記ステップは、前記状態変数の前記新しい組を算出する前記ステップ及び前記ユーザー又は認証クライアント固有のデータの組に含まれている前記状態変数の前記値の関数として前記暗号クレデンシャル生成キー値を判定する前記ステップの両方が実行された後に、実行される、請求項３３に記載の方法。
【請求項３５】
前記ユーザー又は認証クライアント固有のデータの組に含まれている前記状態変数の前記値を破棄するステップは、前記メモリ又はデータベースから前記ユーザー又は認証クライアント固有のデータの組に含まれている前記状態変数の前記値のすべての複写を消去するステップを有する、請求項３３又は３４に記載の方法。
【請求項３６】
前記クレデンシャル基準値を算出する前記ステップの後に、前記暗号クレデンシャル生成キー値を破棄するステップを更に有する、請求項２８乃至３５のいずれか一項に記載の方法。
【請求項３７】
前記暗号クレデンシャル生成キー値を破棄するステップは、前記メモリ又はデータベースから前記暗号クレデンシャル生成キー値のすべての複写を消去するステップを有する、請求項３６に記載の方法。
【請求項３８】
コンピュータに基づいたアプリケーションとの間におけるユーザーのやり取りを保護する方法であって、
認証クライアントにより、認証ステージにおいて、
動的変数クライアント値を取得するステップと、
暗号クレデンシャル生成キークライアント値を取得するステップと、
メモリから、パスコードブラインディングデータ要素値を取得するステップと、
前記ユーザーから、パスコードを受け取るステップと、
前記取得されたパスコードブラインディングデータ要素値及び前記受け取ったパスコード値の第１不可逆クライアント関数としてパスコードベリファイアデータ要素クライアント値を算出するステップと、
前記取得された動的変数クライアント値、前記取得された暗号クレデンシャル生成キークライアント値、及び前記算出されたパスコードベリファイアデータ要素クライアント値の第２不可逆クライアント関数として動的認証クレデンシャルを算出するステップと、
を実行するステップと、
認証サーバーにより、前記認証ステージにおいて、
前記動的認証クレデンシャルを受け取るステップと、
動的変数サーバー値を取得するステップと、
暗号クレデンシャル生成キーサーバー値を取得するステップと、
パスコードベリファイアデータ要素サーバー値を取得するステップと、
前記取得された動的変数サーバー値、前記取得された暗号クレデンシャル生成キーサーバー値、及び前記取得されたパスコードベリファイアデータ要素サーバー値の第１不可逆サーバー関数としてクレデンシャル基準値を算出するステップと、
前記受け取った動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしているかどうかを検証するステップと、
を実行するステップと、
を有する方法。
【請求項３９】
前記認証サーバーにより、前記受け取られた動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしているかどうかを通知する信号を生成するステップを更に有する、請求項３８に記載の方法。
【請求項４０】
前記コンピュータに基づいたアプリケーションが、前記受け取られた動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしている場合に、第１動作を実行し、且つ、前記受け取られた動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしていない場合には、第２動作を実行するステップを更に有する、請求項３８又は３９に記載の方法。
【請求項４１】
前記動的変数クライアント値は、前記動的変数サーバー値と同一であり、前記暗号クレデンシャル生成キークライアント値は、前記暗号クレデンシャル生成キーサーバー値と同一であり、前記パスコードベリファイアデータ要素クライアント値は、前記パスコードベリファイアデータ要素サーバー値と同一であり、且つ、前記動的認証クレデンシャルを算出するための前記第２不可逆クライアント関数は、前記クレデンシャル基準値を算出するための前記第１不可逆サーバー関数と実質的に同一である、請求項３８乃至４０のいずれか一項に記載の方法。
【請求項４２】
前記動的変数クライアント値は、前記ユーザーによって認可されるべきトランザクションを表すトランザクションデータに基づいており、且つ、前記方法は、
前記認証クライアントにより、前記トランザクションデータを前記ユーザーに対して表示するステップと、
前記認証クライアントにより、前記ユーザーから、前記表示されたトランザクションデータの承認を受け取るステップと、
を更に有する、請求項３８乃至４１のいずれか一項に記載の方法。
【請求項４３】
前記動的認証クレデンシャルを算出する前記ステップは、前記ユーザーが前記表示されたトランザクションデータを承認することを条件としている、請求項４２に記載の方法。
【請求項４４】
前記コンピュータに基づいたアプリケーションが、前記受け取られた動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしている場合に、前記トランザクションを受け付け、且つ、前記受け取られた動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしていない場合には、前記トランザクションを拒絶するステップを更に有する、請求項４２又は４３に記載の方法。
【請求項４５】
前記認証クライアントにより、前記認証ステージにおいて、
現時点の状態変数クライアント値を保存するステップであって、これにより、前記暗号クレデンシャル生成キークライアント値を取得するステップは、前記認証クライアントにより、前記保存されている現時点の状態変数クライアント値から前記暗号クレデンシャル生成キークライアント値を導出するステップを有する、ステップと、
前記現時点の状態変数クライアント値の第３不可逆クライアント関数として新しい状態変数クライアント値を算出するステップと、
前記動的認証クレデンシャルの前記計算の後に、前記暗号クレデンシャル生成キークライアント値を破棄するステップと、
前記新しい状態変数クライアント値の前記計算及び前記暗号クレデンシャル生成キークライアント値の前記導出の後に、前記現時点の状態変数クライアント値を破棄するステップと、
前記破棄された現時点の状態変数クライアント値の代わりに、前記新しい状態変数クライアント値を保存するステップと、
を実行するステップと、
前記認証サーバーにより、前記認証ステージにおいて、
現時点の状態変数サーバー値を保存するステップであって、これにより、前記認証サーバーにより、前記暗号クレデンシャル生成キーサーバー値を取得するステップは、前記認証サーバーにより、前記保存されている現時点の状態変数サーバー値から、前記暗号クレデンシャル生成キーサーバー値を導出するステップと、有する、ステップと、
前記現時点の状態変数サーバー値の第２不可逆サーバー関数として新しい状態変数サーバー値を算出するステップと、
前記クレデンシャル基準値の前記計算の後に、前記暗号クレデンシャル生成キーサーバー値を破棄するステップと、
前記新しい状態変数サーバー値の前記計算及び前記暗号クレデンシャル生成キーサーバー値の前記導出の後に、前記現時点の状態変数サーバー値を破棄するステップと、
前記破棄された現時点の状態変数サーバー値の代わりに、前記新しい状態変数サーバー値を保存するステップと、
を実行するステップと、
を更に有する、請求項３８乃至４４のいずれか一項に記載の方法。
【請求項４６】
前記現時点の状態変数サーバー値は、前記現時点の状態変数クライアント値と同一であり、前記新しい状態変数サーバー値は、前記新しい状態変数クライアント値と同一であり、且つ、前記第２不可逆サーバー関数は、前記第３不可逆クライアント関数と同一である、請求項４５に記載の方法。
【請求項４７】
前記認証クライアントにより、前記認証ステージの前の初期化ステージにおいて、
予測不能な方式により、前記パスコードブラインディングデータ要素値を生成するステップと、
前記認証ステージにおける後続の使用のために、前記生成されたパスコードブラインディングデータ要素値を保存するステップと、
前記ユーザーから初期パスコード値を受け取るステップと、
前記パスコードブラインディングデータ要素及び前記受け取られた初期パスコード値の前記第１不可逆クライアント関数として前記パスコードベリファイアデータ要素クライアント値を算出するステップと、
を実行するステップと、
前記認証サーバーにより、前記初期化ステージにおいて、
前記算出されたパスコードベリファイアデータ要素クライアント値を受け取るステップと、
前記認証ステージにおける後続の使用のために、前記パスコードベリファイアデータ要素サーバー値として前記受け取られたパスコードベリファイアデータ要素クライアント値を保存するステップと、
を実行するステップと、
を更に有する、請求項３８乃至４６のいずれか一項に記載の方法。
【請求項４８】
前記初期化ステージにおいて、
前記認証クライアントにおいて、初期状態シードから導出された前記状態変数クライアント値の初期クライアント値を取得するステップと、
前記認証クライアントにおいて、前記現時点の状態変数クライアント値として前記状態変数クライアント値の前記取得された初期値を保存するステップと、
前記認証サーバーにおいて、前記初期状態シードから導出された前記状態変数サーバー値の初期サーバー値を取得するステップと、
前記認証サーバーにおいて、前記現時点の状態変数サーバー値として前記状態変数サーバー値の前記取得された初期値を保存するステップと、
を実行するステップを更に有する、請求項４７に記載の方法。
【請求項４９】
前記状態変数クライアント値と前記状態変数サーバー値を前記認証ステージにおいて同期化させるステップを更に有する、請求項４５乃至４８のいずれか一項に記載の方法。
【請求項５０】
動的認証クレデンシャルを生成する装置であって、
前記装置のユーザーからパスコードを受け取るように適合されたユーザー入力インターフェイスと、
暗号計算を実行するように適合されたデータプロセッサと、
パスコードブラインディングデータ要素値及び状態変数値を保存するメモリと、
を有し、
これにより、前記装置は、初期化ステージにおいて、
前記パスコードブラインディングデータ要素値を取得し、且つ、メモリ内において保存し、且つ、前記状態変数値の初期値を取得し、且つ、前記現時点の状態変数値として前記初期値を前記メモリ内において保存するように、
適合されており、且つ、
これにより、前記装置は、認証ステージにおいて、動的変数値を取得し、前記ユーザー入力インターフェイスを通じて前記ユーザーの前記パスコードを受け取り、メモリから、パスコードブラインディングデータ要素値を読み取り、前記受け取られたパスコード及び前記パスコードブラインディングデータ要素値の第１不可逆関数としてパスコードベリファイアデータ要素値を算出し、メモリから、前記現時点の状態変数値を読み取り、且つ、メモリから読み取られた前記現時点の状態変数値から暗号クレデンシャル生成キーを導出し、前記取得された動的変数値、前記算出されたパスコードベリファイアデータ要素、及び前記導出された暗号クレデンシャル生成キーの第２不可逆関数として動的認証クレデンシャルを算出し、前記動的認証クレデンシャルを算出した後に、前記導出された暗号クレデンシャル生成キーを破棄し、前記現時点の状態変数値の第３不可逆関数として前記状態変数値の新しい値を生成し、且つ、前記現時点の状態変数値からの前記暗号クレデンシャル生成キーの前記導出及び前記状態変数値の前記新しい値の前記生成の後に、前記現時点の状態変数値を破棄し、且つ、前記現時点の状態変数値の代わりに前記状態変数値の前記生成された新しい値を保存する、ように更に適合されている、装置。
【請求項５１】
データを前記ユーザーに対して提示するユーザー出力インターフェイスを更に有する、請求項５０に記載の装置。
【請求項５２】
前記ユーザーによって承認されるべきトランザクションを表すトランザクションデータを受け取り、前記ユーザー出力インターフェイスを通じて前記受け取られたトランザクションデータを前記ユーザーに対して提示し、前記ユーザーから、前記ユーザー入力インターフェイスを通じて前記提示されたトランザクションデータ用の承認を受け取るように更に適合されている、請求項５１に記載の装置。
【請求項５３】
前記動的認証クレデンシャルの前記計算は、前記装置が前記提示されたトランザクションデータの前記ユーザーの前記承認を受け取ることを条件としている、請求項５２に記載の装置。
【請求項５４】
前記生成された動的認証クレデンシャルを認証サーバーによる検証のために利用可能な状態とするように更に適合されている、請求項５１乃至５３のいずれか一項に記載の装置。
【請求項５５】
前記ユーザーが前記認証サーバーに転送するように、前記ユーザー出力インターフェイスを通じて、前記生成された動的認証クレデンシャルを前記ユーザーに提示するように更に適合されている、請求項５４に記載の装置。
【請求項５６】
前記生成された動的認証クレデンシャルを直接的又は間接的に前記認証サーバーに送信するように更に適合されている、請求項５４又は５５に記載の装置。
【請求項５７】
ランダム又は疑似ランダム数生成器を更に有し、且つ、前記装置は、前記初期化ステージにおいて、前記ランダム又は疑似ランダム数生成器によって生成されたランダム又は疑似ランダム数を取得し、且つ、前記ランダム又は疑似ランダム数の関数として前記パスコードブラインディングデータ要素値を取得するように更に適合されている、請求項５０乃至５６のいずれか一項に記載の装置。
【請求項５８】
動的認証クレデンシャルを検証する装置であって、
特定のユーザー又は特定の認証クライアントと関連する少なくとも１つのデータセットを保存するように適合されたメモリと、
暗号動作を実行するように適合されたデータ処理コンポーネントと、
を有し、
これにより、前記装置は、認証ステージにおいて、動的認証クレデンシャルを受け取り、動的変数サーバー値を取得し、前記メモリから、特定のユーザー又は特定の認証クライアントと関連するデータセットを読み取り、前記読み取られたデータセットから暗号クレデンシャル生成キーサーバー値を取得し、前記読み取られたデータセットから、パスコードベリファイアデータ要素サーバー値を取得し、前記取得された動的変数サーバー値、前記取得されたパスコードベリファイアデータ要素サーバー値、及び前記取得された暗号クレデンシャル生成キーサーバー値の第１不可逆サーバー関数としてクレデンシャル基準値を算出し、前記受け取られた動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしているかどうかを検証する、
ように適合されている、装置。
【請求項５９】
前記メモリ内において、特定のユーザー又は特定の認証クライアントと関連する前記データセットの一部分として、前記パスコードベリファイアデータ要素サーバー値を保存するように更に適合されている、請求項５８に記載の装置。
【請求項６０】
前記メモリ内において、前記特定のユーザー又は前記特定の認証クライアントと関連する前記データセットの一部分として現時点の状態変数サーバー値を保存及び維持し、且つ、前記認証ステージにおいて、前記読み取られたデータセットから前記現時点の状態変数サーバー値を取得し、前記取得された現時点の状態変数サーバー値の関数として前記暗号クレデンシャル生成キーサーバー値を判定し、前記クレデンシャル基準値の前記計算の後に前記暗号クレデンシャル生成キーサーバー値を破棄し、前記取得された現時点の状態変数サーバー値の第２不可逆サーバー関数として新しい状態変数サーバー値を算出し、前記暗号クレデンシャル生成キーサーバー値の前記判定及び前記新しい状態変数サーバー値の前記計算の後に、前記現時点の状態変数サーバー値を破棄し、且つ、前記メモリ内において、前記特定のユーザー又は前記特定の認証クライアントと関連する前記データセットの一部分として前記現時点の状態変数サーバー値の代わりに前記新しい状態変数サーバー値を書き込む、ように更に適合されている、請求項５８又は５９に記載の装置。
【請求項６１】
初期化ステージにおいて、初期状態変数サーバー値を取得し、且つ、前記特定のユーザー又は前記特定の認証クライアントと関連する前記データセットの一部分として、前記現時点の状態変数サーバー値として、前記メモリ内において前記初期状態変数サーバー値を書き込む、ように更に適合されている、請求項６０に記載の装置。
【請求項６２】
初期化ステージにおいて、パスコードベリファイアデータ要素値を受け取り、且つ、前記特定のユーザー又は前記特定の認証クライアントと関連する前記データセットの一部分として、前記パスコードベリファイアデータ要素サーバー値として、前記メモリ内において前記受け取られたパスコードベリファイアデータ要素値を書き込む、ように更に適合されている、請求項５８乃至６１のいずれか一項に記載の装置。
【請求項６３】
コンピュータに基づいたアプリケーションとの間におけるユーザーのやり取りを保護するシステムであって、
認証クライアントと、
認証サーバーと、
を有し、
これにより、前記認証クライアントは、
前記認証クライアントのユーザーからパスコードを受け取るように適合されたユーザー入力インターフェイスと、
暗号計算を実行するように適合されたクライアントデータプロセッサと、
パスコードブラインディングデータ要素値及び状態変数クライアント値を保存するクライアントメモリと、
を有し、
これにより、前記認証クライアントは、初期化ステージにおいて、前記パスコードブラインディングデータ要素を取得し、且つ、前記メモリ内において保存し、且つ、前記状態変数クライアント値の初期クライアント値を取得し、且つ、前記初期クライアント値を前記現時点の状態変数クライアント値として前記メモリ内において保存する、ように適合されており、且つ、
これにより、前記認証クライアントは、認証ステージにおいて、動的変数クライアント値を取得し、前記ユーザー入力インターフェイスを通じて前記ユーザーの前記パスコードを受け取り、前記クライアントメモリから前記パスコードブラインディングデータ要素値を読み取り、前記受け取られたパスコード及び前記パスコードブラインディングデータ要素値の第１不可逆クライアント関数としてパスコードベリファイアデータ要素クライアント値を算出し、前記クライアントメモリから前記現時点の状態変数クライアント値を読み取り、且つ、前記クライアントメモリから読み取られた前記現時点の状態変数クライアント値から暗号クレデンシャル生成キークライアント値を導出し、前記取得された動的変数クライアント値、前記算出されたパスコードベリファイアデータ要素クライアント値、及び前記導出された暗号クレデンシャル生成キークライアント値の第２不可逆クライアント関数として動的認証クレデンシャルを算出し、前記動的認証クレデンシャルを算出した後に前記導出された暗号クレデンシャル生成キークライアント値を破棄し、前記現時点の状態変数クライアント値の第３不可逆クライアント関数として前記状態変数クライアント値の新しい値を生成し、且つ、前記現時点の状態変数クライアント値からの前記暗号クレデンシャル生成キークライアント値の前記導出及び前記状態変数クライアント値の前記新しい値の前記生成の後に、前記現時点の状態変数クライアント値を破棄し、且つ、前記現時点の状態変数クライアント値の代わりに、前記状態変数クライアント値の前記生成された新しい値を保存する、ように更に適合されており、且つ、
これにより、前記認証サーバーは、
前記ユーザー又は前記認証クライアントと関連するデータセットを保存するように適合されたサーバーメモリと、
暗号動作を実行するように適合されたサーバーデータ処理コンポーネントと、
を有し、
これにより、前記認証サーバーは、前記初期化ステージにおいて、パスコードベリファイアデータ要素初期化値を受け取り、且つ、前記ユーザー又は前記認証クライアントと関連する前記データセットの一部分として、パスコードベリファイアデータ要素サーバー値として、前記受け取られたパスコードベリファイアデータ要素初期化値を前記メモリ内において書き込み、且つ、初期状態変数サーバー値を取得し、且つ、前記ユーザー又は前記認証クライアントと関連する前記データセットの一部分として、現時点の状態変数サーバー値として、前記初期状態変数サーバー値を前記メモリ内において書き込む、ように適合されており、且つ、
これにより、前記認証サーバーは、前記認証ステージにおいて、前記生成された動的認証クレデンシャルを受け取り、動的変数サーバー値を取得し、前記サーバーメモリから、前記ユーザー又は前記認証クライアントと関連する前記データセットを読み取り、前記読み取られたデータセットから前記現時点の状態変数サーバー値を取得し、前記取得された現時点の状態変数サーバー値の関数として暗号クレデンシャル生成キーサーバー値を導出し、前記読み取られたデータセットから、前記パスコードベリファイアデータ要素サーバー値を取得し、前記取得された動的変数サーバー値、前記取得されたパスコードベリファイアデータ要素サーバー値、及び前記導出された暗号クレデンシャル生成キーサーバー値の第１不可逆サーバー関数としてクレデンシャル基準値を算出し、前記受け取られた動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしているかどうかを検証し、前記クレデンシャル基準値の前記計算の後に前記暗号クレデンシャル生成キーサーバー値を破棄し、前記取得された現時点の状態変数サーバー値の第２不可逆サーバー関数として新しい状態変数サーバー値を算出し、前記暗号クレデンシャル生成キーサーバー値の前記導出及び前記新しい状態変数サーバー値の前記算出の後に、前記現時点の状態変数サーバー値を破棄し、且つ、前記サーバーメモリ内において、前記ユーザー又は前記認証クライアントと関連する前記データセットの一部分として前記現時点の状態変数サーバー値の代わりに前記新しい状態変数サーバー値を書き込む、ように更に適合されている、システム。
【請求項６４】
前記コンピュータに基づいたアプリケーションをホスティングするように適合されたアプリケーションサーバーを更に有し、
前記認証サーバーは、前記認証ステージにおいて、前記コンピュータに基づいたアプリケーションに、前記受け取られた動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしているかどうかについて通知するように更に適合されており、且つ、前記コンピュータに基づいたアプリケーションは、前記受け取られた動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしている場合に、１つの動作を実行し、且つ、前記受け取られた動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしていない場合には、別の動作を実行するように適合されている、請求項６３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１５年１２月３０日付けで出願された「ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＡＰＰＡＲＡＴＵＳ  ＵＳＩＮＧ  ＦＯＲＷＡＲＤ−ＳＥＣＵＲＥ  ＣＲＹＰＴＯＧＲＡＰＨＹ  ＦＯＲ  ＰＡＳＳＣＯＤＥ  ＶＥＲＩＦＩＣＡＴＩＯＮ」という名称の米国仮特許出願第６２／２７３，１３８号に関し、且つ、その利益を主張するものであり、この特許文献の内容は、引用により、本明細書に包含される。
【０００２】
本発明は、コンピュータネットワーク上におけるコンピュータ及びアプリケーションに対するリモートアクセス並びにリモートトランザクションの保護に関する。更に詳しくは、本発明は、２要素認証トークンを伴う秘密パスコードを使用する方法、装置、及びシステムに関する。
【背景技術】
【０００３】
コンピュータシステム及びアプリケーションのリモートアクセスの人気の増大に伴って、インターネットなどのパブリックネットワーク上においてリモートアクセスされるトランザクションの数及び多様性が劇的に拡大している。この人気は、セキュリティに対するニーズの重要性を示しており、具体的には、アプリケーションにリモートアクセスしている人々が、自身がそうであると主張している人物であることを保証する方法、リモート実施されているトランザクションが、正当な人物によって開始されていることを保証する方法、並びに、アプリケーションサーバーによって受け取られる前にトランザクションが変更されていないことを保証する方法に対するニーズの重要性を示している。
【０００４】
コンピュータに基づいたアプリケーションとの間におけるユーザーのやり取りを保護するための１つの解決策は、２要素強力認証解決策の使用である。
【０００５】
２要素認証解決策においては、正当なユーザーであると主張している人物が、２つの認証要素の証拠を認証検証エンティティに対して提供することにより、例えば、コンピュータに基づいたアプリケーションに対してユーザーを認証することができる。第１要素（「ユーザーが持っているもの」要素）は、特定のユーザーとリンク又は関連付けされうる特定のオブジェクト又はトークンに対するアクセスをユーザーが保有している又は有している、という証拠から構成されている。第２要素は、特定のユーザーとリンク又は関連付けされうる特定の情報片の知識をユーザーが有している、という証拠（「ユーザーが知っているもの」要素）から構成することができる。この特定の情報片は、秘密パスワード又は秘密ＰＩＮ（Ｐｅｒｓｏｎａｌ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  Ｎｕｍｂｅｒ）などの、正当なユーザー以外のその他の人物には知られていないと仮定されうる秘密を有することができる。この特定の情報片は、本説明の残りの部分においては、パスコードと呼称される場合がある。
【０００６】
パスコードを使用して認証解決策のセキュリティを保証するには、パスコードの機密性を常に保証及び維持することが必須である。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
２要素強力認証解決策と共に使用されるパスコードの秘密性及機密性を保護する安全な解決策が必要とされている。
【課題を解決するための手段】
【０００８】
本発明は、認証目的のために使用されているクライアント及びサーバー装置は、ハッキングされる場合があり、その結果、これらの装置上において保存されている情報が詐欺師の手に渡る場合がある、という本発明者らの洞察に基づいている。この盗まれた情報が、コンピュータに基づいたアプリケーションを認証する際にユーザーが使用しうるパスコードに関係している場合には、例えば、パスコード自体の取得などのように、これらのパスコードに関する知識を抽出するべく、この盗まれた情報が、なんらかの不正な者によって使用されうるリスクが存在している。いくつかのケースにおいては、ユーザーが、同一の又は類似のパスコードを複数のプラットフォーム及びアプリケーションに跨って使用している場合があることから、悪意を有する者がこのようなパスコードを発見することに由来しうる損害が、単一のコンピュータに基づいたアプリケーションをはるかに超えて拡大する場合がある。例えば、実際に、インターネットバンキングアプリケーションのユーザーが、自身のインターネットバンキングアプリケーションに対する認証のために、自身のバンクカードのうちの１つのバンクカードのＰＩＮと同一の、又はこれに非常に類似している、パスコードを選択することを排除することは、困難でありうる。
【０００９】
クライアント装置又はサーバー装置のいずれもが、攻撃者が、パスコードの値を取得できるようにしうる、又はパスコードの可能な値の範囲を制約できるようにしうる、なんらの情報をも永久的に保存していない場合には、パスコードの使用に基づいた認証解決策の全体的なセキュリティを向上させることができる、というのが、本発明者らの洞察である。例えば、本発明のいくつかの実施形態においては、クライアント装置又はサーバー装置のいずれもが、パスコード値又はパスコード値から可逆的な方式によって算出されるデータ要素を永久的に保存していなくてもよい。又、本説明においては、クライアント装置は、クライアント、認証クライアント、認証トークン、又は強力認証トークンと呼称される場合がある。
【００１０】
本発明による強力認証トーンの機能
いくつかの実施形態においては、強力認証トークンは、パスワードベリファイアデータ要素の値を動的変数の値及び秘密暗号キーの値と暗号方式によって組み合わせ、且つ、秘密暗号キーによってパラメータ化された暗号アルゴリズムを使用することにより、ワンタイムパスワード（ＯＴＰ：Ｏｎｅ−Ｔｉｍｅ  Ｐａｓｓｗｏｒｄ）又は電子署名などの動的クレデンシャルを生成するように適合されてもよい。
【００１１】
いくつかの実施形態においては、強力認証トークンは、パスコードを提供するようにユーザーに要求し、且つ、ユーザーによって提供されたパスコード値をパスコードブラインディングデータ要素の値と組み合わせることにより、パスコードベリファイアデータ要素の値を算出するように適合されてもよい。いくつかの実施形態においては、パスコードブラインディングデータ要素は、認証トークンにより、例えば、認証トークンによってアクセス可能であるなんらかの形態の永久的又は不揮発性メモリ内において保存されてもよい。いくつかの実施形態においては、ユーザーによって提供されるパスコード値は、例えば、暗号ハッシュ関数を有しうる、暗号一方向関数などの関数を使用することにより、保存されているパスコードブラインディングデータ要素の値と組み合わせられてもよい。いくつかの実施形態においては、パスコードブラインディングデータ要素は、強力認証トークンにより、一度だけ、生成されてもよく、且つ、次いで、将来の使用のために、強力認証トークンによって保存されてもよい。いくつかの実施形態においては、強力認証トークンは、予測不能な方式により、パスコードブラインディングデータ要素を生成してもよい。いくつかの実施形態においては、強力認証トークンは、パスコードの値とは独立した方式により、パスコードブラインディングデータ要素を生成してもよい。例えば、いくつかの実施形態においては、強力認証トークンは、ランダム数生成器又は疑似ランダム数生成器を使用することにより、パスコードブラインディングデータ要素を生成してもよい。いくつかの実施形態においては、パスコードブラインディングデータ要素は、ランダム数生成器又は疑似ランダム数生成器によって生成されたランダム数を有することができる。いくつかの実施形態においては、強力認証トークンは、強力認証トークンがパスコードベリファイアデータ要素の値を算出するべくパスコード値を使用したら、ユーザーが提供したパスコード値のすべての（一時的な）複写をそのメモリから消去するように適合されてもよい。又、いくつかの実施形態においては、強力認証トークンは、強力認証トークンが動的認証クレデンシャルを生成するべく算出済みのパスコードベリファイアデータ要素を使用したら、算出済みのパスコードベリファイアデータ要素のすべての（一時的な）複写をそのメモリから消去するように適合されてもよい。
【００１２】
いくつかの実施形態においては、動的変数は、（例えば、ソフトウェアトークンがその上部において稼働中でありうるパーソナル演算装置などの強力認証トークンのクロックによって提供されうる）時間値の関数であってもよい。いくつかの実施形態においては、動的変数は、イベントに関係する変数の値の関数であってもよい。本説明においては、イベントに関係する変数という用語は、その値が、特定のイベントの発生の際に、更新アルゴリズムを使用して自動的に更新されうる変数を意味しうる。いくつかの実施形態においては、強力認証トークンは、特定のイベントの発生の際に、そのイベントに関係する変数の現時点の値の関数として、イベントに関係する変数の新しい値を算出してもよく、且つ、算出された新しい値によって現時点の値を置換してもよい。いくつかの実施形態においては、特定のイベントは、例えば、ＯＴＰ又は電子署名を生成するための強力認証トークンによるイベントに関係する変数の使用を有することができる。いくつかの実施形態においては、イベントに関係した変数は、カウンタを有していてもよく、且つ、更新アルゴリズムは、カウンタの単調な増分（又は、減分）を有することができる。いくつかの実施形態においては、更新アルゴリズムは、例えば、一方向ハッシュアルゴリズムを有していてもよく、且つ、イベントに関係する変数は、一方向ハッシュアルゴリズムをイベントに関係する変数の古い値に対して適用した結果として得られる新しい値により、更新されてもよい。いくつかの実施形態においては、イベントに関係する変数は、秘密暗号キーを有していてもよく、或いは、動的クレデンシャルの生成において使用される秘密暗号キーは、イベントに関係する変数から導出されてもよい。例えば、いくつかの実施形態においては、秘密暗号キーの値は、秘密暗号キーがＯＴＰ又は電子署名を生成するべく使用されるたびに、秘密暗号キーの以前の値の関数でありうる新しい値により、更新されてもよい。いくつかの実施形態においては、イベントに関係する変数は、状態変数を有していてもよく、且つ、秘密暗号キーの値は、その状態変数の関数として算出されてもよく、状態変数は、特定のイベントの発生の際に、その状態変数の現時点の値の関数でありうる新しい値により、更新されてもよい。いくつかの実施形態においては、動的変数は、チャレンジに基づいたものであってもよく、チャレンジは、例えば、サーバーによって生成されてもよく、且つ、例えば、（例えば、ユーザーが、強力認証トークンを有する電子装置のユーザー入力インターフェイスを使用してチャレンジを入力することにより）強力認証トークンに対して提供されてもよい。いくつかの実施形態においては、動的変数は、（例えば、ユーザーが、強力認証トークンのユーザー入力インターフェイスを使用してトランザクションデータを入力することにより）強力認証トークンに対して提供されうるトランザクションデータに基づいたものであってもよい。いくつかの実施形態においては、動的変数は、上述のタイプの動的変数の任意の組合せを有していてもよい。
【００１３】
パスコードベリファイアデータ要素の値を動的変数及び秘密暗号キーの値との間において暗号方式によって組み合わせた結果は、一般に、動的クレデンシャル又は動的認証クレデンシャルと呼称することができる。動的変数がトランザクションデータに基づいているケースにおいては、動的変数の値をパスコードベリファイアデータ要素の値及び秘密暗号キーの値との間において暗号方式によって組み合わせた結果は、電子署名と呼称することができる。動的変数がチャレンジに基づいているケースにおいては、動的変数の値をパスコードベリファイアデータ要素の値及び秘密暗号キーの値との間において暗号方式によって組み合わせた結果は、応答と呼称することができる。時間値又はイベントに関係する変数の値を伴うケースなどのように、動的変数が、強力認証トークによって内部的に生成及び／又は維持されるデータに基づいているケースにおいては、動的変数の値をパスコードベリファイアデータ要素の値及び秘密暗号キーの値との間において暗号方式によって組み合わせた結果は、ワンタイムパスワード（ＯＴＰ）と呼称することができる。
【００１４】
いくつかの実施形態においては、パスコードベリファイアデータ要素の値を動的変数の値及び秘密暗号キーの値との間において暗号方式によって組み合わせる暗号アルゴリズムは、秘密暗号キーによってパラメータ化されうる対称型暗号アルゴリズムを有していてもよく、且つ、強力認証トークンは、例えば、認証サーバーとの間において秘密暗号化キーを共有していてもよい。例えば、いくつかの実施形態においては、対称型暗号アルゴリズムは、動的変数の値に基づいて動作しうると共に秘密暗号キーによってパラメータ化されうる、ＡＥＳ（Ａｄｂａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などの、対称型暗号化又は暗号解読アルゴリズムを有していてもよい。いくつかの実施形態においては、対称型暗号アルゴリズムは、動的変数の値に基づいて動作しうると共に秘密暗号キーによってパラメータ化されうる、ＨＭＡＣ（Ｈａｓｈ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）などの、鍵付きハッシュアルゴリズムを有していてもよい。
【００１５】
ソフトウェア及びハードウェアトークン
いくつかの実施形態においては、強力認証トークンは、パーソナルコンピュータ（ＰＣ：Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、タブレットコンピュータ、又はスマートフォンなどの、ユーザーに属するパーソナル汎用電子演算装置上においてインストールされると共に稼働しているソフトウェアアプリケーションの形態を有していてもよく、これにより、ソフトウェアアプリケーションは、認証ソフトウェアアプリケーションの正当なユーザー用の認証サービスを提供するように適合されていてもよい。
【００１６】
いくつかの実施形態においては、強力認証トークンは、その主な又は唯一の機能が、装置の正当なユーザー用の認証サービスを提供する、というものである、専用の電子ハードウェア装置を有していてもよい。
【００１７】
これらの認証サービスは、本説明のどこか別のところにおいて更に詳細に説明されているように、ユーザーをリモートコンピュータに基づいたアプリケーションに対して認証すると共に／又は、ユーザーによってリモートコンピュータに基づいたアプリケーションに対してサブミットされたトランザクションを保護するなどの、ユーザーとコンピュータに基づいたアプリケーションの間におけるやり取りを保護するための動的クレデンシャルを生成するステップを有していてもよい。
【００１８】
いくつかの実施形態の一般的な原理
いくつかの実施形態においては、本発明による認証プロトコルは、動的状態から生成される暗号キーのシーケンスを使用してもよく、この場合に、状態は、新しい状態が古い状態から見出されうるように、但し、この逆にはならないように、更新されている。状態の現時点の値は、認証クライアント（強力認証トークンなど）及び認証サーバーの両方により、同期した方式によって維持することができる。例えば、いくつかの実施形態においては、フォワードセキュア型のキー更新アルゴリズムを使用することにより、キー及び／又は状態のシーケンスを構築することができる。いくつかの実施形態においては、認証トークンは、認証クレデンシャルを生成するべく、認証トークンのユーザーによって認証トークンに提供されたものでありうるパスコードをこのような暗号キーと暗号方式によって組み合わせることができる。いくつかの実施形態においては、認証クレデンシャルの生成において使用される暗号キーは、例えば、強力認証トークンが認証クレデンシャルを生成した後に、毎回、強力認証トークンによって更新されうる、このような状態の現時点の値から、強力認証トークンにより、導出されてもよい。
【００１９】
いくつかの実施形態においては、パスコードは、直接的には使用されておらず、「パスコードベリファイア」を生成するためにのみ、使用されており、パスコードベリファイアは、パスコード及びパスコードブラインディングデータ要素から形成されている。パスコードブラインディングデータ要素は、初期化ステージにおいて、認証トークンにより、例えば、生成されるなどのように、取得されてもよく、且つ、例えば、パスコード値からパスコードベリファイア値を生成するなどの、将来の使用のために、認証トークン上において、且つ、認証トークン上においてのみ、永久的に保存されてもよい。パスコードベリファイアは、結果的に得られたパスコードベリファイアに対して逆関数を適用することにより、パスコード値を算出することができないように、一方向関数を使用して生成することができる。パスコードブラインディングデータ要素は、高エントロピーを有していてもよく、且つ、パスコードベリファイアは、パスコードブラインディングデータ要素が既知でない場合に、ブルートフォース攻撃により、実際のパスコード値をパスコードベリファイアから取得することが実際に実現不能となりうるように、高エントロピーを有するように、生成することができる。例えば、パスコードベリファイアは、ハッシュ関数を、好ましくは、ＳＨＡ−２５６などの暗号方式によって保護されたハッシュ関数を、パスコード値とパスコードブラインディングデータ要素の、連結などの、組合せに対して適用することにより、認証トークンによって算出することができる。パスコードブラインディングデータ要素は、真の又は疑似的なランダム数生成器によって生成されたものであってもよい。いくつかの実施形態においては、パスコードブラインディング数は、認証トークンによって生成された真の又は疑似的なランダムデータに基づいて生成することができる。いくつかの実施形態においては、パスコードブラインディング数は、認証サーバーによって生成された真の又は疑似的なランダムデータに基づいて生成することができる。いくつかの実施形態においては、パスコードブラインディング数は、認証トークンによって生成された真の又は疑似的なランダムデータと認証サーバーによって生成された真の又は疑似的なランダムデータの組合せに基づいて生成することができる。実際のパスコードは、使用が完了するたびに、且つ、使用された後に即座に、認証トークンから消去されてもよい。初期化ステージにおいては、パスコードベリファイアは、保護された方式により、検証又は認証サーバーに転送されていてもよく、且つ、例えば、認証トークンによって生成された動的認証クレデンシャルの検証などの、将来の使用のために、検証又は認証サーバー上において、且つ、検証又は認証トークン上においてのみ、永久的に保存されてもよい。
【００２０】
いくつかの実施形態においては、それぞれの生成された動的認証クレデンシャルは、それぞれの生成されたクレデンシャルごとに更新される鍵付きＨＭＡＣ（ＨＭＡＣ  ｕｎｄｅｒ  ａ  ｋｅｙ）であってもよい。ＨＭＡＣに対する入力の１つは、パスコードベリファイアであってもよい。クレデンシャルの検証が完了した後に、古いキーが破棄されてもよく、且つ、状態が更新されてもよい。この結果、検証サーバーは、パスコードについて知ることができない（検証サーバーは、パスコードデータ要素ではなく、パスコードベリファイアの複写を有するのみであり、この結果、サーバーにおいて保持されているパスコードベリファイアの複写に対してブルートフォース攻撃を適用することにより、実際のパスコード値を取得することができない）。
【００２１】
認証トークンは、パスコードを決して保存することがなく、従って、認証トークンからの情報の抽出により、パスコートを発見することはできない（パスコードブラインディング要素は、認証トークン上において保存されているが、これは、パスコードベリファイアの知識を伴うことなしにブルートフォース攻撃によってパスコードの値を取得するべく、使用することができない）。
【００２２】
又、古いクレデンシャル及び認証トークンの現時点の状態が付与された状態において、パスコードを発見することは不可能であり、その理由は、候補パスコードを試験するために必要とされるキーのサーバー及びクライアントの両方による破壊が完了した状態にあるからである。
【００２３】
本発明のプロトコル、システム、及び方法のその他の態様は、サーバー及びクライアントを同期状態において維持する方法に関係しうるが、これは、状態を更新する時期に関する特定の規則を順守することによるものであってもよい。これらの態様の更なる詳細については、本説明のどこか別のところにおいて記述されている。
【００２４】
又、いくつかの実施形態においては、本説明において記述されている技法は、例えば、低エントロピーを有しうることから、秘密状態において留まることを要する、且つ、ブルートフォース攻撃に対して脆弱でありうる、あらゆる機密を含むユーザー認証に関係するデータに対して適用することができる。又、例えば、これら技法は、そのいずれもがパスコードの例でありうる、ＰＩＮ、パスワード、及び生体計測テンプレートに対して適用されてもよい。
【００２５】
特定の実施形態
以下の節においては、本発明の実施形態の特定の組について説明することとする。
【００２６】
用語及び定義
−ＰＲＮＧ（長さ）：暗号方式によって保護されたランダム数生成器からの「長さ」ビットのビットストリングであり、ランダム数生成器は、真のランダム数生成器又は疑似的なランダム数生成器を有しうる。
【００２７】
−ＩＥＮＣＯＤＥ（ｉ，長さ）：左側の桁がゼロによって充填されたビッグエンディアン整数としての数「Ｉ」を「長さ」ビットにエンコーディングした結果であるビットストリングを表記している。
【００２８】
−＜＞：ゼロの長さのバイトストリングを表記している。
【００２９】
−｛ａ，ｂ，ｃ．．．｝：所与の順序においてビットストリング「ａ」，「ｂ」，「ｃ」，．．．を連結した結果を表記している。
【００３０】
−Ｓ：そうではない旨が規定されていない限り、認証サーバーを意味しており、且つ、認証サーバーによって実行された動作又はステップをも示しうる。
【００３１】
−Ｃ：そうではない旨が規定されていない限り、認証トークン又は認証クライアントアプリケーションなどの認証クライアントを意味しており、且つ、認証クライアントによって実行された動作又はステップをも示しうる。
【００３２】
−「Ｓｅｎｄｅｒ→Ｒｅｃｅｉｖｅｒ：Ｍｅｓｓａｇｅ」という表現：ビットストリング「Ｍｅｓｓａｇｅ」がエンティティ「Ｓｅｎｄｅｒ」からエンティティ「Ｒｅｃｅｉｖｅｒ」に送信されることを意味している。これは、「Ｓｅｎｄｅｒ」から「Ｒｅｃｅｉｖｅｒ」への「Ｍｅｓｓａｇｅ」の転送の前のビットストリーム「Ｍｅｓｓａｇｅ」のエンティティ「Ｓｅｎｄｅｒ」による生成を更に意味しうる。
【００３３】
暗号プリミティブ
暗号化プリミティブ
「ｃｉｐｈｅｒｔｅｘｔ＝ＥＮＣ（Ｋ，ＩＶ，Ｄａｔａ）」という表現は、（選択された暗号化アルゴリズムにおいて適用可能である場合に）初期化ベクトル「ＩＶ」を使用して暗号暗号化キー「Ｋ」によってパラメータ化された暗号暗号化アルゴリズムを使用することにより、結果「ｃｉｐｈｅｒｔｅｘｔ」を取得するべく、ビットストリング「Ｄａｔａ」を暗号化するステップを表記している。いくつかの実施形態においては、暗号化アルゴリズムは、対称型暗号化アルゴリズムを有することができる。いくつかの実施形態においては、対称型アルゴリズムは、なんらかの暗号化モードにおいて、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）又は３ＤＥＳ（Ｔｒｉｐｌｅ  Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などの、ブロック暗号を有することができる。例えば、いくつかの実施形態においては、ＡＥＳアルゴリズムは、ＣＴＲモードにおいて使用されてもよく（カウンタモードであり、ウェブアドレス「ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｂｌｏｃｋ＿ｃｉｐｈｅｒ＿ｍｏｄｅ＿ｏｆ＿ｏｐｅｒａｔｉｏｎ＃ＣＴＲ」に位置しているウェブサイトをも参照されたい。この内容は、引用により、本明細書に包含される）、且つ、キーＫは、１２８ビットのサイズを有していてもよく、且つ、ＣＴＲモード用のカウンタの開始値は、初期化ベクトルから算出されてもよい。いくつかの実施形態においては、ＣＴＲモード用のカウンタの開始値は、例えば、ＩＶ＜＜６４などのように、いくつかの位置にわたって左シフトされた初期化ベクトルとして算出されてもよい。いくつかの実施形態においては、初期化ベクトルは、カウンタ「ＣＴＲ」及びランダム数から算出されてもよい。例えば、初期化ベクトルは、ＩＶ（ＣＴＲ）＝｛ＩＥＮＣＯＤＥ（ＣＴＲ，６×８），ＰＲＮＧ（２×８）｝として、カウンタ「ＣＴＲ」の関数として算出されてもよい。
【００３４】
クレデンシャル生成プリミティブ
いくつかの実施形態においては、クレデンシャルは、入力としてキー「Ｋ」及びビットストリング「Ｄａｔａ」を使用する暗号関数を使用することにより、キー「Ｋ」及び入力ビットストリング「Ｄａｔａ」を使用して算出することができる。例えば、いくつかの実施形態においては、クレデンシャルは、入力としてキー「Ｋ」及びビットストリング「Ｄａｔａ」を使用することにより、メッセー認証コード（ＭＡＣ）として算出されてもよい。いくつかの実施形態においては、クレデンシャルを算出するための暗号関数は、キー「Ｋ」下におけるビットストリング「Ｄａｔａ」の暗号化（又は、暗号解読）を有することができる。いくつかの実施形態においては、クレデンシャルを算出するための暗号関数は、一方向関数を有することができる。いくつかの実施形態においては、一方向関数は、暗号ハッシュ関数を有することができる。いくつかの実施形態においては、一方向関数は、鍵付きハッシュ関数を有することができる。例えば、いくつかの実施形態においては、クレデンシャルは、ＭＡＣ＝ＨＭＡＣ（Ｋ，Ｄａｔａ）として算出されてもよく、これにより、ＨＭＡＣは、ＲＦＣ２１０４によって規定されているＨＭＡＣ、或いは、ＲＦＣ４２３１によって規定されているＳＨＡ−２５６のＨＭＡＣなどの、キーＫの下におけるデータのハッシュに基づいたメッセージ認証コードを表記している。いくつかの実施形態においては、キーＫは、１２８ビットのサイズを有することができる。いくつかの実施形態においては、結果的に得られる暗号文、ハッシュ、又はＭＡＣは、切り捨てられてもよい。いくつかの実施形態においては、Ｄａｔａは、８ビットの倍数でない場合には、次のバイト境界まで左側の桁にゼロが充填されている。
【００３５】
キー更新プリミティブ
表現「ｓｔａｔｅi+1，ｋｅｙi+1＝ＵＰＤＡＴＥ（ｓｔａｔｅi）」は、状態の古い値「ｓｔａｔｅi」から始まって、そのキーの「ｋｅｙi+1」及びその状態の「ｓｔａｔｅi+1」という新しい値を算出するべく、なんらかの暗号キー及び状態更新アルゴリズムを使用すると共に（適用可能である場合に）キー及び状態の古い値を新たに算出された値によって置換することにより、キー及び状態の値を更新するステップを表記している。いくつかの実施形態においては、状態の新しい値は、状態の現時点の値を入力として取得する第１不可逆関数を使用することにより、状態の現時点の値から算出することができる。いくつかの実施形態においては、暗号キーの新しい値は、状態の現時点の値を入力として取得する第２不可逆関数を使用することにより、状態の現時点の値から算出することができる。いくつかの実施形態においては、状態の現時点の値から状態及び暗号キーの新しい値を算出する不可逆関数は、例えば、セキュア暗号ハッシュ関数を有することができる。いくつかの実施形態においては、暗号キー及び状態更新アルゴリズムは、「“Ｆｏｒｗａｒｄ−Ｓｅｃｕｒｉｔｙ  ｉｎ  Ｐｒｉｖａｔｅ−Ｋｅｙ  Ｃｒｙｐｔｏｇｒａｐｈｙ”  ｂｙ  Ｍｉｈｉｒ  Ｂｅｌｌａｒｅ  ａｎｄ  Ｂｅｎｎｅｔ  Ｙｅｅ，  Ｓｐｒｉｎｇｅｒ  ＬＮＣＳ  ２６１２」において開示されているキー更新アルゴリズムなどの、キー更新アルゴリズムを有することができる。いくつかの実施形態においては、暗号キー及び状態更新アルゴリズムは、次式のように定義することができる。
【００３６】
−ｋｅｙi+1＝ＥＮＣ（ｓｔａｔｅi，ＩＶ＿１，Ｄａｔａ＿１）
【００３７】
この場合に、特定の一実施形態においては、Ｄａｔａ＿１は、０ｘ００．．．０ｘ００という１６バイトから構成されていてもよく、且つ、ＩＶ＿１は、値０を有することができる。
【００３８】
−ｓｔａｔｅi+1＝ＥＮＣ（ｓｔａｔｅi，ＩＶ＿２，Ｄａｔａ＿２）
【００３９】
この場合に、特定の一実施形態においては、Ｄａｔａ＿２は、０ｘ００．．．０ｘ００という１６バイトから構成されていてもよく、且つ、ＩＶ＿２は、値２６３を有することができる。
【００４０】
定数
いくつかの実施形態においては、いくつかの定数を使用することができる。例えば、いくつかの実施形態においては、ＶＥＲＳＩＯＮ、ＭＳＧ＿ＣＨＡＬＬＥＮＧＥ、ＭＳＧ＿ＲＥＳＰＯＮＳＥ、ＭＳＧ＿ＡＣＴＩＶＡＴＩＯＮ＿ＣＨＡＬＬＥＮＧＥ、ＭＳＧ＿ＡＣＴＩＶＡＴＩＯＮ＿ＲＥＳＰＯＮＳＥという定数が使用されてもよく、この場合に、後者の４つの定数は、いずれも、互いに異なっている値を有しうる。特定の一実施形態においては、これらの定数は、以下の値を有することができる。
ＶＥＲＳＩＯＮ：＝ＩＥＮＣＯＤＥ（０，８）
ＭＳＧ＿ＣＨＡＬＬＥＮＧＥ：＝ＩＥＮＣＯＤＥ（１，４）
ＭＳＧ＿ＲＥＳＰＯＮＳＥ：＝ＩＥＮＣＯＤＥ（２，４）
ＭＳＧ＿ＡＣＴＩＶＡＴＩＯＮ＿ＣＨＡＬＬＥＮＧＥ：＝ＩＥＮＣＯＤＥ（３，４）
ＭＳＧ＿ＡＣＴＩＶＡＴＩＯＮ＿ＲＥＳＰＯＮＳＥ：＝ＩＥＮＣＯＤＥ（４，４）
【００４１】
パラメータ及び初期構成
すべてのパラメータは、特定の認証トークン−サーバーの組合せにおけるものである。特定の認証トークン用にサーバーによって取得されたデータは、ログインしようとしている又はログインが完了している、特定のユーザーアカウントに対応しうる。サーバーによって取得されたデータは、特定の認証トークンに、或いは、起動された認証アプリケーションの特定のインスタンスに、対応しうる。
【００４２】
【表１】
2019506789.tif 000003
【００４３】
仮定及び注記
いくつかの実施形態においては、攻撃者は、認証トークンとサーバーの間のメッセージを伝達しているネットワークを制御することができると共に、完全なＭｉｔＭ（Ｍａｎ−ｉｎ−ｔｈｅ−Ｍｉｄｄｌｅ）攻撃を開始する能力を有しうるものと仮定することができる。又、いくつかの実施形態においては、認証トークン又はアプリケーションが保護されているものと仮定することもできる。又、いくつかの実施形態においては、サーバーが保護されているものと仮定することもできる。
【００４４】
いくつかの実施形態においては、認証トークンは、セキュアハードウェアを使用して実装されてもよく、且つ、認証トークンは、任意のメッセージをＭＡＣ及び／又は暗号解読することが可能であってもよいが、キーをリリースすることはできない。このような実施形態においては、メッセージ内にノンスを含むことが有利でありうる。認証トークンに対する一時的なアクセスしか有していない攻撃者は、任意の将来のトランザクションのノンスを予測することができない。
【００４５】
クライアントの事前起動
いくつかの実施形態においては、Ｃｈａｌｌｅｎｇｅ  ＭＡＣ  ｋｅｙ、ＫＣＭＡＣ：＝ＫＳＭＡＣ、Ｅｎｃｒｙｐｔｉｏｎ  ｋｅｙ  ＫＣＥＮＣ：＝ＫＳＥＮＣ、Ｒｅｓｐｏｎｓｅ  ｓｔａｔｅ  ＳＣＲＥＳ：＝ＳＳＲＥＳ、Ａｃｔｉｖａｔｉｏｎ  ＭＡＣ  ｋｅｙ  ＫＣＡＣＴ：＝  ＫＳＡＣＴというデータ要素が、上述のように、サーバーによって生成されてもよく、且つ、クライアントの事前起動の際に、サーバーからクライアントに転送されてもよい。
【００４６】
起動サブプロトコル
概要
いくつかの実施形態においては、認証トークン又はアプリケーションの初期状態は、先程示したものなどであってもよい。トランザクション署名又は動的クレデンシャル生成を実行しうる前に、認証トークン又はアプリケーションを起動することが必要でありうる。いくつかの実施形態においては、起動は、一度だけ、実行することができるが、これは、パスコードの変更に緊密に関係付けられうる。起動の最終結果は、一方においては、サーバーが、パスコードベリファイア（ＰＶ：Ｐａｓｓｃｏｄｅ  Ｖｅｒｉｆｉｅｒ）の複写を有することができる、というものであってよく、他方においては、クライアントが、パスコードブラインディングデータ要素（ＰＲ）の対応する値の保存を完了した状態でありうる、というものであってもよい。このステップは、サーバーが、ユーザーのパスコートについて知ることがないが、そのパスコードが、サーバーによって受領済みでありうるクレデンシャルの生成のために正しく入力されたかどうかを検証しうるように、実行されてもよい。パスコードベリファイアの値を有しうる、クライアントからの応答メッセージは、だれかが、例えば、スマートフォンを有しうる、認証トークンを盗み、且つ、認証トークンによって生成されたクレデンシャルを観察した場合に、その人物がユーザーのパスコードを想像することができないように、フォワードセキュアキーの下において暗号化されてもよい。
【００４７】
詳細
いくつかの実施形態においては、ユーザーは、サーバーにコンタクトしてもよく、且つ、起動手順を開始することができる。起動手順又は起動プロトコルは、以下のステップを有することができる。
【００４８】
ステップ１：いくつかの実施形態においては、起動メッセージが、サーバーによって生成されてもよく、且つ、以下のように、サーバーからクライアントに転送されてもよい。
Ｓ→Ｃ：      ｛Ｖｅｒｓｉｏｎ，Ｓｅｒｖｉｃｅ  ＩＤ，Ｕｓｅｒ  ＩＤ，ＩＶ，ＥＮＣ（ＫＳＥＮＣ，ＩＶ，｛Ｔｒａｎｓａｃｔｉｏｎ，Ｔｙｐｅ，Ｎｏｎｃｅ，Ａｃｔｉｖａｔｉｏｎ＿ＭＡＣ｝）｝
ここでは、以下のとおりである。
Ｖｅｒｓｉｏｎ＝     ＶＥＲＳＩＯＮ
Ｓｅｒｖｉｃｅ  ＩＤ＝      ＩＤＳＳ
Ｕｓｅｒ  ＩＤ＝     ＩＤＳＵ
ＩＶ＝ ＩＶ（ＣＳ）
Ｔｒａｎｓａｃｔｉｏｎ＝    ＩＥＮＣＯＤＥ（０，  ２１２）
Ｔｙｐｅ＝    ＭＳＧ＿ＡＣＴＩＶＡＴＩＯＮ＿ＣＨＡＬＬＥＮＧＥ
Ｎｏｎｃｅ＝  ＰＲＮＧ（１２８）
Ａｃｔｉｖａｔｉｏｎ＿ＭＡＣ＝     ＨＭＡＣ（ＫＳＭＡＣ，｛Ｖｅｒｓｉｏｎ，Ｔｙｐｅ，Ｔｒａｎｓａｃｔｉｏｎ，Ｎｏｎｃｅ，ＩＶ｝）；いくつかの実施形態においては、Ａｃｔｉｖａｔｉｏｎ＿ＭＡＣは、６４ビットに切り捨てられてもよい。
【００４９】
ステップ２：キーＫＴＡＣＴ及び状態ＳＳＲＥＳが、サーバー上において更新されてもよい。
Ｓ：ＳＳＲＥＳ，ＫＴＡＣＴ：＝ＵＰＤＡＴＥ（ＳＳＲＥＳ）
【００５０】
ステップ３：クライアントは、起動メッセージを受け取ってもよく、且つ、これを暗号解読することができる。
【００５１】
ステップ４：クライアントは、ＩＤＣＵがＩＤＳＵと等しいかどうかを検証することができる。ＩＤＣＵ！＝ＩＤＳＵである場合に、クライアントは、エラーメッセージを表示してもよく、且つ、終了してもよい。
【００５２】
ステップ５：クライアントは、起動メッセージの暗号化された部分を暗号解読してもよく、且つ、Ａｃｔｉｖａｔｉｏｎ＿ＭＡＣを検証してもよく、クライアントは、これに失敗した場合に、終了することができる。
【００５３】
ステップ６：クライアントは、初期ベクトルＩＶからカウンタを抽出してもよく、且つ、（ＩＶから抽出された）そのカウンタ＜＝カウンタの最後の既知の値であるか、或いは、＞カウンタの最後の既知の値＋１００である、場合に、クライアントは、異常終了してもよい。
【００５４】
ステップ７：クライアントは、パスコードブラインディングデータ要素を取得することができる。例えば、クライアントは、パスコードブラインディングデータ要素の値をまだ有していない場合には、パスコードブラインディングデータ要素をランダム数として生成することができる。例えば、特定の一実施形態においては、Ｃ：ＰＲ＝＝＜＞  ｔｈｅｎ  ＰＲ：＝ＰＲＮＧ（１２８）である。
【００５５】
ステップ８：クライアントは、パスコードの値を提供するようにユーザーに要求してもよく、且つ、ユーザーによって提供されたパスコードをキャプチャしてもよい。いくつかの実施形態においては、ユーザーは、確認のためにパスコードを二度にわたって提供するように要求されてもよく、且つ、クライアントは、ユーザーによって提供されたパスコードの２つの値が一貫性を有することを検証するように適合されていてもよい。
【００５６】
ステップ９：状態及びキーがクライアント上において更新されてもよい（これは、ＩＶから抽出されたカウンタの値とカウンタの最後の既知の値の間の差に応じて反復されてもよい）。
Ｃ：ＳＣＲＥＳ，Ｋ：＝ＵＰＤＡＴＥ（ＳＣＲＥＳ）
【００５７】
ステップ１０：応答が生成されている。
Ｃ→Ｓ：      ＥＮＣ（Ｋ，０，｛Ｖ，ＨＭＡＣ（ＫＣＡＣＴ，｛Ｖｅｒｓｉｏｎ，Ｔｙｐｅ，Ｔｒａｎｓａｃｔｉｏｎ，Ｖ｝）
ここでは、以下のとおりである。
Ｖｅｒｓｉｏｎ＝   ＶＥＲＳＩＯＮ
Ｔｙｐｅ＝  ＭＳＧ＿ＡＣＴＩＶＡＴＩＯＮ＿ＲＥＳＰＯＮＳＥ
Ｔｒａｎｓａｃｔｉｏｎ＝  ＩＥＮＣＯＤＥ（０，２１２）
Ｖ＝ ＨＭＡＣ（ＰＲ，ｐａｓｓｃｏｄｅ）（３０ビットに切り捨てられる）
ＨＭＡＣ（ＫＣＡＣＴ，ｍｓｇ）は、１５ビットに切り捨てられる。
【００５８】
ステップ１１：Ｓ：サーバーは、応答をＫＴＡＣＴによって暗号解読してもよく、且つ、これをＫＣＡＣＴによって検証してもよく、且つ、ＰＶ：＝Ｖと設定してもよい。
【００５９】
認証サブプロトコル
概要
この認証サブプロトコルは、ユーザーが、自身を認証することを許容するべく、或いは、特定のトランザクションを認可することを許容するべく、実行されてもよい。結果は、例えば、ユーザーによって提供された認証クレデンシャルの検証に成功した際に、ユーザーが正しいトランザクション詳細を観察していると共に正しいパスコードを入力したとサーバーが結論付けるというものであってもよい。サーバーは、パスコード自体について知ってはいない。すべての通信を記録している盗聴者も、電話機を盗んだ後においてさえ、（ＭＡＣキーが、使用の後に破棄されていることから）パスコードを取得可能ではない。
【００６０】
詳細
ステップ１：いくつかの実施形態においては、ユーザーは、サーバーにコンタクトしてもよく、且つ、認証又はトランザクションを開始することができる。
【００６１】
ステップ２：クライアントは、動的変数の値を取得することができる。いくつかの実施形態においては、動的変数の値は、クライアントによって維持されているカウンタに基づいたものであってもよい。いくつかの実施形態においては、クライアントは、そのこのようなカウンタの値をサーバーによって維持されている対応するカウンタ値と同期化させることができる。いくつかの実施形態においては、動的変数の値は、例えば、クライアントがサーバーからメッセージ内において受け取りうる外部データ要素に基づいたものであってもよい。外部データ要素は、例えば、サーバーによって生成されうるチャレンジ及び／又はノンスを有することができる。又、外部データ要素は、例えば、ユーザーによって認可されるべきトランザクションを表すトランザクションデータを有することもできる。いくつかの実施形態においては、サーバーは、例えば、メッセージ認証コード（ＭＡＣ）を追加することにより、メッセージを認証することができる。又、いくつかの実施形態においては、サーバーは、サーバーメッセージを暗号化することもできる。例えば、特定の一実施形態においては、サーバーは、チャレンジメッセージを生成してもよく、且つ、クライアントに以下のように送信してもよい。
Ｓ−＞  Ｃ：  ｛Ｖｅｒｓｉｏｎ，  Ｓｅｒｖｉｃｅ  ＩＤ，Ｕｓｅｒ  ＩＤ，ＩＶ，
ＥＮＣ（ＫＳＥＮＣ，ＩＶ，｛Ｔｒａｎｓａｃｔｉｏｎ，Ｔｙｐｅ，Ｎｏｎｃｅ，Ｃｈａｌｌｅｎｇｅ＿ＭＡＣ｝）｝
ここでは、以下のとおりである。
Ｖｅｒｓｉｏｎ＝     ＶＥＲＳＩＯＮ
Ｓｅｒｖｉｃｅ  ＩＤ＝      ＩＤＳＳ
Ｕｓｅｒ  ＩＤ＝     ＩＤＳＵ
ＩＶ＝ ＩＶ（ＣＳ）
トランザクション＝認可されるべきトランザクションのエンコーディングされた詳細を有していてもよく、いくつかのケースにおいては、「Ｔｒａｎｓａｃｔｉｏｎ」は、ユーザーにとっては無意味でありうる（ランダムな）チャレンジによってエンコーディングされてもよく、或いは、これは、例えば、認証サブプロトコルが、特定のトランザクションの認可のためにではなく、ユーザーの認証のために使用されている場合には、既定の値によってエンコーディングされてもよい。
Ｔｙｐｅ＝ＭＳＧ＿ＣＨＡＬＬＥＮＧＥ
Ｎｏｎｃｅ＝  ＰＲＮＧ（１２８）
Ｃｈａｌｌｅｎｇｅ＿ＭＡＣ＝       ＨＭＡＣ（ＫＳＭＡＣ，｛Ｖｅｒｓｉｏｎ，Ｔｙｐｅ，Ｔｒａｎｓａｃｔｉｏｎ，Ｎｏｎｃｅ，ＩＶ｝），      ６４ビットに切り捨てられる
【００６２】
ステップ３：キーＫ及び状態ＳＳＲＥＳをサーバー上において更新することができる。
Ｓ：ＳＳＲＥＳ，Ｋ：＝ＵＰＤＡＴＥ（ＳＳＲＥＳ）
【００６３】
ステップ４：サーバーは、予想応答を生成してもよく（これは、いくつかの実施形態においては、３０ビットに切り捨てられてもよい）、予想応答は、サーバーが後からクライアントから受け取りうる認証クレデンシャルと比較されるべきクレデンシャル基準値として機能することができる。
Ｓ：Ｅ＝ＨＭＡＣ（Ｋ，｛Ｖｅｒｓｉｏｎ，Ｔｙｐｅ，Ｔｒａｎｓａｃｔｉｏｎ，Ｎｏｎｃｅ，ＩＶ，ＰＶ｝）
ここでは、以下のとおりである。
Ｖｅｒｓｉｏｎ＝     ＶＥＲＳＩＯＮ
Ｔｙｐｅ＝ＭＳＧ＿ＲＥＳＰＯＮＳＥ
トランザクション、ノンス、ＩＶは、チャレンジメッセージから取得される。
【００６４】
ステップ５：クライアントは、受け取られたチャレンジメッセージを暗号解読することができる。
【００６５】
ステップ６：Ｃ：ＩＤＣＵ！＝ＩＤＳＵである場合に、エラーメッセージを表示し、且つ、終了する。
【００６６】
ステップ７：クライアントは、受け取られたチャレンジメッセージを暗号解読してもよく、且つ、メッセージの発信元を認証するべく、Ｃｈａｌｌｅｎｇｅ＿ＭＡＣを検証してもよい。この検証に失敗した場合には、クライアントは、異常終了することができる。
【００６７】
ステップ８：（ＩＶから抽出された）カウンタ＜＝最後のカウンタであるか、或いは、＞最後のカウンタ＋１００である場合に、クライアントは、異常終了することができる。
【００６８】
ステップ９ａ：クライアントは、トランザクションにおいてエンコーディングされたトランザクションデータをユーザーに提示してもよく、且つ、提示されたトランザクションデータを認可するようにユーザーに要求することができる。トランザクションが（ハードコーディングされた値又はハッシュ値などの）有意なデータを含んでいない場合には、このステップは、スキップされてもよい。ユーザーが、提示されたトランザクションデータを認可しない場合には、クライアントは、異常終了することができる。
【００６９】
ステップ９ｂ：クライアントは、パスコードを提供するようにユーザーに要求することができる。ユーザーがパスコードを提供しない場合には、クライアントは、異常終了することができる。いくつかの実施形態においては、ユーザーは、パスコードを提供することにより、（例えば、提示されたトランザクションデータの）認可を黙示的に通知することができる。
【００７０】
ステップ１０：キーＫ及び状態ＳＣＲＥＳをクライアント上において更新することができる（これは、クライアントの状態をサーバーの状態と同期させるべく、カウンタに基づいて、いくつかの回数にわたって、反復されてもよい）。
Ｃ：ＳＣＲＥＳ，Ｋ：＝ＵＰＤＡＴＥ（ＳＣＲＥＳ）；
【００７１】
ステップ１１：クライアントは、サーバーからチャレンジメッセージを受け取るのに応答して、認証クレデンシャルを生成してもよく、且つ、クライアントは、以下のように、生成された認証クレデンシャルをサーバーに返すことができる。
Ｃ−＞Ｓ：ＨＭＡＣ（Ｋ，｛Ｖｅｒｓｉｏｎ，Ｔｙｐｅ，Ｔｒａｎｓａｃｔｉｏｎ，Ｎｏｎｃｅ，ＩＶ，Ｖ｝）
ここでは、以下のとおりである。
Ｖｅｒｓｉｏｎ＝     ＶＥＲＳＩＯＮ（８ビットになるように、左側の桁にゼロを充填することができる）
Ｔｙｐｅ＝ＭＳＧ＿ＲＥＳＰＯＮＳＥ
トランザクション、ノンス、ＩＶは、チャレンジメッセージから取得される。
Ｖ＝ＨＭＡＣ（ＰＲ，ｐａｓｓｃｏｄｅ）
いくつかの実施形態においては、生成されたクレデンシャルは、３０ビットに切り捨てられてもよい。
【００７２】
ステップ１２：サーバーは、認証クレデンシャルが予想応答Ｅとマッチングしているかどうかを検証することができる。いくつかの実施形態においては、サーバーは、認証クレデンシャルの検証に成功したかどうかを通知する信号を生成することができる。
【００７３】
可能な変形
いくつかの実施形態においては、完全を期すべく、ユーザーＩＤ及び／又はサービスＩＤがＭＡＣ内に包含されていてもよい。
【００７４】
いくつかの実施形態においては、メッセージタイプは、メッセージの残りの部分が暗号解読される方式を決定するべく使用されうるように、メッセージの先頭に移動されてもよい。
【００７５】
本発明のいくつかの実施形態においては、パスコードは、例えば、ＰＩＮ又はパスワードなどの、ユーザーによって提供される秘密情報を有することができる。その他の実施形態においては、パスコードは、その他の情報を有していてもよく、その他の情報は、ユーザーに関係付けられていてもよく、或いは、ユーザーに固有のものであってもよく、且つ、例えば、いくつかの種類の生体計測情報などのように、機密的特性を有しうると共に秘匿状態において留まることを要する。
【００７６】
本発明の以上の且つその他の特徴及び利点については、以下の添付図面において示されている本発明の実施形態に関する以下の更に具体的な説明から、明らかとなろう。
【図面の簡単な説明】
【００７７】
【図１】本発明の一態様による例示用の装置を概略的に示す。
【図２】本発明の一態様による例示用のシステムを概略的に示す。
【図３】本発明の一実施形態による例示用の方法を概略的に示す。
【図４】本発明の一態様による動的認証クレデンシャルを検証する例示用の方法を概略的に示す。
【発明を実施するための形態】
【００７８】
以下、本発明のいくつかの実装形態について説明する。特定の実装形態が説明されているが、これは、例示を目的として実行されるものに過ぎないことを理解されたい。当業者は、本発明の精神及び範囲を逸脱することなしに、その他のコンポーネント及び構成が使用されうることを認識するであろう。
【００７９】
図１は、本発明の一態様による本発明の例示用の装置又はトークン（１００）を概略的に示している。
【００８０】
いくつかの実施形態においては、装置又はトークン（１００）は、強力認証トークンを有することができる。いくつかの実施形態においては、装置又はトークンは、例えば、その主な又は唯一の機能が、装置の正当なユーザー用の認証サービスを提供する、というものである、専用の電子ハードウェア装置を有することができる。いくつかの実施形態においては、装置又はトークン（１００）は、ＰＣ（パーソナルコンピュータ）、タブレットコンピュータ、スマートフォン、又はスマートウォッチなどの、パーソナル汎用演算装置を有することができる。いくつかの実施形態においては、装置又はトークン（１００）は、本説明のどこか別のところにおいて更に詳細に記述されている強力認証トークン又は認証クライアントのいずれかを有することができる。いくつかの実施形態においては、装置又はトークン（１００）は、本説明のどこか別のところで更に詳細に記述されている強力認証トークン又は認証クライアントのいずれかによって実行される方法ステップ又は動作のいずれかを実行するように適合されていてもよい。
【００８１】
装置又はトークン（１００）は、人間ユーザー入力インターフェイス（１２０）と、人間ユーザー出力インターフェイス（１３０）と、データ入力インターフェイス（１４０）と、データプロセッサ（１５０）と、メモリコンポーネント（１６０）と、動的変数の値を提供するためのコンポーネント（１７０）と、を有することができる。
【００８２】
プロセッサ（１５０）及びメモリ（１６０）
トークンは、例えば、本説明のどこか別のところにおいて更に詳細に記述されている強力認証トークン又は認証クライアントのいずれかに帰される関数の１つ又は複数を実装するべく、データ処理命令の組を実行するように適合されうるデジタルデータ処理コンポーネント（１５０）を有することができる。いくつかの実施形態においては、データ処理コンポーネント（１５０）は、例えば、１つ又は複数のマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ：Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）チップ、フィールドプログラム可能なゲートアレイ（ＦＰＧＡ：Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、アプリケーション固有の集積回路（ＡＳＩＣ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などを有することができる。
【００８３】
トークンは、メモリコンポーネント（１６０）を有することができる。メモリコンポーネント（１６０）は、デジタルデータ処理コンポーネント（１５０）に接続されていてもよい。いくつかの実施形態においては、メモリコンポーネントは、データ処理コンポーネントによって実行されるべきソフトウェア又はファームウェアを保存するように適合されたプログラムメモリコンポーネントを有することができる。いくつかの実施形態においては、トークンがサポートしている機能は、そのメモリ内において保存されているソフトウェア又はファームウェアによって定義されうる。
【００８４】
いくつかの実施形態においては、メモリコンポーネント（１６０）は、データを永久的又は一時的に保存するように適合されたデータメモリコンポーネントを有することができる。いくつかの実施形態においては、データメモリコンポーネントは、暗号キー又はパスコードブラインディングデータ要素などの秘密データを安全に保存するように適合されていてもよい。いくつかの実施形態においては、データメモリコンポーネントは、複数のトークンインスタンスのデータを保存するように適合されていてもよい。
【００８５】
メモリコンポーネントは、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）メモリ、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）メモリ、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）メモリ、ワンタイムプログラム可能メモリ、フラッシュメモリ、半導体メモリ、ハードディスクなどを有することができる。
【００８６】
トークンは、トークンが、例えば、パスコードブラインディングデータ要素を生成するべく、使用しうるランダム又は疑似ランダム数生成器を更に有することができる。
【００８７】
ユーザーインターフェイス（１２０、１３０）
いくつかの実施形態においては、強力認証トークンは、例えば、ユーザーとの間において、データ、情報、及び／又はコマンドを交換するべく、ユーザーとやり取りするためのユーザーインターフェイス（１２０、１３０）を有することができる。ユーザーインターフェイス（１２０、１３０）は、デジタルデータ処理コンポーネント（１５０）に接続されていてもよい。
【００８８】
いくつかの実施形態においては、強力認証トークンのユーザーインターフェイスは、情報及び／又はデータ（ユーザー用の命令又はメッセージ、ユーザーによって承認されるべきトランザクションデータ、強力認証トークンによって生成された動的クレデンシャルなど）を強力認証トークンのユーザーに提示するための出力ユーザーインターフェイス（１３０）を有することができる。いくつかの実施形態においては、出力ユーザーインターフェイスは、例えば、ディスプレイ（１３０）又はオーディオ出力インターフェイスを有することができる。いくつかの実施形態においては、強力認証トークンのユーザーインターフェイスは、例えば、（チャレンジ又はトランザクションデータのような）入力データ又は（確認、認可、又は取り消しのような）命令又はパスコードなどの、入力をユーザーから受け取るための入力ユーザーインターフェイス（１２０）を有することができる。いくつかの実施形態においては、入力ユーザーインターフェイスは、例えば、キーボード（１２０）を有することができる。いくつかの実施形態においては、強力認証トークンのユーザーインターフェイスは、ユーザー出力インターフェイス及びユーザー入力インターフェイスの両方の機能を提供するように適合されうるタッチスクリーンを有することができる。
【００８９】
データ入力インターフェイス（１４０）
いくつかの実施形態においては、強力認証トークンは、デジタルデータ入力インターフェイスを有することができる。データ入力インターフェイス（１４０）は、デジタルデータ処理コンポーネント（１５０）に接続されていてもよい。いくつかの実施形態においては、強力認証トークンのデジタルデータ入力インターフェイスは、デジタルデータメッセージを受け取るように適合されていてもよい。いくつかの実施形態においては、デジタルデータ入力インターフェイスは、例えば、インターネット接続を有することができる。いくつかの実施形態においては、デジタルデータ入力インターフェイスは、例えば、ユニバーサルシリアルバス（ＵＳＢ）接続などのローカル有線データ接続を有することができる。いくつかの実施形態においては、デジタルデータ入力インターフェイスは、例えば、ＢＬＵＥＴＯＯＴＨ又はＷｉ−Ｆｉインターフェイスなどの、ローカル無線データインターフェイスを有することができる。いくつかの実施形態においては、デジタルデータ入力インターフェイスは、モバイルデータ通信ネットワークインターフェイスを有することができる。いくつかの実施形態においては、強力認証トークンは、例えば、スマートフォンを有することができる。いくつかの実施形態においては、データ入力インターフェイスは、光学画像取得コンポーネント（１４０）を有することができる。いくつかの実施形態においては、光学画像取得コンポーネントは、カメラを有することができる。いくつかの実施形態においては、強力認証トークンは、デジタルデータメッセージによってエンコーディングされうる画像を光学画像取得コンポーネントによってキャプチャするように適合されていてもよい。いくつかの実施形態においては、画像は、２次元バーコードを有することができる。いくつかの実施形態においては、画像のフォーマットは、１つの規格において定義されていてもよい。例えば、いくつかの実施形態においては、光学画像は、ＱＲコードであってもよい。
【００９０】
その他の実施形態においては、デジタルデータ入力インターフェイスは、トークン用のメッセージ又はコマンドによってエンコーディングされうる音響信号をキャプチャするように適合された音響インターフェイスを有することができる。いくつかの実施形態においては、音響インターフェイスは、マイクロフォンを有することができる。いくつかの実施形態においては、音響インターフェイスは、アナログ電子信号を、例えば、上述のデジタルデータ処理コンポーネントによって更に処理されうるデジタル信号に変換するべく、アナログ−デジタルコンバータを有することができる。
【００９１】
いくつかの実施形態においては、装置又はトークン（１００）は、本説明のどこか別のところにおいて更に詳細に説明されているように、例えば、アクセス装置によって表示されうる、例えば、２次元バーコードの形態において、認証サーバーにより、生成されうる且つ装置又トークンに送信されうる、本説明のどこか別のところにおいて更に詳細に記述されている、認証メッセージのいずれかを受け取るべく、データ入力インターフェイス（１４０）を使用するように適合されていてもよい。
【００９２】
クレデンシャル生成
トークンは、本説明のどこか別のところにおいて更に詳細に説明されている動的クレデンシャルを生成するように適合されていてもよい。いくつかの実施形態においては、データ処理コンポーネント（１５０）は、動的クレデンシャルを生成するべく、暗号計算を実行するように適合されていてもよい。いくつかの実施形態においては、トークンは、メモリコンポーネント（１６０）内において永久的又は一時的に保存されうる、或いは、トークンが、メモリコンポーネント（１６０）内において永久的又は一時的に保存されているデータから導出しうる、暗号キーを使用することにより、動的クレデンシャルを生成するように適合されていてもよい。いくつかの実施形態においては、トークンは、メモリコンポーネント（１６０）内において保存されているトークンインスタンスの一部分であるデータを使用することにより、動的クレデンシャルを生成するように適合されていてもよい。いくつかの実施形態においては、トークンは、動的クレデンシャルを生成するべく、対称型暗号アルゴリズムを使用するように適合されていてもよい。いくつかの実施形態においては、この動的クレデンシャルを生成するための暗号アルゴリズムは、１つ又は複数の対称型秘密暗号クレデンシャル生成キーによってパラメータ化されていてもよい。いくつかの実施形態においては、クレデンシャル生成キーは、例えば、クレデンシャル検証サーバー又は認証サーバーなどの、サーバーと共有されていてもよい。
【００９３】
いくつかの実施形態においては、トークンは、トークンによって提供される内部値を有しうる動的変数を使用することにより、動的クレデンシャルを生成するように適合されていてもよい。例えば、いくつかの実施形態においては、トークンは、クロック（１７０）を有していてもよく、且つ、トークンは、そのクロックによって提供される時間値を内部値として使用することができる。いくつかの実施形態においては、トークンは、カウンタを維持していてもよく、且つ、トークンは、そのインスタンス用の動的クレデンシャルを生成するべく、且つ、動的クレデンシャルを生成するためにトークンがそのカウンタの値を使用するたびに（例えば、増分又は減分することにより）そのカウンタの値を更新するべく、そのカウンタの値を内部値として使用するように適合されていてもよい。
【００９４】
いくつかの実施形態においては、トークンは、トークンに提供される外部値を有しうる動的変数を使用することにより、動的クレデンシャルを生成するように適合されていてもよい。いくつかの実施形態においては、このような外部値は、サーバーによって生成されたチャレンジ又はノンス或いは署名されるべきトランザクションデータを有することができる。いくつかの実施形態においては、外部値は、トークンのユーザー入力インターフェイスを使用することにより、ユーザーによって手動でトークンに提供されてもよい。例えば、トークンは、トークンに含まれているキーボード上においてユーザーが文字のストリングとして入力しうるチャレンジ又はトランザクションデータをキャプチャすることができる。いくつかの実施形態においては、外部値は、そのデータ入力インターフェイスを利用してトークンによって受け取られるメッセージ又はコマンド内に含まれた状態において、提供されている。
【００９５】
いくつかの実施形態においては、トークンは、生成された動的クレデンシャルをユーザーに提示するように適合されていてもよい。例えば、いくつかの実施形態においては、トークンは、生成された動的クレデンシャルをそのディスプレイ上において可読文字のストリングとして表示することができる。いくつかの実施形態においては、ストリングは、デジタル文字のみを有することができる。その他の実施形態においては、ストリングは、英数文字を有することができる。
【００９６】
セキュア専用ハードウェアトークン
いくつかの実施形態においては、トークン（１００）は、専用ハードウェア装置であってもよい。いくつかの実施形態においては、トークンは、（コンピュータに基づいた又は自動化されたアプリケーションでありうる）アプリケーションに対するユーザーのアクセスを保護するべく、或いは、このようなアプリケーションとの間におけるユーザーのやり取りを保護するべく、方法において使用されるように専用となっていてもよい。いくつかの実施形態においては、認証装置の主な目的は、アプリケーションに対するユーザーのアクセスを保護するべく、或いは、このようなアプリケーションとの間におけるユーザーのやり取りを保護するべく、方法において使用される、というものである。いくつかの実施形態においては、セキュリティ装置としてのその使用に対する認証装置の専用化を保証するべく、認証装置は、そのファームウェアの変更が不可能となるように適合されていてもよい。いくつかの実施形態においては、セキュリティ装置としてのその使用に対する認証装置の専用化を保証するべく、そのファームウェアに対する任意の変更又は更新は、認可された信頼可能な管理者が認証装置のファームウェアを更新又は変更できることを保証するように設計されたセキュアファームウェア更新プロトコルを通じてのみ、可能である。この結果、信頼可能な管理者は、アプリケーションに対するユーザーのアクセスを保護するべく、或いは、このようなアプリケーションとの間におけるユーザーのやり取りを保護するべく、方法におけるその使用に対する認証装置の専用化を元に戻す又は危険に晒すことになるファームウェア更新が発生しないことを保証することができる。ユーザーが、信頼可能な管理者によって認可されてはいない余分のソフトウェアをインストールすることができる装置は、専用の装置と見なすことができない。その主な目的が通信機能を提供するというものである装置は、アプリケーションに対するユーザーのアクセス及びこれとの間におけるやり取りを保護するために方法において使用されるべき専用化された装置と見なすことができない。汎用ＰＣ、ラップトップ、タブレットコンピュータ、及びスマートフォンは、専用の装置と見なすことができない。
【００９７】
いくつかの実施形態においては、トークン（１００）は、セキュアハードウェア装置である。いくつかの実施形態においては、セキュアハードウェア装置は、セキュアハードウェア装置を改竄するための試みの検出を保証するように、且つ／又は、これに対して抵抗するように、適合されている。いくつかの実施形態においては、セキュアハードウェア装置のハウジングは、ハウジングの開放に対して抵抗するように、且つ／又は、ユーザーがハウジングの変形を通じてハウジングの開放の試み（改竄証拠）に気付くことになる確率を増大させるように、適合されている。いくつかの実施形態においては、ハウジングを一緒に構成している部品は、これらの部品を取り外す試みが、通常は、ハウジングの明らかな変形に結び付くことになるように、１つに溶接又は接着されていてもよい。いくつかの実施形態においては、セキュアハードウェアは、ハウジングの開放を検出するスイッチを有する。いくつかの実施形態においては、セキュアハードウェア装置は、改竄の試みを検出した際に適切な動作を実行するように適合されている。いくつかの実施形態においては、セキュアハードウェア装置は、暗号キーやパスコードブラインディングデータ要素などの特定の機密性を有するデータを消去してもよく、或いは、セキュアハードウェア装置は、セキュアハードウェア装置を改善するための推定される試みを検出した際に、（恐らくは、不可逆的に）、エラーモードに入ってもよく、或いは、機能を停止してもよい。
【００９８】
セキュアハードウェア装置は、セキュアユーザー出力インターフェイス（例えば、セキュアディスプレイ）と、セキュアユーザー入力インターフェイス（例えば、セキュアキーボード）と、を有することができる。いくつかの実施形態においては、セキュアハードウェア装置は、セキュアハードウェア装置によって完全に制御されているという点において、且つ、セキュアハードウェア装置の外部のプロセスによってユーザーにデータ又は情報を提示するように使用することができないという点において、或いは、セキュアハードウェア装置により、認可され、且つ、制御されている場合にのみ、セキュアハードウェア装置の外部のプロセスによってユーザーにデータ又は情報を提示するべく使用されうるという点において、安全である出力インターフェイスを有する。いくつかの実施形態においては、セキュアハードウェア装置は、セキュアハードウェア装置によって完全に制御されているという点において、且つ、セキュアハードウェア装置の外部のプロセスによってユーザーからデータ又は情報を取得するべく使用することができないという点において、或いは、セキュアハードウェア装置により、認可され、且つ、制御されている場合にのみ、セキュアハードウェア装置の外部のプロセスによってユーザーからデータ又は情報を取得するべく使用することができるという点において、安全であるユーザー入力インターフェイスを有する。いくつかの実施形態においては、セキュアユーザー入力及び出力インターフェイスのセキュリティは、そのファームウェアに対するなんらの変更をも許容しない、或いは、セキュアハードウェア装置が信頼可能な供給源からの認可されたファームウェア更新のみを受け付けることを保証するセキュアプロトコルを通じたそのファームウェアに対する変更のみを許容するセキュアファームウェア更新メカニズムを提供している、セキュアハードウェア装置によって維持されている。
【００９９】
いくつかの実施形態においては、トークンは、専用のハードウェア装置ではない。いくつかの実施形態においては、トークンは、電子消費者装置を有していてもよく、電子消費者装置は、その主な目的が、認証機能を提供するというものでなくてもよく、且つ、本説明において記述されている強力認証トークン機能を提供するためのソフトウェアを有することができる。例えば、いくつかの実施形態においては、トークンは、本説明において記述されている強力認証トークン機能を提供する認証アプリケーションを有するタブレットコンピュータ又はスマートフォンを有することができる。
【０１００】
フォームファクタ
いくつかの実施形態においては、トークンは、トークンに含まれている電子コンポーネントの少なくともいくつかがその上部において配置されうる、プラスチック回路基板（ＰＣＢ：Ｐｌａｓｔｉｃ  Ｃｉｒｃｕｉｔ  Ｂｏａｒｄ）を有することができる。その他の電子コンポーネントは、（例えば、電気ワイヤによって）回路基板上において配置されたコンポーネントにガルバニック接続されていてもよい。いくつかの実施形態においては、トークンのすべての電子コンポーネントは、単一のハウジング内において含まれている。いくつかの実施形態においては、ハウジングは、プラスチックから、又は金属から、又は材料の組合せから、製造されていてもよい。いくつかの実施形態においては、認証トークンは、モノリシックな装置であってもよい。本説明の文脈においては、これは、認証トークンに含まれている動的クレデンシャルを生成するデジタル処理コンポーネント、インスタンスデータを保存するメモリコンポーネント、入力ユーザーインターフェイス、出力ユーザーインターフェイス、及びデータ入力インターフェイスが、いずれも、単一の物理的装置に含まれていることを意味している。いくつかの実施形態においては、ユーザーは、認証トークンの通常の動作の一部分として、これらのコンポーネントを除去することができない。いくつかの実施形態においては、これらのコンポーネントは、認証トークンに対する不可逆な変更をもたすことなしには、除去することができない。いくつかの実施形態においては、これらのコンポーネントは、認証トークンに対する永久的な損傷を伴うことなしには、除去することができない。
【０１０１】
いくつかの実施形態においては、トークンは、複数の電子装置を有していてもよく、これにより、トークンの様々な機能は、異なる装置によって提供されていてもよい。例えば、いくつかの実施形態においては、トークンは、スマートカード及びリーダー装置などの、セキュア要素を有していてもよく、これにより、セキュア要素は、秘密キーに関係するデータ及び／又はパスコードブラインディングデータ要素などのセキュリティ機密データ要素の保存を提供することができる。セキュア要素は、動的認証クレデンシャルの生成用の暗号計算の一部分又はすべてを提供するように更に適合されていてもよい。リーダーは、例えば、ユーザー入力インターフェイス及びユーザー出力インターフェイス、並びに、データ入力インターフェイスを有することができる。セキュア要素は、リーダーと通信するためのデータ通信インターフェイスを有していてもよく、且つ、リーダーは、セキュア要素と通信するための補完的なデータ通信インターフェイスを有していてもよい。セキュア要素及びリーダーは、協働するように、且つ、本説明のどこか別のところにおいて記述されているトークンの機能のすべてを一緒に提供するように、適合されていてもよい。
【０１０２】
サイズ及び重量
いくつかの実施形態においては、トークンは、トークンが、携帯可能な、ポケットサイズの、ハンドヘルド型の、装置であると見なされうるような、重量及び空間的寸法を有する。いくつかの実施形態においては、リーダーは、トークンが適度な費用で郵便を通じてユーザーに送付されうるような、重量及び空間的寸法を有する。例えば、いくつかの実施形態においては、認証装置は、２ｃｍ未満の厚さ、１０ｃｍ未満の幅、１５ｃｍ未満の長さ、及び２００グラム未満の重量を有することができる。その他の実施形態においては、認証装置は、１．５ｃｍ未満の厚さ、７ｃｍ未満の幅、１３ｃｍ未満の長さ、及び１１０グラム未満の重量を有することができる。いくつかの実施形態においては、認証装置の長さ及び幅は、１０パーセント以下だけ、標準的なフルサイズクレジットカードの長さ及び幅をそれぞれ超過していてもよい。いくつかの実施形態においては、認証装置は、標準的なフルサイズクレジットカードの長さ及び幅を有することができる。いくつかの実施形態においては、認証装置は、標準的なフルサイズクレジットカードに適用可能であるマージン内において、標準的なフルサイズクレジットカードの長さ、幅、及び厚さを有することができる（例えば、ＩＳＯ／ＩＥＣ７８１０によって規定されているＩＤ−１サイズのスマートカードの寸法を有する）。
【０１０３】
電源
いくつかの実施形態においては、認証装置は、電力の自律的供給源を有する。いくつかの実施形態においては、電源は、電池を有することができる。いくつかの実施形態においては、電池は、交換可能であってもよい。
【０１０４】
図２は、本発明の一態様による本発明の例示用のシステム（２００）を概略的に示している。
【０１０５】
いくつかの実施形態においては、システムは、強力認証トークン（２２０）と、認証サーバー（２３０）と、を有することができる。いくつかの実施形態においては、システムは、アプリケーションサーバー（２５０）を更に有することができる。いくつかの実施形態においては、システムは、アクセス装置（２６０）を更に有することができる。いくつかの実施形態においては、システムは、コンピュータネットワーク（２７０）を更に有することができる。
【０１０６】
いくつかの実施形態においては、強力認証トークン（２２０）は、本説明のどこか別のところにおいて更に詳細に記述されている強力認証トークン又は認証クライアントのいずれかを有することができる。具体的には、強力認証トークン（２２０）は、図１との関連において記述されている装置（１００）を有することができる。
【０１０７】
いくつかの実施形態においては、認証サーバー（２３０）は、認証サーバー又はクレデンシャル検証サーバー又は本説明のどこか別のところにおいて更に詳細に記述されているエンティティのいずれかを有することができる。いくつかの実施形態においては、認証サーバー（２３０）は、認証サーバー又はクレデンシャル検証サーバー又は本説明のどこか別のところにおいて更に詳細に記述されているエンティティのいずれかによって実行される方法ステップ又は動作のいずれかを実行するように適合されていてもよい。認証サーバー（２３０）は、サーバーコンピュータなどの１つ又は複数の演算装置を有することができる。いくつかの実施形態においては、認証サーバーは、暗号計算を実行するように適合されていてもよい。いくつかの実施形態においては、認証サーバーは、クライアント又はトークンによって生成された動的認証クレデンシャルの有効性を検証するように適合されていてもよい。いくつかの実施形態においては、認証サーバーは、ユーザー及び／又はトークンに固有の情報に対するアクセスを有する。このようなユーザー及び／又はトークン固有の情報は、例えば、ユーザー識別データ要素（ユーザーｉｄ）、パスコードベリファイアなどの秘密データ、トークンが（恐らくは）動的認証クレデンシャルを生成するべく使用した暗号キーの値を生成又は取得するためのキーに関係したデータを含みうる。例えば、いくつかの実施形態においては、トークンは、トークンによって維持されている状態変数の値の関数として暗号キーを生成してもよく、且つ、認証サーバーは、トークンの状態変数の値を表す状態変数に対するアクセスを有することができる。いくつかの実施形態においては、認証サーバーは、認証サーバーに含まれうる又はこれに接続されうるデータベース内において、これらのデータ要素を保存することができる。
【０１０８】
認証サーバー（２５０）は、リモートアクセス可能なコンピュータに基づいたアプリケーションのサーバー部分をホスティングするように適合されていてもよい。ユーザーとリモートアクセス可能なコンピュータに基づいたアプリケーションの間のやり取りは、本説明のどこか別のところにおいて更に詳細に記述されている認証方法のいずれかと共に、認証トークン（２２０）及び認証サーバー（２３０）を使用することにより、保護することができる。アプリケーションサーバー（２５０）は、ウェブサーバーを有していてもよく、且つ、リモートアクセス可能なコンピュータに基づいたアプリケーションは、例えば、ウェブバンキング又はインターネットバンキングアプリケーションなどの、ウェブベースのアプリケーションであってもよい。
【０１０９】
アクセス装置（２６０）は、ユーザー（２９０）がアプリケーションサーバー（２５０）によってホスティングされたリモートアクセス可能なコンピュータに基づいたアプリケーションにアクセスし且つこれとやり取りすることを許容するように適合されていてもよい。いくつかの実施形態においては、アクセス装置（２６０）は、例えば、アプリケーションサーバー（２５０）によってホスティングされているリモートアクセス可能なコンピュータに基づいたアプリケーションとやり取りするべく、ウェブブラウザを有することができる。いくつかの実施形態においては、アクセス装置（２６０）は、例えば、ＰＣ又はタブレットコンピュータ又はスマートフォンを有することができる。
【０１１０】
いくつかの実施形態においては、コンピュータネットワーク（２７０）は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）及び／又はＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）及び／又はインターネット、並びに／或いは、例えば、携帯電話ネットワークなどの無線データ通信ネットワークを有することができる。コンピュータネットワーク（２７０）は、強力認証トークン（２２０）、認証サーバー（２３０）、アプリケーションサーバー（２５０）、及びアクセス装置（２６０）などの、２つ以上の演算装置をリンクしていてもよく、且つ、これらの演算装置が、互いに通信し、且つ、例えば、本説明のどこか別のところにおいて更に詳細に記述されている、認証クライアント又は認証トークンのいずれか、並びに、認証サーバーのいずれか、によって交換される、様々なメッセージのいずれかなどの、データ及びメッセージを交換することを可能にするように、適合されていてもよい。
【０１１１】
図３は、動的クレデンシャルを生成する例示用の方法（３００）を概略的に示している。
【０１１２】
いくつかの実施形態においては、動的クレデンシャルを生成する方法は、ユーザーからパスコード値を取得するステップ（３１０）と、パスコードブラインディングデータ要素の保存されている値を取得するステップ（３２０）と、取得されたパスコード値とパスコードブラインディングデータ要素の取得された値を暗号方式によって組み合わせることにより、パスコードベリファイアを算出するステップ（３３０）と、算出されたパスコードベリファイアを保存されている秘密キー及び動的変数と暗号方式によって組み合わせることにより、動的クレデンシャルを算出するステップ（３４０）と、を有する。
【０１１３】
いくつかの実施形態においては、秘密キーは、動的変数を有することができる。いくつかの実施形態においては、方法は、秘密キーの値を新しい値によって更新するステップを更に有することができる。いくつかの実施形態においては、方法は、状態変数の古い値に基づいて状態変数の新しい値を算出することにより、状態変数を更新するステップと、状態変数の古い値を消去するステップと、キーの古い変数を消去するステップと、状態変数の新しい値に基づいて秘密キーの新しい変数を算出するステップと、を有することができる。
【０１１４】
本発明の一態様においては、動的認証クレデンシャルを生成する方法が提供されている。いくつかの実施形態においては、方法のいくつか又はすべてのステップは、本説明のどこか別のところにおいて記述されている認証クライアント又は認証トークンのいずれかによって実行することができる。いくつかの実施形態においては、方法は、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを生成する方法のうちのいずれかの方法のステップのいくつか又はすべてを有することができる。具体的には、いくつかの実施形態においては、方法は、図３との関連において記述されている方法のステップのいくつか又はすべてを有することができる。
【０１１５】
いくつかの実施形態においては、方法（３００）は、パスコードの値を取得するステップ（３１０）と、パスコードブラインディングデータ要素の値を取得するステップ（３２０）と、動的変数の値を取得し、暗号クレデンシャル生成キーの値を取得し、取得されたパスコード値及び取得されたパスコードブラインディングデータ要素値からパスコードベリファイアデータ要素の値を算出するステップ（３３０）と、算出されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値から動的認証クレデンシャルを算出するステップ（３４０）と、を有することができる。
【０１１６】
いくつかの実施形態においては、パスコードの値を取得するステップは、例えば、認証トークン又は認証クライアント装置のユーザー入力インターフェイスを通じてユーザーによって提供された入力などのように、ユーザーからパスコードの値を受け取るステップを有することができる。いくつかの実施形態においては、パスコード値は、ＰＩＮ（Ｐｅｒｓｏｎａｌ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  Ｎｕｍｂｅｒ）値又はパスワード値を有することができる。
【０１１７】
いくつかの実施形態においては、パスコードブラインディングデータ要素の値を取得するステップは、例えば、方法を実行している認証トークン又は認証クライアントのメモリから、パスコードブラインディングデータ要素値を読み取るステップを有することができる。いくつかの実施形態においては、パスコードブラインディングデータ要素は、動的認証クレデンシャルを生成する前に、例えば、このような認証トークン又は認証クライアントの初期化フェーズの一部分として、生成が完了していてもよく、且つ、例えば、方法を実行している認証トークン又は認証クライアントのメモリ内において保存が完了していてもよい。いくつかの実施形態においては、パスコードブラインディングデータ要素値は、高エントロピーのデータ要素として生成することができる。例えば、いくつかの実施形態においては、パスコードブラインディングデータ要素のエントロピーは、少なくとも６４ビットであってもよく、その他の実施形態においては、エントロピーは、少なくとも１２８ビットであってもよく、更にその他の実施形態においては、エントロピーは、少なくとも２５６ビットであってもよい。いくつかの実施形態においては、パスコードブラインティングデータ要素は、ランダム又は疑似ランダム数生成器によって生成されうるランダム又は疑似ランダム数を使用することにより、生成することができる。
【０１１８】
いくつかの実施形態においては、動的変数値を取得するステップは、例えば、認証サーバーなどの、サーバーから、メッセージを受け取るステップと、受け取ったメッセージに含まれている、チャレンジ又はノンス又はトランザクションデータなどの、データ要素の関数として動的変数値を判定するステップと、を有することができる。いくつかの実施形態においては、動的変数値を取得するステップは、トランザクションデータの関数として動的変数を判定するステップと、承認のためにトランザクションデータをユーザーに対して提示するステップと、ユーザーの承認を取得するステップと、を有することができる。
【０１１９】
いくつかの実施形態においては、パスコードベリファイアデータ要素値を算出するステップは、取得されたパスコード値及び取得されたパスコードブラインディングデータ要素値の暗号関数としてパスコードベリファイアデータ要素値を算出するステップを有することができる。いくつかの実施形態においては、パスコードベリファイアデータ要素値を算出するステップは、不可逆（暗号）関数を取得されたパスコード値及び取得されたパスコードブラインディングデータ要素値に適用した結果としてパスコードベリファイアデータ要素を算出するステップを有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、（セキュア）暗号ハッシュ関数を取得されたパスコード値及び取得されたパスコードブラインディングデータ要素値の組合せに適用するステップを有することができる。例えば、いくつかの実施形態においては、（セキュア）暗号ハッシュ関数は、ＳＨＡ−２又はＳＨＡ−３（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）関数ファミリのうちの１つを有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、取得されたパスコードブラインディングデータ要素値を鍵付きハッシュ関数用のキーとして使用することにより、取得されたパスコード値にセキュア暗号鍵付きハッシュ関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、鍵付きハッシュ関数は、ＨＭＡＣ（Ｈａｃｈ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ  ｏｒ  ｋｅｙｅｄ−ｈａｓｈ  ｍｅｓｓａｇｅ  ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｃｏｄｅ）関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、取得されたパスコードブラインディングデータ要素値を暗号化（又は、暗号解読）キーとして使用することにより、取得されたパスコード値にセキュア暗号暗号化（又は、暗号解読）関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号化アルゴリズムを有することができる。
【０１２０】
いくつかの実施形態においては、算出されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値から動的認証クレデンシャルを算出するステップは、算出されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値の暗号関数として動的認証クレデンシャルを算出するステップを有することができる。いくつかの実施形態においては、算出されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値から動的認証クレデンシャルを算出するステップは、算出されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値に不可逆（暗号）関数を適用した結果として動的認証クレデンシャルを算出するステップを有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、算出されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値の組合せに（セキュア）暗号ハッシュ関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、（セキュア）暗号ハッシュ関数は、ＳＨＡ−２又はＳＨＡ−３（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）関数ファミリのうちの１つを有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、取得された暗号クレデンシャル生成キー値を鍵付きハッシュ関数用のキーとして使用することにより、算出されたパスコードベリファイアデータ要素値及び取得された動的変数値の組合せにセキュア暗号鍵付きハッシュ関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、鍵付きハッシュ関数は、ＨＭＡＣ（Ｈａｓｈ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｉｏｎ  Ｃｏｄｅ  ｏｒ  Ｋｅｙｅｄ−ｈａｓｈ  ｍｅｓｓａｇｅ  ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｃｏｄｅ）関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、取得された暗号クレデンシャル生成キー値を暗号化（又は、暗号解読）キーとして使用することにより、算出されたパスコードベリファイアデータ要素値及び取得された動的変数値の組合せに（セキュア）暗号暗号化（又は、暗号解読）関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号化アルゴリズムを有することができる。
【０１２１】
いくつかの実施形態においては、方法は、パスコードベリファイアデータ要素値を算出するステップの後に、取得されたパスコード値を破棄するステップを更に有することができる。いくつかの実施形態においては、取得されたパスコード値を破棄するステップは、例えば、方法を実行している認証トークン又は認証クライアントのメモリから、取得されたパスコード値のすべての複写を消去するステップを有することができる。
【０１２２】
いくつかの実施形態においては、方法は、動的認証クレデンシャルを算出するステップの後に、算出されたパスコードベリファイアデータ要素値を破棄するステップを更に有することができる。いくつかの実施形態においては、算出されたパスコードベリファイアデータ要素値を破棄するステップは、例えば、方法を実行する認証トークン又は認証クライアントのメモリから、算出されたパスコードベリファイアデータ要素値のすべての複写を消去するステップを有することができる。
【０１２３】
いくつかの実施形態においては、暗号クレデンシャル生成キー値を取得するステップは、暗号クレデンシャル生成キー値を状態変数の値の関数として判定するステップを有することができる。いくつかの実施形態においては、方法は、状態変数の値をメモリ内において維持及び保存するステップを更に有することができる。いくつかの実施形態においては、暗号クレデンシャル生成キー値を状態変数の値の関数として判定するステップは、例えば、方法を実行している認証トークン又は認証クライアントのメモリから、状態変数値を読み取るステップを有することができる。いくつかの実施形態においては、状態変数の値の関数として暗号クレデンシャル生成キー値を判定するステップは、暗号クレデンシャル生成キー値を状態変数の値に設定するステップを有することができる。その他の実施形態においては、状態変数の値の関数として暗号クレデンシャル生成キー値を判定するステップは、不可逆関数を状態変数の値に適用した結果として暗号クレデンシャル生成キー値を算出するステップを有することができる。例えば、いくつかの実施形態においては、不可逆関数は、ＳＨＡ−２又はＳＨＡ−３（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）関数ファミリのうちの１つを有しうる（セキュア）暗号ハッシュ関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、暗号化（又は、暗号解読）キーとして状態変数の値を使用することにより、（セキュア）暗号暗号化（又は、暗号解読）関数を固定値に適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号化アルゴリズムを有することができる。
【０１２４】
いくつかの実施形態においては、方法は、状態変数の現在の値の関数として算出された新しい値によって状態変数の値を更新するステップを更に有することができる（この場合に、現在の値は、更新後には、以前の値となっている）。いくつかの実施形態においては、状態変数の現在の（以前の）値の関数として状態変数の新しい値を算出するステップは、不可逆関数を状態変数の現在の（以前の）値に適用した結果として状態変数の新しい値を算出するステップを有することができる。例えば、いくつかの実施形態においては、不可逆関数は、ＳＨＡ−２又はＳＨＡ−３（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）関数ファミリのうちの１つを有しうる（セキュア）暗号ハッシュ関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、暗号化（又は、暗号解読）キーとして状態変数の現在の（以前の）値を使用することにより、（セキュア）暗号暗号化（又は、暗号解読）関数を固定値に適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号化アルゴリズムを有することができる。
【０１２５】
いくつかの実施形態においては、方法は、状態変数の現在の値の関数として状態変数の新しい値を算出する前記ステップの後に、状態変数の現在の（以前の）値を破棄するステップを更に有することができる。いくつかの実施形態においては、状態変数の現在の（以前の）値を破棄するステップは、状態変数の新しい値を算出ステップと、状態変数の現在の（以前の）値の関数として暗号クレデンシャル生成キー値を判定するステップと、の両方が実行された後に、実行されてもよい。いくつかの実施形態においては、状態変数の現在の（以前の）値を破棄するステップは、例えば、方法を実行している認証トークン又は認証クライアントのメモリから、状態変数の現在の（以前の）値のすべての複写を消去するステップを有することができる。
【０１２６】
いくつかの実施形態においては、方法は、動的認証クレデンシャルを算出する前記ステップの後に、暗号クレデンシャル生成キー値を破棄するステップを更に有することができる。いくつかの実施形態においては、暗号クレデンシャル生成キー値を破棄するステップは、例えば、方法を実行している認証トークン又は認証クライアントのメモリから、暗号クレデンシャル生成キー値のすべての複写を消去するステップを有することができる。いくつかの実施形態においては、方法は、動的認証クレデンシャルを算出する前記ステップの後に、暗号クレデンシャル生成キー値が導出された状態変数の値を破棄するステップを更に有することができる。いくつかの実施形態においては、状態変数の値を破棄するステップは、例えば、方法を実行している認証トークン又は認証クライアントのメモリから、状態変数の値のすべての複写を消去するステップを有することができる。
【０１２７】
本発明の別の態様においては、動的認証クレデンシャルの値を検証する方法が提供されている。いくつかの実施形態においては、方法のいくつか又はすべてのステップは、本説明のどこか別のところにおいて記述されている認証サーバーのいずれかによって実行されてもよい。いくつかの実施形態においては、方法は、本明細書のどこか別のところにおいて記述されている動的認証クレデンシャルの値を検証する方法のうちのいずれかの方法のステップのうちのいくつか又はすべてを有することができる。
【０１２８】
いくつかの実施形態においては、動的認証クレデンシャルの値は、本説明において記述されている動的認証クレデンシャルを生成する方法のうちのいずれかによって生成されたものであってもよい。
【０１２９】
図４には、方法の例示用の一実施形態が示されている。
【０１３０】
いくつかの実施形態においては、方法（４００）は、動的認証クレデンシャル値を受け取るステップ（４１０）と、動的変数の値を取得するステップ（４２０）と、パスコードベリファイアデータ要素及び暗号クレデンシャル生成キーの値を取得するステップ（４３０）と、取得されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値からクレデンシャル基準値を算出するステップ（４４０）と、受け取られた動的認証クレデンシャル値が算出されたクレデンシャル基準値とマッチングしているかどうかを検証するステップ（４５０）と、を有することができる。いくつかの実施形態においては、方法は、受け取られた動的認証クレデンシャル値が算出されたクレデンシャル基準値とマッチングしているかどうかを通知する信号を生成するステップを更に有することができる。いくつかの実施形態においては、動的変数は、動的認証クレデンシャルによって認可されるべきトランザクションを表すトランザクションデータを有していてもよく、或いは、これから導出されてもよい。
【０１３１】
いくつかの実施形態においては、取得されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値からクレデンシャル基準値を算出するステップ（４４０）は、取得されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値の暗号関数としてクレデンシャル基準値を算出するステップを有することができる。いくつかの実施形態においては、取得されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値からクレデンシャル基準値を算出するステップは、取得されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値に不可逆（暗号）関数を適用した結果としてクレデンシャル基準値を算出するステップを有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、取得されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値の組合せに（セキュア）暗号ハッシュ関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、（セキュア）暗号ハッシュ関数は、ＳＨＡ−２又はＳＨＡ−３（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）関数ファミリのうちの１つを有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、鍵付きハッシュ関数用のキーとして取得された暗号クレデンシャル生成キー値を使用することにより、取得されたパスコードベリファイアデータ要素値及び取得された動的変数値の組合せにセキュア暗号鍵付きハッシュ関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、鍵付きハッシュ関数は、ＨＭＡＣ（Ｈａｓｈ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ  ｏｒ  ｋｅｙｅｄ−ｈａｓｈ  ｍｅｓｓａｇｅ  ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｃｏｄｅ）関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、暗号化（又は、暗号解読）キーとして取得された暗号クレデンシャル生成キー値を使用することにより、取得されたパスコードベリファイアデータ要素値及び取得された動的変数値の組合せに（セキュア）暗号暗号化（又は、暗号解読）関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号化アルゴリズムを有することができる。
【０１３２】
いくつかの実施形態においては、第１値が第２値とマッチングしているかどうかを検証するステップは、第１値が第２値に等しいかどうかを検証するステップを有していてもよく、或いは、これから構成されていてもよい。いくつかの実施形態においては、第１値が第２値とマッチングしているかどうかを検証するステップは、第１値の第１関数が第２値の第２関数と等しいかどうかを検証するステップを有してもよく、或いは、これから構成されていてもよい。例えば、いくつかの実施形態においては、第１値が第２値とマッチングしているかどうかを検証するステップは、第１値の第１ビットストリング表現が第２値の第２ビットストリング表現の切り捨てられたバージョンと等しいかどうかを検証するステップを有していてもよく、或いは、これから構成されていてもよい。いくつかの実施形態においては、第１値が第２値とマッチングしているかどうかを検証するステップは、第１値と第２値の間の数学的関係が真であるかどうかを検証するステップを有していてもよく、或いは、これから構成されていてもよい。
【０１３３】
いくつかの実施形態においては、パスコードベリファイアデータ要素及び暗号クレデンシャル生成キーの値を取得するステップは、認証クライアントの特定のユーザーと関連するユーザー又は認証クライアント固有のデータの組を取得するステップと、このユーザー又は認証クライアント固有のデータの組からパスコードベリファイアデータ要素及び暗号クレデンシャル生成キーの値を取得又は導出するステップと、を有することができる。いくつかの実施形態においては、ユーザー又は認証クライアント固有のデータの組は、受け取られた動的認証クレデンシャル値が受け取られたものと推定される認証クライアントのユーザーと関連付けられている。いくつかの実施形態においては、方法は、例えば、方法のステップを実行している認証サーバーに含まれうる、或いは、これに接続されうる、メモリ又はデータベース内においてユーザー又は認証クライアント固有のデータの組を保存及び維持するステップを更に有していてもよく、且つ、ユーザー又は認証クライアント固有のデータの組を取得するステップは、このメモリ又はデータベースからユーザー又は認証クライアント固有のデータの組を読み取るステップを有することができる。
【０１３４】
いくつかの実施形態においては、ユーザー又は認証クライアント固有のデータの組は、状態変数の値を有していてもよく、且つ、暗号クレデンシャル生成キー値を取得するステップは、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値の関数として暗号クレデンシャル生成キー値を判定するステップを有することができる。いくつかの実施形態においては、状態変数の値の関数として暗号クレデンシャル生成キー値を判定するステップは、暗号クレデンシャル生成キー値を状態変数の値に設定するステップを有することができる。その他の実施形態においては、状態変数の値の関数として暗号クレデンシャル生成キー値を判定するステップは、不可逆関数を状態変数の値に適用した結果として暗号クレデンシャル生成キー値を算出するステップを有することができる。例えば、いくつかの実施形態においては、不可逆関数は、ＳＨＡ−２又はＳＨＡ−３（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）関数ファミリのうちの１つを有しうる（セキュア）暗号ハッシュ関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、暗号化（又は、暗号解読）キーとして状態変数の値を使用することにより、（セキュア）暗号暗号化（又は、暗号解読）関数を固定値に適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号化アルゴリズムを有することができる。
【０１３５】
いくつかの実施形態においては、方法は、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値の関数として算出された新しい値によって状態変数の値を更新するステップと、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値をこの算出された新しい値によって置換するステップと、を更に有することができる。いくつかの実施形態においては、方法は、例えば、方法のステップを実行している認証サーバーに含まれうる、或いは、これに接続されうる、メモリ又はデータベース内において、状態変数の更新済みの値を有するユーザー又は認証クライアント固有のデータの組を保存するステップを更に有することができる。いくつかの実施形態においては、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値の関数として状態変数の新しい値を算出するステップは、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値に不可逆関数を適用した結果として状態変数の新しい値を算出するステップを有することができる。例えば、いくつかの実施形態においては、不可逆関数は、ＳＨＡ−２又はＳＨＡ−３（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）関数ファミリのうちの１つを有しうる（セキュア）暗号ハッシュ関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値を暗号化（又は、暗号解読）キーとして使用することにより、（セキュア）暗号暗号化（又は、暗号解読）関数を固定値に適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｉｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号化アルゴリズムを有することができる。
【０１３６】
いくつかの実施形態においては、方法は、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値の関数として状態変数の新しい値を算出する前記ステップの後に、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値を破棄するステップを更に有することができる。いくつかの実施形態においては、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値を破棄するステップは、例えば、方法のステップを実行している認証サーバーに含まれうる、或いは、これに接続されうる、メモリ又はデータベースから、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値のすべての複写を消去するステップを有することができる。
【０１３７】
いくつかの実施形態においては、方法は、クレデンシャル基準値を算出するステップの後に、暗号クレデンシャル生成キー値を破棄するステップを更に有することができる。いくつかの実施形態においては、暗号クレデンシャル生成キー値を破棄するステップは、例えば、方法のステップを実行している認証サーバーに含まれうる、或いは、これに接続されうる、メモリ又はデータベースから、暗号クレデンシャル生成キー値のすべての複写を消去するステップを有することができる。いくつかの実施形態においては、方法は、クレデンシャル基準値を算出するステップの後に、暗号クレデンシャル生成キー値が導出された状態変数の値を破棄するステップを更に有することができる。いくつかの実施形態においては、暗号クレデンシャル生成キー値が導出された状態変数の値を破棄するステップは、例えば、方法のステップを実行している認証サーバーに含まれうる、或いは、これに接続されうる、メモリ又はデータベースから、この状態変数の値のすべての複写を消去するステップを有することができる。
【０１３８】
本発明の別の態様においては、コンピュータに基づいたアプリケーションとの間におけるユーザーのやり取りを保護する方法が提供されている。いくつかの実施形態においては、方法は、認証トークン又は認証クライアントにより、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを生成する方法のうちのいずれかの方法のいくつか又はすべてのステップを実行するステップと、認証サーバーにより、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを検証する方法のうちのいずれかの方法のいくつか又はすべてのステップを実行するステップと、を有することができる。
【０１３９】
認証ステージ
いくつかの実施形態においては、方法は、認証ステージにおいて、認証クライアントにより、動的変数クライアント値を取得するステップと、認証クライアントにより、暗号クレデンシャル生成キークライアント値を取得するステップと、認証クライアントにより、メモリから、パスコードブラインディングデータ要素値を取得するステップと、認証クライアントにより、ユーザーから、パスコード値を受け取るステップと、認証クライアントにより、取得されたパスコードブラインディングデータ要素値及び受け取られたパスコード値の第１不可逆クライアント関数としてパスコードベリファイアデータ要素クライアント値を算出するステップと、認証クライアントにより、取得された動的変数クライアント値、取得された暗号クレデンシャル生成キークライアント値、及び算出されたパスコードベリファイアデータ要素クライアント値の第２不可逆クライアント関数として動的認証クレデンシャルを算出するステップと、認証サーバーにより、動的認証クレデンシャルを受け取るステップと、認証サーバーにより、動的変数サーバー値を取得するステップと、認証サーバーにより、暗号クレデンシャル生成キーサーバー値を取得するステップと、認証サーバーにより、パスコードベリファイアデータ要素サーバー値を取得するステップと、認証サーバーにより、取得された動的変数サーバー値、取得された暗号クレデンシャル生成キーサーバー値、及び取得されたパスコードベリファイアデータ要素サーバー値の不可逆サーバー関数としてクレデンシャル基準値を算出するステップと、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしているかどうかを検証するべく、認証サーバーにより、受け取られた動的認証クレデンシャルを算出されたクレデンシャル基準値と比較するステップと、を実行するステップを有する。いくつかの実施形態においては、方法は、認証サーバーにより、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしているかどうかを通知する信号を生成するステップを更に有することができる。いくつかの実施形態においては、方法は、コンピュータに基づいたアプリケーションが、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしている場合に、第１動作を実行し、且つ、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしていない場合には、第２動作を実行するステップを更に有することができる。
【０１４０】
いくつかの実施形態においては、動的変数クライアント値は、動的変数サーバー値と同一であってもよく、暗号クレデンシャル生成キークライアント値は、暗号クレデンシャル生成キーサーバー値と同一であってもよく、パスコードベリファイアデータ要素クライアント値は、パスコードベリファイアデータ要素サーバー値と同一であってもよく、且つ、動的認証クレデンシャルを算出するための第２不可逆クライアント関数は、クレデンシャル基準値を算出するための不可逆サーバー関数と実質的に同一であってもよい。この文脈において、動的認証クレデンシャルを算出するための第２不可逆クライアント関数が不可逆サーバー関数と実質的に同一である、ということは、第２不可逆クライアント関数及び不可逆サーバー関数が同一の入力データの組に適用された場合に、第２不可逆クライアント関数を適用した結果が、不可逆サーバー関数を適用した結果とマッチングすることになることを意味するものと理解されてもよい。
【０１４１】
いくつかの実施形態においては、動的変数クライアント値は、ユーザーによって認可されるべきトランザクションを表すトランザクションデータに基づいたものであってもよく、且つ、方法は、認証クライアントにより、トランザクションデータをユーザーに対して表示するステップと、認証クライアントにより、表示されたトランザクションデータの承認をユーザーから受け取るステップと、を更に有することができる。いくつかの実施形態においては、動的認証クレデンシャルを算出するステップは、ユーザーが、表示されたトランザクションデータを承認することを条件としていてもよい。いくつかの実施形態においては、方法は、コンピュータに基づいたアプリケーションが、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしている場合に、トランザクションを受け付け、且つ、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしていない場合には、トランザクションを拒絶するステップを更に有することができる。
【０１４２】
いくつかの実施形態においては、方法は、認証ステージにおいて、認証クライアントにより、現時点の状態変数クライアント値を保存するステップであって、これにより、認証クライアントにより、暗号クレデンシャル生成キークライアント値を取得するステップは、認証クライアントにより、保存されている現時点の状態変数クライアント値から暗号クレデンシャル生成キークライアント値を導出するステップを有することができる、ステップと、認証クライアントにより、現時点の状態変数クライアント値の第３不可逆クライアント関数として新しい状態変数クライアント値を算出するステップと、認証クライアントにより、動的認証クレデンシャルの算出の後に、暗号クレデンシャル生成キークライアント値を破棄するステップと、認証クライアントにより、新しい状態変数クライアント値の算出及び暗号クレデンシャル生成キークライアント値の導出の後に、現時点の状態変数クライアント値を破棄するステップと、認証クライアントにより、破棄された現時点の状態変数クライアント値の代わりに新しい状態変数クライアント値を保存するステップと、認証サーバーにより、現時点の状態変数サーバー値を保存するステップであって、これにより、認証サーバーにより、暗号クレデンシャル生成キーサーバー値を取得するステップは、認証サーバーにより、保存されている現時点の状態変数サーバー値から、暗号クレデンシャル生成キーサーバー値を導出するステップを有することができる、ステップと、認証サーバーにより、現時点の状態変数サーバー値の第２不可逆サーバー関数として新しい状態変数サーバー値を算出するステップと、認証サーバーにより、クレデンシャル基準値の算出の後に、暗号クレデンシャル生成キーサーバー値を破棄するステップと、認証サーバーにより、新しい状態変数サーバー値の算出及び暗号クレデンシャル生成キーサーバー値の導出の後に、現時点の状態変数サーバー値を破棄するステップと、認証サーバーにより、破棄された現時点の状態変数サーバー値の代わりに新しい状態変数サーバー値を保存するステップと、を実行するステップを更に有することができる。いくつかの実施形態においては、現時点の状態変数サーバー値は、現時点の状態変数クライアント値と同一であってもよく、新しい状態変数サーバー値は、新しい状態変数クライアント値と同一であってもよく、且つ、第２不可逆サーバー関数は、第３不可逆クライアント関数と同一であってもよい。
【０１４３】
初期化ステージ
いくつかの実施形態においては、方法は、認証ステージの前の初期化ステージにおいて、認証クライアントにより、予測不能な方式により、パスコードブラインディングデータ要素値を生成するステップと、認証クライアントにより、認証ステージにおける後続の使用のために、生成されたパスコードブラインディングデータ要素値を保存するステップと、認証クライアントにより、ユーザーから初期パスコード値を受け取るステップと、認証クライアントにより、パスコードブラインディングデータ要素値及び受け取られた初期パスコード値の第１不可逆クライアント関数として（初期）パスワードベリファイアデータ要素クライアント値を算出するステップと、認証サーバーにより、算出された（初期）パスコードベリファイアデータ要素クライアント値を受け取り、且つ、認証サーバーにより、認証ステージにおける後続の使用のために、受け取られた（初期）パスコードベリファイアデータ要素クライアントをパスコードベリファイアデータ要素サーバー値として保存するステップと、を実行するステップを更に有することができる。
【０１４４】
いくつかの実施形態においては、方法は、初期化ステージにおいて、認証クライアントにおいて、初期状態シードから導出された状態変数クライアント値の初期クライアント値を取得し、且つ、認証クライアントにおいて、状態変数クライアント値の取得された初期値を現時点の状態変数クライアント値として保存するステップと、認証サーバーにおいて、こちらも初期状態シードから導出された状態変数サーバー値の初期サーバー値を取得し、且つ、認証サーバーにおいて、状態変数サーバー値の取得された初期値を現時点の状態変数サーバー値として保存するステップと、を更に有することができる。
【０１４５】
いくつかの実施形態においては、方法は、初期化ステージにおいて、初期状態シードを生成又はさもなければ取得するステップであって、この場合に、認証クライアントにおいて、状態変数クライアント値の初期クライアント値を取得するステップは、認証クライアントにおいて、初期状態シードを取得し、且つ、認証クライアントにおいて、初期状態シードから、状態変数クライアント値の初期クライアント値を導出するステップを有していてもよく、且つ、この場合に、認証サーバーにおいて、こちらも初期状態シードから導出される状態変数サーバー値の初期サーバー値を取得するステップは、認証サーバーにおいて、初期状態シードを取得し、且つ、認証サーバーにおいて、初期状態シードから、状態変数サーバー値の初期サーバー値を導出するステップを有することができる、ステップを実行するステップを更に有することができる。
【０１４６】
いくつかの実施形態においては、初期状態シードを生成するステップは、高エントロピー値として初期状態シードを生成するステップを有することができる。いくつかの実施形態においては、初期状態シードを生成するステップは、ランダム又は疑似ランダム数生成器によって生成されたランダム又は疑似ランダム数を使用するステップを有することができる。いくつかの実施形態においては、初期状態シードを生成するステップは、認証サーバー又は認証サーバーと関連するサーバーなどのサーバーによって実行することができる。
【０１４７】
いくつかの実施形態においては、方法は、認証ステージにおいて、状態変数クライアント値と状態変数サーバー値を同期化させるステップを実行するステップを更に有することができる。いくつかの実施形態においては、状態変数クライアントと状態変数サーバー値を同期化させるステップは、認証クライアントにより、状態変数サーバー値を示す同期化データ要素を受け取るステップと、状態変数クライアント値を状態変数サーバー値と同期化させるべく、認証クライアントにより、受け取った同期化データ要素の値に基づいて状態変数クライアント値を更新するステップと、有することができる。いくつかの実施形態においては、同期化データ要素は、カウンタ値を有していてもよく、カウンタ値は、例えば、状態変数サーバー値が更新された回数を通知しうる。いくつかの実施形態においては、状態変数クライアント値と状態変数サーバー値を同期化させるステップは、認証サーバーにより、状態変数クライアント値を示す同期化データ要素を受け取るステップと、状態変数サーバー値を状態変数クライアント値と同期化させるべく、認証サーバーにより、受け取った同期化データ要素の値に基づいて状態変数サーバー値を更新するステップと、を有することができる。いくつかの実施形態においては、同期化データ要素は、カウンタ値を有していてもよく、カウンタ値は、例えば、状態変数クライアント値が更新された回数を通知しうる。
【０１４８】
本発明の別の態様においては、動的認証クレデンシャルを生成する装置が提供されている。いくつかの実施形態においては、装置は、本説明のどこか別のところにおいて記述されている認証トークン又は認証クライアントのいずれかを有することができる。具体的には、いくつかの実施形態においては、装置は、図１との関連において記述されている装置（１００）のいずれかを有することができる。いくつかの実施形態においては、装置は、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを生成する方法のいずれかを実行するように適合されていてもよい。
【０１４９】
いくつかの実施形態においては、装置（１００）は、装置のユーザーからパスコードを受け取るように適合されたユーザー入力インターフェイス（１２０）と、暗号計算を実行するように適合されたデータプロセッサ（１５０）と、パスコードブラインディングデータ要素値及び状態変数値を保存するためのメモリ（１６０）と、を有していてもよく、これにより、装置は、初期化ステージにおいて、パスコードブラインディングデータ要素値を取得し、且つ、メモリ内において、保存し、且つ、状態変数値の初期値を取得し、且つ、メモリ内において現時点の状態変数値として初期値を保存するように適合されていてもよく、これにより、装置は、認証ステージにおいて、動的変数値を取得し、ユーザー入力インターフェイスを通じて、ユーザーのパスコードを受け取り、メモリから、パスコードブラインディングデータ要素値を読み取り、受け取ったパスコード及びパスコードブラインディングデータ要素値の第１不可逆関数としてパスコードベリファイアデータ要素値を算出し、メモリから現時点の状態変数値を読み取り、且つ、メモリからの現時点の状態変数値から暗号クレデンシャル生成キーを導出し、取得された動的変数値、算出されたパスコードベリファイアデータ要素値、及び導出された暗号クレデンシャル生成キーの第２不可逆関数として動的認証クレデンシャルを算出し、動的認証クレデンシャルの計算の後に、導出された暗号クレデンシャル生成キーを破棄し、現時点の状態変数値の第３不可逆関数として状態変数値の新しい値を生成し、且つ、現時点の状態変数値からの暗号クレデンシャル生成キーの導出及び状態変数値の新しい値の生成の後に、現時点の状態変数値を破棄し、且つ、現時点の状態変数値の代わりに状態変数値の生成された新しい値を保存する、ように更に適合されていてもよい。
【０１５０】
いくつかの実施形態においては、装置は、データをユーザーに提示するためのユーザー出力インターフェイス（１３０）を更に有することができる。
【０１５１】
いくつかの実施形態においては、装置は、ユーザーによって承認されるべきトランザクションを表すトランザクションデータを受け取り、ユーザー出力インターフェイスを通じて、受け取ったトランザクションデータをユーザーに提示し、ユーザーから、ユーザー入力インターフェイスを通じて、提示されたトランザクションデータ用の承認を受け取る、ように更に適合されていてもよい。いくつかの実施形態においては、動的認証クレデンシャルの計算は、装置が、提示されたトランザクションデータのユーザー承認を受け取ることを条件としてもよい。
【０１５２】
いくつかの実施形態においては、装置は、生成された動的認証クレデンシャルを認証サーバーによる検証のために利用可能な状態とするように更に適合されていてもよい。いくつかの実施形態においては、装置は、ユーザーが認証サーバーに転送するように、ユーザー出力インターフェイスを通じて、生成された動的認証クレデンシャルをユーザーに提示するように適合されていてもよい。いくつかの実施形態においては、装置は、生成された動的認証クレデンシャルを直接的又は間接的に認証サーバーに送信するように適合されていてもよい。
【０１５３】
いくつかの実施形態においては、装置は、ランダム又は疑似ランダム数生成器を更に有していてもよく、且つ、装置は、初期化ステージにおいて、ランダム又は疑似ランダム数生成器によって生成されたランダム又は疑似ランダム数を取得し、且つ、ランダム又は疑似ランダム数の関数としてパスコードブラインディングデータ要素値を取得するように更に適合されていてもよい。
【０１５４】
本発明の別の態様においては、動的認証クレデンシャルを検証する装置が提供されている。いくつかの実施形態においては、装置は、本説明のどこか別のところにおいて記述されている認証サーバーのいずれかを有することができる。いくつかの実施形態においては、装置は、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを検証する方法のうちのいずれかを実行するように適合されていてもよい。
【０１５５】
いくつかの実施形態においては、装置は、特定のユーザー又は特定の認証クライアントと関連する少なくとも１つのデータセットを保存するように適合されたメモリと、暗号動作を実行するように適合されたデータ処理コンポーネントと、を有していてもよく、且つ、装置は、認証ステージにおいて、動的認証クレデンシャルを受け取り、動的変数サーバー値を取得し、メモリから、特定のユーザー又は特定の認証クライアントと関連するデータセットを読み取り、読み取られたデータセットから、暗号クレデンシャル生成キーサーバー値を取得し、読み取られたデータセットから、パスコードベリファイアデータ要素サーバー値を取得し、取得された動的変数サーバー値、取得されたパスコードベリファイアデータ要素サーバー値、及び取得された暗号クレデンシャル生成キーサーバー値の不可逆サーバー関数としてクレデンシャル基準値を算出し、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしているかどうかを検証するべく、受け取られた動的認証クレデンシャルを算出されたクレデンシャル基準値と比較する、ように適合されていてもよい。
【０１５６】
いくつかの実施形態においては、装置は、認証サーバーを有していてもよく、且つ、メモリは、認証サーバーに含まれている、或いは、これによってアクセス可能である、データベースを有することができる。
【０１５７】
いくつかの実施形態においては、装置は、認証ステージにおいて、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしているかどうかを通知する信号を生成するように更に適合されていてもよい。
【０１５８】
いくつかの実施形態においては、装置は、メモリ内において、特定のユーザー又は特定の認証クライアントと関連するデータセットの一部分として、パスコードベリファイアデータ要素サーバー値を保存するように更に適合されていてもよい。
【０１５９】
いくつかの実施形態においては、装置は、特定のユーザー又は特定の認証クライアントと関連するデータセットの一部分として現時点の状態変数サーバー値を取得し、且つ、メモリ内において維持し、且つ、認証ステージにおいて、読み取られたデータセットから現時点の状態変数サーバー値を取得し、取得された現時点の状態変数サーバー値の関数として暗号クレデンシャル生成キーサーバー値を判定し、クレデンシャル基準値の計算後に、暗号クレデンシャル生成キーサーバー値を破棄し、取得された現時点の状態変数サーバー値の第２不可逆サーバー関数として新しい状態変数サーバー値を算出し、暗号クレデンシャル生成キーサーバー値の判定及び新しい状態変数サーバー値の計算の後に、現時点の状態変数サーバー値を破棄し、且つ、メモリ内において、特定のユーザー又は特定の認証クライアントと関連するデータセットの一部分として、現時点の状態変数サーバー値の代わりに、新しい状態変数サーバー値を書き込む、ように更に適合されていてもよい。
【０１６０】
いくつかの実施形態においては、装置は、初期化ステージにおいて、パスコードベリファイアデータ要素値を受け取り、且つ、特定のユーザー又は特定の認証クライアントと関連するデータセットの一部分として、パスコードベリファイアデータ要素サーバー値として、受け取ったパスコードベリファイアデータ要素値をメモリ内において書き込むように更に適合されていてもよい。
【０１６１】
いくつかの実施形態においては、装置は、初期化ステージにおいて、初期状態変数サーバー値を取得し、且つ、特定のユーザー又は特定の認証クライアントと関連するデータセットの一部分として、現時点の状態変数サーバー値として、メモリ内において初期状態変数サーバー値を書き込む、ように更に適合されていてもよい。
【０１６２】
本発明の別の態様においては、コンピュータに基づいたアプリケーションとの間におけるユーザーのやり取りを保護するシステムが提供されている。いくつかの実施形態においては、システムは、本説明のどこか別のところにおいて記述されているシステムのいずれかを有することができる。具体的には、いくつかの実施形態においては、システムは、図２との関連において記述されているシステムのいずれかを有することができる。いくつかの実施形態においては、システムは、本説明のどこか別のところにおいて記述されている認証トークン又は認証クライアントのいずれかと、本説明のどこか別のところにおいて記述されている認証サーバーのいずれかと、のうちの複数のものを有することができる。いくつかの実施形態においては、システムは、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを生成する装置のいずれかと、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを検証する装置のいずれかと、を有することができる。いくつかの実施形態においては、システムは、本出願のどこか別のところにおいて記述されているコンピュータに基づいたアプリケーションとの間におけるユーザーのやり取りを保護する方法のうちのいずれかの方法の１つ又は複数のステップを実行するように適合されていてもよい。
【０１６３】
いくつかの実施形態においては、システム（２００）は、認証クライアント（２２０）と、認証サーバー（２３０）と、を有していてもよく、これにより、認証クライアントは、認証クライアントのユーザーからパスコードを受け取るように適合されたユーザー入力インターフェイス（１２０）と、暗号計算を実行するように適合されたクライアントデータプロセッサ（１５０）と、パスコードブラインディングデータ要素値及び状態変数クライアント値を保存するクライアントメモリ（１６０）と、を有していてもよく、これにより、認証クライアントは、初期化ステージにおいて、パスコードブラインディングデータ要素値を取得し、且つ、メモリ内において保存し、且つ、状態変数クライアント値の初期クライアント値を取得し、且つ、初期クライアント値を現時点の状態変数クライアント値としてメモリ内において保存する、ように適合されていてもよく、これにより、認証クライアントは、認証ステージにおいて、動的変数クライアント値を取得し、ユーザー入力インターフェイスを通じてユーザーのパスコードを受け取り、クライアントメモリから、パスコードブラインディングデータ要素値を読み取り、受け取ったパスコード及びパスコードブラインディングデータ要素値の第１不可逆クライアント関数としてパスコードベリファイアデータ要素クライアント値を算出し、クライアントメモリから、現時点の状態変数クライアント値を読み取り、且つ、クライアントメモリから読み取られた現時点の状態変数クライアント値から暗号クレデンシャル生成キークライアント値を導出し、取得された動的変数クライアント値、算出されたパスコードベリファイアデータ要素クライアント値、及び導出された暗号クレデンシャル生成キークライアント値の第２不可逆クライアント関数として動的認証クレデンシャルを算出し、動的認証クレデンシャルの算出の後に、導出された暗号クレデンシャル生成キークライアント値を破棄し、現時点の状態変数クライアント値の第３不可逆クライアント関数として状態変数クライアント値の新しい値を生成し、且つ、現時点の状態変数クライアント値からの暗号クレデンシャル生成キークライアント値の導出及び状態変数クライアント値の新しい値の生成の後に、現時点の状態変数クライアント値を破棄し、且つ、現時点の状態変数クライアント値の代わりに、生成された状態変数クライアント値の新しい値を保存する、ように更に適合されていてもよく、且つ、これにより、認証サーバーは、ユーザー又は認証クライアントと関連する少なくとも１つのデータセットを保存するように適合されたサーバーメモリと、暗号動作を実行するように適合されたサーバーデータ処理コンポーネントと、を有していてもよく、且つ、これにより、認証サーバーは、初期化ステージにおいて、パスコードベリファイアデータ要素初期化値を受け取り、且つ、ユーザー又は認証クライアンと関連するデータセットの一部分として、パスコードベリファイアデータ要素サーバー値として、受け取られたパスコードベリファイアデータ要素初期化値をメモリ内において書き込み、且つ、初期状態変数サーバー値を取得し、且つ、ユーザー又は認証クライアントと関連するデータセットの一部分として、現時点の状態変数サーバー値として、初期状態変数サーバー値をメモリ内において書き込む、ように適合されていてもよく、且つ、これにより、認証サーバーは、認証ステージにおいて、生成された動的認証クレデンシャルを受け取り、動的変数サーバー値を取得し、ユーザー又は認証クライアントと関連するデータセットをサーバーメモリから読取り、読み取られたデータセットから現時点の状態変数サーバー値を取得し、取得された現時点の状態変数サーバー値の関数として暗号クレデンシャル生成キーサーバー値を導出し、読み取られたデータセットからパスコードベリファイアデータ要素サーバー値を取得し、取得された動的変数サーバー値、取得されたパスコードベリファイアデータ要素サーバー値、及び導出された暗号クレデンシャル生成キーサーバー値の第１不可逆サーバー関数としてクレデンシャル基準値を算出し、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしているかどうかを検証するべく、受け取られた動的認証クレデンシャルを算出されたクレデンシャル基準値と比較し、クレデンシャル基準値の計算の後に暗号クレデンシャル生成キーサーバー値を破棄し、取得された現時点の状態変数サーバー値の第２不可逆サーバー関数として新しい状態変数サーバー値を算出し、暗号クレデンシャル生成キーサーバー値の導出及び新しい状態変数サーバー値の計算の後に、現時点の状態変数サーバー値を破棄し、且つ、ユーザー又は認証クライアントと関連するデータセットの一部分として、現時点の状態変数サーバー値の代わりに、新しい状態変数サーバー値をサーバーメモリ内において書き込むように、更に適合されていてもよい。
【０１６４】
いくつかの実施形態においては、動的変数は、時間値に基づいたものであってもよく、且つ、認証クライアントは、認証クライアントに含まれているクライアントクロックの時間値の関数として動的変数クライアント値を取得するように適合されていてもよく、且つ、認証サーバーは、認証サーバーに含まれているサーバークロックの時間値の関数として動的変数サーバー値を取得するように適合されていてもよく、これにより、クライアントクロック及びサーバークロックは、同期化されてもよい。いくつかの実施形態においては、動的変数は、カウンタに基づいたものであってもよく、且つ、認証クライアントは、認証クライアントによって維持されるクライアントカウンタの関数として動的変数クライアント値を取得するように適合されていてもよく、且つ、認証サーバーは、認証サーバーによって維持されているサーバーカウンタ値の関数として動的変数サーバー値を取得するように適合されていてもよく、これにより、認証クライアント及び認証サーバーは、クライアントカウンタ値とサーバーカウンタ値を同期化させるように適合されていてもよい。いくつかの実施形態においては、動的変数は、チャレンジなどの、値に基づいたものであってもよく、且つ、認証サーバーは、この値を生成し、且つ、この値の関数として動的変数サーバー値を取得し、且つ、この値を認証クライアントに送信するように適合されていてもよく、且つ、認証クライアントは、（例えば、ユーザーによって提供される入力又は認証サーバーから受け取られるメッセージ内において）この値を受け取り、且つ、この値の関数として動的変数クライアント値を取得するように適合されていてもよい。いくつかの実施形態においては、動的変数は、トランザクションデータに基づいたものであってもよく、且つ、認証サーバーは、例えば、トランザクションを処理するコンピュータに基づいたアプリケーションからトランザクションデータを受け取り、且つ、トランザクションデータの関数として動的変数サーバー値を取得するように適合されていてもよく、且つ、認証クライアントは、（例えば、ユーザーによって提供される、或いは、認証サーバー又はコンピュータに基づいたアプリケーションから受け取られる、メッセージに含まれた入力として）トランザクションデータを受け取り、且つ、トランザクションデータの関数として動的変数クライアント値を取得するように適合されていてもよい。
【０１６５】
いくつかの実施形態においては、システムは、コンピュータに基づいたアプリケーションをホスティングするように適合されたアプリケーションサーバーを更に有していてもよく、且つ、認証サーバーは、認証ステージにおいて、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしているかどうかをコンピュータに基づいたアプリケーションに通知するように更に適合されていてもよく、且つ、コンピュータに基づいたアプリケーションは、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしている場合に、１つの動作を実行し、且つ、受け取られた認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしていない場合には、別の動作を実行するように適合されていてもよい。例えば、いくつかの実施形態においては、コンピュータに基づいたアプリケーションは、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしている場合には、ログイン要求を認可してもよく、或いは、特定のデータに対するユーザーアクセスを認可してもよく、或いは、ユーザーが特定の動作を実行することを認可してもよく、或いは、ユーザーによってサブミットされたものでありうる特定のトランザクションを実行してもよく、且つ、コンピュータに基づいたアプリケーションは、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしない場合には、これらの動作の実行を拒絶してもよい。
【０１６６】
いくつかの実施形態においては、不可逆関数は、一方向関数を有していてもよく、即ち、入力日付が付与された場合に結果を算出することが演算的に容易であるが、関数の結果の特定の値が付与された場合にマッチングする入力日付を取得することが演算的に困難である数学関数を有することができる。演算的に容易である、とは、いくつかの実施形態においては、関数の結果を取得するために、計算を実行するように意図された電子装置上において５秒未満を所要することを意味しうる。演算的に困難である、とは、いくつかの実施形態においては、関数の結果の特定の値が付与された場合に、マッチングする入力日付を取得するために、入力日付が付与された場合に結果を演算するために所要するものよりも少なくとも百万倍だけ多い演算量を所要することを意味しうる。演算的に困難である、とは、いくつかの実施形態においては、関数の結果の特定の値が付与された場合に、マッチングする入力日付を取得するための唯一の既知の方法が、徹底的サーチ（ｅｘｈａｕｓｔｉｖｅ  ｓｅａｒｃｈ）によるものであることを意味しうる。又、本説明を目的として、秘密キーによってパラメータ化された暗号の暗号化又は暗号解読動作も、不可逆関数として見なされてもよく、その理由は、パラメータ化秘密キーの値が未知である場合には、入力データ要素に対する暗号化又は暗号解読動作を元に戻すことが演算的に困難でありうるからである。
【０１６７】
本発明の実施形態の利点
パスコード値は、認証システムのいずれかのコンポーネント上において保存されている場合には、例えば、そのようなコンポーネントのメモリにアクセスする能力を有する攻撃者により、危険に晒される場合がある。パスコードは、通常、相対的に低いエントロピーを有しうることから、攻撃者が、パスコードの関数であるデータ要素の値を取得した場合には、パスコードは、潜在的に、ブルートフォース徹底的サーチ攻撃に対して脆弱でありうるであろう。
【０１６８】
本発明は、様々な攻撃からパスコード値の機密性を保護するという点において、動的クレデンシャルに基づいた、且つ、パスコードを使用する、コンピュータに基づいたアプリケーションとの間におけるユーザーのやり取りを保護するその他の方法及びシステムを改良する。
【０１６９】
動的認証クレデンシャルは、パスコード値の関数として生成されることから、動的認証クレデンシャルの値は、パスコードの値を取得するための徹底的サーチ攻撃のための開始点として使用されうるであろう。但し、動的認証クレデンシャルは、パスコード値のみならず、高エントロピーのパスコードブラインディングデータ要素値及び高エントロピーの暗号クレデンシャル生成キー値の不可逆関数として算出されていることから、このような徹底的サーチ攻撃は、演算的に実行不能となろう。
【０１７０】
パスコードブラインディングデータ要素値及び／又は暗号クレデンシャル生成キー値の知識自体は、徹底的サーチによる場合にも、パスコードの値の取得を許容してはおらず、その理由は、パスコードブラインディングデータ要素及び暗号クレデンシャル生成キー値の値がパスコートの値とは独立しているからである。従って、本発明の態様による認証トークン又は認証クライアントは、ユーザーによって提供されたパスコードを破棄し、且つ、動的クレデンシャルの生成のために使用された後に、算出されたパスコードベイファイアデータ要素を破棄していることから、認証トークン又は認証クライアントのメモリのコンテンツを入手した（且つ、従って、保存されているパスコードブラインディングデータ要素値を入手済みでありうる）攻撃者も、依然として、ユーザーのパスコードを取得することができない。
【０１７１】
パスコードベリファイアデータ要素は、パスコード値の関数として生成されることから、パスコードベリファイアデータ要素の値は、パスコードの値を取得するための徹底的サーチ攻撃のための開始点として使用されうるであろう。但し、パスコードベリファイアデータ要素は、パスコード値のみならず、高エントロピーのパスコードブラインディングデータ要素値の不可逆関数として算出されていることから、このような徹底的サーチ攻撃は、演算的に実行不能となろう。即ち、パスコードベリファイアデータ要素の知識自体は、パスコードの値の取得を許容してはいない。又、一方において、暗号クレデンシャル生成キー値と、他方において、パスコード及びパスコードベリファイアデータ要素の値と、が、互いに独立していることから、パスコードベリファイアデータ要素値と対応する暗号クレデンシャル生成キー値の両方の組み合わせられた知識も、パスコードの値の取得を許容してはいない。従って、認証サーバーにおいて保存されているパスコードベリファイアデータ要素値及び／又は対応する暗号クレデンシャル生成キー値を入手した攻撃者も、依然として、ユーザーのパスコードを取得することができない。動的認証クレデンシャルの値が、パスコードベリファイアデータ要素値及び対応する暗号クレデンシャル生成キー値の値の組合せによって完全に判定されている（且つ、従って、なんらの情報をも、これに対して付加していない）ことから、動的認証クレデンシャルの値を捕捉した、且つ、認証サーバーにおいて保存されている対応するパスコードベリファイアデータ要素値及び／又は対応する暗号クレデンシャル生成キー値を入手した、攻撃者も、依然として、ユーザーのパスコードを取得することができない。
【０１７２】
動的認証クレデンシャル値は、パスコード値、動的変数値、パスコードブラインディングデータ要素値、及び暗号クレデンシャル生成キー値の関数であることから、且つ、動的変数値は、その取得又は推定が容易でありうる、或いは、実際に、低エントロピーを有しうることから、一方において、動的認証クレデンシャル値を、且つ、他方においては、その動的認証クレデンシャル値の生成において使用されたパスコードブラインディングデータ要素値及び暗号クレデンシャル生成キー値の両方を、入手することができた攻撃者は、潜在的に実行可能な徹底的サーチ攻撃を開始するべく、その動的クレデンシャル値を使用しうるであろう。但し、本発明の態様による認証トークン又は認証クライアントは、動的認証クレデンシャルを生成するべくその暗号クレデンシャル生成キー値を使用した後に、この特定の暗号クレデンシャル生成キー値が導出されたものでありうるすべての暗号クレデンシャル生成キー及び状態変数の値の両方を破棄していることから、一方においては、特定の認証トークン又は認証クライアント内において保存されているパスコードブラインディングデータ要素、暗号クレデンシャル生成キー、及び状態変数の値と、他方においては、その特定の認証トークン又は認証クライアントにより、その時点までに生成された任意の又はすべての動的認証クレデンシャルの値と、の両方を入手した攻撃者も、依然として、一方において、動的認証クレデンシャル値と、他方においては、その動的認証クレデンシャル値の生成において使用されたパスコードブラインディングデータ要素値と特定の暗号クレデンシャル生成キー値の両方と、の組合せを有しておらず、且つ、従って、依然として、その特定の認証トークン又は認証クライアントのユーザーのパスコードを取得するべく、実行可能な徹底的サーチ攻撃を開始することができないであろう。
【０１７３】
以上、いくつかの実装形態について説明した。但し、様々な変更が実施されうることを理解されたい。例えば、１つ又は複数の実装形態の要素は、更なる実装形態を形成するべく、組み合わせられてもよく、削除されてもよく、変更されてもよく、或いは、補完されてもよい。従って、その他の実施形態が、添付の請求項の範囲に含まれている。これに加えて、特定の特徴が、いくつかの実装形態のうちの１つのみとの関係において開示されている場合があるが、このような特徴は、任意の所与の又は特定の用途において望ましい又は有利でありうる場合には、その他の実装形態の１つ又は複数のその他の特徴と組み合わせられてもよい。様々な実施形態が上述されているが、これらは、限定ではなく、例示を目的として提示されているに過ぎないことを理解されたい。具体的には、当然のことながら、特許請求されている主題について記述することを目的として、コンポーネント又は方法のすべての想定可能な組合せについて記述することは不可能であり、当業者は、多くの更なる組合せ及び順列が可能であることを認識することができる。従って、本明細書における教示の広さ及び範囲は、上述の例示用の実施形態のいずれによっても限定されるものではない。
【図１】
2019506789.tif 000004
【図２】
2019506789.tif 000005
【図３】
2019506789.tif 000006
【図４】
2019506789.tif 000007
【国際調査報告】
2019506789.tif 000008
2019506789.tif 000009
2019506789.tif 000010