(57)【特許請求の範囲】
【請求項１】
要求に関連付けられる第１および第２パラメータで、強い擬似ランダム関数生成（ＳＰＲＦＧ）に基づいて関数を計算する要求を、第１ユーザの第１コンピュータの第１コンピューティングモジュールで受信するステップであって、第２パラメータが第１ユーザによってＳＰＲＦＧの領域内で選択された値であるステップと、
第１および第２パラメータに基づいてＳＰＲＦＧ関数の第１コンピューティングモジュールによって出力を計算するステップであって、第１パラメータが、ＳＰＲＦＧ関数の計算において使用されるコンピューティングモジュールに格納された２つの秘密鍵のうちの１つを指定し、第１コンピューティングモジュールが、格納された２つの秘密鍵を第１ユーザが読み取ることまたは知ることを防止するステップと、
出力を第２ユーザの第２コンピュータに送信するステップと、
第２コンピュータから、それぞれ第１および第２の秘密鍵を使用する逆ＳＰＲＦＧ計算、ならびに第２ユーザのそれぞれの第１および第２プライベート値にそれぞれ基づく第１および第２の暗号化された値を受信するステップであって、秘密鍵が第２ユーザに知られているステップと、
コンピューティングモジュールに結合された第１コンピュータによって、第２パラメータ、ならびに第１および第２の暗号化された値のうちの１つに基づいて、数学的計算を使用して第１および第２プライベート値のうちの１つを計算するステップとを備える、プライベート情報を送信するためのコンピュータ実装方法。
【請求項２】
数学的計算に基づいて１つのプライベート値を計算するステップが、第２パラメータならびに第１および第２の暗号化された値のうちの１つを排他的ＯＲするステップを備え、第１コンピューティングモジュールが、第１コンピューティングモジュールが第１および第２パラメータで強い擬似ランダム関数生成（ＳＰＲＦＧ）に基づいて関数を計算する第１ユーザによる要求だけに対応することを防止するステップと、第１ユーザによるアクセスのための出力だけを提供するステップとを備える、請求項１に記載の方法。
【請求項３】
第１および第２の暗号化された値が、それぞれ一方の秘密鍵および他方の秘密鍵についての出力の逆ＳＰＲＦＧ計算を備え、対応する第１および第２のプライベート値でそれぞれの逆ＳＰＲＦＧ計算を排他的ＯＲする、請求項１に記載の方法。
【請求項４】
第１コンピュータによって計算された出力を第２コンピュータで受信するステップであって、第１コンピュータによる出力が、第１および第２パラメータに基づく強い擬似ランダム関数生成（ＳＰＲＦＧ）に基づく関数であり、第１パラメータが、第１コンピュータに格納された第１および第２の秘密鍵のうちの１つを指定し、第１および第２の秘密鍵が第１コンピュータの第１ユーザが格納された第１および第２の秘密鍵を読み取ることまたは知ることを防止する態様で格納され、第２パラメータが、第１コンピュータの第１ユーザによってＳＰＲＦＧの領域内で選択された値であるステップと、
第１のコンピュータから受信した出力と、第２コンピュータの第２ユーザによって知られている第１および第２の秘密鍵をそれぞれ使用して逆ＳＰＲＦＧ計算に基づき、また第２ユーザの第１および第２プライベート値にそれぞれ基づく、第１および第２の暗号化された値を第２コンピュータによって計算するステップと、
第２コンピュータから、第１および第２の暗号化された値のうちの１つからプライベート値を復号するように構成された第１コンピュータへ、第１および第２の暗号化された値を送信するステップとを備える、プライベート情報を送信するためのコンピュータ実装方法。
【請求項５】
第１および第２の暗号化された値が、それぞれ第１および第２の秘密鍵についての出力の逆ＳＰＲＦＧ関数である対応する結果を備え、結果をそれぞれ第１および第２プライベート値で排他的ＯＲし、第１コンピューティングモジュールが、第１および第２の秘密鍵を第１ユーザが読むことまたは知ることを防止するように構成され、第１コンピューティングモジュールが、第１および第２パラメータでＳＰＲＦＧに基づいて関数を計算する第１ユーザによる要求だけに応答し、第１コンピューティングモジュールから第１ユーザによるアクセスのための出力だけを提供する、請求項４に記載の方法。
【請求項６】
出力が第１コンピュータの第１コンピューティングモジュールによって計算され、出力が第１および第２パラメータに基づくＳＰＲＦＧ関数であり、第１パラメータが、ＳＰＲＦＧ関数の計算において使用されるコンピューティングモジュールに格納された第１および第２の秘密鍵のうちの１つを指定し、第１コンピューティングモジュールが、格納された２つの秘密鍵を第１ユーザが読むことまたは知ることを防止し、第２パラメータが、第１ユーザによってＳＰＲＦＧの領域内で選択された値である、請求項４に記載の方法。
【請求項７】
要求に関連付けられる第１および第２パラメータで強い擬似ランダム関数生成（ＳＰＲＦＧ）に基づいて関数を計算する要求を第１ユーザから受信する第１コンピュータの第１コンピューティングモジュールであって、第２パラメータが第１ユーザによってＳＰＲＦＧの領域内で選択された値である第１コンピューティングモジュールを備え、
第１コンピューティングモジュールが、第１および第２パラメータに基づいてＳＰＲＦＧ関数の出力を計算する第１コンピューティングモジュールであって、第１パラメータが、ＳＰＲＦＧ関数の計算において使用されるコンピューティングモジュールに格納された２つの秘密鍵のうちの１つを指定し、第１コンピューティングモジュールが、格納された２つの秘密鍵を第１ユーザが読むことまたは知ることを防止し、さらに
第２ユーザの第２コンピュータに出力を送信するための手段を備え、
第１コンピュータが、第１および第２の秘密鍵をそれぞれ使用する逆ＳＰＲＦＧ計算、ならびに第２ユーザの第１および第２プライベート値にそれぞれ基づく第１および第２の暗号化された値を第２コンピュータから受信し、秘密鍵が第２ユーザに知られ、
第１コンピュータが、第１および第２のパラメータ、ならび第１および第２の暗号化された値のうちの１つに基づいて、数学的計算を使用して第２ユーザのプライベート値である出力値を計算する、プライベート情報を送信するための装置。
【請求項８】
出力値の計算が、第２パラメータならびに第１および第２の暗号化された値のうちの１つを排他的ＯＲすることを備える数学的計算に基づき、第１コンピューティングモジュールが、第１および第２パラメータで強い擬似ランダム関数生成（ＳＰＲＦＧ）に基づいて関数を計算する第１ユーザによる要求だけに応答し、第１ユーザによるアクセスのための出力だけを提供する、請求項７に記載の装置。
【請求項９】
第１および第２の暗号化された値が、一方の秘密鍵および他方の秘密鍵についての出力の逆ＳＰＲＦＧ計算をそれぞれ備え、それぞれの逆ＳＰＲＦＧ計算をそれぞれ第１および第２プライベート値で排他的ＯＲする、請求項７に記載の装置。
【請求項１０】
第１コンピューティングモジュールが、第１コンピュータに着脱可能に接続されたマイクロコンピューティングモジュールを備え、マイクロコンピューティングモジュールが、マイクロコンピューティングモジュールがマイクロコンピューティングモジュールから第１コンピュータに送信された出力の送信をサポートすることを除いてそこに格納された情報の読取りを禁止する、請求項７に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号プリミティブ紛失通信、すなわち、他のパーティが完全なプライベート情報自体を知らないままプライベート情報を確実に利用できるような、あるパーティによって保持された少なくとも１つの秘密のストリング／値の他のパーティへの送信の実装に関する。秘匿関数計算（ＳＦＥ）におけるその利用の一例は、プライベート入力を計算しようとするパーティにプライバシーを提供する関数計算の方法である。本発明は、より具体的には、パーティ間の情報の通信に関連付けられる暗号化されたパラメータを復号する際に使用するために他のパーティによって行われる計算のためにパーティの２つの秘密値（鍵）のうちの一方がアクセス可能になるが、他のパーティは２つの鍵のうちの他方を知ることができない方法を扱う。
【背景技術】
【０００２】
ＳＦＥ実装は開示されており、たとえば「Ｆａｉｒｐｌａｙ−Ａ  Ｓｅｃｕｒｅ  Ｔｗｏ−ｐａｒｔｙ  Ｃｏｍｐｕｔａｔｉｏｎ  Ｓｙｓｔｅｍ」、ｂｙ  Ｄ．Ｍａｌｋｈｉ、Ｎ．Ｎｉｓａｎ、Ｂ．Ｐｉｎｋａｓ  ａｎｄ  Ｙ．Ｓｅｌｌａ，ＵＳＥＮＩＸ  ２００４を参照されたい。２パーティの一般的な秘匿関数計算（ＳＦＥ）により、２パーティは、それぞれの入力ｘおよびｙの両方のプライバシーを維持しながら、ｘおよびｙのどのような関数も計算できるようになる。ＳＦＥアルゴリズムによって、参加者の相互不信のために以前は不可能であった様々な電子取引が可能になる。電子取引の例には、オークション、契約締結、分散データベース検索などがある。計算および通信リソースが増加したため、ＳＦＥは実用的になった。Ｆａｉｒｐｌａｙは、悪意のあるプレーヤーとの一般的な２パーティＳＦＥの実装である。Ｆａｉｒｐｌａｙは、最大約１００万ゲートの回路として表される多くの便利な機能についてのＳＦＥの実現可能性を示す。ＳＦＥプロトコル実装の他の例は、Ｙ．Ｌｉｎｄｅｌｌ、Ｂ．Ｐｉｎｋａｓ、Ｎ．Ｓｍａｒｔの「Ｉｍｐｌｅｍｅｎｔｉｎｇ  Ｔｗｏ−ｐａｒｔｙ  Ｃｏｍｐｕｔａｔｉｏｎ  Ｅｆｆｉｃｉｅｎｔｌｙ  ｗｉｔｈ  Ｓｅｃｕｒｉｔｙ  Ａｇａｉｎｓｔ  Ｍａｌｉｃｉｏｕｓ  Ａｄｖｅｒｓａｒｉｅｓ」、ＳＣＮ  ２００８である。
【０００３】
特にブール回路に適している、ＳＦＥについてのＧＣ（ｇａｒｂｌｅｄ  ｃｉｒｃｕｉｔ）技術の利用は、Ｙｅｈｕｄａ．ＬｉｎｄｅｌｌおよびＢｅｎｎｙ．Ｐｉｎｋａｓの「Ａ  Ｐｒｏｏｆ  ｏｆ  Ｙａｏ‘ｓ  Ｐｒｏｔｏｃｏｌ  ｆｏｒ  Ｓｅｃｕｒｅ  Ｔｗｏ−Ｐａｒｔｙ  Ｃｏｍｐｕｔａｔｉｏｎ」、Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ、Ｒｅｐｏｒｔ  ２００４／１７５、２００４、ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／に記載されている。ＧＣ技術のあるステップは、送信者の２つの秘密鍵のうちの１つの、受信者への紛失通信（ＯＴ）である。この秘密鍵送信ステップは通常は公開鍵暗号化技術によって実装され、演算集約的である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】「Ｆａｉｒｐｌａｙ−Ａ  Ｓｅｃｕｒｅ  Ｔｗｏ−ｐａｒｔｙ  Ｃｏｍｐｕｔａｔｉｏｎ  Ｓｙｓｔｅｍ」、ｂｙ  Ｄ．Ｍａｌｋｈｉ、Ｎ．Ｎｉｓａｎ、Ｂ．Ｐｉｎｋａｓ  ａｎｄ  Ｙ．Ｓｅｌｌａ，ＵＳＥＮＩＸ  ２００４
【非特許文献２】Ｙ．Ｌｉｎｄｅｌｌ、Ｂ．Ｐｉｎｋａｓ、Ｎ．Ｓｍａｒｔの「Ｉｍｐｌｅｍｅｎｔｉｎｇ  Ｔｗｏ−ｐａｒｔｙ  Ｃｏｍｐｕｔａｔｉｏｎ  Ｅｆｆｉｃｉｅｎｔｌｙ  ｗｉｔｈ  Ｓｅｃｕｒｉｔｙ  Ａｇａｉｎｓｔ  Ｍａｌｉｃｉｏｕｓ  Ａｄｖｅｒｓａｒｉｅｓ」、ＳＣＮ  ２００８
【非特許文献３】Ｙｅｈｕｄａ．ＬｉｎｄｅｌｌおよびＢｅｎｎｙ．Ｐｉｎｋａｓの「Ａ  Ｐｒｏｏｆ  ｏｆ  Ｙａｏ‘ｓ  Ｐｒｏｔｏｃｏｌ  ｆｏｒ  Ｓｅｃｕｒｅ  Ｔｗｏ−Ｐａｒｔｙ  Ｃｏｍｐｕｔａｔｉｏｎ」、Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ、Ｒｅｐｏｒｔ  ２００４／１７５、２００４、ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、送信者パーティの２つの鍵のうちの１つを受信者パーティが利用することに基づいて、受信者パーティに情報を安全に送信する方法であって、受信者の装置による計算のためにその１つの鍵がアクセス可能だが、受信者パーティは完全なプライベート情報を知ることができず、送信者にはプライベート情報のどの部分が送信されたかわからない方法を提供することである。この方法より、このような送信を実行するために通常必要である計算量が最小化される。この方法は、これに限らないが、ＳＦＥ技術におけるｇａｒｂｌｅｄ  ｃｉｒｃｕｉｔテーブルパラメータの復号に使用される情報の送信に特に適している。
【課題を解決するための手段】
【０００６】
本発明のある実施形態では、第１パーティによって生成された耐タンパー性トークンＴが、操作のために第２パーティに与えられる。この実施形態は、悪意がある可能性がある第２パーティの無力さに依存せずに、トークンを元の状態にリセットする。したがってこの実施形態は、従来技術がセキュリティを提供しなかった攻撃者のクラスに対するセキュリティを提供する。
【０００７】
本発明のある実施形態は、プライベート情報を送信するためのコンピュータ実装方法を提供する。第２ユーザによって第１ユーザに与えられたリセット可能な耐タンパー性トークンなどの第１ユーザのコンピューティングモジュールによって、強い擬似ランダム関数ジェネレータ（ＳＰＲＦＧ）からの出力が第１および第２パラメータに基づいて計算され、２つの秘密鍵のうちの１つを指定するために第１パラメータが使用され、第２パラメータは第１ユーザによってＳＰＲＦＧの領域内でランダムに選択された値である。第１ユーザは格納された２つの秘密鍵を読むことも知ることもできない。出力は、それぞれ第１および第２の秘密鍵を使用する逆ＳＰＲＦＧ計算にそれぞれ基づく第１および第２の暗号化された値、および第２ユーザのプライベート値を生成する第２ユーザのコンピュータに送信される。暗号化された値は、第２パラメータ、ならびに使用された第１および第２の鍵のうちの１つに対応する第１および第２の暗号化された値のうちの１つに基づいて、数学的計算を使用してプライベート値を計算する第１ユーザのコンピュータに送信される。
【０００８】
さらなる実施形態は、一般に上記の要件を実装するように構成されたコンピューティング装置を含む。
【０００９】
本発明の例示的実施形態の特徴は、記述、特許請求の範囲、および添付の図面を読めば明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】本発明による方法を実装するための、あるパーティによる使用に適した例示的コンピューティング装置のブロック図である。
【図２】本発明によるリムーバブルカードによって実装された例示的方法の流れ図である。
【図３】本発明の方法による、２パーティが通信している例示的コンピューティングシステムのブロック図である。
【図４】本発明による図３の送信者パーティのコンピューティング装置によって実装された例示的方法の流れ図である。
【図５】本発明による図３の受信者パーティのコンピューティング装置によって実装された例示的方法の流れ図である。
【発明を実施するための形態】
【００１１】
本発明の一態様は、送信者パーティの秘密鍵を含む受信者パーティに保有されているリムーバブル耐タンパー性カードの使用は、計算効率を大幅に上げながらデータ送信操作に許容可能なセキュリティを提供できる鍵に基づいて、ＳＦＥ値などの値を処理するための方法で利用できるという認識にある。
【００１２】
図１では、本発明によるＦＳＥ方法の実装に適したコンピューティング装置１０は、格納されたプログラム命令に基づいて処理およびタスクを実行するマイクロプロセッサ１２を含む。マイクロプロセッサ１２は、読出し専用メモリ（ＲＯＭ）１４、ランダムアクセスメモリ（ＲＡＭ）１６、および不揮発性データ記憶装置１８によってサポートされている。コンピューティング装置を起動してブートするために、一般にＲＯＭ１４内のデータおよび格納されたプログラム命令がマイクロプロセッサ１２によって利用されることが当業者には理解されよう。ガーブルされたテーブル値の格納およびアンガーブリングを含むＦＳＥの実装を制御するプログラムなどのアプリケーションプログラムを、不揮発性記憶要素１８に格納できる。マイクロプロセッサ１２によって容易にアクセスおよび処理できるように、アプリケーションプログラムの少なくともアクティブな部分が一般的にＲＡＭ１６に格納される。ＦＳＥ入力および操作制御などの命令を入力するために、キーボード、キーパッド、およびマウスなどの様々なユーザ入力２０を利用できる。ディスプレイスクリーンおよび／またはプリンタなどのユーザ出力装置２２は、ユーザによって入力された情報か、ＦＳＥの中間または最終出力に関連付けられる情報のどちらかを表す、文字などの視覚的出力を提供する。入力／出力（Ｉ／Ｏ）モジュール２４は、受信者パーティによって装置１０が使用されるＦＳＥ交換において、マイクロプロセッサ１２が送信者パーティの装置などの外部ノードとのデータの送受信ができるようにする通信インターフェースを提供する。本発明による、受信およびリムーバブルカード３０との通信に適したカードスロット２６は、入力／出力モジュール２７によってマイクロプロセッサ１２に接続されている。
【００１３】
この例示的実装形態では、リムーバブルカード３０は、ＲＯＭ３４、ＲＡＭ３６、およびＩ／Ｏモジュール３８に結合されて、それらによってサポートされたマイクロプロセッサ３２を含む。カード３０は、カード３０が装置１０内の挿入された位置にある場合、カードスロット２６に関連付けられる対応する接点を連結するように設計された、Ｉ／Ｏモジュール３８に関連付けられる複数のピン４０を含む。本発明の例示的方法による装置１０およびカード３０内のソフトウェアによって実装されたステップはＦＳＥ値のアンガーブリングを実行する。装置１０およびカード３０は、以下に説明するようにこれらのステップを実行するために協働する。
【００１４】
一実施形態では、この方法は、あるパーティのコンピュータに接続された他のパーティの秘密鍵を格納するがそれを見せないトークン、すなわちカードにアクセスするあるパーティのコンピュータによって実装される。リセット可能（すなわち、カードを元の状態にリセットすることを目的とする悪意があると思われる第２パーティの攻撃を受けやすい）な場合があるトークン上に含まれる秘密鍵に基づいてあるパーティから他のパーティに情報を送信するために、強い擬似ランダム関数生成（ＳＰＲＦＧ）を使用できる。本明細書で使用されるように、「ＳＰＲＦＧ」は、関数の逆を効率的に計算できるようにする、すなわちｙ＝ＰＲＦＧｋ（ｘ）およびｋからＰＲＦＧ−１ｋ（ｙ）＝ｘを効率的に計算できる、擬似ランダム関数生成（またはジェネレータ）を意味する。
【００１５】
図２は、カード３０の操作に関する例示的ステップを示している。ステップ５０で、送信者パーティの２つの秘密鍵ｋ０、ｋ１が送信者パーティによって選択され、カード（リセット可能な耐タンパー性トークン）に入力され、次いでそのカードが受信者パーティに与えられる。ステップ５２で、カードの操作（すなわちインターフェース）を関数呼出しｅｖａｌ（ｉ，ｄ）＝ＰＲＦＧｋ＿ｉ（ｄ）に応じて出力を生成することのみに制限する、すなわちカードからアクセスできるのはｅｖａｌ（ｉ，ｄ）呼出しの計算の出力だけであるアプリケーションとともに、ＳＰＲＦＧ関数がカードに実装される。カードは、ｅｖａｌ（ｉ，ｄ）のそれぞれの関数呼出しに応じて１つの出力だけを計算して生成するように設計されており、ｅｖａｌは評価関数呼出しであり、ｉは利用されるべき２つの鍵のうちの１つを指定するｅｖａｌ関数のパラメータとしての整数０または１であり、ｄは受信機によって入力された値である。それぞれの関数呼出しを関連パラメータとともに受信すると、カード３０はＳＰＲＦＧｋ（ｉ）（ｄ）を表す結果として得られる値を計算して出力する。
【００１６】
ステップ５４で、ステップ５０および５２によって上述のように構成されたカードに受信者パーティのコンピュータが接続される。ｅｖａｌ関数呼出しに関連付けられる入力パラメータｉおよびｄが受信者パーティによって入力され、ここでｄはＳＰＲＦＧの領域からのランダムな値であり、ｉは上述の通りである。ステップ５６で、カード３０は、関数呼出し要求の受信および受信者パーティによる関連パラメータの入力に応じて、ＳＰＲＦＧｋ（ｉ（ｊ））（ｄｊ）を表す値ｖｊ＝ｅｖａｌ（ｉｊ，ｄｊ）を計算して、その値を受信者パーティのコンピュータに出力する。
【００１７】
図３は、本発明の方法による２パーティが通信している例示的コンピューティングシステムのブロック図である。受信者パーティの装置７０、すなわちカード３０を備えるコンピュータ１０は、送信者パーティの装置７２、すなわちやはりカード３０を備えるコンピュータ１０と通信している。上述のように、受信者パーティのコンピュータでは、そのコンピュータ１０による関数呼出しがカード３０によって処理されて、コンピュータ１０は対応する出力値ｖをそのカード３０から受信する。例示的パス７４によって示されるように、この出力ｖは送信者パーティの装置７２に送信される。図４を参照してより詳細に説明するように、値ｖを受信すると、送信者パーティの装置７２は値ｅ０とｅ１を計算して、例示的パス７６によって示されるようにこれらの値を受信者パーティの装置７０に送信する。図５でさらに説明されるように、これらの値は受信者パーティの装置７０によって暗号化された値を復号するために利用される。
【００１８】
図４は、図３の送信者パーティのコンピューティング装置７２によって実装された例示的方法の流れ図である。ステップ８０で、送信者パーティの装置７２は受信者パーティの装置７０から値ｖを受信した。ステップ８２で、送信者パーティの装置７２は、
ｅ０＝ＳＰＲＦＧ−１ｋ０（ｖ）ＸＯＲ  ｓ０
ｅ１＝ＳＰＲＦＧ−１ｋ１（ｖ）ＸＯＲ  ｓ１
によって定義される値ｅ０、ｅ１を計算し、
上式で、ＳＰＲＦＧ−１ｋ０（ｖ）およびＳＰＲＦＧ−１ｋ１（ｖ）は、それぞれ秘密鍵ｋ０およびｋ１に基づくｖについての逆ＰＲＦＧ関数であって、秘密鍵は送信者によって定義されているので送信者に知られており、ＸＯＲは排他的ＯＲ関数を表し、ｓ０およびｓ１は送信者に知られている秘密値であり、それらのうちの１つだけ（受信者によって選択された）が、値ｅ０、ｅ１の暗号化された形式で受信機に送信されるよう所望される。ステップ８４で、送信者パーティの装置７２が値ｅ０、ｅ１を受信者パーティの装置７０に送信し、受信者パーティの装置７０がこれらの値を使用して、受信した値ｅｉから所望の値ｓｉを復号する。
【００１９】
図５は、図３の受信者パーティのコンピューティング装置によって実装された例示的方法の流れ図である。ステップ９０で、受信者パーティの装置７０のコンピュータ１０は、そのカード３０の関数呼出しを作成して、ｉｊおよびｄｊ入力を関連パラメータとして受信者パーティの装置のコンピュータ１０に接続されたカード３０に送信する。この例では、「ｊ」は、対応する暗号化されない値の受信者パーティによる最終的な決定に関連付けられる値の特定のセットに関連付けられる値を表す。実行された関数呼出しｅｖａｌ（ｉｊ，ｄｊ）の結果として得られる値ｖｊがカードによって計算される。ステップ９２で、値ｖｊが受信者パーティのコンピュータ１０によってカードから受信され、受信者パーティはそれを送信者パーティの装置７２に送信する。ステップ９４で、受信者パーティの装置７０は、値ｖｊに基づいて生成された値ｅ０、ｅ１を送信者パーティの装置７２から受信する。ステップ９６で、受信者パーティの装置７０は、入力ｉｊについての暗号化されていない値ｓｉを計算するが、暗号化されていない値ｓｉは以下のように計算できる：
ｓｉ＝ｄ  ＸＯＲ  ｅｉ
上式で、ｄは受信者パーティによってＳＰＲＦＧの領域から選択されたランダム変数であり、ＸＯＲは排他的ＯＲ関数であり、ｅ１は送信者パーティから受信された値である。
【００２０】
送信者が提供されるのは、ＳＰＲＦＧの領域内であり、ｉ＝０またはｉ＝１によって生成された単一の値ｖだけなので、受信者のプライバシーは送信者に関して維持される。受信者は、受信者が両方の鍵ＳＰＲＦＧ−１ｋ０およびＳＰＲＦＧ−１ｋ１の下でそのプリイメージがわかるような値ｖを取得できないので、送信者のプライバシーは受信者に関して維持される。これは、受信者には鍵ｋ０およびｋ１自体の値を知る方法がなく、カードは受信者が確実にＳＰＲＦＧ関数を「フォワード」方向だけで評価できるようにし、すなわち、カードが逆ＳＰＲＦＧ計算を実行するための受信者アクセスを許可しないためである。
【００２１】
本発明の実施形態の特徴は、トークンＴはｖの計算に続く状態を維持せず、したがってＴをリセットすることが悪意のある受信者を助けることはなく、したがって強化されたセキュリティを提供することである。これは、本機能の実装をセキュアな実行カウンタに依存する従来技術のソリューションとは対照的である。明らかに、従来技術カードをリセットすることはそのカウンタをリセットし、従来技術ソリューションのセキュリティの前提を無効にする。
【００２２】
本方法は、これに限定されないが、特に入力のプライバシーを維持しながらパーティがそれぞれの入力で関数を評価できるＳＦＥにおける使用に適している。ガーブル回路（ＧＣ）手法は、ブール回路のＳＦＥの効果的な方法である。従来技術のＧＣの演算の多いステップは、送信者によって保持された２つの秘密鍵のうちの１つの受信者への紛失通信である。
【００２３】
本発明の例示的実施形態を本明細書で記述および説明してきたが、本発明の趣旨から逸脱することなしに、様々な修正、追加、置換などが行われ得ることが当業者には明らかであろう。上記の実施形態では、リムーバブルカード３０はユーザに鍵の値自体を読まれない（開示されない）ようにしながら２つの秘密鍵のうちの選択された１つを使用して計算を実行できるように示されているが、リムーバブルカード３０の代わりに必要な機能をサポートする他の構造または装置が置換されてよい。たとえば、メモリモジュールは秘密鍵を格納して、秘密鍵への直接アクセスを禁止しながら、すなわち格納された秘密鍵値が直接読み取られてユーザに開示されてしまう従来のメモリ読取り操作を防ぎながら、その鍵を利用して必要な計算を行う他の装置／モジュールだけへの秘密鍵のアクセスを許可する関連するハードウェア、ファームウェア、および／またはソフトウェアで利用できる。また、秘密鍵を格納して、受信した入力に基づいてＳＰＲＦＧ操作をサポートして、ＵＳＢポートに接続された関連コンピュータから格納された秘密鍵への直接読取りアクセスを防止するために、ＵＳＢポートインターフェースがあるコンピューティングモジュールを利用できる。
【００２４】
本発明の範囲は、以下の特許請求の範囲によって定義される。
【図１】
0005405658.tif 000002
【図２】
0005405658.tif 000003
【図３】
0005405658.tif 000004
【図４】
0005405658.tif 000005
【図５】
0005405658.tif 000006