(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2018-534629(P2018-534629A)
(43)【公表日】2018年11月22日
(54)【発明の名称】ブールゲートのないマルチパーティ計算を用いて鍵付きハッシュメッセージ認証コード(HMAC)を実行する方法
(51)【国際特許分類】
G09C 1/00 20060101AFI20181026BHJP
H04L 9/32 20060101ALI20181026BHJP
【FI】
G09C1/00 650Z
H04L9/00 675A
G09C1/00 640D
【審査請求】未請求
【予備審査請求】未請求
【全頁数】17
(21)【出願番号】特願2018-526519(P2018-526519)
(86)(22)【出願日】2016年11月20日
(85)【翻訳文提出日】2018年6月8日
(86)【国際出願番号】IL2016051242
(87)【国際公開番号】WO2017085726
(87)【国際公開日】20170526
(31)【優先権主張番号】62/258,479
(32)【優先日】2015年11月22日
(33)【優先権主張国】US
(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JP,KE,KG,KN,KP,KR,KW,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA
(71)【出願人】
【識別番号】518172679
【氏名又は名称】アンバウンド テック リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】オシェター、ヴァレリー
【テーマコード(参考)】
5J104
【Fターム(参考)】
5J104AA08
5J104AA16
5J104AA17
5J104EA02
5J104EA09
5J104LA01
5J104NA02
5J104NA12
5J104NA37
5J104PA07
(57)【要約】
主題は、第3パーティクライアントのための少なくとも2つのサーバ上で作動される方法を開示し、方法は、第1の第3パーティクライアントからの秘密鍵に適用される第1不可逆関数の第1結果を第1サーバにより受信する段階と、第3パーティクライアントからの秘密鍵に適用される第2不可逆関数の第2結果を第2サーバにより受信する段階と、第2の第3パーティクライアントからのメッセージを第1サーバにより受信する段階と、第1サーバが、当該第1結果に対して、および当該メッセージに対して第1ハッシュ関数を計算し、第1サーバから第2サーバに第1ハッシュ関数の結果を送信する段階と、第2サーバが、当該第2結果に対して、および第1サーバから送信された第1ハッシュ関数の結果に対して第2ハッシュ関数を計算する段階と、第2サーバにより生成される結果をHMAC結果として出力する段階を備える方法。
【特許請求の範囲】
【請求項1】
第3パーティクライアントのための少なくとも2つのサーバ上で作動される方法であって、前記方法は、
第1の第3パーティクライアントからの秘密鍵に対して適用される第1不可逆関数の第1結果を第1サーバにより受信する段階と、
前記第3パーティクライアントからの前記秘密鍵に対して適用される第2不可逆関数の第2結果を第2サーバにより受信する段階と、
第2の第3パーティクライアントからのメッセージを前記第1サーバにより受信する段階と、
前記第1サーバが、前記第1結果に対して、および前記メッセージに対して第1ハッシュ関数を計算し、前記第1サーバから前記第2サーバに前記第1ハッシュ関数の結果を送信する段階と、
前記第2サーバが、前記第2結果に対して、および第1サーバから送信された前記第1ハッシュ関数の前記結果に対して第2ハッシュ関数を計算する段階と、
第2サーバにより生成される前記結果をHMAC結果として出力する段階
を備える方法。
【請求項2】
前記第1の第3パーティクライアントは、前記第2の第3パーティクライアントとは異なるエンティティである、請求項1に記載の方法。
【請求項3】
前記第1の第3パーティクライアントは、前記第2の第3パーティクライアントである、請求項1に記載の方法。
【請求項4】
前記第1サーバにより前記ハッシュ関数を計算する前に、前記秘密鍵に追加のゼロを加える段階をさらに備える、請求項1から3の何れか一項に記載の方法。
【請求項5】
前記第3パーティクライアントにより、前記秘密鍵および第2圧縮関数の前記結果を削除する段階をさらに備える、請求項1から4の何れか一項に記載の方法。
【請求項6】
前記メッセージは、コンピュータにより可読のファイルによって表される、請求項1から5の何れか一項に記載の方法。
【請求項7】
第1サーバは、前記第2サーバへのアクセス権を有しない、請求項1から6の何れか一項に記載の方法。
【請求項8】
第2サーバは、前記第1サーバへのアクセス権を有しない、請求項1から7の何れか一項に記載の方法。
【請求項9】
第1圧縮関数で前記第3パーティクライアントにより圧縮される前記秘密鍵は、前記第1サーバによって格納される、請求項1から8の何れか一項に記載の方法。
【請求項10】
第2圧縮関数で前記第3パーティクライアントにより圧縮される前記秘密鍵は、前記第2サーバによって格納される、請求項1から9の何れか一項に記載の方法。
【請求項11】
前記第1ハッシュ関数および前記第2ハッシュ関数は、同一の関数である、請求項1から10の何れか一項に記載の方法。
【請求項12】
圧縮された秘密鍵および第3パーティクライアントから送信されたメッセージを受信することおよび格納することが可能である第1サーバと、
前記圧縮された秘密鍵に対して、および前記メッセージに対してハッシュ関数を実行することが可能な前記第1サーバと一体化された第1ハッシュ関数ユニットと、
圧縮された秘密鍵および第3パーティクライアントから送信されたメッセージと、前記第1サーバから送信されたハッシュ関数の結果とを受信することおよび格納することが可能である第2サーバと、
前記圧縮された秘密鍵に対して、および前記メッセージに対して、ならびに前記第1サーバから受信した前記ハッシュ関数の結果に対してハッシュ関数を実行すべく設計される前記第2サーバと一体化される第2ハッシュ関数ユニット
を備えるシステム。
【請求項13】
前記サーバは、コンピュータプロセスの動作を実行することが可能なコンピュータ制御デバイスである、請求項12に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ネットワークセキュリティおよび認証プロセスの分野に関する。より詳細には、本発明は、認証プロセスをセキュアにするためのHMAC方法を利用する分野に関する。
【背景技術】
【0002】
暗号法において、鍵付きハッシュメッセージ認証コード(HMAC)は、秘密暗号化鍵と組み合わせて暗号化ハッシュ関数に関わるメッセージ認証コード(MAC)を算出するための特定の構造である。HMACの定義は、以下の通りである。
【数1】
ここで、Hは、暗号化ハッシュ関数であり、Kは、ハッシュ関数の入力ブロックサイズに、追加のゼロで右側にパディングされた秘密鍵、またはそれがそのブロックサイズよりも長い場合、元の鍵のハッシュであり、mは、認証されるメッセージであり、||は、連結を示し、
【数2】
は、排他的論理和(XOR)を示し、opadは、外側のパディング(0x5c5c5c...5c5c,1ブロック長の16進定数)であり、ipadは、内側のパディング(0x363636...3636,1ブロック長の16進定数)である。
【0003】
HMACは、メモリに完全な鍵を持つ単一のマシン上で実行されると定義される。HMACは、また、例えば、ワンタイムパスワードのようなパスワードを認証すべく、セキュアなマルチパーティ計算(MPC)を用いて2またはそれより多くのコンピュータ制御エンティティ上で実行されてよいが、他の目的にも用いられ得る。MPCは、いずれのパーティも暗号鍵の全てを保持せず、暗号鍵がパーティ間で共有されるときに使用される。マルチパーティ計算において実行されるHMACの標準的な実施は、HMAC関数をブール回路として表すこと、および多くのブールゲートをセキュアに計算することを必要とし、パーティ間で比較的大量のデータを転送することを必要とする。パーティのうちの1つが、携帯電話のような計算リソースに限定される場合、ブールゲートを用いることが、プロセスを遅らせ、携帯電話の通常動作に支障をきたすことがある。
【発明の概要】
【0004】
本発明は、そのサーバのいずれもがHMAC暗号鍵の全ては保持しない、少なくとも2つのコンピュータ制御サーバを用いてHMACを実行する方法およびシステムを開示する。HMACを計算するプロセスは、コンピュータネットワーク上でコンピュータ制御エンティティとの接続または通信を求めている第3パーティクライアントの信頼性を確認するために使用されてよい。そのようなネットワークは、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および同様のものであってよい。本発明で開示される方法は、HMACプロセスのための秘密鍵を選択するまたは生成する段階と、次に、(HMACハッシュ関数およびipad/opad定数における不可逆関数により定義される)2つの異なる不可逆関数で秘密鍵に対して2つの圧縮プロセスを実行する段階とによって、第3パーティクライアントにより開始されてよい。第3パーティクライアントは、次に、第1不可逆関数を用いて圧縮される秘密鍵を第1サーバと示されるサーバへ送信でき、第2不可逆関数で圧縮される秘密鍵を第2サーバと示されるサーバへ送信できる。クライアントは、次に、ストレージ、メモリ、または/および当該第3パーティデバイスと一体化される別の可読メディアから、秘密鍵と不可逆関数の結果を削除する。
【0005】
HMAC関数を計算すべく、第3パーティクライアントは、サーバがそのメッセージに対するHMAC値を算出するために、メッセージをサーバへ送信する。いくつかの場合において、メッセージは、コンピュータ制御デバイス間で送信され得る、および使用され得るコンピュータ使用可能コンテンツであってよい。例えば、第3パーティデバイスは、文字列、長い数字、タイムスタンプ、デジタル画像、写真、および同様のものをメッセージとして送信してよい。
【0006】
第3パーティデバイスからメッセージを受信すると、第1サーバは、第1ハッシュ関数を利用して、第1不可逆関数を用いて圧縮される秘密鍵およびメッセージをハッシュし、次に、第1ハッシュ関数の値を第2サーバへ送信する。次に、第1ハッシュ関数の値を受信すると、第2サーバは、第1ハッシュ関数の値および第2不可逆関数を用いて圧縮される秘密鍵に対して適用される第2ハッシュ関数を計算する。第2ハッシュ関数の結果は、標準的なHMAC計算である。いくつかの場合において、認証サーバにより利用される全てのハッシュ関数は、同一であってよい。いつくかの他の場合において、ハッシュ関数のうちのいつくかは、同一であってよく、そのうちのいつくかは、同一でなくてよい。
【0007】
主題は、また、圧縮された秘密鍵と、第3パーティクライアントから送信されたメッセージを受信するおよび格納することが可能な少なくとも2つのサーバからなるシステムを開示する。サーバのうちの少なくとも2つは、圧縮された秘密鍵に対して、およびメッセージに対してハッシュ関数を実行するように構成される処理モジュールを備えてよい。サーバは、また、ハッシュ関数の結果を連結でき、HMAC計算を完了でき、認証プロセスを承認できる、連結モジュールを備える。システムのサーバは、また、それらの間でのあらゆるアクセスを拒否するように構成され得る。例えば、人、またはサーバのうちの1つで作動されるプロセスが、HMAC暗号鍵、または他のサーバに位置する任意の他の情報にアクセスできない。
【0008】
本発明で開示されるシステムとの認証を求める第3パーティクライアントは、モバイルコンピュータ制御デバイス、パーソナルコンピュータ、タブレットパーソナルコンピュータ、ラップトップ、デスクトップ、および同様のもののようなコンピュータ制御デバイスであってよい。
【図面の簡単な説明】
【0009】
開示されている主題の例示的な非限定的実施形態が、図と共に、実施形態の以下の説明を参照して説明される。図は、概して、一定の縮尺では示されておらず、任意の寸法は、例示的であることのみが意図され、必ずしも限定的ではない。対応するまたは同様の要素は、同一の符号または文字によって示される。
【0010】
【
図1】主題の例示的な実施形態に係る、サーバとして指名される2つのパーティでHMAC方法を実行するためのコンピュータ制御環境の概略図を示す。
【0011】
【
図2】主題の例示的な実施形態に係る、ブールゲートのないHMAC方法を実行するためのコンピュータ制御システムの概略図を示す。
【0012】
【
図3】主題の例示的な実施形態に係る、第3パーティクライアントを認証するために2つのパーティにより実行されるHMAC方法を利用する方法を示す。
【発明を実施するための形態】
【0013】
本発明は、2またはそれより多くのコンピュータ制御サーバを用いてHMACに基づく認証プロセスを実行する方法およびシステムを開示する。それらのサーバのうちのいずれも、第3パーティクライアントにより提供されるHMAC秘密鍵の全てを保持しない。秘密鍵は、第3パーティクライアントで異なる圧縮関数により分割され、異なるサーバに提供される。このため、異なる圧縮関数を適用することにより分割される、1より多くのサーバにおける分割鍵の存在により、ブール回路におけるHMAC関数の表示を必要とするMPCを利用する段階が不必要になる。開示される方法は、認証サーバとして構成され得る多様なコンピュータ制御デバイスの利用を可能にする。例えば、サーバおよびクライアント、2つのPC、コンピュータおよびモバイルデバイスである。いくつかの場合において、そのようなコンピュータ制御システムは、スマートフォンおよび/または、タブレット、ラップトップ、および同様のものといった追加のコンピュータ制御デバイスのようなコンピュータ制御デバイス上で作動されてよい。
【0014】
まず、HMACを計算するための秘密鍵Kが、第3パーティクライアントにより選択され、または生成される。次に、鍵の2つの値が以下のように計算される。第1サーバとして指名される一方のパーティが、Kに対して適用される第1圧縮関数の出力値である値を受信し、第2サーバとして指名される他方のパーティが、Kに対して適用される第2圧縮関数の出力値を受信する。いくつかの場合において、鍵Kは、関数の入力ブロックサイズへ、追加の定数によりパディングされてよい。そのような場合、第1認証サーバに送信されるKは、1つの定数(ipadと表される)でパディングされてよく、第2パーティに送信されるKは、異なる定数(opadと表される)でパディングされてよい。両方の圧縮関数は、標準的なHMACにおいて使用されるハッシュ関数に使用される標準的な圧縮関数から選択されてよい(この場合、結果は、標準的なHMAC計算値である)。
【0015】
いくつかの場合において、両方の圧縮関数は、不可逆関数であってよく、いくつかの場合において、疑似ランダム関数として挙動する。HMACの算出に関与し得るパーティは、鍵をF
1(K)=F[K XOR ipad]だけからも、F
2(K)=F[K XOR opad]だけからも引き出すことができず、ここで、Fは、圧縮関数を表し、F
1は、第1圧縮関数を表し、F
2は、第2圧縮関数を表し、Kは、秘密HMAC鍵を表す。本発明で開示される方法において、第1エンティティがF
1(K)から得られる値を受信し、第2エンティティがF
2(K)から得られる値を受信したとき、次のフェーズが画定される。エンティティは、サーバ、モバイルデバイス、PCなどであってよい。本発明の考えられる実施形態において、第2パーティがF
2(K)から得られる値を受信すると、認証プロセスが行われてよい。このため、認証することを求める第3パーティクライアントが、第1パーティへメッセージを送信してよい。次に、メッセージを受信した後、第1パーティは、F[F
1(K)+M]のような、F
1(K)およびMの出力値に対してハッシュ関数を計算でき、ここで、Mはメッセージを表す。いくつかの場合において、メッセージMは、移動係数もしくはHMACがワンタイムパスワード認証に用いられる場合、現在時刻であってよく、または当業者により所望される別のメッセージであり得る。移動係数を用いる場合、新しいOTPが生成されるときにはいつでも、移動係数が増分され、したがって、その後生成されるパスワードは、毎回異なるはずである。
【0016】
本発明のいつくかの実施形態において、第1パーティにより実行されるハッシュ関数は、また、以下のように圧縮関数を使用してよい。H
1(F
1,M)=F(F
1(K)+M)。そのハッシュ関数の出力値は、値M(メッセージ)に対して適用される圧縮関数Fの出力値と連結されたF
1から出力される値に対して適用される圧縮関数Fの出力値である。いくつかの場合において、H
1(F
1,M)は、また、メッセージ、Mの長さに対する圧縮を含む。
【0017】
H
1を算出した後、第1エンティティは、H
1から得られる値を第2エンティティへ送信する。第2エンティティは、ハッシュ関数を値H
1およびF
2から出力される値に対して適用することによりH
2を算出できる。第2エンティティは、以下のようにハッシュ関数を実行してよい。H
2(F
2,H
1)=F(F
2(K)+H
1)。第2エンティティにより算出されるハッシュ関数の結果が、標準的なHMAC計算をもたらすことができ、このため、これが、いずれのパーティへも秘密HMAC鍵を明らかにすることなく、HMACのMPC計算を構成する。
【0018】
いくつかの場合において、第1パーティにより実行されるハッシュ関数は、例えば、メッセージMのサイズがハッシュアルゴリズムのブロックサイズより大きい場合、反復的な方法で実行され得る。そのような場合、メッセージは、アルゴリズムブロックのサイズで、2またはそれより多くの部分に分割され、ハッシュ関数が以下のように実行される。H(T)=h(h(h(IV,T
0),T
1),...),length)。
【0019】
ここで、Tは、ハッシュアルゴリズムHの入力値を表し、hは、一定のブロックサイズの入力値Tのブロックに対して適用されるハッシュアルゴリズム(圧縮関数)を表し、T
0,T
1,T
2...は、一定のサイズのメッセージMの部分を表し、IVは、定数値である。いくつかの場合において、値Tは、メッセージMであってよく、順序付けられたT
0,T
1,T
2などは、当該メッセージMの一定のブロックサイズでの部分を表してよい。例えば、メッセージMがアルゴリズムHでハッシュ化される必要がある場合、アルゴリズムHは一定のサイズでのハッシュブロックと定義され、Mは1つのブロックのサイズより大きい一方で、Mメッセージは、いくつかの部分へと分割され得、ここで、各部分は、アルゴリズムHがハッシュすると定義される一定のブロックサイズのサイズである。そのような場合、第1ハッシュhは、定数IVおよび第1部分に対して実行される。次に、第2ハッシュhは、第1ハッシュhの結果および第2部分に対して実行される。第3ハッシュhは、第2ハッシュhの結果および第3部分に対して、メッセージ長を定義し得る最後の部分まで、実行される。
【0020】
ハッシュ関数は、SHA−1、MD5、SHA−2、SHA−3などのような当業者に所望される任意のハッシュ関数であってよい。
【0021】
図1は、主題の例示的な実施形態に係る、サーバとして指名される2つのパーティでHMAC方法を実行するためのコンピュータ制御環境の概略図を示す。環境は、第1サーバであってよい第1パーティ110と、第2サーバであってよい第2パーティ120との2つのパーティ、および第3パーティクライアント130を備える。第1パーティ110および第2パーティ120は、完全な秘密鍵にアクセスすることなく、1つのHMAC方法を共に実行する。第3パーティクライアント130は、秘密鍵を選び、暗号鍵に対する2つの異なる不可逆関数を計算し、第1不可逆関数計算の結果を第1パーティ110へ送信し、第2不可逆関数計算の結果を第2パーティ120へ送信する。第3パーティクライアント130は、V
1がF
1(K)の出力値を示し、V
2がF
2(K)の出力値を示すように、F
1(K)およびF
2(K)を実行する。典型的に、第3パーティは、ハッシュ関数を実行する前、第1パーティ110および第2パーティ120と秘密鍵を生成するおよび交換するフェーズにおいてのみ使用される。第3パーティは、また、暗号鍵Kに対して関数を適用した後、HMACと関連付けられる情報を自動的に消去するように構成され得る。
【0022】
第1パーティ110または第2パーティ120のいずれかの一方のパーティが、メッセージ、および第3パーティ130からあらかじめ受信した値V1に対してハッシュ関数を実行する。次に、値V1に対してハッシュ関数を適用したパーティは、ハッシュ関数の結果を他方のパーティへ送信する。例えば、第1パーティ110が、ハッシュ関数をメッセージMおよび値V
1に対して算出し、ハッシュ関数の結果を第2パーティ120へ送信する。次に、第2パーティ120は、第1パーティ110から受信した結果に対して、および値V
2に対して第2ハッシュ関数を適用する。ハッシュ関数が少なくとも2つの要素に対して実行されることに留意するべきである。第2パーティ120で実行される、第2ハッシュ関数の結果は、HMAC方法の結果であり、(例えば、ワンタイムパスワードを生成するとき)クライアントを認証するために、または(例えば、メッセージ認証の目的のためにHMACを計算するとき)メッセージを認証するために使用され得る。いくつかの場合において、方法は、それぞれ第1パーティ110および第2パーティ120として、サーバおよびモバイルデバイスの間で実施され、スマートフォンのようなモバイルデバイスのユーザが、HMACを用いてワンタイムパスワードを認証することを望む。そのような例示的な場合において、スマートフォンが第2ハッシュ関数を実行し、パスワードを認証すべく結果をサーバに送信する。
【0023】
図2は、主題の例示的な実施形態に係る、ブールゲートのないHMAC方法を実行するためのコンピュータ制御システムの概略図を示す。コンピュータ制御システム205は、マルチパーティ計算を用いてHMAC方法を実行する、第1パーティまたは第2パーティのいずれかに存在してよい。
【0024】
コンピュータ制御システム205は、他のパーティと通信するように構成される通信インターフェース210を備える。例えば、通信インターフェース210は、第3パーティで暗号鍵に対して適用された不可逆関数の値を受信する。通信インターフェース210は、また、パーティのうちの1つによって適用された第1ハッシュ関数の値を伝送および受信する。例えば、第1パーティが第1ハッシュを実行する場合、第1パーティの通信インターフェース210が、第1ハッシュの結果を、第1ハッシュの結果に対して第2ハッシュを実行する第2パーティへ送信する。
【0025】
コンピュータ制御システム205は、ハッシュ関数プロセスの一環として圧縮関数を計算するように構成される圧縮ユニット220を備える。圧縮ユニット220は、コンピュータ制御システムのメモリ領域に格納される圧縮方法を使用する。圧縮ユニット220により実行される圧縮方法は、当業者により選択されてよい。
【0026】
コンピュータ制御システム205は、ハッシュ関数を2またはそれより多くの値に対して実行するように構成されるハッシュ関数オペレータ230を備える。値は、コンピュータ制御システムの処理ユニットを介して、例えば、レジスタを介して、ハッシュ関数オペレータ230へ伝送されてよい。ハッシュ関数オペレータ230は、ハッシュ関数を実行するとき、値を圧縮ユニット220へ送信し、圧縮された値を受信し、圧縮された値を蓄積することにより、圧縮ユニット220を使用してよい。
【0027】
コンピュータ制御システム205は、また、ハッシュ関数オペレータ230の動作を制御するように構成されるハッシュ関数制御器235を備える。例えば、ハッシュ関数制御器235は、2つの値をハッシュ関数オペレータ230へ導入し、ハッシュ方法のブロックサイズに従って、メッセージMをどのように分割するのか確認し、ハッシュ関数オペレータ230により実行されるハッシュ関数を何度も反復し、ハッシュが正しく実行されるか検証してよい。いくつかの場合において、少なくともいつくかの圧縮ユニット220、ハッシュ関数オペレータ230およびハッシュ関数制御器235は、第1認証サーバ110または第2認証サーバ120内の処理モジュールのコンポーネントである。
【0028】
コンピュータ制御システム205は、第1パーティと第2パーティとにおける値を同期するように構成される同期モジュール240を備える。つまり、AES方法のような暗号化アルゴリズムが、マルチパーティ計算においてHMAC方法を用いて認証されるパスワードに対して適用される場合である。AESは、頻繁に、例えば1分ごとに更新されるので、同期モジュール240は、パスワードが更新されているかを検証し、第2パーティに格納される情報にアクセスするべく第1パーティの情報をコピーした攻撃者を妨げる。
【0029】
図3は、主題の例示的な実施形態に係る、第3パーティクライアントを認証するために2つのパーティにより実行されるHMAC方法を利用する方法を示す。いくつかの場合において、認証方法は、第3パーティクライアントを利用する人の信頼性を確認するために使用されてよい。いくつかの場合において、認証方法は、特定のデバイスを利用する人の信頼性を確認するために使用されてよい。例えば、ユーザは、認証プロセスにおいて、コンピュータ制御携帯電話を利用してよい。このため、ユーザは、1つの特定のコンピュータ制御携帯電話で認証プロセスを成功裏に通過することができてよく、別のコンピュータ制御携帯電話を利用している場合は認証できない。段階300は、設定フェーズと定義されてよく、HMAC鍵が、第3パーティにより生成される。第3パーティは、HMAC鍵に対して2つの異なる不可逆関数を適用してよく、次に、結果を保存する。
【0030】
段階302は、第1不可逆関数の出力値をパーティのうち第1パーティクライアントへ伝送する段階を開示する。段階305は、第2不可逆関数の出力値をパーティのうち第2パーティへ伝送する段階を開示する。段階307は、第3パーティクライアントが、暗号鍵および暗号鍵に対する圧縮関数の結果を削除できる、任意の段階である。
【0031】
段階310は、新しいHMAC結果を計算するためにメッセージMを受信する段階を開示する。そのようなメッセージは、ASCIIストリング、鍵、および同様のものであってよい。いくつかの場合において、メッセージ自体が、この同一メッセージが一度のみ送信され得ることを保証するデータを含んでよい。そのようなデータは、タイムスタンプ、シーケンス番号、移動係数、および同様のものであってよい。段階315は、パーティのうちの1つによって第1ハッシュ関数を適用する段階を開示する。第1ハッシュ関数は、第3パーティクライアントから送信されたメッセージMおよび第1不可逆関数から得られる値に対して実行される。段階320は、第1ハッシュ関数の出力値を第1パーティから、第2ハッシュ関数の算出を次に実行し得る第2パーティへ伝送する段階を開示する。
【0032】
段階330は、第2パーティにより、第2ハッシュ関数の算出を実行する段階を開示する。第2ハッシュ関数は、第1ハッシュ関数の出力値に対して実行され、第2不可逆関数の結果を使用する。第2ハッシュ関数の出力値は、任意のHMACの目的に用いられ得るHMAC値である。そのような目的の1つは、ワンタイムパスワードの生成のためである。段階340は、その所望される目的のためにHMAC/ワンタイムパスワードを出力する段階を開示する。
【0033】
開示が例示的な実施形態を参照して説明されている一方で、発明の範囲から逸脱することなく、様々な改変形態がなされてよく、均等物がそれらの要素に置換されてよいことが当業者により理解されるであろう。加えて、その本質的な範囲から逸脱することなく、多くの修正が特定の状況または材料を教示に適応するためになされてよい。したがって、開示されている主題は、この発明を実施するために考えられるベストモードとして開示されている特定の実施形態に限定されないが、以下の特許請求の範囲によってのみ限定されることが意図される。
【国際調査報告】