SlideShare a Scribd company logo
1 of 23
Download to read offline
範囲証明つき準同型暗号と
その対話的プロトコル
SCIS2022 2E2 2022/1/19
光成滋生 : サイボウズ・ラボ
• 背景
• 実現したい範囲証明プロトコルの要件
• ブラインド範囲証明
• 暗号文変換プロトコル
• 安全性
• 通信量と通信回数のトレードオフ
2 / 19
目次
• 例:準同型暗号による投票
• 範囲証明RP(Range Proof)で不正者を除外する
• 𝜋𝑖 ≔ 𝑅𝑃(𝑐𝑖, 0, 1 ) ; 𝐷𝑒𝑐 𝑐𝑖 ∈ [0,1]を示すZKP
3 / 19
背景
投票者 集計サーバ
𝑐1 = 𝐸𝑛𝑐(𝑚1)
𝑐2 = 𝐸𝑛𝑐(𝑚2)
...
𝑐𝑛 = 𝐸𝑛𝑐 𝑚𝑛
開票
𝑐 = ෍
𝑖
𝑐𝑖
෍
𝑖
𝑚𝑖
投票者 集計サーバ
𝑐1, 𝜋1
𝑐2, 𝜋2
...
𝑐𝑛, 𝜋𝑛
𝐸𝑛𝑐(100)
×
秘密鍵を持つ
アリス
• 集計サーバが複数になると
• 集計途中の暗号文𝑐の範囲証明RPが無い
• 𝑐の範囲を確認するには集計前の暗号文のRPを
チェックする必要がある
• 𝑐に対して新たな範囲証明を付与したい
4 / 19
集計の階層化
集計サーバ1
𝑐1, 𝜋1
𝑐2, 𝜋2
...
𝑐𝑛, 𝜋𝑛
集計サーバ2
𝑐′1, 𝜋′1
𝑐′2, 𝜋′2
...
𝑐′𝑛, 𝜋′𝑛
𝑐 = ෍
𝑖
𝑐𝑖
𝑐′ = ෍
𝑖
𝑐′𝑖
𝑐 + 𝑐′ + ⋯
集計サーバ...
• 要件
• 𝑐𝑖, 𝑅𝑃 𝑐𝑖, 0, 𝑛𝑖 : givenのとき
𝑐 ≔ ∑𝑐𝑖に対する
𝜋 = 𝑅𝑃(𝑐, 0, ∑𝑛𝑖 )を構成したい
• 和以外の演算でも構わない
• 与えられた範囲から定まった範囲が導出されればよい
• 証明作成者は秘密鍵をもたない
• {𝐷𝑒𝑐 𝑐𝑖 }と𝐷𝑒𝑐(𝑐)を知らない
• 通常のZKPは暗号文を作る人か秘密鍵を持っている人
• 提案方式
• 暗号文𝑐とその範囲[0, 𝑛]が与えられたときに
𝜋 = 𝑅𝑃(𝑐, 0, 𝑛 )を構成する秘密鍵所有者との対話プロトコル
• 対話プロトコルで𝐷𝑒𝑐(𝑐)の情報は得られない
5 / 19
要件と提案方式
集計サーバ1
𝑐1, 𝜋1
𝑐2, 𝜋2
...
𝑐𝑛, 𝜋𝑛
𝑐 = ෍
𝑖
𝑐𝑖
𝑅𝑃(𝑐, 0, ∑𝑛𝑖 )
これ
• 𝑐 = 𝐸𝑛𝑐(𝑚)が𝑚 ∈ [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
範囲証明の基本
1. 対話ブラインド範囲証明
• 秘密鍵所有者アリスに暗号文𝑐に対する範囲証明
𝜋 = 𝑅𝑃(𝑐, 0,2𝑛 − 1 )を作成してもらう
• 𝐷𝑒𝑐(𝑐)の情報はアリスに渡らないようにする
2. 与えられた暗号文を
対話ブラインド範囲証明がつけられる形に変形する
• 完全準同型暗号FHEが使えるならそれを利用する
• ここでは2LHEを想定
7 / 19
提案方式の方針
• 前提条件
• アリスは秘密鍵を持つ
• ボブは𝐶 = {𝑐𝑖= 𝐸𝑛𝑐(𝑚𝑖)}, 𝑚𝑖 ∈ [0, 1]を持つ
• 𝑚𝑖は未知(秘密鍵は持たない)
• アリスは0の暗号文𝑐に対して𝑅𝑃0 𝑐 ≔ 𝑅𝑃(𝑐, 0,0 )を構成可能
• アイデア
• アリスに𝑐𝑖を渡さずに𝑅𝑃(𝑐𝑖, 0,1 )を作るには難しそう
• SCIS2019(光成)でのアイデアを使う
• 𝑚𝑖 ∈ 0,1 ⇔ 𝑚𝑖 1 − 𝑚𝑖 = 0
⇔ 乱数ℎ𝑖に対して∑𝑖 ℎ𝑖𝑚𝑖 1 − 𝑚𝑖 = 0なら
無視できる確率を除いて𝑚𝑖 1 − 𝑚𝑖 = 0 for all 𝑖
• 暗号は乗算が1回可能な2LHEとする
8 / 19
対話ブラインド範囲証明
• 前提条件(再掲)
• アリスは秘密鍵を持つ
• ボブは𝐶 = {𝑐𝑖= 𝐸𝑛𝑐(𝑚𝑖)}, 𝑚𝑖 ∈ [0, 1]を持つ
• 𝑚𝑖は未知(秘密鍵は持たない)
• アリスは0の暗号文𝑐に対して𝑅𝑃0 𝑐 を構成可能
• ボブ→アリス
• ボブはℎ𝑖 ≔ 𝐻(𝑝𝑘, 𝐶, 𝑖)として
𝑐0 ≔ ∑𝑖 ℎ𝑖𝑐𝑖 𝐸𝑛𝑐 1; 0 − 𝑐𝑖 をアリスに送る
• アリス→ボブ
• アリスは𝑐0に対して𝜋 ≔ 𝑅𝑃0(𝑐0)を計算してボブに送る
• 検証
• 𝐶と𝜋は𝑐 ≔ 𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 ≔ ∑𝑐𝑖2𝑖に対する𝑅𝑃(𝑐, 0,2𝑛 − 1 )
9 / 19
対話ブラインド範囲証明プロトコル
• 与えられた暗号文𝑐を対話ブラインド範囲証明が
適用できる形に変換する
• 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)
• ボブ
• 暗号文𝑐 = 𝐸𝑛𝑐(𝑚)に対して
𝑟𝑖 𝑐 − 𝐸𝑛𝑐 𝑖 𝑖 ∈ 0, 𝑛 , 𝑟𝑖は乱数
を計算してランダムシャッフルした𝑋をアリスに送る
• 𝑋は一つだけ𝐸𝑛𝑐(0)で残りは乱数の暗号文
• アリス
• 𝑋 = {𝑐𝑖}に対して𝑌 = ቊ
𝐸𝑛𝑐 1 𝑖𝑓 𝐷𝑒𝑐 𝑐𝑖 = 0
𝐸𝑛𝑐 0 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
をボブに送る
• ボブは𝑌を最初のランダムシャッフルと逆操作をして
𝑋′ = {𝑐′𝑖}を得る
• 𝑐𝑖
′
= ቊ
𝐸𝑛𝑐 1 𝑖𝑓 𝑚 = 𝑖
𝐸𝑛𝑐 0 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
∑𝑖 𝜑 𝑖 𝑐𝑖
′
= 𝜑 𝑚 𝐸𝑛𝑐 1 = 𝐸𝑛𝑐(𝜑 𝑚 )
11 / 19
対話暗号文変換プロトコルConv(2/2)
• 対話ブラインド署名を適用するために
• ボブは暗号文𝑐 = 𝐸𝑛𝑐 𝑚 , 𝑚 ∈ [0, 2𝑛
− 1]を持つ
• 𝜑𝑖を𝑚の2進数表記のi番目のbitを得る関数とする
• 𝑚 = ∑ 𝜑𝑖 𝑚 2𝑖 , 𝜑𝑖 𝑚 ∈ [0,1]
• Convの𝜑に𝜑𝑖を適用して𝐶 = {𝐸𝑛𝑐 𝜑𝑖 𝑚 }を得る
• このあと先程の対話ブラインド範囲証明を利用する
• 検証者にとって
• 元の暗号文𝑐 = 𝐸𝑛𝑐(𝑚)とConvによって得られた暗号文
𝐶 = {𝐸𝑛𝑐 𝜑𝑖 𝑚 }の同値性は不明
• 𝐷𝑒𝑐 𝑐 = 𝐷𝑒𝑐(𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 )の証明が必要
• ෥
𝑐2 ≔ 𝐻(𝑐, 𝐶)(𝑐 − 𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 )に対する𝑅𝑃0( ෥
𝑐2)を
アリスに作成してもらう
12 / 19
Convを2進数変換に適用する
• 範囲証明つき暗号文(𝑑𝑖, 𝜋𝑖)の集約結果𝑐に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)を次の入力とする
• 前提条件
• 𝐸𝑛𝑐 : 乗算が1回可能なレベル2準同型暗号
• 平文空間𝔽𝑝, 秘密鍵𝑠𝑘, 公開鍵𝑝𝑘
• アリス : 秘密鍵を持つ
• ボブ : 𝑐 = 𝐸𝑛𝑐(𝑚), 𝑚 ∈ [0, 2𝑛
− 1]を持つ(𝑚は未知)
• プロトコル
• ボブはConvを利用して𝐶 = 𝑐𝑖 = {𝑅𝑒𝐸𝑛𝑐(𝐸𝑛𝑐 𝜑𝑖 𝑚 ) }を得る
• 𝐷𝑒𝑐 𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 = 𝐷𝑒𝑐(∑𝑖 𝑐𝑖2𝑖) = 𝑚
• ボブは
෥
𝑐1 ≔ ∑𝑖 ℎ𝑖𝑐𝑖 𝐸𝑛𝑐 1; 0 − 𝑐𝑖 , ℎ𝑖 ≔ 𝐻 𝑝𝑘, 𝐶, 𝑐, 𝑖 と
෥
𝑐2 ≔ 𝐻(𝑝𝑘, 𝐶, 𝑐)(𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 − 𝑐)を計算しアリスに
𝜋1 ≔ 𝑅𝑃0 ෥
𝑐1 , 𝜋2 ≔ 𝑅𝑃0( ෥
𝑐2)を計算してもらう
• 𝜋 = 𝐶, 𝜋1, 𝜋2 が𝑐の𝑅𝑃(𝑐, 0,2𝑛 − 1 )である
14 / 19
提案方式
• 命題
• 𝑃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
検証者にとっての安全性
• ボブ→アリス
• 𝑋 ≔ 𝑆ℎ𝑢𝑓𝑓𝑙𝑒 𝑟𝑖 𝑐 − 𝐸𝑛𝑐 𝑖 , 𝑐 = 𝐸𝑛𝑐(𝑚)
• 乱数とシャッフルにより情報理論的安全性
• アリス→ボブ→アリス
• ෥
𝑐1, ෥
𝑐2は𝑌の情報を持つか?
• ( ෥
𝑐1, ෥
𝑐2)の代わりに
(𝐸𝑛𝑐 0 , 𝐸𝑛𝑐 0 )を渡して
アリスは区別できるかゲーム
• ReEncで乱数の情報は隠蔽
• circuit privacyとはちょっと違う
16 / 19
アリスへの情報漏洩
𝑠𝑘を持つアリス
範囲証明作成者ボブ
𝑋
𝑌 = 𝑦𝑖
෥
𝑐1 ≔ ෍
𝑖
ℎ𝑖𝑐𝑖 𝐸𝑛𝑐 1; 0 − 𝑐𝑖
෥
𝑐2 ≔ 𝐻(𝑝𝑘, 𝐶, 𝑐)(𝑅𝑒𝐶𝑜𝑛𝑠𝑡 𝐶 − 𝑐)
𝑋′
= 𝑐𝑖 =
𝑆ℎ𝑢𝑓𝑓𝑙𝑒−1 𝑅𝑒𝐸𝑛𝑐 𝑦𝑖 = {𝐸𝑛𝑐 𝛿𝑚𝑖 }
• アリスにブラインド範囲証明𝑅𝑃0(𝑐)をしてもらうとき
• 不正なクエリ
• 𝐷𝑒𝑐 𝑐 ≠ 0な𝑐をクエリに出すと𝐷𝑒𝑐 𝑐 ≠ 0であると判明
• アリスは無制限にブラインド範囲証明に対応してはいけない
• ブラインド署名と同じ問題
• 「信頼のおける」ボブからのクエリのみ対応
• 暗号文にボブの署名をつける etc.
• 「部分ブラインド署名」に相当するものができるか?
• 準同型演算を評価鍵を持つ人しか出来ない
「鍵つき準同型暗号」の利用を検討
• ただし元々の問題設定が準同型演算することでデータの正当
性を検証するものであった -- 直接は使えない?
17 / 19
maliciousなボブ?
• 複数の暗号文の総和を取るとき
• 暗号文変換プロトコルConvの送受信する暗号文の個数
• 総和𝑁に比例する
• 範囲証明プロトコル後の暗号文は2進数展開されたもの
• 加算はビット単位で可能
• 送受信する暗号文の個数と通信回数のトレードオフ
• 1ビットずつ加算処理をすると暗号文個数↓ 通信回数↑
• 𝑛ビットまとめて処理すると暗号文個数2𝑛 通信回数1回
• 8ビット(256個)ずつ加算処理をするのが現実的と予想される
• (今回のプロトコルではないが)
L2HE暗号によるOblivious Transfer
• iPhoneのブラウザでL2HE暗号文1000個の送信で1秒未満
18 / 19
効率化
• 範囲証明つき準同型演算暗号文の演算後の暗号文に
対して範囲証明をつけるプロトコルの提案
• 今後の課題
• 安全性の定式化と証明
• 非対話プロトコルの実現
19 / 19
まとめと今後の課題
• 鍵生成
• 𝑒: 𝐺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の場合
• 暗号文が𝑐 = 𝑑, 𝑑′ = (𝐸𝑛𝑐1 𝑚 , 𝐸𝑛𝑐2 𝑚 )の形なので
𝐷𝑒𝑐1 𝑑 = 𝐷𝑒𝑐2(𝑑′)でなければならない
• 暗号文の集合𝐶 = { 𝑑𝑖, 𝑑𝑖
′
}に対して
𝐷𝑒𝑐 𝑑𝑖 = 𝐷𝑒𝑐 𝑑𝑖
′
∈ [0,1]を示すためには
෥
𝑐1 ≔ ∑𝐻0 𝐴, 𝑖 𝑑𝑖 𝐸𝑛𝑐2 1; 0 − 𝑑𝑖
′
+∑𝐻1 𝐴, 𝑖 𝑑𝑖𝐸𝑛𝑐2 1; 0 − 𝐸𝑛𝑐1 1; 0 𝑑𝑖
′
where 𝐴 = {𝑝𝑘, 𝐶, 𝑐}
について𝐷𝑒𝑐 ෥
𝑐1 = 0を示せばよい
21 / 19
範囲証明プロトコルの微調整
• 積
• 𝑐𝑖 ≔ 𝑆𝑖, 𝑇𝑖 ∈ 𝐺𝑖
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
暗号文の積と𝐺𝑇に関する暗号化と復号
• アリス(秘密鍵を持つ証明者)
• 𝑐 ≔ 𝐴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

More Related Content

What's hot

高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MITSUNARI Shigeo
 
安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと
shibataka000
 
『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算
MITSUNARI Shigeo
 
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
MITSUNARI Shigeo
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
MITSUNARI Shigeo
 

What's hot (20)

RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
 
zk-SNARKsの仕組みについて
zk-SNARKsの仕組みについてzk-SNARKsの仕組みについて
zk-SNARKsの仕組みについて
 
暗認本読書会12
暗認本読書会12暗認本読書会12
暗認本読書会12
 
暗号化したまま計算できる暗号技術とOSS開発による広がり
暗号化したまま計算できる暗号技術とOSS開発による広がり暗号化したまま計算できる暗号技術とOSS開発による広がり
暗号化したまま計算できる暗号技術とOSS開発による広がり
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
新しい暗号技術
新しい暗号技術新しい暗号技術
新しい暗号技術
 
差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)
 
安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと
 
『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算
 
クラウドを支えるこれからの暗号技術
クラウドを支えるこれからの暗号技術クラウドを支えるこれからの暗号技術
クラウドを支えるこれからの暗号技術
 
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
 
暗認本読書会7
暗認本読書会7暗認本読書会7
暗認本読書会7
 
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
 
技術勉強会(楕円曲線暗号)資料
技術勉強会(楕円曲線暗号)資料技術勉強会(楕円曲線暗号)資料
技術勉強会(楕円曲線暗号)資料
 
暗認本読書会13 advanced
暗認本読書会13 advanced暗認本読書会13 advanced
暗認本読書会13 advanced
 
Bitcoinを技術的に理解する
Bitcoinを技術的に理解するBitcoinを技術的に理解する
Bitcoinを技術的に理解する
 
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
 
Katagaitai CTF勉強会 #4 Crypto
Katagaitai CTF勉強会 #4 CryptoKatagaitai CTF勉強会 #4 Crypto
Katagaitai CTF勉強会 #4 Crypto
 

More from MITSUNARI Shigeo

ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
MITSUNARI Shigeo
 

More from MITSUNARI Shigeo (19)

暗認本読書会11
暗認本読書会11暗認本読書会11
暗認本読書会11
 
暗認本読書会10
暗認本読書会10暗認本読書会10
暗認本読書会10
 
暗認本読書会9
暗認本読書会9暗認本読書会9
暗認本読書会9
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 
暗認本読書会8
暗認本読書会8暗認本読書会8
暗認本読書会8
 
暗認本読書会6
暗認本読書会6暗認本読書会6
暗認本読書会6
 
暗認本読書会5
暗認本読書会5暗認本読書会5
暗認本読書会5
 
暗認本読書会4
暗認本読書会4暗認本読書会4
暗認本読書会4
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
 
LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
ゆるバグ
ゆるバグゆるバグ
ゆるバグ
 
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
 
A compact zero knowledge proof to restrict message space in homomorphic encry...
A compact zero knowledge proof to restrict message space in homomorphic encry...A compact zero knowledge proof to restrict message space in homomorphic encry...
A compact zero knowledge proof to restrict message space in homomorphic encry...
 
Spectre/Meltdownとその派生
Spectre/Meltdownとその派生Spectre/Meltdownとその派生
Spectre/Meltdownとその派生
 
Practical Two-level Homomorphic Encryption in Prime-order Bilinear Groups
Practical Two-level Homomorphic Encryption in Prime-order Bilinear GroupsPractical Two-level Homomorphic Encryption in Prime-order Bilinear Groups
Practical Two-level Homomorphic Encryption in Prime-order Bilinear Groups
 

範囲証明つき準同型暗号とその対話的プロトコル

  • 2. • 背景 • 実現したい範囲証明プロトコルの要件 • ブラインド範囲証明 • 暗号文変換プロトコル • 安全性 • 通信量と通信回数のトレードオフ 2 / 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 範囲証明の基本
  • 7. 1. 対話ブラインド範囲証明 • 秘密鍵所有者アリスに暗号文𝑐に対する範囲証明 𝜋 = 𝑅𝑃(𝑐, 0,2𝑛 − 1 )を作成してもらう • 𝐷𝑒𝑐(𝑐)の情報はアリスに渡らないようにする 2. 与えられた暗号文を 対話ブラインド範囲証明がつけられる形に変形する • 完全準同型暗号FHEが使えるならそれを利用する • ここでは2LHEを想定 7 / 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 効率化
  • 19. • 範囲証明つき準同型演算暗号文の演算後の暗号文に 対して範囲証明をつけるプロトコルの提案 • 今後の課題 • 安全性の定式化と証明 • 非対話プロトコルの実現 19 / 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