非对称密钥加密又称为公钥加密,它使用两个密钥,构成一对,一个用于加密,一个用于解密,其他密钥都无法解密这个消息,包括用于加密的密钥。这个机制的妙处在于,每个通信双方只需要一对密钥,就可以和多个其他方通信。一旦去的密钥对之后,就可以和任何人通信。这个模式有一个简单的数学基础。如果一个大数只有两个素数因子,则可以生成一对密钥。
对称密钥加密快速且高速,但也存在一个很大的缺点,那就是密钥交换问题。加密消息的发送方与接收方在对称密钥加密中使用的是相同密钥,协定密钥时很容易被别人知道。非对称密钥加密可以解决这个问题,每个通信方用两个密钥构成密钥对:一个是私钥,自己保密;另一个是公钥,是公开的。假设要在Internet之类的计算机网络上以安全方式通信,则要取得公钥和私钥。私钥是保密的,不能向别人披露,但公钥是公开的,可以向任何人公布。事实上。这种机制中每一方或每个节点都要发布自己的公钥。这样就可以构造一个目录,维护各个节点及相应的公钥。查询这个目录就可以得到任何人的公钥,从而与其通信。
假设A要向B发送消息,但不担心起安全性,则A和B都要有公钥和私钥。其密钥细节如下表所示:
密钥细节 | A知道 | B知道 |
A的私钥 | 是 | 否 |
A的公钥 | 是 | 是 |
B的私钥 | 否 | 是 |
B的公钥 | 是 | 是 |
根据这些知识,非对称密钥加密的工作原理如下:
(1)A要给B发送消息时,A用B的公钥加密消息,因为A知道B的公钥。
(2)A将这个消息发送给B。
(3)B用自己的私钥解密A的消息。
注:只有B知道自己的私钥。另外,这个消息只能用B的私钥解密,而不能用别的密钥解密。因此,即使别人能截获这个消息,也无法看懂消息。这是因为侵入者不知道B的私钥,而这个消息只能用GB的私钥解密,如下图所示:
同样,B要向A发消息时,其过程恰好相反。B用A的公钥加密消息,这个消息只能用A的私钥解密。