网上有篇叫“公钥,私钥,数字签名,数字证书详解”的文章很浅显易懂。
http://blog.csdn.net/sum_rain/article/details/36896239
但是,最后有一点很是疑惑,就是既然道格可以控制苏珊的电脑,并替换鲍勃的公钥,那么能不能替换CA的公钥,并用自己的公钥来代替鲍勃的公钥呢?
重新回顾一下流程:
1.鲍勃拿着自己的信息和公钥给CA要求认证。
2.CA将鲍勃的信息和公钥两者关系绑定后,产生摘要,再通过私钥加密摘要再将鲍勃提供的信息和公钥合并为数字证书再颁发给鲍勃。(这里鲍勃的信息和公钥都是明文)
3.鲍勃发邮件时附上私钥加密摘要后的签名(证明内容没有被篡改)以及CA给的数字证书(证明发送者是鲍勃,且公钥是鲍勃的)
4.苏珊在收到邮件后先用CA的公钥解密得到数字证书中的摘要,然后将证书中的鲍勃信息和公钥通过hash算法得到的摘要与数字证书中的摘要进行对比(确保数字证书没有被篡改)。
问题来了,如何保证CA的公钥没有被篡改呢?从而保证其中的鲍勃信息和公钥都是对的呢?
答案是没法保证CA的公钥没有被篡改。通常操作系统和浏览器会预制一些CA证书在本地。所以鲍勃应该去那些通过认证的CA处申请数字证书。这样是有保障的。
但是如果系统中被插入了恶意的CA证书,依然可以通过假冒的数字证书发送假冒的鲍勃公钥来验证假冒的正文信息。所以安全的前提是系统中不能被人插入非法的CA证书。
5.苏珊得到CA认证的鲍勃的公钥后,解密邮件中的签名,得到摘要再与将正文Hash后的摘要进行对比(确保正文没有被篡改)
网友评论