小朋友都能懂的计算机算法 - 数字证书
碰到了大人物
小明最近碰到一件好事!
小明心想:
还有这等好事!
如果真能做到不给中国加关税,
那是为国争光了啊!
再说了还能办个绿卡,哈哈!
不行,万一是骗子呢?
我要再多问几句!
小明要看网址真的是白宫的,
连忙打开网页:
哎哟,真的是白宫网站啊。
要抓住机遇,
小明连忙根据客服的提示,
填写了自己的身份证和信用卡信息,
然后小明收到好几条短信:
可惜不是通知办绿卡的短信,
信用卡上的钱莫名花掉了好多,
那个特朗普也联系不上了。
问题来了,
在这个又大又坏的网络世界上,
我们如何去验证对方是真是假呢?
又如何去验证网站是真是假呢?
我们先来看看现实中是如何验证的。
身份证
小明的信用卡莫名被盗刷了,
很是恼火,
马上赶去银行要把卡锁住。
这时候银行柜员说:
您好,请出示一下您的身份证?
小明赶快递上自己的身份证:
银行柜员仔细核对身份证后,
确认了小明就是信用卡的主人,
马上给他锁定了信用卡,
防止“特朗普”继续盗刷他的信用卡。
上面这个锁定信用卡的过程中涉及到了3方人:
只有小明和银行柜员,
明明是2方,为什么说是3方?
确实是3方,这里少了公安作为公正方:
这个过程是这样的:
小明去公安机关办理身份证
小明要提供户口本等证明他真的是小明
公安验证无误后就给小明办理了身份证
小明拿着身份证去办理银行卡业务
银行柜员用公安联网的机器验证身份证真假
确认无误后给小明办理业务。
现实中,就是通过这张叫做"身份证"的证书来解决了“小明”是“小明”的问题。
那网络上是否也可以通过证书的方式来解决这个问题呢?
答案就是公钥加密和数字证书!
公钥加密
小明可以用身份证证明自己的身份,
虽然别人也可以伪造自己的身份证,
但伪造身份证还是很难的,
身份证里面加了各种防伪技术。
但如果有一个电子的身份证,也就是数字证书,
岂不是很容易伪造?
只要复制一份就行了?
是的,数字证书不能和普通的证书一样,
否则就太容易被复制了,
它是由两个文件组成的,
需要用到公钥加密技术。
我在前面一篇文章中介绍过公钥加密,
简单说就是:
有一对钥匙(文件),用蓝绿来表示
如果用绿色钥匙给消息加密,就必须用蓝色钥匙才能打开
如果用蓝色钥匙给消息加密,就必须用绿色钥匙才能打开
真是一对欢喜冤家,
只有彼此才能解开对方的心结。
我们来看一下上面的场景:
小明有一对蓝绿配对的钥匙。
小明把蓝色的钥匙公开给了小辉和其他人。
小明想发送密码是9527这段文字给小辉。
小明用保密的绿色钥匙给这段文字加密。
小辉收到密文后用小明给的蓝色钥匙解密。
如果能解开,就说明是小明发的消息,因为只有小明才有绿色钥匙,只有绿色钥匙才能和蓝色钥匙配对解开。
如果解不开,就说明这消息不是小明发的。
通过这种方法就可以证明消息是否是小明发的。
至少有两个好处:
防止小明抵赖。既然能用蓝色钥匙解密,那么肯定是小明发的。
防止别人冒充小明发消息。别人没有绿色钥匙,不能和蓝色钥匙配对解开。
这就是核心原理! 关于公钥加密,可以读我的上一篇专门关于公钥加密的文章。
数字证书
虽然小明不能抵赖,
别人也不能冒充小明,
但还有一个问题:
我怎么知道给我证书的小明就是小明呢?
如果某个人给我一个身份证说他是特朗普,
我怎么确认呢?
我去公安机关确认!
数字证书也需要能够证明身份的中间机构。
整个过程是这样的:
小明去证书机构请求办法证书,就像去办身份证。
证书机构验证小明确实是小明后给他生成了一份包含它的公钥以及他的身份的证书。
小明要发消息的时候先用私钥加密,然后把加密好的消息和证书一起发给银行。
银行看到证书后,确定这确实小明的证书。如果证书造假怎么办呢?这个证书也是通过公钥加密技术加密和验证的,确保确实是这个银行颁发的。
然后银行取出证书中的公钥,进行解密。并不是有了证书就说明消息是小明发的。如果别人获得了证书以后冒充小明乱发呢?
下一步就是用公钥去给消息解密,如果能解密就说明确实是小明发的,因为只有小明有另一个用来配对的钥匙。
证书机构
神秘的证书颁发机构是谁呢?
理论上说谁都可以颁发证书!
上面的例子中银行自己就是证书颁发机构,
你去银行办卡,
银行如果给你一个U盘,
里面就是银行给你颁发的数字证书。
里面包含了你的公钥和私钥!
你自己也可以颁发证书,
但问题是你自己颁发的证书自己用还可以,
如果是要跟外部来证明你就是你自己,
就相当于自己画了一整身份证,
别人肯定不认的。
通用的证书
上面银行颁发的证书也只是自己用,
你在网上转账的时候,
银行自己验证证书的有效性。
如果想要办理大家都认可的证书,
就需要大家都认可的证书办理机构,
这种机构世界上也有很多家。
我们可以通过阿里云办理数字证书,
他给的选择有4个证书机构:
这说明只有这4家和阿里云有合作,
实际上有更多的数字证书机构。
这些机构颁发的证书是大家都公认的!
安全的网页
数字证书的其中一个重要应用就是在网页上,
1最开始假的特朗普发了假的白宫网站,
我们如何拆穿他呢?
我们打开真的白宫网站:
https://www.whitehouse.gov
会看到他的网址前面有个🔐的图标,
这说明这个网站是有数字证书的:
点开这个🔐,就可以看到网站的身份证:
我们可以清楚的看到:
这个网站属于美国政府的。
政府的签发机构是DigiCert这家公司。
难道我需要每个网站都点开查看证书吗?
答案是没必要!
因为浏览器已经帮你做了这个事情,
如果没有证书,浏览器会提示你:
如果有证书但是证书不知道是谁颁发的,
浏览器会这样提示你:
不同的浏览器提示界面可能会略有不同,
但本质是一样的。
办证
那么证书机构怎么证明小明就是小明呢?
加入小明用域名whitehouse365.com去办证,
喂,你好,我要办个数字证书!
我的域名是:whitehouse365.com
我是:美国白宫
办证机构会验证这个域名是不是美国白宫的。
对不起,这个域名的注册人不是美国白宫。
根据域名查询,主人叫张小明。
不能给你办理!
而且白宫是政府机构,需要提供额外证明!
这样就办不成了!
但是小明可以这样说:
喂,你好,我要办个数字证书!
我的域名是:whitehouse365.com
我是:张小明
证书机构验证了张小明确实是这个域名的注册人。
所以就给他办了一张证书。
而且是合法的证书,是公认机构颁发的。
这种情况下,浏览器也没有办法。
所以在关键的网站上,
我们可以要多看一下的,
比如看一下域名whitehouse365.com,
这个是不是很山寨?
而且政府域名都是.gov结尾的!
我们也可以打开证书看看:
咦,怎么回事张小明?
是假的!
最后
又大又坏的网络世界,
学点计算机知识是很有必要的!
有问题给我留言!
感谢点赞和转发!