密码学:一文看懂安全协议--HTTPS

发布时间:2024年01月10日


请添加图片描述

网银平台通常少不了数字证书,更少不了安全协议–HTTPS协议。HTTPS协议实际上基于SSL/TLS的 HTTP协议,位于应用层,简单地说HTTPS=HTTP+SSL/TLS。

SSL/TLS协议本身是带有加密信息的传输层协议,数字证书正是为这种协议提供相关加密/解密信息。

前置:TCP/IP模型

TCP/IP模型(Transmission Control Protocol/Internet Protocol)是另一种常用的网络体系结构模型,它是实际互联网使用的基础。TCP/IP模型并不是像OSI模型那样严格分为七个层次,而是通常被划分为四个层次。这四个层次从底层到顶层分别是:

  1. 网络接口层(Network Interface Layer):与OSI模型中的物理层和数据链路层类似,负责处理物理硬件接口和数据链路协议。

  2. 网络层(Internet Layer):与OSI模型中的网络层对应,负责在不同网络之间进行数据包的路由和转发,使用IP协议。

  3. 传输层(Transport Layer):与OSI模型中的传输层相对应,负责端到端的通信,提供可靠的数据传输,使用TCP或UDP协议。

  4. 应用层(Application Layer):与OSI模型中的应用层对应,提供网络应用服务,包括HTTP、FTP、SMTP等协议。

值得注意的是,TCP/IP模型中的网络接口层通常包含了OSI模型中的物理层和数据链路层的功能,而且应用层可能会涵盖OSI模型中的会话层、表示层和应用层的功能。

TCP/IP模型是实际互联网所采用的网络协议体系结构,它的设计更加简洁灵活,符合实际应用的需求。在实际网络中,TCP/IP模型是更为常见和广泛使用的。

安全协议

HTTPS协议和SSL/TLS协议分属TCP/IP参考模型中的应用层和传输层。

简单地说,HTTPS就是附加了SSL/TLS协议的HTTP协议。HTTPS协议为数字证书提供了最佳的应用环境。

HTTPS协议

HTTPS ( Hypertext Transfer Protocol over Secure SocketLayer) 协议是Web上最为常用的安全访问协议。

简单地说HTTPS就是HTTP安全版,HTTPS是基于SSL/TLS的 HTTP协议,或者说HTTPS=SSL/TLS+HTTP

相比于SSL/TLS协议,HTTPS协议我们更为熟悉。在生活中,我们常常需要访问基于HTTPS协议的Web网站。

查看网站证书

我们已edge浏览器为例,展示如何查看网站的证书。

我们点击一下浏览器的小锁图标,可以看到显示 “连接安全”。

在这里插入图片描述
点击“连接安全”,再点击右上角小图标:

在这里插入图片描述
可以看到证书:
在这里插入图片描述

HTTPS协议常常在服务器中配置,如HTTP服务器Apache(http://httpd.apache.org/)和JSP服务器Tomcat (http://tomcat.apache.org/),通过配置SSL/TLS协议构建基于HTTPS协议的服务器。

SSL/TLS协议

SSL/TLS协议包含两个协议: SSL (Secure Socket Layer,安全套接字层)和TLS (Transport Layer Security,传输层安全) 协议。

  • SSL ( Secure Socket Layer,安全套接字层) : 由Netscape (网景)公司研发,位于TCP/IP参考模型中的网络传输层,作为网络通讯提供安全及数据完整性的一种安全协议。

  • TLS (Transport Layer Security,传输层安全): 基于SSL协议之上的通用化协议,它同样位于TCP/IP参考模型中的网络传输层,作为SSL协议的继任者,成为下一代网络安全性和数据完整性安全协议。

目前,SSL共有3个版本: SSL1.0、SSL2.0和SSL3.0。SSL3.0规范在1996年3月正式发布,较之前2个版本提供了更多的算法支持和安全特性。

1999年,IETF(The Internet Engineering Task Force,互联网工程任务组)在基于SSL3.0协议的基础上发布了TLS1.0。

TLS1.0与SSL3.0几乎是兼容的。

因此,通常意义上我们提到的SSL/TLS协议指的是SSL3.0或TLS1.0的网络传输层安全协议。

SSL/TLS协议可分为两层:记录协议 (Record Protocol) 和握手协议 (Handshake Protocol)。

  • 记录协议 (Record Protocol) :建立在可靠的传输协议 (如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
  • 握手协议 (Handshake Protocol) :建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

握手协议较为底层,目前主流计算机语言(如Java语言)的开发者已经将这些协议的处理封装得透明,无需我们关心。

SSL/TLS协议涉及多种加密算法,包含消息摘要算法、对称加密算法、非对称加密算法,以及数字签名算法。

  • 消息摘要算法:MD5和SHA1
  • 对称加密算法: RC2、RC4、IDEA、DES、TripleDES和AES。
  • 非对称加密算法: RSA和Diffie-Hellman (DH)
  • 数字签名算法:RSA和DSA。

SSL/TLS协议利用密码学算法在互联网上提供端点身份认证和通信保密,完全基于PKI,有较高的安全性。

因此,SSL/TLS协议成了网络上最常用的网络传输层安全保密通讯协议。

通信模型

经过SSL/TLS握手协议交互后,数据交互双方确定了本次会话使用的对称加密算法以及密钥,由此开始基于对称加密算法的加密数据交互。

对等协商加密算法

在这里插入图片描述

服务器端和客户端在进行握手协议第一阶段时主要是商榷加密算法,主要包含以下几个步骤:

1 ) 客户端产生随机数RNC (Random Number Client) ,这个随机数将为后续构建密钥做准备。

2 )客户端将自身支持的SSL信息 (版本和种类)、算法信息和随机数RNC发送到服务器端

3 )服务器端得到客户端请求后,产生相应的随机数RNS(Random Number Server) ,这个随机数为后续构建密钥做准备。

4 )服务器端将自身支持的SSL信息 (版本和种类)、算法信息、随机数RNS和其他信息回应到客户端。其他信息包括服务器证书,甚至包含获取客户端证书的请求。

这时,服务器端和客户端已经确认两方交互时所使用的加密算法。

验证证书

如果服务器端回复客户端时带有其他信息,则进入数字证书验证阶段。

客户端验证服务器证书

在这里插入图片描述
服务器端下发服务器证书给客户端后,由客户端验证该证书主要包含以下几个步骤:

1)服务器回复客户端响应时带有服务器证书

2)客户端将该证书发送至认证机构。

3)认证机构鉴别该证书

4)认证机构回应客户端验证结果,如果验证失败将同时得到警告信息。

这时,服务器端身份得以认证,客户端和服务器端可以进行以服务器端单向认证为基础的加密交互。

服务器端验证客户证书

如果服务器端对于客户端身份有要求,下发服务器证书的同时要求客户端提供证书。

在这里插入图片描述
服务器端要求客户端提供客户证书,将构建基于客户端和服务器端两方的双向认证基础。

服务器端验证客户证书,主要包含以下几个步骤:

1)服务器端请求客户证书

2)客户端发送客户证书

3)服务器将客户证书发送至认证机构验证

4)认证机构验证证书

5)认证机构返回验证结果

通常,客户证书认证不一定必需。

如果客户端和服务器端两方都可以确认,就可进行以双向认证为基础的加密交互。

双向认证是电子商务确保安全的必要环节。

产生密钥

当服务器端和客户端经过上述一系列操作后,开始密钥构建交互。

构建主密钥MS

在这里插入图片描述
服务器端和客户端最初需要建立主密钥为构建会话密钥做准备,主要包含以下几个步骤:

1 ) 客户端产生随机数,作为预备主密钥 (Pre-MasterSecret,PMS)

2)客户端使用服务器证书中的公钥对随机数PMS加密

3)客户端将PMS加密信息发送到服务器端

4)服务器使用私钥对信息解密获得PMS信息

5 ) 客户端使用随机数RNC、RNS和PMS构建主密钥 (MasterSecret,MS)

6 ) 服务器端使用随机数RNC、RNS和PMS构建主密钥MS

上述步骤5、6不存在次序关系,实际操作中异步完成。

完成主密钥构建操作后,服务器端和客户端将建立会话密钥即将完成握手协议。

构建会话密钥

在这里插入图片描述
服务器端和客户端分别构建主密钥后将构建会话密钥,并终止握手协议交互,主要步骤包括:

1)客户端使用主密钥构建会话密钥。会话密钥即对称加密算法中的秘密密钥。

2)客户端通知服务器端未来的信息将使用会话密钥加密

3)客户端发送使用会话密钥加密的信息,终止握手

4)服务器端使用主密钥构建会话密钥

5)服务器端通知客户端未来的信息将使用会话密钥加密

6 )服务器发送使用会话密钥加密的信息,终止握手

至此,服务器端和客户端完成了握手协议,开始进入正式会话阶段。

如果上述一系列操作中有任何一端受到外界因素干扰发生异常,则重新进入协商算法阶段

加密交互

进入正式会话阶段后,服务器端和客户端将使用会话密钥进行加密交互。
在这里插入图片描述
正式会话阶段的加密交互实际上是基于对称加密算法信息交互,会话密钥即秘密密钥,主要步骤如下:

1 )客户端使用会话密钥对信息加密

2 ) 客户端向服务器端发送加密信息。

3 )服务器使用会话密钥对请求信息解密

4 )服务器处理请求

5 ) 服务器完成请求处理,使用会话密钥对回复信息加密

6 ) 服务器回复加密信息

7)客户端使用会话密钥对信息解密

握手协议交互着实让人难以理解,理解上述协议交互尚有难度,更别说这些协议的具体实现。

智慧的先驱者早就想到了这一点,将上述实现封装在SSL(Security Socket Layer)层,我们只需要调用相应的API即可构建HTTPS协议。

参考

《Java加密与解密艺术》

文章来源:https://blog.csdn.net/Shujie_L/article/details/135508807
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。