MP-SPDZ
概要
SPDZを改良したプロトコルを実装したフレームワーク Multi Protocol SPDZ の略
詳細
実際に動かした感触
四則演算・比較演算・分岐・配列・行列演算が、整数及び固定少数に対して使用可能
計算において秘密情報へのアクセスは特殊な関数を用いて行っている
秘密情報は空白または改行区切りで各プレイヤーの持つファイルに保存されている
mpc という拡張子のファイルに行いたい処理のコードを書く
専用の言語を用いる必要がある
文法的にはPythonに近い
.mpcのファイルをコンパイルしてVM上で動くバイトコードに変換している
「file.mpc」というファイルをコンパイルしたら「file-0.bc」というバイトコードが出来る
バイトコードは「Script/mascot.sh file」で実行出来る
mascot.shで実行するとMASCOTプロトコルを用いた秘密分散を用いて実行する
ディストリビューションによって秘密分散プロトコルが異なる
想定する攻撃と大部分のパーティの信頼性によってディストリビューションを使い分ける
インストールの仕方
参考文献のリンクから最新のディストリビューションのzipファイルをダウンロード
2020/1/27時点では「Mixed computation, binary computation with XOR-based MACs」というディストリビューションが最新
ダウンロードができたらzipファイルを展開
MP-SPDZのディレクトリの一番上の階層で以下のコマンドを入力
code:.sh
Scripts/tldr.sh
./compile.py tutorial
echo 1 2 3 4 > Player-Data/Input-P0-0
echo 1 2 3 4 > Player-Data/Input-P1-0
Scripts/mascot.sh tutorial
SimpleOT でエラーが起きたら以下を試す
git init
SimpleOT のディレクトリ削除
.gitmodules のSimpleOTの項目を削除する
banker 動かす際にエラーが起きたら以下を試す
CONFIG.mine の最初に MY_CFLAGS = -DINSECURE を追加
make online
make offline
make externalIO
上記の make で動かない場合は make all
banker_bonus_client.cpp の send_private_inputs関数の最初の for ループの添字が間違えている
参考文献
MP-SPDZ
bristolcrypto