公钥和私钥的原理
鲍伯有两个钥匙,一个是公钥,一个是私钥。
鲍伯把公钥给他的朋友肉饼,道格,苏珊–每人一个。
苏珊想给鲍伯写一封机密信。在她写完之后,她用鲍伯的公钥对它进行了加密,这样可以达到保密的效果。
鲍伯收到信之后,就用自己私钥解密,就可以看到邮件正文。应该强调的是,只要鲍伯的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
鲍伯给苏珊回信,决定采用 “数字签名”。写完后,他使用哈希函数生成摘要。
鲍伯使用私钥加密摘要并生成 “数字签名” (签名)。
鲍伯附着这个签名将信一起寄给苏珊。
苏珊收到信件后,删除数字签名,并用鲍伯的公钥解密,以获得信件的摘要。这证明这封信确实鲍伯寄来的。
苏珊对字母本身使用哈希函数,将获得的结果与上一步中获得的摘要进行比较。如果两者一致,则证明该邮件未被修改过。
出现了复杂的情况。道格想欺骗苏珊。他秘密地使用了苏珊的电脑,并用他的公钥替换鲍伯的公钥。此时,苏珊实际上有道格的公钥,但她认为这是鲍伯的公钥。因此,道格可以假装鲍伯,用他的私钥做一个 “数字签名”,给苏珊写一封信,并使得苏珊用假鲍伯的公钥解密了它。
后来,苏珊觉得有些不对劲,发现自己无法确定公钥是否真的属于鲍伯。她想出了一个方法,让鲍伯去证书中心 (简称证书颁发机构) 验证公钥。证书中心使用自己的私钥对鲍伯的公钥和一些相关信息进行加密,以生成 “数字证书” (数字证书)。
鲍伯获取数字证书之后,他可以放心。之后给苏珊写信的时候,只要在签名的同时,再附上数字证书就搞定。
苏珊收到信件后,使用CA的公钥解锁数字证书,然后她就可以获得鲍伯的真实公钥,并且就能证明”数字签名”是否真的是鲍勃签的了。