本文介绍了HTTPS协议的原理以及HTTPS协议与HTTP协议的区别。内容非常详细。感兴趣的朋友可以参考一下,希望对你有所帮助。
HTTPS协议是什么
https协议比http协议多了一个s,字面意思就是s=secure。它是一个应用层协议,就像http协议一样,它工作在TCP协议之上。
然而,https协议的数据在传输过程中是加密的。本质上,HTTPS协议是在TCP协议上增加了另一层SSL协议来实现加密操作(不准确的说,HTTPS是带SSL皮肤的HTTP协议)
00-1010
2
HTTP协议在端口80工作,HTTPS协议在端口443工作。
HTTPS需要证书(用于验证服务器的身份)
HTTP三次握手的连接建立后即可开始数据的传输;建立TCP连接后,HTTPS协议需要客户端和服务器之间进行SSL加密,确定会话密钥,加密完成后开始数据传输。
HTTPS协议传输是密文,HTTP协议传输是明文。
总的区别是以上四点。事实上,最重要的是通过用SSL协议加密会话来生成会话密钥的过程。
在了解具体的SSL协议之前,我们应该先了解两个加密概念。
00-1010
HTTPS和HTTP的区别
同一密钥可用于同时加密和解密信息。这种加密方法称为对称加密,也称为共享密钥加密。这种方法在网络传输中存在一个问题,即如何安全地将密钥传递给对方。因为http协议是明文传输(https协议是建立ssl加密时的明文传输),所以密钥很容易被截获,从而失去密钥本身的意义。
公开密钥加密
假设用户是服务器,服务器有两把钥匙,一把是私钥(只能自己静静看,可以比作一把钥匙),一把是公钥(谁都可以看,可以比作一把锁)。将服务器的公钥发送给客户端,客户端用公钥对待发送的信息进行加密后发送给服务器(用锁头将数据锁在盒子里)。因为信息是用服务器的公钥加密的,所以只有服务器可以用自己的私钥进行分析(用密钥打开锁头就可以得到信息)。由于私钥始终保存在服务器上,只有私钥才能分析公钥加密的内容,因此通过这种方法可以安全地传输数据。
但是,因为每次都必须使用私钥来分析公钥,所以可以获得数据。如果公钥很长,计算量会很大,会占用CPU性能,从而增加网络延迟。
HTTPS协议同时采用了这两种方式,即首先通过公钥加密生成会话密钥,然后利用会话密钥进行对称加密传输数据。
SSL协议
客户端向服务器发送请求包括
支持SSL协议版本的客户端生成的随机数(第一个随机数)支持的加密方法支持的压缩方法支持
服务器接收客户端请求并向客户端发送响应。
包括响应
确认协议版本服务器产生的随机数(第二个随机数)确定加密方法服务器的证书(服务器的公钥在里面)。
客户端收到请求后,会对证书进行检查(检查证书的颁发机构,证书中的域名是否与实际域名一致,证书是否过期,如果没有过期,浏览器会显示警告),如果检查通过,客户端会发送响应。
包括
客户端生成一个随机数,该随机数由服务器的公钥(第三个随机数)加密。代码更改通知(表明所有后续通信将通过双方同意的加密算法进行通信)表明客户端的握手阶段已经结束。该项目也是之前发送的所有内容的哈希值,用于服务器验证。
服务器收到最终响应后,使用服务器的私钥对客户端发送的第三个随机数进行分析,并使用与客户端约定的加密算法,由这三个随机数生成会话密钥。服务器返回响应。
代码更改通知(表示所有后续通信将通过双方同意的加密算法进行通信)服务器握手结束通知表示服务器握手阶段已经结束。该项也是之前发送的所有内容的哈希值,用于客户端验证。
整个SSL协议的加密过程大致是这样的,加密后的对话过程是明文传输的(因为HTTPS还没有建成)。
整个加密过程的核心是客户端和服务器生成的三个随机数,用于生成加密密钥,供后续数据传输使用。从上面的过程可以看出,这三个随机数都是可以被窃取的,但是由于第三个随机数是用服务器的公钥加密传输的,理论上只能用服务器的私钥来分析第三个随机数。因此,这三个随机数生成的会话私钥是安全的,后续的数据传输会用这个会话私钥进行加密(对称加密),保证了传输的安全性和高效性。
关于HTTPS协议的原理以及HTTPS协议和HTTP协议的区别,我在这里分享一下。希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/86582.html