摘要:近期看一个聚合支付,对于数字证书具体充满好奇。对于数字货币也听见了很多相关报道。趁机简单了解一下。
原文网址:阮一峰:数字签名是什么?
一篇有声音的博客:数字证书原理,公钥私钥加密原理
文章用图片通俗易懂的解释了“数字签名(digital signature)”和“数字证书(digital certificate)”到底是什么。
文中设计的密码学基本知识,可以参见原作者文章密码学笔记,后期看了在依次序抄袭,哈哈!
1.
鲍勃:有两把钥匙,一把是公钥,另一把是私钥。
2.
鲍勃:把公钥送给他的朋友们 —— 帕蒂、道格、苏珊三人每人一把。
3.
苏珊:计划给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。
4.
鲍勃:收到信后,用私钥解密,就看到了信件的内容。这里需要强调的是在鲍勃的私钥不泄露的情况。这样就算别人获取的苏珊的信,也无法正常打开,不会信件内容泄露。
5.
鲍勃:准备给苏珊回信,决定采用“数字签名”。写完后先用 Hash 函数,生成信件的摘要(digest)。
6.
鲍勃:使用私钥对上面使用hash函数的摘要内容加密,生成“数字签名”(signature)。
7.
鲍勃:将这歌签名,附在信息下面,一起发给苏珊。
8.
苏珊:在收到信件后,取下数字签名(第6步签名数据),得到信件的摘要(第五步hash函数生成的信息摘要)。由此证明,信件确实是包庇发出来的。
9.
苏珊:再次对信件使用Hash函数(同第5步),将得到的结果与上一步(第8步)得到的摘要进行比较。如果两者一致,证明这封信件的内容没有被修改过。
10.
复制的情况出现了,新增人物道格,道格计划自己冒名鲍勃,以此欺骗苏珊。
道格:偷偷的将苏珊电脑上鲍勃的公钥,偷换成道格自己的公钥。(此时苏珊其实拥有的是道格的公钥,错以为还是鲍勃的公钥)。因此,道格就可以冒充鲍勃,用自己的私钥做成“数字签名”,写信给苏珊,苏珊通过“假的鲍勃公钥“进行成功解密。
11.
苏珊:多次信件后,苏珊感觉鲍勃变了一个是的,就不香了。有坚信鲍勃不是这样的人。思前想后找了原因,苏珊不能通过任何有效信息确认当前公钥是之前鲍勃的证书。立即决定,要求鲍勃去找“证书中心”(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些信息一起加密,生成“数字证书”(digital certificate)。
12.
鲍勃:听从苏珊的建议后,鲍勃去“证书中心”领取证书。此后,就可以放心的苏珊写信了,在写完信的同时,在附上在证书中心领取的数字证书。
13.
苏珊:再次收到鲍勃的信件时,首先用证书中心(CA)的公钥解开数字证书。就可以拿到鲍勃的正式公钥,然后就能证明“数值签名”是否是鲍勃签的。
14.
下面,我们看一个应用“数字证书”的实例,https协议,这个协议主要用于网页加密。
15.
客户端(浏览器)向服务器发起加密请求
16.
服务器用自己的私钥加密网页后,连同本身的数字证书,一起发送给客户端。
17.
客户端(浏览器)证书管理器,有“受信任的根证书颁发机构”列表。根据这张表,查看解开数字证书的公钥是否在列表之内。(自己使用的是谷歌浏览器 83.0.4103.116(正式版本) ,设置——>隐私设置和安全性——>安全——>管理证书)
18.
如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被毛用,浏览器会发出警告。
19.
如果这张数字证书不是受信任的机构颁发的,浏览器会发出另一种警告。
20.
如果数字证书是可靠的,客户端就可以使用证书中心的服务器公钥,对信息进行加密,然后与服务交换加密信息。
阮一峰:数字签名是什么?
数字证书原理,公钥私钥加密原理