数字签名方案与公钥基础设施详解
1. 数字签名算法概述
EdDSA 是 Schnorr 签名的高效标准化版本,它使用特定的椭圆曲线组。而数字签名算法(DSA)和椭圆曲线数字签名算法(ECDSA)则基于不同类别的离散对数问题,自 1991 年就已出现,并且都被纳入了美国国家标准与技术研究院(NIST)发布的当前数字签名标准(DSS)中,不过在 2019 年,NIST 提议弃用 DSA。
1.1 基础识别方案
假设 G 是一个素数阶 q 的循环群,生成元为 g。在这个识别方案中,证明者的私钥是 x,公钥是 (G, q, g, y),其中 y = g^x。具体步骤如下:
1. 证明者选择均匀的 k ∈ Z∗q,并发送 I := g^k。
2. 验证者选择并发送均匀的 α, r ∈ Zq 作为挑战。
3. 证明者发送 s := [k^(-1) · (α + xr) mod q] 作为响应。
4. 验证者在 s ≠ 0 且 g^(αs^(-1)) · y^(rs^(-1)) = I 时接受。
这个识别方案在离散对数问题相对于 G 较难的情况下是安全的。诚实执行的记录可以被模拟,只需选择均匀的 α, r ∈ Zq 和 s ∈ Z∗q,然后设置 I := g^(αs^(-1)) · y^(rs^(-1))。如果攻击者能对不同的挑战给出正确响应,就可以计算出 logg y。
1.2 DSA/ECDSA 签名方案
DSA/ECDSA 签名方案是通过将上述识别方案“折叠”成签名者运行的非交互式算法构建的。具体转换如下:
- 设置 α := H(m),其中 m 是要签名的消息,H 是密
订阅专栏 解锁全文
1953



被折叠的 条评论
为什么被折叠?



