秘密計算
佐久間淳『データ解析におけるプライバシー保護』
2017/3/10, 4/21, 5/26
光成滋生
• 『データ解析におけるプライバシー保護』
• 10章以降 ; 以降PPinDAと略
• 複数人(パーティ)が互いに自分の情報を隠したまま
複数入力のある関数の値を計算すること
• 2-partyの例)𝑓(𝑥, 𝑦) ; ある関数 Aが𝑥, Bが𝑦を持っている
A, Bが互いに𝑥, 𝑦を見せずに𝑓(𝑥, 𝑦)を求める
• 注意
• A, Bそれぞれが異なる関数の値
𝑓𝐴 𝑥, 𝑦 , 𝑓𝐵(𝑥, 𝑦)を得るタイプもある
• たとえばAとっての𝑓(𝑥, 𝑦)から𝑦の
推測可能性は気にしない(詳細は後述)
• 例えば𝑓 𝑥, 𝑦 = 𝑥 + 𝑦ならばれてしまう
マルチパーティ秘密計算(MPC)
秘密の計算
A
𝑥
B
𝑦
𝑓(𝑥, 𝑦)
2/ 22
• オンライン広告の事例
• A : メールアドレスごとのweb閲覧履歴を持つ会社
• B : メールアドレスごとの購買履歴を持つ会社
• 目的
• Aには購買履歴は教えない
• Bには閲覧履歴を教えない
• Bはどのページを見た人が何を購入したかの傾向を知りたい
• 注意
• ある商品を購入した人が一人ならBはその人の閲覧履歴が分か
ってしまう
• MPCの範疇外 ; これは差分プライバシーで守る範囲
• 日本の個人情報保護法は「匿名加工情報を個人が特定できる
別の情報に結びつけることを禁止」PPinDA p.155
具体例
3/ 22
• semi-honest model
• パーティのそれぞれは定められたプロトコルにきちんと従う
• 自分が取得した情報から最大限、他人の情報を取ろうとする
• malicious model
• なんでもあり
• プロトコルの途中で嘘をついたり途中で止めたりする
• semi-honestをmalicious対応させる一般的な手法がある
• 結託
• 3人以上のMPCでは複数人が互いの情報を共有し、残りの人の
情報を得ようとすることもある
MPCの攻撃者のモデル
4/ 22
• 正当性
• 正しく𝑓を計算すること
• 秘匿性
• 𝑓以外の情報が漏れないこと
• 情報が漏れていないとは
• Aが𝑓(𝑥, 𝑦)を得るときにBとやりとりしたとき
• Bの値𝑦を知らないシミュレータとAがやりとりしたとき
• この二つをAが区別できないとき情報が漏れていないという
• 区別できない
• 情報理論的識別不可能性
• 計算量的識別不可能性
正当性と秘匿性
5/ 22
• 差分プライバシー
• 背景知識と取得した結果から秘密の情報を推測させない
• 攻撃者が不正なことをすることは仮定しない
• 秘密計算
• 結果以外の情報を与えない
• 攻撃者が不正なことをすると仮定する(こともある)
差分プライバシーと秘密計算
6/ 22
• 公開鍵暗号の定式化
• セキュリティパラメータ𝑘 : 平文の空間が2 𝑘
• 鍵生成アルゴリズム
• 𝐺𝑒𝑛 1 𝑘 → 𝑝𝑘, 𝑠𝑘
• 𝑘を決めると公開鍵𝑝𝑘と秘密鍵𝑠𝑘のペアを生成する
• 暗号化アルゴリズム
• 𝐸𝑛𝑐 𝑥, 𝑝𝑘 → 𝑐
• 平文𝑥と公開鍵𝑝𝑘により暗号文𝑐を生成する
• 復号アルゴリズム
• 𝐷𝑒𝑐 𝑐, 𝑠𝑘 → 𝑥
• 暗号文𝑐と秘密鍵𝑠𝑘から平文𝑥を生成する
• 正当性
• 𝐷𝑒𝑐 𝐸𝑛𝑐 𝑥, 𝑝𝑘 , 𝑠𝑘 = 𝑥
11章秘密鍵暗号と公開鍵暗号
7/ 22
• 二つの平文𝑥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
• 選択平文攻撃(CPA : Chosen Plaintext Attack)
• 攻撃者が暗号文を受けとる前後に、攻撃者が任意に選んだ平
文に対する暗号文を取得可能な状態を想定
• 選択暗号文攻撃(CCA : Chosen Ciphertext Attack)
• 攻撃者が暗号文𝑐を受け取る前に、攻撃者が任意に選んだ𝑐以
外の暗号文に対する平文を取得可能な状態を想定
• 適応的選択暗号文攻撃(CCA2)
• CCAと「暗号文𝑐を受け取る前後に」が違う
攻撃者のモデル
9/ 22
• IND-CPA
• CPAに対してINDである(区別できない)
• 公開鍵暗号はだれでも任意の平文の暗号文を作れるのでこれ
は必須
• (注意)教科書的RSAはIND-CPAではない
• IND-CCAならIND-CPAがいえる
• IND-CCA, IND-CCA2
• IND-CCA2が理想
• IND-CCA2なら暗号文の改竄ができないことが知られている
• 𝐸𝑛𝑐(1万円)を𝐸𝑛𝑐(10万円)に変えられない(頑強性)
• 詳細は『クラウドを支えるこれからの暗号技術』参照
公開鍵暗号の安全性
10/ 22
• 加法準同型暗号
• 𝐷𝑒𝑐 𝐸𝑛𝑐 𝑥1 ⊕ 𝐸𝑛𝑐 𝑥2 = 𝑥1 + 𝑥2
• 乗法準同型暗号
• 𝐷𝑒𝑐 𝐸𝑛𝑐 𝑥1 ⊗ 𝐸𝑛𝑐 𝑥2 = 𝑥1 𝑥2
• 完全準同型暗号
• 加法+乗法
• 安全性
• 𝐸𝑛𝑐(𝑥)から𝐸𝑛𝑐(2𝑥)または𝐸𝑛𝑐(𝑥2
)を作れる
• 頑強性を持たない
12章 準同型暗号による秘密計算
11/ 22
• 𝑛人の𝑖番目の人の心筋梗塞𝑥𝑖と喫煙習慣𝑦𝑖の情報
• 医療保険会社A : 𝑥𝑖 ∈ 0,1 (𝑖 = 1, … , 𝑛)
• 物販会社B : {𝑦𝑖 ∈ 0,1 }
• 互いに𝑥𝑖, 𝑦𝑖を送らずに分割表を作りたい
• A ; 𝑛1, 𝑛2を自分で計算可能
• B ; 𝑛 𝐴, 𝑛 𝑎を自分で計算可能
• これらの情報を互いに送信
• 𝑛1𝐴 = ∑𝑥𝑖 𝑦𝑖を計算できれば分割表を求められる
分割表計算の2-party秘密計算
喫煙習慣あり 喫煙習慣なし 合計
心筋梗塞あり 𝑛1𝐴 𝑛1𝑎 𝑛1
心筋梗塞なし 𝑛2𝐴 𝑛2𝑎 𝑛2
𝑛 𝐴 𝑛 𝑎 𝑛
12/ 22
• Aが{𝑥𝑖},Bが{𝑦𝑖}を保持するとき秘密計算プロトコルを
してAは𝑛1𝐴 = ∑𝑥𝑖 𝑦𝑖を得るがBは何も得られない
• 𝐸𝑛𝑐 ∑𝑥𝑖 𝑦𝑖 = ∑𝐸𝑛𝑐 𝑥𝑖 𝑦𝑖 = ∑𝑦𝑖 𝐸𝑛𝑐(𝑥𝑖)
• この計算をBが行う
• 2-partyプロトコル
• AはBに公開鍵𝑝𝑘を送信
• Aは𝑐𝑖 = 𝐸𝑛𝑐(𝑥𝑖)をBに送信
• Bは𝑐 = ∑𝑦𝑖 𝑐𝑖 ⊕ 𝐸𝑛𝑐(0)をAに送信
• Aは𝐷𝑒𝑐 𝑐 = ∑𝑥𝑖 𝑦𝑖を取得
• 注意
• 𝐸𝑛𝑐(0)を足すのはランダム化のため
• Aが𝑥 = (0, … , 1, … 0) ; 𝑖番目のみ1を送ると𝑦𝑖が分かってしまう
分割表の秘密計算
13/ 22
• A, Bが第三者Cに計算してもらう場合
• 𝐸𝑛𝑐 𝑛1𝐴 = 𝐸𝑛𝑐 ∑𝑥𝑖 𝑦𝑖 = ∑𝐸𝑛𝑐(𝑥𝑖) ⊗ 𝐸𝑛𝑐(𝑦𝑖)
• Aが𝐸𝑛𝑐(𝑥𝑖)を, Bが𝐸𝑛𝑐(𝑦𝑖)をCに送信して和を計算してもらい
Aに戻してもらう
• Aは復号して𝑛1𝐴を得る
• 注意
• Aは𝐸𝑛𝑐(𝑦𝑖)を復号できるのでBがCに送るときはAに見えない
ようにしないといけない
依頼計算型の分割表計算
14/ 22
• 事前条件
• Aliceは𝑥1, … , 𝑥 𝑛を持っている
• Bobは𝑖 = 1, … , 𝑛のどれか𝑖0を選ぶ
• OTの後
• AliceはBobが選んだ数字は分からない
• Bobは𝑥𝑖0
を得るがそれ以外の𝑥𝑖(𝑖 ≠ 𝑖0)の情報は得られない
紛失通信OT(Oblivious Transfer)
Alice
𝑥1, … , 𝑥 𝑛
Bob
𝑥𝑖0
𝑖0を選択
15/ 22
• 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
• 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
• 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
• boolean回路の秘密計算を行う
• AliceとBobが秘密の入力を持つ
• 互いに共有せずに論理回路Cの評価結果を得る
• ANDの例
• Alice, Bobの入力が𝑥 𝐴, 𝑥 𝐵 ∈ {0,1}
• Aliceが秘匿回路を作成
• Bobが計算をして𝑦 = 𝑥 𝐴&𝑥 𝐵を得る
• 𝑥 𝐵 = 1なら𝑥 𝐴が分かるがそれは秘匿計算の範囲外
秘匿回路
19/ 22
• 秘密鍵暗号と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
• 素因数分解の困難性ベースの加法準同型暗号
• 鍵生成
• 𝑝, 𝑞 : 同じビットサイズのランダムな素数
• 𝑛 = 𝑝𝑞, 𝜆 = (𝑝 − 1)(𝑞 − 1), 𝑔 = 1 + 𝑛
• 秘密鍵は𝜆, 公開鍵は𝑛と𝑔
• 暗号化
• 𝐸𝑛𝑐 𝑚 = 𝑔 𝑚 𝑟 𝑛 mod 𝑛2
• 𝑟は𝑝でも𝑞でも割れない乱数
• 復号
• 𝐷𝑒𝑐 𝑐 = 𝐿(𝑐 𝜆 mod 𝑛2)/𝜆 mod 𝑛
• 𝐿 𝑥 = (𝑥 − 1)/𝑛 mod 𝑛
Pailler暗号
21/ 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

『データ解析におけるプライバシー保護』勉強会 秘密計算

  • 1.
  • 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
  • 6.
    • 差分プライバシー • 背景知識と取得した結果から秘密の情報を推測させない •攻撃者が不正なことをすることは仮定しない • 秘密計算 • 結果以外の情報を与えない • 攻撃者が不正なことをすると仮定する(こともある) 差分プライバシーと秘密計算 6/ 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 2OT • 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
  • 19.
    • boolean回路の秘密計算を行う • AliceとBobが秘密の入力を持つ •互いに共有せずに論理回路Cの評価結果を得る • ANDの例 • Alice, Bobの入力が𝑥 𝐴, 𝑥 𝐵 ∈ {0,1} • Aliceが秘匿回路を作成 • Bobが計算をして𝑦 = 𝑥 𝐴&𝑥 𝐵を得る • 𝑥 𝐵 = 1なら𝑥 𝐴が分かるがそれは秘匿計算の範囲外 秘匿回路 19/ 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