人物:老李,老赵,张三和乌龟太郎
问题描述:老李要给老赵传递情报,怎么才能不被乌龟太郎截获
我们都在互联网上进行过购物,浏览过新闻,发送过邮件。这些事物的本质其实可以简单的理解为——消息的传递。
今天老李也要给老赵传递一次重要的消息。不仅仅要及时传递到老赵手中,更重要的是保证信息不被乌龟太郎截获。
初次传递
第一次传递。老李把信息写在了一张纸上,交给了上帝传递给老赵。老赵收到消息,阅读,一切顺利。
但是,如果乌龟太郎在上帝传递信息的过程中劫持了上帝,并把信息进行了篡改。那么,老赵就无法收到正确的消息了。
这种传递消息的方式就是HTTP的工作方式。是不是很吓人?
需要一个规则,对数据进行编码
我们不能将重要的信息就这么写在纸上。因为这样太容易被敌人截获并且破译了。
老李想了一个办法,我们现在将要传递的信息根据某种规则重新编写。比如:他们将原来的信息每个字都重新编写,变为新的信息。例如:hello,h→1, e→2, l→3, o→4。这样一来,原来的 “hello” 将被重新编码为 “12334” 。
如果现在乌龟太郎再次劫持上帝,他就不能破解信息的原始内容也无法进行消息的篡改。因为他不知道加密的规则是什么。
但是老赵可以简单的利用规则进行反向解密 1→h, 2→e, 3→l, 4→o 最终将密文 “12334” 解密回 “hello”。
nice
这种加密方式就是我们常说的对称密钥加密。
也就是说,你知道如何加密就知道如何解密。上面所说的“规则”一般被称之为“凯撒密码” 。它是一种替换加密的技术。
在现实生活中,我们使用更高级、更复杂的规则,但主要思想是相同的。
我们的密钥被窃取了怎么办?
如果除了老李和老赵之外没有人知道使用了什么规则,那么对称密钥加密是非常安全的。在凯撒密码中,规则是我们移动每个字母的字母数的偏移量。也可能是一对一对应的规则。在我们的示例中,我们使用一对一对应的规则。
现在的问题是,如果老李和老赵在开始发送消息之前没有见面,他们就无法安全地建立密钥。如果他们在消息本身中发送密钥,乌龟太郎还是会拦截到消息并发现密钥。这样的话就会使得此次消息的传递变得极不安全。乌龟太郎会篡改消息内容。
这是中间人攻击的典型例子,我们将如何避免他呢?
我们需要一个上锁的箱子
现在我们必须重新设计一个消息传递的方式;
- 老赵会把一个箱子交给老李,但是不存在任何消息
- 老李将箱子上锁,但是不锁住箱子,重新交还给老赵,锁的钥匙自己保留
- 老赵将消息放入箱子中,锁住箱子然后还给老李
- 老李收到箱子,用要是打开锁,阅读信息
这样乌龟太郎就不能通过劫持上帝来获取消息了。因为他没有箱子的钥匙。
上述方式就是我们常说的非对称密钥加密。
怎么理解非对称呢?
这种密码学方法中,需要一对密钥,一个是私人密钥,另一个则是公开密钥。这两个密钥是数学相关,用某个用户的密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥
在上面的例子中子锁就是老李的公钥,老赵锁住了箱子,就相当于使用老李的公钥将信息加密。然后老李使用自己的钥匙打开箱子就相当于使用自己的私钥解密信息到要通信的明文。
箱子和锁是可以被信任的吗?
上面的例子看起来已经非常非常安全了。但是还有问题。我们想一下,如果乌龟太郎在箱子传递的过程中把箱子和锁进行了调换,换成了自己有钥匙的箱子。那么还是会出现消息传递失败的情况。
所以,我们必须要证明这个箱子是老赵的。那么我们应该如何证明呢?
我们应该把老赵的个人信息烙印在箱子上,这就是签名。当老李收到箱子的时候会验证一下烙印的信息是否是老赵。
那么,现在你可能又想到了一个问题。如何才能确定这个签名确定是老赵的签名呢?这是个好问题。老李和老赵也意识到这个签名可能会是敌人伪造的,所以他们决定张三代替老赵在箱子上签名。
张三是谁?张三是非常有名并且值得信赖的人。张三将自己的签名交给了世上每个人,世上的人都相信张三只会为已经确认合法的人在箱子上签名。
只有张三确认了要求签名的人确实是老赵,他才会在老赵的箱子上签名。因此,乌龟太郎是没办法获取由张三代替老赵签名的箱子并替换它。
张三,就是技术术语中出现的“证书颁发机构”。
张三通过对一个证书进行签名,来对名字和公钥之间的绑定关系做担保(上面的例子是为老赵的箱子打烙印)。
总结
老李使用老赵的公钥对消息进行“对称加密”处理(例子中是对消息进行上锁处理),然后老赵收到带有老李的签名消息后使用自己的私钥进行解密(例子中是使用钥匙打开锁)。
这样可以确保交换的密钥是安全的前提下,使用对称加密方式进行通信的做法就是 HTTPS 的基本原理。
后记
渔夫出海前并不知道鱼在哪里。
但是他们还是选择出发,因为他们相信会满载而归!
人生有很多时候,不光要有正确的选择,还要付出行动,才能满载而归。
欢迎关注个人公众号,说人话,做人事,遇见更好的自己