深网的企业新闻,资质,联系方式...您都可以在这找到
SSL协议是网络上实现数据安全传输的一种通用协议,SSL协议的安全功能和IPSec类似,有数据加密、完整性保护、数据源鉴别和抗重放攻击等功能。SSL的3个版本(SSL 1.0/2.0/3.0)都由网景通信公司设计开发。1999年,IETF开展SSL标准化工作,将SSL 3.0改版为传输层安全(Transport Layer Secure,TLS)协议,即TLS 1.0。经历了TLS 1.1和TLS 1.2版本后,2018年8月,TLS 1.3正式版本通过RFC 8446发布。相比于TLS 1.2,TLS 1.3在安全性和效率上都有重要提升。
我国于2014年发布了密码行业标准GM/T 0024-2014《SSL VPN技术规范》,对SSL协议技术进行规范。标准GM/T 0024-2014参考了RFC 4346(TLS 1.1版本),并在TLS 1.1握手协议中增加了ECC、IBC身份鉴别模式和密钥交换模式,取消了DH密钥交换方式,修改了密码套件的定义以使其支持商用密码算法。2023年又对标准进行了修订,并进行了发布。
SSL不是单个协议,而是由多个协议组成的两层协议集合,如图1所示。SSL协议工作于应用层和传输层之间,协议的上层有握手协议等四个协议,下层是记录层协议(Record Protocol)。记录层协议用于封装不同的更高层协议的数据,为数据提供保密性、完整性和数据分段等服务,特别是它可为B/S的交互提供传输服务的超文本传输协议(HTTP)提供安全服务。SSL协议中定义了三个更高层协议:握手协议、密码规格变更协议和报警协议。其中,握手协议实现了服务端和客户端之间相互的身份鉴别、交互过程中密码套件(公钥密码算法、对称密码算法和密码杂凑算法的集合)与密钥的协商;密码规格变更协议则是用于通知对方其后的通信消息将用刚刚协商的密码规格及相关联的密钥来保护;报警协议用于关闭连接的通知,以及对整个连接过程中出现的错误进行报警,其中关闭通知由发起者发送,错误报警由错误的发现者发送,报警消息中包含报警级别和报警内容。
图1 SSL协议栈
1)握手协议
握手协议的主要作用有两点:一是通信双方对彼此进行身份鉴别;二是协商连接会话所需的密码参数(如密码算法、密钥),其中各类密码算法组成的集合称为密码套件。握手协议工作流程如图2所示,分为四个主要的阶段。
阶段一:客户端向服务端发送Client Hello消息,服务端回应Server Hello消息。若服务端未回应,则产生一个致命错误并且断开连接。Client Hello和Server Hello消息用于在客户端和服务端之间进行密码套件协商及确定安全传输能力(包括协议版本、会话标识等属性),并且产生和交换随机数。
图2
握手协议工作流程
阶段二:在客户端和服务端Hello消息之后是身份鉴别和密钥交换过程。在服务端发送完Hello消息之后,服务端将发送证书Server Certificate(签名证书和加密证书)和服务端密钥交换消息Server Key Exchange(用于生成预主密钥)。如果服务端需要验证客户端身份,则向客户端发送证书请求消息Certificate Request,之后发送服务端Hello完成消息Server Hello Done,表示Hello消息阶段已经结束,服务端等待客户端的返回消息。
阶段三:若服务端发送了一个证书请求消息Certificate Request,客户端必须返回一个证书消息Client Certificate。然后,客户端发送密钥交换消息Client Key Exchange,消息内容取决于双方Hello消息协商出的密钥交换算法,如交换算法为ECC,则客户端应产生46字节随机数与版本号一起构成预主密钥,并采用服务端的加密公钥进行加密并放在ClientKey Exchange消息中发送给服务端;如交换算法为ECDHE,则ClientKey Exchange消息包含计算预主密钥的客户端密钥交换参数。同时,客户端根据双方的密钥交换消息生成预主密钥。如果客户端发送了证书消息Client Certificate,那么也应发送一个带数字签名的消息Certificate Verify供服务端验证客户端的身份。在对交换数据进行加密和签名计算时,交换数据的加密运算采用对方加密证书中的公钥来完成;交换数据的签名运算采用本方签名私钥来完成,而且签名计算的输入应包括加密证书。
阶段四:客户端发送密码规格变更消息,并立即使用刚协商的算法和密钥,发送加密的握手结束消息。服务端则回应密码规格变更消息,使用刚协商的算法和密钥,发送加密的握手结束消息。至此,握手过程结束,服务端和客户端可以开始进行数据安全传输。
(1)密钥计算。主密钥为48字节对称密钥,由预主密钥、客户端随机数、服务端随机数、常量字符串,经PRF计算生成。
工作密钥的具体密钥长度由选用的密码算法决定,由主密钥、客户端随机数、服务端随机数、常量字符串经PRF计算生成。工作密钥包括两个对称密钥:用于加密的工作密钥,用于验证完整性和数据源身份的工作密钥。
(2)会话重用。如果客户端和服务端决定重用之前的会话,可不必重新协商安全参数。客户端发送Client Hello消息,并且带上要重用的会话标识。服务端在会话缓存中检查该标识,如果服务端有匹配的会话存在,服务端则使用相应的会话状态接受连接,发送一个具有相同会话标识的服务端Hello消息。然后通信双方根据从重用会话中提取的主密钥进行后续操作,以及发送密码规格变更消息和握手结束消息。如果服务端没有匹配的会话标识,服务端会生成一个新的会话标识进行一个新的完整的握手过程。
2)记录层协议
当客户端和服务端握手成功后,待传输的应用数据通过记录层协议封装,并得到保密性和完整性保护,具体过程如图3所示。接收到这些信息的实体要将该过程逆向执行一遍,从而获取原始数据。
第1步:数据分段。当记录层从上面的应用层接收到不间断的数据流时,将对数据进行分段,每一个记录块的长度为214字节或者更小。
第2步:数据压缩。所有的记录块使用当前会话状态指定的压缩算法进行压缩。压缩应采用无损压缩方法,并且增加长度不超过1024字节。在标准GM/T 0024-2014中没有指定压缩算法,默认的压缩算法为空。
第3步:数据添加MAC。使用握手协议的密码套件中协定的密码杂凑算法和用于校验的工作密钥,对每块明文记录计算MAC。
第4步:对数据和MAC加密。使用握手协议的密码套件中协定的对称密码算法和用于加密的工作密钥,对压缩的数据及与之相关联的MAC进行加密。
第5步:附加SSL记录报头。增加由内容类型、主要版本、次要版本和压缩长度组成的首部。
图3 记录层协议
江苏深网科技是一家专门从事跨域安全产品开发、销售,提供网络攻防技术服务的网络安全公司,并成立自主品牌“深铠威”。公司核心团队来自于军队科研院所和国内知名高科技企业,依托核心团队多年的网络安全攻防技术研究,目前已推出网闸、光闸等跨域交换安全产品以及IPSec VPN和SSL VPN安全网关产品,并拥有了细分领域领先的网络攻防技术研发能力。
原文链接:https://mp.weixin.qq.com/s/0dnYrDfIyWziRyrh5pogHA