1.3.3 公钥密码算法
在对称密码体制中,通信双方需共享同一个秘密密钥。该密钥既用于加密,也用于解密通信内容。然而,随着系统中用户数量增多,密钥管理将变得较为复杂。例如,在有n个用户的系统中,若每对用户之间都需要加密通信,则每个用户需存储n-1个不同的密钥,系统中的密钥总数将达到n(n-1)/2。
与之不同,公钥密码体制的最大特点是采用两个相关联的密钥,将加密与解密能力分开。其中一个密钥是公开的,称为公开密钥或公钥,用于加密;另一个密钥为用户专有,是保密的,称为秘密密钥或私钥,用于解密。当系统中有n个用户时,每个用户只需拥有自己的公私钥对,并公开自己的公钥,即可实现两两之间的加密通信(见图1-5)。例如,当用户1需要将消息m加密发送给用户k时,用户1使用用户k的公钥Pubk对消息m加密得到密文c=EncPubk(m),然后将密文c发送给用户k。用户k收到密文c后,使用自己的私钥skk解密得到明文m=Decskk(c),从而实现了用户1与用户k之间的加密通信。
图1-5 多用户公钥加密通信示意
公钥密码体制降低了密钥管理的复杂性,使每个用户只需维护自己的公私钥对。因为公钥是公开的,所以任何人都能用它来加密信息并发送给持有私钥的用户,实现安全的加密通信。公钥密码体制为密钥分发和管理提供了更大的便利性。
公钥密码体制需满足以下要求。
1)产生一对公私钥对是计算上可行的。
2)使用公钥对明文加密是计算上可行的。
3)使用私钥对密文解密是计算上可行的。
4)由公钥计算私钥是计算上不可行的。
5)由密文和公钥恢复明文是计算上不可行的。
6)可选的要求是,加密与解密次序可交换。
公钥密码体制常基于数学困难问题设计,如整数分解、离散对数问题等。公钥密码体制的安全强度依赖于这些数学困难问题的求解难度。尽管公钥密码体制提供了更灵活的密钥管理方式,但公钥密码的加解密速度常常远慢于对称密码的加解密速度。在实际应用中,通常将公钥密码算法与对称密码算法结合使用,如可以使用公钥密码算法加密传输对称加解密所需的密钥,然后使用对称密码算法实现大量数据的加密传输。