HTTS 为什么更安全?

      最后更新:2022-07-30 09:46:14 手机定位技术交流文章

      本文已收录于专栏
      计算机网络。

      学习指南:

      • HTTPS
      • 引入
      • SSL协议
        • 加密方式
        • 摘要算法
        • 数字证书
      • SSL/TLS握手
      • 经典面试题
        • HTTP和HTTS之间有什么区别?
        • 目前HTTS的缺点是什么?
      • 完结散花
      • 参考文献

      HTTPS

      引入

      HTTP最明显的优点是“简单、灵活、易扩展、广泛适用、跨平台”。

      但还有许多缺点,例如:

      • 监听威胁,使用普通文本(不加密)的通信,内容可能被监听。
      • 冒充风险,不验证通信方的身份,因此有可能遭遇伪装 。
      • 篡改风险,无法证明报文的完整性,所以有可能已遭篡改 。

      要归纳一下, HTTP 中信息安全存在着巨大的风险。

      这是我们经常在网站登录页面和购物清理界面上使用的HTTPS通信而不是HTTP的原因。

      为了统一解决HTTP的不足,需要在HTTP增加了加密处理和认证机制。

      我们增加了加密和认证机制HTTP称为HTTPS(HTTP Secure)。

      HTTPPS=HTTP+加密+认证+完整性保护

      这意味着HTTP是经过加密处理和认证和完整性保护后HTTPPS。

      SSL协议

      HTTPS这不是应用程序层的新协议。

      只是HTTP通信接口部分用SSLTLS协议代替而已。

      上面提到的加密+认证+完整性保护都是SSL协议的功能。

      通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSLTCP通信了。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FVBKqRmv-1658934500300)(D:NoteComputer networkimage-20220723105331651.png)]

      SSL是独立于HTTP的协议,所以不光是HTTP协议,其他在应用程序层中运行SMTPTelnet等协议均可配合SSL协议使用。可以说SSL它是当今世界最广泛使用的网络安全技术。

      SSL它很好地解决了上述HTTP使用风险:

      • 信息加密: 不能偷窃交互信息.
      • 身分证: 核实通讯人的身份,以确保对方不作伪造.
      • 校正机制: 不能改变通信内容, 如果更改, 则不能正常显示.

      加密方式

      在对SSL在解释之前, 让我们先了解加密方法.

      在现代加密方法中,加密算法是开放的,密钥是秘密的,这样可以维护加密方法的安全。

      加密和解密都用于钥匙。 没有钥匙可以解密密码。

      也就是说,只要有一个密钥,任何人都可以解密它,如果密钥被攻击者获取,那么加密是毫无意义的。

      根据密钥,加密方法分为两个类别.

      • 加密和解密同用一个密钥的方式称为 共享密钥加密 也被叫做 对称密钥加密 。
        • 在共享密钥模式中加密时,该密钥也必须给另一方。

        • 但没有办法确保密钥安全地转移到另一方,如果通信被监控的话,密钥会落在攻击者手中,同时失去加密的意义。

        • 此外,必须确保接收的钥匙安全存储。

      • 使用两个键的开放密钥加密称为不对称密钥加密。
        • 一个是公开的钥匙,开放给所有人;
        • 其中一个是私人密钥,它必须由自己管理,而不是泄露。
        • 两个键都可以双面解密。
        • 例如,您可以用公钥加密内容,然后用私钥解密内容,也可以用私钥加密内容,然后用公钥解密内容。
        • 过程 的 差异 意味着 目标 并不 相同 :
          • 公开密钥加密、私钥解密,目的在于确保内容传输的安全,因为公开密钥加密的内容不能由其他人解密,只有持有私钥的人才能解密实际内容;
          • 私钥加密,公钥解密。 目的在于确保消息不会被滥用,因为私钥是不授权的,如果公钥能正常解密私钥加密的内容,则可以证明消息是由持有私钥身份的人发送的。
        • 一般来说,我们不使用不对称加密来加密实际传输内容,因为不对称加密计算更昂贵。
        • 因此,非对称加密的目的主要是通过私钥加密和公钥解密来识别消息的身份。

      HTTPS采用了混合加密机制,将对称加密与非对称加密相结合:

      • 在建立通信之前,使用不对称加密交换“会议键”,然后不再使用不对称加密。
      • 所有通信都是通过对称加密的“会话密钥”方法加密的,以加密书面数据。

      使用“混合加密”方法的原因:

      • 对称加密只使用一个键。
        • 操作速度快, 密钥必须保密, 不能保证密钥交换, 不安全.
        • 因此,这个方法的最大问题是发送钥匙的问题,即如何安全地发送钥匙给另一方。
      • 不对称加密使用两个键。
        • 使用两个密钥:公钥和私钥,公钥可以任意分配,私钥保密,解决了密钥交换问题,但缓慢

      因此, 我们 应该 充分 利用 两者 的 优点, 结合 各种 通讯 方法 。

      消息通过对称加密机制发送,但对称加密中使用的钥匙可以通过不对称加密发送。

      摘要算法

      为了确保传输内容不会改变,我们需要计算该内容的 Hash 值,然后将其与内容一起发送给另一方。

      当另一方收到它时,它还首先计算内容的哈希值,然后与发送者发送的哈希值进行比较。

      如果 Hash 值相同,表示内容没有更改,则可以确定内容已经更改。

      摘要算法 正是计算机将传输内容计算出哈希值的方法。

      摘要算法计算出来的哈希值是唯一的,且无法通过哈希值推导出内容。

      哈希算法可以确保内容不会改变,但它们不能确保“内容+哈希值”不会被中间人替换,因为缺乏证明从客户端接收的消息是来自服务器的。

      换句话说,如果中间人截获内容+ Hash 值并在传输过程中全部修改,那么客户端计算的 Hash 值是错误的,即使是正确的,因为 Hashi 值本身已经被修改。

      中间人攻击

      攻击者在通信的两个端之间创建一个独立的连接,并交换他们接收的数据,使通信的两个端认为他们通过私人连接彼此进行直接对话,但实际上整个对话是由攻击者完全控制的。

      在中间人攻击中,攻击者可以截获通信双方的对话并插入新的内容。 中间人攻击是一种(缺乏)相互认证的攻击。

      大多数加密协议特别增加了一些特殊的认证方法来防止中间人攻击。

      例如,SSL协议可以验证由参与通信的当事人使用的证书是由数字证书认证机构授权的接收者发出的,并且可以执行双向认证。

      为了避免这种情况,计算机使用数字签名算法来解决这个问题。

      内容的 Hash 值是通过数字签名算法加密的,所以中间人不能修改 Hash 值。

      数字证书

      服务端可以向证书颁发机构CA申请证书,以避免中间人攻击(防止证书被篡改)。证书包含三部分内容:证书内容、证书签名算法和签名,签名是为了验证身份。

      服务器将证书转交给浏览器,而浏览器则从证书中取出公钥。 证书可以证明公钥与该网站相符。

      数字签名制作过程:

      1. CA使用证书签名算法 Hash证书的内容。
      2. 对hash后的值用CA的私钥加密,得到数字签名。

      浏览器验证过程:

      1. 获取证书, 获取证书内容, 证书签名算法和数字签名.
      2. 用CA机构的公开密钥解密数字签名(因为它是浏览器信任的机构,浏览器将保存其公开密钥)。
      3. 使用证书中的签名算法,对证书内容进行 Hash 操作.
      4. 将解密的数字签名与在对证书内容进行 hashing后获得的哈希值进行比较。等价证明证书是可信的。

      SSL/TLS握手

      SSL/TLS协议基本过程:

      • 客户端请求和验证服务器到服务器的公共密钥。
      • 双方谈判了“谈话秘密钥匙”的制作。
      • 双方使用“开会秘密密钥”加密通信。

      第一个两个步骤是SSL/TLS建立过程,TLS手动阶段。

      建立SSL/TLS协议的详细程序:

      1. ClientHello

      首先, 客户端向服务器发起加密通信请求, 即.ClientHello请求

      在此步骤中,客户端主要向服务器发送以下信息:

      (1)客户端支持的SSL/TLS协议版本,如TLS1.2版。

      (二)生成的客户随机数目(Client Random),后来用来生成一个“消息秘密键”条件。

      (3)客户端支持的密码套件列表,例如RSA加密算法。

      1. SeverHello

      在收到客户端请求后,服务器会向客户端发送响应,即:SeverHello.服务器响应的内容如下:

      (1)确认SSL/TLS协议版本,如果浏览器不支持,关闭加密通信。

      (二)产生服务器的随机数目(Server Random它也是用来生成“消息秘密密钥”的后续条件之一。

      (3)确认密码包的列表,例如RSA加密算法。

      (4)服务器的数字证书。

      3.客户端回应

      在接收服务器的响应后,客户端首先通过浏览器或操作系统中的CA公开密钥确认服务器的数字证书的真实性。

      如果证书正确,客户端将从数字证书中提取服务器的公共密钥,用它加密消息并向服务器发送下列信息:

      (1)一个随机数(pre-master key().随机数由服务器公开密钥加密。

      (2)加密通信算法改变通知,表明随后的信息将用“会话键”加密。

      (3)客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供服务端校验。

      1. 服务器的最后回应

      服务器接收的客户第三个随机数目(pre-master key然后,通过谈判加密算法,计算了该通信的“会议秘密密钥”。

      然后向客户发送最后消息:

      (1)加密通信算法改变通知,表明随后的信息将用“会话键”加密。

      (2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供客户端校验。

      至此,整个 SSL/TLS 的握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的 HTTP 协议,只不过用「会话秘钥」加密内容。

      经典面试题

      HTTP和HTTS之间有什么区别?

      • 输入端口号不同。
        • HTTP的端口号是 80,
        • HTTPS港号为443。
      • 建立联系的困难是不同的.
        *HTTP连接的设置相对简单,TCP可以在三个握手后发送HTTP消息。
        • HTTPSTCP在三次握手之后,一个SSL/TLS握手过程被执行,以输入加密消息传输。
      • 传输的安全系数不同.
        • HTTP这是一个超文本传输协议, 信息被明确传输, 存在安全风险问题.
        • HTTPS则解决HTTP不安全的缺陷,在TCPHTTP一个SSL/TLS安全协议被添加到网络层之间,以加密消息的传输。
      • HTTPS协议要求CA(Cert Authority)申请数字证书,以确保服务器的身份是可靠的。

      目前HTTS的缺点是什么?

      因为HTTPS是如此安全的和可靠的,为什么所有网站都不总是使用HTTPS?

      因为加密通信比纯文本通信消耗更多的CPU和内存资源。

      如果每个通信被加密,将花费相当大的资源,并且处理的请求数目将不可避免地减少,因此分配给计算机。

      因此HTTPPS比HTTP慢2至100倍。

      SSL的慢分两种。

      一种是通信速度缓慢,另一种是由于 CPU 和 内存资源的消耗而处理速度减慢。

      对减速问题没有根本的解决办法。我们将使用SSL如(特别服务器)硬件等加速器来改善问题。 该硬件是SSL与软件相比,通信硬件可以提高几倍SSL的计算速度。仅在SSL处理时发挥SSL加速器的作用是分配负荷.

      完结散花

      所有这些都是关于为什么HTTS更安全的原因。 非常感谢您看到这个。 如果有任何疏忽、错误或更一般理解的解释,欢迎朋友和家人私下给我,我将稍后补充完成。

      参考文献

      《图解HTTP》
      https://www.xiaolincoding.com

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/30912.html

          热门文章

          文章分类