密码学可能是一门很难理解的学科。它充满了数学证明。但是,除非您实际上正在开发密码系统,否则大部分的复杂性对于理解高层次上发生的事情都是不必要的。

如果您打开这篇文章希望创建下一个 HTTPS 协议,很抱歉,用鸽子来说明是不充分的。好吧,现在开始冲泡咖啡并欣赏这篇文章。

爱丽丝、鲍勃和……鸽子?

您在 Internet 上进行的任何活动(阅读本文、在亚马逊上购买东西、上传猫图片)都归结为向服务器发送消息和从服务器接收消息。

这可能有点抽象,所以让我们假设这些信息是由信鸽传递的。我知道这可能看起来很武断,但请相信我 HTTPS 的工作方式相同,尽管速度要快得多。

此外,我们将讨论 Alice、Bob 和 Mallory,而不是谈论服务器、客户端和黑客。如果这不是您第一次尝试理解密码学概念,您会认出这些名称,因为它们在技术文献中被广泛使用。

第一次幼稚的交流

如果Alice要给Bob发消息,她就把消息附在信鸽的腿上,发给Bob。Bob 收到消息,阅读它,一切都很好。

但是,如果Mallory在飞行中拦截了Alice的鸽子并更改了消息怎么办?Bob 无法知道 Alice 发送的消息在传输过程中被修改了。

这就是HTTP 的工作原理。很可怕吧?我不会通过 HTTP 发送我的银行凭证,你也不应该。

一个密码

现在,如果爱丽丝和鲍勃非常狡猾怎么办。他们同意他们将使用密码编写消息。他们会将每个字母在字母表中移动 3 个位置。例如 D → A,E → B,F → C。纯文本消息“秘密消息”将是“pbzobq jbppxdb”。

现在,如果 Mallory 拦截了这只鸽子,她将无法将信息更改为有意义的内容,也无法理解它的内容,因为她不知道代码。但是 Bob 可以简单地反向应用代码并解密 A → D,B → E,C → F 的消息。密文“pbzobq jbppxdb”将被解密回“secret message”。

成功!

这称为对称密钥密码术,因为如果您知道如何加密消息,您也就知道如何解密它。

我上面描述的代码通常被称为凯撒密码。在现实生活中,我们使用更高级、更复杂的代码,但主要思想是相同的。

我们如何确定密钥?

如果除了发送方和接收方之外没有人知道使用的是什么密钥,则对称密钥密码术是非常安全的。在凯撒密码中,密钥是我们将每个字母移动多少个字母的偏移量。在我们的示例中,我们使用了偏移量 3,但也可以使用 4 或 12。

问题是,如果 Alice 和 Bob 在开始用鸽子发送消息之前没有见面,他们将无法安全地建立密钥。如果他们在消息本身中发送密钥,Mallory 将拦截消息并发现密钥。这将允许 Mallory 在 Alice 和 Bob 开始加密他们的消息之前和之后按照她的意愿阅读或更改消息。

这是中间人攻击的典型例子,避免它的唯一方法是一起更改加密系统。

携带箱子的鸽子

所以Alice和Bob 想出了一个更好的系统。当 Bob 想给 Alice 发送消息时,她将遵循以下过程:

Bob 在没有任何消息的情况下向 Alice 发送了一只鸽子。

Alice将鸽子送回,鸽子带着一个锁打开的盒子,Alice保留了钥匙。

Bob 将消息放入盒子中,锁上锁并将盒子发送给 Alice。

Alice收到盒子,用保留的钥匙打开它并阅读信息。

这样 Mallory 就无法通过拦截鸽子来更改消息,因为她没有密钥。当 Alice 想给 Bob 发送消息时,遵循相同的过程。

Alice 和 Bob 只是使用了通常所说的非对称密钥密码术。之所以称为非对称,是因为即使您可以加密一条消息(锁上盒子),您也无法解密它(打开一个关闭的盒子)。在技​​术术语中,盒子被称为公钥,打开它的钥匙被称为私钥。

我如何信任盒子?

如果你注意的话,你可能已经注意到我们仍然有问题。当 Bob 收到那个打开的盒子时,他如何确定它来自 Alice 以及 Mallory 没有拦截鸽子并将盒子换成她有钥匙的盒子?

Alice 决定她将在盒子上签名,这样当 Bob 收到盒子时,他检查签名并知道是 Alice 发送了盒子。

你们中的一些人可能会想,鲍勃首先会如何识别爱丽丝的签名?好问题。Alice 和 Bob 也遇到了这个问题,所以他们决定由 Ted 代替 Alice 在盒子上签名。

泰德是谁?泰德是一个非常有名、广为人知且值得信赖的人。Ted 将他的签名交给了每个人,每个人都相信他只会为合法的人在盒子上签名。

只有当 Ted 确定要求签名的人是 Alice 时,他才会在 Alice 的盒子上签名。因此,Mallory 无法获得由 Ted 代表她签名的 Alice 盒子,因为 Bob 会知道该盒子是欺诈的,因为 Ted 仅在验证其身份后才为人们签名。

Ted 在技术术语中通常被称为证书颁发机构,您正在阅读本文的浏览器附带了各种证书颁发机构的签名。

所以当你第一次连接到一个网站时,你信任它的盒子,因为你信任 Ted,而 Ted 告诉你这个盒子是合法的。

箱子很重

爱丽丝和鲍勃现在有了可靠的通信系统,但他们意识到携带箱子的鸽子比只携带信息的鸽子慢。

他们决定他们将使用盒子方法(非对称加密)来选择一个密钥来使用对称加密(还记得凯撒密码吗?)来加密消息。

这样他们就能两全其美。非对称密码的可靠性和对称密码的效率。

在现实世界中没有慢鸽子,但是使用非对称密码加密消息仍然比使用对称密码慢,所以我们只用它来交换加密密钥。

现在您知道了HTTPS 的工作原理,您的咖啡也应该准备好了。去喝你应得的吧

用信鸽解释HTTPS相关推荐

  1. 飞鸽传书来解释 HTTPS 机制

    转自公众号<码农每日一题> 密码学是一门难以理解的学科,因为它充满了数学定理.但是除非你要实际开发出一套加密算法系统,否则你是没必要强制理解那些深奥的数学定理的.如果你阅读本文的目的是想设 ...

  2. my-medium.cnf_您的手机如何打开medium.com-我将让门卫和图书管理员解释。

    my-medium.cnf by Andrea Zanin 由Andrea Zanin 您的手机如何打开medium.com-我将让门卫和图书管理员解释. (How your phone opens ...

  3. 分分钟让你理解HTTPS

    想获取更多的前端技术-请专注公众号:胖梅web前端 一.HTTP存在的问题 1.1 可能被窃听 HTTP 本身不具备加密的功能,HTTP 报文使用明文方式发送 由于互联网是由联通世界各个地方的网络设施 ...

  4. 关于python中的self,ins , cls的解释

    关于python中的self,ins , cls的解释 https://blog.51cto.com/10250691/1890078

  5. 聊聊HTTPS和SSL/TLS协议

    要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 2. 大致了解 HTTP 和 TCP 的关系(尤其是"短连接 ...

  6. 聊聊 HTTPS 和 SSL/TLS 协议

    原文:http://www.techug.com/post/https-ssl-tls.html 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.S ...

  7. 浅谈 HTTPS 和 SSL/TLS 协议的背景与基础

    来自:编程随想   >> 相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 ...

  8. 【转】聊聊HTTPS和SSL/TLS协议

    要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 2. 大致了解 HTTP 和 TCP 的关系(尤其是"短连接 ...

  9. 每个人都应该了解的HTTPS知识

    天天上网都会在地址栏输入http://--,可不要说你不知道http哦,那就不应该了,多对不起这么多年耗在网页上的时光和输入的http啊!来,小编给童鞋们普及一下http相关的知识! 名词解释 &qu ...

最新文章

  1. DOM manipulation
  2. leetcode1314. 矩阵区域和(动态规划)
  3. 一款研发管理软件的对象标签介绍
  4. LeetCode872. Leaf-Similar Trees
  5. e语言mysql中文_大佬们E语言连接MYSQL输出中文乱码怎么破
  6. oracle一个lun多大,Oracle RAC中验证LUN_ID对应情况
  7. 二、十进制数字快速转换为16进制字符
  8. 用python画圆形彩虹_python学习之GUI(pygame)
  9. OpenCV 直方图基础
  10. iOS逆向(八)逆向工具 otool 介绍
  11. xshell 安装包(百度网盘)+安装过程连接虚拟机注意事项
  12. 无人车之美——论无人车辆系统的软件架构
  13. C语言求解一元二次方程
  14. php读取路由器arp表,详解ARP地址解析协议的工作流程
  15. java clh_CLH lock 原理及JAVA实现
  16. python控制小爱同学_神秘鸭,用Siri小爱同学语音助手控制你的电脑
  17. 【转】如何融入一个城市
  18. Scrum 敏捷开发 基础考试
  19. PHP:字符串的分割与拼接
  20. 视频教程-【吴刚】UI拟物图标设计初级入门标准教程-UI

热门文章

  1. Wine-Staging 4.9 发布,增添一些新补丁
  2. 【光程科技】苹果上线Xcode Cloud
  3. 苹果都用自己系统,旧手机我也改成服务器!
  4. NCC低代码平台走过的坑(持续更新)
  5. 如何将讲课视频录制下来,只需要三步搞定.
  6. easyexcel 导出设置标题_EasyPoi设置Excel导出样式(边框,背景色,字体)
  7. vscode连接远程linux服务器显示错位:Resolver error: Error
  8. 为什么零基础转“码”首选软件测试
  9. excel打不开是什么原因_iTunes安装后打不开是什么原因
  10. php 加入即时推送功能