图解HTTPS加密过程

文章目录

  • HTTP
  • HTTPS概念即组成
  • SSL/TSL概念
    • SSL/TSL的运作流程
      • 对称加密 / 非对称加密
      • HTTPS密钥协商
      • HTTPS中间人攻击劫持问题
        • 远端服务器身份认证问题
        • 中间信息被篡改问题

HTTP

http在我之前的博客中已经有所讲解。敬请移步
Linux:了解HTTP协议

HTTPS概念即组成

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。

HTTPS 在HTTP 的基础下加入SSL/TSL(Secure Sockets Layer 安全套接字协议;Transport Layer Security 传输层安全),TLS与SSL在传输层与应用层之间对网络连接进行加密。

HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。

SSL/TSL概念

SSL(Secure Socket Layer 安全套接层)是基于HTTPS下的一个协议加密层,最初是由网景公司(Netscape)研发,后被IETF(The Internet Engineering Task Force - 互联网工程任务组)标准化后更名为TSL。

TSL/SSL对用户最重要的意义是加密以及解密

我们知道,在OSI参考模型中,将网络通信的工作分为七层物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。通常将上三层统称为应用层,下两层称为网络接口层。

应用层的代表性协议有HTTP和HTTPS,而HTTPS拥有特殊的一层处于应用层与传输层中间。
图解HTTPS加密过程_第1张图片
SSL/TSL处于应用层与传输层中间。

SSL/TSL的运作流程

TSL/SSL对用户最重要的意义是加密以及解密。接下来详谈加密以及解密的工作流程。

在了解加密解密的工作流程前,还需要明确几组概念

对称加密 / 非对称加密

对称加密:对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。

非对称加密:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。 私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。

了解这样一组概念之后,进入正题,第一个重要的概念为

HTTPS密钥协商

该过程使用对称加密与非对称加密两种方法结合,从而保证数据的安全。

服务器端(server)与客户端(client)各拥有一个对称密钥进行加密解密,同时server端拥有一个非对称私钥,server端会把非对称公钥发送给client端,client使用这个非对称公钥对对称密钥进行加密,之后将加密后的对称密钥发送给server端,server端使用非对称私钥对其进行解密

HTTPS密钥协商过程
图解HTTPS加密过程_第2张图片
Q:既然非对称加密很安全,为何不直接使用非对称加密?
A:非对称加密算法一般比较复杂,对称加密算法简单;如果使用非对称加密对所有数据加密解密,会消耗远远超出组合使用来加密解密的时间。
一个字:快!!!

HTTPS中间人攻击劫持问题

通俗地讲,就是一个黑客通过私自搭建的服务器攻击用户的电脑。

本来client直接向server请求数据;而现在多了一个中间服务器,黑客可以将client从server获取的非对称公钥替换成黑客公钥,再获得client的端口,之后client发送数据就会经过中间服务器,中间服务器便可轻易获得client端的数据。
图解HTTPS加密过程_第3张图片
当然,我们要保证客户端的安全客户端,因此需要对远端服务器进行身份认证;以及防止中间信息被篡改问题

远端服务器身份认证问题

在合法服务器进行建站时,官方公正部门会颁发证书(我国叫做ca证书),包含server公钥,权威信息(以数据签名方式呈现)等;client绕过中间人内置证书信息;在client发起请求时会先请求ca证书,然后对其进行解密,与内置证书信息进行对比;若相同则服务器身份认证成功,否则失败。

远端服务器身份认证
图解HTTPS加密过程_第4张图片

中间信息被篡改问题

哈希算法中的开散列方法,将文本转为定长的字符序列;称为数据摘要。这种方法可以保证微小区别的文本所形成的数据摘要是不同的。

client向server端发送数据时(加密后的对称密钥等),会对数据形成数据摘要,同时会将数据摘要进行密钥加密,加密的数据摘要叫做数据签名(指纹)。数据签名时不能轻易被破解的。
server端拿到数据之后,也会对数据生成数据摘要再生成数据签名,然后与client端发送来的数据签名进行对比,如果不同,就说明数据是被篡改过的,便不做处理。

图解HTTPS加密过程_第5张图片

你可能感兴趣的:(linux学习,https,ssl,安全,http)