漫画:用故事说透 HTTPS

本文首发于个人公众号:素燕 用故事说透 HTTPS前端

故事中的主演:算法

小华今年上大一,这是她第一次离开父母,独自一人到北京上学。今天妈妈的生日,想了想要给妈妈一个祝福,便给妈妈发了条消息:浏览器

妈妈收到这条消息很是开心,女儿这么忙还能记得本身的生日,两我的便开始聊了起来。妈妈知道女儿一直省吃俭用,决定给女儿打点钱过去。安全

小黑是个黑客,专搞一些“偷鸡摸狗”的事情,他已经监听了这对母女的对话。一直看着她们唠家常,都快睡着了。socket

直到看到母女提到钱的事情,立马打起精神,决定搞一笔。而后他截获了小华的消息,替换成本身精心准备的内容给小华的妈妈发过去了。学习

小华的妈妈随后就把钱打给了小华,不曾想到母女二人的聊天内容尽在小黑的掌控之中。小黑拿到钱后就溜之大吉了。ui

「公众号素燕注:HTTP 协议是创建在 TCP 之上的,TCP 是否安全决定了 HTTP 是否安全。HTTP的报文内容并未加密,容易被监听和篡改。小黑就监听了母女二人的聊天内容,并对内容进行了篡改,假装成女儿进行聊天。因此 HTTP 有如下 3 个问题:加密

1.内容未加密,容易被监听,都是明文传输; 2.没法验证内容的完整性,容易被篡改,也就是说不知道消息是否是被修改过; 3.没法验证对方的身份,我如今聊天的人是谁,可靠吗?」3d

小华被骗后,内心很难过,把这件事告诉了她的计算机老师王大强。王老师听到被骗的经历,感到很是惊讶,消息为何会被篡改呢!立马查看了她们使用的聊天软件,原来这个软件直接使用的是 TCP 协议,没有作安全措施。cdn

研究完软件后,大强对小华说:“这款软件有问题,之后别用了,要用具备安全措施的软件,好比使用 TLS/SSL 协议的软件”。

小华说:“什么是 TLS/SSL 呢?”。大强看到小华诚恳的表情,决定把 HTTPS 的原理告诉她,可是想到她可能理解不了,而后决定剖析一下她和妈妈被骗的场景。 既然小华和她妈妈的聊天内容是明文传输的,那直接把内容加密不就完事了吗。小华和她妈妈就约定了一个密码,全部的内容都经过这个密码进行加密和解密。

「公众号素燕注:这种加密方式称为对称加密,加密解密都是经过同一个密码来操做,因此须要保证密码的安全,一旦泄露,后果很严重」 小华立马觉察到事情的不妙,密码如何才能传给她妈妈呢。只能双方见面后来约定一个密码。可是她想到远在美国的爸爸,若是向他要钱的话,须要飞往美国把密码告诉他。这太麻烦了。

王大强老师说:“别急,还有更好的方法”。那就使用两个密钥,一个用来加密(称为公钥),另外一个用来解密(称为私钥),使用公钥加密过的内容,只能经过私钥进行解密。私钥只有本身有,公钥能够丢给别人。

小华和妈妈,只把公钥交给对方就行。小华给妈妈发消息的时候,用妈妈的公钥进行加密,私钥只有妈妈有,也就是说只有妈妈能解密。

「公众号素燕注:这种加密方式称为非对称加密,会有二个钥匙,一个钥匙加密过的内容只能经过另外一个钥匙进行解密。至于为啥要说私钥加密公钥解密,虽然两个钥匙均可以进行加密解密,可是私钥加密公钥解密这种说法不是更好理解吗?公钥被人都知道,私钥只有本身知道」。

小华想了想以为仍是有点不安全,假如她和妈妈进行交换公钥的时候,被小黑监听了。 小华把本身的公钥 xiaohua_pub 发给妈妈,中途被小黑掉包了,小黑把本身的公钥 xiaohei_pub 发给了小华的妈妈。这样小华妈妈发消息的时候就使用了小黑的公钥进行了加密,小黑获取到消息表能够用本身的私钥进行解密。

妈妈发送本身的公钥给小华的时候也被小黑掉包了,这时小黑就有了双方的公钥。

小黑监听到小华要求妈妈打钱的消息,对消息进行了篡改。

王大强老师听完小华的疑虑,竖起了大拇指,说道:“别急,听我慢慢解释”。

如今的问题是出在交换公钥的时候被小黑调包了,那接下来就须要解决这个问题。如何才能把公钥安全地送到对方手上。

这彷佛是永远解不了的问题,毕竟公钥始终是要通过传输的。这彷佛是一个鸡生蛋蛋生鸡的问题。后来小华想了想他平时网上购物的时候,之前老是担忧怕付款了,商家跑路不给发货,自从有了淘宝这个第三方机构,毕竟阿里家大业大,值得信赖,即便商家跑路了能够找淘宝。

后来就出现了关于公钥的认证机构,这些认证机构不多,但很是权威,它会和电脑、浏览器等厂商达成信任关系,提早把认证机构的公钥安装到系统中,这样就不会涉及到传输的问题了。

在聊天的过程当中,小华发现消息发送和接收的时候很慢,后来发现由于是加密算法耗费比较长的时间。小华想了想,使用对称加密的时候,惟一的缺点是交换秘钥比较麻烦,可是速度很是快。那么能够经过非对称加密来传输对称加密的密钥,密钥传输成功后,使用对称加密来加密消息。

到此,你理解如何保证通讯安全了吗?

「公众号素燕注:HTTP 属于应用层协议,HTTPS 并非一个新的协议,它只是比 HTTP 协议多了一层(TLS/SSL)来保证数据传输安全。TLS/SSL也属于协议,它的主要做用是保证数据传输安全。大多数使用的是 OpenSSL 来实现,好比 Node 中的 TLS 就是基于 OpenSSL 实现的」。

总结

本文以故事的形式介绍了 HTTP 的不安全,保证 HTTPS 安全性的背后支持,包含数字证书、数字签名、对称加密、非对称加密的概念,固然光有理论还不行,须要实践才能更好地理解。你们加油。

若是你喜欢用故事说透技术,能够看个人另一篇文章:打破讨论薪资的红线 之 签名原理(漫画)

推荐阅读:

相关文章
相关标签/搜索