More Related Content
Similar to ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
Similar to ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用 (20)
More from MITSUNARI Shigeo
More from MITSUNARI Shigeo (16)
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
- 3. • 秘密計算
• 複数人が自分の情報を隠しつつ
互いにやりとりをして𝑓(𝑚1, … )を求める
• 秘密分散
• Garbled circuit
• 準同型暗号(HE : Homomorphic Encryption)
• FHE(任意演算) ; 主に2者間
• 今回のテーマ
• FHEは重たいのでAHE(加法HE)で2者間秘密計算をやりたい
背景
𝑚1
𝑓(𝑚1,…)
𝐸𝑛𝑐(𝑚1)
𝐸𝑛𝑐(𝑓(𝑚1, 𝑚2))
𝑚1
𝑓(𝑚1, 𝑚2)
𝐸𝑛𝑐(𝑚1)
𝐸𝑛𝑐(𝑓(𝑚1, 𝑚2))
3 / 16
𝑚2
- 4. • 複雑な𝑓(𝑚)の計算はできない
• client(秘密鍵保持者)に手伝ってもらう
• 𝑓を加法、定数倍からなる複数の簡単な処理𝑓1, 𝑓2,…に分割
• インタラクションは増える
• 途中結果の秘匿化の必要性
• 𝑓𝑖(𝑚1, . . )をそのまま渡すと計算途中の値が漏れる
• 対応方法例 : 乱数𝑟を足して𝐸𝑛𝑐(𝑓𝑖(𝑚1, . . ) + 𝑟)をclientに渡す
AHEを使うときのよくある方法
𝐸𝑛𝑐(𝑚1)
𝐸𝑛𝑐(𝑓(𝑚1,. . ))
𝑚1
𝑓(𝑚1,. . )
𝐸𝑛𝑐(𝑚1)
𝐸𝑛𝑐(𝑓(𝑚1,. . ))
𝐸𝑛𝑐(𝑓1 𝑚1,.. )
𝐸𝑛𝑐(𝑓2(𝑚1,. . ))
...
4 / 16
- 5. • 乱数𝑟を足して𝐸𝑛𝑐(𝑚 + 𝑟)をclientに渡す
• lifted-ElGamal暗号
• 大きな乱数を足すと復号できない
• Paillier暗号
• 遅い、暗号文が大きい
途中結果の秘匿化の問題点
暗号化 復号 暗号文サイズ
ElGamal(256 bit) 14usec 40usec 1024bit
Paillier(2048 bit) 9000usec 8600usec 4096bit
5 / 16
- 6. • AHEベースの二者間プロトコル𝒫
• 𝑓(𝑥) ; 整数から整数への任意の一変数関数
• serverは𝐸𝑛𝑐(𝑚)から𝐸𝑛𝑐(𝑓 𝑚 )を得る(𝑚の値は知らない)
• 秘密鍵を持つclientは𝑚の情報をえられない
• clientはserverの手伝いをするだけ
• lifted-ElGamal型暗号に適用可能
提案プロトコル
input : 𝐸𝑛𝑐(𝑚)
𝑋
𝑌
output : 𝐸𝑛𝑐(𝑓(𝑚))
𝑋
𝑌
client
Step 1
Step 3
Step 2 server
6 / 16
- 7. • 𝑆 ; 𝑚のとり得る平文の集合, 𝑓: 𝑆 → ℤ
• server input : 𝐸𝑛𝑐 𝑚 , output : 𝑋 = Sℎuffle 𝛾𝑖 𝐸𝑛𝑐 𝑚 − 𝑖 𝑖∈𝑆
• 例 : 𝑆 = {−2,−1,0,1,2}, 𝑚 = 1とする(𝑚 : unknown)
Step 1 : serverによる𝐸𝑛𝑐 𝑚 の秘匿化
=
𝛾0 𝐸𝑛𝑐(𝑚 + 2) 𝛾1 𝐸𝑛𝑐(𝑚 + 1) 𝛾2 𝐸𝑛𝑐(𝑚 + 0) 𝛾3 𝐸𝑛𝑐(𝑚 − 1) 𝛾4 𝐸𝑛𝑐(𝑚 − 2)
𝐸𝑛𝑐(∗) 𝐸𝑛𝑐(∗) 𝐸𝑛𝑐(∗) 𝐸𝑛𝑐(0) 𝐸𝑛𝑐(∗)
=
=
=
=
𝐸𝑛𝑐(𝑚 + 2) 𝐸𝑛𝑐(𝑚 + 1) 𝐸𝑛𝑐(𝑚 + 0) 𝐸𝑛𝑐(𝑚 − 1) 𝐸𝑛𝑐(𝑚 − 2)
𝐸𝑛𝑐(𝑚) 1. 𝐸𝑛𝑐(𝑖)を引く for 𝑖 ∈ 𝑆
2. 乱数𝛾𝑖を掛ける for 𝑖 ∈ 𝑆
𝑚番目のみ0. それ以外乱数
serverはその場所を知らない
𝐸𝑛𝑐(∗) 𝐸𝑛𝑐(0) 𝐸𝑛𝑐(∗) 𝐸𝑛𝑐(∗) 𝐸𝑛𝑐(∗)
3. ランダムシャッフル
𝑋 =
7 / 16
- 8. • clientは𝑋 = Shuffle 𝛾𝑖 𝐸𝑛𝑐 𝑚 − 𝑖 𝑖∈𝑆を受信
• 𝑌 = Shuffle 𝐸𝑛𝑐 𝛿𝑖𝑚 𝑖∈𝑆を計算
• シャッフルされているため0の位置から
𝑚の情報は得られない
• clientはserverに𝑌 = Shuffle 𝐸𝑛𝑐 𝛿𝑖𝑚 𝑖∈𝑆を返す
Step 2 : clientによる再暗号化
𝐸𝑛𝑐(0) 𝐸𝑛𝑐(1) 𝐸𝑛𝑐(0) 𝐸𝑛𝑐(0) 𝐸𝑛𝑐(0)
𝐸𝑛𝑐(∗) 𝐸𝑛𝑐(0) 𝐸𝑛𝑐(∗) 𝐸𝑛𝑐(∗) 𝐸𝑛𝑐(∗)
∗ 0 ∗ ∗ ∗
復号して0なら𝐸𝑛𝑐 1
それ以外は𝐸𝑛𝑐(0)を生成
8 / 16
- 9. • input : 𝑌 = Shuffle 𝐸𝑛𝑐 𝛿𝑖𝑚 𝑖∈𝑆
• serverは 𝐸𝑛𝑐 𝛿𝑖𝑚 𝑖∈𝑆を得る
• σ𝑖∈𝑆 𝑓 𝑖 𝐸𝑛𝑐 𝛿𝑖𝑚 = 𝑓 𝑚 𝐸𝑛𝑐 1 = 𝐸𝑛𝑐(𝑓 𝑚 )を算出
Step 3 : serverによる𝐸𝑛𝑐(𝑓 𝑚 )の計算
𝐸𝑛𝑐(0) 𝐸𝑛𝑐(1) 𝐸𝑛𝑐(0) 𝐸𝑛𝑐(0) 𝐸𝑛𝑐(0)
𝐸𝑛𝑐(0) 𝐸𝑛𝑐(0) 𝐸𝑛𝑐(0) 𝐸𝑛𝑐(1) 𝐸𝑛𝑐(0)
serverはシャッフルを
元に戻す
9 / 16
- 10. • プロトコルの特徴
• 𝑓は毎回変更可能(𝑓𝑚2
(𝑚1) ≔ 𝑓 𝑚1, 𝑚2 を扱える)
• clientの復号処理は暗号文が𝐸𝑛𝑐(0)か否か確認できればよい
• 復号可能な空間が制限されたlifted-ElGamal暗号に適用可能
• 効率は平文のとりえる集合𝑆の大きさに比例
• 暗号方式の切り換え
• clientの𝐸𝑛𝑐(𝛿𝑖𝑚)を作る代わりに別のAHEを用いてもよい
• 𝐸𝑛𝑐(𝑚)から𝐸𝑛𝑐′(𝑓 𝑚 )への変換
• leveled-HE暗号における"対話型bootstrap"
• 乗算後の暗号文を乗算前の暗号文に変換
• 加法準同型-属性ベース暗号(ABE)の構成
• maliciousモデル
プロトコルの拡張(1/2)
10 / 16
- 11. • 特殊な2変数関数への対応
• max 𝑥, 𝑦 , min 𝑥, 𝑦 , equal 𝑥, 𝑦 , lessThan(𝑥, 𝑦)など
• max 𝑥, 𝑦 = max 𝑥 − 𝑦, 0 + 𝑦 =: max
0
(𝑥 − 𝑦) + 𝑦とすると
𝐸𝑛𝑐 𝑥 − 𝐸𝑛𝑐 𝑦 = 𝐸𝑛𝑐(𝑥 − 𝑦)に関する
1変数関数max
0
(⋅)として適用可能
• 汎用2変数関数𝑓(𝑥, 𝑦)
• 2個の暗号文𝐸𝑛𝑐 𝑥 , 𝐸𝑛𝑐(𝑦)に対して
• 𝑥, 𝑦 ∈ 𝑆のとき𝑡 ≔ 𝑥 𝑆 + 𝑦で 𝑥, 𝑦 ↔ 𝑡の1対1の対応を作り
• 𝐹 𝑡 ≔ 𝑓(𝑥, 𝑦)
• 𝐸𝑛𝑐 𝑥 𝑆 + 𝐸𝑛𝑐 𝑦 = 𝐸𝑛𝑐 𝑥 𝑆 + 𝑦
• とすることで可能(ただし空間が𝑆 × 𝑆になる)
• 2LHE暗号ベースで𝐸𝑛𝑐 𝑥 , 𝐸𝑛𝑐(𝑦)から 𝐸𝑛𝑐 𝛿 𝑥𝑖 ,{𝐸𝑛𝑐 𝛿 𝑦𝑗 }を
求めてσ𝑖,𝑗 𝑓 𝑖, 𝑗 𝐸𝑛𝑐 𝛿 𝑥𝑖 𝐸𝑛𝑐 𝛿 𝑦𝑗 = 𝐸𝑛𝑐(𝑓 𝑥, 𝑦 )を算出
プロトコルの拡張(2/2)
11 / 16
- 12. • 編集距離
• 2個の文字列X, Yの近さdist(X, Y)を表す
• Xに1文字の挿入/削除/置換操作を何回か繰り返してYにする
• その最小ステップ数がdist(X, Y)
• dist("abcd", "abcd") = 0
• dist("abcd", "abXd") = 1
• dist("abcd", "bcda") = 2
• 応用例
• DNAの配列の類似性などのゲノム解析の基本ツール
文字列の編集距離
12 / 16
- 13. • 動的計画法(DP)によるO(|X||Y|)アルゴリズム
• 𝑋 = 𝑥1 𝑥2 … 𝑥 𝐿, 𝑌 = 𝑦1 𝑦2 … 𝑦 𝐿
• 𝑒 𝑥𝑖, 𝑦𝑗 = 1 − 𝑒𝑞𝑢𝑎𝑙 𝑥𝑖, 𝑦𝑗 = 0 𝑖𝑓 𝑥𝑖 = 𝑦𝑗 otherwise 1
• 予稿集p.6の𝑒(𝑥𝑖, 𝑦𝑗)は間違い
• 𝐷0,𝑖 = 𝐷𝑖,0 = 𝑖
• 𝐷𝑖𝑗 = min{𝐷𝑖−1,𝑗 + 1, 𝐷𝑖,𝑗−1 + 1, 𝐷𝑖−1,𝑗−1 + 𝑒 𝑥𝑖, 𝑦𝑗 }
編集距離の計算方法
X a b c d
Y 0 1 2 3 4
b 1 1 2 3 4
c 2 1 2 3 4
d 3 2 1 2 3
f 4 3 2 1 2
X="abcd"
Y="bcdf"
右下の値
=dist(X, Y)
13 / 16
𝐷𝑖−1,𝑗
𝐷𝑖,𝑗−1𝐷𝑖−1,𝑗−1
𝐷𝑖,𝑗
表の値を左上から
順に算出
- 14. • Aliceが文字列X, Bobが文字列Yを持っているときに
互いに文字列を見せずにdist(X, Y)を計算する
• 動的計画法(DP)の計算𝐷𝑖𝑗 = min(𝑈𝑖−1, 𝐿𝑖−1, 𝐷𝑖−1)に適用
• 実装概要
• AHEはsecp256k1上のLifted-ElGamal暗号
• テーブル𝐷𝑖,𝑗の計算に必要なmin(𝑥, 𝑦)関数について
𝑥 − 𝑦 ∈ 𝑆 ≔ {−2,−1,0,1}という性質を利用(|X|, |Y|に非依存)
• 効率は𝑂( 𝐿 2
)
• https://github.com/herumi/edit-dist/
(厳密な)編集距離の秘匿計算
秘密鍵を保持
𝑋を持ってる
𝐸𝑛𝑐(𝑋)
𝑌を持ってる
Enc-DP
...
𝑑𝑖𝑠𝑡(𝑋, 𝑌) ← 𝐸𝑛𝑐(𝑑𝑖𝑠𝑡(𝑋, 𝑌))
14 / 16
- 15. • 文字列の長さ𝐿を変えたときの処理時間(sec)
• FHEベース(non-bootstrap) 682並列実行の一つ当たり
• J.H.Cheon, M.Kim, K.E.Lauter. Homomorphic computation of edit distance. In
Financial Cryptography and Data Security 2015
• 混合(Paillier + 秘密分散 + garbled circuit) with 1Gbps-LAN
• K.Cheng,Y.Hou,L.Wang. Secure similar sequence query on outsourced genomic
data. AsiaCCS 2018
• 秘密分散(SS)ベース : 表の()内数値は事前計算の処理時間(sec)
• 大畑, 縫田 Communication-efficient (client-aided) secure two-party protocols and its
application. In Proc. of Financial Cryptography and Data Security 2020, to appear.
• Ours : WANでの実測値(MacBook Pro --- Core i7 desktop PC)
既存手法との比較(条件が異なるので参考値)
8 50 128 256 512 1024
FHE 27.5 N/A N/A N/A N/A
混合 <29 740 N/A N/A N/A N/A
SS 41.8(+33.4) 84.9(+135) 174.5(+534) 367.0(+2262)
Ours 0.35 8.7 24.4 58.4 203.4
15 / 16
- 16. • lifted-ElGamal型暗号方式に適用可能な
𝐸𝑛𝑐(𝑚)から𝑓(𝐸𝑛𝑐 𝑚 )への2者間プロトコルの提案
• プロトコルの拡張
• maliciousモデル対応
• 暗号方式の変換
• レベル準同型で暗号文レベルの低減(対話型bootstrap)
• 加法準同型-属性ベース暗号の構成
• 文字列の編集距離計算の文字列秘匿化と実装実験
• 謝辞
• 総務省SCOPE(受付番号182103105)の委託
• JST CREST(課題番号JPMJCR19F6)の援助
• 科研費(課題番号19H01109)の援助
• Intel株式会社堀越将司氏による2nd-Xeon SP評価環境の協力
まとめ
16 / 16