(57)【特許請求の範囲】
【請求項１】
複数の計算デバイスを伴うマルチパーティ計算において入力データの不正確な告知を防止するためのコンピュータ実装方法であって、
前記複数の計算デバイスからの第1の計算デバイスによって、準同型暗号化された信頼された入力データ項目を識別するステップであって、前記信頼された入力データ項目が、前記第1の計算デバイスとは異なる前記複数の計算デバイスからの第2の計算デバイスに関連付けられた秘密入力データ項目に対応し、前記第2の計算デバイスが、前記秘密入力データ項目の所有者と関連付けられ、前記第1の計算デバイスが、前記秘密入力データ項目の前記所有者でない異なるパーティと関連付けられる、ステップと、
前記第1の計算デバイスによって、前記複数の計算デバイスによって生成されるグローバルメッセージ認証コード（MAC）鍵のシェアに基づいて前記信頼された入力データ項目に関連付けられたMACシェアを生成するステップと、
前記第1の計算デバイスによって、前記MACシェアに少なくとも部分的に基づいて暗号文を生成するステップと、
前記第1の計算デバイスによって、前記第2の計算デバイスに前記暗号文を送信するステップであって、前記第2の計算デバイスが、前記暗号文を、前記秘密入力データ項目に関連付けられたMACシェアの構成要素として使用する、ステップと、
前記マルチパーティ計算が前記複数の計算デバイスによって完了された後に、前記第1の計算デバイスによって、前記秘密入力データ項目に関連付けられた前記MACシェアに少なくとも部分的に基づいて前記マルチパーティ計算の結果を検証するステップであって、
前記マルチパーティ計算の前記結果であるrが方程式:
r=f(z1, z2, ...zn)
に従って決定され、式中fは前記マルチパーティ計算によって行われる演算であり、z1, z2, ...znは前記複数の計算デバイスに関連付けられた前記秘密入力データ項目であり、
前記マルチパーティ計算のMAC結果M(r)が方程式:
M(r)=M(f(z1, z2, ...zn))
に従って決定され、式中Mは前記秘密入力データ項目の前記MACシェアを生成するために使用されるMAC関数である、ステップと、
を含み、
前記マルチパーティ計算を検証する前に、
【数１】
0006882512.tif 000005
(SPDZ)プロトコルに従って前記マルチパーティ計算を行うステップであって、前記マルチパーティ計算の前記結果を検証するステップが、前記SPDZプロトコルに従って行われる、ステップをさらに含む、
方法。
【請求項２】
前記信頼された入力データ項目が、前記第1の計算デバイスによって信頼されたデータソースから受信される、請求項1に記載の方法。
【請求項３】
前記信頼されたデータソースがブロックチェーンである、請求項2に記載の方法。
【請求項４】
前記第1の計算デバイスによって、前記第1の計算デバイスに関連付けられたMAC鍵シェアを生成するステップであって、前記MAC鍵シェアが乱数であり、前記暗号文が、前記MAC鍵シェア、前記信頼された入力データ項目および前記MACシェアに少なくとも部分的に基づいて生成される、ステップ
をさらに含む、請求項1に記載の方法。
【請求項５】
前記秘密入力データ項目に関連付けられた前記MACシェアが、前記暗号文、前記第2の計算デバイスに関連付けられたMAC鍵シェア、前記秘密入力データ項目、および前記秘密入力データ項目を復号するように構成される秘密鍵に基づいて生成される、請求項1に記載の方法。
【請求項６】
前記マルチパーティ計算によって行われる前記演算が加算演算であり、前記マルチパーティ計算の前記結果であるrが方程式:
r=z1+z2+…zn
に従って決定され、前記マルチパーティ計算のMAC結果M(r)が方程式:
M(r)=M(z1)+M(z2)+…M(zn)
に従って決定される、請求項1に記載の方法。
【請求項７】
前記MAC結果M(r)のシェアが、前記複数の計算デバイスによる入力データのMACシェアに基づいて計算される、請求項6に記載の方法。
【請求項８】
コンピュータシステムに、請求項1乃至7のいずれか1項に記載の方法を実行させるための命令を記憶した非一時的コンピュータ可読記録媒体。
【請求項９】
コンピュータ実装システムであって、
1つまたは複数の計算デバイスと、
前記1つまたは複数の計算デバイスに結合され、1つまたは複数の命令を記憶した有形の非一時的コンピュータ可読記録媒体を含む1つまたは複数のコンピュータメモリデバイスと
を備え、
前記1つまたは複数の命令は、前記1つまたは複数の計算デバイスによって実行されると、前記1つまたは複数の計算デバイスに、
複数の計算デバイスからの第1の計算デバイスによって、準同型暗号化された信頼された入力データ項目を識別するステップであって、前記信頼された入力データ項目が、前記第1の計算デバイスとは異なる前記複数の計算デバイスからの第2の計算デバイスに関連付けられた秘密入力データ項目に対応し、前記第2の計算デバイスが、前記秘密入力データ項目の所有者と関連付けられ、前記第1の計算デバイスが、前記秘密入力データ項目の前記所有者でない異なるパーティと関連付けられる、ステップと、
前記第1の計算デバイスによって、前記複数の計算デバイスによって生成されるグローバルメッセージ認証コード（MAC）鍵のシェアに基づいて前記信頼された入力データ項目に関連付けられたMACシェアを生成するステップと、
前記第1の計算デバイスによって、前記MACシェアに少なくとも部分的に基づいて暗号文を生成するステップと、
前記第1の計算デバイスによって、前記第2の計算デバイスに前記暗号文を送信するステップであって、前記第2の計算デバイスが、前記暗号文を、前記秘密入力データ項目に関連付けられたMACシェアの構成要素として使用する、ステップと、
マルチパーティ計算が前記複数の計算デバイスによって完了された後に、前記第1の計算デバイスによって、前記秘密入力データ項目に関連付けられた前記MACシェアに少なくとも部分的に基づいて前記マルチパーティ計算の結果を検証するステップであって、
前記マルチパーティ計算の前記結果であるrが方程式:
r=f(z1, z2, ...zn)
に従って決定され、式中fは前記マルチパーティ計算によって行われる演算であり、z1, z2, ...znは前記複数の計算デバイスに関連付けられた前記秘密入力データ項目であり、
前記マルチパーティ計算のMAC結果M(r)が方程式:
M(r)=M(f(z1, z2, ...zn))
に従って決定され、式中Mは前記秘密入力データ項目の前記MACシェアを生成するために使用されるMAC関数である、ステップと、
を含み、
前記マルチパーティ計算を検証する前に、
【数２】
0006882512.tif 000006
(SPDZ)プロトコルに従って前記マルチパーティ計算を行うステップであって、前記マルチパーティ計算の前記結果を検証するステップが、前記SPDZプロトコルに従って行われる、ステップをさらに含む
動作を実行させる、コンピュータ実装システム。
【請求項１０】
前記信頼された入力データ項目が、前記第1の計算デバイスによって信頼されたデータソースから受信される、請求項9に記載のコンピュータ実装システム。
【請求項１１】
前記信頼されたデータソースがブロックチェーンである、請求項10に記載のコンピュータ実装システム。
【請求項１２】
前記動作が、前記第1の計算デバイスによって、前記第1の計算デバイスに関連付けられたMAC鍵シェアを生成するステップであって、前記MAC鍵シェアが乱数であり、前記暗号文が、前記MAC鍵シェア、前記信頼された入力データ項目および前記MACシェアに少なくとも部分的に基づいて生成される、ステップ
をさらに含む、請求項9に記載のコンピュータ実装システム。
【請求項１３】
前記秘密入力データ項目に関連付けられた前記MACシェアが、前記暗号文、前記第2の計算デバイスに関連付けられたMAC鍵シェア、前記秘密入力データ項目、および前記秘密入力データ項目を復号するように構成される秘密鍵に基づいて生成される、請求項9に記載のコンピュータ実装システム。
【請求項１４】
前記マルチパーティ計算によって行われる前記演算が加算演算であり、前記マルチパーティ計算の前記結果であるrが方程式:
r=z1+z2+…zn
に従って決定され、前記マルチパーティ計算のMAC結果M(r)が方程式:
M(r)=M(z1)+M(z2)+…M(zn)
に従って決定される、請求項9に記載のコンピュータ実装システム。
【請求項１５】
前記MAC結果M(r)のシェアが、前記複数の計算デバイスによる入力データのMACシェアに基づいて計算される、請求項14に記載のコンピュータ実装システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、セキュアマルチパーティ計算に関する。
【背景技術】
【０００２】
セキュアマルチパーティ計算は、複数の参加者計算デバイスが連携して、その他の参加者に秘密にされることになる各参加者からの入力に基づいて計算を行うことを伴う。従来の手法は、参加者がその他の参加者の秘密入力データを知ることなしに計算の最終結果が正しいことを検証するメカニズムを提供する。
【０００３】
分散台帳システム(DLS)は、コンセンサスネットワークおよび/またはブロックチェーンネットワークと呼ばれることもあり、参加エンティティが安全かつ不変にデータを格納することを可能にする。DLSは、一般にいかなる特定のユーザケースにも関することなくブロックチェーンネットワークと呼ばれる。ブロックチェーンネットワークの種類の例は、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワークおよびコンソーシアムブロックチェーンネットワークを含み得る。コンソーシアムブロックチェーンネットワークは、コンセンサスプロセスを制御する、選択された一群のエンティティに対して提供され、かつアクセス制御層を含む。
【０００４】
従来のセキュアマルチパーティ計算手法は、計算の各参加者が自身の秘密入力データを正しく告知しているといういかなる保証も提供しない。パーティは、したがって、自身の秘密入力データを操作することによって計算の最終結果に、場合により自身に有利に、影響を与え得る。マルチパーティ計算への他の参加者が、全ての秘密入力データが他の参加者によって正確に告知されていることを検証することができる手法が望まれる。
【発明の概要】
【課題を解決するための手段】
【０００５】
本明細書は、マルチパーティ計算の参加者による入力データの不正確な告知(misrepresentation)を防止するための技術を記載する。これらの技術は一般に、パーティが別のパーティの秘密入力データの準同型暗号化バージョンである信頼された入力データ項目を得ることを伴う。パーティは次いで、信頼された入力データ項目の信頼されたメッセージ認証コード(MAC)シェア(share)を生成し、信頼されたMACシェアに少なくとも部分的に基づいて暗号文を生成する。パーティは次いで、暗号文を秘密入力データに関連付けられたパーティに提供し、関連付けられたパーティが、他方のパーティから受信した暗号文を構成要素として用いて、その秘密入力データのMACシェアを算出する。
【０００６】
本明細書は、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに本明細書で提供される方法の実施形態に従う動作を行わせる命令が記憶された、1つまたは複数の非一時的コンピュータ可読記憶媒体も提供する。
【０００７】
本明細書は、本明細書で提供される方法を実装するためのシステムをさらに提供する。本システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに本明細書で提供される方法の実施形態に従う動作を行わせる命令が記憶された、1つまたは複数のプロセッサに結合されるコンピュータ可読記憶媒体とを含む。
【０００８】
本明細書に従う方法が本明細書に記載される態様および特徴のいかなる組合せも含んでよいことが認識される。すなわち、本明細書に従う方法は、本明細書に具体的に記載される態様および特徴の組合せに限定されるのではなく、提供される態様および特徴のいかなる組合せも含む。
【０００９】
本明細書の1つまたは複数の実施形態の詳細が添付図面および以下の説明に明らかにされる。本明細書の他の特徴および利点は同説明および図面から、ならびに請求項から明らかであろう。
【図面の簡単な説明】
【００１０】
【図１】本明細書の実施形態を実行するために使用することができる環境の一例を例示する図である。
【図２】本開示の実装例に従う信号流れの一例を表す。
【図３】本明細書の実施形態に従って実行することができるプロセスの一例を表す。
【図４】本明細書の実施形態に従う装置のモジュールの例を表す。
【発明を実施するための形態】
【００１１】
様々な図面における同様の参照番号および記号は同様の要素を示す。
【００１２】
本明細書の実施形態に対するさらなる背景を提供するために、かつ上記導入したように、セキュアマルチパーティ計算は、複数の参加者計算デバイスが連携して、その他の参加者に秘密にされることになる各参加者からの入力に基づいて計算を行うことを伴う。セキュアマルチパーティ計算を行うための1つの手法が
【００１３】
【数１】
0006882512.tif 000002
【００１４】
(SPDZ)プロトコル(元々のSPDZプロトコルまたはその変形)である。SPDZでは、パーティは、パーティ間で秘密共有される(secret-share)MAC鍵に合意するため、1つのパーティもMAC鍵を知ることはない。パーティは、MAC鍵のシェアを使用して自身の秘密入力データのMACを生成するが、これは、秘密入力データのシェアが計算中に他のパーティによって改竄されていないことを検証するために使用することができる。各パーティは次いで、各パーティがシェアを受信するように、その他のパーティとMAC(「MACシェア」として)も秘密入力データも秘密共有する。各パーティは次いで、受信した全ての入力およびMACシェアに局所的に計算を行って結果シェアzおよび結果MACシェアM(z)を作成する。nパーティによる加算計算として、最終結果rは方程式:
r=z1+z2+…zn
に従って決定され、マルチパーティ計算のMAC結果M(r)は方程式:
M(r)=M(z1)+M(z2)+…M(zn)
に従って決定される。
【００１５】
悪意をもつパーティが間違った結果zを提供することによって計算を改竄しようとしても、対応するMAC値を変更してそれを間違った結果に合致させることはできない。このように、最終MAC結果M(r)は結果rに合致せず、その他のパーティは改竄に気付かされる。
【００１６】
上記の取り組み方では、悪意をもつパーティは、その秘密入力データの値を不正確に告知することによって依然として計算を改竄することができる。そのような不正確な告知は、上記の方式を使用して検出することができない。
【００１７】
本明細書は、マルチパーティ計算の参加者による入力データの不正確な告知を防止するための手法を記載する。これらの技術は一般に、パーティが、ブロックチェーンなどの信頼されたソースから別のパーティの秘密入力データの準同型暗号化バージョンを得ることを伴う。パーティは次いで、暗号化データのメッセージ認証コード(MAC)を生成し、MACを秘密入力データに関連付けられたパーティに提供し、関連付けられたパーティが、他方のパーティから受信したMACを構成要素として用いて、その秘密入力データのMACを算出する。これは、秘密入力データのMACを、ブロックチェーン、信頼された入力データに暗号署名した信頼されたパーティ、または他のソースなどの信頼されたソースから得られる対応する暗号文に結びつけることによって、各パーティがその秘密入力データを正しく告知していることを保証することができる。
【００１８】
ブロックチェーンは、トランザクションが不変であるようにトランザクションを記憶するデータ構造である。このように、ブロックチェーンに記録されたトランザクションは確実で信頼することができる。ブロックチェーンは、トランザクションを記憶するための分散化されたまたは少なくとも部分的に分散化されたデータ構造である。ブロックチェーンネットワークは、トランザクション等をブロードキャスト、検証および確認することによって1つまたは複数のブロックチェーンを管理、更新および維持する計算ノードのネットワークである。一部の例では、全てのノードにわたって複製されるブロックチェーンとして、グローバルブロックチェーンが提供される。すなわち、グローバルブロックチェーンに関して、全てのコンセンサスノードが完全状態コンセンサス(perfect state consensus)に達している。コンセンサス(例えば、ブロックチェーンへのブロックの追加への合意)に達するために、コンソーシアムブロックチェーンネットワーク内にコンセンサスプロトコルが実装される。例えば、コンソーシアムブロックチェーンネットワークは実用的ビザンチン障害耐性(PBFT)コンセンサスを実装することができる。本明細書に記載される手法は、ブロックチェーンのコンセンサスメカニズムを活用して、ブロックチェーンから取り出された信頼された入力データが、それがブロックチェーンに入力されて以来、変化していないという保証を提供する。
【００１９】
図1は、本明細書の実施形態を実行するために使用することができる環境100の一例を例示する図である。一部の例では、環境100は、エンティティがマルチパーティ計算に参加することを可能にする。環境100は、ノード102a〜dおよびネットワーク130を含む。一部の例では、ネットワーク130は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネットまたはその組合せを含み、ウェブサイト、ユーザデバイス(例えば、計算デバイス)およびバックエンドシステムを接続する。一部の例では、ネットワーク130は有線および/または無線通信リンクを通じてアクセスされ得る。一部の例では、ネットワーク130は環境100との通信および環境100内の通信を可能にする。一般に、ネットワーク130は1つまたは複数の通信ネットワークを表す。一部の場合には、ノード102a〜dはクラウドコンピューティングシステム(図示せず)のノードであり得、または各ノード102a〜dは、ネットワークによって相互接続され、かつ分散処理システムとして機能する多数のコンピュータを含む別々のクラウドコンピューティングシステムであり得る。
【００２０】
描かれた例では、ノード102a〜dは各々、マルチパーティ計算への参加を可能にする任意の適切な計算システムを含み得る。計算デバイスの例は、限定することなく、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレット計算デバイスおよびスマートフォンを含む。一部の例では、ノード102a〜dは、マルチパーティ計算に参加するその他のノードと対話するための1つまたは複数のコンピュータ実装サービスをホストする。一部の実装例では、ノード102aは第1のエンティティと関連付けることができ、第1のエンティティに関連付けられたデータを記憶することができる。ノード102bは第2のエンティティのコンピュータ実装サービスをホストすることができ、第2のエンティティに関連付けられたデータを記憶することができる。図1の例では、環境100は、マルチパーティ計算に参加するノード102a〜dのピアツーピアネットワークとして表される。
【００２１】
ノード102aは、マルチパーティ計算への入力としてノード102aによって提供される秘密入力データ140を記憶する。一部の例では、秘密入力データ140は、その値がマルチパーティ計算に参加するその他のノード102b〜dに明らかにされるべきでない機密データである。一部の場合には、ノード102a〜dの各々はそれ自身の秘密入力データを記憶する。上記したように、SPDZなどのアルゴリズムを使用して、ノード102a〜dは、各ノードからの秘密入力データにマルチパーティ計算を行い、いずれのノードもその秘密入力データの真値をいかなる他のノードにも明らかにすることなく、正しくかつ検証可能な計算の結果を作成することができる。
【００２２】
ノード102bは、ノード102aによって記憶された秘密入力データ140に対応する信頼された入力データ150を記憶する。一部の場合には、信頼された入力データ150は、ノード102aだけが復号鍵を保有する秘密入力データ140の暗号化表現であり得、ノード102bが信頼された入力データ150から秘密入力データ140の真値を知ることができないことを意味する。一部の場合には、信頼された入力データ150は、ノード102bによって、ここではブロックチェーンとして図示される信頼されたデータソース110から得られる。一部の例では、信頼された入力データ150は、その真正を保証するソースから得られる。例えば、適切に維持されるブロックチェーンは、ブロックチェーンに記憶されるデータが、一旦格納されると不変であることを保証しており、信頼された入力データ150がブロックチェーンに格納された後にノード102aまたはいずれかの他の主体がその値を変更したというリスクがほとんどないことを意味する。信頼された入力データ150は、信頼された入力データ150に暗号署名して、その真正が検証することができる信頼された第三者から得ることもできる。一部の場合には、信頼された入力データ150は秘密入力データ140の暗号化ハッシュであり得、ノード102bは、ノード102aからゼロ知識証明(zero-knowledge proof)アルゴリズムを得て、暗号化ハッシュが秘密入力データ140のハッシュ値に対応することを検証することができる。
【００２３】
図2は、本開示の実装例に従う信号流れ200の一例を表す。210で、ノード102bが、信頼されたデータソース110からノード102aによって格納された秘密入力データ140に対応する信頼された入力データ150を取り出す。220で、ノード102bは、信頼された入力データ150に基づいて信頼されたMACシェアを生成する。一部の場合には、信頼されたMACシェアは、ノード102bによって生成されるMAC鍵シェアに基づくことができるが、これは、マルチパーティ計算に参加する全てのノードによって生成されるグローバルMAC鍵のシェアである。
【００２４】
230で、ノード102bは、ノード102aに信頼されたMACシェアに部分的に基づく暗号文を送信する。一部の場合には、ノード102bは、信頼された入力データ、MAC鍵シェアおよび信頼されたMACシェアに基づいて暗号文を生成する。240で、ノード102aが、暗号文に部分的に基づいて秘密入力データのMACシェアを生成する。一部の場合には、MACシェアは、暗号文、ノード102aに関連付けられたMAC鍵シェア、秘密入力データ項目、および信頼された入力データ項目を復号するように構成される秘密鍵に基づいて生成される。
【００２５】
250で、ノード102a〜bは、マルチパーティ計算を行う。一部の場合には、ノード102a〜bは、計算に参加している他のノードと連携して計算を行う。一部の例では、マルチパーティ計算は上述したSPDZプロトコルに従って行われる。
【００２６】
260で、ノード102a〜bは、マルチパーティ計算を検証する。一部の場合には、ノード102a〜bは、計算に参加している他のノードと連携して計算を検証する。一部の例では、マルチパーティ計算は上述したSPDZプロトコルに従って検証される。
【００２７】
図3は、複数の計算デバイスを伴うマルチパーティ計算において入力データの不正確な告知を防止するためのプロセス300の一例のフローチャートである。便宜上、プロセス300は、1つまたは複数の場所に設けられ、かつ本明細書に従って適切にプログラムされる、1つまたは複数のコンピュータのシステムによって行われると記載される。例えば、システム、例えば、図1のシステム100は、適切にプログラムされており、プロセス300を行うことができる。
【００２８】
302で、第1の計算デバイスが準同型暗号化された信頼された入力データ項目を識別する。信頼された入力データ項目は、第1の計算デバイスとは異なる第2の計算デバイスに関連付けられた秘密入力データ項目に対応し、第2の計算デバイスは、秘密入力データ項目の所有者と関連付けられ、第1の計算デバイスは、秘密入力データ項目の所有者でない異なるパーティと関連付けられる。一部の場合には、信頼された入力データ項目は、第1の計算デバイスによって信頼されたデータソースから受信される。一部の例では、信頼されたデータソースはブロックチェーンである。
【００２９】
304で、第1の計算デバイスは、信頼された入力データ項目に関連付けられた信頼されたMACシェアを生成する。
【００３０】
306で、第1の計算デバイスは、信頼されたMACシェアに少なくとも部分的に基づいて暗号文を生成する。
【００３１】
308で、第1の計算デバイスは、第2の計算デバイスに暗号文を送信する。第2の計算デバイスは、暗号文を、秘密入力データ項目に関連付けられたMACシェアの構成要素として使用する。一部の場合には、秘密入力データ項目に関連付けられたMACシェアは、暗号文、第2の計算デバイスに関連付けられたMAC鍵シェア、秘密入力データ項目、および信頼された入力データ項目を復号するように構成される秘密鍵に基づいて生成される。
【００３２】
310で、マルチパーティ計算が複数の計算デバイスによって完了された後に、第1の計算デバイスは、秘密入力データ項目に関連付けられたMACシェアに少なくとも部分的に基づいてマルチパーティ計算の結果を検証する。
【００３３】
一部の場合には、プロセス300は、第1の計算デバイスによって、第1の計算デバイスに関連付けられたMAC鍵シェアを生成することを含む。MAC鍵シェアは乱数であり、暗号文はMAC鍵シェアに少なくとも部分的に基づいて生成される。
【００３４】
一部の場合には、プロセス300は、マルチパーティ計算を検証する前に
【００３５】
【数２】
0006882512.tif 000003
【００３６】
(SPDZ)プロトコルに従ってマルチパーティ計算を行うことを含み、マルチパーティ計算の結果を検証することはSPDZプロトコルに従って行われる。
【００３７】
一部の例では、マルチパーティ計算の結果rは方程式:
r=f(z1, z2, ...zn)
に従って決定され、式中fはマルチパーティ計算によって行われる演算であり、z1, z2, ...znは複数の計算デバイスに関連付けられた秘密入力データ項目であり、マルチパーティ計算のMAC結果M(r)は方程式:
M(r)=M(f(z1, z2, ...zn))
に従って決定され、式中Mは秘密入力データ項目のMACシェアを生成するために使用されるMAC関数である。一部の場合には、MAC関数は、入力としてデータ項目およびMAC鍵シェアを考慮してMACシェアとして使用されることになる数を生成する数値演算である。一部の実装例では、MAC関数は、ハッシュ関数と同様に、同じ入力が与えられると同じ数を作成することになる。
【００３８】
一部の場合には、マルチパーティ計算によって行われる演算は加算演算であり、マルチパーティ計算の結果rは方程式:
r=z1+z2+…zn
に従って決定され、マルチパーティ計算のMAC結果M(r)は方程式:
M(r)=M(z1)+M(z2)+…M(zn)
に従って決定される。
【００３９】
図4は、本明細書の実施形態に従う装置400のモジュールの一例の図である。
【００４０】
装置400は、マルチパーティ計算を行うことが可能な計算デバイスの一実施形態の一例であり得る。装置400は上記した実施形態に対応し得、装置400は、準同型暗号化された信頼された入力データ項目を識別する識別モジュール402であって、信頼された入力データ項目が、第1の計算デバイスとは異なる第2の計算デバイスに関連付けられた秘密入力データ項目に対応し、第2の計算デバイスが、秘密入力データ項目の所有者と関連付けられ、第1の計算デバイスが、信頼入力データ項目の所有者でない異なるパーティと関連付けられる、識別モジュール402と、信頼された入力データ項目に関連付けられた信頼されたMACシェアを生成する第1の生成モジュール404と、信頼されたMACシェアに少なくとも部分的に基づいて暗号文を生成する第2の生成モジュール406と、第2の計算デバイスに暗号文を送信する送信モジュール408であって、第2の計算デバイスが、暗号文を、秘密入力データ項目に関連付けられたMACシェアの構成要素として使用する、送信モジュール408と、マルチパーティ計算が複数の計算デバイスによって完了された後に、秘密入力データ項目に関連付けられたMACシェアの構成要素である信頼された入力データ項目に基づく暗号文に少なくとも部分的に基づいてマルチパーティ計算の結果を検証する検証モジュール410とを含む。
【００４１】
前述の実施形態に例示されるシステム、装置、モジュールまたはユニットは、コンピュータチップもしくはエンティティを使用することによって実装することができ、または或る機能を有する製品を使用することによって実装することができる。典型的な実施形態デバイスはコンピュータであり、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ付き電話、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メール送受信デバイス、ゲーム機、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスのいかなる組合せでもあり得る。
【００４２】
装置における各モジュールの機能および役割の実施プロセスについては、前述の方法における対応するステップの実施プロセスを参照することができる。簡略化のために詳細はここでは省略される。
【００４３】
装置実施形態が基本的に方法実施形態に対応するので、関連部分については、方法実施形態における関連説明を参照することができる。前述した装置実施形態は単に一例である。別々の部分として記載されるモジュールは物理的に別々であってもなくてもよく、モジュールとして表示される部分は、物理的モジュールであってもなくてもよく、1つの位置に設けられてもよく、またはいくつかのネットワークモジュールに分散されてもよい。モジュールの一部または全部を、本明細書の解決策の目的を達成するように実際の要求に基づいて選択することができる。当業者は創意工夫なしに本出願の実施形態を理解および実装することができる。
【００４４】
図4を再び参照すると、それは、マルチパーティ計算に参加するように動作可能な計算デバイスの内部機能モジュールおよび構造を例示すると解釈することができる。実行体は本質的に電子デバイスであり得、電子デバイスは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサの実行可能命令を記憶するように構成されるメモリとを含む。
【００４５】
本明細書に記載される手法は1つまたは複数の技術的効果をもたらす。一部の実施形態において、本明細書に記載される手法は、マルチパーティ計算に参加する計算デバイスが、全ての他の参加者が計算に真正な入力データを提供していることを検証することができることによって、マルチパーティ計算の参加者に対して増強されたデータセキュリティを提供する。これにより、悪意をもつ参加者が自身の入力データを不正確に告知してマルチパーティ計算の結果に影響を与えることを防止する。同手法は、結果の作成と検証との間で多くの時間を費やすことがないように、この検証がマルチパーティ計算の一部として行われるようにする。
【００４６】
主題が記載される実施形態は1つまたは複数の特徴を単独でまたは組み合わせて含み得る。
【００４７】
例えば、第1の実施形態において、方法例は、第1の計算デバイスによって、準同型暗号化された信頼された入力データ項目を識別するステップであって、信頼された入力データ項目が、第1の計算デバイスとは異なる第2の計算デバイスに関連付けられた秘密入力データ項目に対応し、第2の計算デバイスが、秘密入力データ項目の所有者と関連付けられ、第1の計算デバイスが、信頼入力データ項目の所有者でない異なるパーティと関連付けられる、ステップと、第1の計算デバイスによって、信頼された入力データ項目に関連付けられた信頼されたMACシェアを生成するステップと、第1の計算デバイスによって、信頼されたMACシェアに少なくとも部分的に基づいて暗号文を生成するステップと、第1の計算デバイスによって、第2の計算デバイスに暗号文を送信するステップであって、第2の計算デバイスが、暗号文を、秘密入力データ項目に関連付けられたMACシェアの構成要素として使用する、ステップと、マルチパーティ計算が複数の計算デバイスによって完了された後に、第1の計算デバイスによって、秘密入力データ項目に関連付けられたMACシェアに少なくとも部分的に基づいてマルチパーティ計算の結果を検証するステップとを含む。
【００４８】
上記および他の記載された実施形態は各々、任意選択で、以下の特徴の1つまたは複数を含み得る。
【００４９】
第1の特徴は、以下の特徴のいずれとも組合せ可能であり、信頼された入力データ項目が、第1の計算デバイスによって信頼されたデータソースから受信されることを規定する。
【００５０】
第2の特徴は、前述または以下の特徴のいずれとも組合せ可能であり、信頼されたデータソースがブロックチェーンであることを規定する。
【００５１】
第3の特徴は、前述または以下の特徴のいずれとも組合せ可能であり、本方法が、第1の計算デバイスによって、第1の計算デバイスに関連付けられたMAC鍵シェアを生成するステップであって、MAC鍵シェアが乱数であり、暗号文がMAC鍵シェアに少なくとも部分的に基づいて生成される、ステップをさらに含むことを規定する。
【００５２】
第4の特徴は、前述または以下の特徴のいずれとも組合せ可能であり、秘密入力データ項目に関連付けられたMACシェアが、暗号文、第2の計算デバイスに関連付けられたMAC鍵シェア、秘密入力データ項目、および信頼された入力データ項目を復号するように構成される秘密鍵に基づいて生成されることを規定する。
【００５３】
第5の特徴は、前述または以下の特徴のいずれとも組合せ可能であり、本方法が、マルチパーティ計算を検証する前に、
【００５４】
【数３】
0006882512.tif 000004
【００５５】
(SPDZ)プロトコルに従ってマルチパーティ計算を行うステップであって、マルチパーティ計算の結果を検証することが、SPDZプロトコルに従って行われる、ステップをさらに含むことを規定する。
【００５６】
第6の特徴は、前述または以下の特徴のいずれとも組合せ可能であり、マルチパーティ計算の結果rが方程式:
r=f(z1, z2, ...zn)
に従って決定され、式中fはマルチパーティ計算によって行われる演算であり、z1, z2, ...znは複数の計算デバイスに関連付けられた秘密入力データ項目であり、マルチパーティ計算のMAC結果M(r)が方程式:
M(r)=M(f(z1, z2, ...zn))
に従って決定され、式中Mは秘密入力データ項目のMACシェアを生成するために使用されるMAC関数であることを規定する。
【００５７】
第7の特徴は、前述または以下の特徴のいずれとも組合せ可能であり、マルチパーティ計算によって行われる演算が加算演算であり、マルチパーティ計算の結果rが方程式:
r=z1+z2+…zn
に従って決定され、マルチパーティ計算のMAC結果M(r)が方程式:
M(r)=M(z1)+M(z2)+…M(zn)
に従って決定されることを規定する。
【００５８】
本明細書に記載される主題ならびに行為および動作の実施形態は、デジタル電子回路網で、有形に具現化されたコンピュータソフトウェアもしくはファームウェアで、本明細書に開示される構造およびそれらの構造等価物を含め、コンピュータハードウェアで、またはそれらの1つもしくは複数の組合せで実装することができる。本明細書に記載される主題の実施形態は、1つまたは複数のコンピュータプログラム、例えば、データ処理装置による実行のために、またはその動作を制御するためにコンピュータプログラムキャリアに符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。例えば、コンピュータプログラムキャリアは、命令が符号化または記憶された1つまたは複数のコンピュータ可読記憶媒体を含み得る。キャリアは、磁気、光磁気もしくは光ディスク、ソリッドステートドライブ、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)または他の種類の媒体などの有形の非一時的コンピュータ可読媒体でよい。代替的に、または加えて、キャリアは、データ処理装置による実行のために適切な受信器装置に伝送するための情報を符号化するために発生される人工発生伝搬信号、例えば、機械発生電気、光または電磁信号でよい。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらの1つもしくは複数の組合せである、またはその一部であり得る。コンピュータ記憶媒体は伝搬信号でない。
【００５９】
コンピュータプログラムは、プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプトまたはコードとも称してまたは記載してよく、コンパイラ型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含め、任意の形式のプログラミング言語で書くことができ、それは、スタンドアロンプログラムとして、あるいはモジュール、コンポーネント、エンジン、サブルーチンとして、または1つもしくは複数の場所にデータ通信ネットワークによって相互接続される1つもしくは複数のコンピュータを含んでよい計算環境での実行に適する他のユニットを含め、任意の形式に展開することができる。
【００６０】
コンピュータプログラムは、ファイルシステムにおけるファイルに対応してよいが、しなくてもよい。コンピュータプログラムは、他のプログラムもしくはデータ、例えば、マークアップ言語文書に記憶される1つもしくは複数のスクリプトを保持するファイルの一部分に、当該プログラムに専用の単一のファイルに、または複数の連係ファイル、例えば、1つもしくは複数のモジュール、サブプログラムもしくはコードの一部分を記憶するファイルに記憶することができる。
【００６１】
コンピュータプログラムの実行のためのプロセッサには、例として、汎用および専用の両マイクロプロセッサ、ならびに任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、プロセッサに結合される非一時的コンピュータ可読媒体から実行するためのコンピュータプログラムの命令の他にデータを受けることになる。
【００６２】
用語「データ処理装置」は、例としてプログラマブルプロセッサ、コンピュータまたはマルチプロセッサもしくはコンピュータを含め、データを処理するための全ての種類の装置、デバイスおよび機械を包含する。データ処理装置は、専用論理回路網、例えば、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)またはGPU(グラフィック処理装置)を含み得る。同装置は、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つもしくは複数の組合せを構成するコードも含み得る。
【００６３】
本明細書に記載されるプロセスおよび論理フローは、1つまたは複数のコンピュータプログラムを実行して、入力データを演算して出力を生成することによって動作を行う1つまたは複数のコンピュータまたはプロセッサによって行うことができる。プロセスおよび論理フローは、専用論理回路網、例えば、FPGA、ASICもしくはGPUによって、または専用論理回路網および1つもしくは複数のプログラムされたコンピュータの組合せによって行うこともできる。
【００６４】
コンピュータプログラムの実行に適するコンピュータは、汎用もしくは専用マイクロプロセッサもしくは両方、または任意の他の種類の中央処理装置に基づくことができる。一般に、中央処理装置は、リードオンリメモリまたはランダムアクセスメモリまたは両方から命令およびデータを受けることになる。コンピュータの要素は、命令を実行するための中央処理装置ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスを含み得る。中央処理装置およびメモリは、専用論理回路網によって補足、またはそれに統合することができる。
【００６５】
一般に、コンピュータは、1つまたは複数の記憶デバイスも含むか、または作動的に結合されてデータを受けるもしくはデータを転送することになる。記憶デバイスは、例えば、磁気、光磁気もしくは光ディスク、ソリッドステートドライブ、または任意の他の種類の非一時的、コンピュータ可読媒体であり得る。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。したがって、コンピュータは、ローカルおよび/またはリモートである、1つまたは複数のメモリなどの、1つまたは複数の記憶デバイスに結合されてよい。例えば、コンピュータは、コンピュータの不可欠な要素である1つまたは複数のローカルメモリを含み得、またはコンピュータは、クラウドネットワークにある1つまたは複数のリモートメモリに結合され得る。その上、コンピュータは、別のデバイス、例えば、いくつか挙げると、移動電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)受信器、またはポータブル記憶デバイス、例えば、ユニバーサルシリアルバス(USB)フラッシュドライブに組み込むことができる。
【００６６】
構成要素は、直接か1つまたは複数の中間構成要素を介してか、互いに電気的または光学的になど交換可能に接続されることによって互い「に結合」することができる。構成要素の一方が他方へ統合されても、構成要素は互い「に結合」することができる。例えば、プロセッサへ統合された記憶構成要素(例えば、L2キャッシュ構成要素)はプロセッサ「に結合」されている。
【００６７】
ユーザとの対話を提供するために、本明細書に記載される主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、例えば、LCD(液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を提供することができる入力デバイス、例えば、キーボードおよびポインティングデバイス、例えば、マウス、トラックボールまたはタッチパッドを有するコンピュータに実装することができ、またはそれと通信するように構成することができる。ユーザとの対話を提供するために他の種類のデバイスも使用でき、例えば、ユーザに提供されるフィードバックは任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバックまたは触覚フィードバックであり得、ユーザからの入力は、音響、音声または触覚入力を含め、任意の形態で受け取ることができる。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、それから文書を受信することによって、例えば、ユーザのデバイス上のウェブブラウザから受信される要求に応じてウェブブラウザにウェブページを送信することによって、またはユーザデバイス、例えば、スマートフォンもしくは電子タブレット上で実行するアプリと対話することによって、ユーザと対話することができる。また、コンピュータは、パーソナルデバイス、例えば、メッセージングアプリケーションを実行しているスマートフォンにテキストメッセージまたは他の形式のメッセージを送信し、折り返しユーザから応答メッセージを受信することによって、ユーザと対話することができる。
【００６８】
本明細書は、システム、装置およびコンピュータプログラム構成要素に関して用語「ように構成される」を使用する。1つまたは複数のコンピュータのシステムが特定の動作または行為を行うように構成されることは、システムが自らに、動作に際してシステムに同動作または行為を行わせるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしたことを意味する。1つまたは複数のコンピュータプログラムが特定の動作または行為を行うように構成されることは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に同動作または行為を行わせる命令を含むことを意味する。専用論理回路網が特定の動作または行為を行うように構成されることは、回路網が同動作または行為を行う電子論理を有することを意味する。
【００６９】
本明細書が多くの具体的な実施詳細を含むが、これらは、請求項自体によって定められる、特許請求されるものの範囲への限定としてでなく、むしろ特定の実施形態に固有であり得る特徴の記述として解釈されるべきである。別々の実施形態の文脈で本明細書に記載される或る特徴が、組み合わせて単一の実施形態でも実現することができる。反対に、単一の実施形態の文脈で記載される様々な特徴が、別々に複数の実施形態でも、または任意の適切な下位組合せでも実現することができる。その上、特徴が或る組合せで作用すると上記され、しかも当初そのように特許請求され得るが、特許請求された組合せからの1つまたは複数の特徴が一部の場合に同組合せから削除でき、請求項は下位組合せまたは下位組合せの変形とされ得る。
【００７０】
同様に、動作が特定の順に図面に描かれかつ請求項に列挙されるが、これは、望ましい結果を達成するために、そのような動作が図示される特定の順にもしくは順番に行われること、または全ての例示された動作が行われることを必要とすると理解されるべきでない。特定の状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上記した実施形態における様々なシステムモジュールおよび構成要素の分離は、全ての実施形態においてそのような分離を必要とすると理解されるべきでなく、記載されたプログラム構成要素およびシステムが一般に単一のソフトウェア製品に共に統合することができ、または複数のソフトウェア製品へ実装することができることが理解されるべきである。
【００７１】
本主題の特定の実施形態が記載された。他の実施形態は以下の請求項の範囲内である。例えば、請求項に列挙される行為は異なる順に行うことができ、それでも望ましい結果を達成することができる。一例として、添付図に描かれるプロセスは、望ましい結果を達成するために、必ずしも図示される特定の順または順番を必要とするわけではない。一部の場合には、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【００７２】
100  環境
102a  ノード
102b  ノード
102c  ノード
102d  ノード
110  信頼されたデータソース
130  ネットワーク
140  秘密入力データ
150  信頼された入力データ
400  装置
402  識別モジュール
404  第1の生成モジュール
406  第2の生成モジュール
408  送信モジュール
410  検証モジュール
【図１】
0006882512.tif 000007
【図２】
0006882512.tif 000008
【図３】
0006882512.tif 000009
【図４】
0006882512.tif 000010