特許第6927981号(P6927981)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ バスコ データ セキュリティー インターナショナル ゲゼルシャフト ミット ベシュレンクテル ハフツングの特許一覧

特許6927981パスコード検証のためのフォワードセキュア型暗号技術を使用した方法、システム、及び装置。
<>
  • 特許6927981-パスコード検証のためのフォワードセキュア型暗号技術を使用した方法、システム、及び装置。 図000003
  • 特許6927981-パスコード検証のためのフォワードセキュア型暗号技術を使用した方法、システム、及び装置。 図000004
  • 特許6927981-パスコード検証のためのフォワードセキュア型暗号技術を使用した方法、システム、及び装置。 図000005
  • 特許6927981-パスコード検証のためのフォワードセキュア型暗号技術を使用した方法、システム、及び装置。 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6927981
(24)【登録日】2021年8月10日
(45)【発行日】2021年9月1日
(54)【発明の名称】パスコード検証のためのフォワードセキュア型暗号技術を使用した方法、システム、及び装置。
(51)【国際特許分類】
   H04L 9/08 20060101AFI20210823BHJP
   G06F 21/31 20130101ALI20210823BHJP
   H04L 9/32 20060101ALI20210823BHJP
【FI】
   H04L9/00 601C
   G06F21/31
   H04L9/00 673A
【請求項の数】47
【全頁数】48
(21)【出願番号】特願2018-534587(P2018-534587)
(86)(22)【出願日】2016年12月30日
(65)【公表番号】特表2019-506789(P2019-506789A)
(43)【公表日】2019年3月7日
(86)【国際出願番号】US2016069464
(87)【国際公開番号】WO2017117520
(87)【国際公開日】20170706
【審査請求日】2019年12月27日
(31)【優先権主張番号】62/273,138
(32)【優先日】2015年12月30日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】516195720
【氏名又は名称】ワンスパン インターナショナル ゲゼルシャフト ミット ベシュレンクテル ハフツング
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100114018
【弁理士】
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100119987
【弁理士】
【氏名又は名称】伊坪 公一
(72)【発明者】
【氏名】スティーブン マードック
【審査官】 寺谷 大亮
(56)【参考文献】
【文献】 米国特許第8832807(US,B1)
【文献】 国際公開第2015/103031(WO,A1)
【文献】 国際公開第2015/102880(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00
G06F 21/30−21/46
G09C 1/00−5/00
H04K 1/00−3/00
H04L 9/00−9/38
(57)【特許請求の範囲】
【請求項1】
動的認証クレデンシャルを生成する方法であって、
パスコードの値を取得するステップと、
パスコードブラインディングデータ要素の値を取得するステップと、
動的変数の値を取得するステップと、
暗号クレデンシャル生成キーの値を取得するステップと、
前記取得されたパスコードの値及び前記取得されたパスコードブラインディングデータ要素の値からパスコードベリファイアデータ要素の値を算出するステップと、
前記算出されたパスコードベリファイアデータ要素の値、前記取得された動的変数の値、及び前記取得された暗号クレデンシャル生成キーの値から、前記動的認証クレデンシャルを算出するステップと、
前記方法を実行する認証トークン又は認証クライアントのメモリ内に状態変数の値を維持及び保存するステップと、
を有
前記暗号クレデンシャル生成キーの値を取得するステップは、前記方法を実行する前記認証トークン又は前記認証クライアントの前記メモリから前記状態変数の値を読み取るステップと、前記状態変数の値の関数として前記暗号クレデンシャル生成キーの値を決定するステップと、を有する、方法。
【請求項2】
前記パスコードの値を取得するステップは、ユーザーから前記パスコードの値を受け取るステップを有する、請求項1に記載の方法。
【請求項3】
前記パスコードブラインディングデータ要素の値を取得するステップは、前記方法を実行する認証トークン又は認証クライアントのメモリから、前記パスコードブラインディングデータ要素の値を読み取るステップを有する、請求項1又は2に記載の方法。
【請求項4】
前記パスコードブラインディングデータ要素を生成するステップと、前記動的認証クレデンシャルを算出する前に、初期化フェーズにおいて、前記生成されたパスコードブラインディングデータ要素を前記メモリ内に保存するステップと、を更に有する、請求項3に記載の方法。
【請求項5】
前記パスコードブラインディングデータ要素を生成するステップは、ランダム又は疑似ランダム数生成器によって生成されたランダム又は疑似ランダム数を使用する、請求項4に記載の方法。
【請求項6】
前記動的変数の値を取得するステップは、データメッセージを受け取るステップと、前記受け取ったデータメッセージに含まれているデータ要素の関数として前記動的変数の値を決定するステップと、を有する、請求項1乃至5のいずれか一項に記載の方法。
【請求項7】
前記動的変数の値を取得するステップは、トランザクションデータの関数として前記動的変数を決定するステップと、前記トランザクションデータを承認のためにユーザーに対して提示するステップと、前記ユーザーの承認を取得するステップと、を有する、請求項1乃至6のいずれか一項に記載の方法。
【請求項8】
前記パスコードベリファイアデータ要素の値を算出するステップは、前記取得されたパスコードの値及び前記取得されたパスコードブラインディングデータ要素の値の第1不可逆関数として前記パスコードベリファイアデータ要素の値を算出するステップを有する、請求項1乃至7のいずれか一項に記載の方法。
【請求項9】
前記算出されたパスコードベリファイアデータ要素の値、前記取得された動的変数の値、及び前記取得された暗号クレデンシャル生成キーの値から前記動的認証クレデンシャルを算出するステップは、前記算出されたパスコードベリファイアデータ要素の値、前記取得された動的変数の値、及び前記取得された暗号クレデンシャル生成キーの値の第2不可逆関数として前記動的認証クレデンシャルを算出するステップを有する、請求項1乃至8のいずれか一項に記載の方法。
【請求項10】
前記パスコードベリファイアデータ要素の値を算出するステップの後に、前記取得されたパスコードの値を破棄するステップを更に有する、請求項1乃至9のいずれか一項に記載の方法。
【請求項11】
前記取得されたパスコードの値を破棄するステップは、前記方法を実行する認証トークン又は認証クライアントのメモリから前記取得されたパスコードの値のすべての複写を消去するステップを有する、請求項10に記載の方法。
【請求項12】
前記動的認証クレデンシャルを算出するステップの後に、前記算出されたパスコードベリファイアデータ要素の値を破棄するステップを更に有する、請求項1乃至11のいずれか一項に記載の方法。
【請求項13】
前記算出されたパスコードベリファイアデータ要素の値を破棄するステップは、前記方法を実行する認証トークン又は認証クライアントのメモリから、前記算出されたパスコードベリファイアデータ要素の値のすべての複写を消去するステップを有する、請求項12に記載の方法。
【請求項14】
前記状態変数の値の関数として前記暗号クレデンシャル生成キーの値を決定するステップは、前記暗号クレデンシャル生成キーの値を前記状態変数の値に設定するステップを有する、請求項1乃至13のいずれか一項に記載の方法。
【請求項15】
前記状態変数の値の関数として前記暗号クレデンシャル生成キーの値を決定するステップは、第3不可逆関数を前記状態変数の値に適用した結果として前記暗号クレデンシャル生成キーの値を算出するステップを有する、請求項1乃至13のいずれか一項に記載の方法。
【請求項16】
第4不可逆関数を前記状態変数の現在の値に適用した結果として前記状態変数の新しい値を算出するステップと、
前記算出された新しい値によって前記状態変数の値を更新するステップと、
を更に有する、請求項14又は15に記載の方法。
【請求項17】
前記算出された新しい値によって前記状態変数の値を更新するステップは、前記方法を実行する前記認証トークン又は前記認証クライアントの前記メモリ内に、前記算出された新しい値によって前記状態変数の前記現在の値を上書きするステップを有する、請求項16に記載の方法。
【請求項18】
前記状態変数の前記新しい値を算出するステップの後に、前記状態変数の前記現在の値を破棄するステップを更に有する、請求項16又は17に記載の方法。
【請求項19】
前記状態変数の値の関数として前記暗号クレデンシャル生成キーの値を決定するステップの後に、及び、前記状態変数の前記新しい値を算出するステップの後に、前記状態変数の前記現在の値を破棄するステップを更に有する、請求項16又は17に記載の方法。
【請求項20】
前記状態変数の前記現在の値を破棄するステップは、前記方法を実行する前記認証トークン又は前記認証クライアントの前記メモリから前記状態変数の前記現在の値のすべての複写を消去するステップを有する、請求項18又は19に記載の方法。
【請求項21】
前記動的認証クレデンシャルを算出するステップの後に、前記暗号クレデンシャル生成キーの値を破棄するステップを更に有する、請求項14乃至20のいずれか一項に記載の方法。
【請求項22】
前記暗号クレデンシャル生成キーの値を破棄するステップは、前記方法を実行する前記認証トークン又は認証クライアントの前記メモリから前記暗号クレデンシャル生成キーの値のすべての複写を消去するステップを有する、請求項21に記載の方法。
【請求項23】
コンピュータに基づいたアプリケーションとユーザーのやり取りを保護する方法であって、
認証クライアントにより、認証ステージにおいて、
動的変数クライアント値を取得するステップと、
暗号クレデンシャル生成キークライアント値を取得するステップと、
メモリから、パスコードブラインディングデータ要素値を読み出すステップと、
前記ユーザーから、パスコード値を受け取るステップと、
前記読み出したパスコードブラインディングデータ要素値及び前記受け取ったパスコード値の第1クライアント関数としてパスコードベリファイアデータ要素クライアント値を算出するステップと、
前記取得された動的変数クライアント値、前記取得された暗号クレデンシャル生成キークライアント値、及び前記算出されたパスコードベリファイアデータ要素クライアント値の第2クライアント関数として動的認証クレデンシャルを算出するステップと、
を実行するステップと、
認証サーバーにより、前記認証ステージにおいて、
前記動的認証クレデンシャルを受け取るステップと、
動的変数サーバー値を取得するステップと、
暗号クレデンシャル生成キーサーバー値を取得するステップと、
パスコードベリファイアデータ要素サーバー値を取得するステップと、
前記取得された動的変数サーバー値、前記取得された暗号クレデンシャル生成キーサーバー値、及び前記取得されたパスコードベリファイアデータ要素サーバー値の第1サーバー関数としてクレデンシャル基準値を算出するステップと、
前記受け取った動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしているかどうかを検証するステップと、
を実行するステップと、
前記認証クライアントにより、前記認証ステージにおいて、
現時点の状態変数クライアント値を保存するステップであって、これにより、前記暗号クレデンシャル生成キークライアント値を取得するステップは、前記認証クライアントにより、前記保存されている現時点の状態変数クライアント値から前記暗号クレデンシャル生成キークライアント値を導出するステップを有する、ステップと、
前記現時点の状態変数クライアント値の第3クライアント関数として新しい状態変数クライアント値を算出するステップと、
破棄された現時点の状態変数クライアント値の代わりに、前記新しい状態変数クライアント値を保存するステップと、
を実行するステップと、
前記認証サーバーにより、前記認証ステージにおいて、
現時点の状態変数サーバー値を保存するステップであって、これにより、前記認証サーバーにより、前記暗号クレデンシャル生成キーサーバー値を取得するステップは、前記認証サーバーにより、前記保存されている現時点の状態変数サーバー値から、前記暗号クレデンシャル生成キーサーバー値を導出するステップを有する、ステップと、
前記現時点の状態変数サーバー値の第2サーバー関数として新しい状態変数サーバー値を算出するステップと、
破棄された現時点の状態変数サーバー値の代わりに、前記新しい状態変数サーバー値を保存するステップと、
を実行するステップと、
を有する、方法。
【請求項24】
前記第1クライアント関数、前記第2クライアント関数、及び第1サーバー関数は、不可逆関数である、請求項23に記載の方法。
【請求項25】
前記認証サーバーにより、前記受け取った動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしているかどうかを通知する信号を生成するステップを更に有する、請求項23又は24に記載の方法。
【請求項26】
前記コンピュータに基づいたアプリケーションが、前記受け取った動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしている場合には、第1動作を実行し、前記受け取った動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしていない場合には、第2動作を実行するステップを更に有する、請求項23乃至25のいずれか一項に記載の方法。
【請求項27】
前記動的変数クライアント値は、前記動的変数サーバー値と同一であり、前記暗号クレデンシャル生成キークライアント値は、前記暗号クレデンシャル生成キーサーバー値と同一であり、前記パスコードベリファイアデータ要素クライアント値は、前記パスコードベリファイアデータ要素サーバー値と同一であり、前記動的認証クレデンシャルを算出するための前記第2クライアント関数は、前記クレデンシャル基準値を算出するための前記第1サーバー関数と実質的に同一である、請求項23乃至26のいずれか一項に記載の方法。
【請求項28】
前記動的変数クライアント値は、前記ユーザーによって認可されるべきトランザクションを表すトランザクションデータに基づき、前記方法は、
前記認証クライアントにより、前記トランザクションデータを前記ユーザーに対して表示するステップと、
前記認証クライアントにより、前記ユーザーから、前記表示されたトランザクションデータの承認を受け取るステップと、
を更に有する、請求項23乃至27のいずれか一項に記載の方法。
【請求項29】
前記動的認証クレデンシャルを算出するステップは、前記ユーザーが前記表示されたトランザクションデータを承認することを条件としている、請求項28に記載の方法。
【請求項30】
前記コンピュータに基づいたアプリケーションが、前記受け取った動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしている場合には、前記トランザクションを受け付け、前記受け取った動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしていない場合には、前記トランザクションを拒絶するステップを更に有する、請求項28又は29に記載の方法。
【請求項31】
前記第3クライアント関数及び前記第2サーバー関数は、不可逆関数である、請求項23乃至30のいずれか一項に記載の方法。
【請求項32】
前記認証クライアントにより、前記認証ステージにおいて、
前記動的認証クレデンシャルの計算の後に、前記暗号クレデンシャル生成キークライアント値を破棄するステップと、
前記新しい状態変数クライアント値の計算及び前記暗号クレデンシャル生成キークライアント値の導出の後に、前記現時点の状態変数クライアント値を破棄するステップと、
を実行するステップと、
前記認証サーバーにより、前記認証ステージにおいて、
前記クレデンシャル基準値の計算の後に、前記暗号クレデンシャル生成キーサーバー値を破棄するステップと、
前記新しい状態変数サーバー値の計算及び前記暗号クレデンシャル生成キーサーバー値の導出の後に、前記現時点の状態変数サーバー値を破棄するステップと、
を実行するステップと、
を更に有する、請求項31に記載の方法。
【請求項33】
前記現時点の状態変数サーバー値は、前記現時点の状態変数クライアント値と同一であり、前記新しい状態変数サーバー値は、前記新しい状態変数クライアント値と同一であり、前記第2サーバー関数は、前記第3クライアント関数と同一である、請求項31又は32に記載の方法。
【請求項34】
前記認証クライアントにより、前記認証ステージの前の初期化ステージにおいて、
前記パスコードブラインディングデータ要素値を生成するステップと、
前記認証ステージにおける後続の使用のために、前記生成されたパスコードブラインディングデータ要素値を保存するステップと、
前記ユーザーから初期パスコード値を受け取るステップと、
前記パスコードブラインディングデータ要素値及び前記受け取った初期パスコード値の前記第1クライアント関数として前記パスコードベリファイアデータ要素クライアント値を算出するステップと、
を実行するステップと、
前記認証サーバーにより、前記初期化ステージにおいて、
前記算出されたパスコードベリファイアデータ要素クライアント値を受け取るステップと、
前記認証ステージにおける後続の使用のために、前記パスコードベリファイアデータ要素サーバー値として前記受け取ったパスコードベリファイアデータ要素クライアント値を保存するステップと、
を実行するステップと、
を更に有する、請求項23乃至33のいずれか一項に記載の方法。
【請求項35】
前記初期化ステージにおいて、
前記認証クライアントにおいて、初期状態シードから導出された状態変数クライアント値に対する初期クライアント値を取得するステップと、
前記認証クライアントにおいて、現時点の状態変数クライアント値として前記状態変数クライアント値に対する前記取得された初期値を保存するステップと、
前記認証サーバーにおいて、前記初期状態シードから導出された状態変数サーバー値に対する初期サーバー値を取得するステップと、
前記認証サーバーにおいて、前記現時点の状態変数サーバー値として前記状態変数サーバー値に対する前記取得された初期値を保存するステップと、
を実行するステップを更に有する、請求項34に記載の方法。
【請求項36】
前記認証ステージにおいて、状態変数クライアント値と状態変数サーバー値とを同期化させるステップを更に有する、請求項31乃至35のいずれか一項に記載の方法。
【請求項37】
動的認証クレデンシャルを生成する装置であって、
前記装置のユーザーからパスコードを受け取るように適合されたユーザー入力インターフェイスと、
暗号計算を実行するように適合されたデータプロセッサと、
パスコードブラインディングデータ要素値を保存するためのメモリと、
を有し、
これにより、前記装置は、初期化ステージにおいて、
前記パスコードブラインディングデータ要素値を取得し、前記メモリ内に保存するよう適合され、
これにより、前記装置は、認証ステージにおいて、
動的変数値を取得し、前記ユーザー入力インターフェイスを通じて前記ユーザーの前記パスコードを受け取り、メモリから前記パスコードブラインディングデータ要素値を読み取り、前記受け取ったパスコード及び前記パスコードブラインディングデータ要素値の第1不可逆関数としてパスコードベリファイアデータ要素値を算出し、メモリから読み取った現時点の状態変数値から暗号クレデンシャル生成キーを取得し、前記取得された動的変数値、前記算出されたパスコードベリファイアデータ要素値、及び前記取得された暗号クレデンシャル生成キーの第2不可逆関数として動的認証クレデンシャルを算出するよう更に適合される、装置。
【請求項38】
前記初期化ステージにおいて、状態変数値に対する初期値を取得し、前記現時点の状態変数値として前記初期値を前記メモリ内に保存するよう更に適合され、
前記認証ステージにおいて、
メモリから前記現時点の状態変数値を読み取り、メモリから読み取った前記現時点の状態変数値から前記暗号クレデンシャル生成キーを導出することにより前記暗号クレデンシャル生成キーを取得し、前記動的認証クレデンシャルを算出した後に、前記導出された暗号クレデンシャル生成キーを破棄し、前記現時点の状態変数値の第3不可逆関数として前記状態変数値に対する新しい値を生成し、前記現時点の状態変数値からの前記暗号クレデンシャル生成キーの導出及び前記状態変数値の前記新しい値の生成の後に、前記現時点の状態変数値を破棄し、前記現時点の状態変数値の代わりに前記状態変数値の前記生成された新しい値を保存するよう更に適合される、請求項37に記載の装置。
【請求項39】
データを前記ユーザーに対して提示するためのユーザー出力インターフェイスを更に有する、請求項37又は38に記載の装置。
【請求項40】
前記ユーザーによって承認されるべきトランザクションを表すトランザクションデータを受け取り、前記ユーザー出力インターフェイスを通じて前記受け取ったトランザクションデータを前記ユーザーに対して提示し、前記ユーザーから、前記ユーザー入力インターフェイスを通じて前記提示されたトランザクションデータ用の承認を受け取るように更に適合される、請求項39に記載の装置。
【請求項41】
前記動的認証クレデンシャルの計算は、前記装置が前記提示されたトランザクションデータの前記ユーザーの前記承認を受け取ることを条件としている、請求項40に記載の装置。
【請求項42】
前記生成された動的認証クレデンシャルを認証サーバーによる検証のために利用可能とするよう更に適合される、請求項39乃至41のいずれか一項に記載の装置。
【請求項43】
前記ユーザーが前記認証サーバーに転送するように、前記ユーザー出力インターフェイスを通じて、前記生成された動的認証クレデンシャルを前記ユーザーに提示するよう更に適合される、請求項42に記載の装置。
【請求項44】
前記生成された動的認証クレデンシャルを直接的又は間接的に前記認証サーバーに送信するよう更に適合される、請求項42又は43に記載の装置。
【請求項45】
ランダム又は疑似ランダム数生成器を更に有し、前記装置は、前記初期化ステージにおいて、前記ランダム又は疑似ランダム数生成器によって生成されたランダム又は疑似ランダム数を取得し、前記ランダム又は疑似ランダム数の関数として前記パスコードブラインディングデータ要素値を取得するよう更に適合される、請求項37乃至44のいずれか一項に記載の装置。
【請求項46】
コンピュータに基づいたアプリケーションとユーザーのやり取りを保護するシステムであって、
認証クライアントと、
認証サーバーと、
を有し、
これにより、前記認証クライアントは、
前記認証クライアントのユーザーからパスコードを受け取るように適合されたユーザー入力インターフェイスと、
暗号計算を実行するように適合されたクライアントデータプロセッサと、
パスコードブラインディングデータ要素値及び状態変数クライアント値を保存するためのクライアントメモリと、
を有し、
これにより、前記認証クライアントは、初期化ステージにおいて、前記パスコードブラインディングデータ要素値を取得し、前記クライアントメモリ内に保存し、前記状態変数クライアント値に対する初期クライアント値を取得し、現時点の状態変数クライアント値として前記初期クライアント値を前記クライアントメモリ内に保存するように適合され、
これにより、前記認証クライアントは、認証ステージにおいて、動的変数クライアント値を取得し、前記ユーザー入力インターフェイスを通じて前記ユーザーの前記パスコードを受け取り、前記クライアントメモリから前記パスコードブラインディングデータ要素値を読み取り、前記受け取ったパスコード及び前記パスコードブラインディングデータ要素値の第1不可逆クライアント関数としてパスコードベリファイアデータ要素クライアント値を算出し、前記クライアントメモリから前記現時点の状態変数クライアント値を読み取り、前記クライアントメモリから読み取った前記現時点の状態変数クライアント値から暗号クレデンシャル生成キークライアント値を導出し、前記取得された動的変数クライアント値、前記算出されたパスコードベリファイアデータ要素クライアント値、及び前記導出された暗号クレデンシャル生成キークライアント値の第2不可逆クライアント関数として動的認証クレデンシャルを算出し、前記動的認証クレデンシャルを算出した後に前記導出された暗号クレデンシャル生成キークライアント値を破棄し、前記現時点の状態変数クライアント値の第3不可逆クライアント関数として前記状態変数クライアント値に対する新しい値を生成し、前記現時点の状態変数クライアント値からの前記暗号クレデンシャル生成キークライアント値の導出及び前記状態変数クライアント値の前記新しい値の生成の後に、前記現時点の状態変数クライアント値を破棄し、前記現時点の状態変数クライアント値の代わりに、前記状態変数クライアント値の前記生成された新しい値を保存するよう更に適合され、
これにより、前記認証サーバーは、
前記ユーザー又は前記認証クライアントと関連するデータセットを保存するように適合されたサーバーメモリと、
暗号動作を実行するように適合されたサーバーデータ処理コンポーネントと、
を有し、
これにより、前記認証サーバーは、前記初期化ステージにおいて、パスコードベリファイアデータ要素初期化値を受け取り、前記ユーザー又は前記認証クライアントと関連する前記データセットの一部分としてのパスコードベリファイアデータ要素サーバー値として、前記受け取ったパスコードベリファイアデータ要素初期化値を前記サーバーメモリ内に書き込み、初期状態変数サーバー値を取得し、前記ユーザー又は前記認証クライアントと関連する前記データセットの一部分としての現時点の状態変数サーバー値として、前記初期状態変数サーバー値を前記サーバーメモリ内に書き込むよう適合され、
これにより、前記認証サーバーは、前記認証ステージにおいて、前記生成された動的認証クレデンシャルを受け取り、動的変数サーバー値を取得し、前記サーバーメモリから、前記ユーザー又は前記認証クライアントと関連する前記データセットを読み取り、前記読み取ったデータセットから前記現時点の状態変数サーバー値を取得し、前記取得された現時点の状態変数サーバー値の関数として暗号クレデンシャル生成キーサーバー値を導出し、前記読み取ったデータセットから、前記パスコードベリファイアデータ要素サーバー値を取得し、前記取得された動的変数サーバー値、前記取得されたパスコードベリファイアデータ要素サーバー値、及び前記導出された暗号クレデンシャル生成キーサーバー値の第1不可逆サーバー関数としてクレデンシャル基準値を算出し、前記受け取った動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしているかどうかを検証し、前記クレデンシャル基準値の計算の後に前記暗号クレデンシャル生成キーサーバー値を破棄し、前記取得された現時点の状態変数サーバー値の第2不可逆サーバー関数として新しい状態変数サーバー値を算出し、前記暗号クレデンシャル生成キーサーバー値の導出及び前記新しい状態変数サーバー値の算出の後に、前記現時点の状態変数サーバー値を破棄し、前記ユーザー又は前記認証クライアントと関連する前記データセットの一部分として前記現時点の状態変数サーバー値の代わりに前記新しい状態変数サーバー値を前記サーバーメモリ内に書き込むよう更に適合される、システム。
【請求項47】
前記コンピュータに基づいたアプリケーションをホスティングするように適合されたアプリケーションサーバーを更に有し、
前記認証サーバーは、前記認証ステージにおいて、前記コンピュータに基づいたアプリケーションに、前記受け取った動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしているかどうかについて通知するように更に適合され、前記コンピュータに基づいたアプリケーションは、前記受け取った動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしている場合には、1つの動作を実行し、前記受け取った動的認証クレデンシャルが前記算出されたクレデンシャル基準値とマッチングしていない場合には、別の動作を実行するよう適合される、請求項46に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2015年12月30日付けで出願された「METHOD AND SYSTEM APPARATUS USING FORWARD−SECURE CRYPTOGRAPHY FOR PASSCODE VERIFICATION」という名称の米国仮特許出願第62/273,138号に関し、且つ、その利益を主張するものであり、この特許文献の内容は、引用により、本明細書に包含される。
【0002】
本発明は、コンピュータネットワーク上におけるコンピュータ及びアプリケーションに対するリモートアクセス並びにリモートトランザクションの保護に関する。更に詳しくは、本発明は、2要素認証トークンを伴う秘密パスコードを使用する方法、装置、及びシステムに関する。
【背景技術】
【0003】
コンピュータシステム及びアプリケーションのリモートアクセスの人気の増大に伴って、インターネットなどのパブリックネットワーク上においてリモートアクセスされるトランザクションの数及び多様性が劇的に拡大している。この人気は、セキュリティに対するニーズの重要性を示しており、具体的には、アプリケーションにリモートアクセスしている人々が、自身がそうであると主張している人物であることを保証する方法、リモート実施されているトランザクションが、正当な人物によって開始されていることを保証する方法、並びに、アプリケーションサーバーによって受け取られる前にトランザクションが変更されていないことを保証する方法に対するニーズの重要性を示している。
【0004】
コンピュータに基づいたアプリケーションとの間におけるユーザーのやり取りを保護するための1つの解決策は、2要素強力認証解決策の使用である。
【0005】
2要素認証解決策においては、正当なユーザーであると主張している人物が、2つの認証要素の証拠を認証検証エンティティに対して提供することにより、例えば、コンピュータに基づいたアプリケーションに対してユーザーを認証することができる。第1要素(「ユーザーが持っているもの」要素)は、特定のユーザーとリンク又は関連付けされうる特定のオブジェクト又はトークンに対するアクセスをユーザーが保有している又は有している、という証拠から構成されている。第2要素は、特定のユーザーとリンク又は関連付けされうる特定の情報片の知識をユーザーが有している、という証拠(「ユーザーが知っているもの」要素)から構成することができる。この特定の情報片は、秘密パスワード又は秘密PIN(Personal Identification Number)などの、正当なユーザー以外のその他の人物には知られていないと仮定されうる秘密を有することができる。この特定の情報片は、本説明の残りの部分においては、パスコードと呼称される場合がある。
【0006】
パスコードを使用して認証解決策のセキュリティを保証するには、パスコードの機密性を常に保証及び維持することが必須である。
【発明の概要】
【発明が解決しようとする課題】
【0007】
2要素強力認証解決策と共に使用されるパスコードの秘密性及機密性を保護する安全な解決策が必要とされている。
【課題を解決するための手段】
【0008】
本発明は、認証目的のために使用されているクライアント及びサーバー装置は、ハッキングされる場合があり、その結果、これらの装置上において保存されている情報が詐欺師の手に渡る場合がある、という本発明者らの洞察に基づいている。この盗まれた情報が、コンピュータに基づいたアプリケーションを認証する際にユーザーが使用しうるパスコードに関係している場合には、例えば、パスコード自体の取得などのように、これらのパスコードに関する知識を抽出するべく、この盗まれた情報が、なんらかの不正な者によって使用されうるリスクが存在している。いくつかのケースにおいては、ユーザーが、同一の又は類似のパスコードを複数のプラットフォーム及びアプリケーションに跨って使用している場合があることから、悪意を有する者がこのようなパスコードを発見することに由来しうる損害が、単一のコンピュータに基づいたアプリケーションをはるかに超えて拡大する場合がある。例えば、実際に、インターネットバンキングアプリケーションのユーザーが、自身のインターネットバンキングアプリケーションに対する認証のために、自身のバンクカードのうちの1つのバンクカードのPINと同一の、又はこれに非常に類似している、パスコードを選択することを排除することは、困難でありうる。
【0009】
クライアント装置又はサーバー装置のいずれもが、攻撃者が、パスコードの値を取得できるようにしうる、又はパスコードの可能な値の範囲を制約できるようにしうる、なんらの情報をも永久的に保存していない場合には、パスコードの使用に基づいた認証解決策の全体的なセキュリティを向上させることができる、というのが、本発明者らの洞察である。例えば、本発明のいくつかの実施形態においては、クライアント装置又はサーバー装置のいずれもが、パスコード値又はパスコード値から可逆的な方式によって算出されるデータ要素を永久的に保存していなくてもよい。又、本説明においては、クライアント装置は、クライアント、認証クライアント、認証トークン、又は強力認証トークンと呼称される場合がある。
【0010】
本発明による強力認証トーンの機能
いくつかの実施形態においては、強力認証トークンは、パスワードベリファイアデータ要素の値を動的変数の値及び秘密暗号キーの値と暗号方式によって組み合わせ、且つ、秘密暗号キーによってパラメータ化された暗号アルゴリズムを使用することにより、ワンタイムパスワード(OTP:One−Time Password)又は電子署名などの動的クレデンシャルを生成するように適合されてもよい。
【0011】
いくつかの実施形態においては、強力認証トークンは、パスコードを提供するようにユーザーに要求し、且つ、ユーザーによって提供されたパスコード値をパスコードブラインディングデータ要素の値と組み合わせることにより、パスコードベリファイアデータ要素の値を算出するように適合されてもよい。いくつかの実施形態においては、パスコードブラインディングデータ要素は、認証トークンにより、例えば、認証トークンによってアクセス可能であるなんらかの形態の永久的又は不揮発性メモリ内において保存されてもよい。いくつかの実施形態においては、ユーザーによって提供されるパスコード値は、例えば、暗号ハッシュ関数を有しうる、暗号一方向関数などの関数を使用することにより、保存されているパスコードブラインディングデータ要素の値と組み合わせられてもよい。いくつかの実施形態においては、パスコードブラインディングデータ要素は、強力認証トークンにより、一度だけ、生成されてもよく、且つ、次いで、将来の使用のために、強力認証トークンによって保存されてもよい。いくつかの実施形態においては、強力認証トークンは、予測不能な方式により、パスコードブラインディングデータ要素を生成してもよい。いくつかの実施形態においては、強力認証トークンは、パスコードの値とは独立した方式により、パスコードブラインディングデータ要素を生成してもよい。例えば、いくつかの実施形態においては、強力認証トークンは、ランダム数生成器又は疑似ランダム数生成器を使用することにより、パスコードブラインディングデータ要素を生成してもよい。いくつかの実施形態においては、パスコードブラインディングデータ要素は、ランダム数生成器又は疑似ランダム数生成器によって生成されたランダム数を有することができる。いくつかの実施形態においては、強力認証トークンは、強力認証トークンがパスコードベリファイアデータ要素の値を算出するべくパスコード値を使用したら、ユーザーが提供したパスコード値のすべての(一時的な)複写をそのメモリから消去するように適合されてもよい。又、いくつかの実施形態においては、強力認証トークンは、強力認証トークンが動的認証クレデンシャルを生成するべく算出済みのパスコードベリファイアデータ要素を使用したら、算出済みのパスコードベリファイアデータ要素のすべての(一時的な)複写をそのメモリから消去するように適合されてもよい。
【0012】
いくつかの実施形態においては、動的変数は、(例えば、ソフトウェアトークンがその上部において稼働中でありうるパーソナル演算装置などの強力認証トークンのクロックによって提供されうる)時間値の関数であってもよい。いくつかの実施形態においては、動的変数は、イベントに関係する変数の値の関数であってもよい。本説明においては、イベントに関係する変数という用語は、その値が、特定のイベントの発生の際に、更新アルゴリズムを使用して自動的に更新されうる変数を意味しうる。いくつかの実施形態においては、強力認証トークンは、特定のイベントの発生の際に、そのイベントに関係する変数の現時点の値の関数として、イベントに関係する変数の新しい値を算出してもよく、且つ、算出された新しい値によって現時点の値を置換してもよい。いくつかの実施形態においては、特定のイベントは、例えば、OTP又は電子署名を生成するための強力認証トークンによるイベントに関係する変数の使用を有することができる。いくつかの実施形態においては、イベントに関係した変数は、カウンタを有していてもよく、且つ、更新アルゴリズムは、カウンタの単調な増分(又は、減分)を有することができる。いくつかの実施形態においては、更新アルゴリズムは、例えば、一方向ハッシュアルゴリズムを有していてもよく、且つ、イベントに関係する変数は、一方向ハッシュアルゴリズムをイベントに関係する変数の古い値に対して適用した結果として得られる新しい値により、更新されてもよい。いくつかの実施形態においては、イベントに関係する変数は、秘密暗号キーを有していてもよく、或いは、動的クレデンシャルの生成において使用される秘密暗号キーは、イベントに関係する変数から導出されてもよい。例えば、いくつかの実施形態においては、秘密暗号キーの値は、秘密暗号キーがOTP又は電子署名を生成するべく使用されるたびに、秘密暗号キーの以前の値の関数でありうる新しい値により、更新されてもよい。いくつかの実施形態においては、イベントに関係する変数は、状態変数を有していてもよく、且つ、秘密暗号キーの値は、その状態変数の関数として算出されてもよく、状態変数は、特定のイベントの発生の際に、その状態変数の現時点の値の関数でありうる新しい値により、更新されてもよい。いくつかの実施形態においては、動的変数は、チャレンジに基づいたものであってもよく、チャレンジは、例えば、サーバーによって生成されてもよく、且つ、例えば、(例えば、ユーザーが、強力認証トークンを有する電子装置のユーザー入力インターフェイスを使用してチャレンジを入力することにより)強力認証トークンに対して提供されてもよい。いくつかの実施形態においては、動的変数は、(例えば、ユーザーが、強力認証トークンのユーザー入力インターフェイスを使用してトランザクションデータを入力することにより)強力認証トークンに対して提供されうるトランザクションデータに基づいたものであってもよい。いくつかの実施形態においては、動的変数は、上述のタイプの動的変数の任意の組合せを有していてもよい。
【0013】
パスコードベリファイアデータ要素の値を動的変数及び秘密暗号キーの値との間において暗号方式によって組み合わせた結果は、一般に、動的クレデンシャル又は動的認証クレデンシャルと呼称することができる。動的変数がトランザクションデータに基づいているケースにおいては、動的変数の値をパスコードベリファイアデータ要素の値及び秘密暗号キーの値との間において暗号方式によって組み合わせた結果は、電子署名と呼称することができる。動的変数がチャレンジに基づいているケースにおいては、動的変数の値をパスコードベリファイアデータ要素の値及び秘密暗号キーの値との間において暗号方式によって組み合わせた結果は、応答と呼称することができる。時間値又はイベントに関係する変数の値を伴うケースなどのように、動的変数が、強力認証トークによって内部的に生成及び/又は維持されるデータに基づいているケースにおいては、動的変数の値をパスコードベリファイアデータ要素の値及び秘密暗号キーの値との間において暗号方式によって組み合わせた結果は、ワンタイムパスワード(OTP)と呼称することができる。
【0014】
いくつかの実施形態においては、パスコードベリファイアデータ要素の値を動的変数の値及び秘密暗号キーの値との間において暗号方式によって組み合わせる暗号アルゴリズムは、秘密暗号キーによってパラメータ化されうる対称型暗号アルゴリズムを有していてもよく、且つ、強力認証トークンは、例えば、認証サーバーとの間において秘密暗号化キーを共有していてもよい。例えば、いくつかの実施形態においては、対称型暗号アルゴリズムは、動的変数の値に基づいて動作しうると共に秘密暗号キーによってパラメータ化されうる、AES(Adbanced Encryption Standard)などの、対称型暗号化又は暗号解読アルゴリズムを有していてもよい。いくつかの実施形態においては、対称型暗号アルゴリズムは、動的変数の値に基づいて動作しうると共に秘密暗号キーによってパラメータ化されうる、HMAC(Hash−based Message Authentication Code)などの、鍵付きハッシュアルゴリズムを有していてもよい。
【0015】
ソフトウェア及びハードウェアトークン
いくつかの実施形態においては、強力認証トークンは、パーソナルコンピュータ(PC:Personal Computer)、タブレットコンピュータ、又はスマートフォンなどの、ユーザーに属するパーソナル汎用電子演算装置上においてインストールされると共に稼働しているソフトウェアアプリケーションの形態を有していてもよく、これにより、ソフトウェアアプリケーションは、認証ソフトウェアアプリケーションの正当なユーザー用の認証サービスを提供するように適合されていてもよい。
【0016】
いくつかの実施形態においては、強力認証トークンは、その主な又は唯一の機能が、装置の正当なユーザー用の認証サービスを提供する、というものである、専用の電子ハードウェア装置を有していてもよい。
【0017】
これらの認証サービスは、本説明のどこか別のところにおいて更に詳細に説明されているように、ユーザーをリモートコンピュータに基づいたアプリケーションに対して認証すると共に/又は、ユーザーによってリモートコンピュータに基づいたアプリケーションに対してサブミットされたトランザクションを保護するなどの、ユーザーとコンピュータに基づいたアプリケーションの間におけるやり取りを保護するための動的クレデンシャルを生成するステップを有していてもよい。
【0018】
いくつかの実施形態の一般的な原理
いくつかの実施形態においては、本発明による認証プロトコルは、動的状態から生成される暗号キーのシーケンスを使用してもよく、この場合に、状態は、新しい状態が古い状態から見出されうるように、但し、この逆にはならないように、更新されている。状態の現時点の値は、認証クライアント(強力認証トークンなど)及び認証サーバーの両方により、同期した方式によって維持することができる。例えば、いくつかの実施形態においては、フォワードセキュア型のキー更新アルゴリズムを使用することにより、キー及び/又は状態のシーケンスを構築することができる。いくつかの実施形態においては、認証トークンは、認証クレデンシャルを生成するべく、認証トークンのユーザーによって認証トークンに提供されたものでありうるパスコードをこのような暗号キーと暗号方式によって組み合わせることができる。いくつかの実施形態においては、認証クレデンシャルの生成において使用される暗号キーは、例えば、強力認証トークンが認証クレデンシャルを生成した後に、毎回、強力認証トークンによって更新されうる、このような状態の現時点の値から、強力認証トークンにより、導出されてもよい。
【0019】
いくつかの実施形態においては、パスコードは、直接的には使用されておらず、「パスコードベリファイア」を生成するためにのみ、使用されており、パスコードベリファイアは、パスコード及びパスコードブラインディングデータ要素から形成されている。パスコードブラインディングデータ要素は、初期化ステージにおいて、認証トークンにより、例えば、生成されるなどのように、取得されてもよく、且つ、例えば、パスコード値からパスコードベリファイア値を生成するなどの、将来の使用のために、認証トークン上において、且つ、認証トークン上においてのみ、永久的に保存されてもよい。パスコードベリファイアは、結果的に得られたパスコードベリファイアに対して逆関数を適用することにより、パスコード値を算出することができないように、一方向関数を使用して生成することができる。パスコードブラインディングデータ要素は、高エントロピーを有していてもよく、且つ、パスコードベリファイアは、パスコードブラインディングデータ要素が既知でない場合に、ブルートフォース攻撃により、実際のパスコード値をパスコードベリファイアから取得することが実際に実現不能となりうるように、高エントロピーを有するように、生成することができる。例えば、パスコードベリファイアは、ハッシュ関数を、好ましくは、SHA−256などの暗号方式によって保護されたハッシュ関数を、パスコード値とパスコードブラインディングデータ要素の、連結などの、組合せに対して適用することにより、認証トークンによって算出することができる。パスコードブラインディングデータ要素は、真の又は疑似的なランダム数生成器によって生成されたものであってもよい。いくつかの実施形態においては、パスコードブラインディング数は、認証トークンによって生成された真の又は疑似的なランダムデータに基づいて生成することができる。いくつかの実施形態においては、パスコードブラインディング数は、認証サーバーによって生成された真の又は疑似的なランダムデータに基づいて生成することができる。いくつかの実施形態においては、パスコードブラインディング数は、認証トークンによって生成された真の又は疑似的なランダムデータと認証サーバーによって生成された真の又は疑似的なランダムデータの組合せに基づいて生成することができる。実際のパスコードは、使用が完了するたびに、且つ、使用された後に即座に、認証トークンから消去されてもよい。初期化ステージにおいては、パスコードベリファイアは、保護された方式により、検証又は認証サーバーに転送されていてもよく、且つ、例えば、認証トークンによって生成された動的認証クレデンシャルの検証などの、将来の使用のために、検証又は認証サーバー上において、且つ、検証又は認証トークン上においてのみ、永久的に保存されてもよい。
【0020】
いくつかの実施形態においては、それぞれの生成された動的認証クレデンシャルは、それぞれの生成されたクレデンシャルごとに更新される鍵付きHMAC(HMAC under a key)であってもよい。HMACに対する入力の1つは、パスコードベリファイアであってもよい。クレデンシャルの検証が完了した後に、古いキーが破棄されてもよく、且つ、状態が更新されてもよい。この結果、検証サーバーは、パスコードについて知ることができない(検証サーバーは、パスコードデータ要素ではなく、パスコードベリファイアの複写を有するのみであり、この結果、サーバーにおいて保持されているパスコードベリファイアの複写に対してブルートフォース攻撃を適用することにより、実際のパスコード値を取得することができない)。
【0021】
認証トークンは、パスコードを決して保存することがなく、従って、認証トークンからの情報の抽出により、パスコートを発見することはできない(パスコードブラインディング要素は、認証トークン上において保存されているが、これは、パスコードベリファイアの知識を伴うことなしにブルートフォース攻撃によってパスコードの値を取得するべく、使用することができない)。
【0022】
又、古いクレデンシャル及び認証トークンの現時点の状態が付与された状態において、パスコードを発見することは不可能であり、その理由は、候補パスコードを試験するために必要とされるキーのサーバー及びクライアントの両方による破壊が完了した状態にあるからである。
【0023】
本発明のプロトコル、システム、及び方法のその他の態様は、サーバー及びクライアントを同期状態において維持する方法に関係しうるが、これは、状態を更新する時期に関する特定の規則を順守することによるものであってもよい。これらの態様の更なる詳細については、本説明のどこか別のところにおいて記述されている。
【0024】
又、いくつかの実施形態においては、本説明において記述されている技法は、例えば、低エントロピーを有しうることから、秘密状態において留まることを要する、且つ、ブルートフォース攻撃に対して脆弱でありうる、あらゆる機密を含むユーザー認証に関係するデータに対して適用することができる。又、例えば、これら技法は、そのいずれもがパスコードの例でありうる、PIN、パスワード、及び生体計測テンプレートに対して適用されてもよい。
【0025】
特定の実施形態
以下の節においては、本発明の実施形態の特定の組について説明することとする。
【0026】
用語及び定義
−PRNG(長さ):暗号方式によって保護されたランダム数生成器からの「長さ」ビットのビットストリングであり、ランダム数生成器は、真のランダム数生成器又は疑似的なランダム数生成器を有しうる。
【0027】
−IENCODE(i,長さ):左側の桁がゼロによって充填されたビッグエンディアン整数としての数「I」を「長さ」ビットにエンコーディングした結果であるビットストリングを表記している。
【0028】
−<>:ゼロの長さのバイトストリングを表記している。
【0029】
−{a,b,c...}:所与の順序においてビットストリング「a」,「b」,「c」,...を連結した結果を表記している。
【0030】
−S:そうではない旨が規定されていない限り、認証サーバーを意味しており、且つ、認証サーバーによって実行された動作又はステップをも示しうる。
【0031】
−C:そうではない旨が規定されていない限り、認証トークン又は認証クライアントアプリケーションなどの認証クライアントを意味しており、且つ、認証クライアントによって実行された動作又はステップをも示しうる。
【0032】
−「Sender→Receiver:Message」という表現:ビットストリング「Message」がエンティティ「Sender」からエンティティ「Receiver」に送信されることを意味している。これは、「Sender」から「Receiver」への「Message」の転送の前のビットストリーム「Message」のエンティティ「Sender」による生成を更に意味しうる。
【0033】
暗号プリミティブ
暗号化プリミティブ
「ciphertext=ENC(K,IV,Data)」という表現は、(選択された暗号化アルゴリズムにおいて適用可能である場合に)初期化ベクトル「IV」を使用して暗号暗号化キー「K」によってパラメータ化された暗号暗号化アルゴリズムを使用することにより、結果「ciphertext」を取得するべく、ビットストリング「Data」を暗号化するステップを表記している。いくつかの実施形態においては、暗号化アルゴリズムは、対称型暗号化アルゴリズムを有することができる。いくつかの実施形態においては、対称型アルゴリズムは、なんらかの暗号化モードにおいて、AES(Advanced Encryption Standard)又は3DES(Triple Data Encryption Standard)などの、ブロック暗号を有することができる。例えば、いくつかの実施形態においては、AESアルゴリズムは、CTRモードにおいて使用されてもよく(カウンタモードであり、ウェブアドレス「en.wikipedia.org/wiki/Block_cipher_mode_of_operation#CTR」に位置しているウェブサイトをも参照されたい。この内容は、引用により、本明細書に包含される)、且つ、キーKは、128ビットのサイズを有していてもよく、且つ、CTRモード用のカウンタの開始値は、初期化ベクトルから算出されてもよい。いくつかの実施形態においては、CTRモード用のカウンタの開始値は、例えば、IV<<64などのように、いくつかの位置にわたって左シフトされた初期化ベクトルとして算出されてもよい。いくつかの実施形態においては、初期化ベクトルは、カウンタ「CTR」及びランダム数から算出されてもよい。例えば、初期化ベクトルは、IV(CTR)={IENCODE(CTR,6×8),PRNG(2×8)}として、カウンタ「CTR」の関数として算出されてもよい。
【0034】
クレデンシャル生成プリミティブ
いくつかの実施形態においては、クレデンシャルは、入力としてキー「K」及びビットストリング「Data」を使用する暗号関数を使用することにより、キー「K」及び入力ビットストリング「Data」を使用して算出することができる。例えば、いくつかの実施形態においては、クレデンシャルは、入力としてキー「K」及びビットストリング「Data」を使用することにより、メッセー認証コード(MAC)として算出されてもよい。いくつかの実施形態においては、クレデンシャルを算出するための暗号関数は、キー「K」下におけるビットストリング「Data」の暗号化(又は、暗号解読)を有することができる。いくつかの実施形態においては、クレデンシャルを算出するための暗号関数は、一方向関数を有することができる。いくつかの実施形態においては、一方向関数は、暗号ハッシュ関数を有することができる。いくつかの実施形態においては、一方向関数は、鍵付きハッシュ関数を有することができる。例えば、いくつかの実施形態においては、クレデンシャルは、MAC=HMAC(K,Data)として算出されてもよく、これにより、HMACは、RFC2104によって規定されているHMAC、或いは、RFC4231によって規定されているSHA−256のHMACなどの、キーKの下におけるデータのハッシュに基づいたメッセージ認証コードを表記している。いくつかの実施形態においては、キーKは、128ビットのサイズを有することができる。いくつかの実施形態においては、結果的に得られる暗号文、ハッシュ、又はMACは、切り捨てられてもよい。いくつかの実施形態においては、Dataは、8ビットの倍数でない場合には、次のバイト境界まで左側の桁にゼロが充填されている。
【0035】
キー更新プリミティブ
表現「statei+1,keyi+1=UPDATE(statei)」は、状態の古い値「statei」から始まって、そのキーの「keyi+1」及びその状態の「statei+1」という新しい値を算出するべく、なんらかの暗号キー及び状態更新アルゴリズムを使用すると共に(適用可能である場合に)キー及び状態の古い値を新たに算出された値によって置換することにより、キー及び状態の値を更新するステップを表記している。いくつかの実施形態においては、状態の新しい値は、状態の現時点の値を入力として取得する第1不可逆関数を使用することにより、状態の現時点の値から算出することができる。いくつかの実施形態においては、暗号キーの新しい値は、状態の現時点の値を入力として取得する第2不可逆関数を使用することにより、状態の現時点の値から算出することができる。いくつかの実施形態においては、状態の現時点の値から状態及び暗号キーの新しい値を算出する不可逆関数は、例えば、セキュア暗号ハッシュ関数を有することができる。いくつかの実施形態においては、暗号キー及び状態更新アルゴリズムは、「“Forward−Security in Private−Key Cryptography” by Mihir Bellare and Bennet Yee, Springer LNCS 2612」において開示されているキー更新アルゴリズムなどの、キー更新アルゴリズムを有することができる。いくつかの実施形態においては、暗号キー及び状態更新アルゴリズムは、次式のように定義することができる。
【0036】
−keyi+1=ENC(statei,IV_1,Data_1)
【0037】
この場合に、特定の一実施形態においては、Data_1は、0x00...0x00という16バイトから構成されていてもよく、且つ、IV_1は、値0を有することができる。
【0038】
−statei+1=ENC(statei,IV_2,Data_2)
【0039】
この場合に、特定の一実施形態においては、Data_2は、0x00...0x00という16バイトから構成されていてもよく、且つ、IV_2は、値263を有することができる。
【0040】
定数
いくつかの実施形態においては、いくつかの定数を使用することができる。例えば、いくつかの実施形態においては、VERSION、MSG_CHALLENGE、MSG_RESPONSE、MSG_ACTIVATION_CHALLENGE、MSG_ACTIVATION_RESPONSEという定数が使用されてもよく、この場合に、後者の4つの定数は、いずれも、互いに異なっている値を有しうる。特定の一実施形態においては、これらの定数は、以下の値を有することができる。
VERSION:=IENCODE(0,8)
MSG_CHALLENGE:=IENCODE(1,4)
MSG_RESPONSE:=IENCODE(2,4)
MSG_ACTIVATION_CHALLENGE:=IENCODE(3,4)
MSG_ACTIVATION_RESPONSE:=IENCODE(4,4)
【0041】
パラメータ及び初期構成
すべてのパラメータは、特定の認証トークン−サーバーの組合せにおけるものである。特定の認証トークン用にサーバーによって取得されたデータは、ログインしようとしている又はログインが完了している、特定のユーザーアカウントに対応しうる。サーバーによって取得されたデータは、特定の認証トークンに、或いは、起動された認証アプリケーションの特定のインスタンスに、対応しうる。
【0042】
【表1】
【0043】
仮定及び注記
いくつかの実施形態においては、攻撃者は、認証トークンとサーバーの間のメッセージを伝達しているネットワークを制御することができると共に、完全なMitM(Man−in−the−Middle)攻撃を開始する能力を有しうるものと仮定することができる。又、いくつかの実施形態においては、認証トークン又はアプリケーションが保護されているものと仮定することもできる。又、いくつかの実施形態においては、サーバーが保護されているものと仮定することもできる。
【0044】
いくつかの実施形態においては、認証トークンは、セキュアハードウェアを使用して実装されてもよく、且つ、認証トークンは、任意のメッセージをMAC及び/又は暗号解読することが可能であってもよいが、キーをリリースすることはできない。このような実施形態においては、メッセージ内にノンスを含むことが有利でありうる。認証トークンに対する一時的なアクセスしか有していない攻撃者は、任意の将来のトランザクションのノンスを予測することができない。
【0045】
クライアントの事前起動
いくつかの実施形態においては、Challenge MAC key、KCMAC:=KSMAC、Encryption key KCENC:=KSENC、Response state SCRES:=SSRES、Activation MAC key KCACT:= KSACTというデータ要素が、上述のように、サーバーによって生成されてもよく、且つ、クライアントの事前起動の際に、サーバーからクライアントに転送されてもよい。
【0046】
起動サブプロトコル
概要
いくつかの実施形態においては、認証トークン又はアプリケーションの初期状態は、先程示したものなどであってもよい。トランザクション署名又は動的クレデンシャル生成を実行しうる前に、認証トークン又はアプリケーションを起動することが必要でありうる。いくつかの実施形態においては、起動は、一度だけ、実行することができるが、これは、パスコードの変更に緊密に関係付けられうる。起動の最終結果は、一方においては、サーバーが、パスコードベリファイア(PV:Passcode Verifier)の複写を有することができる、というものであってよく、他方においては、クライアントが、パスコードブラインディングデータ要素(PR)の対応する値の保存を完了した状態でありうる、というものであってもよい。このステップは、サーバーが、ユーザーのパスコートについて知ることがないが、そのパスコードが、サーバーによって受領済みでありうるクレデンシャルの生成のために正しく入力されたかどうかを検証しうるように、実行されてもよい。パスコードベリファイアの値を有しうる、クライアントからの応答メッセージは、だれかが、例えば、スマートフォンを有しうる、認証トークンを盗み、且つ、認証トークンによって生成されたクレデンシャルを観察した場合に、その人物がユーザーのパスコードを想像することができないように、フォワードセキュアキーの下において暗号化されてもよい。
【0047】
詳細
いくつかの実施形態においては、ユーザーは、サーバーにコンタクトしてもよく、且つ、起動手順を開始することができる。起動手順又は起動プロトコルは、以下のステップを有することができる。
【0048】
ステップ1:いくつかの実施形態においては、起動メッセージが、サーバーによって生成されてもよく、且つ、以下のように、サーバーからクライアントに転送されてもよい。
S→C: {Version,Service ID,User ID,IV,ENC(KSENC,IV,{Transaction,Type,Nonce,Activation_MAC})}
ここでは、以下のとおりである。
Version= VERSION
Service ID= IDSS
User ID= IDSU
IV= IV(CS)
Transaction= IENCODE(0, 212)
Type= MSG_ACTIVATION_CHALLENGE
Nonce= PRNG(128)
Activation_MAC= HMAC(KSMAC,{Version,Type,Transaction,Nonce,IV});いくつかの実施形態においては、Activation_MACは、64ビットに切り捨てられてもよい。
【0049】
ステップ2:キーKTACT及び状態SSRESが、サーバー上において更新されてもよい。
S:SSRES,KTACT:=UPDATE(SSRES)
【0050】
ステップ3:クライアントは、起動メッセージを受け取ってもよく、且つ、これを暗号解読することができる。
【0051】
ステップ4:クライアントは、IDCUがIDSUと等しいかどうかを検証することができる。IDCU!=IDSUである場合に、クライアントは、エラーメッセージを表示してもよく、且つ、終了してもよい。
【0052】
ステップ5:クライアントは、起動メッセージの暗号化された部分を暗号解読してもよく、且つ、Activation_MACを検証してもよく、クライアントは、これに失敗した場合に、終了することができる。
【0053】
ステップ6:クライアントは、初期ベクトルIVからカウンタを抽出してもよく、且つ、(IVから抽出された)そのカウンタ<=カウンタの最後の既知の値であるか、或いは、>カウンタの最後の既知の値+100である、場合に、クライアントは、異常終了してもよい。
【0054】
ステップ7:クライアントは、パスコードブラインディングデータ要素を取得することができる。例えば、クライアントは、パスコードブラインディングデータ要素の値をまだ有していない場合には、パスコードブラインディングデータ要素をランダム数として生成することができる。例えば、特定の一実施形態においては、C:PR==<> then PR:=PRNG(128)である。
【0055】
ステップ8:クライアントは、パスコードの値を提供するようにユーザーに要求してもよく、且つ、ユーザーによって提供されたパスコードをキャプチャしてもよい。いくつかの実施形態においては、ユーザーは、確認のためにパスコードを二度にわたって提供するように要求されてもよく、且つ、クライアントは、ユーザーによって提供されたパスコードの2つの値が一貫性を有することを検証するように適合されていてもよい。
【0056】
ステップ9:状態及びキーがクライアント上において更新されてもよい(これは、IVから抽出されたカウンタの値とカウンタの最後の既知の値の間の差に応じて反復されてもよい)。
C:SCRES,K:=UPDATE(SCRES)
【0057】
ステップ10:応答が生成されている。
C→S: ENC(K,0,{V,HMAC(KCACT,{Version,Type,Transaction,V})
ここでは、以下のとおりである。
Version= VERSION
Type= MSG_ACTIVATION_RESPONSE
Transaction= IENCODE(0,212)
V= HMAC(PR,passcode)(30ビットに切り捨てられる)
HMAC(KCACT,msg)は、15ビットに切り捨てられる。
【0058】
ステップ11:S:サーバーは、応答をKTACTによって暗号解読してもよく、且つ、これをKCACTによって検証してもよく、且つ、PV:=Vと設定してもよい。
【0059】
認証サブプロトコル
概要
この認証サブプロトコルは、ユーザーが、自身を認証することを許容するべく、或いは、特定のトランザクションを認可することを許容するべく、実行されてもよい。結果は、例えば、ユーザーによって提供された認証クレデンシャルの検証に成功した際に、ユーザーが正しいトランザクション詳細を観察していると共に正しいパスコードを入力したとサーバーが結論付けるというものであってもよい。サーバーは、パスコード自体について知ってはいない。すべての通信を記録している盗聴者も、電話機を盗んだ後においてさえ、(MACキーが、使用の後に破棄されていることから)パスコードを取得可能ではない。
【0060】
詳細
ステップ1:いくつかの実施形態においては、ユーザーは、サーバーにコンタクトしてもよく、且つ、認証又はトランザクションを開始することができる。
【0061】
ステップ2:クライアントは、動的変数の値を取得することができる。いくつかの実施形態においては、動的変数の値は、クライアントによって維持されているカウンタに基づいたものであってもよい。いくつかの実施形態においては、クライアントは、そのこのようなカウンタの値をサーバーによって維持されている対応するカウンタ値と同期化させることができる。いくつかの実施形態においては、動的変数の値は、例えば、クライアントがサーバーからメッセージ内において受け取りうる外部データ要素に基づいたものであってもよい。外部データ要素は、例えば、サーバーによって生成されうるチャレンジ及び/又はノンスを有することができる。又、外部データ要素は、例えば、ユーザーによって認可されるべきトランザクションを表すトランザクションデータを有することもできる。いくつかの実施形態においては、サーバーは、例えば、メッセージ認証コード(MAC)を追加することにより、メッセージを認証することができる。又、いくつかの実施形態においては、サーバーは、サーバーメッセージを暗号化することもできる。例えば、特定の一実施形態においては、サーバーは、チャレンジメッセージを生成してもよく、且つ、クライアントに以下のように送信してもよい。
S−> C: {Version, Service ID,User ID,IV,
ENC(KSENC,IV,{Transaction,Type,Nonce,Challenge_MAC})}
ここでは、以下のとおりである。
Version= VERSION
Service ID= IDSS
User ID= IDSU
IV= IV(CS)
トランザクション=認可されるべきトランザクションのエンコーディングされた詳細を有していてもよく、いくつかのケースにおいては、「Transaction」は、ユーザーにとっては無意味でありうる(ランダムな)チャレンジによってエンコーディングされてもよく、或いは、これは、例えば、認証サブプロトコルが、特定のトランザクションの認可のためにではなく、ユーザーの認証のために使用されている場合には、既定の値によってエンコーディングされてもよい。
Type=MSG_CHALLENGE
Nonce= PRNG(128)
Challenge_MAC= HMAC(KSMAC,{Version,Type,Transaction,Nonce,IV}), 64ビットに切り捨てられる
【0062】
ステップ3:キーK及び状態SSRESをサーバー上において更新することができる。
S:SSRES,K:=UPDATE(SSRES)
【0063】
ステップ4:サーバーは、予想応答を生成してもよく(これは、いくつかの実施形態においては、30ビットに切り捨てられてもよい)、予想応答は、サーバーが後からクライアントから受け取りうる認証クレデンシャルと比較されるべきクレデンシャル基準値として機能することができる。
S:E=HMAC(K,{Version,Type,Transaction,Nonce,IV,PV})
ここでは、以下のとおりである。
Version= VERSION
Type=MSG_RESPONSE
トランザクション、ノンス、IVは、チャレンジメッセージから取得される。
【0064】
ステップ5:クライアントは、受け取られたチャレンジメッセージを暗号解読することができる。
【0065】
ステップ6:C:IDCU!=IDSUである場合に、エラーメッセージを表示し、且つ、終了する。
【0066】
ステップ7:クライアントは、受け取られたチャレンジメッセージを暗号解読してもよく、且つ、メッセージの発信元を認証するべく、Challenge_MACを検証してもよい。この検証に失敗した場合には、クライアントは、異常終了することができる。
【0067】
ステップ8:(IVから抽出された)カウンタ<=最後のカウンタであるか、或いは、>最後のカウンタ+100である場合に、クライアントは、異常終了することができる。
【0068】
ステップ9a:クライアントは、トランザクションにおいてエンコーディングされたトランザクションデータをユーザーに提示してもよく、且つ、提示されたトランザクションデータを認可するようにユーザーに要求することができる。トランザクションが(ハードコーディングされた値又はハッシュ値などの)有意なデータを含んでいない場合には、このステップは、スキップされてもよい。ユーザーが、提示されたトランザクションデータを認可しない場合には、クライアントは、異常終了することができる。
【0069】
ステップ9b:クライアントは、パスコードを提供するようにユーザーに要求することができる。ユーザーがパスコードを提供しない場合には、クライアントは、異常終了することができる。いくつかの実施形態においては、ユーザーは、パスコードを提供することにより、(例えば、提示されたトランザクションデータの)認可を黙示的に通知することができる。
【0070】
ステップ10:キーK及び状態SCRESをクライアント上において更新することができる(これは、クライアントの状態をサーバーの状態と同期させるべく、カウンタに基づいて、いくつかの回数にわたって、反復されてもよい)。
C:SCRES,K:=UPDATE(SCRES);
【0071】
ステップ11:クライアントは、サーバーからチャレンジメッセージを受け取るのに応答して、認証クレデンシャルを生成してもよく、且つ、クライアントは、以下のように、生成された認証クレデンシャルをサーバーに返すことができる。
C−>S:HMAC(K,{Version,Type,Transaction,Nonce,IV,V})
ここでは、以下のとおりである。
Version= VERSION(8ビットになるように、左側の桁にゼロを充填することができる)
Type=MSG_RESPONSE
トランザクション、ノンス、IVは、チャレンジメッセージから取得される。
V=HMAC(PR,passcode)
いくつかの実施形態においては、生成されたクレデンシャルは、30ビットに切り捨てられてもよい。
【0072】
ステップ12:サーバーは、認証クレデンシャルが予想応答Eとマッチングしているかどうかを検証することができる。いくつかの実施形態においては、サーバーは、認証クレデンシャルの検証に成功したかどうかを通知する信号を生成することができる。
【0073】
可能な変形
いくつかの実施形態においては、完全を期すべく、ユーザーID及び/又はサービスIDがMAC内に包含されていてもよい。
【0074】
いくつかの実施形態においては、メッセージタイプは、メッセージの残りの部分が暗号解読される方式を決定するべく使用されうるように、メッセージの先頭に移動されてもよい。
【0075】
本発明のいくつかの実施形態においては、パスコードは、例えば、PIN又はパスワードなどの、ユーザーによって提供される秘密情報を有することができる。その他の実施形態においては、パスコードは、その他の情報を有していてもよく、その他の情報は、ユーザーに関係付けられていてもよく、或いは、ユーザーに固有のものであってもよく、且つ、例えば、いくつかの種類の生体計測情報などのように、機密的特性を有しうると共に秘匿状態において留まることを要する。
【0076】
本発明の以上の且つその他の特徴及び利点については、以下の添付図面において示されている本発明の実施形態に関する以下の更に具体的な説明から、明らかとなろう。
【図面の簡単な説明】
【0077】
図1】本発明の一態様による例示用の装置を概略的に示す。
図2】本発明の一態様による例示用のシステムを概略的に示す。
図3】本発明の一実施形態による例示用の方法を概略的に示す。
図4】本発明の一態様による動的認証クレデンシャルを検証する例示用の方法を概略的に示す。
【発明を実施するための形態】
【0078】
以下、本発明のいくつかの実装形態について説明する。特定の実装形態が説明されているが、これは、例示を目的として実行されるものに過ぎないことを理解されたい。当業者は、本発明の精神及び範囲を逸脱することなしに、その他のコンポーネント及び構成が使用されうることを認識するであろう。
【0079】
図1は、本発明の一態様による本発明の例示用の装置又はトークン(100)を概略的に示している。
【0080】
いくつかの実施形態においては、装置又はトークン(100)は、強力認証トークンを有することができる。いくつかの実施形態においては、装置又はトークンは、例えば、その主な又は唯一の機能が、装置の正当なユーザー用の認証サービスを提供する、というものである、専用の電子ハードウェア装置を有することができる。いくつかの実施形態においては、装置又はトークン(100)は、PC(パーソナルコンピュータ)、タブレットコンピュータ、スマートフォン、又はスマートウォッチなどの、パーソナル汎用演算装置を有することができる。いくつかの実施形態においては、装置又はトークン(100)は、本説明のどこか別のところにおいて更に詳細に記述されている強力認証トークン又は認証クライアントのいずれかを有することができる。いくつかの実施形態においては、装置又はトークン(100)は、本説明のどこか別のところで更に詳細に記述されている強力認証トークン又は認証クライアントのいずれかによって実行される方法ステップ又は動作のいずれかを実行するように適合されていてもよい。
【0081】
装置又はトークン(100)は、人間ユーザー入力インターフェイス(120)と、人間ユーザー出力インターフェイス(130)と、データ入力インターフェイス(140)と、データプロセッサ(150)と、メモリコンポーネント(160)と、動的変数の値を提供するためのコンポーネント(170)と、を有することができる。
【0082】
プロセッサ(150)及びメモリ(160)
トークンは、例えば、本説明のどこか別のところにおいて更に詳細に記述されている強力認証トークン又は認証クライアントのいずれかに帰される関数の1つ又は複数を実装するべく、データ処理命令の組を実行するように適合されうるデジタルデータ処理コンポーネント(150)を有することができる。いくつかの実施形態においては、データ処理コンポーネント(150)は、例えば、1つ又は複数のマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP:Digital Signal Processor)チップ、フィールドプログラム可能なゲートアレイ(FPGA:Field Programmable Gate Array)、アプリケーション固有の集積回路(ASIC:Application Specific Integrated Circuit)などを有することができる。
【0083】
トークンは、メモリコンポーネント(160)を有することができる。メモリコンポーネント(160)は、デジタルデータ処理コンポーネント(150)に接続されていてもよい。いくつかの実施形態においては、メモリコンポーネントは、データ処理コンポーネントによって実行されるべきソフトウェア又はファームウェアを保存するように適合されたプログラムメモリコンポーネントを有することができる。いくつかの実施形態においては、トークンがサポートしている機能は、そのメモリ内において保存されているソフトウェア又はファームウェアによって定義されうる。
【0084】
いくつかの実施形態においては、メモリコンポーネント(160)は、データを永久的又は一時的に保存するように適合されたデータメモリコンポーネントを有することができる。いくつかの実施形態においては、データメモリコンポーネントは、暗号キー又はパスコードブラインディングデータ要素などの秘密データを安全に保存するように適合されていてもよい。いくつかの実施形態においては、データメモリコンポーネントは、複数のトークンインスタンスのデータを保存するように適合されていてもよい。
【0085】
メモリコンポーネントは、例えば、RAM(Random Access Memory)メモリ、ROM(Read−Only Memory)メモリ、EPROM(Erasable Programmable Read−Only Memory)メモリ、ワンタイムプログラム可能メモリ、フラッシュメモリ、半導体メモリ、ハードディスクなどを有することができる。
【0086】
トークンは、トークンが、例えば、パスコードブラインディングデータ要素を生成するべく、使用しうるランダム又は疑似ランダム数生成器を更に有することができる。
【0087】
ユーザーインターフェイス(120、130)
いくつかの実施形態においては、強力認証トークンは、例えば、ユーザーとの間において、データ、情報、及び/又はコマンドを交換するべく、ユーザーとやり取りするためのユーザーインターフェイス(120、130)を有することができる。ユーザーインターフェイス(120、130)は、デジタルデータ処理コンポーネント(150)に接続されていてもよい。
【0088】
いくつかの実施形態においては、強力認証トークンのユーザーインターフェイスは、情報及び/又はデータ(ユーザー用の命令又はメッセージ、ユーザーによって承認されるべきトランザクションデータ、強力認証トークンによって生成された動的クレデンシャルなど)を強力認証トークンのユーザーに提示するための出力ユーザーインターフェイス(130)を有することができる。いくつかの実施形態においては、出力ユーザーインターフェイスは、例えば、ディスプレイ(130)又はオーディオ出力インターフェイスを有することができる。いくつかの実施形態においては、強力認証トークンのユーザーインターフェイスは、例えば、(チャレンジ又はトランザクションデータのような)入力データ又は(確認、認可、又は取り消しのような)命令又はパスコードなどの、入力をユーザーから受け取るための入力ユーザーインターフェイス(120)を有することができる。いくつかの実施形態においては、入力ユーザーインターフェイスは、例えば、キーボード(120)を有することができる。いくつかの実施形態においては、強力認証トークンのユーザーインターフェイスは、ユーザー出力インターフェイス及びユーザー入力インターフェイスの両方の機能を提供するように適合されうるタッチスクリーンを有することができる。
【0089】
データ入力インターフェイス(140)
いくつかの実施形態においては、強力認証トークンは、デジタルデータ入力インターフェイスを有することができる。データ入力インターフェイス(140)は、デジタルデータ処理コンポーネント(150)に接続されていてもよい。いくつかの実施形態においては、強力認証トークンのデジタルデータ入力インターフェイスは、デジタルデータメッセージを受け取るように適合されていてもよい。いくつかの実施形態においては、デジタルデータ入力インターフェイスは、例えば、インターネット接続を有することができる。いくつかの実施形態においては、デジタルデータ入力インターフェイスは、例えば、ユニバーサルシリアルバス(USB)接続などのローカル有線データ接続を有することができる。いくつかの実施形態においては、デジタルデータ入力インターフェイスは、例えば、BLUETOOTH又はWi−Fiインターフェイスなどの、ローカル無線データインターフェイスを有することができる。いくつかの実施形態においては、デジタルデータ入力インターフェイスは、モバイルデータ通信ネットワークインターフェイスを有することができる。いくつかの実施形態においては、強力認証トークンは、例えば、スマートフォンを有することができる。いくつかの実施形態においては、データ入力インターフェイスは、光学画像取得コンポーネント(140)を有することができる。いくつかの実施形態においては、光学画像取得コンポーネントは、カメラを有することができる。いくつかの実施形態においては、強力認証トークンは、デジタルデータメッセージによってエンコーディングされうる画像を光学画像取得コンポーネントによってキャプチャするように適合されていてもよい。いくつかの実施形態においては、画像は、2次元バーコードを有することができる。いくつかの実施形態においては、画像のフォーマットは、1つの規格において定義されていてもよい。例えば、いくつかの実施形態においては、光学画像は、QRコードであってもよい。
【0090】
その他の実施形態においては、デジタルデータ入力インターフェイスは、トークン用のメッセージ又はコマンドによってエンコーディングされうる音響信号をキャプチャするように適合された音響インターフェイスを有することができる。いくつかの実施形態においては、音響インターフェイスは、マイクロフォンを有することができる。いくつかの実施形態においては、音響インターフェイスは、アナログ電子信号を、例えば、上述のデジタルデータ処理コンポーネントによって更に処理されうるデジタル信号に変換するべく、アナログ−デジタルコンバータを有することができる。
【0091】
いくつかの実施形態においては、装置又はトークン(100)は、本説明のどこか別のところにおいて更に詳細に説明されているように、例えば、アクセス装置によって表示されうる、例えば、2次元バーコードの形態において、認証サーバーにより、生成されうる且つ装置又トークンに送信されうる、本説明のどこか別のところにおいて更に詳細に記述されている、認証メッセージのいずれかを受け取るべく、データ入力インターフェイス(140)を使用するように適合されていてもよい。
【0092】
クレデンシャル生成
トークンは、本説明のどこか別のところにおいて更に詳細に説明されている動的クレデンシャルを生成するように適合されていてもよい。いくつかの実施形態においては、データ処理コンポーネント(150)は、動的クレデンシャルを生成するべく、暗号計算を実行するように適合されていてもよい。いくつかの実施形態においては、トークンは、メモリコンポーネント(160)内において永久的又は一時的に保存されうる、或いは、トークンが、メモリコンポーネント(160)内において永久的又は一時的に保存されているデータから導出しうる、暗号キーを使用することにより、動的クレデンシャルを生成するように適合されていてもよい。いくつかの実施形態においては、トークンは、メモリコンポーネント(160)内において保存されているトークンインスタンスの一部分であるデータを使用することにより、動的クレデンシャルを生成するように適合されていてもよい。いくつかの実施形態においては、トークンは、動的クレデンシャルを生成するべく、対称型暗号アルゴリズムを使用するように適合されていてもよい。いくつかの実施形態においては、この動的クレデンシャルを生成するための暗号アルゴリズムは、1つ又は複数の対称型秘密暗号クレデンシャル生成キーによってパラメータ化されていてもよい。いくつかの実施形態においては、クレデンシャル生成キーは、例えば、クレデンシャル検証サーバー又は認証サーバーなどの、サーバーと共有されていてもよい。
【0093】
いくつかの実施形態においては、トークンは、トークンによって提供される内部値を有しうる動的変数を使用することにより、動的クレデンシャルを生成するように適合されていてもよい。例えば、いくつかの実施形態においては、トークンは、クロック(170)を有していてもよく、且つ、トークンは、そのクロックによって提供される時間値を内部値として使用することができる。いくつかの実施形態においては、トークンは、カウンタを維持していてもよく、且つ、トークンは、そのインスタンス用の動的クレデンシャルを生成するべく、且つ、動的クレデンシャルを生成するためにトークンがそのカウンタの値を使用するたびに(例えば、増分又は減分することにより)そのカウンタの値を更新するべく、そのカウンタの値を内部値として使用するように適合されていてもよい。
【0094】
いくつかの実施形態においては、トークンは、トークンに提供される外部値を有しうる動的変数を使用することにより、動的クレデンシャルを生成するように適合されていてもよい。いくつかの実施形態においては、このような外部値は、サーバーによって生成されたチャレンジ又はノンス或いは署名されるべきトランザクションデータを有することができる。いくつかの実施形態においては、外部値は、トークンのユーザー入力インターフェイスを使用することにより、ユーザーによって手動でトークンに提供されてもよい。例えば、トークンは、トークンに含まれているキーボード上においてユーザーが文字のストリングとして入力しうるチャレンジ又はトランザクションデータをキャプチャすることができる。いくつかの実施形態においては、外部値は、そのデータ入力インターフェイスを利用してトークンによって受け取られるメッセージ又はコマンド内に含まれた状態において、提供されている。
【0095】
いくつかの実施形態においては、トークンは、生成された動的クレデンシャルをユーザーに提示するように適合されていてもよい。例えば、いくつかの実施形態においては、トークンは、生成された動的クレデンシャルをそのディスプレイ上において可読文字のストリングとして表示することができる。いくつかの実施形態においては、ストリングは、デジタル文字のみを有することができる。その他の実施形態においては、ストリングは、英数文字を有することができる。
【0096】
セキュア専用ハードウェアトークン
いくつかの実施形態においては、トークン(100)は、専用ハードウェア装置であってもよい。いくつかの実施形態においては、トークンは、(コンピュータに基づいた又は自動化されたアプリケーションでありうる)アプリケーションに対するユーザーのアクセスを保護するべく、或いは、このようなアプリケーションとの間におけるユーザーのやり取りを保護するべく、方法において使用されるように専用となっていてもよい。いくつかの実施形態においては、認証装置の主な目的は、アプリケーションに対するユーザーのアクセスを保護するべく、或いは、このようなアプリケーションとの間におけるユーザーのやり取りを保護するべく、方法において使用される、というものである。いくつかの実施形態においては、セキュリティ装置としてのその使用に対する認証装置の専用化を保証するべく、認証装置は、そのファームウェアの変更が不可能となるように適合されていてもよい。いくつかの実施形態においては、セキュリティ装置としてのその使用に対する認証装置の専用化を保証するべく、そのファームウェアに対する任意の変更又は更新は、認可された信頼可能な管理者が認証装置のファームウェアを更新又は変更できることを保証するように設計されたセキュアファームウェア更新プロトコルを通じてのみ、可能である。この結果、信頼可能な管理者は、アプリケーションに対するユーザーのアクセスを保護するべく、或いは、このようなアプリケーションとの間におけるユーザーのやり取りを保護するべく、方法におけるその使用に対する認証装置の専用化を元に戻す又は危険に晒すことになるファームウェア更新が発生しないことを保証することができる。ユーザーが、信頼可能な管理者によって認可されてはいない余分のソフトウェアをインストールすることができる装置は、専用の装置と見なすことができない。その主な目的が通信機能を提供するというものである装置は、アプリケーションに対するユーザーのアクセス及びこれとの間におけるやり取りを保護するために方法において使用されるべき専用化された装置と見なすことができない。汎用PC、ラップトップ、タブレットコンピュータ、及びスマートフォンは、専用の装置と見なすことができない。
【0097】
いくつかの実施形態においては、トークン(100)は、セキュアハードウェア装置である。いくつかの実施形態においては、セキュアハードウェア装置は、セキュアハードウェア装置を改竄するための試みの検出を保証するように、且つ/又は、これに対して抵抗するように、適合されている。いくつかの実施形態においては、セキュアハードウェア装置のハウジングは、ハウジングの開放に対して抵抗するように、且つ/又は、ユーザーがハウジングの変形を通じてハウジングの開放の試み(改竄証拠)に気付くことになる確率を増大させるように、適合されている。いくつかの実施形態においては、ハウジングを一緒に構成している部品は、これらの部品を取り外す試みが、通常は、ハウジングの明らかな変形に結び付くことになるように、1つに溶接又は接着されていてもよい。いくつかの実施形態においては、セキュアハードウェアは、ハウジングの開放を検出するスイッチを有する。いくつかの実施形態においては、セキュアハードウェア装置は、改竄の試みを検出した際に適切な動作を実行するように適合されている。いくつかの実施形態においては、セキュアハードウェア装置は、暗号キーやパスコードブラインディングデータ要素などの特定の機密性を有するデータを消去してもよく、或いは、セキュアハードウェア装置は、セキュアハードウェア装置を改善するための推定される試みを検出した際に、(恐らくは、不可逆的に)、エラーモードに入ってもよく、或いは、機能を停止してもよい。
【0098】
セキュアハードウェア装置は、セキュアユーザー出力インターフェイス(例えば、セキュアディスプレイ)と、セキュアユーザー入力インターフェイス(例えば、セキュアキーボード)と、を有することができる。いくつかの実施形態においては、セキュアハードウェア装置は、セキュアハードウェア装置によって完全に制御されているという点において、且つ、セキュアハードウェア装置の外部のプロセスによってユーザーにデータ又は情報を提示するように使用することができないという点において、或いは、セキュアハードウェア装置により、認可され、且つ、制御されている場合にのみ、セキュアハードウェア装置の外部のプロセスによってユーザーにデータ又は情報を提示するべく使用されうるという点において、安全である出力インターフェイスを有する。いくつかの実施形態においては、セキュアハードウェア装置は、セキュアハードウェア装置によって完全に制御されているという点において、且つ、セキュアハードウェア装置の外部のプロセスによってユーザーからデータ又は情報を取得するべく使用することができないという点において、或いは、セキュアハードウェア装置により、認可され、且つ、制御されている場合にのみ、セキュアハードウェア装置の外部のプロセスによってユーザーからデータ又は情報を取得するべく使用することができるという点において、安全であるユーザー入力インターフェイスを有する。いくつかの実施形態においては、セキュアユーザー入力及び出力インターフェイスのセキュリティは、そのファームウェアに対するなんらの変更をも許容しない、或いは、セキュアハードウェア装置が信頼可能な供給源からの認可されたファームウェア更新のみを受け付けることを保証するセキュアプロトコルを通じたそのファームウェアに対する変更のみを許容するセキュアファームウェア更新メカニズムを提供している、セキュアハードウェア装置によって維持されている。
【0099】
いくつかの実施形態においては、トークンは、専用のハードウェア装置ではない。いくつかの実施形態においては、トークンは、電子消費者装置を有していてもよく、電子消費者装置は、その主な目的が、認証機能を提供するというものでなくてもよく、且つ、本説明において記述されている強力認証トークン機能を提供するためのソフトウェアを有することができる。例えば、いくつかの実施形態においては、トークンは、本説明において記述されている強力認証トークン機能を提供する認証アプリケーションを有するタブレットコンピュータ又はスマートフォンを有することができる。
【0100】
フォームファクタ
いくつかの実施形態においては、トークンは、トークンに含まれている電子コンポーネントの少なくともいくつかがその上部において配置されうる、プラスチック回路基板(PCB:Plastic Circuit Board)を有することができる。その他の電子コンポーネントは、(例えば、電気ワイヤによって)回路基板上において配置されたコンポーネントにガルバニック接続されていてもよい。いくつかの実施形態においては、トークンのすべての電子コンポーネントは、単一のハウジング内において含まれている。いくつかの実施形態においては、ハウジングは、プラスチックから、又は金属から、又は材料の組合せから、製造されていてもよい。いくつかの実施形態においては、認証トークンは、モノリシックな装置であってもよい。本説明の文脈においては、これは、認証トークンに含まれている動的クレデンシャルを生成するデジタル処理コンポーネント、インスタンスデータを保存するメモリコンポーネント、入力ユーザーインターフェイス、出力ユーザーインターフェイス、及びデータ入力インターフェイスが、いずれも、単一の物理的装置に含まれていることを意味している。いくつかの実施形態においては、ユーザーは、認証トークンの通常の動作の一部分として、これらのコンポーネントを除去することができない。いくつかの実施形態においては、これらのコンポーネントは、認証トークンに対する不可逆な変更をもたすことなしには、除去することができない。いくつかの実施形態においては、これらのコンポーネントは、認証トークンに対する永久的な損傷を伴うことなしには、除去することができない。
【0101】
いくつかの実施形態においては、トークンは、複数の電子装置を有していてもよく、これにより、トークンの様々な機能は、異なる装置によって提供されていてもよい。例えば、いくつかの実施形態においては、トークンは、スマートカード及びリーダー装置などの、セキュア要素を有していてもよく、これにより、セキュア要素は、秘密キーに関係するデータ及び/又はパスコードブラインディングデータ要素などのセキュリティ機密データ要素の保存を提供することができる。セキュア要素は、動的認証クレデンシャルの生成用の暗号計算の一部分又はすべてを提供するように更に適合されていてもよい。リーダーは、例えば、ユーザー入力インターフェイス及びユーザー出力インターフェイス、並びに、データ入力インターフェイスを有することができる。セキュア要素は、リーダーと通信するためのデータ通信インターフェイスを有していてもよく、且つ、リーダーは、セキュア要素と通信するための補完的なデータ通信インターフェイスを有していてもよい。セキュア要素及びリーダーは、協働するように、且つ、本説明のどこか別のところにおいて記述されているトークンの機能のすべてを一緒に提供するように、適合されていてもよい。
【0102】
サイズ及び重量
いくつかの実施形態においては、トークンは、トークンが、携帯可能な、ポケットサイズの、ハンドヘルド型の、装置であると見なされうるような、重量及び空間的寸法を有する。いくつかの実施形態においては、リーダーは、トークンが適度な費用で郵便を通じてユーザーに送付されうるような、重量及び空間的寸法を有する。例えば、いくつかの実施形態においては、認証装置は、2cm未満の厚さ、10cm未満の幅、15cm未満の長さ、及び200グラム未満の重量を有することができる。その他の実施形態においては、認証装置は、1.5cm未満の厚さ、7cm未満の幅、13cm未満の長さ、及び110グラム未満の重量を有することができる。いくつかの実施形態においては、認証装置の長さ及び幅は、10パーセント以下だけ、標準的なフルサイズクレジットカードの長さ及び幅をそれぞれ超過していてもよい。いくつかの実施形態においては、認証装置は、標準的なフルサイズクレジットカードの長さ及び幅を有することができる。いくつかの実施形態においては、認証装置は、標準的なフルサイズクレジットカードに適用可能であるマージン内において、標準的なフルサイズクレジットカードの長さ、幅、及び厚さを有することができる(例えば、ISO/IEC7810によって規定されているID−1サイズのスマートカードの寸法を有する)。
【0103】
電源
いくつかの実施形態においては、認証装置は、電力の自律的供給源を有する。いくつかの実施形態においては、電源は、電池を有することができる。いくつかの実施形態においては、電池は、交換可能であってもよい。
【0104】
図2は、本発明の一態様による本発明の例示用のシステム(200)を概略的に示している。
【0105】
いくつかの実施形態においては、システムは、強力認証トークン(220)と、認証サーバー(230)と、を有することができる。いくつかの実施形態においては、システムは、アプリケーションサーバー(250)を更に有することができる。いくつかの実施形態においては、システムは、アクセス装置(260)を更に有することができる。いくつかの実施形態においては、システムは、コンピュータネットワーク(270)を更に有することができる。
【0106】
いくつかの実施形態においては、強力認証トークン(220)は、本説明のどこか別のところにおいて更に詳細に記述されている強力認証トークン又は認証クライアントのいずれかを有することができる。具体的には、強力認証トークン(220)は、図1との関連において記述されている装置(100)を有することができる。
【0107】
いくつかの実施形態においては、認証サーバー(230)は、認証サーバー又はクレデンシャル検証サーバー又は本説明のどこか別のところにおいて更に詳細に記述されているエンティティのいずれかを有することができる。いくつかの実施形態においては、認証サーバー(230)は、認証サーバー又はクレデンシャル検証サーバー又は本説明のどこか別のところにおいて更に詳細に記述されているエンティティのいずれかによって実行される方法ステップ又は動作のいずれかを実行するように適合されていてもよい。認証サーバー(230)は、サーバーコンピュータなどの1つ又は複数の演算装置を有することができる。いくつかの実施形態においては、認証サーバーは、暗号計算を実行するように適合されていてもよい。いくつかの実施形態においては、認証サーバーは、クライアント又はトークンによって生成された動的認証クレデンシャルの有効性を検証するように適合されていてもよい。いくつかの実施形態においては、認証サーバーは、ユーザー及び/又はトークンに固有の情報に対するアクセスを有する。このようなユーザー及び/又はトークン固有の情報は、例えば、ユーザー識別データ要素(ユーザーid)、パスコードベリファイアなどの秘密データ、トークンが(恐らくは)動的認証クレデンシャルを生成するべく使用した暗号キーの値を生成又は取得するためのキーに関係したデータを含みうる。例えば、いくつかの実施形態においては、トークンは、トークンによって維持されている状態変数の値の関数として暗号キーを生成してもよく、且つ、認証サーバーは、トークンの状態変数の値を表す状態変数に対するアクセスを有することができる。いくつかの実施形態においては、認証サーバーは、認証サーバーに含まれうる又はこれに接続されうるデータベース内において、これらのデータ要素を保存することができる。
【0108】
認証サーバー(250)は、リモートアクセス可能なコンピュータに基づいたアプリケーションのサーバー部分をホスティングするように適合されていてもよい。ユーザーとリモートアクセス可能なコンピュータに基づいたアプリケーションの間のやり取りは、本説明のどこか別のところにおいて更に詳細に記述されている認証方法のいずれかと共に、認証トークン(220)及び認証サーバー(230)を使用することにより、保護することができる。アプリケーションサーバー(250)は、ウェブサーバーを有していてもよく、且つ、リモートアクセス可能なコンピュータに基づいたアプリケーションは、例えば、ウェブバンキング又はインターネットバンキングアプリケーションなどの、ウェブベースのアプリケーションであってもよい。
【0109】
アクセス装置(260)は、ユーザー(290)がアプリケーションサーバー(250)によってホスティングされたリモートアクセス可能なコンピュータに基づいたアプリケーションにアクセスし且つこれとやり取りすることを許容するように適合されていてもよい。いくつかの実施形態においては、アクセス装置(260)は、例えば、アプリケーションサーバー(250)によってホスティングされているリモートアクセス可能なコンピュータに基づいたアプリケーションとやり取りするべく、ウェブブラウザを有することができる。いくつかの実施形態においては、アクセス装置(260)は、例えば、PC又はタブレットコンピュータ又はスマートフォンを有することができる。
【0110】
いくつかの実施形態においては、コンピュータネットワーク(270)は、LAN(Local Area Network)及び/又はWAN(Wide Area Network)及び/又はインターネット、並びに/或いは、例えば、携帯電話ネットワークなどの無線データ通信ネットワークを有することができる。コンピュータネットワーク(270)は、強力認証トークン(220)、認証サーバー(230)、アプリケーションサーバー(250)、及びアクセス装置(260)などの、2つ以上の演算装置をリンクしていてもよく、且つ、これらの演算装置が、互いに通信し、且つ、例えば、本説明のどこか別のところにおいて更に詳細に記述されている、認証クライアント又は認証トークンのいずれか、並びに、認証サーバーのいずれか、によって交換される、様々なメッセージのいずれかなどの、データ及びメッセージを交換することを可能にするように、適合されていてもよい。
【0111】
図3は、動的クレデンシャルを生成する例示用の方法(300)を概略的に示している。
【0112】
いくつかの実施形態においては、動的クレデンシャルを生成する方法は、ユーザーからパスコード値を取得するステップ(310)と、パスコードブラインディングデータ要素の保存されている値を取得するステップ(320)と、取得されたパスコード値とパスコードブラインディングデータ要素の取得された値を暗号方式によって組み合わせることにより、パスコードベリファイアを算出するステップ(330)と、算出されたパスコードベリファイアを保存されている秘密キー及び動的変数と暗号方式によって組み合わせることにより、動的クレデンシャルを算出するステップ(340)と、を有する。
【0113】
いくつかの実施形態においては、秘密キーは、動的変数を有することができる。いくつかの実施形態においては、方法は、秘密キーの値を新しい値によって更新するステップを更に有することができる。いくつかの実施形態においては、方法は、状態変数の古い値に基づいて状態変数の新しい値を算出することにより、状態変数を更新するステップと、状態変数の古い値を消去するステップと、キーの古い変数を消去するステップと、状態変数の新しい値に基づいて秘密キーの新しい変数を算出するステップと、を有することができる。
【0114】
本発明の一態様においては、動的認証クレデンシャルを生成する方法が提供されている。いくつかの実施形態においては、方法のいくつか又はすべてのステップは、本説明のどこか別のところにおいて記述されている認証クライアント又は認証トークンのいずれかによって実行することができる。いくつかの実施形態においては、方法は、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを生成する方法のうちのいずれかの方法のステップのいくつか又はすべてを有することができる。具体的には、いくつかの実施形態においては、方法は、図3との関連において記述されている方法のステップのいくつか又はすべてを有することができる。
【0115】
いくつかの実施形態においては、方法(300)は、パスコードの値を取得するステップ(310)と、パスコードブラインディングデータ要素の値を取得するステップ(320)と、動的変数の値を取得し、暗号クレデンシャル生成キーの値を取得し、取得されたパスコード値及び取得されたパスコードブラインディングデータ要素値からパスコードベリファイアデータ要素の値を算出するステップ(330)と、算出されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値から動的認証クレデンシャルを算出するステップ(340)と、を有することができる。
【0116】
いくつかの実施形態においては、パスコードの値を取得するステップは、例えば、認証トークン又は認証クライアント装置のユーザー入力インターフェイスを通じてユーザーによって提供された入力などのように、ユーザーからパスコードの値を受け取るステップを有することができる。いくつかの実施形態においては、パスコード値は、PIN(Personal Identification Number)値又はパスワード値を有することができる。
【0117】
いくつかの実施形態においては、パスコードブラインディングデータ要素の値を取得するステップは、例えば、方法を実行している認証トークン又は認証クライアントのメモリから、パスコードブラインディングデータ要素値を読み取るステップを有することができる。いくつかの実施形態においては、パスコードブラインディングデータ要素は、動的認証クレデンシャルを生成する前に、例えば、このような認証トークン又は認証クライアントの初期化フェーズの一部分として、生成が完了していてもよく、且つ、例えば、方法を実行している認証トークン又は認証クライアントのメモリ内において保存が完了していてもよい。いくつかの実施形態においては、パスコードブラインディングデータ要素値は、高エントロピーのデータ要素として生成することができる。例えば、いくつかの実施形態においては、パスコードブラインディングデータ要素のエントロピーは、少なくとも64ビットであってもよく、その他の実施形態においては、エントロピーは、少なくとも128ビットであってもよく、更にその他の実施形態においては、エントロピーは、少なくとも256ビットであってもよい。いくつかの実施形態においては、パスコードブラインティングデータ要素は、ランダム又は疑似ランダム数生成器によって生成されうるランダム又は疑似ランダム数を使用することにより、生成することができる。
【0118】
いくつかの実施形態においては、動的変数値を取得するステップは、例えば、認証サーバーなどの、サーバーから、メッセージを受け取るステップと、受け取ったメッセージに含まれている、チャレンジ又はノンス又はトランザクションデータなどの、データ要素の関数として動的変数値を判定するステップと、を有することができる。いくつかの実施形態においては、動的変数値を取得するステップは、トランザクションデータの関数として動的変数を判定するステップと、承認のためにトランザクションデータをユーザーに対して提示するステップと、ユーザーの承認を取得するステップと、を有することができる。
【0119】
いくつかの実施形態においては、パスコードベリファイアデータ要素値を算出するステップは、取得されたパスコード値及び取得されたパスコードブラインディングデータ要素値の暗号関数としてパスコードベリファイアデータ要素値を算出するステップを有することができる。いくつかの実施形態においては、パスコードベリファイアデータ要素値を算出するステップは、不可逆(暗号)関数を取得されたパスコード値及び取得されたパスコードブラインディングデータ要素値に適用した結果としてパスコードベリファイアデータ要素を算出するステップを有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、(セキュア)暗号ハッシュ関数を取得されたパスコード値及び取得されたパスコードブラインディングデータ要素値の組合せに適用するステップを有することができる。例えば、いくつかの実施形態においては、(セキュア)暗号ハッシュ関数は、SHA−2又はSHA−3(Secure Hash Algorithm)関数ファミリのうちの1つを有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、取得されたパスコードブラインディングデータ要素値を鍵付きハッシュ関数用のキーとして使用することにより、取得されたパスコード値にセキュア暗号鍵付きハッシュ関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、鍵付きハッシュ関数は、HMAC(Hach−based Message Authentication Code or keyed−hash message authentication code)関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、取得されたパスコードブラインディングデータ要素値を暗号化(又は、暗号解読)キーとして使用することにより、取得されたパスコード値にセキュア暗号暗号化(又は、暗号解読)関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、AES(Advanced Encryption Standard)暗号化アルゴリズムを有することができる。
【0120】
いくつかの実施形態においては、算出されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値から動的認証クレデンシャルを算出するステップは、算出されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値の暗号関数として動的認証クレデンシャルを算出するステップを有することができる。いくつかの実施形態においては、算出されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値から動的認証クレデンシャルを算出するステップは、算出されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値に不可逆(暗号)関数を適用した結果として動的認証クレデンシャルを算出するステップを有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、算出されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値の組合せに(セキュア)暗号ハッシュ関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、(セキュア)暗号ハッシュ関数は、SHA−2又はSHA−3(Secure Hash Algorithm)関数ファミリのうちの1つを有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、取得された暗号クレデンシャル生成キー値を鍵付きハッシュ関数用のキーとして使用することにより、算出されたパスコードベリファイアデータ要素値及び取得された動的変数値の組合せにセキュア暗号鍵付きハッシュ関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、鍵付きハッシュ関数は、HMAC(Hash−based Message Authenticaion Code or Keyed−hash message authentication code)関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、取得された暗号クレデンシャル生成キー値を暗号化(又は、暗号解読)キーとして使用することにより、算出されたパスコードベリファイアデータ要素値及び取得された動的変数値の組合せに(セキュア)暗号暗号化(又は、暗号解読)関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、AES(Advanced Encryption Standard)暗号化アルゴリズムを有することができる。
【0121】
いくつかの実施形態においては、方法は、パスコードベリファイアデータ要素値を算出するステップの後に、取得されたパスコード値を破棄するステップを更に有することができる。いくつかの実施形態においては、取得されたパスコード値を破棄するステップは、例えば、方法を実行している認証トークン又は認証クライアントのメモリから、取得されたパスコード値のすべての複写を消去するステップを有することができる。
【0122】
いくつかの実施形態においては、方法は、動的認証クレデンシャルを算出するステップの後に、算出されたパスコードベリファイアデータ要素値を破棄するステップを更に有することができる。いくつかの実施形態においては、算出されたパスコードベリファイアデータ要素値を破棄するステップは、例えば、方法を実行する認証トークン又は認証クライアントのメモリから、算出されたパスコードベリファイアデータ要素値のすべての複写を消去するステップを有することができる。
【0123】
いくつかの実施形態においては、暗号クレデンシャル生成キー値を取得するステップは、暗号クレデンシャル生成キー値を状態変数の値の関数として判定するステップを有することができる。いくつかの実施形態においては、方法は、状態変数の値をメモリ内において維持及び保存するステップを更に有することができる。いくつかの実施形態においては、暗号クレデンシャル生成キー値を状態変数の値の関数として判定するステップは、例えば、方法を実行している認証トークン又は認証クライアントのメモリから、状態変数値を読み取るステップを有することができる。いくつかの実施形態においては、状態変数の値の関数として暗号クレデンシャル生成キー値を判定するステップは、暗号クレデンシャル生成キー値を状態変数の値に設定するステップを有することができる。その他の実施形態においては、状態変数の値の関数として暗号クレデンシャル生成キー値を判定するステップは、不可逆関数を状態変数の値に適用した結果として暗号クレデンシャル生成キー値を算出するステップを有することができる。例えば、いくつかの実施形態においては、不可逆関数は、SHA−2又はSHA−3(Secure Hash Algorithm)関数ファミリのうちの1つを有しうる(セキュア)暗号ハッシュ関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、暗号化(又は、暗号解読)キーとして状態変数の値を使用することにより、(セキュア)暗号暗号化(又は、暗号解読)関数を固定値に適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、AES(Advanced Encryption Standard)暗号化アルゴリズムを有することができる。
【0124】
いくつかの実施形態においては、方法は、状態変数の現在の値の関数として算出された新しい値によって状態変数の値を更新するステップを更に有することができる(この場合に、現在の値は、更新後には、以前の値となっている)。いくつかの実施形態においては、状態変数の現在の(以前の)値の関数として状態変数の新しい値を算出するステップは、不可逆関数を状態変数の現在の(以前の)値に適用した結果として状態変数の新しい値を算出するステップを有することができる。例えば、いくつかの実施形態においては、不可逆関数は、SHA−2又はSHA−3(Secure Hash Algorithm)関数ファミリのうちの1つを有しうる(セキュア)暗号ハッシュ関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、暗号化(又は、暗号解読)キーとして状態変数の現在の(以前の)値を使用することにより、(セキュア)暗号暗号化(又は、暗号解読)関数を固定値に適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、AES(Advanced Encryption Standard)暗号化アルゴリズムを有することができる。
【0125】
いくつかの実施形態においては、方法は、状態変数の現在の値の関数として状態変数の新しい値を算出する前記ステップの後に、状態変数の現在の(以前の)値を破棄するステップを更に有することができる。いくつかの実施形態においては、状態変数の現在の(以前の)値を破棄するステップは、状態変数の新しい値を算出ステップと、状態変数の現在の(以前の)値の関数として暗号クレデンシャル生成キー値を判定するステップと、の両方が実行された後に、実行されてもよい。いくつかの実施形態においては、状態変数の現在の(以前の)値を破棄するステップは、例えば、方法を実行している認証トークン又は認証クライアントのメモリから、状態変数の現在の(以前の)値のすべての複写を消去するステップを有することができる。
【0126】
いくつかの実施形態においては、方法は、動的認証クレデンシャルを算出する前記ステップの後に、暗号クレデンシャル生成キー値を破棄するステップを更に有することができる。いくつかの実施形態においては、暗号クレデンシャル生成キー値を破棄するステップは、例えば、方法を実行している認証トークン又は認証クライアントのメモリから、暗号クレデンシャル生成キー値のすべての複写を消去するステップを有することができる。いくつかの実施形態においては、方法は、動的認証クレデンシャルを算出する前記ステップの後に、暗号クレデンシャル生成キー値が導出された状態変数の値を破棄するステップを更に有することができる。いくつかの実施形態においては、状態変数の値を破棄するステップは、例えば、方法を実行している認証トークン又は認証クライアントのメモリから、状態変数の値のすべての複写を消去するステップを有することができる。
【0127】
本発明の別の態様においては、動的認証クレデンシャルの値を検証する方法が提供されている。いくつかの実施形態においては、方法のいくつか又はすべてのステップは、本説明のどこか別のところにおいて記述されている認証サーバーのいずれかによって実行されてもよい。いくつかの実施形態においては、方法は、本明細書のどこか別のところにおいて記述されている動的認証クレデンシャルの値を検証する方法のうちのいずれかの方法のステップのうちのいくつか又はすべてを有することができる。
【0128】
いくつかの実施形態においては、動的認証クレデンシャルの値は、本説明において記述されている動的認証クレデンシャルを生成する方法のうちのいずれかによって生成されたものであってもよい。
【0129】
図4には、方法の例示用の一実施形態が示されている。
【0130】
いくつかの実施形態においては、方法(400)は、動的認証クレデンシャル値を受け取るステップ(410)と、動的変数の値を取得するステップ(420)と、パスコードベリファイアデータ要素及び暗号クレデンシャル生成キーの値を取得するステップ(430)と、取得されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値からクレデンシャル基準値を算出するステップ(440)と、受け取られた動的認証クレデンシャル値が算出されたクレデンシャル基準値とマッチングしているかどうかを検証するステップ(450)と、を有することができる。いくつかの実施形態においては、方法は、受け取られた動的認証クレデンシャル値が算出されたクレデンシャル基準値とマッチングしているかどうかを通知する信号を生成するステップを更に有することができる。いくつかの実施形態においては、動的変数は、動的認証クレデンシャルによって認可されるべきトランザクションを表すトランザクションデータを有していてもよく、或いは、これから導出されてもよい。
【0131】
いくつかの実施形態においては、取得されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値からクレデンシャル基準値を算出するステップ(440)は、取得されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値の暗号関数としてクレデンシャル基準値を算出するステップを有することができる。いくつかの実施形態においては、取得されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値からクレデンシャル基準値を算出するステップは、取得されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値に不可逆(暗号)関数を適用した結果としてクレデンシャル基準値を算出するステップを有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、取得されたパスコードベリファイアデータ要素値、取得された動的変数値、及び取得された暗号クレデンシャル生成キー値の組合せに(セキュア)暗号ハッシュ関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、(セキュア)暗号ハッシュ関数は、SHA−2又はSHA−3(Secure Hash Algorithm)関数ファミリのうちの1つを有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、鍵付きハッシュ関数用のキーとして取得された暗号クレデンシャル生成キー値を使用することにより、取得されたパスコードベリファイアデータ要素値及び取得された動的変数値の組合せにセキュア暗号鍵付きハッシュ関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、鍵付きハッシュ関数は、HMAC(Hash−based Message Authentication Code or keyed−hash message authentication code)関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、暗号化(又は、暗号解読)キーとして取得された暗号クレデンシャル生成キー値を使用することにより、取得されたパスコードベリファイアデータ要素値及び取得された動的変数値の組合せに(セキュア)暗号暗号化(又は、暗号解読)関数を適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、AES(Advanced Encryption Standard)暗号化アルゴリズムを有することができる。
【0132】
いくつかの実施形態においては、第1値が第2値とマッチングしているかどうかを検証するステップは、第1値が第2値に等しいかどうかを検証するステップを有していてもよく、或いは、これから構成されていてもよい。いくつかの実施形態においては、第1値が第2値とマッチングしているかどうかを検証するステップは、第1値の第1関数が第2値の第2関数と等しいかどうかを検証するステップを有してもよく、或いは、これから構成されていてもよい。例えば、いくつかの実施形態においては、第1値が第2値とマッチングしているかどうかを検証するステップは、第1値の第1ビットストリング表現が第2値の第2ビットストリング表現の切り捨てられたバージョンと等しいかどうかを検証するステップを有していてもよく、或いは、これから構成されていてもよい。いくつかの実施形態においては、第1値が第2値とマッチングしているかどうかを検証するステップは、第1値と第2値の間の数学的関係が真であるかどうかを検証するステップを有していてもよく、或いは、これから構成されていてもよい。
【0133】
いくつかの実施形態においては、パスコードベリファイアデータ要素及び暗号クレデンシャル生成キーの値を取得するステップは、認証クライアントの特定のユーザーと関連するユーザー又は認証クライアント固有のデータの組を取得するステップと、このユーザー又は認証クライアント固有のデータの組からパスコードベリファイアデータ要素及び暗号クレデンシャル生成キーの値を取得又は導出するステップと、を有することができる。いくつかの実施形態においては、ユーザー又は認証クライアント固有のデータの組は、受け取られた動的認証クレデンシャル値が受け取られたものと推定される認証クライアントのユーザーと関連付けられている。いくつかの実施形態においては、方法は、例えば、方法のステップを実行している認証サーバーに含まれうる、或いは、これに接続されうる、メモリ又はデータベース内においてユーザー又は認証クライアント固有のデータの組を保存及び維持するステップを更に有していてもよく、且つ、ユーザー又は認証クライアント固有のデータの組を取得するステップは、このメモリ又はデータベースからユーザー又は認証クライアント固有のデータの組を読み取るステップを有することができる。
【0134】
いくつかの実施形態においては、ユーザー又は認証クライアント固有のデータの組は、状態変数の値を有していてもよく、且つ、暗号クレデンシャル生成キー値を取得するステップは、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値の関数として暗号クレデンシャル生成キー値を判定するステップを有することができる。いくつかの実施形態においては、状態変数の値の関数として暗号クレデンシャル生成キー値を判定するステップは、暗号クレデンシャル生成キー値を状態変数の値に設定するステップを有することができる。その他の実施形態においては、状態変数の値の関数として暗号クレデンシャル生成キー値を判定するステップは、不可逆関数を状態変数の値に適用した結果として暗号クレデンシャル生成キー値を算出するステップを有することができる。例えば、いくつかの実施形態においては、不可逆関数は、SHA−2又はSHA−3(Secure Hash Algorithm)関数ファミリのうちの1つを有しうる(セキュア)暗号ハッシュ関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、暗号化(又は、暗号解読)キーとして状態変数の値を使用することにより、(セキュア)暗号暗号化(又は、暗号解読)関数を固定値に適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、AES(Advanced Encryption Standard)暗号化アルゴリズムを有することができる。
【0135】
いくつかの実施形態においては、方法は、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値の関数として算出された新しい値によって状態変数の値を更新するステップと、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値をこの算出された新しい値によって置換するステップと、を更に有することができる。いくつかの実施形態においては、方法は、例えば、方法のステップを実行している認証サーバーに含まれうる、或いは、これに接続されうる、メモリ又はデータベース内において、状態変数の更新済みの値を有するユーザー又は認証クライアント固有のデータの組を保存するステップを更に有することができる。いくつかの実施形態においては、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値の関数として状態変数の新しい値を算出するステップは、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値に不可逆関数を適用した結果として状態変数の新しい値を算出するステップを有することができる。例えば、いくつかの実施形態においては、不可逆関数は、SHA−2又はSHA−3(Secure Hash Algorithm)関数ファミリのうちの1つを有しうる(セキュア)暗号ハッシュ関数を有することができる。いくつかの実施形態においては、不可逆関数を適用するステップは、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値を暗号化(又は、暗号解読)キーとして使用することにより、(セキュア)暗号暗号化(又は、暗号解読)関数を固定値に適用するステップを有することができる。例えば、いくつかの実施形態においては、暗号化関数は、AES(Advanced Encription Standard)暗号化アルゴリズムを有することができる。
【0136】
いくつかの実施形態においては、方法は、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値の関数として状態変数の新しい値を算出する前記ステップの後に、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値を破棄するステップを更に有することができる。いくつかの実施形態においては、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値を破棄するステップは、例えば、方法のステップを実行している認証サーバーに含まれうる、或いは、これに接続されうる、メモリ又はデータベースから、ユーザー又は認証クライアント固有のデータの組に含まれている状態変数の値のすべての複写を消去するステップを有することができる。
【0137】
いくつかの実施形態においては、方法は、クレデンシャル基準値を算出するステップの後に、暗号クレデンシャル生成キー値を破棄するステップを更に有することができる。いくつかの実施形態においては、暗号クレデンシャル生成キー値を破棄するステップは、例えば、方法のステップを実行している認証サーバーに含まれうる、或いは、これに接続されうる、メモリ又はデータベースから、暗号クレデンシャル生成キー値のすべての複写を消去するステップを有することができる。いくつかの実施形態においては、方法は、クレデンシャル基準値を算出するステップの後に、暗号クレデンシャル生成キー値が導出された状態変数の値を破棄するステップを更に有することができる。いくつかの実施形態においては、暗号クレデンシャル生成キー値が導出された状態変数の値を破棄するステップは、例えば、方法のステップを実行している認証サーバーに含まれうる、或いは、これに接続されうる、メモリ又はデータベースから、この状態変数の値のすべての複写を消去するステップを有することができる。
【0138】
本発明の別の態様においては、コンピュータに基づいたアプリケーションとの間におけるユーザーのやり取りを保護する方法が提供されている。いくつかの実施形態においては、方法は、認証トークン又は認証クライアントにより、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを生成する方法のうちのいずれかの方法のいくつか又はすべてのステップを実行するステップと、認証サーバーにより、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを検証する方法のうちのいずれかの方法のいくつか又はすべてのステップを実行するステップと、を有することができる。
【0139】
認証ステージ
いくつかの実施形態においては、方法は、認証ステージにおいて、認証クライアントにより、動的変数クライアント値を取得するステップと、認証クライアントにより、暗号クレデンシャル生成キークライアント値を取得するステップと、認証クライアントにより、メモリから、パスコードブラインディングデータ要素値を取得するステップと、認証クライアントにより、ユーザーから、パスコード値を受け取るステップと、認証クライアントにより、取得されたパスコードブラインディングデータ要素値及び受け取られたパスコード値の第1不可逆クライアント関数としてパスコードベリファイアデータ要素クライアント値を算出するステップと、認証クライアントにより、取得された動的変数クライアント値、取得された暗号クレデンシャル生成キークライアント値、及び算出されたパスコードベリファイアデータ要素クライアント値の第2不可逆クライアント関数として動的認証クレデンシャルを算出するステップと、認証サーバーにより、動的認証クレデンシャルを受け取るステップと、認証サーバーにより、動的変数サーバー値を取得するステップと、認証サーバーにより、暗号クレデンシャル生成キーサーバー値を取得するステップと、認証サーバーにより、パスコードベリファイアデータ要素サーバー値を取得するステップと、認証サーバーにより、取得された動的変数サーバー値、取得された暗号クレデンシャル生成キーサーバー値、及び取得されたパスコードベリファイアデータ要素サーバー値の不可逆サーバー関数としてクレデンシャル基準値を算出するステップと、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしているかどうかを検証するべく、認証サーバーにより、受け取られた動的認証クレデンシャルを算出されたクレデンシャル基準値と比較するステップと、を実行するステップを有する。いくつかの実施形態においては、方法は、認証サーバーにより、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしているかどうかを通知する信号を生成するステップを更に有することができる。いくつかの実施形態においては、方法は、コンピュータに基づいたアプリケーションが、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしている場合に、第1動作を実行し、且つ、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしていない場合には、第2動作を実行するステップを更に有することができる。
【0140】
いくつかの実施形態においては、動的変数クライアント値は、動的変数サーバー値と同一であってもよく、暗号クレデンシャル生成キークライアント値は、暗号クレデンシャル生成キーサーバー値と同一であってもよく、パスコードベリファイアデータ要素クライアント値は、パスコードベリファイアデータ要素サーバー値と同一であってもよく、且つ、動的認証クレデンシャルを算出するための第2不可逆クライアント関数は、クレデンシャル基準値を算出するための不可逆サーバー関数と実質的に同一であってもよい。この文脈において、動的認証クレデンシャルを算出するための第2不可逆クライアント関数が不可逆サーバー関数と実質的に同一である、ということは、第2不可逆クライアント関数及び不可逆サーバー関数が同一の入力データの組に適用された場合に、第2不可逆クライアント関数を適用した結果が、不可逆サーバー関数を適用した結果とマッチングすることになることを意味するものと理解されてもよい。
【0141】
いくつかの実施形態においては、動的変数クライアント値は、ユーザーによって認可されるべきトランザクションを表すトランザクションデータに基づいたものであってもよく、且つ、方法は、認証クライアントにより、トランザクションデータをユーザーに対して表示するステップと、認証クライアントにより、表示されたトランザクションデータの承認をユーザーから受け取るステップと、を更に有することができる。いくつかの実施形態においては、動的認証クレデンシャルを算出するステップは、ユーザーが、表示されたトランザクションデータを承認することを条件としていてもよい。いくつかの実施形態においては、方法は、コンピュータに基づいたアプリケーションが、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしている場合に、トランザクションを受け付け、且つ、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしていない場合には、トランザクションを拒絶するステップを更に有することができる。
【0142】
いくつかの実施形態においては、方法は、認証ステージにおいて、認証クライアントにより、現時点の状態変数クライアント値を保存するステップであって、これにより、認証クライアントにより、暗号クレデンシャル生成キークライアント値を取得するステップは、認証クライアントにより、保存されている現時点の状態変数クライアント値から暗号クレデンシャル生成キークライアント値を導出するステップを有することができる、ステップと、認証クライアントにより、現時点の状態変数クライアント値の第3不可逆クライアント関数として新しい状態変数クライアント値を算出するステップと、認証クライアントにより、動的認証クレデンシャルの算出の後に、暗号クレデンシャル生成キークライアント値を破棄するステップと、認証クライアントにより、新しい状態変数クライアント値の算出及び暗号クレデンシャル生成キークライアント値の導出の後に、現時点の状態変数クライアント値を破棄するステップと、認証クライアントにより、破棄された現時点の状態変数クライアント値の代わりに新しい状態変数クライアント値を保存するステップと、認証サーバーにより、現時点の状態変数サーバー値を保存するステップであって、これにより、認証サーバーにより、暗号クレデンシャル生成キーサーバー値を取得するステップは、認証サーバーにより、保存されている現時点の状態変数サーバー値から、暗号クレデンシャル生成キーサーバー値を導出するステップを有することができる、ステップと、認証サーバーにより、現時点の状態変数サーバー値の第2不可逆サーバー関数として新しい状態変数サーバー値を算出するステップと、認証サーバーにより、クレデンシャル基準値の算出の後に、暗号クレデンシャル生成キーサーバー値を破棄するステップと、認証サーバーにより、新しい状態変数サーバー値の算出及び暗号クレデンシャル生成キーサーバー値の導出の後に、現時点の状態変数サーバー値を破棄するステップと、認証サーバーにより、破棄された現時点の状態変数サーバー値の代わりに新しい状態変数サーバー値を保存するステップと、を実行するステップを更に有することができる。いくつかの実施形態においては、現時点の状態変数サーバー値は、現時点の状態変数クライアント値と同一であってもよく、新しい状態変数サーバー値は、新しい状態変数クライアント値と同一であってもよく、且つ、第2不可逆サーバー関数は、第3不可逆クライアント関数と同一であってもよい。
【0143】
初期化ステージ
いくつかの実施形態においては、方法は、認証ステージの前の初期化ステージにおいて、認証クライアントにより、予測不能な方式により、パスコードブラインディングデータ要素値を生成するステップと、認証クライアントにより、認証ステージにおける後続の使用のために、生成されたパスコードブラインディングデータ要素値を保存するステップと、認証クライアントにより、ユーザーから初期パスコード値を受け取るステップと、認証クライアントにより、パスコードブラインディングデータ要素値及び受け取られた初期パスコード値の第1不可逆クライアント関数として(初期)パスワードベリファイアデータ要素クライアント値を算出するステップと、認証サーバーにより、算出された(初期)パスコードベリファイアデータ要素クライアント値を受け取り、且つ、認証サーバーにより、認証ステージにおける後続の使用のために、受け取られた(初期)パスコードベリファイアデータ要素クライアントをパスコードベリファイアデータ要素サーバー値として保存するステップと、を実行するステップを更に有することができる。
【0144】
いくつかの実施形態においては、方法は、初期化ステージにおいて、認証クライアントにおいて、初期状態シードから導出された状態変数クライアント値の初期クライアント値を取得し、且つ、認証クライアントにおいて、状態変数クライアント値の取得された初期値を現時点の状態変数クライアント値として保存するステップと、認証サーバーにおいて、こちらも初期状態シードから導出された状態変数サーバー値の初期サーバー値を取得し、且つ、認証サーバーにおいて、状態変数サーバー値の取得された初期値を現時点の状態変数サーバー値として保存するステップと、を更に有することができる。
【0145】
いくつかの実施形態においては、方法は、初期化ステージにおいて、初期状態シードを生成又はさもなければ取得するステップであって、この場合に、認証クライアントにおいて、状態変数クライアント値の初期クライアント値を取得するステップは、認証クライアントにおいて、初期状態シードを取得し、且つ、認証クライアントにおいて、初期状態シードから、状態変数クライアント値の初期クライアント値を導出するステップを有していてもよく、且つ、この場合に、認証サーバーにおいて、こちらも初期状態シードから導出される状態変数サーバー値の初期サーバー値を取得するステップは、認証サーバーにおいて、初期状態シードを取得し、且つ、認証サーバーにおいて、初期状態シードから、状態変数サーバー値の初期サーバー値を導出するステップを有することができる、ステップを実行するステップを更に有することができる。
【0146】
いくつかの実施形態においては、初期状態シードを生成するステップは、高エントロピー値として初期状態シードを生成するステップを有することができる。いくつかの実施形態においては、初期状態シードを生成するステップは、ランダム又は疑似ランダム数生成器によって生成されたランダム又は疑似ランダム数を使用するステップを有することができる。いくつかの実施形態においては、初期状態シードを生成するステップは、認証サーバー又は認証サーバーと関連するサーバーなどのサーバーによって実行することができる。
【0147】
いくつかの実施形態においては、方法は、認証ステージにおいて、状態変数クライアント値と状態変数サーバー値を同期化させるステップを実行するステップを更に有することができる。いくつかの実施形態においては、状態変数クライアントと状態変数サーバー値を同期化させるステップは、認証クライアントにより、状態変数サーバー値を示す同期化データ要素を受け取るステップと、状態変数クライアント値を状態変数サーバー値と同期化させるべく、認証クライアントにより、受け取った同期化データ要素の値に基づいて状態変数クライアント値を更新するステップと、有することができる。いくつかの実施形態においては、同期化データ要素は、カウンタ値を有していてもよく、カウンタ値は、例えば、状態変数サーバー値が更新された回数を通知しうる。いくつかの実施形態においては、状態変数クライアント値と状態変数サーバー値を同期化させるステップは、認証サーバーにより、状態変数クライアント値を示す同期化データ要素を受け取るステップと、状態変数サーバー値を状態変数クライアント値と同期化させるべく、認証サーバーにより、受け取った同期化データ要素の値に基づいて状態変数サーバー値を更新するステップと、を有することができる。いくつかの実施形態においては、同期化データ要素は、カウンタ値を有していてもよく、カウンタ値は、例えば、状態変数クライアント値が更新された回数を通知しうる。
【0148】
本発明の別の態様においては、動的認証クレデンシャルを生成する装置が提供されている。いくつかの実施形態においては、装置は、本説明のどこか別のところにおいて記述されている認証トークン又は認証クライアントのいずれかを有することができる。具体的には、いくつかの実施形態においては、装置は、図1との関連において記述されている装置(100)のいずれかを有することができる。いくつかの実施形態においては、装置は、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを生成する方法のいずれかを実行するように適合されていてもよい。
【0149】
いくつかの実施形態においては、装置(100)は、装置のユーザーからパスコードを受け取るように適合されたユーザー入力インターフェイス(120)と、暗号計算を実行するように適合されたデータプロセッサ(150)と、パスコードブラインディングデータ要素値及び状態変数値を保存するためのメモリ(160)と、を有していてもよく、これにより、装置は、初期化ステージにおいて、パスコードブラインディングデータ要素値を取得し、且つ、メモリ内において、保存し、且つ、状態変数値の初期値を取得し、且つ、メモリ内において現時点の状態変数値として初期値を保存するように適合されていてもよく、これにより、装置は、認証ステージにおいて、動的変数値を取得し、ユーザー入力インターフェイスを通じて、ユーザーのパスコードを受け取り、メモリから、パスコードブラインディングデータ要素値を読み取り、受け取ったパスコード及びパスコードブラインディングデータ要素値の第1不可逆関数としてパスコードベリファイアデータ要素値を算出し、メモリから現時点の状態変数値を読み取り、且つ、メモリからの現時点の状態変数値から暗号クレデンシャル生成キーを導出し、取得された動的変数値、算出されたパスコードベリファイアデータ要素値、及び導出された暗号クレデンシャル生成キーの第2不可逆関数として動的認証クレデンシャルを算出し、動的認証クレデンシャルの計算の後に、導出された暗号クレデンシャル生成キーを破棄し、現時点の状態変数値の第3不可逆関数として状態変数値の新しい値を生成し、且つ、現時点の状態変数値からの暗号クレデンシャル生成キーの導出及び状態変数値の新しい値の生成の後に、現時点の状態変数値を破棄し、且つ、現時点の状態変数値の代わりに状態変数値の生成された新しい値を保存する、ように更に適合されていてもよい。
【0150】
いくつかの実施形態においては、装置は、データをユーザーに提示するためのユーザー出力インターフェイス(130)を更に有することができる。
【0151】
いくつかの実施形態においては、装置は、ユーザーによって承認されるべきトランザクションを表すトランザクションデータを受け取り、ユーザー出力インターフェイスを通じて、受け取ったトランザクションデータをユーザーに提示し、ユーザーから、ユーザー入力インターフェイスを通じて、提示されたトランザクションデータ用の承認を受け取る、ように更に適合されていてもよい。いくつかの実施形態においては、動的認証クレデンシャルの計算は、装置が、提示されたトランザクションデータのユーザー承認を受け取ることを条件としてもよい。
【0152】
いくつかの実施形態においては、装置は、生成された動的認証クレデンシャルを認証サーバーによる検証のために利用可能な状態とするように更に適合されていてもよい。いくつかの実施形態においては、装置は、ユーザーが認証サーバーに転送するように、ユーザー出力インターフェイスを通じて、生成された動的認証クレデンシャルをユーザーに提示するように適合されていてもよい。いくつかの実施形態においては、装置は、生成された動的認証クレデンシャルを直接的又は間接的に認証サーバーに送信するように適合されていてもよい。
【0153】
いくつかの実施形態においては、装置は、ランダム又は疑似ランダム数生成器を更に有していてもよく、且つ、装置は、初期化ステージにおいて、ランダム又は疑似ランダム数生成器によって生成されたランダム又は疑似ランダム数を取得し、且つ、ランダム又は疑似ランダム数の関数としてパスコードブラインディングデータ要素値を取得するように更に適合されていてもよい。
【0154】
本発明の別の態様においては、動的認証クレデンシャルを検証する装置が提供されている。いくつかの実施形態においては、装置は、本説明のどこか別のところにおいて記述されている認証サーバーのいずれかを有することができる。いくつかの実施形態においては、装置は、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを検証する方法のうちのいずれかを実行するように適合されていてもよい。
【0155】
いくつかの実施形態においては、装置は、特定のユーザー又は特定の認証クライアントと関連する少なくとも1つのデータセットを保存するように適合されたメモリと、暗号動作を実行するように適合されたデータ処理コンポーネントと、を有していてもよく、且つ、装置は、認証ステージにおいて、動的認証クレデンシャルを受け取り、動的変数サーバー値を取得し、メモリから、特定のユーザー又は特定の認証クライアントと関連するデータセットを読み取り、読み取られたデータセットから、暗号クレデンシャル生成キーサーバー値を取得し、読み取られたデータセットから、パスコードベリファイアデータ要素サーバー値を取得し、取得された動的変数サーバー値、取得されたパスコードベリファイアデータ要素サーバー値、及び取得された暗号クレデンシャル生成キーサーバー値の不可逆サーバー関数としてクレデンシャル基準値を算出し、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしているかどうかを検証するべく、受け取られた動的認証クレデンシャルを算出されたクレデンシャル基準値と比較する、ように適合されていてもよい。
【0156】
いくつかの実施形態においては、装置は、認証サーバーを有していてもよく、且つ、メモリは、認証サーバーに含まれている、或いは、これによってアクセス可能である、データベースを有することができる。
【0157】
いくつかの実施形態においては、装置は、認証ステージにおいて、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしているかどうかを通知する信号を生成するように更に適合されていてもよい。
【0158】
いくつかの実施形態においては、装置は、メモリ内において、特定のユーザー又は特定の認証クライアントと関連するデータセットの一部分として、パスコードベリファイアデータ要素サーバー値を保存するように更に適合されていてもよい。
【0159】
いくつかの実施形態においては、装置は、特定のユーザー又は特定の認証クライアントと関連するデータセットの一部分として現時点の状態変数サーバー値を取得し、且つ、メモリ内において維持し、且つ、認証ステージにおいて、読み取られたデータセットから現時点の状態変数サーバー値を取得し、取得された現時点の状態変数サーバー値の関数として暗号クレデンシャル生成キーサーバー値を判定し、クレデンシャル基準値の計算後に、暗号クレデンシャル生成キーサーバー値を破棄し、取得された現時点の状態変数サーバー値の第2不可逆サーバー関数として新しい状態変数サーバー値を算出し、暗号クレデンシャル生成キーサーバー値の判定及び新しい状態変数サーバー値の計算の後に、現時点の状態変数サーバー値を破棄し、且つ、メモリ内において、特定のユーザー又は特定の認証クライアントと関連するデータセットの一部分として、現時点の状態変数サーバー値の代わりに、新しい状態変数サーバー値を書き込む、ように更に適合されていてもよい。
【0160】
いくつかの実施形態においては、装置は、初期化ステージにおいて、パスコードベリファイアデータ要素値を受け取り、且つ、特定のユーザー又は特定の認証クライアントと関連するデータセットの一部分として、パスコードベリファイアデータ要素サーバー値として、受け取ったパスコードベリファイアデータ要素値をメモリ内において書き込むように更に適合されていてもよい。
【0161】
いくつかの実施形態においては、装置は、初期化ステージにおいて、初期状態変数サーバー値を取得し、且つ、特定のユーザー又は特定の認証クライアントと関連するデータセットの一部分として、現時点の状態変数サーバー値として、メモリ内において初期状態変数サーバー値を書き込む、ように更に適合されていてもよい。
【0162】
本発明の別の態様においては、コンピュータに基づいたアプリケーションとの間におけるユーザーのやり取りを保護するシステムが提供されている。いくつかの実施形態においては、システムは、本説明のどこか別のところにおいて記述されているシステムのいずれかを有することができる。具体的には、いくつかの実施形態においては、システムは、図2との関連において記述されているシステムのいずれかを有することができる。いくつかの実施形態においては、システムは、本説明のどこか別のところにおいて記述されている認証トークン又は認証クライアントのいずれかと、本説明のどこか別のところにおいて記述されている認証サーバーのいずれかと、のうちの複数のものを有することができる。いくつかの実施形態においては、システムは、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを生成する装置のいずれかと、本説明のどこか別のところにおいて記述されている動的認証クレデンシャルを検証する装置のいずれかと、を有することができる。いくつかの実施形態においては、システムは、本出願のどこか別のところにおいて記述されているコンピュータに基づいたアプリケーションとの間におけるユーザーのやり取りを保護する方法のうちのいずれかの方法の1つ又は複数のステップを実行するように適合されていてもよい。
【0163】
いくつかの実施形態においては、システム(200)は、認証クライアント(220)と、認証サーバー(230)と、を有していてもよく、これにより、認証クライアントは、認証クライアントのユーザーからパスコードを受け取るように適合されたユーザー入力インターフェイス(120)と、暗号計算を実行するように適合されたクライアントデータプロセッサ(150)と、パスコードブラインディングデータ要素値及び状態変数クライアント値を保存するクライアントメモリ(160)と、を有していてもよく、これにより、認証クライアントは、初期化ステージにおいて、パスコードブラインディングデータ要素値を取得し、且つ、メモリ内において保存し、且つ、状態変数クライアント値の初期クライアント値を取得し、且つ、初期クライアント値を現時点の状態変数クライアント値としてメモリ内において保存する、ように適合されていてもよく、これにより、認証クライアントは、認証ステージにおいて、動的変数クライアント値を取得し、ユーザー入力インターフェイスを通じてユーザーのパスコードを受け取り、クライアントメモリから、パスコードブラインディングデータ要素値を読み取り、受け取ったパスコード及びパスコードブラインディングデータ要素値の第1不可逆クライアント関数としてパスコードベリファイアデータ要素クライアント値を算出し、クライアントメモリから、現時点の状態変数クライアント値を読み取り、且つ、クライアントメモリから読み取られた現時点の状態変数クライアント値から暗号クレデンシャル生成キークライアント値を導出し、取得された動的変数クライアント値、算出されたパスコードベリファイアデータ要素クライアント値、及び導出された暗号クレデンシャル生成キークライアント値の第2不可逆クライアント関数として動的認証クレデンシャルを算出し、動的認証クレデンシャルの算出の後に、導出された暗号クレデンシャル生成キークライアント値を破棄し、現時点の状態変数クライアント値の第3不可逆クライアント関数として状態変数クライアント値の新しい値を生成し、且つ、現時点の状態変数クライアント値からの暗号クレデンシャル生成キークライアント値の導出及び状態変数クライアント値の新しい値の生成の後に、現時点の状態変数クライアント値を破棄し、且つ、現時点の状態変数クライアント値の代わりに、生成された状態変数クライアント値の新しい値を保存する、ように更に適合されていてもよく、且つ、これにより、認証サーバーは、ユーザー又は認証クライアントと関連する少なくとも1つのデータセットを保存するように適合されたサーバーメモリと、暗号動作を実行するように適合されたサーバーデータ処理コンポーネントと、を有していてもよく、且つ、これにより、認証サーバーは、初期化ステージにおいて、パスコードベリファイアデータ要素初期化値を受け取り、且つ、ユーザー又は認証クライアンと関連するデータセットの一部分として、パスコードベリファイアデータ要素サーバー値として、受け取られたパスコードベリファイアデータ要素初期化値をメモリ内において書き込み、且つ、初期状態変数サーバー値を取得し、且つ、ユーザー又は認証クライアントと関連するデータセットの一部分として、現時点の状態変数サーバー値として、初期状態変数サーバー値をメモリ内において書き込む、ように適合されていてもよく、且つ、これにより、認証サーバーは、認証ステージにおいて、生成された動的認証クレデンシャルを受け取り、動的変数サーバー値を取得し、ユーザー又は認証クライアントと関連するデータセットをサーバーメモリから読取り、読み取られたデータセットから現時点の状態変数サーバー値を取得し、取得された現時点の状態変数サーバー値の関数として暗号クレデンシャル生成キーサーバー値を導出し、読み取られたデータセットからパスコードベリファイアデータ要素サーバー値を取得し、取得された動的変数サーバー値、取得されたパスコードベリファイアデータ要素サーバー値、及び導出された暗号クレデンシャル生成キーサーバー値の第1不可逆サーバー関数としてクレデンシャル基準値を算出し、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしているかどうかを検証するべく、受け取られた動的認証クレデンシャルを算出されたクレデンシャル基準値と比較し、クレデンシャル基準値の計算の後に暗号クレデンシャル生成キーサーバー値を破棄し、取得された現時点の状態変数サーバー値の第2不可逆サーバー関数として新しい状態変数サーバー値を算出し、暗号クレデンシャル生成キーサーバー値の導出及び新しい状態変数サーバー値の計算の後に、現時点の状態変数サーバー値を破棄し、且つ、ユーザー又は認証クライアントと関連するデータセットの一部分として、現時点の状態変数サーバー値の代わりに、新しい状態変数サーバー値をサーバーメモリ内において書き込むように、更に適合されていてもよい。
【0164】
いくつかの実施形態においては、動的変数は、時間値に基づいたものであってもよく、且つ、認証クライアントは、認証クライアントに含まれているクライアントクロックの時間値の関数として動的変数クライアント値を取得するように適合されていてもよく、且つ、認証サーバーは、認証サーバーに含まれているサーバークロックの時間値の関数として動的変数サーバー値を取得するように適合されていてもよく、これにより、クライアントクロック及びサーバークロックは、同期化されてもよい。いくつかの実施形態においては、動的変数は、カウンタに基づいたものであってもよく、且つ、認証クライアントは、認証クライアントによって維持されるクライアントカウンタの関数として動的変数クライアント値を取得するように適合されていてもよく、且つ、認証サーバーは、認証サーバーによって維持されているサーバーカウンタ値の関数として動的変数サーバー値を取得するように適合されていてもよく、これにより、認証クライアント及び認証サーバーは、クライアントカウンタ値とサーバーカウンタ値を同期化させるように適合されていてもよい。いくつかの実施形態においては、動的変数は、チャレンジなどの、値に基づいたものであってもよく、且つ、認証サーバーは、この値を生成し、且つ、この値の関数として動的変数サーバー値を取得し、且つ、この値を認証クライアントに送信するように適合されていてもよく、且つ、認証クライアントは、(例えば、ユーザーによって提供される入力又は認証サーバーから受け取られるメッセージ内において)この値を受け取り、且つ、この値の関数として動的変数クライアント値を取得するように適合されていてもよい。いくつかの実施形態においては、動的変数は、トランザクションデータに基づいたものであってもよく、且つ、認証サーバーは、例えば、トランザクションを処理するコンピュータに基づいたアプリケーションからトランザクションデータを受け取り、且つ、トランザクションデータの関数として動的変数サーバー値を取得するように適合されていてもよく、且つ、認証クライアントは、(例えば、ユーザーによって提供される、或いは、認証サーバー又はコンピュータに基づいたアプリケーションから受け取られる、メッセージに含まれた入力として)トランザクションデータを受け取り、且つ、トランザクションデータの関数として動的変数クライアント値を取得するように適合されていてもよい。
【0165】
いくつかの実施形態においては、システムは、コンピュータに基づいたアプリケーションをホスティングするように適合されたアプリケーションサーバーを更に有していてもよく、且つ、認証サーバーは、認証ステージにおいて、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしているかどうかをコンピュータに基づいたアプリケーションに通知するように更に適合されていてもよく、且つ、コンピュータに基づいたアプリケーションは、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしている場合に、1つの動作を実行し、且つ、受け取られた認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしていない場合には、別の動作を実行するように適合されていてもよい。例えば、いくつかの実施形態においては、コンピュータに基づいたアプリケーションは、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしている場合には、ログイン要求を認可してもよく、或いは、特定のデータに対するユーザーアクセスを認可してもよく、或いは、ユーザーが特定の動作を実行することを認可してもよく、或いは、ユーザーによってサブミットされたものでありうる特定のトランザクションを実行してもよく、且つ、コンピュータに基づいたアプリケーションは、受け取られた動的認証クレデンシャルが算出されたクレデンシャル基準値とマッチングしない場合には、これらの動作の実行を拒絶してもよい。
【0166】
いくつかの実施形態においては、不可逆関数は、一方向関数を有していてもよく、即ち、入力日付が付与された場合に結果を算出することが演算的に容易であるが、関数の結果の特定の値が付与された場合にマッチングする入力日付を取得することが演算的に困難である数学関数を有することができる。演算的に容易である、とは、いくつかの実施形態においては、関数の結果を取得するために、計算を実行するように意図された電子装置上において5秒未満を所要することを意味しうる。演算的に困難である、とは、いくつかの実施形態においては、関数の結果の特定の値が付与された場合に、マッチングする入力日付を取得するために、入力日付が付与された場合に結果を演算するために所要するものよりも少なくとも百万倍だけ多い演算量を所要することを意味しうる。演算的に困難である、とは、いくつかの実施形態においては、関数の結果の特定の値が付与された場合に、マッチングする入力日付を取得するための唯一の既知の方法が、徹底的サーチ(exhaustive search)によるものであることを意味しうる。又、本説明を目的として、秘密キーによってパラメータ化された暗号の暗号化又は暗号解読動作も、不可逆関数として見なされてもよく、その理由は、パラメータ化秘密キーの値が未知である場合には、入力データ要素に対する暗号化又は暗号解読動作を元に戻すことが演算的に困難でありうるからである。
【0167】
本発明の実施形態の利点
パスコード値は、認証システムのいずれかのコンポーネント上において保存されている場合には、例えば、そのようなコンポーネントのメモリにアクセスする能力を有する攻撃者により、危険に晒される場合がある。パスコードは、通常、相対的に低いエントロピーを有しうることから、攻撃者が、パスコードの関数であるデータ要素の値を取得した場合には、パスコードは、潜在的に、ブルートフォース徹底的サーチ攻撃に対して脆弱でありうるであろう。
【0168】
本発明は、様々な攻撃からパスコード値の機密性を保護するという点において、動的クレデンシャルに基づいた、且つ、パスコードを使用する、コンピュータに基づいたアプリケーションとの間におけるユーザーのやり取りを保護するその他の方法及びシステムを改良する。
【0169】
動的認証クレデンシャルは、パスコード値の関数として生成されることから、動的認証クレデンシャルの値は、パスコードの値を取得するための徹底的サーチ攻撃のための開始点として使用されうるであろう。但し、動的認証クレデンシャルは、パスコード値のみならず、高エントロピーのパスコードブラインディングデータ要素値及び高エントロピーの暗号クレデンシャル生成キー値の不可逆関数として算出されていることから、このような徹底的サーチ攻撃は、演算的に実行不能となろう。
【0170】
パスコードブラインディングデータ要素値及び/又は暗号クレデンシャル生成キー値の知識自体は、徹底的サーチによる場合にも、パスコードの値の取得を許容してはおらず、その理由は、パスコードブラインディングデータ要素及び暗号クレデンシャル生成キー値の値がパスコートの値とは独立しているからである。従って、本発明の態様による認証トークン又は認証クライアントは、ユーザーによって提供されたパスコードを破棄し、且つ、動的クレデンシャルの生成のために使用された後に、算出されたパスコードベイファイアデータ要素を破棄していることから、認証トークン又は認証クライアントのメモリのコンテンツを入手した(且つ、従って、保存されているパスコードブラインディングデータ要素値を入手済みでありうる)攻撃者も、依然として、ユーザーのパスコードを取得することができない。
【0171】
パスコードベリファイアデータ要素は、パスコード値の関数として生成されることから、パスコードベリファイアデータ要素の値は、パスコードの値を取得するための徹底的サーチ攻撃のための開始点として使用されうるであろう。但し、パスコードベリファイアデータ要素は、パスコード値のみならず、高エントロピーのパスコードブラインディングデータ要素値の不可逆関数として算出されていることから、このような徹底的サーチ攻撃は、演算的に実行不能となろう。即ち、パスコードベリファイアデータ要素の知識自体は、パスコードの値の取得を許容してはいない。又、一方において、暗号クレデンシャル生成キー値と、他方において、パスコード及びパスコードベリファイアデータ要素の値と、が、互いに独立していることから、パスコードベリファイアデータ要素値と対応する暗号クレデンシャル生成キー値の両方の組み合わせられた知識も、パスコードの値の取得を許容してはいない。従って、認証サーバーにおいて保存されているパスコードベリファイアデータ要素値及び/又は対応する暗号クレデンシャル生成キー値を入手した攻撃者も、依然として、ユーザーのパスコードを取得することができない。動的認証クレデンシャルの値が、パスコードベリファイアデータ要素値及び対応する暗号クレデンシャル生成キー値の値の組合せによって完全に判定されている(且つ、従って、なんらの情報をも、これに対して付加していない)ことから、動的認証クレデンシャルの値を捕捉した、且つ、認証サーバーにおいて保存されている対応するパスコードベリファイアデータ要素値及び/又は対応する暗号クレデンシャル生成キー値を入手した、攻撃者も、依然として、ユーザーのパスコードを取得することができない。
【0172】
動的認証クレデンシャル値は、パスコード値、動的変数値、パスコードブラインディングデータ要素値、及び暗号クレデンシャル生成キー値の関数であることから、且つ、動的変数値は、その取得又は推定が容易でありうる、或いは、実際に、低エントロピーを有しうることから、一方において、動的認証クレデンシャル値を、且つ、他方においては、その動的認証クレデンシャル値の生成において使用されたパスコードブラインディングデータ要素値及び暗号クレデンシャル生成キー値の両方を、入手することができた攻撃者は、潜在的に実行可能な徹底的サーチ攻撃を開始するべく、その動的クレデンシャル値を使用しうるであろう。但し、本発明の態様による認証トークン又は認証クライアントは、動的認証クレデンシャルを生成するべくその暗号クレデンシャル生成キー値を使用した後に、この特定の暗号クレデンシャル生成キー値が導出されたものでありうるすべての暗号クレデンシャル生成キー及び状態変数の値の両方を破棄していることから、一方においては、特定の認証トークン又は認証クライアント内において保存されているパスコードブラインディングデータ要素、暗号クレデンシャル生成キー、及び状態変数の値と、他方においては、その特定の認証トークン又は認証クライアントにより、その時点までに生成された任意の又はすべての動的認証クレデンシャルの値と、の両方を入手した攻撃者も、依然として、一方において、動的認証クレデンシャル値と、他方においては、その動的認証クレデンシャル値の生成において使用されたパスコードブラインディングデータ要素値と特定の暗号クレデンシャル生成キー値の両方と、の組合せを有しておらず、且つ、従って、依然として、その特定の認証トークン又は認証クライアントのユーザーのパスコードを取得するべく、実行可能な徹底的サーチ攻撃を開始することができないであろう。
【0173】
以上、いくつかの実装形態について説明した。但し、様々な変更が実施されうることを理解されたい。例えば、1つ又は複数の実装形態の要素は、更なる実装形態を形成するべく、組み合わせられてもよく、削除されてもよく、変更されてもよく、或いは、補完されてもよい。従って、その他の実施形態が、添付の請求項の範囲に含まれている。これに加えて、特定の特徴が、いくつかの実装形態のうちの1つのみとの関係において開示されている場合があるが、このような特徴は、任意の所与の又は特定の用途において望ましい又は有利でありうる場合には、その他の実装形態の1つ又は複数のその他の特徴と組み合わせられてもよい。様々な実施形態が上述されているが、これらは、限定ではなく、例示を目的として提示されているに過ぎないことを理解されたい。具体的には、当然のことながら、特許請求されている主題について記述することを目的として、コンポーネント又は方法のすべての想定可能な組合せについて記述することは不可能であり、当業者は、多くの更なる組合せ及び順列が可能であることを認識することができる。従って、本明細書における教示の広さ及び範囲は、上述の例示用の実施形態のいずれによっても限定されるものではない。
図1
図2
図3
図4