More Related Content
More from MITSUNARI Shigeo (19)
範囲証明つき準同型暗号とその対話的プロトコル
- 3. • 例:準同型暗号による投票
• 範囲証明RP(Range Proof)で不正者を除外する
• 𝜋𝑖 ≔ 𝑅𝑃(𝑐𝑖, 0, 1 ) ; 𝐷𝑒𝑐 𝑐𝑖 ∈ [0,1]を示すZKP
3 / 19
背景
投票者 集計サーバ
𝑐1 = 𝐸𝑛𝑐(𝑚1)
𝑐2 = 𝐸𝑛𝑐(𝑚2)
...
𝑐𝑛 = 𝐸𝑛𝑐 𝑚𝑛
開票
𝑐 =
𝑖
𝑐𝑖
𝑖
𝑚𝑖
投票者 集計サーバ
𝑐1, 𝜋1
𝑐2, 𝜋2
...
𝑐𝑛, 𝜋𝑛
𝐸𝑛𝑐(100)
×
秘密鍵を持つ
アリス
- 4. • 集計サーバが複数になると
• 集計途中の暗号文𝑐の範囲証明RPが無い
• 𝑐の範囲を確認するには集計前の暗号文のRPを
チェックする必要がある
• 𝑐に対して新たな範囲証明を付与したい
4 / 19
集計の階層化
集計サーバ1
𝑐1, 𝜋1
𝑐2, 𝜋2
...
𝑐𝑛, 𝜋𝑛
集計サーバ2
𝑐′1, 𝜋′1
𝑐′2, 𝜋′2
...
𝑐′𝑛, 𝜋′𝑛
𝑐 =
𝑖
𝑐𝑖
𝑐′ =
𝑖
𝑐′𝑖
𝑐 + 𝑐′ + ⋯
集計サーバ...
- 5. • 要件
• 𝑐𝑖, 𝑅𝑃 𝑐𝑖, 0, 𝑛𝑖 : givenのとき
𝑐 ≔ ∑𝑐𝑖に対する
𝜋 = 𝑅𝑃(𝑐, 0, ∑𝑛𝑖 )を構成したい
• 和以外の演算でも構わない
• 与えられた範囲から定まった範囲が導出されればよい
• 証明作成者は秘密鍵をもたない
• {𝐷𝑒𝑐 𝑐𝑖 }と𝐷𝑒𝑐(𝑐)を知らない
• 通常のZKPは暗号文を作る人か秘密鍵を持っている人
• 提案方式
• 暗号文𝑐とその範囲[0, 𝑛]が与えられたときに
𝜋 = 𝑅𝑃(𝑐, 0, 𝑛 )を構成する秘密鍵所有者との対話プロトコル
• 対話プロトコルで𝐷𝑒𝑐(𝑐)の情報は得られない
5 / 19
要件と提案方式
集計サーバ1
𝑐1, 𝜋1
𝑐2, 𝜋2
...
𝑐𝑛, 𝜋𝑛
𝑐 =
𝑖
𝑐𝑖
𝑅𝑃(𝑐, 0, ∑𝑛𝑖 )
これ
- 6. • 𝑐 = 𝐸𝑛𝑐(𝑚)が𝑚 ∈ [0, 2𝑛 − 1]であることを示したい
• 𝑚を2進数表記する
• 𝑏𝑖𝑛 𝑚 ≔ 𝑚0, … , 𝑚𝑛−1
• 𝑚𝑖 ≔ 𝜑𝑖(𝑚) は𝑚の𝑖番目のbitを取得する関数
• 𝑐𝑖 ≔ 𝐸𝑛𝑐(𝑚𝑖)に対して𝜋𝑖 ≔ 𝑅𝑃(𝑐𝑖, 0, 1 )を示せれば
• 𝑐 = ∑𝑐𝑖2𝑖 = 𝐸𝑛𝑐 ∑𝑚𝑖2𝑖 = 𝐸𝑛𝑐(𝑚)は𝑚 ∈ [0, 2𝑛 − 1]
• より一般の範囲について
• [0, 𝑎]なら2𝑛 − 1 ≤ 𝑎をみたす最大の𝑛をとる
• 𝑎′ = 𝑎 − (2𝑛 − 1)に対して同様の𝑛′を取る
• これを繰り返す
𝑚 ∈ [0, 𝑎]を𝑚𝑖 ∈ [0, 2𝑛𝑖 − 1]の和として表現する
• 例 : 𝑎 = 11なら𝑎 = 23 − 1 + 22 − 1 + (21 − 1)
• 以下[0, 2𝑛 − 1]の形のみを考える 6 / 19
範囲証明の基本
- 8. • 前提条件
• アリスは秘密鍵を持つ
• ボブは𝐶 = {𝑐𝑖= 𝐸𝑛𝑐(𝑚𝑖)}, 𝑚𝑖 ∈ [0, 1]を持つ
• 𝑚𝑖は未知(秘密鍵は持たない)
• アリスは0の暗号文𝑐に対して𝑅𝑃0 𝑐 ≔ 𝑅𝑃(𝑐, 0,0 )を構成可能
• アイデア
• アリスに𝑐𝑖を渡さずに𝑅𝑃(𝑐𝑖, 0,1 )を作るには難しそう
• SCIS2019(光成)でのアイデアを使う
• 𝑚𝑖 ∈ 0,1 ⇔ 𝑚𝑖 1 − 𝑚𝑖 = 0
⇔ 乱数ℎ𝑖に対して∑𝑖 ℎ𝑖𝑚𝑖 1 − 𝑚𝑖 = 0なら
無視できる確率を除いて𝑚𝑖 1 − 𝑚𝑖 = 0 for all 𝑖
• 暗号は乗算が1回可能な2LHEとする
8 / 19
対話ブラインド範囲証明
- 9. • 前提条件(再掲)
• アリスは秘密鍵を持つ
• ボブは𝐶 = {𝑐𝑖= 𝐸𝑛𝑐(𝑚𝑖)}, 𝑚𝑖 ∈ [0, 1]を持つ
• 𝑚𝑖は未知(秘密鍵は持たない)
• アリスは0の暗号文𝑐に対して𝑅𝑃0 𝑐 を構成可能
• ボブ→アリス
• ボブはℎ𝑖 ≔ 𝐻(𝑝𝑘, 𝐶, 𝑖)として
𝑐0 ≔ ∑𝑖 ℎ𝑖𝑐𝑖 𝐸𝑛𝑐 1; 0 − 𝑐𝑖 をアリスに送る
• アリス→ボブ
• アリスは𝑐0に対して𝜋 ≔ 𝑅𝑃0(𝑐0)を計算してボブに送る
• 検証
• 𝐶と𝜋は𝑐 ≔ 𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 ≔ ∑𝑐𝑖2𝑖に対する𝑅𝑃(𝑐, 0,2𝑛 − 1 )
9 / 19
対話ブラインド範囲証明プロトコル
- 10. • 与えられた暗号文𝑐を対話ブラインド範囲証明が
適用できる形に変換する
• SCIS2020(縫田, 大畑, 光成)*で提案した方法を利用する
• 前提条件
• 利用する準同型暗号はAHE(加法準同型暗号)
• アリス : 秘密鍵を持つ
• ボブ : 未知な𝑚 ∈ [0, 𝑛]に対する𝑐 = 𝐸𝑛𝑐(𝑚)を持つ
• 出力
• アリスとボブ : 𝑚の情報を何も得られない
• ボブ : 1変数関数𝜑(𝑥)による暗号文の評価𝐸𝑛𝑐(𝜑 𝑚 )を得る
* Arbitrary Univariate Function Evaluation and Re-Encryption Protocols over Lifted-ElGamal Type
Ciphertexts : https://eprint.iacr.org/2019/1233
10 / 19
対話暗号文変換プロトコルConv(1/2)
- 11. • ボブ
• 暗号文𝑐 = 𝐸𝑛𝑐(𝑚)に対して
𝑟𝑖 𝑐 − 𝐸𝑛𝑐 𝑖 𝑖 ∈ 0, 𝑛 , 𝑟𝑖は乱数
を計算してランダムシャッフルした𝑋をアリスに送る
• 𝑋は一つだけ𝐸𝑛𝑐(0)で残りは乱数の暗号文
• アリス
• 𝑋 = {𝑐𝑖}に対して𝑌 = ቊ
𝐸𝑛𝑐 1 𝑖𝑓 𝐷𝑒𝑐 𝑐𝑖 = 0
𝐸𝑛𝑐 0 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
をボブに送る
• ボブは𝑌を最初のランダムシャッフルと逆操作をして
𝑋′ = {𝑐′𝑖}を得る
• 𝑐𝑖
′
= ቊ
𝐸𝑛𝑐 1 𝑖𝑓 𝑚 = 𝑖
𝐸𝑛𝑐 0 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
∑𝑖 𝜑 𝑖 𝑐𝑖
′
= 𝜑 𝑚 𝐸𝑛𝑐 1 = 𝐸𝑛𝑐(𝜑 𝑚 )
11 / 19
対話暗号文変換プロトコルConv(2/2)
- 12. • 対話ブラインド署名を適用するために
• ボブは暗号文𝑐 = 𝐸𝑛𝑐 𝑚 , 𝑚 ∈ [0, 2𝑛
− 1]を持つ
• 𝜑𝑖を𝑚の2進数表記のi番目のbitを得る関数とする
• 𝑚 = ∑ 𝜑𝑖 𝑚 2𝑖 , 𝜑𝑖 𝑚 ∈ [0,1]
• Convの𝜑に𝜑𝑖を適用して𝐶 = {𝐸𝑛𝑐 𝜑𝑖 𝑚 }を得る
• このあと先程の対話ブラインド範囲証明を利用する
• 検証者にとって
• 元の暗号文𝑐 = 𝐸𝑛𝑐(𝑚)とConvによって得られた暗号文
𝐶 = {𝐸𝑛𝑐 𝜑𝑖 𝑚 }の同値性は不明
• 𝐷𝑒𝑐 𝑐 = 𝐷𝑒𝑐(𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 )の証明が必要
•
𝑐2 ≔ 𝐻(𝑐, 𝐶)(𝑐 − 𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 )に対する𝑅𝑃0(
𝑐2)を
アリスに作成してもらう
12 / 19
Convを2進数変換に適用する
- 13. • 範囲証明つき暗号文(𝑑𝑖, 𝜋𝑖)の集約結果𝑐にRPをつける
13 / 19
ここまでのまとめ
集計サーバ
𝑑1, 𝜋1
𝑑2, 𝜋2
...
𝑑𝑛, 𝜋𝑛
𝑐 =
𝑖
𝑑𝑖 = 𝐸𝑛𝑐(𝑚)
𝐶 = {𝐸𝑛𝑐 𝜑𝑖 𝑚 }, 𝑚 = ∑𝜑𝑖 𝑚 2𝑖
𝑠𝑘を持つアリス
範囲証明作成者ボブ
𝐶𝑜𝑛𝑣プロトコル
𝑐1 ≔
𝑖
ℎ𝑖𝑐𝑖 𝐸𝑛𝑐 1; 0 − 𝑐𝑖
𝑐2 ≔ 𝐻(𝑝𝑘, 𝐶, 𝑐)(𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 − 𝑐)
𝜋1 ≔ 𝑅𝑃0
𝑐1 , 𝜋2 ≔ 𝑅𝑃0(
𝑐2)
検証者
INPUT
OUTPUT (𝐶, 𝜋1, 𝜋2)
1. INPUTから
𝑐の範囲Rが分かる
2. 𝜋2により𝑐が𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶
と同じ平文であると分かる
3. 𝜋1により𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶
の範囲=Rが分かる
(𝐶, 𝜋1)を次の入力とする
- 14. • 前提条件
• 𝐸𝑛𝑐 : 乗算が1回可能なレベル2準同型暗号
• 平文空間𝔽𝑝, 秘密鍵𝑠𝑘, 公開鍵𝑝𝑘
• アリス : 秘密鍵を持つ
• ボブ : 𝑐 = 𝐸𝑛𝑐(𝑚), 𝑚 ∈ [0, 2𝑛
− 1]を持つ(𝑚は未知)
• プロトコル
• ボブはConvを利用して𝐶 = 𝑐𝑖 = {𝑅𝑒𝐸𝑛𝑐(𝐸𝑛𝑐 𝜑𝑖 𝑚 ) }を得る
• 𝐷𝑒𝑐 𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 = 𝐷𝑒𝑐(∑𝑖 𝑐𝑖2𝑖) = 𝑚
• ボブは
𝑐1 ≔ ∑𝑖 ℎ𝑖𝑐𝑖 𝐸𝑛𝑐 1; 0 − 𝑐𝑖 , ℎ𝑖 ≔ 𝐻 𝑝𝑘, 𝐶, 𝑐, 𝑖 と
𝑐2 ≔ 𝐻(𝑝𝑘, 𝐶, 𝑐)(𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 − 𝑐)を計算しアリスに
𝜋1 ≔ 𝑅𝑃0
𝑐1 , 𝜋2 ≔ 𝑅𝑃0(
𝑐2)を計算してもらう
• 𝜋 = 𝐶, 𝜋1, 𝜋2 が𝑐の𝑅𝑃(𝑐, 0,2𝑛 − 1 )である
14 / 19
提案方式
- 15. • 命題
• 𝑃1 : 「アリスが作成した𝑅𝑃0(𝑐)が𝐷𝑒𝑐 𝑐 ≠ 0な暗号文を受理」
• 𝑝1 ≔ Pr(𝑃1)
• 𝑃2 : 「𝐷𝑒𝑐 𝑐𝑖 ∉ [0,1]となる暗号文が存在する」
• 𝑃3 : 「𝐷𝑒𝑐 𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝑐 − 𝑐 ≠ 0である」
• (𝐶, 𝜋)が正しくない暗号文に対して受理する確率
≤ Pr(𝑃2かつ𝐷𝑒𝑐
𝑐1 = 0)
(𝑚𝑖 ∉ [0,1]なる𝑖が存在するのに∑ℎ𝑖𝑚𝑖 1 − 𝑚𝑖 = 0な確率)
+Pr(𝑃2かつ受理する証明𝜋1を作る)
+Pr(𝑃3かつ𝐷𝑒𝑐
𝑐2 = 0)
+Pr(𝑃3かつ受理する証明𝜋2を作る)
≤
1
𝑝
+ 𝑝1 +
1
𝑝
+ 𝑝1 = 2
1
𝑝
+ 𝑝1 ; 無視できる
15 / 19
検証者にとっての安全性
- 16. • ボブ→アリス
• 𝑋 ≔ 𝑆ℎ𝑢𝑓𝑓𝑙𝑒 𝑟𝑖 𝑐 − 𝐸𝑛𝑐 𝑖 , 𝑐 = 𝐸𝑛𝑐(𝑚)
• 乱数とシャッフルにより情報理論的安全性
• アリス→ボブ→アリス
•
𝑐1,
𝑐2は𝑌の情報を持つか?
• (
𝑐1,
𝑐2)の代わりに
(𝐸𝑛𝑐 0 , 𝐸𝑛𝑐 0 )を渡して
アリスは区別できるかゲーム
• ReEncで乱数の情報は隠蔽
• circuit privacyとはちょっと違う
16 / 19
アリスへの情報漏洩
𝑠𝑘を持つアリス
範囲証明作成者ボブ
𝑋
𝑌 = 𝑦𝑖
𝑐1 ≔
𝑖
ℎ𝑖𝑐𝑖 𝐸𝑛𝑐 1; 0 − 𝑐𝑖
𝑐2 ≔ 𝐻(𝑝𝑘, 𝐶, 𝑐)(𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 − 𝑐)
𝑋′
= 𝑐𝑖 =
𝑆ℎ𝑢𝑓𝑓𝑙𝑒−1 𝑅𝑒𝐸𝑛𝑐 𝑦𝑖 = {𝐸𝑛𝑐 𝛿𝑚𝑖 }
- 17. • アリスにブラインド範囲証明𝑅𝑃0(𝑐)をしてもらうとき
• 不正なクエリ
• 𝐷𝑒𝑐 𝑐 ≠ 0な𝑐をクエリに出すと𝐷𝑒𝑐 𝑐 ≠ 0であると判明
• アリスは無制限にブラインド範囲証明に対応してはいけない
• ブラインド署名と同じ問題
• 「信頼のおける」ボブからのクエリのみ対応
• 暗号文にボブの署名をつける etc.
• 「部分ブラインド署名」に相当するものができるか?
• 準同型演算を評価鍵を持つ人しか出来ない
「鍵つき準同型暗号」の利用を検討
• ただし元々の問題設定が準同型演算することでデータの正当
性を検証するものであった -- 直接は使えない?
17 / 19
maliciousなボブ?
- 18. • 複数の暗号文の総和を取るとき
• 暗号文変換プロトコルConvの送受信する暗号文の個数
• 総和𝑁に比例する
• 範囲証明プロトコル後の暗号文は2進数展開されたもの
• 加算はビット単位で可能
• 送受信する暗号文の個数と通信回数のトレードオフ
• 1ビットずつ加算処理をすると暗号文個数↓ 通信回数↑
• 𝑛ビットまとめて処理すると暗号文個数2𝑛 通信回数1回
• 8ビット(256個)ずつ加算処理をするのが現実的と予想される
• (今回のプロトコルではないが)
L2HE暗号によるOblivious Transfer
• iPhoneのブラウザでL2HE暗号文1000個の送信で1秒未満
18 / 19
効率化
- 20. • 鍵生成
• 𝑒: 𝐺1 × 𝐺2 → 𝐺𝑇 type 3ペアリング
• 𝐺1 = ⟨𝑃1⟩, 𝐺2 = ⟨𝑃2⟩, 𝐺𝑇 = ⟨𝑅⟩ where 𝑅 ≔ 𝑒(𝑃1, 𝑃2)
• 全て位数𝑝の加法群とする
• 𝑃, 𝑎𝑃に対して𝐷𝐿𝑃𝑃 𝑎𝑃 = 𝑎
• 秘密鍵𝑠1, 𝑠2 ∈ 𝔽𝑝, 𝑠3 ≔ 𝑠1𝑠2
• 公開鍵𝑄𝑖 ≔ 𝑠𝑖𝑃𝑖 𝑖 = 1,2 , 𝑅𝑖 ≔ 𝑠𝑖𝑅 𝑖 = 1,2,3
• 暗号化:𝐸𝑛𝑐𝑖 𝑚; 𝑟 ≔ 𝑆, 𝑇 ≔ (𝑚𝑃𝑖 + 𝑟𝑄𝑖, 𝑟𝑃𝑖), (𝑖 = 1,2)
• 復号:𝑐 = 𝑆, 𝑇 ∈ 𝐺𝑖
2
(𝑖 = 1,2)に対して
• 𝑑𝑒𝑐𝑖 𝑐 ≔ 𝑆 − 𝑠𝑖𝑇, 𝐷𝑒𝑐𝑖 𝑐 ≔ 𝐷𝐿𝑃𝑃𝑖
(𝑑𝑒𝑐𝑖 𝑐 )
• 暗号文𝐸𝑛𝑐 𝑚 ≔ (𝐸𝑛𝑐1 𝑚 , 𝐸𝑛𝑐2 𝑚 )
• 暗号文の積は後述
20 / 19
AsiaCCS2018の2LHEの場合
- 21. • 暗号文が𝑐 = 𝑑, 𝑑′ = (𝐸𝑛𝑐1 𝑚 , 𝐸𝑛𝑐2 𝑚 )の形なので
𝐷𝑒𝑐1 𝑑 = 𝐷𝑒𝑐2(𝑑′)でなければならない
• 暗号文の集合𝐶 = { 𝑑𝑖, 𝑑𝑖
′
}に対して
𝐷𝑒𝑐 𝑑𝑖 = 𝐷𝑒𝑐 𝑑𝑖
′
∈ [0,1]を示すためには
𝑐1 ≔ ∑𝐻0 𝐴, 𝑖 𝑑𝑖 𝐸𝑛𝑐2 1; 0 − 𝑑𝑖
′
+∑𝐻1 𝐴, 𝑖 𝑑𝑖𝐸𝑛𝑐2 1; 0 − 𝐸𝑛𝑐1 1; 0 𝑑𝑖
′
where 𝐴 = {𝑝𝑘, 𝐶, 𝑐}
について𝐷𝑒𝑐
𝑐1 = 0を示せばよい
21 / 19
範囲証明プロトコルの微調整
- 22. • 積
• 𝑐𝑖 ≔ 𝑆𝑖, 𝑇𝑖 ∈ 𝐺𝑖
2
について
𝑐1𝑐2 ≔ (𝑒 𝑆1, 𝑇1 , 𝑒 𝑆1, 𝑇2 , 𝑒 𝑇1, 𝑆2 , 𝑒 𝑇1, 𝑇2 )
• 暗号化
• 𝐸𝑛𝑐𝑇 𝑚; 𝑟1, 𝑟2, 𝑟3 ≔ 𝐴0, 𝐴1, 𝐴2, 𝐴3
where 𝐴0 ≔ 𝑚𝑅 + 𝐹(𝑅1,𝑅2,𝑅3)(𝑟1, 𝑟2, 𝑟3), 𝐴𝑖 ≔ 𝑟𝑖𝑅 (𝑖 = 1,2,3)
𝐹 𝑅1,𝑅2,𝑅3
𝑟1, 𝑟2, 𝑟3 ≔ 𝑟1𝑅2 + 𝑟2𝑅3 − 𝑟3𝑅3
• 復号
• 𝑐 = 𝐴0, 𝐴1, 𝐴2, 𝐴3 ∈ 𝐺𝑇
4
に対して
• 𝑑𝑒𝑐𝑇 𝑐 ≔ 𝐴0 − 𝐹 𝐴1,𝐴2,𝐴3
(𝑠1, 𝑠2, 𝑠3), 𝐷𝑒𝑐𝑇 𝑐 ≔ 𝐷𝐿𝑃𝑅(𝑑𝑒𝑐𝑇 𝑐 )
• 𝐷𝑒𝑐𝑇 𝑐 = 0となる必要十分条件
• 𝑑𝑒𝑐𝑇 𝑐 = 0 ⇔ 𝐴0 = 𝐹 𝐴1,𝐴2,𝐴3
(𝑠1, 𝑠2, 𝑠3)
22 / 19
暗号文の積と𝐺𝑇に関する暗号化と復号
- 23. • アリス(秘密鍵を持つ証明者)
• 𝑐 ≔ 𝐴0, 𝐴1, 𝐴2, 𝐴3 where 𝐷𝑒𝑐𝑇 𝑐 = 0 ; given
• 𝑏𝑖 ← 𝔽𝑝(𝑖 = 1,2,3)をとり𝐵𝑖 ≔ 𝑏𝑖𝑅, 𝑋 ≔ 𝐹 𝐴1,𝐴2,𝐴3
𝑏1, 𝑏2, 𝑏3
ℎ ≔ 𝐻 𝑝𝑘, 𝑐, 𝐵𝑖 , 𝑋 , 𝑑𝑖 ≔ 𝑏𝑖 + ℎ𝑠𝑖として𝜋 ≔ (ℎ, {𝑑𝑖})とする
• ボブの検証
• 𝑐と𝜋が与えられたときに
𝐵𝑖 ≔ 𝑑𝑖𝑅 − ℎ𝑅𝑖, 𝑋 ≔ 𝐹 𝐴1,𝐴2,𝐴3
𝑑1, 𝑑2, 𝑑3 − ℎ𝐴0とする
• 𝐻 𝑝𝑘, 𝑐, 𝐵𝑖 , 𝑋 = ℎが成り立てば受理する
23 / 19
𝐷𝑒𝑐𝑇 𝑐 = 0のNIZKP