More Related Content
Similar to Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Similar to Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化 (20)
More from MITSUNARI Shigeo
More from MITSUNARI Shigeo (13)
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
- 2. • 背景
• 準同型暗号を用いた二者間秘密計算
• SCIS2020の提案手法
• maliciousモデルでのプロトコル
• 提案プロトコル
• maliciousモデルでのプロトコルの改善
• 既存手法との比較
• 2ラウンド→1ラウンド, 通信量サイズ1/40~1/130
2 / 19
概要
- 3. • 秘密計算
• 複数人が自分の情報を隠しつつ
互いにやりとりをして𝑓(𝑚1, … )を求める
• 秘密分散
• Garbled circuit
• 準同型暗号(HE : Homomorphic Encryption)
• FHE(任意演算) ; 主に二者間
• SCIS2020のテーマ
• FHEは重たいのでAHE(加法HE)で二者間秘密計算をやりたい
3 / 19
背景
𝑚1
𝑓(𝑚1, … )
𝐸𝑛𝑐(𝑚1)
𝐸𝑛𝑐(𝑓(𝑚1, 𝑚2))
𝑚1
𝑓(𝑚1, 𝑚2)
𝐸𝑛𝑐(𝑚1)
𝐸𝑛𝑐(𝑓(𝑚1, 𝑚2))
𝑚2
client
server
- 4. • 複雑な𝑓(𝑚)の計算はAHEではできない
• client(秘密鍵保持者)に手伝ってもらう
• 𝑓を加法、定数倍からなる複数の簡単な処理𝑓1, 𝑓2, …に分割
• インタラクションは増える
• 途中結果の秘匿化の必要性
• 𝑓𝑖(𝑚1, . . )をそのまま渡すと計算途中の値が漏れる
• その値を隠して計算するプロトコル
4 / 19
複雑な関数評価の分割
𝐸𝑛𝑐(𝑚1)
𝐸𝑛𝑐(𝑓(𝑚1, . . ))
𝑚1
𝑓(𝑚1, . . )
𝐸𝑛𝑐(𝑚1)
𝐸𝑛𝑐(𝑓(𝑚1, . . ))
𝐸𝑛𝑐(𝑓1 𝑚1, . . )
𝐸𝑛𝑐(𝑓2(𝑚1, . . ))
...
- 5. • AHEベースの二者間プロトコル𝒫
• 𝑓(𝑥) ; 整数から整数への任意の一変数関数
• serverは𝐸𝑛𝑐(𝑚)から𝐸𝑛𝑐′(𝑓 𝑚 )を得る(𝑚の値は知らない)
• 𝐸𝑛𝑐′の秘密鍵はserver/client共に知らなくてもよい
• 秘密鍵を持つclientは𝑚の情報を得られない
• clientはserverの手伝いをするだけ
• lifted-ElGamal型暗号に適用可能
• 文字列の編集距離の秘匿化に適用
5 / 19
SCIS2020の提案プロトコル(1/2)
input : 𝐸𝑛𝑐(𝑚)
𝑋
𝑌
output : 𝐸𝑛𝑐′(𝑓(𝑚))
𝑋
𝑌
client
Step 1
Step 3
Step 2 server
- 6. • 記号
• 𝑆 : 𝑚のとり得る平文の区間集合, 𝑓: 𝑆 → ℤ
• 𝐸𝑛𝑐, 𝐸𝑛𝑐′ : 加法準同型暗号(Clientは𝐸𝑛𝑐の秘密鍵を持つ)
• Server
• input : 𝐸𝑛𝑐 𝑚
• output : 𝑥𝑖 ≔ 𝛾𝑖𝐸𝑛𝑐(𝑚 − 𝑖), 𝛾𝑖 ՚
𝑅
𝔽𝑝, 𝑋 ≔ {𝑋𝑖} =Shuffle 𝑥𝑖 𝑖∈𝑆
• 𝑋𝑎 = 𝐸𝑛𝑐 0 , 𝑥𝑖 = 𝐸𝑛𝑐(random value) for 𝑖 ≠ 𝑎(𝑚のShuffle先)
• Client
• input : 𝑋 = {𝑋𝑖}は一つだけ0の暗号文, 残りは乱数の暗号文
• output : 𝐷𝑒𝑐 𝑋𝑖 = 0なら𝑌𝑖 = 𝐸𝑛𝑐′(1), その他𝑌𝑖 = 𝐸𝑛𝑐′(0)
• 𝑌 = 𝑌𝑖 = 𝐸𝑛𝑐′ 𝛿𝑖𝑎 𝑖∈𝑆, 𝛿𝑖𝑗 : クロネッカーのデルタ
• Server : Shuffleを戻してσ𝑖 𝑓 𝑖 𝐸𝑛𝑐′
𝛿𝑖𝑚 = 𝐸𝑛𝑐′
(𝑓(𝑚))
6 / 19
SCIS2020の提案プロトコル(2/2)
- 7. • Serverは秘密鍵を持っていないので𝐸𝑛𝑐が安全である
限り平文の情報は得られないとする
• 悪さをするのはclient
• プロトコルに正しくしたがって𝑌を構成しているか?
• SCIS2020でのmaliciousモデルでのプロトコル概要
• 𝜇 : 組み合わせのパラメータ
• serverは各暗号文𝑌𝑖の代わりにダミーを含む暗号文𝜇個を送る
• clientはプロトコルにしたがって値を返す
• serverは検証用の暗号文を生成しclientに送る
• serverはclientからの値を検証し、OKなら継続する
• 欠点
• 2ラウンドプロトコル
• 通信暗号文の個数がsemi-honest時の𝜇(≥ 66)倍になる 7 / 19
maliciousモデル
- 8. • 特長
• 1ラウンドプロトコル
• server→clientはsemi-honest版と同じ
• client→serverは1個の暗号文に1個のZKP
• Lifted-ElGamal暗号なら+5|𝐺|程度
• やりたいことの確認
• clientがやっていること : serverから送られてきた𝑋に対して
• 𝑋 =
𝐸𝑛𝑐 0 ; 𝑖 = 𝑎
𝐸𝑛𝑐 ∗ ; 𝑖 ≠ 𝑎
→ 𝑌 =
𝐸𝑛𝑐′
1 ; 𝑖 = 𝑎
𝐸𝑛𝑐′
0 ; 𝑖 ≠ 𝑎
を生成
• serverは「clientが𝑋から正しく𝑌を作っていることを」を
𝐸𝑛𝑐, 𝐸𝑛𝑐′の中身を知らずに検証したい
• 未知のある𝑎に対して𝐷𝑒𝑐 𝑋𝑎 = 0かつ𝐷𝑒𝑐′ 𝑌𝑎 = 1
• 𝑖 ≠ 𝑎なら𝐷𝑒𝑐 𝑋 ≠ 0かつ𝐷𝑒𝑐′ 𝑌 = 0 8 / 19
提案手法
- 9. • 𝐸𝑛𝑐, 𝐸𝑛𝑐′に対して
• 暗号文を復号すると0であることのZKP
• 暗号文を復号すると0か1であることのZKP
• Claim 1. 暗号文𝑋𝑖は高々一つの𝑎 ∈ 𝑆について
𝐷𝑒𝑐 𝑋𝑎 = 0かつそれ以外の𝑖 ≠ 𝑎について𝐷𝑒𝑐 𝑋𝑖 ≠ 0
• 何故なら𝑋はserverが暗号文𝑐を元に𝛾𝑖(𝑐 − 𝐸𝑛𝑐 𝑖 )と生成
• 𝐷𝑒𝑐 𝑐 ∈ 𝑆なので一つだけ0
• 𝐷𝑒𝑐 𝑐 ∉ 𝑆なら(入力暗号文が不正)全て0でない
9 / 19
キーアイデア(1/2)
- 10. • clientは𝐷𝑒𝑐 𝑋𝑖 = 0となる𝑖が一つ存在することを確認
• clientは次のことをZKPを用いて示す
• (A) 𝐷𝑒𝑐′ 𝑌𝑖 ∈ {0,1}
• (B) σ𝑖 𝐷𝑒𝑐′ 𝑌𝑖 = 1
• (C) 𝐷𝑒𝑐 𝑋𝑖 = 0または𝐷𝑒𝑐′ 𝑌𝑖 = 0
• Claim 2. これが満たされれば正しい挙動をしている
• 何故なら(A), (B)より{𝐷𝑒𝑐′ 𝑌𝑖 }は一つだけ1で残りは0
• 𝐷𝑒𝑐′ 𝑌𝑖 = 1となる𝑖を𝑎とする(𝐷𝑒𝑐′ 𝑌𝑖 = 0 for 𝑖 ≠ 𝑎)
• よって(C)を満たすには𝐷𝑒𝑐 𝑋𝑎 = 0でなければならない
• 𝐷𝑒𝑐 𝑋𝑎 = 0かつ𝐷𝑒𝑐′ 𝑌𝑎 = 1
• 𝐷𝑒𝑐 𝑋𝑖 = 0となる𝑖 = 𝑎が存在したのでClaim 1より
𝑖 ≠ 𝑎なら𝐷𝑒𝑐 𝑋𝑖 ≠ 0かつ𝐷𝑒𝑐′ 𝑌𝑖 = 0
10 / 19
キーアイデア(2/2)
- 11. • 示すべきこと(再掲)
• (A) 𝐷𝑒𝑐′ 𝑌𝑖 ∈ {0,1}
• (B) σ𝑖 𝐷𝑒𝑐′ 𝑌𝑖 = 1
• (C) 𝐷𝑒𝑐 𝑋𝑖 = 0または𝐷𝑒𝑐′
𝑌𝑖 = 0
• 同値な命題
• (A+C). 𝐷𝑒𝑐′
𝑌𝑖 = 0または「𝐷𝑒𝑐′
𝑌𝑖 = 1かつ𝐷𝑒𝑐 𝑋𝑖 = 0」
と(B)
• ここまでは一般の(AHEな)𝐷𝑒𝑐, 𝐷𝑒𝑐′に適用可能
• 提案方式のその他の特長
• clientの復号が暗号文が0か否かのみ分かればよい
• 従来方法は小さな平文を復号する必要あり
11 / 19
若干の効率化
- 12. • Lifted-ElGamal暗号
• 𝐺 = 𝑃0 , 位数𝑝のDDH困難な加法巡回群
• 𝐷𝐿𝑃𝑃0
𝑎𝑃0 ≔ 𝑎
• 鍵生成
• 秘密鍵𝑠 ∈ 𝔽𝑝 : 乱数, 𝑃1 ≔ 𝑠𝑃0 : 公開鍵
• 平文𝑚の暗号化
• 𝐸𝑛𝑐 𝑚; 𝑟 ≔ (𝑚𝑃0 + 𝑟𝑃1, 𝑟𝑃0) : 𝑟は乱数
• 暗号文𝑐 ≔ (𝐴0, 𝐴1)の復号
• 𝑑𝑒𝑐 𝑠, 𝑐 ≔ 𝐴0 − 𝑠𝐴1, 𝐷𝑒𝑐 𝑠, 𝑐 ≔ 𝐷𝐿𝑃𝑃0
(𝑑𝑒𝑐 𝑠, 𝑐 )
• 𝑚 ∈ 𝑆ならDLP可能とする
• 正当性 : 𝑑𝑒𝑐 𝑠, 𝐸𝑛𝑐 𝑚; 𝑟 = 𝑚𝑃0 + 𝑟𝑃1 − 𝑠 𝑟𝑃0 = 𝑚𝑃0
12 / 19
Lifted-ElGamal暗号特有の話
- 13. • 二つの状況
• 与えられた暗号文𝑐に対して秘密鍵をもつclientが𝐷𝑒𝑐 𝑐 = 0を
確認し、それを示すZKPを作ること
• 与えられた公開鍵に対して作った暗号文𝑐が𝐷𝑒𝑐′ 𝑐 = 0である
ことを示すZKPを作ること
• 𝑐 = (𝐴0, 𝐴1)が𝐷𝑒𝑐 𝑐 = 0 ⇔ 𝑑𝑒𝑐 𝑐 = 𝐴0 − 𝑠𝐴1 = 0
• 定義 : 𝑃 ≔ (𝑃0, 𝑃1), 𝐴 ≔ (𝐴0, 𝐴1)が𝑎-DH-tupleである
とは𝐴 = 𝑎𝑃となる𝑎が存在するとき
• DH-tupleを示すZKPの構成はよく知られている(後述)
• 秘密鍵𝑠をもつclientにとって
• 𝐷𝑒𝑐 𝑐 = 0 ⇔ (𝑃0, 𝐴1), (𝑃1, 𝐴0)は𝑠-DH-tuple
• 公開鍵(𝑃0
′
, 𝑃1′ = 𝑠′𝑃0
′
)をもつclientにとって
𝑐′ ≔ 𝐴0
′
, 𝐴1
′
≔ 𝐸𝑛𝑐 0; 𝑟 = (𝑟𝑃1
′
, 𝑟𝑃0
′
)とすると
(𝑃1
′
, 𝑃0
′
), 𝐴0
′
, 𝐴1
′
は𝑟-DH-tuple
13 / 19
𝐷𝑒𝑐 𝑐 = 0と𝐷𝑒𝑐′
𝑐′ = 0のZKP
- 14. • 𝐸𝑛𝑐, 𝐸𝑛𝑐′に256ビットLifted-ElGamal暗号を用いた場合
• 暗号文1個 = 𝐺の元2個
• 𝜇~66(攻撃確率≤
2𝜇
𝜇
−1
~2−128)
• ZKP = 𝔽𝑝の元5個(詳細はスライドの最後)
• 𝐺 ~ 𝔽𝑝 ~256とし, 𝑥, 𝑦 ∈ 𝐺は𝑦座標を1bitエンコードで無視
14 / 19
通信量の評価
方式 server→client client→server ラウンド数
semi-honest 2 𝐺 |𝑆| 2 𝐺 |𝑆| 1
従来方式 266 𝐺 |𝑆| 266 𝐺 |𝑆| 2
提案方式 2 𝐺 |𝑆| 7 𝐺 |𝑆| 1
- 15. • 非対称ペアリングベースの乗算1回, 加算任意回可能な
2LHE(AHM+ AsiaCCS2018)
• 𝐸𝑛𝑐を(乗算後の)2L暗号文, 𝐸𝑛𝑐′を乗算前の1L暗号文とすると
暗号文変換ができる
• 𝐸𝑛𝑐 𝑚 → 𝐸𝑛𝑐′(𝑓 𝑚 )
• 以下、2LHEの紹介と2L暗号文𝑐の𝐷𝑒𝑐 𝑐 = 0となる
Σプロトコルの構成法を紹介する
15 / 19
2LHEへの応用
- 16. • 𝐺 = ⟨𝑃⟩ : 素数位数𝑝の加法巡回群
• AsiaCCS2018の論文では非対称ペアリングの値域の群𝐺𝑇
• 鍵生成
• 秘密鍵 : 𝑠1, 𝑠2 ∈ 𝔽𝑝
• 公開鍵 : 𝑃, 𝑃1, 𝑃2, 𝑃3 ≔ (𝑃, 𝑠1𝑃, 𝑠2𝑃, 𝑠1𝑠2𝑃)
• 記号 : 𝐹(𝐴1,𝐴2,𝐴3) 𝑎1, 𝑎2, 𝑎3 ≔ 𝑎2𝐴1 + 𝑎1𝐴2 − 𝑎3𝐴3
• 平文𝑚 ∈ 𝔽𝑝の暗号化
• 𝐸𝑛𝑐 𝑠1, 𝑠2 , 𝑚 ≔ (𝑚𝑃 + 𝐹 𝑃1,𝑃2,𝑃3
𝑟1, 𝑟2, 𝑟3 , 𝑟1𝑃, 𝑟2𝑃, 𝑟3𝑃)
• 𝑟1, 𝑟2, 𝑟3 ∈ 𝔽𝑝 : ランダム
• 暗号文𝑐 ≔ (𝐴0, 𝐴1, 𝐴2, 𝐴3)の復号
• 𝑑𝑒𝑐 𝑐 ≔ 𝐴0 − 𝐹 𝐴1,𝐴2,𝐴3
(𝑠1, 𝑠2, 𝑠1𝑠2), 𝐷𝑒𝑐 𝑐 ≔ 𝐷𝐿𝑃𝑃(𝑑𝑒𝑐 𝑐 )
16 / 19
AHM+の2L暗号文
- 17. • 𝑐 ≔ (𝐴0, 𝐴1, 𝐴2, 𝐴3)に対して
• 𝐷𝑒𝑐 𝑐 = 0 ⇔ 𝐴0 = 𝐹 𝐴1,𝐴2,𝐴3
(𝑠1, 𝑠2, 𝑠1𝑠2)
• Σプロトコル
• 証明者 : 𝑏1, 𝑏2, 𝑏3 ∈ 𝔽𝑝 : ランダム
• 𝐵𝑖 ≔ 𝑏𝑖𝑃(𝑖 = 1,2,3)と𝑋 ≔ 𝐹 𝐴1,𝐴2,𝐴3
(𝑏1, 𝑏2, 𝑏3)を検証者に送る
• 検証者 : ℎ ∈ 𝔽𝑝 : ランダムをとり証明者に送る
• 証明者 : 𝑑𝑖 ≔ 𝑏𝑖 + ℎ𝑠𝑖(𝑖 = 1,2), 𝑑3 ≔ 𝑏3 + ℎ𝑠1𝑠2を送る
• 検証者 : 𝑑𝑖𝑃 = 𝐵𝑖 + ℎ𝑃𝑖(𝑖 = 1,2,3)と
𝑋 = 𝐹(𝐴1,𝐴2,𝐴3)(𝑑1, 𝑑2, 𝑑3) − ℎ𝐴0の等号成立を確認する
• 詳細は予稿集参照
17 / 19
𝐷𝑒𝑐 𝑐 = 0のΣプロトコル
- 18. • 条件(A+C) :
𝐷𝑒𝑐′
𝑌𝑖 = 0または「𝐷𝑒𝑐′
𝑌𝑖 = 1かつ𝐷𝑒𝑐 𝑋𝑖 = 0」は
• 𝐷𝑒𝑐′=2LHEの2L暗号文
• 𝐷𝑒𝑐=lifted-ElGamal暗号文
• のとき9個の𝔽𝑝の元で構成できる
• よって全体で9 𝐺 𝑆 + 4の元で構成可能
18 / 19
非対話ZKP化
- 19. • 暗号文の関数評価を加法準同型暗号ベースの二者間秘
密計算で行うプロトコル
• 𝑓: 𝑆 → ℤ, 𝐸𝑛𝑐 𝑚 ↦ 𝐸𝑛𝑐′(𝑓 𝑚 )
• Lifted-ElGamal暗号/𝐺の場合
• semi-honestモデル : 1ラウンド, 通信量2 𝐺 |𝑆|
• maliciousモデル
• 従来方式(SCIS2020) : 2ラウンド, 通信量266 𝐺| 𝑆|
• 提案方式 : 1ラウンド, 通信量7 𝐺 |𝑆|
• 謝辞
• 本研究は総務省SCOPE(受付番号182103105)の委託と
JST CREST(課題番号JPMJCR19F6)の援助を受けている
19 / 19
まとめ
- 20. • 𝑃 ≔ 𝑃0, 𝑃1 , 𝐴 ≔ 𝐴0, 𝐴1 ∈ 𝐺2が𝑎-DHタプル(𝐴 = 𝑎𝑃)
• であることのΣプロトコル(𝑎の情報を隠す)
• 証明者𝒫 : 𝑏 ՚
𝑅
𝔽𝑝, 𝐵 ≔ 𝐵0, 𝐵1 ≔ 𝑏𝑃を検証者𝒱に渡す
• 𝒱 : ℎ ՚
𝑅
𝔽𝑝を𝒫に渡す
• 𝒫 : 𝑑 ≔ 𝑏 + ℎ𝑎を𝒱に渡す
• 𝒱 : 𝑑𝑃 = 𝐵 + ℎ𝐴を確認したら受理, そうでなければ拒否
• ランダムオラクル仮定の元での非対話ZKP
• 𝐻: 0,1 ∗
→ 𝔽𝑝 ; ハッシュ関数
• 𝒫 : 𝑏 ՚
𝑅
𝔽𝑝, 𝐵 ≔ 𝐵0, 𝐵1 ≔ 𝑏𝑃, ℎ ≔ 𝐻(𝑃, 𝐴, 𝐵), 𝑑 ≔ 𝑏 + ℎ𝑎
𝜋 ≔ (𝑑, ℎ)を𝒱に渡す
• 𝒱 : 𝐵 ≔ 𝑑𝑃 − ℎ𝐴を計算してℎ = 𝐻(𝑃, 𝐴, 𝐵)を確認したら受理
20 / 19
補足
- 21. • 𝐷𝑒𝑐′
𝑌𝑖 = 0または「𝐷𝑒𝑐′
𝑌𝑖 = 1かつ𝐷𝑒𝑐 𝑋𝑖 = 0」
• 与えられた𝑃 ≔ (𝑃0, 𝑃1), 𝐴 ≔ 𝐴0, 𝐴1 , 𝐴′ ≔ 𝐴 − (0, 𝑃0),
𝑃′′ ≔ (𝑃0
′′
, 𝑃1
′′
), 𝐴′′ ≔ (𝐴0
′′
, 𝐴1
′′
)に対して
• (A1)「𝐴 = 𝑠𝑃となる𝑠を知っている」
• (A2)「𝐴′ = 𝑠𝑃となる𝑠と𝐴′′ = 𝑠′′𝑃′′となる𝑠′′を知っている」
• 構成
• (A1)のとき𝑑′, ℎ′, 𝑑′′, 𝑏 ՚
𝑅
𝔽𝑝, 𝐵′ ≔ 𝑑′𝑃 − ℎ′𝐴′, 𝐵′′ ≔ 𝑑′′𝑃′′ −
ℎ′𝐴′′, 𝐵 ≔ 𝑏𝑃, ℎ ≔ 𝐻 𝑃, 𝐴, 𝐴′′, 𝐵, 𝐵′, 𝐵′′ ⊕ ℎ′, 𝑑 ≔ 𝑏 + ℎ𝑠
• (A2)のとき𝑑, ℎ, 𝑏′, 𝑏′′ ՚
𝑅
𝔽𝑝, 𝐵 ≔ 𝑑𝑃 − ℎ𝐴, 𝐵′ ≔ 𝑏′𝑃, 𝐵′′ ≔ 𝑏′′𝑃′
ℎ′ ≔ 𝐻 𝑃, 𝐴, 𝐴′′, 𝐵, 𝐵′, 𝐵′′ ⊕ ℎ, 𝑑′ ≔ 𝑏′ + ℎ′𝑠, 𝑑′′ ≔ 𝑏′′ + ℎ′𝑠′′
• 𝜋1 ≔ (𝑑, ℎ), 𝜋_2 ≔ (𝑑′, 𝑑′′, ℎ′), 𝜋 = (𝜋1, 𝜋2)を𝒱に送る
• 𝒱 : 与えられた(𝑃, 𝐴, 𝑃′′, 𝐴′′), 𝜋に対して𝐴′ ≔ 𝐴 − (0, 𝑃0),
𝐵 ≔ 𝑑𝑃 − ℎ𝐴, 𝐵′ ≔ 𝑑′𝑃 − ℎ′𝐴′, 𝐵′′ ≔ 𝑑′′𝑃′′ − ℎ′𝐴′′として
𝐻 𝑃, 𝐴, 𝐴′′, 𝐵, 𝐵′, 𝐵′′ = ℎ ⊕ ℎ′を検証する
21 / 19
𝐷𝑒𝑐 = 𝐷𝑒𝑐′
=lifted ElGamal暗号のときの