在本章各方案中,RSA目前运用最为广泛。ElGamal方案是DSA的基础。椭圆曲线和DSA的区别是把运算转移到椭圆曲线上。
如果Carl能够破解RSA、ElGamal等非对称加密的密钥,当然也可以破解相应的数字签名方案。我们知道,为了保障RSA算法的安全,也就是确保大整数分解是计算困难的,至少要保证密钥长度为1024比特或更大。ElGamal的离散对数难题也要求 p 的长度至少为1024比特。根据理论分析,当 p 为1024比特时,Carl至少要执行2 80 次运算才可能破解离散对数难题。我们将这称为“80位”的安全性。椭圆曲线的安全性明显更优。密钥长度为192或256比特的椭圆曲线加密方案,就可以获得等同于1024或3072比特的DSA算法安全性能。
数字签名虽然可以验证信息是否来自Bob,但是无法保护明文消息。Carl知道公钥参数,也可以验证签名并获得全部明文消息。因此在实际中,Bob在对消息的摘要进行签名后,需要再用Alice的公钥对消息进行加密得到密文;Alice接收信息后先用自己的私钥解密得到原文,然后利用Bob的公钥进行签名认证。整个流程如图3-4所示。
图3-4 非对称加密和数字签名
数字签名还面临一个挑战。如果Carl冒充Bob的身份,用自己的公钥顶替Bob的公钥,那么Alice依然可以收到Carl的签名信息,并通过验证,因为Carl采用的也将会是合法的数字签名算法。为了规避这种情况,在实际应用中又有了“证书”的概念,它引入可信的第三方,对Bob的公钥正确性提供流程和算法上的保障。