使用信鸽来解释HTTPS

  • 时间:2018-07-17 23:24 作者:程序员之言 来源:程序员之言 阅读:130
  • 扫一扫,手机访问
摘要:密码学是一门难以了解的学科,由于它充满了数学定理。但是除非你要实际开发出一套加密算法系统,否则你是没必要强制了解那些深奥的数学定理的。假如你阅读本文的目的是想设计下一套 HTTPS 协议,那我只能抱歉的说本文的知识还远远不够;假如不是的话,那么就煮杯咖啡,轻松愉悦的阅读本文吧。爱丽丝、鲍伯和 … 信
使用信鸽来解释HTTPS

密码学是一门难以了解的学科,由于它充满了数学定理。但是除非你要实际开发出一套加密算法系统,否则你是没必要强制了解那些深奥的数学定理的。

假如你阅读本文的目的是想设计下一套 HTTPS 协议,那我只能抱歉的说本文的知识还远远不够;假如不是的话,那么就煮杯咖啡,轻松愉悦的阅读本文吧。

爱丽丝、鲍伯和 … 信鸽?

你在互联网上从事的任何活动(阅读这篇文章、在亚马逊上购物、上传图片等)归结究竟都是从某台服务器上发送和接收信息。

这个说起来可能有点笼统,不如让我们假设这些消息都是由信鸽来传递的。我知道这个假设有些太过随便,但相信我 HTTPS 就是这样工作的,虽然它的速度快的多。

我们先不谈服务器、用户端或者者黑客攻击,先来聊一下爱丽丝、鲍伯和马洛里。假如这已不是你第一次接触密码学理论,你应该会认识这些名字,由于他们经常在各种密码学文献中被提及。

初级交流

假如爱丽丝想要给鲍勃发送一段信息,她会把信息绑在信鸽的腿上而后送往鲍勃那里。鲍勃收到了信息,并阅读了信息,非常完美。

但假如马洛里阻拦了爱丽丝的鸽子并且篡改了信息呢?鲍勃就没有办法去知道爱丽丝发出的信息在传递过程中遭到了修改。

这就是 HTTP 如何运作的。看起来很可怕对吧?我是不会通过 HTTP 来发送我的银行资信证实的,并且你也不应如此。

隐蔽的密码

那么假如爱丽丝和鲍勃都非常的机智。他们一致认同用一种隐蔽的密码来书写他们的信息。他们会将信息中的每个字母按照字母表中的顺序前移三位。比方,D→A,E→B,F→C。如此一来,原文为 “secret message” 的信息就变成了 “pbzobq jbppxdb” 。

那现在假如马洛里再截获了信鸽,她既不能做出有意义的修改同时也不会知道信息的内容,由于她不知道隐蔽的密码究竟是什么。然而鲍勃却可以很容易反转密码,依靠 A → D, B → E, C → F 之类的规则破译信息的内容。加密后的信息 “pbzobq jbppxdb” 会被破解复原为 “secret message” 。

搞定!

这就是对称密匙加密,由于假如你知道如何加密一段信息那么你同样可以解密这段信息。

上述的密码通常被称为凯撒码。在现实生活中,我们会用更为奇特和复杂的密码,但原理相同。

我们如何决定密匙?

假如除了发信者和收信者之外没有人知道用的是什么密匙,对称密匙加密是非常安全的。在凯撒加密中,密匙就是每个字母变到加密字母需要移动多少位的偏移量。我之前的距离中,用的偏移量是 3 ,但是也可以使用 4 或者者 12 。

问题是假如爱丽丝和鲍勃在开始使用信鸽传信之前没有碰过头,他们没有一个安全的方式来确立密匙。假如他们自己来在信中传递密匙,马洛里就会截获信息并发现密匙。这就使得马洛里可以在爱丽丝和鲍勃开始加密他们的信息之前或者之后,阅读到他们信息的内容并按照她的意愿来篡改信息。

这是一个中间人攻击的典型例子,避免这个问题的唯一方法就是收发信的两方一起修改他们的编码系统。

通过信鸽传递盒子

所以爱丽丝和鲍勃就想出了一个更好的系统。当鲍勃想要给爱丽丝发送信息时,他会按照如下的步骤来进行:

鲍勃向爱丽丝送一只没有携带任何信息的鸽子。

爱丽丝给鲍勃送回鸽子,并且这只鸽子带有一个有开着的锁的盒子,爱丽丝保管着锁的钥匙。

鲍勃把信放进盒子中,把锁锁上而后把盒子送给爱丽丝。

爱丽丝收到盒子,使用钥匙打开而后阅读信息。

这样马洛里就不能通过截获鸽子来篡改信息了,由于她没有打开盒子的钥匙。当爱丽丝要给鲍勃发送消息的时候同样按照上述的流程。

爱丽丝和鲍勃所用的流程通常被称为非对称密钥加密。之所以称之为非对称,是由于即便是你把信息编码(锁上盒子)也不能破译信息(打开锁住的盒子)。

在术语中,盒子被称为公匙而使用来打开盒子的钥匙被称为私匙。

如何信任盒子

假如你稍加注意你就会发现还是存在问题。当鲍勃收到盒子时他如何能确定这个盒子来自爱丽丝而不是马洛里截获了鸽子而后换了一个她有钥匙能打开的盒子呢?

爱丽丝决定签名标记一下盒子,这样鲍勃收到盒子的时候即可以检查签名来确定是爱丽丝送出的盒子了。

那么你们之中的少量人可能就会想了,鲍勃如何打一开始就能识别出爱丽丝的签名呢?这是个好问题。爱丽丝和鲍勃也的确有这个问题,所以他们决定让泰德代替爱丽丝来标记这个盒子。

那么谁是泰德呢?泰德很有名的,是一个值得信任的家伙。他会给任何人签名并且所有人都信任他只会给合法的人签名标记盒子。

假如泰德可以确认索要签名的人是爱丽丝,他就会在爱丽丝的盒子上签名。因而马洛里就不可能搞到一个有着泰德代表爱丽丝签了名的盒子,由于鲍勃知道泰德只会给他确认过的人签名,从而识破马洛里的诡计。

泰德的角色在术语中被称为认证机构。而你阅读此文时所使用的浏览器打包存有许多认证机构的签名。

所以当你初次接入一个网站的时候你可以信任来自这个站点的盒子由于你信任泰德而泰德会告诉你盒子是合法的。

沉重的盒子

现在爱丽丝和鲍勃有了一个可靠的系统来进行交流,然他们也意识到让鸽子携带盒子比本来只携带信件要慢少量。

因而他们决定只有在选择使用对称加密来给信息编码(还记得凯撒加密法吧?)的密匙时,用传递盒子的方法(非对称加密)。

这样即可以二者的优点兼具了,非对称加密的可靠性和对称加密的高效

现实世界中我们不会使用信鸽这样慢的送信手段,但使用非对称加密来编码信息仍要慢于用对称加密技术,所以我们只有在交换编码密匙的时候会用非对称加密技术。

现在你已经理解了HTTPS是如何工作的了,你的咖啡也应该准备好了。好好享使用吧你受之无愧。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】需要同时掌握AVA和Linux,才可以继续大数据课程的学习(2019-05-18 10:28)
【系统环境|软件环境】学习大数据,一定要了解大数据的这些用途(2019-05-16 10:49)
【系统环境|Linux】bt宝塔控制面板mysql频繁自动停止详细解决办法(2019-05-16 08:52)
【系统环境|】大数据零基础学习路线,新人记得保存收藏哦(2019-05-15 10:54)
【系统环境|】全网最全最新的大数据系统学习路径(2019-05-14 15:38)
【系统环境|Linux】毕业设计:音乐分享系统(2019-05-14 07:48)
【系统环境|】教你零基础如何快速入门大数据技巧(2019-05-12 11:25)
【系统环境|】想学习大数据?这才是完整的大数据学习体系(2019-05-11 11:33)
【系统环境|数据库】小白学习大数据掌握这几个方法可轻松入门(2019-05-10 10:52)
【系统环境|数据库】学习大数据必须了解的大数据开发课程大纲(2019-05-09 11:40)
手机二维码手机访问领取大礼包
返回顶部