マルチパーティプロトコルとは、複数の参加者がそれぞれ秘密情報を持つとき、秘密情報を他の人に漏らさず、秘密から計算できる値を計算する技術である。
前提知識
シャミアの秘密分散を前提知識としているが、本記事では解説しないものとする。
手順
- 秘密を持つ参加者が、シャミアの秘密分散を用いて秘密を分散させる。(この秘密を入力値シェアと呼ぶ)
- 各参加者が協力して、入力値シェアをもとに出力値シェアを計算し、公開する。
- 各参加者が公開された出力値シェアと、シャミアの秘密分散の復元を使って、秘密情報の和を計算する。
具体例
人の参加者がそれぞれの秘密情報を漏らさず、秘密情報の和を求める手順について、以下に述べる。
1. 準備
参加者間で秘密情報の和より大きい素数決めて共有する。
2. 入力シェアの計算
すべての参加者がそれぞれ以下の操作を行う。参加者の番号を番目として説明する。
a. 多項式の決定
を満たす多項式を作成する。
具体的には ~ をランダムに選び、次のように定義する。
b. シェアの計算
他の参加者に対して、それぞれを計算し、暗号化した状態で送る。(は送る相手の番号)
3. 出力シェアの計算
すべての参加者が以下の操作を行う。参加者の番号を番目として説明する。
次のように出力シェアを計算し公開する。
4. 復元
を満たす 多項式関数を計算する。
これは ~ を用いて、シャミアの秘密分散の復元と同じように計算できる。
が秘密情報 ~ の和である。
参考
足立智子, and 光野繁治. "RSA 分散復号 (代数系アルゴリズムと言語および計算理論)." (2009).
Shamir, Adi. "How to share a secret." Communications of the ACM 22.11 (1979): 612-613.