XCR署名
構成(4m-Schnorr)
(q, g) ← GenG(1k)
各パーティBは鍵ペア(B, b)をもつ。(B = gb)
- 検証者A: Bを入力として、
- 証明者B: (B, b)を入力として、Xを受け取ると、
- 検証者A: Yを受け取ると、
- 証明者B: eを受け取ると、
- s = y + e b mod q, S = Xs, SをBに送信。
- 検証者A: Sを受け取ると、
構成(XCR署名)
(q, g) ← GenG(1k)
各パーティBは鍵ペア(B, b)をもつ。(B = gb)
G : {0,1}* → {0,1}l : ハッシュ関数(l = |q|/2, ハーフサイズ)
- 検証者A: (m, B)を入力として、
- x ← Zq, X = gx、(m, X)をBに送信。
- 署名者B: (B, b)を入力として、(m, X)を受け取ると、
- y ← Zq, Y = gy, σ = Xy + G(Y,m) b
- (Y,σ)をAに送信。
- 検証者A: (Y,σ)を受け取ると、
- Y ≠ ⊥ ∧ (Y BG(Y,m))x =? σ : valid を出力。
Experiment ForgeXCRF(k):
- B, X0(=gx0) ← <g>
- (B, X0)を入力として、偽造者Fを起動する:
- Fが署名オラクルBに m を問い合わせたら、
- y ← Zq, Y = gy.
- Y を答え、Fから X を受け取る。
- σ = Xy + G(Y,m) b を返答する。
- Fが (Y0, m0, σ0) を出力して停止したら、以下がともに成り立つとき(のみ)1を出力:
- Y0 ≠ ⊥ ∧ (Y0 BG(Y0,m0))x0 =? σ0
- (Y0,m0) はオラクルBの返答に含まれない。
定義(XCR署名の安全性)
XCR署名が安全であるとは、どのようなPPT偽造者Fについても Pr[ ForgeXCRF(k) ] が(kについて)ネグリジブルであることをいう。
定理(XCR署名)
GenGに対する計算DH仮定が成り立つならば、Gについてのランダムオラクルモデルのもとで、
XCR署名は安全である。
双対XCR署名
構成(双対XCR署名)
(q, g) ← GenG(1k)
各パーティAは鍵ペア(A, a)をもつ。(A = ga)
G : {0,1}* → {0,1}l : ハッシュ関数(l = |q|/2, ハーフサイズ)
- A: (A, a, m1)を入力として、
- x ← Zq, X = gx、(X, m1)をBに送信。
- B: (B, b, m2)を入力として、
- y ← Zq, Y = gy, (Y, m2)をAに送信。
- A: (Y, m2)を受け取ると、
- d = G(X, m2), e = G(Y, m1)
- (Y Be)x + d aを出力。
- B: (X, m1)を受け取ると、
- d = G(X, m2), e = G(Y, m1)
- (X Ad)y + e bを出力。
Experiment ForgeDXCRF(k):
- B = gb, X0 = gx0 ← <g>
- (B, X0)を入力として、(A(=ga), a)を補助入力として、偽造者Fを起動する:
- Fが署名オラクルBに (m, m') を問い合わせたら、
- y ← Zq, Y = gy.
- Y を答え、Fから X を受け取る。
- d = G(X, m'), e = G(Y, m)
- σ = (X Ad)y + e b を返答する。
- Fが (Y0, m0, m1, σ) を出力して停止したら、以下がともに成り立つとき(のみ)1を出力:
- d = G(X0, m1), e = G(Y0, m0)について、
- Y0 ≠ ⊥ ∧ (Y0 Be)x0 + a d =? σ
- (Y0,m0) はオラクルBの返答に含まれない。
定義(双対XCR署名の安全性)
双対XCR署名が安全であるとは、どのようなPPT偽造者Fについても Pr[ ForgeDXCRF(k) ] が(kについて)ネグリジブルであることをいう。
定理(双対XCR署名)
GenGに対する計算DH仮定が成り立つならば、Gについてのランダムオラクルモデルのもとで、
双対XCR署名は安全である。ただし、A ≠ B とする。
鍵共有プロトコルHMQV
構成(HMQV)
(q, g) ← GenG(1k)
各パーティAは鍵ペア(A, a)をもつ。(A = ga)
G : {0,1}* → {0,1}l : ハッシュ関数(l = |q|/2, ハーフサイズ)
H : {0,1}* → {0,1}k : ハッシュ関数
- A: (A, B)を入力として、
- x ← Zq, X = gx、(A, B, X)をBに送信。
- B: (A, B, X)を受け取ると、
- y ← Zq, Y = gy、(B, A, Y)をAに送信。
- d = G(X, B), e = G(Y, A)
- (※ 自身で生成した群要素Yとピアの公開鍵AとをセットにしてハッシュGに投入する。)
- σB = (X Ad)y + e b, K = H(σB)
- (※ σBはメッセージ(B,A)のBによる双対XCR署名。)
- (B, A, (B,A,Y,X), K)を出力。 (※ (B,A,Y,X)はセッション識別子)
- A: (B, A, Y)を受け取ると、
- e = G(Y, A), d = G(X, B)
- σA = (Y Be)x + d a, K = H(σA)
- (※ σAはメッセージ(A,B)のAによる双対XCR署名。)
- (A, B, (A,B,X,Y), K)を出力。
定理(HMQV)
GenGに対する計算DH仮定が成り立つならば、G,Hについてのランダムオラクルモデルのもとで、
HMQVプロトコルは
Canetti-KrawczykモデルでフォーワードなしのSK安全性をもつ。
最終更新:2009年09月01日 16:56