跳到主要内容

3.5. Rationale (原理)

3.5. Rationale (原理)

前面几节中描述的过程模仿了 [X9.62] 附录 D 中描述的 k 的 "批准" 生成过程, 使用 "HMAC_DRBG" 伪随机数生成器.主要区别在于我们使用私钥 x 和哈希消息 H(m) 的连接作为伪随机数生成器 (PRNG) 种子.如果使用 n 位的 "安全级别", 则 HMAC_DRBG 应使用至少 n+64 位的种子熵; 但是, 密钥 x 也应该使用那么多熵生成, 并且 x 的长度是 qlen, 它至少等于 2*n, 因此大于 n+64 (DSA 和 ECDSA, 如标准所指定, 要求 qlen >= 160).因此可以认为确定性 ECDSA 满足 [X9.62] 附录 D 的熵要求.

我们使用 bits2octets(H(m)) 而不是 H(m) 是为了简化集成.实际上, 许多现有的签名系统将消息哈希卸载; 签名引擎 (可以访问私钥) 仅接收 H(m).在某些应用中, 数据带宽受到限制, 仅将 H(m) 的前 qlen 位传输到签名引擎, 基于 bits2int 转换无论如何都会忽略后续位.可能在某些系统中, 截断的 H(m) 可以在外部对 q 取模, 因为这是 (EC)DSA 对哈希消息执行的第一件事.通过 bits2octets 的定义, 确定性 (EC)DSA 可以使用相同的输入应用.