説明

リセット可能な耐タンパー性ハードウェアトークンを使用する、効率的な秘匿関数計算の方法

本発明のある実施形態は、紛失通信として知られるプリミティブである、あるユーザから他のユーザへのプライベート情報の送信のためのコンピュータ実装方法を提供する。強い擬似ランダム関数ジェネレータ(SPRFG)からの出力が、第1ユーザのコンピューティングモジュールによって第1および第2パラメータに基づいて計算され、第1パラメータが2つの秘密鍵のうちの1つを指定し、第2パラメータが第1ユーザによってSPRFGの領域内で選択された値である。第1ユーザは格納された2つの秘密鍵を読むことも知ることもできない。出力は、それぞれ第1および第2の秘密鍵を使用する逆SPRFG計算にそれぞれ基づく第1および第2の暗号化された値、および第2ユーザの対応するプライベート値を生成する第2ユーザのコンピュータに送信される。暗号化された値は、第2パラメータ、ならびに使用された第1および第2の鍵のうちの1つに対応する第1および第2の暗号化された値のうちの1つに基づいて数学的計算を使用してプライベート値の1つを計算する第1ユーザの第1コンピュータに送信される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号プリミティブ紛失通信、すなわち、他のパーティが完全なプライベート情報自体を知らないままプライベート情報を確実に利用できるような、あるパーティによって保持された少なくとも1つの秘密のストリング/値の他のパーティへの送信の実装に関する。秘匿関数計算(SFE)におけるその利用の一例は、プライベート入力を計算しようとするパーティにプライバシーを提供する関数計算の方法である。本発明は、より具体的には、パーティ間の情報の通信に関連付けられる暗号化されたパラメータを復号する際に使用するために他のパーティによって行われる計算のためにパーティの2つの秘密値(鍵)のうちの一方がアクセス可能になるが、他のパーティは2つの鍵のうちの他方を知ることができない方法を扱う。
【背景技術】
【0002】
SFE実装は開示されており、たとえば「Fairplay−A Secure Two−party Computation System」、by D.Malkhi、N.Nisan、B.Pinkas and Y.Sella,USENIX 2004を参照されたい。2パーティの一般的な秘匿関数計算(SFE)により、2パーティは、それぞれの入力xおよびyの両方のプライバシーを維持しながら、xおよびyのどのような関数も計算できるようになる。SFEアルゴリズムによって、参加者の相互不信のために以前は不可能であった様々な電子取引が可能になる。電子取引の例には、オークション、契約締結、分散データベース検索などがある。計算および通信リソースが増加したため、SFEは実用的になった。Fairplayは、悪意のあるプレーヤーとの一般的な2パーティSFEの実装である。Fairplayは、最大約100万ゲートの回路として表される多くの便利な機能についてのSFEの実現可能性を示す。SFEプロトコル実装の他の例は、Y.Lindell、B.Pinkas、N.Smartの「Implementing Two−party Computation Efficiently with Security Against Malicious Adversaries」、SCN 2008である。
【0003】
特にブール回路に適している、SFEについてのGC(garbled circuit)技術の利用は、Yehuda.LindellおよびBenny.Pinkasの「A Proof of Yao‘s Protocol for Secure Two−Party Computation」、Cryptology ePrint Archive、Report 2004/175、2004、http://eprint.iacr.org/に記載されている。GC技術のあるステップは、送信者の2つの秘密鍵のうちの1つの、受信者への紛失通信(OT)である。この秘密鍵送信ステップは通常は公開鍵暗号化技術によって実装され、演算集約的である。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】「Fairplay−A Secure Two−party Computation System」、by D.Malkhi、N.Nisan、B.Pinkas and Y.Sella,USENIX 2004
【非特許文献2】Y.Lindell、B.Pinkas、N.Smartの「Implementing Two−party Computation Efficiently with Security Against Malicious Adversaries」、SCN 2008
【非特許文献3】Yehuda.LindellおよびBenny.Pinkasの「A Proof of Yao‘s Protocol for Secure Two−Party Computation」、Cryptology ePrint Archive、Report 2004/175、2004、http://eprint.iacr.org/
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の目的は、送信者パーティの2つの鍵のうちの1つを受信者パーティが利用することに基づいて、受信者パーティに情報を安全に送信する方法であって、受信者の装置による計算のためにその1つの鍵がアクセス可能だが、受信者パーティは完全なプライベート情報を知ることができず、送信者にはプライベート情報のどの部分が送信されたかわからない方法を提供することである。この方法より、このような送信を実行するために通常必要である計算量が最小化される。この方法は、これに限らないが、SFE技術におけるgarbled circuitテーブルパラメータの復号に使用される情報の送信に特に適している。
【課題を解決するための手段】
【0006】
本発明のある実施形態では、第1パーティによって生成された耐タンパー性トークンTが、操作のために第2パーティに与えられる。この実施形態は、悪意がある可能性がある第2パーティの無力さに依存せずに、トークンを元の状態にリセットする。したがってこの実施形態は、従来技術がセキュリティを提供しなかった攻撃者のクラスに対するセキュリティを提供する。
【0007】
本発明のある実施形態は、プライベート情報を送信するためのコンピュータ実装方法を提供する。第2ユーザによって第1ユーザに与えられたリセット可能な耐タンパー性トークンなどの第1ユーザのコンピューティングモジュールによって、強い擬似ランダム関数ジェネレータ(SPRFG)からの出力が第1および第2パラメータに基づいて計算され、2つの秘密鍵のうちの1つを指定するために第1パラメータが使用され、第2パラメータは第1ユーザによってSPRFGの領域内でランダムに選択された値である。第1ユーザは格納された2つの秘密鍵を読むことも知ることもできない。出力は、それぞれ第1および第2の秘密鍵を使用する逆SPRFG計算にそれぞれ基づく第1および第2の暗号化された値、および第2ユーザのプライベート値を生成する第2ユーザのコンピュータに送信される。暗号化された値は、第2パラメータ、ならびに使用された第1および第2の鍵のうちの1つに対応する第1および第2の暗号化された値のうちの1つに基づいて、数学的計算を使用してプライベート値を計算する第1ユーザのコンピュータに送信される。
【0008】
さらなる実施形態は、一般に上記の要件を実装するように構成されたコンピューティング装置を含む。
【0009】
本発明の例示的実施形態の特徴は、記述、特許請求の範囲、および添付の図面を読めば明らかになるであろう。
【図面の簡単な説明】
【0010】
【図1】本発明による方法を実装するための、あるパーティによる使用に適した例示的コンピューティング装置のブロック図である。
【図2】本発明によるリムーバブルカードによって実装された例示的方法の流れ図である。
【図3】本発明の方法による、2パーティが通信している例示的コンピューティングシステムのブロック図である。
【図4】本発明による図3の送信者パーティのコンピューティング装置によって実装された例示的方法の流れ図である。
【図5】本発明による図3の受信者パーティのコンピューティング装置によって実装された例示的方法の流れ図である。
【発明を実施するための形態】
【0011】
本発明の一態様は、送信者パーティの秘密鍵を含む受信者パーティに保有されているリムーバブル耐タンパー性カードの使用は、計算効率を大幅に上げながらデータ送信操作に許容可能なセキュリティを提供できる鍵に基づいて、SFE値などの値を処理するための方法で利用できるという認識にある。
【0012】
図1では、本発明によるFSE方法の実装に適したコンピューティング装置10は、格納されたプログラム命令に基づいて処理およびタスクを実行するマイクロプロセッサ12を含む。マイクロプロセッサ12は、読出し専用メモリ(ROM)14、ランダムアクセスメモリ(RAM)16、および不揮発性データ記憶装置18によってサポートされている。コンピューティング装置を起動してブートするために、一般にROM14内のデータおよび格納されたプログラム命令がマイクロプロセッサ12によって利用されることが当業者には理解されよう。ガーブルされたテーブル値の格納およびアンガーブリングを含むFSEの実装を制御するプログラムなどのアプリケーションプログラムを、不揮発性記憶要素18に格納できる。マイクロプロセッサ12によって容易にアクセスおよび処理できるように、アプリケーションプログラムの少なくともアクティブな部分が一般的にRAM16に格納される。FSE入力および操作制御などの命令を入力するために、キーボード、キーパッド、およびマウスなどの様々なユーザ入力20を利用できる。ディスプレイスクリーンおよび/またはプリンタなどのユーザ出力装置22は、ユーザによって入力された情報か、FSEの中間または最終出力に関連付けられる情報のどちらかを表す、文字などの視覚的出力を提供する。入力/出力(I/O)モジュール24は、受信者パーティによって装置10が使用されるFSE交換において、マイクロプロセッサ12が送信者パーティの装置などの外部ノードとのデータの送受信ができるようにする通信インターフェースを提供する。本発明による、受信およびリムーバブルカード30との通信に適したカードスロット26は、入力/出力モジュール27によってマイクロプロセッサ12に接続されている。
【0013】
この例示的実装形態では、リムーバブルカード30は、ROM34、RAM36、およびI/Oモジュール38に結合されて、それらによってサポートされたマイクロプロセッサ32を含む。カード30は、カード30が装置10内の挿入された位置にある場合、カードスロット26に関連付けられる対応する接点を連結するように設計された、I/Oモジュール38に関連付けられる複数のピン40を含む。本発明の例示的方法による装置10およびカード30内のソフトウェアによって実装されたステップはFSE値のアンガーブリングを実行する。装置10およびカード30は、以下に説明するようにこれらのステップを実行するために協働する。
【0014】
一実施形態では、この方法は、あるパーティのコンピュータに接続された他のパーティの秘密鍵を格納するがそれを見せないトークン、すなわちカードにアクセスするあるパーティのコンピュータによって実装される。リセット可能(すなわち、カードを元の状態にリセットすることを目的とする悪意があると思われる第2パーティの攻撃を受けやすい)な場合があるトークン上に含まれる秘密鍵に基づいてあるパーティから他のパーティに情報を送信するために、強い擬似ランダム関数生成(SPRFG)を使用できる。本明細書で使用されるように、「SPRFG」は、関数の逆を効率的に計算できるようにする、すなわちy=PRFG(x)およびkからPRFG−1(y)=xを効率的に計算できる、擬似ランダム関数生成(またはジェネレータ)を意味する。
【0015】
図2は、カード30の操作に関する例示的ステップを示している。ステップ50で、送信者パーティの2つの秘密鍵k、kが送信者パーティによって選択され、カード(リセット可能な耐タンパー性トークン)に入力され、次いでそのカードが受信者パーティに与えられる。ステップ52で、カードの操作(すなわちインターフェース)を関数呼出しeval(i,d)=PRFGk_(d)に応じて出力を生成することのみに制限する、すなわちカードからアクセスできるのはeval(i,d)呼出しの計算の出力だけであるアプリケーションとともに、SPRFG関数がカードに実装される。カードは、eval(i,d)のそれぞれの関数呼出しに応じて1つの出力だけを計算して生成するように設計されており、evalは評価関数呼出しであり、iは利用されるべき2つの鍵のうちの1つを指定するeval関数のパラメータとしての整数0または1であり、dは受信機によって入力された値である。それぞれの関数呼出しを関連パラメータとともに受信すると、カード30はSPRFGk(i)(d)を表す結果として得られる値を計算して出力する。
【0016】
ステップ54で、ステップ50および52によって上述のように構成されたカードに受信者パーティのコンピュータが接続される。eval関数呼出しに関連付けられる入力パラメータiおよびdが受信者パーティによって入力され、ここでdはSPRFGの領域からのランダムな値であり、iは上述の通りである。ステップ56で、カード30は、関数呼出し要求の受信および受信者パーティによる関連パラメータの入力に応じて、SPRFGk(i(j))(d)を表す値v=eval(i,d)を計算して、その値を受信者パーティのコンピュータに出力する。
【0017】
図3は、本発明の方法による2パーティが通信している例示的コンピューティングシステムのブロック図である。受信者パーティの装置70、すなわちカード30を備えるコンピュータ10は、送信者パーティの装置72、すなわちやはりカード30を備えるコンピュータ10と通信している。上述のように、受信者パーティのコンピュータでは、そのコンピュータ10による関数呼出しがカード30によって処理されて、コンピュータ10は対応する出力値vをそのカード30から受信する。例示的パス74によって示されるように、この出力vは送信者パーティの装置72に送信される。図4を参照してより詳細に説明するように、値vを受信すると、送信者パーティの装置72は値eとeを計算して、例示的パス76によって示されるようにこれらの値を受信者パーティの装置70に送信する。図5でさらに説明されるように、これらの値は受信者パーティの装置70によって暗号化された値を復号するために利用される。
【0018】
図4は、図3の送信者パーティのコンピューティング装置72によって実装された例示的方法の流れ図である。ステップ80で、送信者パーティの装置72は受信者パーティの装置70から値vを受信した。ステップ82で、送信者パーティの装置72は、
=SPRFG−1k0(v)XOR s
=SPRFG−1k1(v)XOR s
によって定義される値e、eを計算し、
上式で、SPRFG−1k0(v)およびSPRFG−1k1(v)は、それぞれ秘密鍵kおよびkに基づくvについての逆PRFG関数であって、秘密鍵は送信者によって定義されているので送信者に知られており、XORは排他的OR関数を表し、sおよびsは送信者に知られている秘密値であり、それらのうちの1つだけ(受信者によって選択された)が、値e、eの暗号化された形式で受信機に送信されるよう所望される。ステップ84で、送信者パーティの装置72が値e、eを受信者パーティの装置70に送信し、受信者パーティの装置70がこれらの値を使用して、受信した値eから所望の値sを復号する。
【0019】
図5は、図3の受信者パーティのコンピューティング装置によって実装された例示的方法の流れ図である。ステップ90で、受信者パーティの装置70のコンピュータ10は、そのカード30の関数呼出しを作成して、iおよびd入力を関連パラメータとして受信者パーティの装置のコンピュータ10に接続されたカード30に送信する。この例では、「j」は、対応する暗号化されない値の受信者パーティによる最終的な決定に関連付けられる値の特定のセットに関連付けられる値を表す。実行された関数呼出しeval(i,d)の結果として得られる値vがカードによって計算される。ステップ92で、値vが受信者パーティのコンピュータ10によってカードから受信され、受信者パーティはそれを送信者パーティの装置72に送信する。ステップ94で、受信者パーティの装置70は、値vに基づいて生成された値e、eを送信者パーティの装置72から受信する。ステップ96で、受信者パーティの装置70は、入力iについての暗号化されていない値sを計算するが、暗号化されていない値sは以下のように計算できる:
=d XOR e
上式で、dは受信者パーティによってSPRFGの領域から選択されたランダム変数であり、XORは排他的OR関数であり、eは送信者パーティから受信された値である。
【0020】
送信者が提供されるのは、SPRFGの領域内であり、i=0またはi=1によって生成された単一の値vだけなので、受信者のプライバシーは送信者に関して維持される。受信者は、受信者が両方の鍵SPRFG−1k0およびSPRFG−1k1の下でそのプリイメージがわかるような値vを取得できないので、送信者のプライバシーは受信者に関して維持される。これは、受信者には鍵kおよびk自体の値を知る方法がなく、カードは受信者が確実にSPRFG関数を「フォワード」方向だけで評価できるようにし、すなわち、カードが逆SPRFG計算を実行するための受信者アクセスを許可しないためである。
【0021】
本発明の実施形態の特徴は、トークンTはvの計算に続く状態を維持せず、したがってTをリセットすることが悪意のある受信者を助けることはなく、したがって強化されたセキュリティを提供することである。これは、本機能の実装をセキュアな実行カウンタに依存する従来技術のソリューションとは対照的である。明らかに、従来技術カードをリセットすることはそのカウンタをリセットし、従来技術ソリューションのセキュリティの前提を無効にする。
【0022】
本方法は、これに限定されないが、特に入力のプライバシーを維持しながらパーティがそれぞれの入力で関数を評価できるSFEにおける使用に適している。ガーブル回路(GC)手法は、ブール回路のSFEの効果的な方法である。従来技術のGCの演算の多いステップは、送信者によって保持された2つの秘密鍵のうちの1つの受信者への紛失通信である。
【0023】
本発明の例示的実施形態を本明細書で記述および説明してきたが、本発明の趣旨から逸脱することなしに、様々な修正、追加、置換などが行われ得ることが当業者には明らかであろう。上記の実施形態では、リムーバブルカード30はユーザに鍵の値自体を読まれない(開示されない)ようにしながら2つの秘密鍵のうちの選択された1つを使用して計算を実行できるように示されているが、リムーバブルカード30の代わりに必要な機能をサポートする他の構造または装置が置換されてよい。たとえば、メモリモジュールは秘密鍵を格納して、秘密鍵への直接アクセスを禁止しながら、すなわち格納された秘密鍵値が直接読み取られてユーザに開示されてしまう従来のメモリ読取り操作を防ぎながら、その鍵を利用して必要な計算を行う他の装置/モジュールだけへの秘密鍵のアクセスを許可する関連するハードウェア、ファームウェア、および/またはソフトウェアで利用できる。また、秘密鍵を格納して、受信した入力に基づいてSPRFG操作をサポートして、USBポートに接続された関連コンピュータから格納された秘密鍵への直接読取りアクセスを防止するために、USBポートインターフェースがあるコンピューティングモジュールを利用できる。
【0024】
本発明の範囲は、以下の特許請求の範囲によって定義される。

【特許請求の範囲】
【請求項1】
要求に関連付けられる第1および第2パラメータで、強い擬似ランダム関数生成(SPRFG)に基づいて関数を計算する要求を、第1ユーザの第1コンピュータの第1コンピューティングモジュールで受信するステップであって、第2パラメータが第1ユーザによってSPRFGの領域内で選択された値であるステップと、
第1および第2パラメータに基づいてSPRFG関数の第1コンピューティングモジュールによって出力を計算するステップであって、第1パラメータが、SPRFG関数の計算において使用されるコンピューティングモジュールに格納された2つの秘密鍵のうちの1つを指定し、第1コンピューティングモジュールが、格納された2つの秘密鍵を第1ユーザが読み取ることまたは知ることを防止するステップと、
出力を第2ユーザの第2コンピュータに送信するステップと、
第2コンピュータから、それぞれが第1および第2の秘密鍵を使用する逆SPRFG計算にそれぞれ基づく第1および第2の暗号化された値、ならびに第2ユーザのそれぞれの第1および第2プライベート値を受信するステップであって、秘密鍵が第2ユーザに知られているステップと、
コンピューティングモジュールに結合された第1コンピュータによって、第2パラメータ、ならびに第1および第2の暗号化された値のうちの1つに基づいて、数学的計算を使用して第1および第2プライベート値のうちの1つを計算するステップとを備える、プライベート情報を送信するためのコンピュータ実装方法。
【請求項2】
数学的計算に基づいて1つのプライベート値を計算するステップが、第2パラメータならびに第1および第2の暗号化された値のうちの1つを排他的ORするステップを備え、第1コンピューティングモジュールが、第1コンピューティングモジュールが第1および第2パラメータで強い擬似ランダム関数生成(SPRFG)に基づいて関数を計算する第1ユーザによる要求だけに対応することを防止するステップと、第1ユーザによるアクセスのための出力だけを提供するステップとを備える、請求項1に記載の方法。
【請求項3】
第1および第2の暗号化された値が、それぞれ一方の秘密鍵および他方の秘密鍵についての出力の逆SPRFG計算を備え、対応する第1および第2のプライベート値でそれぞれの逆SPRFG計算を排他的ORする、請求項1に記載の方法。
【請求項4】
第1コンピュータによって計算された出力を第2コンピュータで受信するステップであって、第1コンピュータによる出力が、第1および第2パラメータに基づく強い擬似ランダム関数生成(SPRFG)に基づく関数であり、第1パラメータが、第1コンピュータに格納された第1および第2の秘密鍵のうちの1つを指定して、第2パラメータが、第1コンピュータの第1ユーザによってSPRFGの領域内で選択された値であるステップと、
第2コンピュータの第2ユーザによって知られており、またやはりそれぞれが第2ユーザの第1および第2プライベート値に基づく、出力ならびに第1および第2の秘密鍵をそれぞれ使用して、逆SPRFG計算に基づく第1および第2の暗号化された値を第2コンピュータによって計算するステップと、
第2コンピュータから、第1および第2の暗号化された値のうちの1つからプライベート値を復号するように構成された第1コンピュータへ、第1および第2の暗号化された値を送信するステップとを備える、プライベート情報を送信するためのコンピュータ実装方法。
【請求項5】
第1および第2の暗号化された値が、それぞれ第1および第2の秘密鍵についての出力の逆SPRFG関数である対応する結果を備え、結果をそれぞれ第1および第2プライベート値で排他的ORして、第1コンピューティングモジュールが、第1および第2の秘密鍵を第1ユーザが読むことまたは知ることを防止するように構成され、第1コンピューティングモジュールが、第1および第2パラメータでSPRFGに基づいて関数を計算する第1ユーザによる要求だけに応答して、第1コンピューティングモジュールから第1ユーザによるアクセスのための出力だけを提供する、請求項4に記載の方法。
【請求項6】
出力が第1コンピュータの第1コンピューティングモジュールによって計算され、出力が第1および第2パラメータに基づくSPRFG関数であり、第1パラメータが、SPRFG関数の計算において使用されるコンピューティングモジュールに格納された第1および第2の秘密鍵のうちの1つを指定し、第1コンピューティングモジュールが、格納された2つの秘密鍵を第1ユーザが読むことまたは知ることを防止し、第2パラメータが、第1ユーザによってSPRFGの領域内で選択された値である、請求項4に記載の方法。
【請求項7】
要求に関連付けられる第1および第2パラメータで強い擬似ランダム関数生成(SPRFG)に基づいて関数を計算する要求を第1ユーザから受信する第1コンピュータの第1コンピューティングモジュールであって、第2パラメータが第1ユーザによってSPRFGの領域内で選択された値である第1コンピューティングモジュールを備え、
第1コンピューティングモジュールが、第1および第2パラメータに基づいてSPRFG関数の出力を計算する第1コンピューティングモジュールであって、第1パラメータが、SPRFG関数の計算において使用されるコンピューティングモジュールに格納された2つの秘密鍵のうちの1つを指定し、第1コンピューティングモジュールが、格納された2つの秘密鍵を第1ユーザが読むことまたは知ることを防止し、さらに
第2ユーザの第2コンピュータに出力を送信するための手段を備え、
第1コンピュータが、第1および第2の秘密鍵をそれぞれ使用する逆SPRFG計算、ならびに第2ユーザの第1および第2プライベート値にそれぞれ基づく第1および第2の暗号化された値を第2コンピュータから受信し、秘密鍵が第2ユーザに知られ、
第1コンピュータが、第1および第2のパラメータ、ならび第1および第2の暗号化された値のうちの1つに基づいて、数学的計算を使用して第2ユーザのプライベート値である出力値を計算する、プライベート情報を送信するための装置。
【請求項8】
出力値の計算が、第2パラメータならびに第1および第2の暗号化された値のうちの1つを排他的ORすることを備える数学的計算に基づき、第1コンピューティングモジュールが、第1および第2パラメータで強い擬似ランダム関数生成(SPRFG)に基づいて関数を計算する第1ユーザによる要求だけに応答し、第1ユーザによるアクセスのための出力だけを提供する、請求項7に記載の装置。
【請求項9】
第1および第2の暗号化された値が、一方の秘密鍵および他方の秘密鍵についての出力の逆SPRFG計算をそれぞれ備え、それぞれの逆SPRFG計算をそれぞれ第1および第2プライベート値で排他的ORする、請求項7に記載の装置。
【請求項10】
第1コンピューティングモジュールが、第1コンピュータに着脱可能に接続されたマイクロコンピューティングモジュールを備え、マイクロコンピューティングモジュールが、マイクロコンピューティングモジュールがマイクロコンピューティングモジュールから第1コンピュータに送信された出力の送信をサポートすることを除いてそこに格納された情報の読取りを禁止する、請求項7に記載の装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2012−528532(P2012−528532A)
【公表日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願番号】特願2012−513164(P2012−513164)
【出願日】平成22年5月25日(2010.5.25)
【国際出願番号】PCT/US2010/036009
【国際公開番号】WO2010/138473
【国際公開日】平成22年12月2日(2010.12.2)
【出願人】(391030332)アルカテル−ルーセント (1,149)
【Fターム(参考)】