HTTPS 的加密流程

HTTPS的产生:

运营商劫持的背景下产生的,未被劫持的效果是例如我要在网站上下载一个软件,当点击下载按钮的时候,就会弹出该软件的URL,然后成功下载,而被劫持的效果就是,当点击下载按钮的时候会弹出另一个下载软件的URL,从而下载了其他的软件,这是由于我i们通过网络传输的任何数据都会经过运营商的网络设置(路由器,交换机等),那个运营商的网络就会解析出我们传输的数据内容并进行篡改(类似于黑客)

HTTPS 的加密流程_第1张图片

 出现了这种情况是因为HTTP是明文,传输,很容易就被劫持了,这是非常不安全的,为了解决这个问题,聪明的程序员发明了HTTPS来解决这个问题。

HTTPS概念:

HTTPS就是在HTTP的基础上进行了加密的操作,进一步的保证了用户的安全,也进一步的阻止了“运营商劫持”的恶性竞争。

加密:就是把明文进行了一系列的操作变成一个密文。

解密:就是把密文通过一系列的操作转换成明文。

密钥:在这个加密和解密的过程中,往往需要一个或多个中间数据,辅助进行这个过程,这些数据称为密钥。

明文+密钥-->密文

密文+密钥-->明文

 举个栗子:

在抗战时期,两地通讯需要一定的加密,如果不加密,则当敌人发现通讯消息就能马上知道我方的计划,所以这个时候就需要一种加密方式,如我方统一的密钥是一本字典,通讯消息是一串数字,我们可以根据数字来确定多少页第几个字,最后得到整个消息,让然这个字典解密不能让敌人知道,在这个故事中,这个字典就相当于是密钥,A地的消息相当于密文当传输过去后,通过密文和密钥就可以将密文解码成明文,当B地知道计划后就会再写加密传回个A地。

贴士:密码学的奠基人是计算机科学的祖师爷---艾伦 麦西森 图灵,计算机最高奖项就是图灵奖。

加密的方式:

对称加密:用同一个密钥加密明文和密文。

简单来说了类似于按位异或交换两个数字。

非对称加密:要用到两包密钥,一个叫公钥,一个是私钥,通过公钥对明文加密变成密文,通过私钥对密文解密变成明文。

 HTTPS的工作过程:

对称加密:

最简单的保证安全的方法,相对来说并不是特别安全。

HTTPS 的加密流程_第2张图片

但是服务器同一时刻其实是给很多个客户端提供服务,每一个客户端就有一个密钥,每个密钥必须是不同的(如果相同的太多了,黑客就会很容会拿到密钥),因此服务器就需要维护每一个客户端和密钥之间的关系 ,这是一个很大工程。比较理想的方法就是在客户端和服务器建立连接的时候彼此双方确定密钥,但是如果直接传输密钥明文,黑客也会很快获得密钥,用户的信息安全就不能得以保障,此时就有两个方法:1.套娃式的对称加密密钥,这个是不行的,2.引入非对称加密。

HTTPS 的加密流程_第3张图片

 

 过程解释:

1.客户端将明文通过密钥进行加密转换成密文请求,再由公钥将密钥加密

2.由于黑客没有私钥无法解开加密的密钥,解释截获了数据也无法解密

3.将加密请求传给服务器后服务器通过私钥将密钥解密然后由密钥解密请求得到明文请求,会做出响应,明文响应加上密钥变成密文,私钥将密钥加密返回给客户端。

4.后续客服端解密密钥然后密钥解加密响应,得到明文响应。

但是这个方法看似很完美,但是也存在被中间人黑客攻击,主要问题是客户端如何拿到公钥?

客户端怎么辨别公钥的真伪也是很重要的问题。

HTTPS 的加密流程_第4张图片

 黑客伪造了私钥和公钥骗过了服务器和客户端。

证书引入:

证书的引入很好的解决了中间人的攻击。解决的关键在于,需要让客户端确认收到的公钥是否是伪造的,这时就引入了第三方机构的担保,来确认当前的公钥是否真的有效。

证书的格式:

HTTPS 的加密流程_第5张图片

证书可以理解为一个结构化的字符串,包含了:

  • 证书颁布机构
  • 证书有效期
  • 公钥
  • 证书所有者
  • 数字签名(不可更改)

数字签名:

是针对上述数据进行的一个验证机制,公证机构在生成证书的时候,会先针对证书中的其他属性生成校验和,公证机构,还会使用自身的私钥针对上述的校验和进行加密,使别人无法重新生成这个校验和。

 加证书的HTTPS过程:

HTTPS 的加密流程_第6张图片

过程解释:

  • 客户端发出想要建立连接的请求
  • 黑客截获了也获得不了消息
  • 服务器收到想要建立连接的请求 ,会去申请一个证书,一个结构化的字符串
  • 黑客截获证书,想要篡改,
  • 客户端收到证书会发起校验,当校验和出现不同的时候,就会发现黑客篡改过

  证书的引入阻碍了黑客的三种攻击:

1.改公钥:当黑客将改过公钥的证书传过去的时候,客户端收到证书的时候会针对数字签名解密得到校验和,再以同样的方式验证其他属性,如果校验和变了,这就可以知道证书出现了问题。

2.改数字签名:数字签名是先计算校验和再使用认证机构的私钥进行加密,黑客没有私钥,所以无法重新生成校验和,也就无法生成数字签名。

3.黑客自己去第三方机构申请证书:黑客的证书域名肯定不能和网站的域名相同,所以审核就通过不了。

再做了这么多的保护工作之后依然会有存在不安全的现象:

聪明的黑客还有办法:黑客可以把自己伪装成第三方网站,骗用户安装额外的自己的公钥,这时,就可以光明正大的替换数字签名了。

网络安全不是绝对的,是相对的安全,是一个不断在被攻击不断在防御的过程是一个“无线升级的过程”。

你可能感兴趣的:(https,网络,网络协议)