HTTPS

目录

一、密钥加密

1、对称加密

2、非对称加密

二、HTTPS的工作过程

三、中间人攻击问题


HTTPS (全称:Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证 保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。

HTTPS不是协议,而是通过SSL/TLS协议提供的安全连接进行的HTTP通信。

一、密钥加密

密钥是密码和明码之间的对应替代关系,分为对称密钥非对称密钥

1、对称加密

在传递信息时,信息分为明文和密文。明文是真正要表达的信息**,密文通过加密来掩盖原始信息,要得到明文就需要密钥来解析密文。**使用同一个密钥来加密和解密,就是对称加密。


2、非对称加密

非对称加密有一对两个密钥,一个为"公钥",一个为"私钥"。

用一个钥匙加密,用另一个钥匙解密。


二、HTTPS的工作过程

HTTPS加密过程,主要是对HTTP的header和body进行加密。

1、先引入对称加密

每个客户端的密钥是不同的,客户端给服务器发送信息和密钥,服务器记录每一个密钥,对信息进行解密,这种加密方式安全性不高,在通信过程中很容易被拦截,然后拿到密钥对客户端信息进行解析。

2、非对称加密

为解决对称加密安全性不高的问题,引入了非对称加密。服务器会生成一个公钥和私钥,公钥给客户端,私钥服务器自己保存,客户端再生成一个对称加密,使用服务器给的公钥对密钥进行再次加密,得到了密钥的密文。


3、既然引入了非对称加密,为什么还需要引入对称加密呢?

进行非对称加密,运算成本高,速度慢。

对称加密,运算成本低,速度块。

使用非对称加密,只是用于关键环节(传递密钥),成本可控。要是传输大量的业务数据,要使用效率高的对称密钥,如果使用非对称加密,传输效率会大幅度降低。

三、中间人攻击问题

使用对称加密和非对称加密的过程,就是HTTPS的基本盘,但是还是存在漏洞。

1、中间人攻击问题

在客户端给服务器申请公钥,服务器返回公钥的时候,黑客通过攻击中间传输信息的设备**,拿到服务器给的公钥,并自己生成一对公钥和私钥,将自己生成的公钥,返回给客户端。** 当客户端使用黑客给的公钥进行加密,传输到黑客这里,黑客就可以使用自己的私钥进行解密,再通过刚才拿到的服务器公钥加密发送给服务器,让服务器无法察觉。


2、解决中间人攻击问题(SSL协议)

关键要点: 客户端没有分辨公钥是不是中间人伪造的能力,就可以引入第三方可以被大家信任的**"公证机构"**,来证明公钥是正确的,不是伪造的。

当服务器生成公钥和私钥,就会对公证机构发出申请,申请内容包括域名、公钥等信息。公证机构就会对服务器申请的内容进行检测,通过就会完成申请,然后给服务器颁发证书,证书内容包括域名、公钥、数字签名等。

**数字签名:**公证机构颁发证书的时候,公证机构就会对证书中的各个属性进行计算,然后得 到一个校验和,并对这个校验和进行非对称加密,公证机构持有私钥,公钥发给各个客户端 设备(内置到系统中),就得到了数字签名。

客户端拿到了证书,也拿到了证书中的服务器的公钥,客户端就会验证这个公钥是否是服务器最初的公钥(是否被中间人篡改),这个过程就叫做证书的校验。

**证书的校验:**核心机制就是通过内置到系统的公钥对数字签名进行解密,得到校验和,重新计算校验和,然后和解密出的校验和进行对比。

如果校验和一致,则证书没有被修改,公钥可信,可以进行通信。


HTTPS加密的整体过程:

1、对称加密,加密业务数据

2、非对称加密,加密对称密钥

3、使用证书,校验服务器的公钥


相关推荐
zhangxueyi24 分钟前
超详图解 Apache HTTP Server(httpd)安装与验证
linux·http·vmware虚拟机
别NULL2 小时前
DPDK 简易应用开发之路 2:UDP数据包发送及实现
linux·网络·网络协议·udp·dpdk
看山还是山,看水还是。3 小时前
Web 渗透与防护
数据库·websocket·网络协议·web安全·网络安全·信息与通信·嵌入式实时数据库
Jacky-YY3 小时前
Nginx-HTTP和反向代理web服务器
服务器·前端·nginx·http
姜西西_4 小时前
[网络]https的概念及加密过程
网络·网络协议·https
%d%d24 小时前
Apache HttpComponents HttpClient
网络·http
椰椰椰耶4 小时前
【HTTP】认识 URL 和 URL encode
网络·网络协议·http
熬到半夜敲代码4 小时前
HTTP的基本格式
网络·网络协议·http
GG编程4 小时前
http和https的区别及get和post请求的区别
网络协议·http·https