数字签名算法的安全性研究:从DSA到变体方案
1. 引言
数字签名在信息安全领域扮演着至关重要的角色,它能够确保消息的真实性、完整性和不可否认性。其中,数字签名算法(DSA)被广泛应用于美国联邦数字签名标准中。
1.1 数字签名算法(DSA)
DSA的基本原理基于数论和密码学的相关知识。设 (p) 和 (q\geq3) 为素数,且 (q|p - 1)。 (F_p) 和 (F_q) 分别表示具有 (p) 和 (q) 个元素的有限域。签名者选择一个秘密密钥 (\alpha\in F_q^ ),并计算公钥 (A = \lfloor g^{\alpha}\rfloor_p),其中 (g\in F_p) 是一个乘法阶为 (q) 的公共元素。
对于整数 (k),定义函数 (r(k)=\left(\left\lfloor g^k\right\rfloor_p\right)\bmod q)。对于随机元素 (k\in F_q^ )(称为随机数)和消息 (\mu\in M),定义函数 (s(k,\mu)=\left(k^{-1}(h(\mu) + \alpha r(k))\right)\bmod q),则 ((r(k), s(k,\mu))) 就是消息 (\mu) 使用随机数 (k) 的DSA签名。
1.2 对DSA的格攻击
Howgrave - Graham和Smart发现,如果对于少量的签名,知道随机数 (k) 的一些最高有效位,就可以应用LLL格约化算法来启发式地恢复秘密密钥 (\alpha),并且他们通过数值结果证实了攻击的有效性。
Nguyen揭示了这个问题与Boneh和Venkatesan引入的隐藏