验证HMAC生成的哈希需要验证者知道密钥。所以它的对称性。除了SSL之外,什么是similer非对称解决方案?因为我希望签名像md5哈希一样小。并且生成和验证程序要轻松。我正在浏览Rabin的Signature算法,但无法找到任何实现或伪代码。
答案 0 :(得分:4)
最小的非对称签名来自elliptic curce密码系统,如ECDSA。 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位。这些是原始二进制值的最小大小。
警告:我认为160位曲线是安全性因素的最小值。如果生成,使用密钥,然后在很短的时间内扔掉密钥,则较小的曲线可能是合适的。为了长期安全,应使用256位曲线。整个系统应由有能力的专家在依赖之前进行评估。