验证HMAC生成的散列需要验证器知道密钥。所以它是对称的。除了SSL之外,还有什么类似的非对称解决方案?因为我想要签名更小,就像md5散列一样。并且生成和验证过程是轻量级的。我检查了Rabin的签名算法,但找不到任何实现或伪代码。
发布于 2012-03-28 04:21:14
最小的非对称签名来自像ECDSA这样的elliptic curve密码系统。ECDSA签名方案需要的签名长度大约是同等安全性的对称密钥长度的四倍。因此,在安全性上可与128位AES相媲美的方案将具有512位签名。这就是目前的技术水平--签名较小但安全性相同或更高的方案尚不为人所知。
如果你不需要那么高的安全性,你可以使用192位的曲线,这将导致384位的签名。您可以使用320位签名(160位曲线),但仍然具有与80位对称密码相当的安全性。如果您真的不太关心安全性,可以使用112位曲线,提供与DES一样难以破解的224位签名。
以下曲线是我为每个安全级别推荐的曲线:
SecP112R1:224位签名,56位安全级别
SecP128R1:256位签名,64位安全级别
SecP160K1:320位签名,80位安全级别
SecP192K1:386位签名,96位安全级别
SecP224K1:448位签名,112位安全级别
SecP256K1:512位签名,128位安全级别
对于每条曲线,私钥与曲线的大小相同。公钥(压缩形式)比曲线大小大一点。签名是曲线大小的两倍。因此,对于SecP256K1,私钥是256位,公钥是257位,签名是512位。这些是原始二进制值的最小大小。
Caution:我认为160位曲线对于任何需要考虑安全性的目的来说都是最低要求。如果在较小的时间范围内生成、使用并丢弃关键点,则可能适合使用较小的曲线。为了长期安全,应使用256位曲线。系统作为一个整体,在被依赖之前,应该由有能力的专家进行评估。
https://stackoverflow.com/questions/9897023
复制相似问题