IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ セディシアイ イノベーションズ リミテッドの特許一覧

<>
  • 特許-マルチ・パーティー秘密計算 図1
  • 特許-マルチ・パーティー秘密計算 図2
  • 特許-マルチ・パーティー秘密計算 図3
  • 特許-マルチ・パーティー秘密計算 図4
  • 特許-マルチ・パーティー秘密計算 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-06
(45)【発行日】2024-12-16
(54)【発明の名称】マルチ・パーティー秘密計算
(51)【国際特許分類】
   G09C 1/00 20060101AFI20241209BHJP
【FI】
G09C1/00 650Z
【請求項の数】 4
(21)【出願番号】P 2024531222
(86)(22)【出願日】2022-11-23
(65)【公表番号】
(43)【公表日】2024-10-28
(86)【国際出願番号】 EP2022082986
(87)【国際公開番号】W WO2023094453
(87)【国際公開日】2023-06-01
【審査請求日】2024-07-29
(31)【優先権主張番号】21210077.0
(32)【優先日】2021-11-23
(33)【優先権主張国・地域又は機関】EP
【早期審査対象出願】
(73)【特許権者】
【識別番号】524194779
【氏名又は名称】セディシアイ イノベーションズ リミテッド
(74)【代理人】
【識別番号】100095407
【弁理士】
【氏名又は名称】木村 満
(74)【代理人】
【識別番号】100132883
【弁理士】
【氏名又は名称】森川 泰司
(74)【代理人】
【識別番号】100148633
【弁理士】
【氏名又は名称】桜田 圭
(74)【代理人】
【識別番号】100147924
【弁理士】
【氏名又は名称】美恵 英樹
(72)【発明者】
【氏名】デベガロドリゴ、ミゲル
【審査官】平井 誠
(56)【参考文献】
【文献】LIJING ZHOU et al.,AntNest: Fully Non-Interactive Secure Multi-Party Computation,IEEE Access,2018年11月28日,pages 75639-75649,https://www.researchgate.net/profile/Tianyi-Ai/publication/329259845_AntNest_Fully_Non-Interactive_Secure_Multi-Party_Computation/links/5dc9902e4585151435036f55/AntNest-Fully-Non-Interactive-Secure-Multi-Party-Computation.pdf
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00-5/00
H04L 9/00-40
(57)【特許請求の範囲】
【請求項1】
計算実行方法であって、
複数のD個のディーラー・ノード(10)とN個の計算ノード(12)の間で実行され、
非公開の入力秘密{s,s,・・・,ss-1}のセットSの積のA個のグループの和として表されうる
【数1】

となるような算術関数fの結果を計算することを含み、
積の各グループm、a∈{0,1,・・・,A-1}は、非公開の入力秘密の前記セットSのM個の秘密の積
【数2】

であり、a∈{0,1,・・・,A-1}、m∈{0,1,・・・,M-1}におけるサブ表示ia,mは、S個の秘密のセットから、非公開の入力秘密を識別し、
前記S個の秘密は、整数または実数または複素数から選択され、
各々の秘密は前記ディーラー・ノード(10)のうちの1つに知られており、
前記方法は、
a)積mのグループに秘密
【数3】

を提供している各ディーラー・ノード(10)に、前記積mのグループに提供している全ての秘密に共通の基礎ブラインド要素ρを提供することを含み、
前記基礎ブラインド要素ρは、n∈{0,1,・・・,N-1}、a∈{0,1,・・・,A-1}において、各々がN個の計算ノード(12)のそれぞれ1つと関連付けられた、(N×A)個の乱数または擬似乱数Xn,aのセットに対して
【数4】

(モジュロp、ここでpは素数)を満たし、
前記方法は、
b)積mのグループに秘密
【数5】

を提供している各ディーラー・ノード(10)に、前記秘密
【数6】

に特有の指数ブラインド要素λa,mを提供することを含み、
前記指数ブラインド要素λa,mのセットは、まとめると、
【数7】

(モジュロp)を満たし、
前記方法は、
c)n∈{0,1,・・・,N-1}、a∈{0,1,・・・,A-1}において、前記(N×A)個の乱数または擬似乱数Xn,aのセットを記憶することを含み、
(ア)第1の演算モード(「ネットワーク・モード」)の前記計算ノード(12)で記憶し、それによって、N個の前記計算ノード(12)の各々が、当該ノード(12)に特有のA個の乱数または擬似乱数のサブセットを記憶し、または、
(イ)第2の演算モード(「エッジ・モード」)の前記ディーラー・ノード(10)で記憶し、それによって、各ディーラー・ノード(10)が、少なくとも、当該ディーラーが提供する秘密への和に対応する前記(N×A)個の乱数または擬似乱数Xn,aのサブセットを記憶し、
前記方法は、
d)各ディーラー・ノード(10)が、各秘密
【数8】

に対して、当該秘密に対する1以上のシェアを計算することを含み、
演算の前記ネットワーク・モードでは、単一のシェアが
【数9】

(モジュロp)で計算され、
演算の前記エッジ・モードでは、秘密
【数10】

が提供される積mのグループに関連したN個の乱数または擬似乱数Xn,aを使用して複数のN個のシェアが
【数11】

(モジュロp)で計算され、
前記方法は、
e)各ディーラー・ノード(10)が、前記計算ノード(12)の各々に、各々のシェア・メッセージを送信することを含み、
演算の前記ネットワーク・モードでは、各々のシェア・メッセージは、同一の単一のシェアνa,mを含み、
演算の前記エッジ・モードでは、N個の前記計算ノード(12)の各々が、特有の値n∈{0,1,・・・,N-1}で指標をつけられたシェアを受信するように、各々のシェア・メッセージは、N個のシェアνn,a,mのうちのそれぞれ1つを含み、
前記方法は、
f)各計算ノード(12)が、積mのグループの各々に関連した、受信した前記シェアνa,mまたはνn,a,mに対してローカルの乗算結果を計算することを含み、当該ローカルの乗算結果は、
演算の前記ネットワーク・モードでは、
【数12】

(モジュロp)で計算され、
演算の前記エッジ・モードでは、
【数13】

(モジュロp)で計算され、
前記方法は、
g)各計算ノード(12)が、ローカルの乗算結果のセットから、
【数14】

(モジュロp)でローカルの加算結果を計算することと、
h)N個の前記計算ノード(12)からの前記ローカルの加算結果を組み合わせることによって、
【数15】

を計算して、関数fの出力を計算することと、
を含み、
ステップa)は、
a.前記ディーラー・ノード(10)が、信頼されたノードから、前記基礎ブラインド要素ρ ―1 を受信することと、
b.前記計算ノード(12)が、前記ディーラー・ノード(10)が各々の和a、a∈{0,1,・・・,A-1}に対してρ ―1 を復元可能なように、前記ディーラー・ノード(10)にメッセージを送信することであって、前記メッセージは、マルチ・パーティー秘密計算を使用して、前記秘密X n,a から前記ディーラー・ノード(10)が協同的に生成する、メッセージを送信することと、
c.前記ディーラー・ノード(10)以外の1以上のノードが、準同型暗号を実行して、前記基礎ブラインド要素ρ ―1 を生成し、当該基礎ブラインド要素を、和aを提供している前記ディーラー・ノード(10)に送信することと、
d.前記ディーラー・ノード(10)以外の1以上のノードが、安全な孤立領域または信頼された実行環境で、前記基礎ブラインド要素ρ ―1 を計算し、当該基礎ブラインド要素を、和aを提供している前記ディーラー・ノード(10)に送信することと、
の1つを含む、
計算実行方法。
【請求項2】
ステップh)が、
(ア)各計算ノード(12)が、ローカルの加算結果rを1以上の結果ノード(14)に送信することと、
(イ)前記1以上の結果ノード(14)が、受信した前記ローカルの加算結果の集計を実行して、算術関数fの結果を特定することと、
を含む請求項1に記載の計算実行方法。
【請求項3】
ステップa)が、
(ア)各計算ノードn、n∈{0,1,・・・,N-1}が、乱数Xn,aを生成することと、
(イ)各計算ノード(12)が、
【数16】

(mod p)となるように、次数N-1の多項式p(x)のシェアp(n+1)を計算することと、
(ウ)各計算ノード(12)が、各々のρ -1のシェアを、各ディーラー・ノードd、d∈{0,1,・・・,D-1}に送信することと、
(エ)各ディーラー・ノード(10)が、受信した前記シェアから、対応する前記基礎ブラインド要素ρ -1を復元することと、
を含む請求項1または2に記載の計算実行方法。
【請求項4】
ステップ(イ)が、
n≠qであるn,q∈{0,1,・・・,N-1}における乱数ジェネレータGn,qが、計算ノードnとq(12)が互いに同期して動かす生成器であるように、乱数ジェネレータGn,qのコレクションを提供することと、
各計算ノードnが、q≠nである各q∈{0,1,・・・,N-1}に対して前記乱数ジェネレータGn,qから、N-1個のランダム・シェアを生成して、多項式p(q+1)の各ランダム評価値を生成することと、
各計算ノードが、各ランダム評価値p(q+1)とp(0)=Xn,aとを満たす多項式p(x)の係数を計算することと、
各計算ノードnが、前記係数とXn,aとから、前記多項式p(x)のシェアp(n+1)を計算することと、
他の全ての計算ノードqからの多項式p(x)の自身のシェアとして、各計算ノードnが、各q∈{0,1,・・・,N-1}に対して前記乱数ジェネレータGn,qから、p(n+1)を生成することと、
各ノードが、
【数17】

を計算して、n+1で評価された多項式p(x)のシェアp(n+1)を提供することと、
各ディーラー・ノード(10)が、前記秘密の合計
【数18】

に等しい、xに相当するp(x)の独立した係数を復元できるように、各計算ノード(12)が、積mのグループに提供している各ディーラー・ノード(10)に、p(x)のシェアp(n+1)を送信することと、
を含む請求項3に記載の計算実行方法。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、マルチ・パーティー秘密計算(Secure Multi Party Computation(SMPC))プロトコルに関する。
【背景技術】
【0002】
マルチ・パーティー秘密計算(SMPC)は、一連のパーティーを秘密にしつつ、一連のパーティーが、それらの入力について協同的に関数を計算することを可能にする。ヤオのスクランブルされた回路(非特許文献1)、GMW(非特許文献2―3)、BGW(非特許文献4)、SPDZ(非特許文献5)、BMR(非特許文献6)と、GESS(非特許文献7)を含む文献に記載されたSMPCフレーバーのものがいくつか存在する。
【先行技術文献】
【非特許文献】
【0003】
【文献】ヤオ、アンドリュー・チ-チー(1986).「秘密を生成し、交換する方法」、情報基礎学の第27回年次シンポジウム(Symposium on Foundations of Computer Science 1986(SFCS 1986)).情報基礎学,1986.、第27回年次シンポジウムのpp.162-167.doi:10.1109/SFCS.1986.25.ISBN 978-0-8186-0740-0
【文献】O.ゴールドライヒ、S.ミカリ、A.ウィグダーソン、「ANYメンタルゲームをする方法」、計算理論に関する第19回年次ACMシンポジウムの会報、1987年1月、218-229ページ、doi:10.1145/28395.28420
【文献】T.シュナイダー、M.ゾーナー、「GMW vs. ヤオ?低深度回路による効率的な2パーティーの秘密計算暗号」、ファイナンシャル・クリプトロジー・アンド・データ・セキュリティー(FC’13)、ser.LNCS、vol.7859.スプリンガー、2013、pp.275-292
【文献】ベン-Or、M.、ゴールドワッサー、S.、ウィグデルソン、A.、「非暗号フォールト・トレラント分散計算のための完全性定理」、会報ACM STOC’88、pp.1-10(1988)
【文献】ダムガルド I.、パストロ V.、スマート N.、サカリアス S.(2012)サムホワット準同型暗号のマルチパーティー計算、サファヴィ-ナイニ R.、カネッティ R.(eds)暗号学の進歩-CRYPTO 2012. CRYPTO 2012.レクチャー・ノート・イン・コンピュータ・サイエンス、vol 7417.スプリンガー、ベルリン、ハイデルベルク.https://doi.org/10.1007/978-3-642-32009-5_38の中
【文献】ビーバー、D.、S.ミカリ、P.ロガウェイ.1990.、「セキュア・プロトコルのラウンド複雑度(拡大抄録)」、計算理論に関する第22回年次ACMシンポジウム.ACMプレス.503-513
【文献】カレースニコフ、V.2005.「ゲート評価の秘密共有とセキュアな1ラウンド2パーティーの計算」、暗号学の進歩-ASIACRYPT 2005.Ed.by B.K.ロイ.vol.3788.レクチャー・ノート・イン・コンピュータ・サイエンス.スプリンガー、ハイデルベルク.136-155
【文献】ビーバー、D.「回路ランダム化を使用した効率的なマルチパーティー・プロトコル」.アドバンス・イン・サイプトロジー-CRYPTO’ Ed.by J.フェイゲンバウム. Vol.576. レクチャー・ノート・イン・コンピュータ・サイエンス.スプリンガー、ハイデルベルク.420-432
【発明の概要】
【発明が解決しようとする課題】
【0004】
SMPCの2つの主な構成:回路スクランブル(Circuit Garbling(CG))と線形秘密分散(Linear Secret Sharing(LSS))が存在する。回路スクランブルは、関数評価のシミュレーションをするための特定の命令で、暗号化キーを必要とする。線形秘密分散は入力からシェアを計算し、それらをノードに分配する。この開示では、LSSを用いたSMPCフレーバーに焦点をあてる。
【0005】
以下は、SMPC計算に参加するノードの主要な役割のリストである:
ディーラー・ノード:これらのノードは、計算に入力を提供する
計算ノード:これらのノードは、ディーラー・ノードによって提供された入力に実際のSMPC計算を実行する
結果ノード:これらのノードは、完了したSMPC計算から結果を復元する
【0006】
LSS SMPCプロトコルは、以下の3つの段階を含む:
段階0(オプション)-前処理:いくつかのLSS SMPCプロトコルは、BGW(非特許文献8)のビーバーのバージョンで、またはSPDZで、乗算のトリプレットの生成のような予備計算を走らせることをノードに要求する。これらの計算は、どのような特定のSMPC計算の非公開の入力にも関係なく、したがって前のオフラインの段階で行われることができる。
【0007】
段階1-シェア分布:各ディーラー・ノードは、計算のための各非公開の入力をシェアの数Nに分解して、異なる計算ノードに各シェアを送信する。各シェアは、非公開の入力に関する情報を明らかにしない。それが復元されうるのは、非公開の入力からの全てのN個のシェアが集められる時だけである。
【0008】
段階2-計算:各計算ノードは、計算への各非公開の入力からの1つのシェアを有する。計算は、非公開の入力に対しての関数の出力を評価することを含む。これをなすために、計算ノードは、SMPCプロトコルによって評価されるべき特定の関数に従って、シェアへの演算を実行する。
【0009】
段階3-結果の復元:段階2の後、各計算ノードは、計算の結果(すなわち、評価されるべき関数)から、シェアを取得している。計算ノードは、1つあるいは複数の結果ノードにシェアを送信する。結果から、すべてのN個のシェアを集めた後に、結果ノードは、共同で計算された関数の出力を復元することができる。
【0010】
たとえば、2つのディーラー・ノードが各々1つの文字列を有すると仮定する。2つの文字列の比較から結果を評価するための、そして、結果ノードにこの結果を伝えるための、計算ノードのネットワークが欲しい。文字列はディーラー・ノードに秘密であるので、文字列は、プレーンテキストで、または、暗号化された形で計算ノードに送信されるべきではない。各ディーラー・ノードは秘密の文字列をN個のシェアに分解し、異なる計算ノードに各シェアを送信する。比較されるべき2つの文字列のそれぞれにつき1つのシェアを受信した後、計算ノードは、計算から結果のシェアを取得するために、SMPCプロトコルに従う。この結果は、マッチする文字列をTRUE値で表現し、ミスマッチする文字列をFALSE値で表現するブールであっても良い。各ノードは、結果ノードに結果のシェアを送信し、結果ノードは、文字列比較から、TRUEまたはFALSE結果を復元する。
【0011】
SMPCに関する主要な課題は、通信の複雑さである。計算ノードが、段階2で、評価されるべき関数の結果のシェアを共同的に取得するのに、この関数が複雑である場合、多数のメッセージ交換および/または通信帯域幅が必要とされる。複雑な関数とは、多数の入力を有する関数であって、それらの入力の際の多数の演算を有する関数を意味する。SMPCの現実のアプリケーションは、通常、複雑な関数を必要としており、そのことは生産シナリオにおけるSMPCの適用可能性に著しく影響を及ぼす。
【0012】
たとえば、BGW SMPCにおいて、計算ノードは、加算と乗算を含む、整数入力への算術関数を評価する。BGWを走らせている計算ノードは、メッセージを交換する必要なく、加算を処理することができる。しかし、乗算の評価は、メッセージの交換を必要とする。複雑な関数は、加算と乗算を含み、全体的なBGW関数評価を遅くする。
【0013】
ここでは、算術の設定で、SMPCとして算術関数を評価するSMPCフレーバーに言及する。発明の焦点は、算術の設定での関数のSMPCに対する評価にある。算術の設定では、関数は、秘密の積のグループの合計として、普遍性を失わずに表されうる。この設定では、秘密は、自然数または整数または実数または複素数である。
【0014】
一般的な関数の評価は、算術の設定の積の計算を必要とする。最先端のSMPCsは、共同で算術の積を評価するために、メッセージを交換することをノードに要求する。メッセージの交換は、ローカルCPUの計算より遅い規模の多くの命令である。そういうわけで、標準的なSMPCsでの些細ではない関数の共同での評価は、統括サーバ上より遅い規模の命令である。
【課題を解決するための手段】
【0015】
非公開の入力秘密{s,s,・・・,ss-1}のセットSの積のグループA個の和として表されうる算術関数fの計算を可能にするマルチ・パーティー秘密計算方法が提供される。秘密を保持しているディーラー・ノードは、基礎ブラインド要素ρを備えており、基礎ブラインド要素ρの逆数は、擬似乱数のセットの合計であり、擬似乱数の各々は、それぞれの計算ノードと関連しており、かつ他の計算ノードと共有されない。各ディーラー・ノードは、更に、提供されている秘密に特有の、指数ブラインド要素λa,mを備えており、指数ブラインド要素の全ての合計は1である。ディーラー・ノードは、秘密と、指数ブラインド要素によって増された基礎ブラインド要素との積を、計算ノードとシェアする。各計算ノードは、独立して、かつ計算を分けることなく、ディーラー・ノードから受信したシェアの積から、結果シェアを生成する。結果シェアを合計することが、計算の結果を提供する。このように、計算中、計算ノード間でメッセージを渡すことを要求することなく、計算ノードが積の合計を計算することができる。
【0016】
1つの面では、計算実行方法が提供され、計算実行方法は、複数のD個のディーラー・ノードとN個の計算ノードの間で実行され、非公開の入力秘密{s,s,・・・,ss-1}のセットSの積のA個のグループの和として表されうる
【数1】

となるような算術関数fの結果を計算することであり、積の各グループm、a∈{0,1,・・・,A-1}は、非公開の入力秘密の前記セットSのM個の秘密の積であり、
【数2】

であり、a∈{0,1,・・・,A-1}、m∈{0,1,・・・,M-1}におけるサブ表示ia,mは、S個の秘密のセットから、非公開の入力秘密を識別するためのものであり、S個の秘密は、整数または実数または複素数から選択され、各々の秘密は前記ディーラー・ノードのうちの1つに知られており、
前記方法は、
a)積mのグループに秘密
【数3】

を提供している各ディーラー・ノードに、前記積mのグループに提供している全ての秘密に共通の基礎ブラインド要素ρを提供することを含み、前記基礎ブラインド要素ρは、n∈{0,1,・・・,N-1}、a∈{0,1,・・・,A-1}において、各々がN個の計算ノードのそれぞれ1つと関連付けられた、(N×A)個の乱数または擬似乱数Xn,aのセットに対して
【数4】

(モジュロp、ここでpは素数)を満たし、
前記方法は、
b)積mのグループに秘密
【数5】

を提供している各ディーラー・ノードに、前記秘密
【数6】

に特有の指数ブラインド要素λa,mを提供することを含み、前記指数ブラインド要素λa,mのセットは、まとめると、
【数7】

(モジュロp)を満たし、
前記方法は、
c)n∈{0,1,・・・,N-1}、a∈{0,1,・・・,A-1}において、前記(N×A)個の乱数または擬似乱数Xn,aのセットを記憶することを含み、
(ア)第1の演算モード(「ネットワーク・モード」)の前記計算ノードで記憶し、それによって、N個の前記計算ノードの各々が、当該ノードに特有のA個の乱数または擬似乱数のサブセットを記憶し、または、
(イ)第2の演算モード(「エッジ・モード」)の前記ディーラー・ノードで記憶し、それによって、各ディーラー・ノードが、少なくとも、当該ディーラーが提供する秘密への和に対応する前記(N×A)個の乱数または擬似乱数Xn,aのサブセットを記憶し、
前記方法は、
d)各ディーラー・ノードが、各秘密
【数8】

に対して、当該秘密に対する1以上のシェアを計算することを含み、演算のネットワーク・モードでは、単一のシェアが
【数9】

(モジュロp)で計算され、演算のエッジ・モードで、秘密
【数10】

が提供される積mのグループに関連したN個の乱数または擬似乱数Xn,aを使って複数のN個のシェアが
【数11】

(モジュロp)で計算され、
前記方法は、
e)各ディーラー・ノードが、前記計算ノードの各々に、各々のシェア・メッセージを送信することを含み、演算のネットワーク・モードでは、各々のシェア・メッセージは、同一の単一のシェアνa,mを含み、演算のエッジ・モードでは、N個の計算ノードの各々が、特有の値n∈{0,1,・・・,N-1}で指標をつけられたシェアを受信するように、各々のシェア・メッセージは、N個のシェアνn,a,mのうちのそれぞれ1つを含み、
前記方法は、
f)各計算ノードが、積mのグループの各々に関連した、受信したシェアνa,mまたはνn,a,mに対してローカルの乗算結果を計算することを含み、当該ローカルの乗算結果は、演算のネットワーク・モードでは、
【数12】

(モジュロp)で計算され、演算のエッジ・モードでは、
【数13】

(モジュロp)で計算され、
前記方法は、
g)各計算ノードが、ローカルの乗算結果のセットから、
【数14】

(モジュロp)でローカルの加算結果を計算することと、
h)N個の計算ノードからのローカルの加算結果を組み合わせることによって、
【数15】

を計算して、関数fの出力を計算することと、を含む。
【0017】
上記定義された異なる2種類のブラインド要素、すなわち基礎ブラインド要素と指数ブラインド要素をディーラー・ノードに提供することによって、ディーラーから送信されるシェアは、計算ノードから完全に秘密を隠すように、そして、計算ノードが独立して各々計算を実行して、結果シェアに至ることを可能にするように、不明瞭にされる。結果シェアは、ブラインド要素または秘密を知らなくても、計算結果を明らかにするよう組み合わされることが可能である。
【0018】
本発明の方法は、NMC(Nil Message Compute)と呼ばれるSMPCの新しいフレーバーを採用しており、NMCは、計算段階(段階2)の間に計算ノードがメッセージを交換する必要なく、算術設定のどのような関数も評価可能である。したがって、NMCは、標準のSMPCから主なパフォーマンスの問題を取り除き、多数の非公開の入力について、単一のサーバ内部で全ての情報が平文で利用可能な統括サーバで行われるように、基本的に同時に多数の計算ノードを用いて、些細でない関数を評価することができる。この発明において示されたNMCは、N個の計算ノードの合計からN-1まで変造することができるパッシブな敵に対して安全である。定義上、パッシブな敵は、プロトコル仕様書に従うが、計算のために、非公開の入力s,s,・・・,ss-1に関する情報を学ぼうとする。
【0019】
それらの最も基本形の方法は、算術の設定に関して、そして、1つの数字だけを返す関数に関して、焦点を当てている。同じ方法が、非特許文献5のアペンディクスA.3で記述された技術を用いて、任意の個数の出力値にすぐに拡張されうる。この引用の内容は、この目的のために参照として、ここに取り込む。
【0020】
望ましくは、ステップh)は、
(ア)各計算ノードが、ローカルの加算結果rを1以上の結果ノードに送信することと、
(イ)1以上の結果ノードが、受信したローカルの加算結果の集計を実行し、算術関数fの結果を特定すること
を含む。
【0021】
望ましくは、ステップa)は、
(ア)各計算ノードn、n∈{0,1,・・・,N-1}が、乱数Xn,aを生成することと、
(イ)各計算ノードが、
【数16】

(mod p)となるように、次数N-1の多項式p(x)のシェアp(n+1)を計算することと、
(ウ)各計算ノードが、各々のρ -1のシェアを、各ディーラー・ノードd、d∈{0,1,・・・,D-1}に送信することと、
(エ)各ディーラー・ノードが、受信したシェアから、対応する基礎ブラインド要素ρ -1を復元することと、
を含む。
【0022】
望ましくは、ステップ(イ)は、
n≠qであるn,q∈{0,1,・・・,N-1}の乱数ジェネレータGn,qが、計算ノードnとqが互いに同期して動かす生成器であるように、乱数ジェネレータGn,qのコレクションを提供することと、
各計算ノードnが、q≠nである各q∈{0,1,・・・,N-1}に対して乱数ジェネレータGn,qから、N-1個のランダム・シェアを生成して、多項式p(q+1)の各ランダム評価値を生成することと、
各計算ノードが、各ランダム評価値p(q+1)とp(0)=Xn,aとを満たす多項式p(x)の係数を計算することと、
各計算ノードnが、前記係数とXn,aとから、多項式p(x)のシェアp(n+1)を計算することと、
他の全ての計算ノードqからの多項式p(x)の自身のシェアとして、各計算ノードnが、各q∈{0,1,・・・,N-1}に対して前記乱数ジェネレータGn,qから、p(n+1)を生成することと、
各ノードが、
【数17】

を計算して、n+1で評価される多項式p(x)のシェアp(n+1)を提供することと、
各ディーラー・ノードが、秘密の合計
【数18】

に等しい、xに相当するp(x)の独立した係数を復元できるように、各計算ノードが、積mのグループに提供している各ディーラー・ノードに、p(x)のシェアp(n+1)を送信することと、
を含む。
【0023】
更に、方法の望ましい面は、制約
【数19】

を満たすような共同の方法での指数ブラインド要素の生成を含む。このことは、望ましくは、さらに下記されるアルゴリズム「ブラインド要素の生成」(GenerateBlindingFactors)を用いることによってなされる。
【0024】
本発明の更なる独立した面として、アルゴリズム「ゼロ・メッセージ・シェア分配」(ZeroMessageShareDistribution)の下で、下記のように、メッセージを送信することなく、秘密シェア・メカニズムから最初のシェアを分配する方法が提供される。ここで記述されるマルチ・パーティー計算方法の文脈以外でも、乱数の生成を利用する秘密シェア・メカニズムには、これは適用されうる。
【0025】
本発明の別の更なる独立した面として、アルゴリズム「シェアを送信しない秘密加算」(AddSecretsWithoutSendingTheirShares)の下で、下記のように、N個のノードで、共同してN個の秘密を加算することと、秘密の加算結果を1以上の出力ノードに開示する一方、個々の秘密を非公開にしておくことと、という方法も提供される。ここで記述されるマルチ・パーティー計算方法の文脈以外でも、これも適用されうるということはいうまでもない。
【0026】
本発明の別の更なる独立した面として、アルゴリズム「ブラインド要素の生成」の下で、下記のように、M―1個のノードが、M個の秘密の数字λ,λ,・・・,λMa―1を、ノード間で、これらの数字をシェアすることなく、合計が1となるように共同して生成すること、という方法も提供される。ここで記述されるマルチ・パーティー計算方法の文脈以外でも、これも適用されうるということはいうまでもない。
【図面の簡単な説明】
【0027】
図1】ディーラー・ノードと計算ノードと結果ノードの、従来のSMPCネットワークのネットワーク図である。
図2】ここで開示されるネットワークNMCアルゴリズムを実行する、図1の計算ノードとディーラー・ノードのネットワーク図である。
図3】ネットワークNMCアルゴリズムを図示する、メッセージ・フローを含むフローチャートである。
図4】ここで開示されるエッジNMCアルゴリズムを実行する、図1の計算ノードとディーラー・ノードのネットワーク図である。
図5】エッジNMCアルゴリズムを図示する、メッセージ・フローを含むフローチャートである。
【発明を実施するための形態】
【0028】
図1は、マルチ・パーティー秘密計算(SMPC)を実行するために協働する複数のノードを示すネットワーク図である。ノードは、ディーラー・ノード10と計算ノード12と結果ノード14に分類される。
【0029】
ノードの全てに参照番号でラベルがつけられているわけではないが、同じグループ内の全てのノードが、同じ種類であるということは理解されるべきである。すなわち、左の垂直線上の全てのノードはディーラー・ノード10であり、中心の八角形のグループ内のすべてのノードは計算ノードであり、左の垂直線上の全てのノードは結果ノードである。
【0030】
ノードの配置と数が具体的な実物を意味することを目的としないこと、および、ノードは、ローカル・エリア・ネットワークまたはワイド・エリア・ネットワークでありえる公的または私的なネットワーク上で、ネットワーク・アドレスによって他のノードと通信可能なノードを有し、物理的グループというよりはむしろ論理的グループに整理され得るということも当業者に理解されるべきである。ノードは、同じコンピュータ・システムの一部、例えばマルチプロセッサ・システムの様々なプロセッサーまたはコアでさえあっても良い。通信プロトコルはシステム・デザイナーの選択であり、それらが実装されるシステムのアプリケーションとセキュリティ要求によって規定され得る。
【0031】
各ノードは、ここで開示される関連の方法とアルゴリズムを実行するようプログラムされ、さらにメモリとネットワーク接続へのアクセスを有するコンピュータ・システムのプロセッサーで実行されても良い。多くの実装例では、各ノードは、適切にプログラムされたコンピュータ・システムであるだろう。
【0032】
ディーラー・ノード10は、計算に入力を提供する。具体的には、ディーラー・ノード10は秘密入力を備えており、これらの秘密入力からシェアを生成し、シェアを計算ノード12に分配する。計算ノードは実際のSMPC計算を実行し、各計算ノード12は計算出力のシェアを各結果ノード14に提供する。結果ノード14は、受信した結果シェアから結果を復元する。
【0033】
以下では、下記の仮定をする:
仮定1:ディーラー・ノードは、計算ノードではありえない。さもなければ、ノードが1以上の役割を有することができる。
仮定2:計算ノードの数は、ディーラー・ノードの数と等しいか、より多い。
仮定3:ネットワークの異なるノード間には、安全なポイント・ツー・ポイント・チャンネルが存在する。そのうえ、メッセージのブロードキャストもサポートされている。
仮定4:一般性を失うことなく、全ての和の項mに対して、ディーラーにつき最大で1個の入力だけがあると仮定する。なぜなら、ディーラーが積mに1個以上の入力変数を提供すれば、それは常にそれらをそれらの積に等しい新しい入力変数と入れ替えることができるからである。
仮定5:一般性を失うことなく、有限体の算術Z/pZで作業を行う。つまり、秘密のすべては、モジュロpの整数として表現される(pは素数)。したがって、以下の全ての計算は、mod pとして示される、モジュロpで実行される。それから、請求項1で定義された算数関数fは、より簡潔に、(式1)
【数20】
として表されても良い。
仮定6:セミ・オネスト・アドバーサリー・モデル(semi-honest adversary model)で作業を行う。つまり、ネットワークのノードは、受信するメッセージから秘密入力に関する情報を得ようとどのような手段を使用しても良いが、NMCプロトコルで記述されたステップに従う。
【0034】
第1番目に、NMCの基礎的要素を構成する以下の3つの新しいアルゴリズムを記述する。第2番目には、NMCの2つのフレーバーであって、その1つは、前処理の段階に相当する大部分の計算がSMPC計算ノードによってなされ、もう1つは、それらがディーラー・ノードによってなされる、2つのフレーバーを記述する。
【0035】
基礎的要素
このセクションでは、3つのアルゴリズムを提示する。最初の1つ、「ゼロ・メッセージ・シェア分配」は、メッセージを送信することなく秘密シェア・メカニズムから最初のシェアを分配可能とするという新しいアイディアに基づく。第2の「シェアを送信しない秘密加算」は、ディーラー・ノードにシェアを送信することを要求することなく、計算ノードが数を加算可能とするような、このアイディアを利用する。第3の「ブラインド要素の生成」は、最初にシェアを分配することなく、N個のノードが、
【数21】

となるような、M個の数字λ,λ,・・・,λMa―1に至るように、もう一度「シェアを送信しない秘密加算」を利用する。
【0036】
アルゴリズム「ゼロ・メッセージ・シェア分配」の基本原則は、乱数生成を利用した秘密シェア・メカニズムに適用されうる。GMW SMPCのためのこのアルゴリズムを提示し、次に、アルゴリズム「シェアを送信しない秘密加算」の段階1で、どのように、それがBGW SMPCにインスタンス化されるのかを示す。
【0037】
1)アルゴリズムの記述:GMW SMPCのための「ゼロ・メッセージ・シェア分配」
入力:N個の入力ノード ここで、ノードnは秘密x、n∈{0,1,・・・,N-1}を有す
出力:各ノードは、互いのノードの秘密のシェアで終わる
目的:シェアは、メッセージを交換することなく分配される
【0038】
GMW SMPCでは、設定
【数22】

で、
【数23】

となるように、秘密ビットxを提供している各ディーラーnがN-1個のランダム・ビットxn,0,xn,1,・・・,xn,n-1,xn,n+1,・・・,xn,N-1を生成する。次に、ディーラーnは、乱数xn,qをNode q(q≠i)に送信する。つまり、各ノードnが、N-1個のメッセージを送信している。それは、総数N(N-1)個のメッセージである。これらすべてのメッセージを送信する代わりに、ディーラーは、以下のように、同期して乱数ジェネレータを使用しても良い。
【0039】
n,q∈{0,1,・・・,N-1}、n≠qにおけるGn,qは、ノードnとノードqが同期して動かしてランダム・ビットを生成する生成器であるような乱数ジェネレータのコレクションであるとする。
【0040】
つまり、ノードnとノードqとは、独立して、Gn,qから同じ乱数列を取得することができる。
【0041】
ノードが、ランダム・ビットgを生成するように、数生成器Gn,qを動かした場合を、g←Gn,qと書く。各ノードnは、秘密ビットxから N個のシェアxn,0,xn,1,・・・,xn,N-1 を生成するために、以下のように進める。
ステップ1- (N-1)個のランダム・シェアを生成する。ノードnは、各q∈{0,1,・・・,N-1}、q≠nに対してGn,qを使用して、秘密ビットxに対するランダム・シェア(つまり、ランダム・ビット)xn,q←Gn,qを生成する。
ステップ2- 自身のシェアを生成する。ノードnは、秘密ビットxに対するN-1個のシェアを有している。もう一つの評価で、シェアの全体のセットが完全になるだろう。ノードnは、秘密ビットに対する自身のシェアとして、
【数24】

を選択する。
【0042】
上記ステップ1では、ノードnは、Gn,qを使用して、秘密ビットxからランダム・シェアxn,qを生成し、ランダム・シェアxn,qは、n≠qのノードqに送信される必要がある。しかし、ノードnとノードqは共に、同期して動かす同じ乱数ジェネレータGn,qのインスタンスを有する。したがって、ノードqは、通信の必要なく、独立してxn,q←Gn,qを取得することができる。この原則に従うと、全てのノードnは、上記2ステップのプロセスから自身のシェアxn,nを生成し、決して1つのメッセージも受信または送信する必要なく、xq,n←Gq,nを使用して、全ての他の入力ノードqからの秘密ビットxからシェアxn,qを生成することができる。これは、入力ノードがメッセージを交換することなく秘密ビットからシェアを分配することを可能とする新しい手順を構成する。
【0043】
これで、アルゴリズム「ゼロ・メッセージ・シェア分配」の記述を終える。
【0044】
BGW SMPCは、ノードがSMPC計算のために秘密入力値からシェアを生成するのに、シャミルの秘密シェア(Shamir´s Secret Sharing(SSS))メカニズムを利用する。SSSの主なアイディアは、x=0で評価される多項式が秘密と等しくなる、つまりp(0)=xとなるように、ノードが、ランダムな係数a1,n,a2,n,・・・,aN-1,nの多項式
【数25】

の中に秘密x∈Z/pZを隠すことである。ユニークに次数N-1の多項式を特定するのにN個のポイントで十分であるとすると、n番目のディーラーは、所定のx座標x=1,2,・・・,NのセットでのN個の多項式p(1),p(0),・・・,p(N)を生成して、計算ノードのそれぞれに異なる評価値を送信する。このプロセスの最後では、各計算ノードj、j∈{0,1,・・・,N-1}は、p(0)=xで秘密xを隠す多項式p(x)、n∈{0,1,・・・,N-1}からの、割り当てられたx座標x=j+1で評価されたシェアp(j+1)で終わる。
【0045】
アルゴリズム「ゼロ・メッセージ・シェア分配」は、乱数の生成を利用する秘密シェア・メカニズムで使用されうる。ランダムな多項式の係数と共に機能するBGW SMPCのシャミルの秘密シェア・メカニズムのケースがそれである。入力ノードがメッセージ交換なしで秘密入力からシェアを送信することを可能とするために、どのようにこのアルゴリズムが、BGW SMPCのケースでインスタンス化されうるかについて、ここで示す。これは、アルゴリズム「シェアを送信しない秘密加算」の段階1を構成する。このアルゴリズムは、N個のノードが、N個の秘密を、それらを開示することなく加算可能とする方法を示す。
【0046】
2)アルゴリズムの記述:「シェアを送信しない秘密加算」
入力:N個の入力ノード ここで、ノードnは秘密x、n∈{0,1,・・・,N-1}を有する
出力:合計
【数26】

を復元する1個またはいくつかの出力ノード
目的:秘密を非公開にしたままで、N個のノードは、共同してN個の秘密を加算し、出力ノードに合計結果を開示することができる。
【0047】
アルゴリズムは、標準SMPCの3つの段階を含む。段階1は、シャミルの秘密シェア・メカニズムのための「ゼロ・メッセージ・シェア分配」の具体化である。段階2と3は、標準BGW SMPCと同じである。
【0048】
段階1- シェア分配
シャミルの秘密シェア・メカニズムのための「ゼロ・メッセージ・シェア分配」の具体化を記す。
【0049】
n,q∈{0,1,・・・,N-1}、n≠qにおけるGn,qは、ノードnとノードqが同期して、Z/pZの乱数を生成する生成器であるような乱数ジェネレータのコレクションであるとする。
【0050】
つまり、ノードnとノードqとは、独立して、Gn,qから同じ乱数列を取得することができる。Gn,qの単純な具体化は、ノードnとノードqが同一の入力初期値で開始する限り、入力として出力を採用して次の数を生成する暗号ハッシュ関数である。しかし、Z/pZの乱数を出力するどのような疑似乱数ジェネレータでも動く。
【0051】
ノードが、数生成器Gn,qを動かした場合を、g←Gn,qと書く。各ノードnは、多項式p(x)からN個の評価値を生成するために以下のように進める。
ステップ1- (N-1)個のランダム・シェアp(q+1)、n≠qを生成する。ノードnは、各q∈{0,1,・・・,N-1}、q≠nに対してGn,qを使用して、多項式のランダム評価値p(q+1)←Gn,qを生成する。この評価値は、秘密xからのシェアを構成する。
ステップ2- 自身のシェアp(n+1)を生成する。ノードnは、ここで、次数N-1の多項式のN-1個の評価値(シェア)を有している。もう一つの評価値で、多項式は完全に特徴づけられるだろう。ノードnは、N番目の評価値としてp(0)=xを選択する。多項式p(x)は、ここで完全に特徴づけられるが、p(0)は、有効なシェアではありえない。なぜなら、p(0)は秘密xに等しいからである。不足しているシェアp(n+1)を取得するために、ノードnは、(例えば、ラグランジュを使用して)多項式補間を実行し、多項式
【数27】

の係数a1,n,・・・,aN-1,nを取得する。これらの係数とxを用いて、ノードnは、直接の評価値を介してp(n+1)を計算する。p(n+1)は自身の多項式へのシェアである。
【0052】
上記ステップ1では、ノードnは、Gn,qを使用して、n≠qのノードqに送信される必要がある多項式のランダムな評価値p(q+1)を生成する。しかし、ノードnとノードqは共に、同期して動く同じ乱数ジェネレータGn,qのインスタンスを有している。したがって、ノードqは、通信の必要なく、独立してp(q+1)←Gn,qを取得することができる。この原則に従えば、全てのノードは、上記2ステップのプロセスから、自身のシェアp(n+1)を生成することができ、1つもメッセージを送信または受信する必要なく、p(n+1)←Gq,nを使用したその他すべての計算ノードqからの多項式p(x)からシェアp(n+1)を生成することができる。このことは、計算ノードが、何のメッセージも交換することなく、計算ノードの秘密からシェアを分配することを可能とする新しい手順を構成し、それで計算ノードはBGW SMPCを用いて共同して合計を計算することが可能である。
【0053】
段階2―計算
アルゴリズムのこの部分は、標準BGW SMPCに従う。全てのノードnは、ここで、p(0)=xがノードq∈{0,1,・・・,N-1}、q≠nからの秘密であるような次数N-1の多項式p(x)からのシェアp(n+1)を有する。多項式
【数28】

を定義する。これは、
【数29】

であるような次数N-1の多項式である。これは、全ての秘密の合計であり、このアルゴリズムの出力を構成する。標準BWG SMPCに従えば、全てのシェア
【数30】

を加算することにより、ノードnは、n+1で評価されたp(x)のそれらのシェアp(n+1)を計算できる。
【0054】
段階3―結果の復元
標準BGW SMPCを続けて、各ノードは、それらのシェアp(x)のp(n+1)を1つ又はいくつかの出力ノードに送信する。出力ノードは、全てのシェアを受信したとき、多項式補間を実行し、秘密の合計に等しい、すなわち
【数31】

の独立の係数a(すなわち、xに対応するもの)を復元する。
【0055】
これで、アルゴリズム「シェアを送信しない秘密加算」の記述を終える。
【0056】
3)アルゴリズムの記述:「ブラインド要素の生成」
入力:M-1個の入力ノード
出力:M個の出力ノード。ここで、m∈{0,1,・・・,M-1}のm番目の結果ノードは、
【数32】

であるようなブラインド要素λを復元する
目的:M-1個のノードは、ノード間でブラインド要素をシェアすることなくブラインド要素の合計が1に等しくなるように、共同して、M個のブラインド要素λ,λ,・・・,λMa-1を生成する。このアルゴリズムにより、入力ノードは、M個のディーラー・ノードのトータルから各ノードmに、m番目のブラインド要素を開示することが可能となる。
【0057】
ステップ1:各入力ノードm,m∈{0,1,・・・,M-2}は、乱数λを生成する。つまり、各ノードが、一連のλ,λ,・・・,λMa-2(最後のラムダλMa-1以外の、合計の中の全てのラムダ)の数を生成する。
【0058】
ステップ2:各入力ノードm,m∈{0,1,・・・,M-2}は、それらの秘密入力としてλを使用して、アルゴリズム「シェアを送信しない秘密加算」を動かす。
- アルゴリズム「シェアを送信しない秘密加算」の段階1の最後では、各入力ノードm,m∈{0,1,・・・,M-2}は、各乱数λ,λ,・・・,λMa-2から、それぞれ多項式シェアp(m+1),p(m+1),・・・,pMa-2(m+1)を得て終わる
― アルゴリズム「シェアを送信しない秘密加算」の段階2の最後では、各入力ノードm,m∈{0,1,・・・,M-2}は、x=0で評価された場合、
【数33】


であって、λ,λ,・・・,λMa-2の合計と等しい多項式
【数34】

から多項式シェア
【数35】

を得て終わる。
【0059】
各入力ノードmは、
【数36】

のローカル・シェア
【数37】


【数38】

を計算する(mod p)。シャミルの秘密シェアは線形なので、pMa-1(m+1)は、x=0で評価された場合、値
【数39】

を隠す多項式pMa-1(x)のシェアであることがわかる。つまり、λMa-1を以下のように定義する(mod p)。
【数40】

このことは、(式3)
【数41】

(mod p)を確実にする。要約すると、各入力ノードm,m∈{0,1,・・・,M-2}は、ここで、式3を維持するような、秘密λ,λ,・・・,λMa-1を隠しているM個の多項式p(x),p(x),・・・,pMa-1(x)からの多項式シェアp(m+1),p(m+1),・・・,pMa-2(m+1)を有している。
【0060】
アルゴリズム「シェアを送信しない秘密加算」の段階3の終わりでは、各入力ノードm,m∈{0,1,・・・,M-2}は、k∈{0,1,・・・,M-1}であるk番目の出力ノードに、出力ノードkがλを復元できるように、λの各多項式シェアであるp(m+1)を送信する。
【0061】
これで、アルゴリズム「ブラインド要素の生成」の記述を終える。
【0062】
NMC SMPC-形式的定義
(式1)を思い起こすと、算術設定での関数の一般形は、
【数42】

である。(式1)で与えられた一般的な算術関数の計算のために、セット{s,s,・・・,ss-1}から秘密を提供するD個のディーラー・ノードがある。この計算は、N個の計算ノードによって実行され、対応する結果は、R個の結果ノードに開示される。我々は、この課題を解決するために、新規な2つのフレーバーのNMC SMPCを提案する。
1)ネットワークNMC:このフレーバーでは、前計算段階の計算負荷の大半は、N個の計算ノードにより実行される。
2)エッジNMC:このフレーバーでは、この負荷の大半は、D個のディーラー・ノードにより実行される。
【0063】
線形秘密分散(linear secret sharing(LSS))法を秘密入力に直接的に適用する代わりに、両方のNMCフレーバーを支えている考えは、ブラインド要素を使用して秘密入力を覆い隠して、それから、これらの要素の一部を計算のネットワークに記憶させるのにLSS(例えばシャミル)を使用することである。より具体的には、
1)ネットワークNMC(Network NMC)では、秘密入力sから、マスクされた値νが、ν=s・ρλにより与えられ、計算ノードのネットワークが、ρとλからのシャミル・シェアを生成して記憶する。
2)エッジNMC(Edge NMC)では、秘密入力sから、マスクされた値νが、ν=s・X・ρλにより与えられ、計算ノードのネットワークが、λからのシャミル・シェアを生成して記憶し、ディーラー・ノードが、Xとρを生成する。
【0064】
ここで、この関数を評価するためのネットワークNMC SMPCの4つの段階を定義する。
【0065】
アルゴリズム「ネットワークNMC」の記述
入力:D個の入力ノード。ここで、n番目のノードは、秘密の全体のセットS={s,s,・・・,ss-1}のサブセットSを保持する。ディーラー・ノードは、(式1)で与えられた、秘密に対する算術関数f=f(s,s,・・・,ss-1)を計算することを望む。
出力:R個の結果ノードは、A個の和を含む関数結果
【数43】

を復元する。ここで、a番目の和は、M個の積を含む。この関数は、入力秘密を見ることができないN個の計算ノードにより計算される。
目的:N個の計算ノードは、ディーラーの秘密を非公開にしたままで、計算段階中、メッセージ交換なしで、共同して算術関数を評価可能である。
【0066】
アルゴリズム「ネットワークNMC」は、4つの段階:前処理と、シェア分配と、計算と、結果復元とを含む。
【0067】
段階0―前処理
この段階は、各々の和a、a∈{0,1,・・・,A-1}に対して、
【数44】

となるような、基礎ブラインド要素(base blinding factor)ρとM個の指数ブラインド要素(exponent blinding factors)λa,0,λa,1,・・・,λa,Ma-1の計算を処理する。
【0068】
以下のステップは、各々の和a、a∈{0,1,・・・,A-1}に対して、並行して実行される。
ステップ1(基礎ブラインド要素の計算):
各計算ノードn、n∈{0,1,・・・,N-1}が、乱数Xn,aを生成する。
ステップ2(基礎ブラインド要素の計算):
各計算ノードnが、共同して
【数45】

を計算するために、秘密入力値としてXn,aを使用して、アルゴリズム「シェアを送信しない秘密加算」を動かす。このアルゴリズムの段階2の最後で、各ノードnは、
【数46】

(mod p)となるような次数N-1の多項式p(x)のシェアp(n+1)を有する。これを、ベースラインのブラインド要素の逆数、ρ -1=p(0)で示す。アルゴリズム「シェアを送信しない秘密加算」の結果復元段階では、各計算ノードは、各ρ -1のシェアを、各ディーラー・ノードd、d∈{0,1,・・・,D-1}に送信する。それから各ディーラー・ノードは、(式2)
【数47】

(mod p)を復元できる。
ステップ3(指数ブラインド要素の計算):
ここで上記した2つのステップと並行して、N個の計算ノードは、M―1,M―1,・・・,MA-1―1の計算ノードのA個のサブセットS,S,・・・,SA-1で、それら自身をそれぞれ組織化する。各々の和a、a∈{0,1,・・・,A-1}に対して、a番目のサブセットSの計算ノードは、
【数48】

(mod p)となるようなM個のランダムな値λa,0,λa,1,・・・,λa,Ma-1(ブラインド要素)を計算するのに協働して動く。それらは、これを、入力ノードのサブセットとしてSに対して「ブラインド要素の生成」を動かすことにより成し遂げる。つまり、アルゴリズム「ブラインド要素の生成」のA個のインスタンスを並行して実行した結果として、全てのa、a∈{0,1,・・・,A-1}に対してλa,mが(式3)
【数49】

を満たすような、(式1)のa番目の和に対応する積
【数50】

の計算において、秘密
【数51】

と関係するならば、各ディーラー・ノードd、d∈{0,1,・・・,D-1}はλa,mを復元できる。
【0069】
計算ノードのA個のサブセットS,S,・・・,SA-1の注釈:
これらのサブセットは、任意の方法によって選択されうる。仮定2は、そのようなサブセットが存在することを保証する。他の実施例では、M―1の計算ノードのa番目のサブセットSが、N-(M―1)個のノードを加算することによって、計算ノードの任意のN、M―1<N≦Nにまで拡張され、m番目の加算されたノードは、(式3)が変更されないように、全てのa∈{0,1,・・・,A-1}に対するアルゴリズム「ブラインド要素の生成」のステップ1で、λa,m=0を生成する。
【0070】
パフォーマンスの注釈:
各々の和a、a∈{0,1,・・・,A-1}に対するρ -1とλa,mの計算は、アルゴリズム「シェアを送信しない秘密加算」の段階3の実行を要求する。この段階は、全てのディーラー・ノードへのメッセージの伝達を含む。1のディーラー・ノードに全てのメッセージを集めることにより、各計算ノードは、ディーラー・ノードにつき1つのメッセージだけを送信する必要がある。Dがディーラー・ノードの数とすると、これによりネットワークのメッセージの総数は、N・Dである。
【0071】
NMC前処理段階の最後には、各ディーラー・ノードd、d∈{0,1,・・・,D-1}は、ディーラー・ノードがSMPC計算の全てに提供する全ての秘密
【数52】

に対するブラインド要素ρ -1(ゆえにρ)とλa,m、a∈{0,1,・・・,A-1}、m∈{0,1,・・・,M-1}で終わる。この段階は、算術関数の評価に対する入力である秘密s,s,・・・,ss-1から完全に独立している。したがって、NMC SMPCを動かす算術関数の実際の評価の(例えば数か月)前に実行されても良く、バッチで処理されても良い。
【0072】
段階1-シェア分配
ステップ1:
各ディーラー・ノードd∈{0,1,・・・,D-1}は、(式1)のa番目の和の項を含む積の計算に、秘密
【数53】

を提供する場合、それらの秘密を
【数54】

(mod p)でマスクする。
【数55】

を思い返すと、ia,mはセットs,s,・・・,ss-1の対応する秘密に対する指標として振る舞う。仮定3も思い返すと、各ディーラー・ノードは、式1のa番目の和の項に対し、最大で1の秘密しか提供しない。
ステップ2:
各ディーラー・ノードd∈{0,1,・・・,D-1}は、各々の和の項aに対する1個の値νa,mを含むN個の計算ノードであって、ディーラー・ノードdが秘密を提供した計算ノードに、ブロードキャスト・メッセージを送信する。各々の値νa,mは、それらの秘密
【数56】

のNMCシェアを示す。
【0073】
セキュリティの注釈:
N個の計算ノードは、基礎ブラインド要素ρまたは指数ブラインド要素λa,mの値を知らないということに留意する。なぜなら、N個の計算ノードが有する全ては、それらの値の多項式シェアだからである。したがって、要素
【数57】

は、効果的に秘密の値
【数58】

を隠しており、アルゴリズムNMCは、SSSからのセキュリティ機能を受け継ぎ、すなわち、パッシブ・アドバーサリー・モデルにおけるN-1個(またはより少ない)の共謀ノードに対して安全である。具体的には、アドバーサリーは、νa,mから
【数59】

を回復するために、ρとλa,mを復元できるように、N個全ての計算ノードを損なわせなければならない。
【0074】
段階2-計算
ステップ1:
各計算ノードn、n∈{0,1,・・・,N-1}は、各々の和a、a∈{0,1,・・・,A-1}に対して(式4)
【数60】

(mod p)を計算する。
ステップ2:
各計算ノードn、n∈{0,1,・・・,N-1}は、(式5)
【数61】

(mod p)を計算する。
【0075】
この段階では、計算ノード間のあらゆる通信が必要とされない。なぜなら、各ノードは、各a∈{0,1,・・・,A-1}に対して、ローカルでrn,aを計算可能だからである。
【0076】
段階3-結果の復元
各計算ノードn、n∈{0,1,・・・,N-1}は、(式6)
【数62】

を計算する結果ノードに、結果としてのNMCシェアrを送信する。
【0077】
これで、アルゴリズム「ネットワークNMC」の記述を終える。
【0078】
図2は、ネットワークNMC実行の前処理-段階0のステップを実行する、図1の計算ノード12とディーラー・ノード10を示す。
【0079】
更に図3に言及すると、図3は、ネットワークNMC実行のためのノード間のメッセージ・フローを含むフローチャートである。
【0080】
ステップ20では、N個の計算ノードn∈{0,1,・・・,N-1}の各計算ノードnが、乱数Xn,aを生成する。これは、上記段階1のステップ1に記述されたように、各々の和a、a∈{0,1,・・・,A-1}に対し平行に行われる。
【0081】
ステップ22では、上記段階0のステップ2の第1の部分に記述されたように、計算ノードは各々秘密入力値としてXn,aを使用して、アルゴリズム「シェアを送信しない秘密加算」を動かす。これにより、各計算ノードが、ディーラー・ノードに送信されうる各ρ -1 のシェアを有する結果となる。
【0082】
ステップ24では、段階0のステップ3の第1の部分に記述されたように、計算ノードは、A個のインスタンスで平行に「ブラインド要素の生成」を動かして、λa,mのシェアを計算する。
【0083】
ステップ26では、段階0のステップ2と3の後段に記述されたように、計算ノードは、ディーラー・ノードに、図3のステップ22と24で計算したシェアを送信する。
【0084】
ステップ28では、ディーラー・ノードは、シャミルの秘密シェアの多項式補間法を使用して(例えばラグランジュの方法を使用して)、ブラインド要素λa,m、ρを復元する。上記段階0の記述の最後に記したように、ブラインド要素の復元につながるステップは、段階1のシェアのブラインドと分配のステップに先立って、長い期間実行されても良い。
【0085】
また、ブラインド要素を提供する代わりの方法が想定されることは留意すべきである。例えば、他の実施例では、信頼されたノードが前処理段階から計算を実行して、ディーラー・ノードに、各々の和a、a∈{0,1,・・・,A-1}に対するρ -1とλa,mを送信する。
【0086】
他の実施例では、N個の計算ノードは、アルゴリズム「シェアを送信しない秘密加算」で記述されたものとは異なる別のSMPCフレーバーを使用して、前処理段階から計算を実行し、ディーラー・ノードに、ディーラー・ノードが各々の和a、a∈{0,1,・・・,A-1}に対するρ -1とλa,mを復元できるようなメッセージを送信する。
【0087】
他の実施例では、準同型暗号が、1個又はいくつかのノードで使用され、例えば、非特許文献5で記述されたような完全準同型暗号またはサムホワット準同型暗号を使用して、前処理段階の計算を実行して、ディーラー・ノードに、各々の和a、a∈{0,1,・・・,A-1}に対するρ -1とλa,mを送信する。
【0088】
他の実施例では、1個又はいくつかのノードは、安全な孤立領域または信頼された実行環境を使用して、前処理段階から計算を実行して、ディーラー・ノードに、各々の和a、a∈{0,1,・・・,A-1}に対するρ -1とλa,mを送信する。
【0089】
図3に戻り、ステップ30では、段階1で上述したように、各ディーラー・ノード10は、a番目の和の項を含む積の計算に提供された秘密
【数63】

に対して
【数64】

を計算しても良い。
【0090】
ステップ32では、各々のそのような計算結果が、計算ノードに計算をさせるディーラー・ノードによりブロードキャストされる。
【0091】
ステップ34では、段階2で上述したように、各計算ノードが、計算ノード間の通信を何ら行うことなく、NMC計算の結果のシェアrを計算する。
【0092】
ステップ36では、各計算ノードが、結果ノードに、自身のシェアrを送信する。
【0093】
ステップ38では、結果ノードが、(式6)により、結果シェアの合計(mod p)として、関数fの結果を復元する。計算ノード間の通信なしで到達したこの復元は、以下の証明によって設定された算術の関数のマルチ・パーティー計算のまさしく確かな結果である。
【0094】
(式4)と(式5)から開始して、
【数65】

(mod p)を得る。ここで、最後のステップは、(式3)に従ったλa,0+λa,1+・・・+λa,Ma-1=1という事実から来ている。この結果を(式6)の右側に当てはめると、
【数66】

(mod p)を得られる。これは、(式1)のf=f(s,s,・・・,SS-1)に対応する。
【0095】
仮定4から、全てのディーラーが、fのa番目の和の項に対応する積に、最大1の秘密を提供するということが思い起こされる。他の実施例では、全てのディーラー・ノードmに、全ての和の項a∈{0,1,・・・,A-1}におけるa番目の和の項に対応する積に、きっかり1の秘密
【数67】

を提供することを強いる。
【0096】
我々は、以下のように、このことを達成する。(1)もしディーラーが既にa番目の項に1の秘密を提供していれば、我々は何もしない。(2)もしディーラーが秘密を提供していなければ、ディーラーは、その秘密が1に等しくなること、つまり
【数68】

を強いる。このように、a番目の項の積
【数69】

は、変更されないが、全てのディーラー・ノードが、きっかり1の秘密をそれに提供する。このことは、全ての和の項aに対して、M=Dを置き換えることを許容し、全てのランダム・ベクトルλa,mを単一のランダム・ベクトルλと等しくし、(式3)は
【数70】

になり、同じλが各々の和の項に対して使用される。これにより、段階0の最後で計算ノードからディーラー・ノードに送信される情報の量を削減できる。ρ -1とλa,m、a∈{0,1,・・・,A-1}、m∈{0,1,・・・,M-1}のシェアを送信する代わりに、計算ノードは、ρ -1とλ、m∈{0,1,・・・,D-1}のシェアのみを送信する。
【0097】
前に論じたように、ネットワークNMCアルゴリズムに代わるものとして、エッジNMCと呼ばれるアルゴリズムを使用して、また計算ノード間の通信なしで、同じ成果が達成されうる。
【0098】
ここで、入力秘密の値を開示することなく、(式1)の算術関数の共同の評価値を求めるエッジNMC SMPCの4段階を定義する。エッジNMC SMPCでは、ディーラー・ノードが、前処理段階の複雑さの大半を押し付けられる。このことは、以下のように、段階0のステップ1と2と、段階1の全てと、段階2のステップ1とを(ネットワークNMCアルゴリズムに対して)変更することを必要とする。
【0099】
エッジNMCアルゴリズムの記述
入力:ネットワークNMCと同様
出力:ネットワークNMCと同様
目的:ネットワークNMCと同様
【0100】
段階0:前処理
新しいステップ1(古いものと置き換える):
全てのD個のディーラー・ノードは、同期して、乱数ジェネレータを動かす。つまり、乱数ジェネレータを動かすことによって、全てのD個のディーラー・ノードは、独立して、メッセージ交換なしで、同じN・A個の乱数Xn,a、n∈{0,1,・・・,N-1}、a∈{0,1,・・・,A-1}を取得する。
【0101】
新しいステップ2(古いものと置き換える):
全てのディーラー・ノードd∈{0,1,・・・,D-1}は、ローカルで、
【数71】

を計算する。
【0102】
同じままのステップ3:
N個の計算ノードは、ネットワークNMCアルゴリズム用に記述したように、「ブラインド要素の生成」を動かすことによって、指数ブラインド要素のシェアを計算し、次に、秘密
【数72】

を隠すブラインド要素λa,mをディーラーが復元できるように、様々なディーラーに対して、{λa,m}のシェア、a∈{0,1,・・・,A-1}、m∈{0,1,・・・,M-1}を開示する。
【0103】
段階1:シェア分配(古いものと置き換える):
ステップ1:各ディーラー・ノードd∈{0,1,・・・,D-1}は、もし、各ディーラー・ノードが、(式1)のa番目の和の項を含む積の計算に秘密
【数73】

を与えるならば、n∈{0,1,・・・,N-1}、a∈{0,1,・・・,A-1}に対し、
【数74】

(mod p)を計算する。全ての秘密
【数75】

に対応するN個のシェアν0,a,m,ν1,a,m,・・・,νN-1,a,mが存在するということに留意する。
【0104】
ステップ2:各ディーラー・ノードd∈{0,1,・・・,D-1}は、ノードdにより所有される全ての秘密
【数76】

に対応するN個のシェアν0,a,m,ν1,a,m,・・・,νN-1,a,mの各々1つを、異なる計算ノードに送信する。
【0105】
段階2:計算
ステップ1(古いものと置き換える):
各計算ノードn、n∈{0,1,・・・,N-1}は、各々の和a、a∈{0,1,・・・,A-1}に対し、(式4、代替のバージョン)
【数77】

(mod p)を計算する。
ステップ2:ネットワークNMCと同様
【0106】
段階3:結果の復元
ネットワークNMCと同様
【0107】
これで、アルゴリズム「エッジNMC」の記述を終える。
【0108】
図4は、段階0のステップ-エッジNMC実行の前処理を実行する、図1の計算ノード12とディーラー・ノード10を示す。
【0109】
更に図5に言及すると、これは、エッジNMC実行におけるノード間のメッセージ・フローを含むフローチャートである。
【0110】
ステップ40では、上のエッジNMCアルゴリズムの段階0のステップ3の最初の部分で記述したように、計算ノードが、A個のインスタンスで並列に「ブラインド要素の生成」を動かして、λa,mのシェアを計算する。
【0111】
ステップ42(このステップは、ステップ20の後またはステップ20と並列に、前に実行されても良い)では、段階0のステップ1で記述したように、各ディーラー・ノードが、同期して乱数ジェネレータを動かして、メッセージ交換なしで、同一の乱数Xn,aのセットを生成する。
【0112】
ステップ44では、段階0のステップ2で述べられたように、各ディーラー・ノードが、ローカルで、ρ(またはρ -1)を計算する。
【0113】
ステップ46では、計算ノードが、ステップ40で計算したλa,mのシェアを、ディーラー・ノードに送信する。
【0114】
ステップ48では、ディーラー・ノードが、開示されたシェアから、λa,mを復元する。当業者は、ディーラー・ノードへのブラインド要素の提供において、ネットワークNMCアルゴリズムでのものと同じ選択肢が存在すると理解するであろう。
【0115】
ステップ50では、段階1で上述したように、段階1のステップ1のために記述されたように、各ディーラー・ノード10が、全ての秘密
【数78】

に対応するN個のシェアν0,a,m,ν1,a,m,・・・,νN-1,a,mを計算する。
【0116】
ステップ52では、段階1のステップ2のために記述されたように、これらのシェアが各計算ノードに送信される。
【0117】
ステップ54では、段階2によって、計算ノードが、結果シェアrの修正バージョンを計算する。
【0118】
ステップ56では、結果シェアが結果ノードに送信され、ステップ58では、結果ノードが、関数fの結果を復元する。
【0119】
エッジNMCフレーバーのための証明は、ネットワークNMCフレーバーでの式6のそれと大体同じであり、唯一の違いは、
【数79】

の代わりに、エッジNMCでは、我々は、
【数80】

を有することである。定義
【数81】


【数82】

によって、両者は同一である。
【0120】
時々、ディーラー・ノードは、計算ノードのネットワークを、入力秘密の値を記憶させ復元するためだけに使用することを望む。ここで、両NMCプロトコルにおけるこのプロセスを論じる。
【0121】
ネットワークNMCプロトコルの段階1では、ディーラー・ノードは、
【数83】

を使用して秘密をマスクし、計算ノードのネットワークに、それをブロードキャストする。それにより、各計算ノードは、ρとλa,mからのシェアを有する。ディーラー・ノードが、その秘密を復元したい時は、ディーラー・ノードは、計算ノードのネットワークに、νa,mと共にρとλa,mからのそれらのシェアを送信することを要求する。「シャミルの秘密シェア」を使用して、ディーラー・ノードは、ρとλa,mを復元し、以下のように、
【数84】

(mod p)秘密入力値を計算する。
【0122】
エッジNMCプロトコルの段階1では、ディーラー・ノードは、
【数85】

を使用して秘密をマスクし、計算ノードのネットワークに、それをブロードキャストする。それにより、各計算ノードは、λa,mからのシェアを有する。このことは、秘密入力
【数86】

の復元を許容しない、という点に留意する。この復元が可能であるように、ここで、段階1の修正を記述する。段階1の修正バージョンでは、ディーラーは、Xn,aとρとからのシェアを計算し、計算ノード間に分配するために、シャミルのような線形秘密シェア・スキームを使用する。ディーラー・ノードが、その秘密を復元したい時は、ディーラー・ノードは、計算ノードのネットワークに、νa,mと共にρとXn,aとλa,mからのそれらのシェアを送信することを要求する。「シャミルの秘密シェア」を使用して、ディーラー・ノードは、ρとXn,aとλa,mを復元し、以下のように、
【数87】

(mod p)秘密入力値を計算する。
【0123】
(付記)
(付記1)
計算実行方法であって、
複数のD個のディーラー・ノードとN個の計算ノードの間で実行され、
非公開の入力秘密{s,s,・・・,ss-1}のセットSの積のA個のグループの和として表されうる
【数88】

となるような算術関数fの結果を計算することを含み、
積の各グループm、a∈{0,1,・・・,A-1}は、非公開の入力秘密の前記セットSのM個の秘密の積
【数89】

であり、a∈{0,1,・・・,A-1}、m∈{0,1,・・・,M-1}におけるサブ表示ia,mは、S個の秘密のセットから、非公開の入力秘密を識別し、
前記S個の秘密は、整数または実数または複素数から選択され、
各々の秘密は前記ディーラー・ノードのうちの1つに知られており、
前記方法は、
a)積mのグループに秘密
【数90】

を提供している各ディーラー・ノードに、前記積mのグループに提供している全ての秘密に共通の基礎ブラインド要素ρを提供することを含み、
前記基礎ブラインド要素ρは、n∈{0,1,・・・,N-1}、a∈{0,1,・・・,A-1}において、各々がN個の計算ノードのそれぞれ1つと関連付けられた、(N×A)個の乱数または擬似乱数Xn,aのセットに対して
【数91】

(モジュロp、ここでpは素数)を満たし、
前記方法は、
b)積mのグループに秘密
【数92】

を提供している各ディーラー・ノードに、前記秘密
【数93】

に特有の指数ブラインド要素λa,mを提供することを含み、
前記指数ブラインド要素λa,mのセットは、まとめると、
【数94】

(モジュロp)を満たし、
前記方法は、
c)n∈{0,1,・・・,N-1}、a∈{0,1,・・・,A-1}において、前記(N×A)個の乱数または擬似乱数Xn,aのセットを記憶することを含み、
(ア)第1の演算モード(「ネットワーク・モード」)の前記計算ノードで記憶し、それによって、N個の前記計算ノードの各々が、当該ノードに特有のA個の乱数または擬似乱数のサブセットを記憶し、または、
(イ)第2の演算モード(「エッジ・モード」)の前記ディーラー・ノードで記憶し、それによって、各ディーラー・ノードが、少なくとも、当該ディーラーが提供する秘密への和に対応する前記(N×A)個の乱数または擬似乱数Xn,aのサブセットを記憶し、
前記方法は、
d)各ディーラー・ノードが、各秘密
【数95】

に対して、当該秘密に対する1以上のシェアを計算することを含み、
演算の前記ネットワーク・モードでは、単一のシェアが
【数96】

(モジュロp)で計算され、
演算の前記エッジ・モードでは、秘密
【数97】

が提供される積mのグループに関連したN個の乱数または擬似乱数Xn,aを使用して複数のN個のシェアが
【数98】

(モジュロp)で計算され、
前記方法は、
e)各ディーラー・ノードが、前記計算ノードの各々に、各々のシェア・メッセージを送信することを含み、
演算の前記ネットワーク・モードでは、各々のシェア・メッセージは、同一の単一のシェアνa,mを含み、
演算の前記エッジ・モードでは、N個の前記計算ノードの各々が、特有の値n∈{0,1,・・・,N-1}で指標をつけられたシェアを受信するように、各々のシェア・メッセージは、N個のシェアνn,a,mのうちのそれぞれ1つを含み、
前記方法は、
f)各計算ノードが、積mのグループの各々に関連した、受信した前記シェアνa,mまたはνn,a,mに対してローカルの乗算結果を計算することを含み、当該ローカルの乗算結果は、
演算の前記ネットワーク・モードでは、
【数99】

(モジュロp)で計算され、
演算の前記エッジ・モードでは、
【数100】

(モジュロp)で計算され、
前記方法は、
g)各計算ノードが、ローカルの乗算結果のセットから、
【数101】

(モジュロp)でローカルの加算結果を計算することと、
h)N個の前記計算ノードからの前記ローカルの加算結果を組み合わせることによって、
【数102】

を計算して、関数fの出力を計算することと、
を含む、計算実行方法。
【0124】
(付記2)
ステップh)が、
(ア)各計算ノードが、ローカルの加算結果rを1以上の結果ノードに送信することと、
(イ)前記1以上の結果ノードが、受信した前記ローカルの加算結果の集計を実行して、算術関数fの結果を特定することと、
を含む付記1に記載の計算実行方法。
【0125】
(付記3)
ステップa)が、
(ア)各計算ノードn、n∈{0,1,・・・,N-1}が、乱数Xn,aを生成することと、
(イ)各計算ノードが、
【数103】

(mod p)となるように、次数N-1の多項式p(x)のシェアp(n+1)を計算することと、
(ウ)各計算ノードが、各々のρ -1のシェアを、各ディーラー・ノードd、d∈{0,1,・・・,D-1}に送信することと、
(エ)各ディーラー・ノードが、受信した前記シェアから、対応する前記基礎ブラインド要素ρ -1を復元することと、
を含む付記1または2に記載の計算実行方法。
【0126】
(付記4)
ステップ(イ)が、
n≠qであるn,q∈{0,1,・・・,N-1}における乱数ジェネレータGn,qが、計算ノードnとqが互いに同期して動かす生成器であるように、乱数ジェネレータGn,qのコレクションを提供することと、
各計算ノードnが、q≠nである各q∈{0,1,・・・,N-1}に対して前記乱数ジェネレータGn,qから、N-1個のランダム・シェアを生成して、多項式p(q+1)の各ランダム評価値を生成することと、
各計算ノードが、各ランダム評価値p(q+1)とp(0)=Xn,aとを満たす多項式p(x)の係数を計算することと、
各計算ノードnが、前記係数とXn,aとから、前記多項式p(x)のシェアp(n+1)を計算することと、
他の全ての計算ノードqからの多項式p(x)の自身のシェアとして、各計算ノードnが、各q∈{0,1,・・・,N-1}に対して前記乱数ジェネレータGn,qから、p(n+1)を生成することと、
各ノードが、
【数104】

を計算して、n+1で評価された多項式p(x)のシェアp(n+1)を提供することと、
各ディーラー・ノードが、前記秘密の合計
【数105】

に等しい、xに相当するp(x)の独立した係数を復元できるように、各計算ノードが、積mのグループに提供している各ディーラー・ノードに、p(x)のシェアp(n+1)を送信することと、
を含む付記3に記載の計算実行方法。
【0127】
(付記5)
ステップa)は、
a.前記ディーラー・ノードが、信頼されたノードから、前記基礎ブラインド要素ρ ―1を受信することと、
b.前記計算ノードが、前記ディーラー・ノードが各々の和a、a∈{0,1,・・・,A-1}に対してρ ―1を復元可能なように、前記ディーラー・ノードにメッセージを送信することであって、前記メッセージは、マルチ・パーティー秘密計算を使用して、前記秘密Xn,aから前記ディーラー・ノードが協同的に生成する、メッセージを送信することと、
c.前記ディーラー・ノード以外の1以上のノードが、準同型暗号を実行して、前記基礎ブラインド要素ρ ―1を生成し、当該基礎ブラインド要素を、和aを提供している前記ディーラー・ノードに送信することと、
d.前記ディーラー・ノード以外の1以上のノードが、安全な孤立領域または信頼された実行環境で、前記基礎ブラインド要素ρ ―1を計算し、当該基礎ブラインド要素を、和aを提供している前記ディーラー・ノードに送信することと、
の1つを含む、付記1または2に記載の計算実行方法。
図1
図2
図3
図4
図5