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、使用证书,校验服务器的公钥


相关推荐
速盾cdn3 小时前
速盾:CDN是否支持屏蔽IP?
网络·网络协议·tcp/ip
网络安全-老纪9 小时前
iOS应用网络安全之HTTPS
web安全·ios·https
Lws13 小时前
CS144 lab0(个人理解)
网络协议
C++忠实粉丝17 小时前
计算机网络socket编程(2)_UDP网络编程实现网络字典
linux·网络·c++·网络协议·计算机网络·udp
添砖java_85717 小时前
UDP数据报套接字编程
网络·网络协议·udp
lxkj_202419 小时前
修改ffmpeg实现https-flv内容加密
网络协议·https·ffmpeg
千羽星弦19 小时前
Apache和HTTPS证书的生成与安装
网络协议·https·apache
程序猿小D1 天前
第三百三十节 Java网络教程 - Java网络UDP服务器
java·开发语言·网络·网络协议·udp·多线程
是理不是里_1 天前
常见的网络协议汇总(涵盖了不同的网络层次)
网络·网络协议
Peter_chq1 天前
【计算机网络】HTTP协议
linux·c语言·开发语言·网络·c++·后端·网络协议