在 ad-hoc 网络中,其性能优于数字签名 (ECDSA) 或基于哈希的签名

San*_*hli 2 hash ecdsa

我想知道性能方面哪个更好地提供消息真实性、ECDSA 签名或基于哈希的签名,尽管我已经阅读了 ECDSA 与 RSA 的比较,但没有发现基于哈希的签名。ECDSA 签名替换为基于哈希的签名是否可以提高消息的真实性。

bar*_*njs 5

ECDSA基于哈希的签名,因为数据被哈希,然后对哈希(而不是整个数据)执行 ECDSA

数据验证主要有以下三种方法:

  1. 直接哈希(例如 SHA-2-256)

    • 最快的验证选项
    • 如果您只是为了防止线路损坏,那么这是一个有效的选择。
    • 否则,要求通过安全(防篡改)通道发送散列/摘要值,因为被篡改者可以轻松地将摘要与被篡改的文档一起传输
    • 不提供原产地证明
  2. HMAC(例如HMACSHA256)

    • 要求发送方和接收方共享密钥
    • 密钥被盗的发送者或接收者都会使双方面临风险
    • 密钥需要来自密钥协商算法(ECDH)或秘密传输(加密)
    • 证明该文档来自拥有共享秘密的人。
  3. 数字签名(例如ECDSA、RSA签名)
    • 发送者是唯一拥有私钥的实体,接收者需要公钥(非秘密)
    • 公钥可以嵌入到 X.509 证书中,以便为签名者提供经过公证的公钥关联
    • 或者,公钥可以通过安全(防篡改)通道进行原始传输。
    • 提供有关文档来源的强有力保证,因为他们不应共享其私钥。

所有三个选项都使用哈希算法来减少原始数据,其余算法是您如何处理该数据。“安全”并没有真正的标准定义,你必须说“针对(某事)安全”。只要不共享私钥,ECDSA 就能提供比 HMAC 更多的保证。但如果 HMAC 提供足够的保证,平均而言可能会更快(除了特殊硬件)。

  • 我大致同意这一点,但想更明确地说明几点。在讨论中,“基于哈希的签名”和 HMAC 之间存在隐式关联。对于数字签名,客户端必须验证公钥是否属于发送公钥的实体所拥有。对于 HMAC,当两方就共享秘密达成一致时,应该会发生相同的检查公钥的过程。使用 HMAC 而不是非对称选项的全部目的是为了性能。因此,通常您首先进行密钥交换,然后再进行 HMAC。 (2认同)