美文网首页
如何理解 HTTPS

如何理解 HTTPS

作者: 失眠是真滴难受 | 来源:发表于2020-10-19 00:02 被阅读0次

经常都在听说 https ,在谷歌浏览器上浏览不是 https 的网站,都会提示网站不安全。那到底什么是 https ,以前大概了解过一点点,但是对它的原理则是很模糊,趁着这次作业的机会,好好看看一下协议的实现方式。

http

谈 https 之前先说一下 http, http 是位于应用层的网络协议,主要用于网络中数据的传输,但是 http 传输是明文传输,这意味着网络上的任何一个人都可以看到你发送了什么消息,接收了什么消息。如果世界上没有不怀好意的人,那这样确实没有什么问题,然而总是有一些变态,或者是坏蛋,喜欢躲在角落里偷窥别人的生活,以此来达到自己的目的。

加密的方式

为了防止被人偷窥,只能想办法加密传输的数据。从大的方面来说,加密可以分为对称加密和非对称加密两种。

对称加密

对称加密很好理解,依靠一种加密算法,生成一个密钥,你可以用这一个密钥对需要加密的数据进行加密,也可以用这个密钥对数据进行解密。总之一个密钥就能完成所有事了,but 问题不在于加密算法,而在于这个密钥要怎么保存。想一想,有没有在不经意间看到过别人输入密码?人是不可靠的,安全问题不能靠人来保证。

非对称加密

非对称加密跟对称加密差距就大了,非对称加密会生成一个公钥和一个私钥;公钥可以公开出来,任何人都可以看到,并且使用公钥对数据进行加密,但是解密只能用私钥来进行解密(理论上是这样)。这样就只需要保存好私钥就行了,如果需要和别人进行通信,只需要把自己的公钥发送过去,这样就可以了。

选择

单对称加密

上面也有解释过,对称加密是不行的,密钥的保存是个大问题。

单非对称加密

单非对称加密应该是可行的,但是每次传输数据双方都需要进行非对称加密的解密运算。非对称加密从数学上保证了从公钥推导出私钥的难度是相当大的,要实现这样的效果,必然要经过大量的运算(与对称加密相比),这会造成大量性能的损耗。

建立会话

https 建立会话的认证过程也是很难的。

如果没有 CA

在没有 CA 的情况下,客户端和服务端需要建立连接。这时候的流程是怎么样的?

客户端 服务端
request 生成一个密钥对:k1 为公钥,k2 为私钥,
发送 k1 给客户端
用对称加密算法生成一个密钥"k",
使用 k1 来加密 “k”,获得密文“k3”,
发送给服务端
服务端用 “k2” 来解密 “k3”,获得 "k",
,然后就可以使用 "k"作为密钥传送数据

问题?

上面这样的步骤就已经安全了吗???

看似是没有什么问题,但其实有一个很大的问题:身份认证。

你怎么知道你收到的公钥是网站发送给你的呢?在你和网站中间,如果有一个人把网站发给你的公钥拦截了,然后把自己的公钥发送给你,然后再把你发送的数据发送到网站。如果有想法,还能篡改你发送的数据,burpsuite 这种软件就是依靠这样的原理。比较官方的称呼叫做“中间人攻击”。

解决问题

既然问题是身份认证的问题,那就要想办法解决它。要证实双方的身份,那就需要引入公证人,在 https 中就是证书。一个机构,如果全世界都相信它,那我们也可以选择相信它,也包括机构颁发的证书,因此只要机构足够权威,就可以用来证实网站的身份。

因此网站就不能向之前那样自己生成一个公钥,然后发送出去和客户端进行通信了。网站的管理者需要向 CA 申请一个证书,证书中包括了公钥,私钥以及证书的有效信息,以保证证书的真实性和有效性。因为这些机构是足够权威的,因此操作系统和浏览器默认就安装了这些机构的证书,在进行身份认证的时候,会通过本地的证书进行校验,如果网站的证书是有效的,那就认为此次身份认证成功,可以进行数据传输了。

下面这个图是 TLS 握手的流程。


tls1.2

公众号:没有梦想的阿巧 后台回复 "群聊",一起学习,一起进步

相关文章

  • 如何理解 HTTPS

    经常都在听说 https ,在谷歌浏览器上浏览不是 https 的网站,都会提示网站不安全。那到底什么是 http...

  • HTTPS 理解

    HTTPS和HTTP 因为HTTP使用明文传输,这就催生了HTTPS。HTTPS与HTTP的区别在于,HTTPS会...

  • HTTPS理解

    如何理解HTTPS,翟志军写的这个博客文章觉得不错:通俗易懂。 也许,这样理解HTTPS更容易

  • 理解 HTTPS

    前言 HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务...

  • HTTPS理解

      学习《图解http》笔记。总结一下https方面的内容。  互联网,是由能连通到全世界的网络组成的。无论世界哪...

  • Https理解

    简单的理解下https:https在http请求的基础上多加了一个证书认证的流程。认证通过之后,数据传输都是加密进...

  • 小白如何理解HTTPS的原理

    先来一张图 本文不打算长篇大论去讲解各种HTTPS相关的理论知识,只是综合网上各位大佬们的HTTPS详解,作一个简...

  • 理解Https协议

    都知道HTTP协议,那HTTPS又是干什么的呢? HTTPS协议称为超文本传输安全协议,利用SSL/TLS来加密数...

  • Android Https 理解

    前言 大家都知道https相比http增加的是安全性。 怎么增加安全性呢? 就是加密和解密步骤。 下面来详细谈谈...

  • HTTPS的理解

    1.Socket?后学习---------------------------------------------...

网友评论

      本文标题:如何理解 HTTPS

      本文链接:https://www.haomeiwen.com/subject/wbbhmktx.html