跳到主要内容

4. Security Considerations (安全考虑)

4. Security Considerations (安全考虑)

密码学签名算法的正确实现和使用需要考虑许多参数。特别是, 私钥生成、存储、访问控制和处置都是敏感操作, 本文档不以任何方式处理这些问题。确定性 (EC)DSA 展示了如何在移除签名生成期间对强随机性来源或甚至任何随机性来源的需求的同时, 实现标准 DSA 或 ECDSA 签名方案的安全特性。

然而, 私钥生成绝对需要这样一个强随机源。在由于缺乏适当的随机性来源而要使用确定性 (EC)DSA 的情况下, 必须假设私钥是在外部生成并导入到签名生成系统中的, 或者是在随机性可用的上下文中生成的。例如, 可以想象一张智能卡在工厂中仍处于受控环境条件下时生成其私钥, 但一旦部署到现场, 在潜在攻击者手中时, 无法保证随机数据生成。

移除随机源要求和针对测试向量测试实现的能力增强了 DSA 和 ECDSA 签名者实现的安全性, 因为它们有助于避免难以测试的故障条件。确定性签名方案在其他情况下也可能有所帮助, 例如, 当使用相同密钥多次签名相同数据元素时避免虚假重复: 使用确定性签名方案, 每次都会生成相同的签名, 使重复检测变得更加容易。

相反, 缺乏随机化在某些高级协议中可能会产生不利影响, 例如, 在某些投票方案中与匿名性相关的协议。作为一个经验法则, 如果整体协议能够容忍另一个确定性签名方案, 特别是 PKCS #1 [RFC3447] (使用 "type 1" 填充, 而不是 PSS) 或 ISO 9796-2 [ISO-9796-2] 中指定的 RSA, 则确定性 DSA 或 ECDSA 可以代替真正的 DSA 或 ECDSA 使用, 而不会产生额外的安全问题。确定性 DSA 或 ECDSA 适用的协议列表包括 Transport Layer Security (传输层安全, TLS) [RFC5246], Secure SHell (安全外壳, SSH) Protocol [RFC4251], Cryptographic Message Syntax (加密消息语法, CMS) [RFC5652] 及其衍生产品, X.509 公钥基础设施 [RFC5280] 以及许多其他协议。

本文档中描述的构造被称为 "去随机化"。这已被提议用于各种签名方案。安全性取决于 k 的生成是否与随机预言机的输出无法区分。粗略地说, HMAC_DRBG 在该角色中是安全的, 只要 HMAC 表现为 PRF (伪随机函数)。有关 HMAC 和 HMAC_DRBG 安全性的详细信息, 请参阅 [H2008] 和 [B2006]。有关去随机化的更正式处理, 请参见 [LN2009]。

本文档中提出的确定性 (EC)DSA 的一个遗留问题是私钥 x 的 "双重使用", 既作为签名生成算法本身中的私钥, 又作为基于 HMAC_DRBG 的伪随机预言机的输入以生成 k 值。这要求 HMAC_DRBG 保持作为随机预言机, 即使当公钥 (从 x 计算得出) 也已知时。鉴于 HMAC 和离散对数之间缺乏共同结构, 这似乎是一个合理的假设。

每当攻击者可以准确测量实现的某些方面时, 例如执行签名操作所需的时间长度或签名操作的每个点所消耗的功率时, 侧信道攻击都是一个重要的考虑因素。本说明中描述的算法的确定性在某些形式的侧信道攻击中可能对攻击者有用, 因此实现应该使用防御措施以避免通过侧信道泄漏私钥。