如下白话解释目的为了简单易懂,可能部分措辞并不严谨,不当之处,还望指正。
来源: 我的博客
上回我白话了一下:“对称加密”和“非对称加密”的前因后果,收到了不错的反馈,今天接着上一次白话留下的伏笔,说一说“对称加密”和“非对称加密”的实际应用:电子签名(digital signature),电子证书(digital certificate)的来历。git
由于“对称加密”以及“非对称加密”是两种不一样的“技术”,“技术“嘛,研究出来要“应用”到实际生活中的,固然同一种技术的“应用场景”能够是千差万别的,正若有人发明了“充气轮胎”,而后被运用在了汽车上,飞机上还有自行车上。电子签名和电子证书就是“应用”(正如汽车,飞机,自行车),可是它们的诞生离不开“对称加密”和“非对称加密”这些底层技术(充气轮胎),一样,对于你来讲,若是你想明白我接下来白话的“电子签名”和“电子证书”这些“应用”,你须要先读懂我以前白话的“技术”《白话解释 对称加密算法 VS 非对称加密算法》。github
========算法
ok,上回咱们说到,李四给张三发消息,先拿到“张三的公钥”,而后使用张三的公钥加密本身的信息,而后把加密后的密文发送给张三,这样能够保证发送的密文只能被“李四获得的公钥”所对应的“密钥”解密(没有黑客的状况下,也就是张三的密钥)。细心地同窗可能发现了,我上面对“张三的公钥”加了引号!!!segmentfault
为何???由于李四怎么确认他收到的“公钥”就是张三本人的呢?为了更好地继续白话,我们这里作一个很大胆的假设,好比黑客小刘正在监听李四和张三的对话,咱们也假设黑客小刘能够轻易的修改中间传输的信息。那么若是你是李四,你想一下怎么才能把“机密信息”安全的传送给张三?浏览器
好,咱们分析一下,为了能把“机密信息”安全的传给张三,李四须要:
1,加密的密文不能被破解,更严谨说,是不能被“轻易”破解(由于黑客小刘能截获任何对话)
2,咱们用来加密的“公钥”必须确实来在于“张三”本人(否则若是用了黑客小刘的公钥,那么即便李四加密了信息,也会被小刘秒破解)安全
至于第一点,非对称加密已经替咱们解决了密文不会被轻易破解的问题,那么咱们如今只要肯定所获得的公钥是来自于“张三”本人就能够放心大胆的加密信息,而且发送加密后的密文啦!服务器
那么李四怎么肯定“公钥”确实来自于张三本人呢?好办!架构
张三:四儿,接好了,这是个人公钥:fewfeef#¥#@#@#R###。 李四:三哥,别急嘛,12345? 张三:上山打老虎! 李四:欧了,这是我想对你说的话:$IJ4#(##(#(! 张三:好,讲究!
也就是说李四为了确认张三是否是张三本人,李四先和张三对了一下“暗号”,若是暗号不对,李四就不相信发过来的公钥。学习
“我怎么感受哪里有点不对呢?”,嗯,我也以为哪里不对,由于上面说,黑客小刘正在监听李四和张三的对话,这么明显的,弱智的,坑爹坑队友的暗号,黑客小刘立马就怒了:“把老子当白痴么?!这点小伎俩我都看不出?!”,因而,黑客小刘就学会了这个暗号,当下次李四再想对暗号的时候,黑客小刘能够截断张三和李四的信号,伪装是张三:加密
黑客小刘:四儿,上次那个公钥我不用了,这是个人新公钥:#¥#@#3@223#53R2#5##。 李四:哦.......12345? 黑客小刘:哎,你还不相信你三哥?上山打老虎! 李四:哈哈,三哥你看看这个计划如何?2g3n&&$@#(#@) 黑客小刘:很好(邪恶的笑) 李四:...
这样的话,李四仍是被骗了,hmmm,那怎么办呢?李四想了一招,因而有了下面的对话:
黑客小刘:四儿,最近有什么新计划没?。 李四:没。。。有。。。。 黑客小刘:没有?我是你三哥,你说吧。 李四:那你先把你的证书给我看看? 黑客小刘:....神马证...书..?上山打老虎! --- 李四已下线 ---
哈哈,原来,李四自从上次被坑了以后私下里去找了一个叫“王五”的大哥,想寻求帮助,王五说这个事不难,王五对李四说:“若是你相信我,那么我就来做证人证实张三是张三”。
李四说:“那没问题,那你怎么证实张三是他本人?”。
“我能够给张三颁发一个证书!只要他给你看到这个证书,你就相信他是张三”,王五说。
李四思考了片刻又问道:“那我怎么证实这个证书不是伪造的呢?”
王五说:“由于我能够给你一个神器,这个神器可以让你分辨这个证书确实是我颁发的!”。
“哇!这么吊!那快给我!”,李四渴望的眼神中又闪烁着对王五的崇拜!
其实,这个神奇呢,很简单,你想到了吗?嗯,因而,王五就把这个神器交给了李四,这个神器是:“王五的公钥”
!。
哈哈哈哈哈哈。。。
“王五的公钥”!
“王五的公钥”!
“王五的公钥”!
明白了么?明白了么?明白了么?重要的事情说三遍。
来,咱们先来整理一下整个过程,李四苦恼于没法分辨出张三是否是他本人,因而去求助于“王五”大哥,但愿王五大哥可以帮助证实“张三”是张三,而后王五大哥找到张三,亲自拿到了张三的公钥,检查完毕以后,准备了一份证书,同时签上了本身的”王五“大名,交给了张三,今后之后张三再和李四聊天的时候,就能够出示本身的“证书”,证实他是张三本人了。
其实到这里,整个过程和现实生活中的“公证”过程相似,好比你辛苦努力的学习,终于获得了本身的大学毕业证,可是在现实生活中也有不少投机分子经过非法机构办假证,这样对像你同样努力学习的同窗就不公平,因此用人单位为了证实你给他们的毕业证确实是你的,他们怎么办呢?他们要求你去“公证处”去公证一下你的毕业证!公证处这里就是大哥“王五”的角色,用人单位很信任“公证处”,因此只要你拿着“公证处”公证好的文件,用人单位(李四)也就相信了,这个毕业证(公钥)确实是你的。
等一下,公证处的“公证文书”也能够造假啊。
我。。。。
嗯,是的,我还没说完,上面王五给李四说了:
“由于我能够给你一个神器,这个神器可以让你分辨这个证书确实是我颁发的!”。
咱们也知道了,这个神器就是王五的一个公钥,那么怎么才能作到证书没有被修改或者伪造呢?
原来,王五的签名不是普通的签名,也不是像公证处那种普通的盖章,而是“电子签名”!由于王五他也有本身的一对“私/公钥”,因此他把张三的“我的信息”以及“公钥信息”用他的私钥加密成“密文”,把这个密文当作“电子签名”签在了证书上,而后这个证书就被称为“电子证书”,最后再把本身的公钥送给了李四,那么李四收到张三给的证书以后,就能够利用王五给的公钥进行解密证书上面的签名,由于证书上的签名是用王五私钥加的密,因此相应的,也只能用王五的公钥进行解密,李四最后将解密出来的公钥信息和收到的公钥信息进行比对,若是信息一致,就证实了两个问题:
最后的最后,由于在这里“王五”的神器(公钥)太关键,它可以决定其余人的证书是否真实有效,因此咱们把“王五”的公钥叫作“根证书”
!
ok,问题顺利解决!
上概念时间。。
公开密钥基础建设(英语:Public Key Infrastructure,缩写:PKI),又称公开密钥基础架构、公钥基础建设、公钥基础设施、公开密码匙基础建设或公钥基础架构,是一组由硬件、软件、参与者、管理政策与流程组成的基础架构,其目的在于创造、管理、分配、使用、存储以及撤销数字证书。密码学上,公开密钥基础建设借着数字证书认证机构(CA)将用户的我的身份跟公开密钥连接在一块儿。对每一个证书中心用户的身份必须是惟一的。连接关系经过注册和发布过程建立,取决于担保级别,连接关系可能由CA的各类软件或在人为监督下完成。PKI的肯定连接关系的这一角色称为注册管理中心(Registration Authority,RA)。RA确保公开密钥和我的身份连接,能够防抵赖。
简单来讲,PKI就是利用非对称加密技术为开展安全信息交换提供了一种系统和规范。同时,为了整个系统能运转,一些“特别”的机构也是须要做为“值得信任的第三方”来接受我的或公司提交的“认证申请”。
registration authority (RA), 注册机构,负责接受来自我的和公司的“认证申请”,RA负责审核证书申请者的真实身份,审核经过以后,将申请送给 certificate authority (CA)证书机构,CA将对这些申请签名,并颁发给申请者电子证书,而后申请者获得这些证书以后能够好比:安装在服务器上。
CA机构好比有:digicert,verisign
上面咱们说到了PKI,咱们来看一个具体的例子,以便让你们更直观的理解,咱们就拿segmentfault为例。
咱们能够看到这里显示sf安装了证书,而且显示是valid
,证实:
- sf是sf,我没有被劫持到其余站点 - 我和sf以前的通讯是加密的,安全的,其余人窃取不到
那么浏览器是怎么验证的sf的证书的呢?还记得上面我提了一句“根证书”么?由于通常咱们去申请证书都是经过CA机构,同时你们都信任CA机构好比digicert,verisign,那么咱们就能够事先将这些CA机构的“神器”安装到咱们的电脑上,也就是这些CA机构的"公钥",咱们也称它们为“根证书”
。这些根证书是预先安装在咱们电脑上的,因此每当咱们访问segmentfault的时候,若是segmentfault服务器上安装了证书,他想和咱们创建安全通讯,就比如上面例子中,张三直接把公钥发给李四同样,在这里:
segmentfault说:“hi,咱们创建安全通讯吧,这是个人公钥” 你的浏览器:“你怎么证实你的公钥是你的呢?” segmentfault说:“这是个人证书,请查看”
而后segmentfault就把安装在服务器上的证书传给你的浏览器,由于你的浏览器已经有一些神器“根证书”的存在,因此这些根证书(CA机构的公钥)就能够来“解密”sf发过来的证书上的签名,而后对比一下解密后的信息和sf证书中所呈现的信息是否一致,若是一致,就ok拉!
最后上一个截图:
你们注意,最上面“DigiCert Global Root CA”,说明咱们使用digicert这个CA组织的根证书来进行认证sf的证书,而后digicert替咱们证实了sf证书的合理性:“This certificate is valid",同时给我列出来证书中的一些详细信息,好比:证书的持有者,证书的过时时间,证书中所携带的“公钥”信息(用来验证你获得的公钥确实是sf的),而后还有其余一些信息,感兴趣的同窗能够深究一下了!
更多内容欢迎访问:做者博客
谢谢!