我想知道性能方面哪个更好地提供消息真实性、ECDSA 签名或基于哈希的签名,尽管我已经阅读了 ECDSA 与 RSA 的比较,但没有发现基于哈希的签名。 ECDSA 签名替换为基于哈希的签名是否可以提高消息的真实性。
最佳答案
ECDSA 是基于哈希的签名,因为数据被哈希,然后对哈希(而不是整个数据)执行 ECDSA
数据验证主要有以下三种方法:
直接哈希(例如 SHA-2-256)
- 最快的验证选项
- 如果您只是为了防止线路损坏,这是一个有效的选择。
- 否则,要求通过安全(防篡改) channel 发送哈希/摘要值,因为被篡改者可以轻松地将摘要与被篡改的文档一起传输
- 未提供原产地证明
HMAC(例如 HMACSHA256)
- 要求发送方和接收方共享 key
- key 被盗的发送者或接收者都会使双方面临风险
- secret key 需要来自 key 协商算法 (ECDH) 或 secret 传输(加密)
- 证明该文档来自拥有共享 secret 的人。
- 数字签名(例如 ECDSA、RSA 签名)
- 发送者是唯一拥有私钥的实体,接收者需要公钥(非 secret )
- 公钥可以嵌入到 X.509 证书中,以便向签名者提供经过公证的公钥关联
- 或者可以通过安全(防篡改) channel 原始传输公钥。
- 为文档来源提供强有力的保证,因为他们不应共享私钥。
所有三个选项都使用哈希算法来减少原始数据,其余算法是您如何处理该数据。 “安全”并没有真正的标准定义,你必须说“针对(某事)安全”。只要不共享私钥,ECDSA 就能提供比 HMAC 更多的保证。但如果 HMAC 提供足够的保证,平均而言可能会更快(除了特殊硬件)。
关于hash - 在 ad-hoc 网络中,其性能优于数字签名 (ECDSA) 或基于哈希的签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43569748/