4. 鲍勃收到信后,用自己的私钥进行解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
说明1:这其实是计算机安全学里加密的概念,加密的目的是为了不让别人看到传送的内容,加密的手段是通过一定的加密算法及约定的密钥进行的(比如上述用了非对称加密算法以及鲍勃的公钥),而解密则需要相关的解密算法及约定的秘钥(如上述用了非对称加密算法和鲍勃自己的私钥),可以看出加密是可逆的(可解密的)。
5. 鲍勃看完信后,给苏珊回信。为了防止信的内容被篡改,他决定采用“数字签名”,先对信的内容用Hash算法做一次处理,得到一个摘要(字符串哈希值),然后鲍勃又用自己的私钥对哈希值做了一次加密得到一个数字签名,最后将这个数字签名附在信件下面和信(明文的)一起发送给苏珊。
说明2:鲍勃的内容实质是明文传输的,所以这个过程是可以被人截获和窥探的,但是鲍勃不担心被人窥探,他担心的是内容被人篡改或者有人冒充自己跟苏珊通信。这里其实涉及到了计算机安全学中的认证概念,鲍勃要向苏珊证明通信的对方是鲍勃本人,另外也需要确保自己的内容是完整的。
6. 苏珊收到鲍勃的信后,取下数字签名,首先用鲍勃的公钥进行解密处理,得到了哈希值 A,然后苏珊用了同样的Hash算法对信的内容作了一次哈希处理,得到另外一个哈希值 B,对比A和B,如果这两个值是相同的,那么可以确认信就是鲍勃本人写的,并且内容没有被篡改过。
说明3:5 跟 6 其实构成了一次完整的通过数字签名进行认证的过程。数字签名的过程简述为:发送方通过不可逆算法对内容 text1 进行处理(哈希),得到的结果值 hash1,然后用私钥加密 hash1 得到结果值 encry1。对方接收 text1 和 encry1,用公钥解密 encry1 得到 hash1,然后用 text1 进行同等的不可逆处理得到 hash2,对 hash1 和 hash2 进行对比即可认证发送方。
7.此时,另外一种复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成“数字签名”,写信给苏珊,让苏珊用假的鲍勃公钥进行解密。