SlideShare a Scribd company logo
暗認本読書会13 advanced
準同型暗号, DDH, ZKPおかわり
2021/12/23
https://anninbon.connpass.com/
光成滋生
• 楕円曲線
• 演算
• ECDLPとECDH
• 楕円ElGamal暗号
• 楕円Lifted-ElGamal暗号
• 準同型暗号
• 安全性とDDH
• ZKP
• Σプロトコル
• 𝐷𝑒𝑐 𝑐 = 0の場合
• Fiat-Shamir heuristic
目次
• このスライドで使う共通の記号
• 𝐸 : 楕円曲線, 𝑃 : 𝐸上の点
• 𝐺 = {0, 𝑃, 2𝑃, … , 𝑝 − 1 𝑃}とする(𝑝𝑃 = 0)
• トーラス上を巻きつきながら進み𝑝倍すると𝑂に戻る
• 計算が容易なもの
楕円曲線の性質の復習
スカラー倍
𝑎
𝑃
𝑎𝑃 加算
𝑎𝑃
𝑏𝑃
𝑎 + 𝑏 𝑃
• 楕円離散対数問題ECDLP(Discrete Logarithm Problem)
• 与えられた𝑃, 𝑄 ∈ 𝐺に対して𝑄 = 𝑎𝑃となる𝑎を求める
• 𝑎 = log𝑃 𝑄と表す
• ECDHP(Diffie Hellman Problem)
• 与えられた𝑃, 𝑎𝑃, 𝑏𝑃に対して𝑎𝑏𝑃を求める
• 楕円曲線暗号はECDLPやECDHPが困難なことを仮定
楕円曲線暗号で使う計算困難な問題
DLP
𝑃
𝑎𝑃
𝑎
× DHP
𝑎𝑃
𝑏𝑃
𝑎𝑏𝑃
×
• 鍵生成
• 𝑠 : 秘密鍵, 𝑄 = 𝑠𝑃 : 公開鍵
• 暗号化
• 平文は楕円曲線の点𝑀 ∈ 𝐺
乱数𝑟をとり𝐸𝑛𝑐 𝑀 = (𝑀 + 𝑟𝑄, 𝑟𝑃) とする
• 復号
• 暗号文𝐶 = (𝐴, 𝐵)に対して𝐷𝑒𝑐 𝐶 = 𝐴 − 𝑠𝐵とする
• 正当性
• 暗号化して復号したら元に戻ること
• 𝐷𝑒𝑐 𝐸𝑛𝑐 𝑀 = 𝐷𝑒𝑐 𝑀 + 𝑟𝑄, 𝑟𝑃 = (𝑀 + 𝑟𝑄) − 𝑠 𝑟𝑃 = 𝑀
• 注意
• 暗号文が整数でなく楕円曲線の点なのに注意(使いづらい)
楕円ElGamal暗号
• 攻撃者は公開鍵と暗号文を知っている
• 𝑃, 𝑄 = 𝑠𝑃, 𝐸𝑛𝑐 𝑀 = (𝑀 + 𝑟𝑄, 𝑟𝑃)
• 𝑃と𝑄 = 𝑠𝑃と𝑟𝑃から𝑟𝑄 = 𝑟𝑠𝑃を求められると𝑀が分かる
• 「𝑃, 𝑠𝑃, 𝑟𝑃から𝑟𝑠𝑃」これはECDHP
楕円ElGamal暗号の安全性
• 平文を楕円曲線ではなく整数𝑚とする
𝑀の代わりに𝑚𝑃を使う
• 鍵生成(前ページと同じ)
• 𝑠 : 秘密鍵, 𝑄 = 𝑠𝑃 : 公開鍵
• 暗号化
• 平文𝑚に対し, 乱数𝑟をとって𝐸𝑛𝑐 𝑚; 𝑟 = (𝑚𝑃 + 𝑟𝑄, 𝑟𝑃)とする
• 𝑟を省略して𝐸𝑛𝑐(𝑚)とも書く
• 復号
• 暗号文𝐶 = (𝐴, 𝐵)に対して𝑑𝑒𝑐 𝐶 = 𝐴 − 𝑠𝐵とする
• 𝑑𝑒𝑐 𝐸𝑛𝑐 𝑚 = 𝑚𝑃 + 𝑟𝑄 − 𝑠 𝑟𝑃 = 𝑚𝑃なので復号ではない
𝐷𝑒𝑐 𝐶 = log𝑃 𝑑𝑒𝑐 𝐶 とすると
• 𝐷𝑒𝑐 𝐸𝑛𝑐 𝑚 = log𝑝 𝑚𝑃 = 𝑚となり戻る
楕円Lifted-ElGamal暗号
• 𝐷𝑒𝑐 𝐶 = log𝑃(𝑑𝑒𝑐 𝐶 )っておかしくね?
• 𝑚𝑃から𝑚を求めるのにDLPを使ってる
• DLPが難しいんじゃなかったのか
• 答え
• Yes.
• だから楕円Lifted ElGamal暗号は
「𝑚が大きくない」範囲しか使えない
• 𝑚 ≤ 232程度なら実用的に使える程度に求められる
• 数十MBのテーブルを使うが
• その代わりに面白い性質が成り立つ
疑問
• 再掲載
• 鍵生成 𝑠 : 秘密鍵, 𝑄 = 𝑠𝑃 : 公開鍵
• 暗号化 𝐸𝑛𝑐 𝑚; 𝑟 = (𝑚𝑃 + 𝑟𝑄, 𝑟𝑃) ; 𝑟は乱数
• 復号𝐷𝑒𝑐( 𝐴, 𝐵 = log𝑝 𝐴 − 𝑠𝐵
• 2個の暗号文𝐸𝑛𝑐 𝑚1; 𝑟1 , 𝐸𝑛𝑐(𝑚2; 𝑟2)を考える
• それらの要素ごとの足し算をやってみる
• 𝐸𝑛𝑐 𝑚1; 𝑟1 + 𝐸𝑛𝑐 𝑚2; 𝑟2
= 𝑚1𝑃 + 𝑟1𝑄, 𝑟1𝑃 + 𝑚2𝑃 + 𝑟2𝑄, 𝑟2𝑃
= 𝑚1𝑃 + 𝑚2𝑃 + 𝑟1𝑄 + 𝑟2𝑄, 𝑟1𝑃 + 𝑟2𝑃
= 𝑚1 + 𝑚2 𝑃 + 𝑟1 + 𝑟2 𝑄, 𝑟1 + 𝑟2 𝑃
= 𝐸𝑛𝑐(𝑚1 + 𝑚2; 𝑟1 + 𝑟2)
• 暗号文同士を足したら平文同士を足した結果の暗号文!
• 加法準同型暗号
Lifted ElGamal暗号は加法準同型暗号
• 攻撃者と挑戦者アリスのゲームIND(istinguishability)
• 攻撃者が2個の平文𝑚1, 𝑚2を選びアリスに渡す
• アリスはどちらかの平文を選び、その暗号文𝑐を攻撃者に渡す
• 攻撃者は暗号文𝑐がどちらの平文を暗号化したものか当てる
• 当てたら攻撃者の勝ち(攻撃成功)
• 攻撃者に非常に有利なゲーム
• 攻撃の種類
• 選択平文攻撃CPA
• 自分が選んだ平文の暗号文を取得できる(PKEはいつでも可能)
• 選択暗号文攻撃CCA(Chosen Ciphertext Attack)
• 自分が選んだ暗号文(≠ターゲット暗号文)の平文を取得できる
公開鍵暗号PKEに求められる安全性要件
• CCA1 ; ゲーム開始前に情報収集可
• CCA2 ; ゲーム開始後に情報収集可(適応的CCA)
• CCA1/2に対してアリスが勝つならIND-CCA1/2安全
• 準同型暗号はIND-CCA2安全にはなり得ない
• 攻撃者は𝑐に対して𝑐′ = 𝑐 + 𝐸𝑛𝑐(0)の答えを教えてもらえる
• 準同型演算するために「評価鍵」が必要なHEもある
IND-CCA1とIND-CCA2
• Lifted ElGamal暗号
• 𝑑𝑒𝑐 𝑐 = 0か否か当てられてはいけない(IND-CPA)
• 𝐸𝑛𝑐 0; 𝑟 = 𝑟𝑄, 𝑟𝑃
• 𝐸𝑛𝑐 𝑚; 𝑟 = (𝑚𝑃 + 𝑟𝑄, 𝑟𝑃)
• 暗号文の一つ目の成分を𝑇 = 𝑚𝑃 + 𝑟𝑄とすると
• 「𝑃, 𝑠𝑃, 𝑟𝑃, 𝑇」givenで𝑇 = 𝑟𝑠𝑃か否か判れば
𝑑𝑒𝑐 𝑐 = 0か≠ 0か判別できる→安全でない
• DDH(Decisional DH)
• 「𝑃, 𝑎𝑃, 𝑏𝑃, 𝑇」givenのとき「𝑇 = 𝑎𝑏𝑃か否か」を判定せよ
• 従来のDHはCDH(Computational DH)という
• DDHが困難ならLifted ElGamal暗号はIND-CPA安全
Lifted ElGamal暗号で考えてみると
• 準同型暗号で投票しよう
• 賛成(1)か反対(0)の暗号文を集計サーバに送る
• 集計してから復号
• 攻撃者が𝐸𝑛𝑐(10)を
送ったら?
• 要件
• 暗号文𝑐が𝐷𝑒𝑐 𝑐 ∈ {0,1}であることは知りたい
• でも、どちらかは知りたくない/知られないようにしたい
• 「確認する人Cに暗号文𝑐を渡して正しく復号していること」
𝐷𝑒𝑐 𝑐 = 𝑚を確認したい
• 𝐷𝑒𝑐 𝑐 − 𝐸𝑛𝑐 𝑚 = 0だから𝐷𝑒𝑐 𝑐 = 0だけ分かれば十分
ゼロ知識証明ZKP
• 公開情報𝑋に対応する秘密の知識𝑊であることを
𝑋, 𝑊 ∈ 𝑅と表す(Rはrelation)
• 例 : 𝑄 = 𝑥𝑃のとき𝑋 = (𝑃, 𝑄), 𝑊 = 𝑥, Rは𝐷𝐿𝑃𝑃
Σプロトコル
judge
𝐴
証明者P : 𝑊を知っている
検証者V
乱数ℎ
𝐵
受理 or 拒絶
𝑋の共有
• 完全性
• 証明者Pが 𝑋, 𝑊 ∈ 𝑅となる𝑊を知っていたら検証者Vは受理
• 健全性
• 𝐴, ℎ, 𝐵 , (𝐴, ℎ′, 𝐵′) (ℎ ≠ ℎ′)が受理されれば 𝑋, 𝑊 ∈ 𝑅となる𝑊
を計算できる
• (special honest-verifier) ゼロ知識性
• 𝑊を知らずに𝑋に対して受理する(𝐴, ℎ, 𝐵)を本物そっくりにシ
ミュレートする𝑀がある
• (𝐴, ℎ, 𝐵)の情報は𝑊が無くても得られるものと同じと考える
Σプロトコルの要件
• 公開鍵𝑋 = (𝑄, 𝑃), 𝑄 = 𝑠𝑃, 暗号文𝐶 = 𝑆, 𝑇 = (𝑟𝑄, 𝑟′𝑃)
• 𝐷𝑒𝑐 𝐶 = 0であるためには𝑟𝑄 − 𝑠𝑟′
𝑃 = 0つまり𝑟 = 𝑟′
• (秘密鍵𝑠を持つ)証明者P : 𝑟は未知だが𝑟 = 𝑟′は分かる
• P→V : 乱数𝑡をとり𝐴 = (𝑡𝑇, 𝑡𝑃)を送る
• V→P : 乱数ℎを送る
• P→V : 𝑏 = 𝑡 − ℎ𝑠を送りVはℎ(𝑆, 𝑄) + 𝑏(𝑇, 𝑃) = 𝐴なら受理
• 完全性
• 正しければ𝑙ℎ𝑠 = ℎ𝑟𝑠𝑃, ℎ𝑠𝑃 + (𝑏𝑟𝑃, 𝑏𝑃) = (𝑡𝑟𝑃, 𝑡𝑃)
• 健全性
• 𝐴, ℎ, 𝑏 , (𝐴, ℎ′, 𝑏′)を受理(ℎ ≠ ℎ′)すれば𝐶 = (𝑟𝑠′𝑃, 𝑟𝑃)に対して
ℎ 𝑟𝑠′𝑃, 𝑠𝑃 + 𝑏 𝑟𝑃, 𝑃 = 𝐴 = ℎ′ 𝑟𝑠′𝑃, 𝑠𝑃 + 𝑏′(𝑟𝑃, 𝑃)より
ℎ𝑟𝑠′ + 𝑏𝑟 = ℎ′𝑟𝑠′ + 𝑏′𝑟, ℎ𝑠 + 𝑏 = ℎ′𝑠 + 𝑏′より𝑠 = 𝑠′
𝐷𝑒𝑐 𝐶 = 0のΣプロトコル
• 乱数ℎ, 𝑏をとり𝑡 = 𝑏 + ℎ𝑠, 𝐴 = (𝑡𝑟𝑃, 𝑡𝑃)とすると
(𝐴, ℎ, 𝑏)は受理される
• ℎ 𝑟𝑄, 𝑄 + 𝑏 𝑟𝑃, 𝑃 = ℎ𝑟𝑠 + 𝑏𝑟 𝑃, ℎ𝑠 + 𝑏 𝑃 = (𝑡𝑟𝑃, 𝑡𝑃)
シミュレータ
• Σプロトコルで検証者が乱数ℎを送る代わりに
パラメータのハッシュ値を利用する
• 証明者がℎを制御できないなら検証者が乱数を送らなくてもよ
いのではという理屈
• ハッシュ関数が理想形であるランダムオラクルモデルを仮定
• 証明者Pが証明𝜋を送るだけでよくなる
• 対話証明の非対話化
Fiat-Shamir heuristic
• 再掲 : 公開情報𝑋 = (𝑄, 𝑃), 𝑄 = 𝑠𝑃, 暗号文𝐶 = (𝑆, 𝑇)
• P→V : 乱数𝑡をとり𝐴 = (𝑡𝑇, 𝑡𝑃)を送る
• V→P : 乱数ℎを送る
• P→V : 𝑏 = 𝑡 − ℎ𝑠を送りVはℎ(𝑆, 𝑄) + 𝑏(𝑇, 𝑃) = 𝐴なら受理
• FS変換
• 証明者 : 乱数𝑡を𝐴 = (𝑡𝑇, 𝑡𝑃), ℎ = 𝐻(𝑋, 𝐶, 𝐴)とする
𝑏 = 𝑡 − ℎ𝑠として𝜋 = (ℎ, 𝑏)を検証者に送る
• 検証者 : 𝐴′ = ℎ(𝑆, 𝑄) + 𝑏(𝑇, 𝑃), 𝐻 𝑋, 𝐶, 𝐴′ = ℎなら受理
• 𝐶 = (𝑟𝑠′
𝑃, 𝑟𝑃)に対して𝜋 = (ℎ, 𝑏)を受理したら
𝐴′ = (ℎ𝑟𝑠′𝑃 + 𝑏𝑟𝑃, ℎ𝑠𝑃 + 𝑏𝑃). 𝑡 = 𝑏 + ℎ𝑠とすると
ℎ𝑟𝑠′ + 𝑏𝑟 = 𝑡 + ℎ 𝑠′ − 𝑠 𝑟なので
𝐻 𝑋, 𝐶, 𝑡 + ℎ 𝑠′ − 𝑠 𝑇, 𝑡𝑃 = ℎ → 𝑠′ = 𝑠
𝐷𝑒𝑐 𝑐 = 0のZKP
19 / 19
Ad

More Related Content

What's hot (20)

BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
MITSUNARI Shigeo
 
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
MITSUNARI Shigeo
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
 
楕円曲線入門 トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門 トーラスと楕円曲線のつながり
MITSUNARI Shigeo
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
shindannin
 
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
trmr
 
Rolling hash
Rolling hashRolling hash
Rolling hash
HCPC: 北海道大学競技プログラミングサークル
 
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
 
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端
Yoichi Iwata
 
『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算
MITSUNARI Shigeo
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
 
ユークリッド最小全域木
ユークリッド最小全域木ユークリッド最小全域木
ユークリッド最小全域木
理玖 川崎
 
高速フーリエ変換
高速フーリエ変換高速フーリエ変換
高速フーリエ変換
AtCoder Inc.
 
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
Kenshi Abe
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
 
暗認本読書会4
暗認本読書会4暗認本読書会4
暗認本読書会4
MITSUNARI Shigeo
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
okuraofvegetable
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
MITSUNARI Shigeo
 
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
MITSUNARI Shigeo
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
 
楕円曲線入門 トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門 トーラスと楕円曲線のつながり
MITSUNARI Shigeo
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
shindannin
 
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
trmr
 
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端
Yoichi Iwata
 
『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算
MITSUNARI Shigeo
 
ユークリッド最小全域木
ユークリッド最小全域木ユークリッド最小全域木
ユークリッド最小全域木
理玖 川崎
 
高速フーリエ変換
高速フーリエ変換高速フーリエ変換
高速フーリエ変換
AtCoder Inc.
 
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
Kenshi Abe
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
 

Similar to 暗認本読書会13 advanced (20)

Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)
Nobutaka Shimizu
 
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
MITSUNARI Shigeo
 
University CodeSprint 4 - Magic value
University CodeSprint 4 - Magic valueUniversity CodeSprint 4 - Magic value
University CodeSprint 4 - Magic value
satanic
 
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
MITSUNARI Shigeo
 
Computing for Isogeny Kernel Problem by Groebner Basis
Computing for Isogeny Kernel Problem by Groebner BasisComputing for Isogeny Kernel Problem by Groebner Basis
Computing for Isogeny Kernel Problem by Groebner Basis
Yasu Math
 
第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
 
Seccamp2020L1
Seccamp2020L1Seccamp2020L1
Seccamp2020L1
ChihiroSasaki3
 
PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5
sleepy_yoshi
 
A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...
A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...
A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...
Cryolite
 
A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...
A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...
A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...
Cryolite
 
パターン認識と機械学習 13章 系列データ
パターン認識と機械学習 13章 系列データパターン認識と機械学習 13章 系列データ
パターン認識と機械学習 13章 系列データ
emonosuke
 
超複素数
超複素数超複素数
超複素数
Horiguchi Shuhei
 
情報オリンピック夏合宿発表
情報オリンピック夏合宿発表情報オリンピック夏合宿発表
情報オリンピック夏合宿発表
Kazuma Mikami
 
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
AtCoder Inc.
 
ニューラル論文を読む前に
ニューラル論文を読む前にニューラル論文を読む前に
ニューラル論文を読む前に
Hayahide Yamagishi
 
[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis
[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis
[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis
Deep Learning JP
 
Sized Linear Algebra Package のチュートリアル
Sized Linear Algebra Package のチュートリアルSized Linear Algebra Package のチュートリアル
Sized Linear Algebra Package のチュートリアル
Akinori Abe
 
自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章
Hiroki Mizukami
 
Global optimality in neural network training
Global optimality in neural network trainingGlobal optimality in neural network training
Global optimality in neural network training
Fujimoto Keisuke
 
Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)
Nobutaka Shimizu
 
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
MITSUNARI Shigeo
 
University CodeSprint 4 - Magic value
University CodeSprint 4 - Magic valueUniversity CodeSprint 4 - Magic value
University CodeSprint 4 - Magic value
satanic
 
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
MITSUNARI Shigeo
 
Computing for Isogeny Kernel Problem by Groebner Basis
Computing for Isogeny Kernel Problem by Groebner BasisComputing for Isogeny Kernel Problem by Groebner Basis
Computing for Isogeny Kernel Problem by Groebner Basis
Yasu Math
 
第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)第15回 配信講義 計算科学技術特論B(2022)
第15回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
 
PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5
sleepy_yoshi
 
A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...
A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...
A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...
Cryolite
 
A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...
A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...
A Fast and Space-Efficient Algorithm for Calculating Deficient Numbers (a.k.a...
Cryolite
 
パターン認識と機械学習 13章 系列データ
パターン認識と機械学習 13章 系列データパターン認識と機械学習 13章 系列データ
パターン認識と機械学習 13章 系列データ
emonosuke
 
情報オリンピック夏合宿発表
情報オリンピック夏合宿発表情報オリンピック夏合宿発表
情報オリンピック夏合宿発表
Kazuma Mikami
 
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
AtCoder Inc.
 
ニューラル論文を読む前に
ニューラル論文を読む前にニューラル論文を読む前に
ニューラル論文を読む前に
Hayahide Yamagishi
 
[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis
[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis
[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis
Deep Learning JP
 
Sized Linear Algebra Package のチュートリアル
Sized Linear Algebra Package のチュートリアルSized Linear Algebra Package のチュートリアル
Sized Linear Algebra Package のチュートリアル
Akinori Abe
 
自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章
Hiroki Mizukami
 
Global optimality in neural network training
Global optimality in neural network trainingGlobal optimality in neural network training
Global optimality in neural network training
Fujimoto Keisuke
 
Ad

More from MITSUNARI Shigeo (20)

暗認本読書会11
暗認本読書会11暗認本読書会11
暗認本読書会11
MITSUNARI Shigeo
 
暗認本読書会10
暗認本読書会10暗認本読書会10
暗認本読書会10
MITSUNARI Shigeo
 
暗認本読書会9
暗認本読書会9暗認本読書会9
暗認本読書会9
MITSUNARI Shigeo
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
 
暗認本読書会8
暗認本読書会8暗認本読書会8
暗認本読書会8
MITSUNARI Shigeo
 
暗認本読書会7
暗認本読書会7暗認本読書会7
暗認本読書会7
MITSUNARI Shigeo
 
暗認本読書会6
暗認本読書会6暗認本読書会6
暗認本読書会6
MITSUNARI Shigeo
 
暗認本読書会5
暗認本読書会5暗認本読書会5
暗認本読書会5
MITSUNARI Shigeo
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
MITSUNARI Shigeo
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
MITSUNARI Shigeo
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
MITSUNARI Shigeo
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
MITSUNARI Shigeo
 
LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介
MITSUNARI Shigeo
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
 
ゆるバグ
ゆるバグゆるバグ
ゆるバグ
MITSUNARI Shigeo
 
集約署名
集約署名集約署名
集約署名
MITSUNARI Shigeo
 
暗号化したまま計算できる暗号技術とOSS開発による広がり
暗号化したまま計算できる暗号技術とOSS開発による広がり暗号化したまま計算できる暗号技術とOSS開発による広がり
暗号化したまま計算できる暗号技術とOSS開発による広がり
MITSUNARI Shigeo
 
自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介
MITSUNARI Shigeo
 
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...
MITSUNARI Shigeo
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
MITSUNARI Shigeo
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
MITSUNARI Shigeo
 
LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介
MITSUNARI Shigeo
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
 
暗号化したまま計算できる暗号技術とOSS開発による広がり
暗号化したまま計算できる暗号技術とOSS開発による広がり暗号化したまま計算できる暗号技術とOSS開発による広がり
暗号化したまま計算できる暗号技術とOSS開発による広がり
MITSUNARI Shigeo
 
自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介
MITSUNARI Shigeo
 
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...
MITSUNARI Shigeo
 
Ad

暗認本読書会13 advanced

  • 1. 暗認本読書会13 advanced 準同型暗号, DDH, ZKPおかわり 2021/12/23 https://anninbon.connpass.com/ 光成滋生
  • 2. • 楕円曲線 • 演算 • ECDLPとECDH • 楕円ElGamal暗号 • 楕円Lifted-ElGamal暗号 • 準同型暗号 • 安全性とDDH • ZKP • Σプロトコル • 𝐷𝑒𝑐 𝑐 = 0の場合 • Fiat-Shamir heuristic 目次
  • 3. • このスライドで使う共通の記号 • 𝐸 : 楕円曲線, 𝑃 : 𝐸上の点 • 𝐺 = {0, 𝑃, 2𝑃, … , 𝑝 − 1 𝑃}とする(𝑝𝑃 = 0) • トーラス上を巻きつきながら進み𝑝倍すると𝑂に戻る • 計算が容易なもの 楕円曲線の性質の復習 スカラー倍 𝑎 𝑃 𝑎𝑃 加算 𝑎𝑃 𝑏𝑃 𝑎 + 𝑏 𝑃
  • 4. • 楕円離散対数問題ECDLP(Discrete Logarithm Problem) • 与えられた𝑃, 𝑄 ∈ 𝐺に対して𝑄 = 𝑎𝑃となる𝑎を求める • 𝑎 = log𝑃 𝑄と表す • ECDHP(Diffie Hellman Problem) • 与えられた𝑃, 𝑎𝑃, 𝑏𝑃に対して𝑎𝑏𝑃を求める • 楕円曲線暗号はECDLPやECDHPが困難なことを仮定 楕円曲線暗号で使う計算困難な問題 DLP 𝑃 𝑎𝑃 𝑎 × DHP 𝑎𝑃 𝑏𝑃 𝑎𝑏𝑃 ×
  • 5. • 鍵生成 • 𝑠 : 秘密鍵, 𝑄 = 𝑠𝑃 : 公開鍵 • 暗号化 • 平文は楕円曲線の点𝑀 ∈ 𝐺 乱数𝑟をとり𝐸𝑛𝑐 𝑀 = (𝑀 + 𝑟𝑄, 𝑟𝑃) とする • 復号 • 暗号文𝐶 = (𝐴, 𝐵)に対して𝐷𝑒𝑐 𝐶 = 𝐴 − 𝑠𝐵とする • 正当性 • 暗号化して復号したら元に戻ること • 𝐷𝑒𝑐 𝐸𝑛𝑐 𝑀 = 𝐷𝑒𝑐 𝑀 + 𝑟𝑄, 𝑟𝑃 = (𝑀 + 𝑟𝑄) − 𝑠 𝑟𝑃 = 𝑀 • 注意 • 暗号文が整数でなく楕円曲線の点なのに注意(使いづらい) 楕円ElGamal暗号
  • 6. • 攻撃者は公開鍵と暗号文を知っている • 𝑃, 𝑄 = 𝑠𝑃, 𝐸𝑛𝑐 𝑀 = (𝑀 + 𝑟𝑄, 𝑟𝑃) • 𝑃と𝑄 = 𝑠𝑃と𝑟𝑃から𝑟𝑄 = 𝑟𝑠𝑃を求められると𝑀が分かる • 「𝑃, 𝑠𝑃, 𝑟𝑃から𝑟𝑠𝑃」これはECDHP 楕円ElGamal暗号の安全性
  • 7. • 平文を楕円曲線ではなく整数𝑚とする 𝑀の代わりに𝑚𝑃を使う • 鍵生成(前ページと同じ) • 𝑠 : 秘密鍵, 𝑄 = 𝑠𝑃 : 公開鍵 • 暗号化 • 平文𝑚に対し, 乱数𝑟をとって𝐸𝑛𝑐 𝑚; 𝑟 = (𝑚𝑃 + 𝑟𝑄, 𝑟𝑃)とする • 𝑟を省略して𝐸𝑛𝑐(𝑚)とも書く • 復号 • 暗号文𝐶 = (𝐴, 𝐵)に対して𝑑𝑒𝑐 𝐶 = 𝐴 − 𝑠𝐵とする • 𝑑𝑒𝑐 𝐸𝑛𝑐 𝑚 = 𝑚𝑃 + 𝑟𝑄 − 𝑠 𝑟𝑃 = 𝑚𝑃なので復号ではない 𝐷𝑒𝑐 𝐶 = log𝑃 𝑑𝑒𝑐 𝐶 とすると • 𝐷𝑒𝑐 𝐸𝑛𝑐 𝑚 = log𝑝 𝑚𝑃 = 𝑚となり戻る 楕円Lifted-ElGamal暗号
  • 8. • 𝐷𝑒𝑐 𝐶 = log𝑃(𝑑𝑒𝑐 𝐶 )っておかしくね? • 𝑚𝑃から𝑚を求めるのにDLPを使ってる • DLPが難しいんじゃなかったのか • 答え • Yes. • だから楕円Lifted ElGamal暗号は 「𝑚が大きくない」範囲しか使えない • 𝑚 ≤ 232程度なら実用的に使える程度に求められる • 数十MBのテーブルを使うが • その代わりに面白い性質が成り立つ 疑問
  • 9. • 再掲載 • 鍵生成 𝑠 : 秘密鍵, 𝑄 = 𝑠𝑃 : 公開鍵 • 暗号化 𝐸𝑛𝑐 𝑚; 𝑟 = (𝑚𝑃 + 𝑟𝑄, 𝑟𝑃) ; 𝑟は乱数 • 復号𝐷𝑒𝑐( 𝐴, 𝐵 = log𝑝 𝐴 − 𝑠𝐵 • 2個の暗号文𝐸𝑛𝑐 𝑚1; 𝑟1 , 𝐸𝑛𝑐(𝑚2; 𝑟2)を考える • それらの要素ごとの足し算をやってみる • 𝐸𝑛𝑐 𝑚1; 𝑟1 + 𝐸𝑛𝑐 𝑚2; 𝑟2 = 𝑚1𝑃 + 𝑟1𝑄, 𝑟1𝑃 + 𝑚2𝑃 + 𝑟2𝑄, 𝑟2𝑃 = 𝑚1𝑃 + 𝑚2𝑃 + 𝑟1𝑄 + 𝑟2𝑄, 𝑟1𝑃 + 𝑟2𝑃 = 𝑚1 + 𝑚2 𝑃 + 𝑟1 + 𝑟2 𝑄, 𝑟1 + 𝑟2 𝑃 = 𝐸𝑛𝑐(𝑚1 + 𝑚2; 𝑟1 + 𝑟2) • 暗号文同士を足したら平文同士を足した結果の暗号文! • 加法準同型暗号 Lifted ElGamal暗号は加法準同型暗号
  • 10. • 攻撃者と挑戦者アリスのゲームIND(istinguishability) • 攻撃者が2個の平文𝑚1, 𝑚2を選びアリスに渡す • アリスはどちらかの平文を選び、その暗号文𝑐を攻撃者に渡す • 攻撃者は暗号文𝑐がどちらの平文を暗号化したものか当てる • 当てたら攻撃者の勝ち(攻撃成功) • 攻撃者に非常に有利なゲーム • 攻撃の種類 • 選択平文攻撃CPA • 自分が選んだ平文の暗号文を取得できる(PKEはいつでも可能) • 選択暗号文攻撃CCA(Chosen Ciphertext Attack) • 自分が選んだ暗号文(≠ターゲット暗号文)の平文を取得できる 公開鍵暗号PKEに求められる安全性要件
  • 11. • CCA1 ; ゲーム開始前に情報収集可 • CCA2 ; ゲーム開始後に情報収集可(適応的CCA) • CCA1/2に対してアリスが勝つならIND-CCA1/2安全 • 準同型暗号はIND-CCA2安全にはなり得ない • 攻撃者は𝑐に対して𝑐′ = 𝑐 + 𝐸𝑛𝑐(0)の答えを教えてもらえる • 準同型演算するために「評価鍵」が必要なHEもある IND-CCA1とIND-CCA2
  • 12. • Lifted ElGamal暗号 • 𝑑𝑒𝑐 𝑐 = 0か否か当てられてはいけない(IND-CPA) • 𝐸𝑛𝑐 0; 𝑟 = 𝑟𝑄, 𝑟𝑃 • 𝐸𝑛𝑐 𝑚; 𝑟 = (𝑚𝑃 + 𝑟𝑄, 𝑟𝑃) • 暗号文の一つ目の成分を𝑇 = 𝑚𝑃 + 𝑟𝑄とすると • 「𝑃, 𝑠𝑃, 𝑟𝑃, 𝑇」givenで𝑇 = 𝑟𝑠𝑃か否か判れば 𝑑𝑒𝑐 𝑐 = 0か≠ 0か判別できる→安全でない • DDH(Decisional DH) • 「𝑃, 𝑎𝑃, 𝑏𝑃, 𝑇」givenのとき「𝑇 = 𝑎𝑏𝑃か否か」を判定せよ • 従来のDHはCDH(Computational DH)という • DDHが困難ならLifted ElGamal暗号はIND-CPA安全 Lifted ElGamal暗号で考えてみると
  • 13. • 準同型暗号で投票しよう • 賛成(1)か反対(0)の暗号文を集計サーバに送る • 集計してから復号 • 攻撃者が𝐸𝑛𝑐(10)を 送ったら? • 要件 • 暗号文𝑐が𝐷𝑒𝑐 𝑐 ∈ {0,1}であることは知りたい • でも、どちらかは知りたくない/知られないようにしたい • 「確認する人Cに暗号文𝑐を渡して正しく復号していること」 𝐷𝑒𝑐 𝑐 = 𝑚を確認したい • 𝐷𝑒𝑐 𝑐 − 𝐸𝑛𝑐 𝑚 = 0だから𝐷𝑒𝑐 𝑐 = 0だけ分かれば十分 ゼロ知識証明ZKP
  • 14. • 公開情報𝑋に対応する秘密の知識𝑊であることを 𝑋, 𝑊 ∈ 𝑅と表す(Rはrelation) • 例 : 𝑄 = 𝑥𝑃のとき𝑋 = (𝑃, 𝑄), 𝑊 = 𝑥, Rは𝐷𝐿𝑃𝑃 Σプロトコル judge 𝐴 証明者P : 𝑊を知っている 検証者V 乱数ℎ 𝐵 受理 or 拒絶 𝑋の共有
  • 15. • 完全性 • 証明者Pが 𝑋, 𝑊 ∈ 𝑅となる𝑊を知っていたら検証者Vは受理 • 健全性 • 𝐴, ℎ, 𝐵 , (𝐴, ℎ′, 𝐵′) (ℎ ≠ ℎ′)が受理されれば 𝑋, 𝑊 ∈ 𝑅となる𝑊 を計算できる • (special honest-verifier) ゼロ知識性 • 𝑊を知らずに𝑋に対して受理する(𝐴, ℎ, 𝐵)を本物そっくりにシ ミュレートする𝑀がある • (𝐴, ℎ, 𝐵)の情報は𝑊が無くても得られるものと同じと考える Σプロトコルの要件
  • 16. • 公開鍵𝑋 = (𝑄, 𝑃), 𝑄 = 𝑠𝑃, 暗号文𝐶 = 𝑆, 𝑇 = (𝑟𝑄, 𝑟′𝑃) • 𝐷𝑒𝑐 𝐶 = 0であるためには𝑟𝑄 − 𝑠𝑟′ 𝑃 = 0つまり𝑟 = 𝑟′ • (秘密鍵𝑠を持つ)証明者P : 𝑟は未知だが𝑟 = 𝑟′は分かる • P→V : 乱数𝑡をとり𝐴 = (𝑡𝑇, 𝑡𝑃)を送る • V→P : 乱数ℎを送る • P→V : 𝑏 = 𝑡 − ℎ𝑠を送りVはℎ(𝑆, 𝑄) + 𝑏(𝑇, 𝑃) = 𝐴なら受理 • 完全性 • 正しければ𝑙ℎ𝑠 = ℎ𝑟𝑠𝑃, ℎ𝑠𝑃 + (𝑏𝑟𝑃, 𝑏𝑃) = (𝑡𝑟𝑃, 𝑡𝑃) • 健全性 • 𝐴, ℎ, 𝑏 , (𝐴, ℎ′, 𝑏′)を受理(ℎ ≠ ℎ′)すれば𝐶 = (𝑟𝑠′𝑃, 𝑟𝑃)に対して ℎ 𝑟𝑠′𝑃, 𝑠𝑃 + 𝑏 𝑟𝑃, 𝑃 = 𝐴 = ℎ′ 𝑟𝑠′𝑃, 𝑠𝑃 + 𝑏′(𝑟𝑃, 𝑃)より ℎ𝑟𝑠′ + 𝑏𝑟 = ℎ′𝑟𝑠′ + 𝑏′𝑟, ℎ𝑠 + 𝑏 = ℎ′𝑠 + 𝑏′より𝑠 = 𝑠′ 𝐷𝑒𝑐 𝐶 = 0のΣプロトコル
  • 17. • 乱数ℎ, 𝑏をとり𝑡 = 𝑏 + ℎ𝑠, 𝐴 = (𝑡𝑟𝑃, 𝑡𝑃)とすると (𝐴, ℎ, 𝑏)は受理される • ℎ 𝑟𝑄, 𝑄 + 𝑏 𝑟𝑃, 𝑃 = ℎ𝑟𝑠 + 𝑏𝑟 𝑃, ℎ𝑠 + 𝑏 𝑃 = (𝑡𝑟𝑃, 𝑡𝑃) シミュレータ
  • 18. • Σプロトコルで検証者が乱数ℎを送る代わりに パラメータのハッシュ値を利用する • 証明者がℎを制御できないなら検証者が乱数を送らなくてもよ いのではという理屈 • ハッシュ関数が理想形であるランダムオラクルモデルを仮定 • 証明者Pが証明𝜋を送るだけでよくなる • 対話証明の非対話化 Fiat-Shamir heuristic
  • 19. • 再掲 : 公開情報𝑋 = (𝑄, 𝑃), 𝑄 = 𝑠𝑃, 暗号文𝐶 = (𝑆, 𝑇) • P→V : 乱数𝑡をとり𝐴 = (𝑡𝑇, 𝑡𝑃)を送る • V→P : 乱数ℎを送る • P→V : 𝑏 = 𝑡 − ℎ𝑠を送りVはℎ(𝑆, 𝑄) + 𝑏(𝑇, 𝑃) = 𝐴なら受理 • FS変換 • 証明者 : 乱数𝑡を𝐴 = (𝑡𝑇, 𝑡𝑃), ℎ = 𝐻(𝑋, 𝐶, 𝐴)とする 𝑏 = 𝑡 − ℎ𝑠として𝜋 = (ℎ, 𝑏)を検証者に送る • 検証者 : 𝐴′ = ℎ(𝑆, 𝑄) + 𝑏(𝑇, 𝑃), 𝐻 𝑋, 𝐶, 𝐴′ = ℎなら受理 • 𝐶 = (𝑟𝑠′ 𝑃, 𝑟𝑃)に対して𝜋 = (ℎ, 𝑏)を受理したら 𝐴′ = (ℎ𝑟𝑠′𝑃 + 𝑏𝑟𝑃, ℎ𝑠𝑃 + 𝑏𝑃). 𝑡 = 𝑏 + ℎ𝑠とすると ℎ𝑟𝑠′ + 𝑏𝑟 = 𝑡 + ℎ 𝑠′ − 𝑠 𝑟なので 𝐻 𝑋, 𝐶, 𝑡 + ℎ 𝑠′ − 𝑠 𝑇, 𝑡𝑃 = ℎ → 𝑠′ = 𝑠 𝐷𝑒𝑐 𝑐 = 0のZKP 19 / 19