单向和双向认证

单向和双向认证

   小白     2022年8月15日 22:26     811    

http是超文本传输协议,但是其传输的信息都是明文信息,所以不安全。其默认端口为80

https是通过ssl(secure socket layer)协议对http所传输的数据进行加密。其默认端口为443

ssl协议即用到了对称加密,也用到了非对称加密。

 

非对称加密和对称加密

对称加密: 加密和解密的秘钥使用的是同一个

非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)

 

ssl和TSL

ssl的概念

(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。
  SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
  TLS:安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。TLS记录协议用于封装各种高层协议。作为这种封装协议之一的握手协议允许服务器与客户机在应用程序协议传输和接收其第一个数据字节前彼此之间相互认证,协商加密算法和加密密钥。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)

 

单向认证流程

单向认证流程中,服务器端保存着公钥证书和私钥两个文件,整个握手过程如下:

客户端发起建立HTTPS连接请求,将SSL协议版本的信息发送给服务器端;

服务器端将本机的公钥证书(server.crt)发送给客户端;

客户端读取公钥证书(server.crt),取出了服务端公钥;

客户端生成一个随机数(密钥R),用刚才得到的服务器公钥去加密这个随机数形成密文,发送给服务端;

服务端用自己的私钥(server.key)去解密这个密文,得到了密钥R

服务端和客户端在后续通讯过程中就使用这个密钥R进行通信了。

20180416101144691.png

单向的抓包

7F7ED1C1-CC5E-4491-9227-FE76C6BE1AB8.png

双向认证流程

客户端发起建立HTTPS连接请求,将SSL协议版本的信息发送给服务端;

服务器端将本机的公钥证书(server.crt)发送给客户端;

客户端读取公钥证书(server.crt),取出了服务端公钥;

客户端将客户端公钥证书(client.crt)发送给服务器端;

服务器端使用根证书(root.crt)解密客户端公钥证书,拿到客户端公钥;

客户端发送自己支持的加密方案给服务器端;

服务器端根据自己和客户端的能力,选择一个双方都能接受的加密方案,使用客户端的公钥加密8. 后发送给客户端;

客户端使用自己的私钥解密加密方案,生成一个随机数R,使用服务器公钥加密后传给服务器端;

服务端用自己的私钥去解密这个密文,得到了密钥R

服务端和客户端在后续通讯过程中就使用这个密钥R进行通信了。

2018041610480311.png

双向的抓包 

465E5030-B5CF-4e20-A36D-2C41AD739715.png


文章:

https://blog.csdn.net/darker0019527/article/details/103337897

https://blog.csdn.net/jzg5845201314/article/details/114646199


文章评论

0

其他文章