0
応用数学解説
文献あり

離散対数の不一致を証明するゼロ知識証明

173
1

はじめに

本記事を読むために必要な知識:ゼロ知識証明の基礎

本記事では、『離散対数の不一致を証明するゼロ知識証明』[3]についてのべる。
『離散対数の不一致を証明するゼロ知識証明』とは、離散多数が一致しないことの、ゼロ知識証明である。

離散対数の不一致を証明するゼロ知識証明

『離散対数の不一致を証明するゼロ知識証明』は次の式を証明する。

gGs,tZph=gtのとき、
Gは巡回群。gは生成元。)

PK{(s):gsh}

を『離散対数の不一致を証明するゼロ知識証明』と呼ぶ。

ユースケース: ブラックリスト

このようなゼロ知識証明は、署名ベースのブラックリスト[2]に用いられる。署名ベースのブラックリスト(signature based revocation)とは、特定の署名をブラックリストに置くことで、その署名者(i.e., 署名者の持つ秘密鍵)を失効する方式である。このような失効方法は、匿名認証など署名者を特定できない場合などに、有効なである。例えば、匿名認証方式の一つであるEPID[2]ではこのような失効能力を持つ。これによりEPIDでは署名者の匿名性を担保したまま、署名者を失効することができる。

署名ベースのブラックリストで用いるゼロ知識証明

署名ベースのブラックリストでは、ブラックリストに登録されていないことをゼロ知識証明する。つまり過去に秘密鍵を用いて生成した署名が、ブラックリストに追加されてないことを証明する。具体的には以下の表の値のもと、次の式を証明する。

PK{(s):δs=σδ1s1σ1δRsRσR}

表記意味
ss$Zp署名者の持つ秘密鍵
R-失効リストの長さ
si-i番目に失効された秘密鍵
δδ$G署名の一部。ランダムに生成される。
δiδi$Gi番目に失効された署名の一部。ランダムに生成される。
σσ=δs署名の一部。sδから生成される。
σiσi=δisii番目に失効された署名の一部。ランダムに生成される。

前提知識:2つの離散対数に対するゼロ知識証明

前提知識として、『2つの離散対数に対するゼロ知識証明』[1]について紹介する。

2つの離散対数に対するゼロ知識証明

c,g,hGs,tZpのとき、
Gは巡回群。c,g,hG の元。)

PK{(a,b):c=gahb}

を『離散対数の不一致を証明するゼロ知識証明』と呼ぶ。

このゼロ知識証明は効率的かつ、よく知られたゼロ知識証明方式である。
なおこのゼロ知識証明の詳細については、本稿では説明しない。
詳細は[1]を参照してほしい。

離散対数の不一致を証明するゼロ知識証明

『離散対数の不一致を証明するゼロ知識証明』の手続きについてのべる。

前提

『離散対数の不一致を証明するゼロ知識証明』を説明する上で、以下の表記を扱う。

表記意味
ssZp離散対数1。証明者が保有。
ttZp離散対数2。証明者が保有しない。
ggG生成元1。公開情報。
htG生成元2。公開情報。
yy=gs累乗した値1。公開情報。
zz=ht累乗した値2。公開情報。
ββ$Zpラップする値。乱数。
αα=βsラップする値。
CC=(hs/z)C=1なら離散対数が一致するといえる値。
CC=Cβ=(hs/z)βC=1なら離散対数が一致するといえる値。Cをラップしている。

証明

証明者は以下の手順で検証者に、『離散対数の不一致を証明するゼロ知識証明』を証明する。

  1. 証明者はランダムにβ$Zpを選ぶ。

  2. 証明者はα=sβをそ計算する。

  3. 証明者はC=(hs/z)β ※を計算し、検証者に送信する。

  4. 証明者は以下のゼロ知識証明を検証者に証明する。
    PK{(a,b):C=hα(1z)β1=ga(1y)b}

C=(hs/z)β=(hsβ/zβ)=hα(1z)β

検証

検証者は以下の手順で証明者の、『離散対数の不一致を証明するゼロ知識証明』を検証する。

  • 検証者はC1を検証する。
  • 検証者はゼロ知識証明を検証する。

すべて検証できれば証明を受理し、検証できなければ証明を棄却する。

仕組み

『離散対数の不一致を証明するゼロ知識証明』は、
主に以下のコンセプトから構成される。

  • a. 離散対数が一致しない証明
    • 離散対数が一致しなければ、C1になるCを定義する。
    • 2つのステップを実現できれば、離散対数が一致しないことを証明できる
      1. C1であること
      2. Cが正しく生成されたこと
    • 課題:Cを提供するとゼロ知識性が満たせなくなる。
      • Cszhから決定的に求められるため。
  • b. CをラップしたCの提供
    • Cを乱数βでラップしたCを計算する。
    • 課題:
      • よく知られた&&効率的なゼロ知識証明の形になっていない。
  • c. Cが正しく計算されていることのゼロ知識証明
    • ゼロ知識証明を用いて、αβを隠しながら、Cを証明する。
    • 『2つの離散対数に対するゼロ知識証明』を利用。
    • 課題
      • ラップにつかった値が正しいのかわからない
  • d. ラップにつかった値の正しさを証明する
    • αβが正しく生成されたことを証明する。
  • e. ここまでのゼロ知識証明まとめ

各コンセプトの詳細

a. 離散対数が一致しなければ、必ずC1になるCの定義

離散対数が一致しなければ、必ずC1 になるC

CGが存在し、C1のとき、
次の式を証明することで離散対数が一致しないと言える。

Cz=hs

また上式を変形し、

C=hsz

と表現できる。

このCを検証者に送信し、その正当性(上記の式)を証明すれば、
離散対数が一致しないことを証明できる。

課題

上記の式をゼロ知識証明するためには、次のような課題がある。

  • C を提供するとゼロ知識性が満たせなくなる。
    • C=hsz は 秘密鍵sを含む決定的な値(i.e., s,h,z)によって計算されてしまうため。
  • ゼロ知識性を満たすためには、乱数などでCをラップする必要がある。

b. CをラップしたCの提供

ゼロ知識性を満たすため、CをラップしたCを計算する。
具体的には、乱数βを用いてCラップする。

Cのラップ

このようなラップされた値は、以下の計算からC=(hsz)β となる.

  1. C=Cβ1
    • βで累乗(ラップ)する
  2. C=(hsz)β1
    • Cを展開する
課題

上記の式をゼロ知識証明するためには、次のような課題がある。

  • よく知られた&&効率的なゼロ知識証明の形になっていない。
    • 正直できるのかもわかっていない(著者)

c. Cが正しく計算されているゼロ知識証明

上の式を式変形することで、『2つの離散対数に対するゼロ知識証明』の形にする。

2つの離散対数に対するゼロ知識証明の形に変形

以下の計算からC=hα(1z)β となる。

  1. C=(hsz)β1
    • 元の値
  2. C=(hs1z)β1
    • 左辺の分子と分母を分解する
  3. C=(hβs)(1z)β1
    • 両辺をβをそれぞれカッコの中にもってくる
  4. C=hα(1z)β1
    • α=βsによって、累乗をまとめる
    • 2つの離散対数に対するゼロ知識証明と同じ形である。

よって以下のようなゼロ知識証明が導き出される。

Cの値に対するゼロ知識証明

Cが正しく生成されたことのゼロ知識証明は、
これは『2つの離散対数に対するゼロ知識証明』を用いて、
以下のように行われる。

PK{(α,β):C=hα(1z)β}

課題

以下のゼロ知識証明には以下の課題がある。

  • ラップにつかった値が正しいのかわからない。
    • αβが正しく計算されているのかわからない。

d. ラップにつかった値の正しさを証明する

ラップにつかった値α,βの関係が正しいことを証明する。
ここで証明する関係とは、α=βsである。

このような証明は、『2つの離散対数に対するゼロ知識証明』を用いて、以下のように行われる。

α=βsのゼロ知識証明

α=βs のゼロ知識証明は、
PK{(a,b):1=ga(1y)b}
によってできる。

これはa=βsが、以下の式のように1=ga(1y)bに、変形できるためである。

  1. a=βs
    • 証明したい関係
  2. ga=gbs
    • 両辺を対数として累乗する
  3. ga=yb
    • y=gsに置き換える
  4. 1=ga(1y)b
    • 両辺をybで割る

(e. ゼロ知識証明をまとめる)

まとめたゼロ知識証明

上記に述べた、ゼロ知識証明をまとめると、以下のようになる。

PK{(α,β):C=hα(1z)β1=ga(1y)b}

まとめ

本記事では、『離散対数の不一致を証明するゼロ知識証明』[3]について紹介した。

参考文献

[1]
Camenisch, Jan, and Victor Shoup., Practical verifiable encryption and decryption of discrete logarithms., Annual International Cryptology Conference. Springer, 2003
[2]
Chaum, David, and Torben Pryds Pedersen., Wallet databases with observers., Annual international cryptology conference. Springer, 1992
[3]
Brickell, Ernie, and Jiangtao Li., Enhanced privacy ID from bilinear pairing, Cryptology ePrint Archive , 2009
投稿日:20221221
更新日:20231211
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

akakou
akakou
16
17319
数学が…わかりません……ダレカタスケテー

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. はじめに
  2. ユースケース: ブラックリスト
  3. 前提知識:2つの離散対数に対するゼロ知識証明
  4. 離散対数の不一致を証明するゼロ知識証明
  5. 前提
  6. 証明
  7. 検証
  8. 仕組み
  9. 各コンセプトの詳細
  10. まとめ
  11. 参考文献