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

如果您打开这篇文章希望创建下一个 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. hadoop 2 java hdfs_Hadoop2.6.0学习笔记(二)HDFS访问
  2. SQL Server 阻止了对组件 \'Ad Hoc Distributed Queries\' 的访问
  3. rmi远程代码执行漏洞_【漏洞通告】Apache Solr远程代码执行漏洞
  4. 聊天机器人中的深度学习技术(引言)
  5. VC2008 忽然无法调试DLL的解决方法
  6. SDUT _2117 数据结构实验之链表二:逆序建立链表
  7. js函数重写php,深入讲解js覆盖原有方法 提供重写方法
  8. 指针数组、数组指针、指针函数、函数指针
  9. 基于VUE2.0的分页插件
  10. Java版通用身份证验证
  11. 吞剑!喷火!这种江湖卖艺套路能吸引观众吗?
  12. 曾国藩:人生的三个阶段,做对了,剩下就是好运气
  13. 你的电脑或移动设备不支持Miracast
  14. 计算机二级职业生涯规划讲座心得,职业规划课心得体会2000字
  15. 51单片机入门学习------环境搭建
  16. 智慧社区网格化服务管理信息平台
  17. wpsup计算机内存不足处理方法,开几个wps就内存不足,电脑弹出内存不足-
  18. 【C语言】输入成绩并且计算成绩的平均数和计算出成绩高于平均数的数量
  19. 再读《细节决定成败》有感
  20. 5018软件项目管理

热门文章

  1. css 炫酷鎏金字体,颜色渐变
  2. 手写经典卷积神经网络-AlexNet
  3. SQLserver基本sql语句编写
  4. Java-截取PDF中的某一页作为缩略图
  5. 混合现实公司appMagics获数千万元A轮融资
  6. Mysql索引,SQL优化
  7. 新媒体人都在用的6款在线设计工具
  8. 27.(cesium之家)cesium接入百度影像地图
  9. 机器人庄园作文_友谊伴我成长作文400字
  10. 史上最详细的戴尔(DELL)D620 D630系笔记本拆机加显卡改造 多图