跳到主要内容

4. PureEdDSA, HashEdDSA, and Naming

4. PureEdDSA, HashEdDSA, and Naming (PureEdDSA, HashEdDSA 和命名)

EdDSA 算法的参数之一是"预哈希" (prehash) 函数。这可以是恒等函数, 产生称为 PureEdDSA 的算法, 或者是抗碰撞哈希函数 (如 SHA-512), 产生称为 HashEdDSA 的算法。

选择使用哪个变体取决于在 1) 碰撞弹性和 2) 创建签名的单遍接口之间哪个属性被认为更重要。碰撞弹性属性意味着即使计算哈希函数的碰撞是可行的, EdDSA 仍然是安全的。单遍接口属性意味着只需要对输入消息进行一次遍历就可以创建签名。PureEdDSA 需要对输入进行两次遍历。许多现有的 API、协议和环境假设数字签名算法只需要对输入进行一次遍历, 并且可能存在支持其他任何内容的 API 或带宽问题。

请注意, 在大多数签名使用情况下, 无论选择哪种签名算法, 都不可能进行单遍验证。这是因为大多数时候, 在验证签名之前无法处理消息, 这需要对整个消息进行一次遍历。

本文档指定了产生 HashEdDSA 变体 Ed25519ph 和 Ed448ph 以及 PureEdDSA 变体 Ed25519 和 Ed448 的参数。