文章目录

前置:TCP/IP模型安全协议HTTPS协议查看网站证书

SSL/TLS协议通信模型对等协商加密算法验证证书客户端验证服务器证书服务器端验证客户证书

产生密钥构建主密钥MS构建会话密钥加密交互

参考

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

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

前置:TCP/IP模型

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

网络接口层(Network Interface Layer):与OSI模型中的物理层和数据链路层类似,负责处理物理硬件接口和数据链路协议。 网络层(Internet Layer):与OSI模型中的网络层对应,负责在不同网络之间进行数据包的路由和转发,使用IP协议。 传输层(Transport Layer):与OSI模型中的传输层相对应,负责端到端的通信,提供可靠的数据传输,使用TCP或UDP协议。 应用层(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加密与解密艺术》

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: