原文链接:讲一个爱情故事,让 HTTPS 简单易懂

    充满各种数学证明的密码学是令人头疼的,一听到密码、黑客、攻击等词的时候,就给人一种神秘又高大上的感觉,但除非你真的从事密码学相关工作,否则你并不需要对密码学有多么深刻的理解。

    这是一篇适合在饭后的品茶时光中阅读的文章,咱们虚构一个故事来讲解,虽然故事看起来很随性,但是 HTTPS 也是这么工作的。里面有一些术语你也应该听过,因为它们经常出现在技术文献里面。

故事背景

    一天,一个男子到河边抓鱼给母亲吃,而河岸的另一头是一大户人家的小姐和她的丫鬟在散步。突然,一个不小心,对面小姐不慎跌入水中,而丫鬟又不会游泳,这可把小丫鬟急的呀!!!正在抓鱼的男子见此状况,来不及脱掉身上的衣物,就像箭一样窜入水中…想必看客已经猜到了,小姐被救起,男子抱着迷迷糊糊小姐走上岸的过程中,小姐感觉自己像触电了一样,觉得这个男人很安全,只要靠着他,就算天塌下来也不怕,而男子把小姐放下的那一刻,也很不舍,好像把她放下就失去了活下去的希望。

    小姐回到家中,给父亲大人说了这件事,父亲很高兴,就叫下人去把这位男子请到家中表示感谢,结果一问,这小伙幼年丧父,现在家中还有病弱的老母亲,连一间屋子都没有,一直和母亲寄住在城外的破庙里面,不过他毕竟救了自己的女儿,父亲让下人拿出了五十两黄金以表谢意,但不允许他和小姐再有任何来往。

    …此处省略五千字。

    我们姑且称小姐为小花,称男子为小明,他们不能相见了,但是又备受相思之苦,因此只能通过写信的方式来传达彼此的思念了。

最简单的通信方式

    如果小花想给小明写信,那么她可以把写好的信让信鸽给小明送去,小明也可以通过信鸽给小花回信,这样他们就能知道彼此的感情了。

    但是很快这种方式出问题了,因为他们都隐约感觉到收到的来信不是对方写的,因为从信件上看,双方都表示不再喜欢彼此。凭借着对彼此的信任,他们才知道是小花的父亲从中阻挠他们。每次他们写的信都被父亲的下人拦下了,然后换上他们事先准备好的信件,目的就是为了让小花和小明断了感情。

    HTTP 就是这样的工作方式。

对称加密

    小花是博冠古今的人,这怎么能难倒她呢。他们彼此约定,每次写信都加上密码,让信鸽传送的信件是用密文书写的。他们约定的密码是把每个字母的位置向后移动三位,比如 A → D 、 B → E ,如果他们要给对方写一句 “I love you” ,那么实际上信件上面写的就是 “L oryh brx” 。现在就算父亲把信件拦截了,他也不知道里面的内容是什么,而且也没办法修改为有效的内容,因为他不知道密码,现在小花和小明又能给对方写情书了。

    这就是对称加密,因为如果你知道如何加密信息,那也能知道如何解密信息。上面所说的加密常称为凯撒密码,在现实生活中,我们使用的密码肯定会更复杂,但是主要思想是一样的。

如何确定密钥

    显然对称加密是比较安全的(只有两个人知道密码的情况下)。在凯撒密码中,密码通常是偏移指定位数的字母,我们使用的是偏移三位。

    可能你已经发现问题了,在小花和小明开始写信之前,他们就已经没办法相见了,那他们怎么确定密钥呢,如果一开始通过信鸽告诉对方密钥,那父亲就能把信鸽拦下,也能知道他们的密钥,那么父亲也就可以查看他们信件的内容,同时也能修改信件了。

    这就是典型的中间人攻击,唯一能解决这个问题的办法就是改变现有的加密方式。

非对称加密

    小花想出了更好的办法,当小花想给小明写情书的时候,她将会按照下面的步骤来进行:

  • 小花给小明送一只没有携带任何信件的鸽子;
  • 小明让信鸽带一个没有上锁的空箱子回去,钥匙由小明保管;
  • 小花把写好的情书放到箱子里面,并锁上箱子
  • 小明收到箱子后,用钥匙打开箱子就可以了。

    使用这种方式,父亲大人就没办法拦截信鸽了,因为他没有箱子的钥匙。同样如果小明想给小花写情书,也采用这种方式。

    这就是非对称加密,之所以称之为非对称加密,是因为即使你能加密信息(锁箱子),但是你却无法解密信息(开箱子),因为箱子的钥匙在对方那里。在技术领域,把这里的箱子称作公钥,把钥匙称作私钥

认证机构

    细心的你可能发现问题了,当小明收到箱子后,他如何确定这个箱子的主人是谁呢,因为父亲也可以让信鸽带箱子给小明啊,所以父亲如果想知道他们的信件内容,那只需要把箱子偷换掉就好了。

    小花决定在箱子上面签上自己的名字,因为笔迹是不能模仿的,这样父亲就没办法伪造箱子了。但是依旧有问题,小花和小明在不能相见之前并没有见过彼此写的字,那么小明又如何识别出小花的字迹呢?所以他们的解决办法是,找张三丰替小花签名。

    众所周知,张三丰是当世的得道高人,他的品德是世人都认可的,大家都把他奉为圣人,而且天下肯定不止一对有情人遇到小花和小红这样的问题。张三丰只会为合法居民签名。

    张三丰会在小花的盒子上签名,前提是他确定了要签名的是小花。所以父亲大人是无法得到张三丰代表小花签名的盒子,否则小明就会知道这是一个骗局,因为张三丰只在验证了人们的身份后才会代表他们给盒子签名。

    张三丰在技术领域的角色就是认证机构,你现在阅读这篇文章所使用的浏览器是附带了各种认证机构的签名的。所以当你第一次访问某个网站时,你相信这不是一个钓鱼网站,是因为你相信第三方认证机构,因为他们告诉你这个箱子是合法的。

箱子太重了

    虽然现在小花和小明有了一个可靠的通信系统,但是信鸽带个箱子飞的慢啊,热恋中的人是“一日不见如隔三秋”,信鸽飞慢了怎么行呢。

    所以他们决定还是采用对称加密的方式来写情书,但是对称加密的密钥要用箱子来传递,也就是用非对称加密方式来传递对称加密密钥,这样就可以同时获得对称加密和非对称加密的优点了,还能避免彼此的缺点。

    需要注意的是,在网络世界中,信息不会像鸽子传送的那么慢,只不过只用非对称加密技术加密信息要比对称加密慢,所以只用它来交换密钥。

    以上就是 HTTPS 的工作过程。

一个故事

    这个故事你可能早就知道了,我只是在写文章的过程中突然想起了它,就是笛卡尔的爱情故事。

    具体细节你可以网上去查,笛卡尔每天给自己喜欢的公主写信,但是信都被国王拦截了,笛卡尔给公主写的第十三封信中只有一个数学方程,但是这个方程国王看不懂,所以就把这封信交给了公主,公主一看方程,立刻着手把方程的图形画了出来,发现这是一颗心的形状。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lUpWlSND-1569678880246)(https://github.com/MrLiuXuguang/mrliuxuguang.github.io/raw/master/_posts/images/计算机网络/心形线.png)]

参考内容:https://medium.freecodecamp.org/https-explained-with-carrier-pigeons-7029d2193351

让HTTPS简要易懂相关推荐

  1. 让HTTPS简单易懂

        充满各种数学证明的密码学是令人头疼的,一听到密码.黑客.攻击等词的时候,就给人一种神秘又高大上的感觉,但除非你真的从事密码学相关工作,否则你并不需要对密码学有多么深刻的理解.     这是一篇 ...

  2. iOS 中对 HTTPS 证书链的验证

    这篇文章是我一边学习证书验证一边记录的内容, 稍微整理了下,共扯了三部分内容: HTTPS 简要原理: 数字证书的内容.生成及验证: iOS 上对证书链的验证. HTTPS 概要 HTTPS 是运行在 ...

  3. Android 数据库 SQLite

    首先关于SQLite的介绍百度上看看就大致了解的差不多了. Android 操作数据库的关键步骤就在于实现API SQLiteOpenHelper,通常这个库辅助类来创建或打开数据库. 废话不多说直接 ...

  4. Windows从服务器上批量下载文件

    前言 本人本地有一台Windows电脑(win10),当然一般不会在本地跑实验,实验都是在服务器上运行的,所以运行结果当然也就保存在了服务器上了.有时候为了可视化结果,就必须得从服务器上下载结果了 本 ...

  5. 小白学习物联网(物联网概述、边缘计算、隐私保护、区块链与物联网)

    文章目录 物联网概述部分 体系结构 关键技术 常见应用 物联网特有的安全问题 感知层的安全问题 感知层的安全需求 传输层的安全问题 传输层的安全需求 处理层的安全需求 各层均存在的安全需求 边缘计算部 ...

  6. http-https数据包的基本知识

    浏览器的数据包分为两种,一种是http协议的数据包,另外一种是https协议的数据包 HTTP 大致通信过程 HTTP 大致通信过程如下: 建立连接-->发送请求数据包-->返回响应数据包 ...

  7. 算法流程图,教你快速制作算法流程图

    算法流程图,算法流程图是一种用来描述算法或程序执行步骤的图形化表示方法.它是通过使用各种特定形状和线条来展现算法的逻辑结构,从而帮助开发人员更好地理解和实现复杂的计算机问题.通常情况下,算法流程图被用 ...

  8. 交通监控系统服务器配置,监控系统服务器配置

    监控系统服务器配置 内容精选 换一换 购买云耀云服务器时,云平台优化购买云服务器过程中的复杂配置:地域智能推荐.操作系统自主选择.实例规格自动推荐,减少选择信息,轻松完成云耀云服务器的购买流程.云耀云 ...

  9. web安全入门(基础篇)---小迪视频笔记

    目录 http数据包和https数据包 浏览器向网站服务器发送和接受数据的图示 http和https之间的不同 HTTP/HTTPS具体区别? HTTP简要通信过程 HTTPS简要通信过程(见图) R ...

最新文章

  1. 参观 Google 总部是一种什么体验?
  2. 在哪里学python好-自学python好还是去培训机构好?
  3. Unity3D学习笔记(十九):UGUI、Image、Text、Button
  4. 数字图像处理实验(16):PROJECT 06-03,Color Image Enhancement by Histogram Processing
  5. 两个不相同的类之间如果赋值
  6. C#并行编程(2):.NET线程池
  7. B. Lynyrd Skynyrd(倍增 + 区间最小值)
  8. Effective C# 原则22:用事件定义对外接口(译)
  9. Builder模式的误区:将复杂对象的构建进行封装,就是Builder模式了吗?
  10. [BZOJ5064] [HDU3652] B-number 数位DP
  11. 笔记本实现共享wifi上网
  12. 工程制图与计算机绘图实训任务书及参考资料,工程制图与计算机绘图综合实训(12版).doc...
  13. Retrofit 框架详解和使用
  14. 微信小程序 实现带刻尺度滑块
  15. 苹果app超级签名怎么弄
  16. 【Angular】ng-zorro-ant表格切换pageSize页数选择器不生效解决方案
  17. 第2次作业:微信案例分析
  18. 见微知著,从小需求里看产品的抉择和定位
  19. 字符串搜索算法之Sunday
  20. libyuv接口NV12ToI420的实际使用

热门文章

  1. Spring Boot整合EhCache实现缓存操作.md
  2. 服务器上的文件如何查看,如何查询服务器上的文件来源
  3. 如何通过HBuilderX开发调试微信小程序
  4. YOLOX的深入理解
  5. 3句古语看中国传统文化的智慧
  6. 扯淡篇 之 笔试面试
  7. python爬取新浪财经的股票信息
  8. char(int……)类型取值范围
  9. 【bzoj4184】shallot
  10. DataWhale组队数据分析学习 -- 第三章模型建立评估