- ハッシュ関数H、生成元Gは合意済み
- m' = LSB(H(m))も合意済み
- x, x1, x2: 秘密鍵
- P1, P2の公開鍵は、署名検証で使うため省略
- nonce k を生成
- R = kG = (rx, ry)を計算
- r = rxを得る
- s = k^-1 (m' + x * r)を計算 5. 署名(r, s)を出力
-
Alice: Bobへckey = Enc_pkA(x1)を渡す
-
Alice: nonce k1を生成
Bob: nonce k2を生成
-
Alice:
R1 = k1 * G= (r1, _)を計算
r1R1をBobへ伝達
Bob:
R2 = k2 * G= (r2, _)を計算
r2R2をAliceへ伝達 -
Alice: R =
r2 * R1k1 * R2を計算
Bob: R =r1 * R2k2 * R1 を計算AliceとBobで同じRを合意できる
→R = (rx, ry)からr = rxを得る -
Bob: 署名sのもとになるc3を計算
c1 = Enc_pkA(k2^-1 * m' + ρq)
※Aliceの公開鍵pkAを使った
c2 = ckey ⊙ Enc_pkA(x2 * r * k2^-1)
※⊙は、乗法準同型性を満たす演算。WP上では、ckey^(x2rk2^-1) c3 = c1 ⊕ c2
= Enc_pkA (k2^-1 * m' + ρq + x1 * x2 * r * k2^-1)
※⊕は、加法準同型性を満たす演算
Alice: 署名sの計算
s = k1^-1 * Dec_pkA(c3)
= k1^-1 * (k2^-1 * m' + ρq + x1 * x2 * r * k2^-1)
= (k1k2)^-1 (m' + (x1X2) * r)
※ECDSAとの対応:
k = k1k2
x = x1x2 -
署名(r, x)を出力
Lindell, Yehuda. "Fast Secure Two-Party ECDSA Signing." Annual International Cryptology Conference. Springer, Cham, 2017.