MPC
概要
マルチパーティ計算(Multi Party Computation:MPC)
複数のサーバーが協力して計算を行う
入力データは秘密分散法により分散化された状態
サーバーからは、入力データ・計算の途中結果・計算結果を知ることはできない
分散計算の宿命として、悪意のあるノードの存在を仮定した対応をする必要がある
シェアの状態になったデータを各ノードが計算を行う
結果を集めたものが計算結果になる
シェアのまま計算したものは、それだけでは意味を持たない
ノードは計算の中身について知ることはできない
計算コストは低いが、多数のコミュニケーションコストがかかる
完全準同型暗号と逆の性質
https://gyazo.com/6cf771310f7e62957d63bab168191cad
MPCの歴史
https://gyazo.com/9d6c864492652778e4672e7faad6b843
詳細
$ N人の参加者$ A_iがいる場合に、参加者は自身の秘密情報$ s_iを持っているとする。
参加者が実行したい計算$ f(s_1, s_2, \cdots, s_N)を行う場合、秘密情報$ s_iを明かすことがないプロトコル。
MPCを用いた加法の例
参加者はシャミアの秘密分散法を用いて$ s_iをシェア$ v_{i,j}に分ける
各シェアと法$ qを全ての参加者に秘密裏に分配する
全員の秘密情報のシェアが全員に行き渡る
参加者は自身の持つ全てのシェア$ v_{1,j}, v_{2,j}, \cdots, v_{N,j}に対して加法を適用する
$ v_j = v_{1,j} + v_{2,j} + \cdots + v_{N,j}
全ての参加者が計算した$ v_1, v_2, \cdots, v_Nを集めて、計算結果を復号する
注意点
全ての参加者が正しく行動をするとは限らない
別途、検証する機構が必要になる
ネットワークモデル
参加者はP2Pで秘密通信可能
同期型ネットワーク
同期の取り方はビザンチン耐性を持つ方法で行う
代表的なMPCプロトコル
BGW/CCD型の秘密計算
情報理論的安全な方法
Passiveな攻撃者なら半数未満まで許容
正規のプロトコルに違反はしないが、受け取った情報から他の参加者の秘密情報を得ようとする
Activeな攻撃者なら$ \frac{1}{3}未満まで許容
正規のプロトコルから逸脱してもいい。
参加者の秘密情報を得ようとする
プロトコル自体を失敗させようとする
さらに2つのパターンあり
static
最初に攻撃者が固定されている
adaptive
正直な参加者をのっとることで情報をさらに獲得する
Yao's Garbled Circuit
2パーティー間でのMPC
Passiveな攻撃者を想定
Obliviouse Transferを使用
情報の転送時に外部にその内容が漏れない状態
GMW(Goldreich-Micali-Wigderson)
1987年に開発された基本的な手法
線形秘密分散を使用
主要な技術
線形秘密分散(Linear Secret Sharing:LSS)
シェア状態の$ [s_1],[s_2] に対して、定数$ a,bとした時に以下を満たす
$ [as_1 + bs_2] = a[s_1] + b[s_2]
シェアの状態で加算を行うことは、加算を行なった後にシェアにすることと同じである性質
シャミアの秘密分散法など
乗算も可能だが計算時間がかかる
検証可能線形秘密分散(Verifiable Linear Secret Sharing:VLSS)
Activeな攻撃者がいても、攻撃者を検知して排除することができる
実装例
BGW VSS
Garbled circuit
Oblivious Transfer
通信方法による攻撃耐性
2者間Obliviouse Transfer
Passive, Active攻撃者に対して任意の攻撃耐性あり
ブロードキャストとP2P通信
Active攻撃者に対して n/2 まで耐性あり
P2P通信
Passive攻撃者に対して n/2 まで耐性あり
Active攻撃者に対して n/3 まで耐性あり
MPCの実装(ツールキット)
こちらに全てのリストがある
https://github.com/rdragos/awesome-mpc#misc
http://www.multipartycomputation.com/mpc-software
関係図 from https://www.bu.edu/hic/files/2018/06/2018-06-05-Mayank.Varia_-1.pptx
https://gyazo.com/bb2708caf5e9d86e72d5fb516c7c3fea
大きくActive SecureかPassive Secureで分類できる
論文でよく言及されているものをあげる
Active Secure
MP-SPDZ
https://github.com/data61/MP-SPDZ
SCALE-MAMBA
https://homes.esat.kuleuven.be/~nsmart/SCALE/
FRESCO
https://github.com/aicis/fresco
HoneyBadgerMPC
https://github.com/initc3/HoneyBadgerMPC
Passive Secure
Obliv-C
http://oblivc.org/
ABY3
https://github.com/ladnir/aby3
Sharemind
https://sharemind.cyber.ee/
Googleが出した2者間のテーブルを用いたMPCツール(2019/06/20)
Private Join and Compute
https://github.com/google/private-join-and-compute
Private Set Intersectionを用いて2者間のテーブルを結合する
テーブルは準同型暗号で暗号化して結合される
統計処理を行うことができる
https://japan.zdnet.com/article/35138759/
参考文献
スライド
マルチパーティ計算の理論
藤崎英一郎 北陸先端科学技術大学大学院
https://www.jaist.ac.jp/~fujisaki/2018/lec-mpc-kanazawa-20180629.pdf
高速秘密計算説明資料
NECセキュリティ研究会
https://jpn.nec.com/press/201612/images/1502-01-01.pdf
NECの秘密計算技術のご紹介
NECセキュリティ研究会
https://jpn.nec.com/rd/technologies/201805/pdf/mpc_introduction.pdf
秘密計算のシステムとその原理
NTTセキュアプラットフォーム研究所
https://www.ntt.co.jp/sc/project/data-security/NTT-himitsu-keisan.pdf
Secure Multi-Party Computation
Ashutosh Satapathy 工業技術研究会
https://www.slideshare.net/AshutoshSatapathy4/secure-multiparty-computation?qid=5272b923-9915-4d91-92a1-3dc331867dd2&v=&b=&from_search=1
Secure Multi Party Computation
https://courses.engr.illinois.edu/cs598man/sp2016/slides/17.pdf
A Survey of MPC Offerings - Boston University
Mayank Varia
https://www.bu.edu/hic/files/2018/06/2018-06-05-Mayank.Varia_-1.pptx
論文
Secure multi-party computation for analytics deployed as a lightweight web application
Andrei Laoets ボストン大学
https://pdfs.semanticscholar.org/f69d/9844bcc6dfb59607ab966fa33db02ce80bd4.pdf
Students and taxes: a privacy-preserving study using secure computation
Dan Bogdanov タルツ大学(エストニア)
https://www.degruyter.com/downloadpdf/j/popets.2016.2016.issue-3/popets-2016-0019/popets-2016-0019.xml
SoK: General Purpose Compilers for Secure Multi-Party Computation
Marcella Hastings ペンシルバニア大学
https://www.cis.upenn.edu/~stevez/papers/HHNZ19.pdf
書籍
Applying secure multi-party computation in practice(144ページ)
RIIVO TALVISTE タルツ大学(エストニア)
https://cyber.ee/research/theses/riivo_talviste_phd.pdf
A Pragmatic Introduction to Secure Multi-Party Computation(180ページ)
David Evans バージニア大学
https://www.cs.virginia.edu/~evans/pragmaticmpc/pragmaticmpc.pdf
Applications of Secure Multiparty Computation(264ページ)
Peeter Laud, Liina Kamm
http://ebooks.iospress.nl/volume/applications-of-secure-multiparty-computation
Web
Resources for Getting Started with MPC
Yehuda Lindell
http://u.cs.biu.ac.il/~lindell/MPC-resources.html
A curated list of multi party computation resources and links.
rdragos/awesome-mpc
https://github.com/rdragos/awesome-mpc
Theory and Practical of Multi-Patry Computation Workshop
http://www.multipartycomputation.com/mpc-software
Google、プライバシーを保護しながらデータセットを解析する「Private Join and Compute」をオープンソース化
ITmedia
https://www.itmedia.co.jp/news/articles/1906/20/news079.html
Eiichiro Fujisaki
藤崎英一郎 北陸先端科学技術大学大学院 教授
https://www.jaist.ac.jp/~fujisaki/
ADVANCES IN PRACTICAL MULTIPARTY COMPUTATION
https://cyber.biu.ac.il/event/the-5th-biu-winter-school/
#crypto
#learning
#privacy
#ConfidentialComputing