zoukankan      html  css  js  c++  java
  • 用故事说透HTTPS

    本文来自素燕公众号,原文地址:用故事说透https
    故事中的主演:
    故事主演
    小华今年上大一,这是她第一次离开父母,独自一人到北京上学。今天妈妈的生日,想了想要给妈妈一个祝福,便给妈妈发了条消息:
    在这里插入图片描述
    妈妈收到这条消息非常开心,女儿这么忙还能记得自己的生日,两个人便开始聊了起来。妈妈知道女儿一直省吃俭用,决定给女儿打点钱过去。
    在这里插入图片描述
    小黑是个黑客,专搞一些“偷鸡摸狗”的事情,他已经监听了这对母女的对话。一直看着她们唠家常,都快睡着了。
    在这里插入图片描述
    直到看到母女提到钱的事情,立马打起精神,决定搞一笔。然后他截获了小华的消息,替换成自己精心准备的内容给小华的妈妈发过去了。
    在这里插入图片描述
    小华的妈妈随后就把钱打给了小华,未曾想到母女二人的聊天内容尽在小黑的掌控之中。小黑拿到钱后就逃之夭夭了。

    HTTP 协议是建立在 TCP 之上的,TCP 是否安全决定了 HTTP 是否安全。HTTP的报文内容并未加密,容易被监听和篡改。小黑就监听了母女二人的聊天内容,并对内容进行了篡改,伪装成女儿进行聊天。所以 HTTP 有以下 3 个问题:
    1.内容未加密,容易被监听,都是明文传输;
    2.无法验证内容的完整性,容易被篡改,也就是说不知道消息是不是被修改过;
    3.无法验证对方的身份,我现在聊天的人是谁,可靠吗?

    小华被骗后,心里很难过,把这件事告诉了她的计算机老师王大强。王老师听到被骗的经历,感到非常惊讶,消息为什么会被篡改呢!立马查看了她们使用的聊天软件,原来这个软件直接使用的是 TCP 协议,没有做安全措施。

    研究完软件后,大强对小华说:“这款软件有问题,以后别用了,要用具有安全措施的软件,比如使用 TLS/SSL 协议的软件”。

    小华说:“什么是 TLS/SSL 呢?”。大强看到小华诚恳的表情,决定把 HTTPS 的原理告诉她,但是想到她可能理解不了,然后决定剖析一下她和妈妈被骗的场景。

    既然小华和她妈妈的聊天内容是明文传输的,那直接把内容加密不就完事了吗。小华和她妈妈就约定了一个密码,所有的内容都通过这个密码进行加密和解密。
    在这里插入图片描述
    这种加密方式称为对称加密,加密解密都是通过同一个密码来操作,所以需要保证密码的安全,一旦泄露,后果很严重

    小华立马觉察到事情的不妙,密码如何才能传给她妈妈呢。只能双方见面后来约定一个密码。但是她想到远在美国的爸爸,如果向他要钱的话,需要飞往美国把密码告诉他。这太麻烦了。

    王大强老师说:“别急,还有更好的方法”。那就使用两个密钥,一个用来加密(称为公钥),另一个用来解密(称为私钥),使用公钥加密过的内容,只能通过私钥进行解密。私钥只有自己有,公钥可以丢给别人。
    在这里插入图片描述
    小华和妈妈,只把公钥交给对方就行。小华给妈妈发消息的时候,用妈妈的公钥进行加密,私钥只有妈妈有,也就是说只有妈妈能解密。

    这种加密方式称为非对称加密,会有二个钥匙,一个钥匙加密过的内容只能通过另一个钥匙进行解密。至于为啥要说公钥加密私钥解密,虽然两个钥匙都可以进行加密解密,但是公钥加密私钥解密这种说法不是更好理解吗? 公钥被人都知道,私钥只有自己知道

    小华想了想觉得还是有点不安全,假如她和妈妈进行交换公钥的时候,被小黑监听了。

    小华把自己的公钥 xiaohua_pub 发给妈妈,中途被小黑掉包了,小黑把自己的公钥 xiaohei_pub 发给了小华的妈妈。这样小华妈妈发消息的时候就使用了小黑的公钥进行了加密,小黑获取到消息表可以用自己的私钥进行解密。
    在这里插入图片描述
    妈妈发送自己的公钥给小华的时候也被小黑掉包了,这时小黑就有了双方的公钥。
    在这里插入图片描述
    小黑监听到小华要求妈妈打钱的消息,对消息进行了篡改。
    在这里插入图片描述
    王大强老师听完小华的疑虑,竖起了大拇指,说道:“别急,听我慢慢解释”。

    现在的问题是出在交换公钥的时候被小黑调包了,那接下来就需要解决这个问题。如何才能把公钥安全地送到对方手上。

    这似乎是永远解不了的问题,毕竟公钥始终是要经过传输的。这似乎是一个鸡生蛋蛋生鸡的问题。后来小华想了想他平时网上购物的时候,以前总是担心怕付款了,商家跑路不给发货,自从有了淘宝这个第三方机构,毕竟阿里家大业大,值得信赖,即使商家跑路了可以找淘宝。

    后来就出现了关于公钥的认证机构,这些认证机构很少,但非常权威,它会和电脑、浏览器等厂商达成信任关系,提前把认证机构的公钥安装到系统中,这样就不会涉及到传输的问题了。
    在这里插入图片描述
    在聊天的过程中,小华发现消息发送和接收的时候很慢,后来发现因为是加密算法耗费比较长的时间。小华想了想,使用对称加密的时候,唯一的缺点是交换秘钥比较麻烦,但是速度非常快。那么可以通过非对称加密来传输对称加密的密钥,密钥传输成功后,使用对称加密来加密消息。
    在这里插入图片描述
    HTTP 属于应用层协议,HTTPS 并不是一个新的协议,它只是比 HTTP 协议多了一层(TLS/SSL)来保证数据传输安全。TLS/SSL也属于协议,它的主要作用是保证数据传输安全。大多数使用的是 OpenSSL 来实现,比如 Node 中的 TLS 就是基于 OpenSSL 实现的
    在这里插入图片描述

    本文以故事的形式介绍了 HTTP 的不安全,保证 HTTPS 安全性的背后支持,包含数字证书、数字签名、对称加密、非对称加密的概念,当然光有理论还不行,需要实践才能更好地理解。大家加油。

  • 相关阅读:
    OpenCascade Ray Tracing Rendering
    Create New Commands in Tcl
    OpenCascade Modeling Algorithms Fillets and Chamfers
    OpenCascade Modeling Algorithms Boolean Operations
    Construction of Primitives in Open Cascade
    Open Cascade Data Exchange STL
    Tcl Tk Introduction
    Open Cascade DataExchange IGES
    Netgen mesh library : nglib
    Hello Netgen
  • 原文地址:https://www.cnblogs.com/blxt/p/14501219.html
Copyright © 2011-2022 走看看