Contenu connexe
Similaire à 『データ解析におけるプライバシー保護』勉強会 秘密計算
Similaire à 『データ解析におけるプライバシー保護』勉強会 秘密計算 (20)
Plus de MITSUNARI Shigeo (18)
『データ解析におけるプライバシー保護』勉強会 秘密計算
- 2. • 『データ解析におけるプライバシー保護』
• 10章以降 ; 以降PPinDAと略
• 複数人(パーティ)が互いに自分の情報を隠したまま
複数入力のある関数の値を計算すること
• 2-partyの例)𝑓(𝑥, 𝑦) ; ある関数 Aが𝑥, Bが𝑦を持っている
A, Bが互いに𝑥, 𝑦を見せずに𝑓(𝑥, 𝑦)を求める
• 注意
• A, Bそれぞれが異なる関数の値
𝑓𝐴 𝑥, 𝑦 , 𝑓𝐵(𝑥, 𝑦)を得るタイプもある
• たとえばAとっての𝑓(𝑥, 𝑦)から𝑦の
推測可能性は気にしない(詳細は後述)
• 例えば𝑓 𝑥, 𝑦 = 𝑥 + 𝑦ならばれてしまう
マルチパーティ秘密計算(MPC)
秘密の計算
A
𝑥
B
𝑦
𝑓(𝑥, 𝑦)
2/ 22
- 3. • オンライン広告の事例
• A : メールアドレスごとのweb閲覧履歴を持つ会社
• B : メールアドレスごとの購買履歴を持つ会社
• 目的
• Aには購買履歴は教えない
• Bには閲覧履歴を教えない
• Bはどのページを見た人が何を購入したかの傾向を知りたい
• 注意
• ある商品を購入した人が一人ならBはその人の閲覧履歴が分か
ってしまう
• MPCの範疇外 ; これは差分プライバシーで守る範囲
• 日本の個人情報保護法は「匿名加工情報を個人が特定できる
別の情報に結びつけることを禁止」PPinDA p.155
具体例
3/ 22
- 4. • semi-honest model
• パーティのそれぞれは定められたプロトコルにきちんと従う
• 自分が取得した情報から最大限、他人の情報を取ろうとする
• malicious model
• なんでもあり
• プロトコルの途中で嘘をついたり途中で止めたりする
• semi-honestをmalicious対応させる一般的な手法がある
• 結託
• 3人以上のMPCでは複数人が互いの情報を共有し、残りの人の
情報を得ようとすることもある
MPCの攻撃者のモデル
4/ 22
- 5. • 正当性
• 正しく𝑓を計算すること
• 秘匿性
• 𝑓以外の情報が漏れないこと
• 情報が漏れていないとは
• Aが𝑓(𝑥, 𝑦)を得るときにBとやりとりしたとき
• Bの値𝑦を知らないシミュレータとAがやりとりしたとき
• この二つをAが区別できないとき情報が漏れていないという
• 区別できない
• 情報理論的識別不可能性
• 計算量的識別不可能性
正当性と秘匿性
5/ 22
- 7. • 公開鍵暗号の定式化
• セキュリティパラメータ𝑘 : 平文の空間が2 𝑘
• 鍵生成アルゴリズム
• 𝐺𝑒𝑛 1 𝑘 → 𝑝𝑘, 𝑠𝑘
• 𝑘を決めると公開鍵𝑝𝑘と秘密鍵𝑠𝑘のペアを生成する
• 暗号化アルゴリズム
• 𝐸𝑛𝑐 𝑥, 𝑝𝑘 → 𝑐
• 平文𝑥と公開鍵𝑝𝑘により暗号文𝑐を生成する
• 復号アルゴリズム
• 𝐷𝑒𝑐 𝑐, 𝑠𝑘 → 𝑥
• 暗号文𝑐と秘密鍵𝑠𝑘から平文𝑥を生成する
• 正当性
• 𝐷𝑒𝑐 𝐸𝑛𝑐 𝑥, 𝑝𝑘 , 𝑠𝑘 = 𝑥
11章秘密鍵暗号と公開鍵暗号
7/ 22
- 8. • 二つの平文𝑥1, 𝑥2に対してその暗号文𝐸𝑛𝑐(𝑥𝑖)を見ても
どちらがどちらか分からない
• より正確な定式化
• セキュリティパラメータ𝑘に対して任意の確率的多項式時間ア
ルゴリズム𝒜: 0,1 𝑙 𝑘 → {0,1}, 𝑥1, 𝑥2 ∈ 0,1 𝑘に対して
Pr 𝒜1 𝐸𝑛𝑐 𝑥1 = 1 − Pr 𝒜2 𝐸𝑛𝑐 𝑥2 = 1 < negl(𝑘)
• 𝒜𝑖は𝐸𝑛𝑐(𝑥𝑖)が与えられたときに平文が𝑥𝑖と判定したら1を返
すアルゴリズム
• DL ; find 𝑎 if 𝑃, 𝑎𝑃 of elliptic curve are given
• (C)DH ; find 𝑎𝑏𝑃 if 𝑃, 𝑎𝑃, 𝑏𝑃 are given
• DDH ; detect whether 𝑎𝑏𝑃 = 𝑐𝑃 or not if 𝑃, 𝑎𝑃, 𝑏𝑃, 𝑐𝑃
暗号文の計算量的識別不可能性(IND)
8/ 22
- 9. • 選択平文攻撃(CPA : Chosen Plaintext Attack)
• 攻撃者が暗号文を受けとる前後に、攻撃者が任意に選んだ平
文に対する暗号文を取得可能な状態を想定
• 選択暗号文攻撃(CCA : Chosen Ciphertext Attack)
• 攻撃者が暗号文𝑐を受け取る前に、攻撃者が任意に選んだ𝑐以
外の暗号文に対する平文を取得可能な状態を想定
• 適応的選択暗号文攻撃(CCA2)
• CCAと「暗号文𝑐を受け取る前後に」が違う
攻撃者のモデル
9/ 22
- 10. • IND-CPA
• CPAに対してINDである(区別できない)
• 公開鍵暗号はだれでも任意の平文の暗号文を作れるのでこれ
は必須
• (注意)教科書的RSAはIND-CPAではない
• IND-CCAならIND-CPAがいえる
• IND-CCA, IND-CCA2
• IND-CCA2が理想
• IND-CCA2なら暗号文の改竄ができないことが知られている
• 𝐸𝑛𝑐(1万円)を𝐸𝑛𝑐(10万円)に変えられない(頑強性)
• 詳細は『クラウドを支えるこれからの暗号技術』参照
公開鍵暗号の安全性
10/ 22
- 11. • 加法準同型暗号
• 𝐷𝑒𝑐 𝐸𝑛𝑐 𝑥1 ⊕ 𝐸𝑛𝑐 𝑥2 = 𝑥1 + 𝑥2
• 乗法準同型暗号
• 𝐷𝑒𝑐 𝐸𝑛𝑐 𝑥1 ⊗ 𝐸𝑛𝑐 𝑥2 = 𝑥1 𝑥2
• 完全準同型暗号
• 加法+乗法
• 安全性
• 𝐸𝑛𝑐(𝑥)から𝐸𝑛𝑐(2𝑥)または𝐸𝑛𝑐(𝑥2
)を作れる
• 頑強性を持たない
12章 準同型暗号による秘密計算
11/ 22
- 12. • 𝑛人の𝑖番目の人の心筋梗塞𝑥𝑖と喫煙習慣𝑦𝑖の情報
• 医療保険会社A : 𝑥𝑖 ∈ 0,1 (𝑖 = 1, … , 𝑛)
• 物販会社B : {𝑦𝑖 ∈ 0,1 }
• 互いに𝑥𝑖, 𝑦𝑖を送らずに分割表を作りたい
• A ; 𝑛1, 𝑛2を自分で計算可能
• B ; 𝑛 𝐴, 𝑛 𝑎を自分で計算可能
• これらの情報を互いに送信
• 𝑛1𝐴 = ∑𝑥𝑖 𝑦𝑖を計算できれば分割表を求められる
分割表計算の2-party秘密計算
喫煙習慣あり 喫煙習慣なし 合計
心筋梗塞あり 𝑛1𝐴 𝑛1𝑎 𝑛1
心筋梗塞なし 𝑛2𝐴 𝑛2𝑎 𝑛2
𝑛 𝐴 𝑛 𝑎 𝑛
12/ 22
- 13. • Aが{𝑥𝑖},Bが{𝑦𝑖}を保持するとき秘密計算プロトコルを
してAは𝑛1𝐴 = ∑𝑥𝑖 𝑦𝑖を得るがBは何も得られない
• 𝐸𝑛𝑐 ∑𝑥𝑖 𝑦𝑖 = ∑𝐸𝑛𝑐 𝑥𝑖 𝑦𝑖 = ∑𝑦𝑖 𝐸𝑛𝑐(𝑥𝑖)
• この計算をBが行う
• 2-partyプロトコル
• AはBに公開鍵𝑝𝑘を送信
• Aは𝑐𝑖 = 𝐸𝑛𝑐(𝑥𝑖)をBに送信
• Bは𝑐 = ∑𝑦𝑖 𝑐𝑖 ⊕ 𝐸𝑛𝑐(0)をAに送信
• Aは𝐷𝑒𝑐 𝑐 = ∑𝑥𝑖 𝑦𝑖を取得
• 注意
• 𝐸𝑛𝑐(0)を足すのはランダム化のため
• Aが𝑥 = (0, … , 1, … 0) ; 𝑖番目のみ1を送ると𝑦𝑖が分かってしまう
分割表の秘密計算
13/ 22
- 14. • A, Bが第三者Cに計算してもらう場合
• 𝐸𝑛𝑐 𝑛1𝐴 = 𝐸𝑛𝑐 ∑𝑥𝑖 𝑦𝑖 = ∑𝐸𝑛𝑐(𝑥𝑖) ⊗ 𝐸𝑛𝑐(𝑦𝑖)
• Aが𝐸𝑛𝑐(𝑥𝑖)を, Bが𝐸𝑛𝑐(𝑦𝑖)をCに送信して和を計算してもらい
Aに戻してもらう
• Aは復号して𝑛1𝐴を得る
• 注意
• Aは𝐸𝑛𝑐(𝑦𝑖)を復号できるのでBがCに送るときはAに見えない
ようにしないといけない
依頼計算型の分割表計算
14/ 22
- 15. • 事前条件
• Aliceは𝑥1, … , 𝑥 𝑛を持っている
• Bobは𝑖 = 1, … , 𝑛のどれか𝑖0を選ぶ
• OTの後
• AliceはBobが選んだ数字は分からない
• Bobは𝑥𝑖0
を得るがそれ以外の𝑥𝑖(𝑖 ≠ 𝑖0)の情報は得られない
紛失通信OT(Oblivious Transfer)
Alice
𝑥1, … , 𝑥 𝑛
Bob
𝑥𝑖0
𝑖0を選択
15/ 22
- 16. • 1-out-of 2 OT
• Aliceは𝑥0と𝑥1を持っている
• Bobは𝑏 ∈ {0,1}を選ぶ
楕円曲線で1-out-of 2 OT
Alice 𝑥0, 𝑥1 Bob
𝑏 ∈ {0,1}を選ぶ
𝐶:楕円曲線の点
𝐶
𝑘 : 乱数
𝑄 = ቊ
𝑘𝑃, 𝑏 = 0
𝐶 − 𝑘𝑃, 𝑏 = 1
𝑄𝑟 : 乱数
𝑍0 = 𝐻 𝑟𝑄, 0 ⊕ 𝑥0
𝑍1 = 𝐻 𝑟(𝐶 − 𝑄), 1 ⊕ 𝑥1 𝑍0, 𝑍1, 𝑟𝑃
𝑏 = 0 → 𝐻 𝑘𝑟𝑃, 0 ⊕ 𝑍0 = 𝑥0
𝑏 = 1 → 𝐻 𝑘𝑟𝑃, 1 ⊕ 𝑍1 = 𝑥1
16/ 22
- 17. • Bobは公開鍵暗号をセットアップ
• 正しさ
• 𝑏 = 0 → 𝑑0 = 𝑟0 𝐸𝑛𝑐 0 + 𝐸𝑛𝑐 𝑥0 = 𝐸𝑛𝑐(𝑥0)
• 𝑏 = 1 → 𝑑1 = 𝑟1 𝐸𝑛𝑐 1 − 𝐸𝑛𝑐 1 + 𝐸𝑛𝑐 𝑥1 = 𝐸𝑛𝑐(𝑥1)
加法準同型暗号で1-out-of-2 OT
𝑏 ∈ {0,1}を選び
𝑐 = 𝐸𝑛𝑐(𝑏)を送る
𝑐
Alice 𝑥0, 𝑥1
乱数𝑟0, 𝑟1を選ぶ
𝑑1 = 𝑟1 𝑐 − 𝐸𝑛𝑐 1 + 𝐸𝑛𝑐(𝑥1)
𝑑0 = 𝑟0 𝑐 + 𝐸𝑛𝑐 𝑥0
𝑑0, 𝑑1
𝑚 𝑏 ≔ 𝐷𝑒𝑐(𝑑 𝑏)
Bob
17/ 22
- 18. • 1-out-of-2 OTを使う
• Aliceは𝑋 = (𝑥𝑖𝑗), 𝑖, 𝑗 = 1,2の4個の情報を持つ
• 𝑌 = (𝑦𝑖𝑗)をランダムに選び𝑍 = 𝑋 ⊕ 𝑌とする
•
𝑥00 𝑥01
𝑥10 𝑥11
=
𝑦00 𝑦01
𝑦10 𝑦11
⊕
𝑧00 𝑧01
𝑧10 𝑧11
• Bobは0~4を2ビット(𝑏1 𝑏0)で表して選ぶ
1. { 𝑦00, 𝑦01 , 𝑦10, 𝑦11 }に対して𝑏0で1-out-of-2 OTを使う
2. { 𝑧00, 𝑧10 , 𝑧01, 𝑧11 }に対して𝑏1で1-out-of-2 OTを使う
3. Bobは𝑥 𝑏1 𝑏0
を復元する
1-out-of-22
OTの構成
18/ 22
- 20. • 秘密鍵暗号と1-out-of-2 OTを使う
• 入力𝑤 𝐴, 𝑤 𝐵,出力𝑤 𝐶,𝑏 ∈ {0,1}に対する乱数𝑘 𝑏
𝑤
を選ぶ
• 𝑐00 = 𝐸𝑛𝑐(𝑘0
𝑤 𝐴)
(𝐸𝑛𝑐(𝑘0
𝑤 𝐵)
(𝑘0
𝑤 𝐶
0 𝑘
), 0 𝑘
は0が𝑘ビット並んだもの
• 𝑐01 = 𝐸𝑛𝑐(𝑘0
𝑤 𝐴)
(𝐸𝑛𝑐(𝑘1
𝑤 𝐵)
(𝑘0
𝑤 𝐶
0 𝑘 )
• 𝑐10 = 𝐸𝑛𝑐(𝑘1
𝑤 𝐴)
(𝐸𝑛𝑐(𝑘0
𝑤 𝐵)
(𝑘0
𝑤 𝐶
0 𝑘
)
• 𝑐11 = 𝐸𝑛𝑐(𝑘1
𝑤 𝐴)
(𝐸𝑛𝑐(𝑘1
𝑤 𝐵)
(𝑘1
𝑤 𝐶
0 𝑘 )
• {𝑐00, 𝑐01, 𝑐10, 𝑐11}をシャッフルしたものが秘匿回路
• Aliceは𝑘 𝑥 𝐴
𝑤 𝐴
をBobに送る
• Bobは𝑥 𝐵に対して{𝑘0
𝑤 𝐵
, 𝑘1
𝑤 𝐵
}からOTで𝑘 𝑥 𝐵
𝑤 𝐵
を得る
• 𝑐𝑖𝑗をこれらで復号し下位が0 𝑘なものの𝑘 𝑥 𝐶
𝑤 𝐶
が求めるもの
回路の構成方法
20/ 22
- 21. • 素因数分解の困難性ベースの加法準同型暗号
• 鍵生成
• 𝑝, 𝑞 : 同じビットサイズのランダムな素数
• 𝑛 = 𝑝𝑞, 𝜆 = (𝑝 − 1)(𝑞 − 1), 𝑔 = 1 + 𝑛
• 秘密鍵は𝜆, 公開鍵は𝑛と𝑔
• 暗号化
• 𝐸𝑛𝑐 𝑚 = 𝑔 𝑚 𝑟 𝑛 mod 𝑛2
• 𝑟は𝑝でも𝑞でも割れない乱数
• 復号
• 𝐷𝑒𝑐 𝑐 = 𝐿(𝑐 𝜆 mod 𝑛2)/𝜆 mod 𝑛
• 𝐿 𝑥 = (𝑥 − 1)/𝑛 mod 𝑛
Pailler暗号
21/ 22
- 22. • 1 + 𝑛 𝑥 = 1 + 𝑥𝑛 +
𝑥 𝑥−1
2
𝑛2 + ⋯
• よって 1 + 𝑛 𝑥 = 1 + 𝑛𝑥 mod 𝑛2
• 𝑐 ≔ 𝐸𝑛𝑐 𝑚 = 𝑔 𝑚 𝑟 𝑛なので𝑐 𝜆 = 𝑔 𝑚𝜆 𝑟 𝑛𝜆
• 𝑎 𝑝−1
≡ 1 mod 𝑝より∃𝑠, 𝑡 𝑟 𝑝−1 𝑞−1
= 1 + 𝑝𝑠 = 1 + 𝑞𝑡
• 𝑝 ≠ 𝑞なので𝑠は𝑡で割れて𝑟 𝜆 = 𝑟 𝑝−1 𝑞−1 = 1 + 𝑝𝑞𝑠′ = 1 + 𝑛𝑠′
• よって𝑟 𝑛𝜆 = 1 mod 𝑛2
• 𝑐 𝜆
= 𝑔 𝑚𝜆
= 1 + 𝑛 𝑚𝜆
= 1 + 𝑛𝑚𝜆 mod 𝑛2
• 𝐿 𝑐 𝜆 =
1+𝑛𝑚𝜆−1
𝑛
= 𝑚𝜆より𝐷𝑒𝑐 𝑐 =
𝐿 𝑐 𝜆
𝜆
= 𝑚
• 加法性
• 𝐸𝑛𝑐 𝑚1 + 𝐸𝑛𝑐 𝑚2 ∶= 𝑐1 𝑐2 = 𝑔 𝑚1+𝑚2 𝑟1 𝑟2
𝑛 = 𝐸𝑛𝑐(𝑚1 + 𝑚2)
𝐷𝑒𝑐 𝐸𝑛𝑐 𝑚 = 𝑚の確認
22/ 22