一篇漫画故事带你理解透HTTPS(下)


上下集知识点总结:程序员

前情提要:算法

蝙蝠纪元,疫情之下。二丫欲访问京东购物,不料弹出安全提示,遂找二毛一探究竟。二毛一顿排查后,开始用通俗易懂的语言深刻浅出的向二丫解释 HTTP做用及优缺点、HTTPS的功能做用......浏览器

未看过上集的,可进入传送门:安全

【故事】跟零计算机基础的房东女儿讲了一下午的中间人劫持京东事件后,她感激不尽,决定给我免除房租(上)网络


二丫挂掉电话后,对二毛邪魅一笑...函数

开始以前,咱们先了解一些前置技术。网站

前置技术

1 对称加密

定义:一种加密算法,只有一个密钥,这个密钥既能够用来加密数据,又能够用来解密数据。加密

优势:加解密速度快。spa

缺点:因为只有一个密钥,应用场景不普遍。3d

2 非对称加密

定义:也是一种加密算法,有两个密钥,一个称为公钥,另外一个称为私钥。其中公钥能够广而告之,私钥须要本身妥善保存。公钥能够加密数据,而后用私钥解密;反过来,私钥也能够加密数据,用公钥来解密。

优势:因为公钥和私钥能够互相加解密,应用场景普遍。

缺点:加解密速度较慢。

3 消息摘要:

定义:经过哈希函数,将任意长度的消息变成固定长度的短消息,且一个固定的内容不管通过多少次哈希获得的结果仍然是固定不变的,称为消息摘要。

应用场景:可将长消息缩短,加密处理起来更快。

4 数字证书:

定义:由CA(一个权威的认证机构)颁发的一种证书,里面含有能够标识你身份的信息,相似于咱们的身份证。

注:证书是必须由服务端主动向CA申请的。服务端(假设为网站)提供本身的域名等信息,接着CA会使用它们的私钥对内容进行加密,而后做为数字证书返回给服务端。

应用场景:

身份证实。因为CA是权威的,他们的私钥会严格保存,公钥会广为公开,因此一旦服务端网站出示了数字证书后,咱们就能够依据颁发证书的CA,找到对应的公钥,而后解密数字证书获得里面的域名信息,并比对当前访问的域名是否跟获得的域名一致,以此判断真假。

5 数字签名:

定义:只有信息的发送者才能生成的、别人没法伪造的一段字符串。

主要有两个步骤生成:

  1. 首先对要发送的内容进行消息摘要获得短字符串。
  2. 发送者再使用本身的私钥对该短字符串进行加密,就获得了数字签名。(固然也能够对整个信息作数字签名,可是通过消息摘要处理的信息会更少,加密更快。)

应用场景:

  • 完整性保护:只要咱们使用发送者的公钥解密数字签名,获得原摘要内容,再跟咱们本身进行消息摘要的内容进行对比,就能判断,若一致,则说明信息内容没篡改破坏过。
  • 不可抵赖性:因为发送者的私钥只有发送者本身知道,因此只要信息比对一致,就能证实这信息是该发送方写的。

看到这里,读者可能有点懵,那数字签名跟数字证书有什么不一样?

  • 数字签名通常是用户用本身的私钥加密摘要生成的,目的是为了数据完整性保护和不可抵赖性。
  • 数字证书是使用CA的私钥加密你的信息造成的,目的是证实你的身份。

HTTPS的技术实现

上集的例子中,小明给小红传纸条,可是小明的明文通讯可能会被第四排同窗窃听、篡改、破坏、假装,而对应的解决方法就是使得通讯规则能有这三个功能:加密数据、数据完整性保护、身份验证

那该如何使得通讯规则有这三个功能?小明在研究了前置技术的内容后,受到启发,决定这样干:

(这里假设学校有个大队长(即CA)可以为学生信息作公证,即颁发数字证书,小明小红都已经申请了本身的数字证书。数字证书中包含本身的姓名、本身的公钥等信息)

1 在开始传对话内容前,小明就先传纸条请求小红的数字证书,请求时也把本身的数字证书传过去。

2 小红收到信息后,就用大队长的公钥解密获得信息,得知是小明请求与她传纸条,因而她含羞的把本身的数字证书回传了过去。

3 小明获得返回的数字证书后,也用大队长的公钥解密获得信息(信息含有小红姓名和小红公钥),比对姓名信息看是否为小红。若是不是小红,则不通讯,若是是,进入下一步。

4 小明随机生成一串字符a,而后拿出小红的公钥,并用该公钥加密这串字符a,返回给小红。

5 小红收到信息就用本身的私钥进行解密,而后取出字符a,随后小红将内容 “赞成传纸条” 用字符a做为密钥进行对称加密,获得密文后写入纸条中。另外,小红也对内容 “赞成传纸条”进行消息摘要,随后用本身的私钥对摘要的内容进行加密获得数字签名,写入纸条署名处。

6 小明收到信息,用字符a做为密钥进行对称解密,获得内容“赞成传纸条”。为了鉴别内容是否被破坏或篡改过,小明使用小红的公钥对署名的字符进行解密,获得消息摘要内容a,另外再将内容“赞成传纸条”进行消息摘要获得消息摘要b,最后将摘要内容a和摘要内容b进行比对,若是一致,则说明没有破坏或篡改过。

7 通讯继续。。

至此上面几个步骤,就完成了安全的链接和通讯:双方都使用字符a做为密钥对内容进行对称加密,另外生成数字签名写在一旁用于校验内容。

身份验证的实现:

此前小明不是怕第四排同窗假装成小红回纸条信息吗?

如今有了数字证书的功能,在一开始准备传对话内容前就能够经过CA公钥解密数字证书,得出信息来辨别对方身份。

万恶的第四排同窗(中间人)再也没法假装女神小红了!

注:HTTPS机制很是重要的一点就是假定CA的私钥是安全的,若是泄露了,HTTPS的安全性机制将土崩瓦解。因此CA通常是大公司或组织,由于它们更有能力保护本身的私钥,所以浏览器信任的CA列表每每是一些知名CA。

数据加密的实现:

此前小明不是怕第四排同窗窃听纸条信息吗?

如今由于有了前面的身份验证,也就确保获得了真实对方的公钥,并能利用该公钥加密传输即将用于对称加密对话内容的密钥(例子中的字符a)。只要这个对称密钥被安全传输了,后面进行纸条内容的加密也就被高效的实现了。

万恶的第四排同窗(中间人)不再没法偷看个人纸条小秘密了!

注:这里可能会有同窗问,既然双方都知道彼此的公钥后,那为什么不直接拿对方的公钥来加密本身要发出的信息?这个确实能够,可是却忽略了高效性,前面已经提到过,非对称加密算法比对称加密算法效率要低,考虑到后续通讯的频繁性,因此最好使用对称加密来对通讯内容进行加密。

数据完整性保护的实现:

此前小明不是怕第四排同窗篡改或破坏纸条信息吗?

如今有了数字签名,可与原有信息进行对比,就能够判断纸条内容有无被更改或破坏了。

万恶的第四排同窗(中间人)再也没法更改或破坏我对女神表达的情感了!

HTTPS的创建过程:

弄懂了上面小明传纸条的例子,再来理解访问使用 HTTPS 协议网站的创建过程,简直就是易如反掌!

创建安全的HTTPS通信,可防止中间人攻击,这须要如下步骤:  

一、服务端配置正确了对应的安全证书   

二、客户端发送请求到服务端   

三、服务端返回公钥和证书到客户端   

四、客户端接收后会验证证书的安全性,若是经过则会随机生成一个随机数,用公钥对其加密,发送到服务端   

五、服务端接受到这个加密后的随机数后会用私钥对其解密获得真正的随机数,随后用这个随机数当作密钥对须要发送的数据进行对称加密   

六、客户端在接收到加密后的数据使用密钥(即生成的随机值)对数据进行解密而且解析数据呈现结果给客户   

七、SSL加密创建。后续数据传输还将用到数字签名技术。。

注:小明传纸条的例子和用户访问网站有点不一样:小明小红互相传纸条须要双方互相进行身份验证;而用户访问网站,只是用户验证网站,网站不验证用户。但不管哪一种状况,使用的底层技术都是上面几种,只是应用状况不一样。

事件后续吃瓜

点击域名左边的感叹号标志,就能查看到该网站提供的证书信息。

能够看到这个数字证书的签发人信息,从电子邮箱能够知道 QQ。后续网传这QQ主人仍是个初学计算机的高中生......

不过,“初学者”的猜想显然不符合常理,“凭一己之力搞坏网络”所须要的智商,和“拿本身QQ邮箱签名证书”所对应的智商,显然不在同一个位面上。这不符合常理,事出反常必有妖。

最近,这位号主也发话澄清了。。

晚上,二毛坐在电脑桌前,看着万家灯火,想象着二丫又搞懂了一些计算机知识点后,欣喜若狂、欢呼雀跃的样子,不由感到欣慰。

他随后在电脑上敲下一行标题:跟零计算机基础的房东女儿讲了一下午的中间人劫持京东事件后,她感激不尽,决定给我免除房租。

哎,程序员的快乐,每每就是那么朴实无华、枯燥且乏味。

往期精彩:

【故事】跟零计算机基础的房东女儿讲了一下午的中间人劫持京东事件后,她感激不尽,决定给我免除房租(上)


    欢迎来到程序员二毛的世界,在这里你将看到特色鲜明的人物、跌宕起伏且有趣的故事情节、通俗易懂的技术。

    关注公众号《程序员二毛》,后台回复 1024 领取变强秘籍。

相关文章
相关标签/搜索