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

标签 hash ecdsa

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

最佳答案

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

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

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

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

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

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

关于hash - 在 ad-hoc 网络中,其性能优于数字签名 (ECDSA) 或基于哈希的签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43569748/

相关文章:

perl - 在 Perl 中预期的偶数列表中找到引用 - 可能的传递引用错误?

java - BouncyCaSTLe 验证 secp256k1 公钥生成

JAVA当r或s为负数时如何验证ECDSA签名

c++ - 在 ASN1.DER 中使用 point2hex 导出 EC_POINT 并使用 Java 重新创建为 X.509

ssl - 如果选择的密码套件是 ECDSA 但选择的客户端证书是 RSA,会有什么行为

iphone - 在 iOS 设备上本地保存游戏分数...需要安全吗?

python - NetworkX Graph 对象的“同构”比较,而不是默认的 'address' 比较

perl - 如果哈希键未在初始哈希定义中定义,有没有办法使 perl 编译失败?

PowerShell 将字典转换为哈希表

java - ECDSA 使用 BouncyCaSTLe 签名并使用 Crypto++ 验证