【发布时间】:2011-10-27 02:35:16
【问题描述】:
我为一个大型网站工作。我们计划使用必须由大量应用程序验证但由身份验证应用程序颁发的身份验证令牌。我正在考虑非对称而不是对称签名方案,以避免在大量应用程序服务器上存储秘密。
我列出了候选算法 - dsa、ecdsa、rsa,Java 中有加密提供者。
比较 dsa 与 rsa: dsa 具有独立于密钥强度的签名,并且比同等安全性的 rsa 签名小得多(rsa 1024/1568 与 dsa 192)。但是 dsa 验证(预计验证调用是 100 倍问题)比 rsa 验证慢约 10 倍。 dsa192 可以只使用 sha1 作为可能被破坏的摘要,尽管我想我可以使用 Sha234 并将输出截断为 192 位。
对 dsa 与 rsa 的审查还提出了其他深奥的问题 - dsa 中私钥的保密性非常依赖于 k 参数的随机性,dsa 不支持防火墙哈希,这对我们来说不是问题。
比较 ecdsa 与 dsa - ecdsa 在签名和验证方面稍快一些,我看到有人声称使用 ecdsa 我们有信心签名会验证(这里有点担心)。签名大小相同,不进入图片。
由于令牌随每个请求一起发送,并且我们在编码前讨论的是 40 字节与 128/196 字节,我正在考虑使用 ecdsa-192 并将 sha2 截断为 192 位 - 我认为 10 倍的成本是不幸的,但希望主要是 I/O 成本。
感谢反馈。让我知道我错过了什么。
【问题讨论】: