无线传输层安全协议(Wireless Transport Layer Security Protocol,WTLS)作用是保证传输层的安全,作WAP协议栈的一个层次向上层提供安全传输服务接口。WTLS是以安全协议TLS1.0标准为基础发展而来的,提供通信双方数据的机密性、完整性和通信双方的鉴权机制。WTLS在TLS的基础上,根据无线环境、长距离、低带宽、自身的适用范围等增加了一些新的特性,如对数据报的支持、握手协议的优化和动态密钥刷新等。
简介线传输层安全协议(Wireless Transport Layer Security, WTLS)协议版本 18-2-2000 是从 TLS1.0协议演化而来的,它的主题框架和握手流程模仿了 TLS1.0 协议中的内容,但又针对无线应用这一特殊领域的要求做了相应的调整。其规范定义在 WAP 论坛上的《WAP WTLS WAP-199-WTLS Version 18-Feb-2000》中。WTLS 为两个通信应用提供保密,数据完整性和认证服务。它为 WAP 上层提供了一个安全传输服务接口且屏蔽其下层的传输服务接口。另外,WTLS 提供一个管理安全连接(创建,撤销)的接口。
主要服务客户方和服务器的合法性认证
使得通信双方能够确信数据将被送到正确的客户方或服务器上。客户方和服务器都有各自的数字证书。为了达到验证用户的目的,WTLS 要求通信双方交换各自的数字证书以进行身份认证,并可由此可靠地获取对方的公钥。
对数据进行加密
WTLS 协议使用的加密技术既有对称加密算法,也有非对称加密算法。具体地说,在安全的通信连接建立起来之前,双方先使用非对称加密算法加密握手过程中的报文信息和进行双方的数字签名及验证等。安全的通信连接建立起之后,双方使用对称加密算法加密实际的通信内容,以达到提高通信效率的目的。
保证数据的完整性
WTLS 协议采用消息摘要函数提供数据的完整性服务,同时也达到节省通信带宽,提高通信效率的目的。
构造WTLS 协议是一个分层协议,被分为四层:
应用数据协议(Application protocol)
这是一个从相邻层接收原始数据的协议,它仅在连接状态下运行。连接状态是指 WTLS 记录协议的运行环境,它规定压缩算法、加密算法和 MAC 算法。另外,这些算法的参数也是已知的。MAC 的密码、体加密密钥以及读写双向安全连接的IV。它将所接收到的数据进行压缩、加/解密、鉴别和数据完整性处理,然后向上层转交或向下层发送。本协议进行的有关处理完全按照在握手协议中通信双方所协商一致的处理流程和算法进行。
逻辑上,通常有两个连接状态很重要:当前状态和未决状态。所有的记录都在当前状态下进行处理,未决状态的安全参数由 WTLS 被重新初始化为空状态。最初的当前状态通常都指明不使用加密、压缩或 MAC。
握手协议(Handshake protocol)
所有与安全相关的参数都是在握手阶段协商一致的。这些参数包括:协议版本号、使用的加密算法、鉴别的信息和由公开密钥技术生成的密钥素材。握手阶段从客户方与服务方进行 Hello 消息应答开始,在两个Hello消息中,通信双方商定一致的会话方式。当客户方发 送 Client Hello消息以后,它等待接收Server Hello Done 消息。服务方如果需要鉴别,可以发一个代表自己的服务器证书给客户方,也可以要求客户方鉴别自己。Server Key Exchange用于向客户方提供公开密钥。当客户方收到Server Hello Done消息后,返回Client Certificate消息以让服务方鉴别自己;随后,客户方发送一个Client Key Exchange消息,包含由服务方用公开密钥加密过的共享主密钥和其他一些信息,以使双方完成密钥交换;最后,客户方发送一个包含验证前面所有数据的 Finished Message,服务方也同样发送一个Finished Message 证实交换和计算的信息来回应客户方。
报警协议(Alert protocol)
记录协议的警报消息主要有错误、严重、致命三种。警报消息使用当前的安全状态发送。如果警报消息的类型是“致命”,则双方将结束安全链接。同时,其他使用安全会话的链接可以继续,但会话标识必须设成无效,以防用已经终止的安全对话建立新的安全连接。 当警报消息的类型为“严重”时,当前的安全链接结束,而其他使用安全会话的链接可以继续,会话标记也可以保存,用于建立新的安全连接。告警信息的传送可以有当前连接状态(如压缩和加密)指定或采用无密码(如不进行压缩与加密)。WTLS 中的出错处理是基于警报消息的,当发现错误时,发现的一方发送包含出现错误的警报消息,进一步的处理依赖于出现错误的级别和类型。
改变密码规范协议
此协议应用在加密算法中,用来在 WAP 会话的双方间进行加密策略改变的通知,仅使用一种改变密码标准消息。此消息在双方的安全参数协商一致后,在握手阶段由客户方或服务方发送给对方实体, 用于通知另一方:以后的数据记录将采用新协商的密码规范和密钥。在握手时,经过双方同意安全参数后并在最后校验信息发送前,改变后的密码规范信息才被传送。运行中必须检查改变密码规范信息的发送或接受是否在最后校验信息发送或接收之前进行,这样,已结束和接下来的信息将受新的密码规范和密钥的保护。当消息到达时,发送消息的一方设定当前的写状态为待决状态(Pending state),接收消息的一方设定当前的读状态为待决状态1。
安全方法加密
WTLS的保密性依靠加密通信通道来实现,所使用的加密方法和计算共享密钥所需的值在握手时进行交换。首先,客户端和服务器交换Hello消息,此后,客户端和服务器交换预主密钥(Pre master Secret),这个值用来计算主密钥(Master Secret),计算所使用的加密算法在服务器的Hello消息中进行选择。在这条消息中,服务器通知客户端已经选择了一个密码组,客户端向服务器提供一个密码组列表。如果服务器未发现合适的密码组,则握手失败,连接关闭。当前常用的大批量加密算法有:支持40、56和128位密钥的RC5,支持40和56位密钥的DES,支持40、56和128位密钥的3DES和IDEA。所有的算法都是分组加密算法,加密密钥在密钥分组的基础上进行操作,密钥分组根据协商的密钥刷新频率在一段时间后重新运算。
密钥交换
为了保证安全的联系通道,加密密钥或计算密钥的初始值必须以安全方式进行交换。WTLS的密钥交换机制提供了一种匿名交换密钥的方法。在密钥交换过程中,服务器发送包含服务器公钥的服务器密钥交换消息。密钥交换算法可能是RSA、Diffie-Hellman或Elliptic Curve Diffie-Hellman。在RSA和匿名RSA中,客户端用服务器的公钥加密预主密钥,并在客户密钥交换消息中将其返回给服务器。在基于Diffie-Hellman的算法中,客户端和服务器在一个私钥和相应的公钥基础上计算预主密钥。
如果客户端列出了它所支持的用密码写的密钥交换方法,服务器可以选择是使用基于客户请求的方法,还是定义另一种方法。如果客户端并未提出任何方法,则服务器必须指明。
鉴别
WTLS的身份鉴别依靠证书实现。身份鉴别可以在客户端和服务器之间进行,也可以在服务器允许的情况下,只由客户端鉴别服务器,服务器还可以要求客户端向服务器证明自己。在WTLS规范中,身份鉴别是可选的。当前所支持的证书类型包括:X.509v3、X9.68 和 WTLS证书。在客户端和服务器之间交换Hello消息之后,鉴别过程随即开始。当使用鉴别时,服务器发送服务证书消息给客户端。根据WTLS规范,为了优化流量和客户处理,服务器一次只发送一个证书。服务器证书由CA公司独立分发的公钥进行鉴别。服务器也可以发送证书请求消息给客户端以鉴别之。此时,客户端发送客户证书消息返回给服务器,客户端证书遵循与服务证书相同的结构。
完整性
数据完整性通过使用消息鉴别编码(MAC)而得到保证, MAC算法同时也被认为是加密算法。客户端发送一列所支持的MAC算法,服务器在返回的Hello 消息中标出所选的算法。WTLS支持通用的MAC算法,MAC在压缩的WTLS 数据上产生。
安全状态
在安全协商后,会话通信双方将拥有同样的安全状态。当前状态通过安全参数产生,并持续更新。
本词条内容贡献者为:
王慧维 - 副研究员 - 西南大学