秘密計算勉強会で使用した資料です。 - 秘密計算 - TEE - マルチパーティ計算(Multi-party Computation) - 完全準同型暗号(Fully Homomorphic Encryption) - JIFF
https://secure-computing.connpass.com/event/183355/
秘密計算勉強会#1株式会社Acompany近藤
View Slide
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.⾃⼰紹介近藤 岳晴 (25)@TakeItHarun 株式会社 Acompany- 取締役 CTOn 経歴- 名古屋のIT系ベンチャーでインターン- 名古屋⼯業⼤学 情報⼯学専攻修了- 在学中に株式会社AcompanyでCTO就任- 秘密計算ソフトウェア SeDi を開発
なめらかなデータ活⽤社会を創るEvolve Data into ValueStrictly ConfidentialCopyright©株式会社Acompany All rights reserved.
会社概要 –Company profile-「データを出したくないが、活⽤したい!」に応える秘密計算 AIStrictly ConfidentialCopyright©株式会社Acompany All rights reserved.×データ保護AIの開発マルチパーティ計算秘密分散機械学習
データを暗号化したままセキュアなデータ活⽤を実現するStrictly ConfidentialCopyright©株式会社Acompany All rights reserved.
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.秘密計算勉強会とは︖秘密計算に関して知⾒を深めるグループ知識共有やハンズオンを⾏う不定期開催主に以下のトピックを扱う- 秘密計算- プライバシー保護AI- データ保護AI- マルチパーティ計算- 完全準同型暗号- Secure Computing- Multi-party Computation- Trusted Execution Environment- Fully Homomorphic Encryption
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.コンテンツ• 秘密計算とは︖• TEE• 完全準同型暗号• MPC• MPCの実現⽅法は︖• 秘密分散法• Garbled Circuit• 秘密分散法を詳しく• 加法的秘密分散法• シャミア秘密分散法• Beaver’s Trick• ハンズオン• MPCのOSSを使ってみよう︕
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.コンテンツの構成秘密計算完全準同型暗号TEEMPC秘密分散法加法的秘密分散法シャミア秘密分散法Beaver's TrickGarbled Circuit
秘密計算とは︖
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.秘密計算とは暗号化したままのデータを⽤いて計算を⾏う技術の総称Secure Compuデータが外部に漏れずに計算ができればOK
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.秘密計算を実現する技術秘密計算完全準同型暗号TEEMPC秘密分散法加法的秘密分散法シャミア秘密分散法Beaver's TrickGarbled Circuit
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.完全準同型暗号(Fully Homomorphic Encryption)特殊な公開鍵暗号による暗号化をすると暗号化したデータに対して加算と乗算ができる
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.TEE(Trusted Execution Environment)特殊なCPUからの命令しか受け付けない暗号化領域を⽤意してデータの中⾝を外部に知られることなく計算ができる
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.MPC(Multi-party Computation)特殊な⽅法で分散させたデータに対して複数のマシンが加算と乗算を⾏う⼀定数の分散データを集めないと中⾝はわからない
MPCの実現⽅法は︖
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.MPCを実現する技術秘密計算完全準同型暗号TEEMPC秘密分散法加法的秘密分散法シャミア秘密分散法Beaver's TrickGarbled Circuit
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.秘密分散法秘密分散の⽅法によっては加算と乗算が可能
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.Garbled Circuit2者間でブール回路を実⾏して結果だけを得る⽅法⼊⼒が分からないように特殊な回路を使って実⾏するAlice BobF(a, b)a bGC
秘密分散法をより詳しく
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.秘密分散法の種類秘密計算完全準同型暗号TEEMPC秘密分散法加法的秘密分散法シャミア秘密分散法Beaver's TrickGarbled Circuit
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.加法的秘密分散法5 8- 10+155 = -10 + 15+ 6+ 28 = 6 + 2秘密にしたい数字を⾜し算で表現できる値に分割する
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.+ 6 - 10加法的秘密分散法5 8+15 + 2分割した値を1つ交換する
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.+ 6 - 10加法的秘密分散法5 8+15 + 2それぞれが⾜し算を⾏ってみる==+21 - 8
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.加法的秘密分散法5 8+21 - 8それぞれが⾜し算を⾏ってみる
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.加法的秘密分散法5 8+21 - 8結果を⾜してみる21 - 8 = 13
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.加法的秘密分散法5 8+21 - 8加法の結合法則と交換法則より明らかに加法が成⽴する5 + 8= (-10 + 15) + (6 + 2)= (6 + 15) + (2 - 10)= 13乗算は普通にはできない後述するBeaver‘s Trick等を使う
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.シャミア秘密分散法https://mathtrain.jp/shamir秘密にしたい情報を多項式の切⽚に埋め込む⽅法f(0) = 秘密情報となるような多項式を適当に作る多項式上の点 (i, f(i)) ただし i = 1,2,...,nを分割した値とする復号には多項式の次数+1 個の点を集めれば良い
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.シャミア秘密分散法f(1)f(2)g(1)g(2)分割した値を交換するf(0) g(0)1次元多項式f(x), g(x) の場合
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.g(1)f(2)シャミア秘密分散法f(1)g(2)分割した値を交換するf(0) g(0)
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.g(1)f(2)シャミア秘密分散法f(1)g(2)加算を実⾏してみるf(0) g(0)==h(1) h(2) h(x) = f(x) + g(x)
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.f(0) g(0)シャミア秘密分散法h(1) h(2)h(1) とh(2) からh(0) が復元できるh(0) 加算が実現できる
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.g(1)f(2)シャミア秘密分散法f(1)g(2)乗算をしてみるf(0) g(0)==h(1) h(2) h(x) = f(x)g(x)2次元多項式に変化
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.f(0) g(0)シャミア秘密分散法h(1) h(2)h(1) とh(2) からh(0) は復元できないh(0) h(x)が2次元多項式になっているので3点が必要
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.シャミア秘密分散法f(1)f(2)g(1)g(2)分割数を3にしておけば乗算しても復元可能になるf(0) g(0)1次元多項式f(x), g(x)f(3) g(3)乗算も実現できた
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.Beaverʼs Trick• 秘密分散法で効率的に乗算を⾏うために考え出された技• 加法的秘密分散法でも、シャミア秘密分散法でも使⽤できる• ⽅法• c = ab となる a, b, c の値を事前に分割しておく• 参加者は a, b, c の分割した値をそれぞれが保持しておく• 参加者 X,Y は秘密情報 x, y を2つに分割した値 x1, x2, y1, y2 を持っているとする• 各参加者が以下を計算する• X: d1 = x1 - a1, e1 = y1 – b1• Y: d2 = x2 - a2, e2 = y2 – b2• d, e を復元し、以下を計算する• X: z1 = e*a1 + d*b1 + c1 + d*e• Y: z2 = e*a2 + d*b2 + c2 + d*e• この時 z1, z2 から復元できる z は z = xy を満たす• z = e*a + d*b + c + d*e = (y - b)a + (x - a)b + ab + (x - a)(y - b) = xy乗算ができた︕
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.Beaverʼs Trickx1y1x2y2乗算を⾏う前の初期状態x ya1 a2b1c1b2c2c = abを満たす場合
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.Beaverʼs Trick x1y1x2y2d, e を計算した状態x ya1 a2b1c1b2c2d1e1d2e2d2 = x2 - a2, e2 = y2 – b2d1 = x1 - a1, e1 = y1 – b1
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.Beaverʼs Trick x1y1x2y2d, e を復元した状態x ya1 a2b1c1b2c2dede
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.Beaverʼs Trickx1y1x2y2z の計算を⾏った状態x yz1 z2z = x*y を満たすので乗算が実現できたz1 = e*a1 + d*b1 + c1 + d*e z2 = e*a2 + d*b2 + c2 + d*e
Strictly Confiden/alCopyright©株式会社Acompany All rights reserved.まとめ• 秘密計算• 暗号化したまま計算を⾏う技術の総称• 完全準同型暗号• 準同型性を持った公開鍵暗号によって実現• TEE• メモリ上に暗号化領域を作って実現• MPC• 秘密分散法とGCで実現• 秘密分散は加法的、シャミアの2つ• Beaver’s Trick で乗算を効率化秘密計算完全準同型暗号TEEMPC秘密分散法加法的秘密分散法シャミア秘密分散法Beaver's TrickGarbled Circuit
ハンズオンMPCのソフトウェアを触ってみよう︕