TLS的前身是SSL,它是Internet上最重要的安全标准。SSL是由Netscape的工程师于1993年发布的,意在不改变现存的应用和协议的前提下提供一种安全机制。SSL的有效性使得它在Internet上十分流行。SSL已经成为了Internet标准,并且由IETF(InternetEngineeringTaskForce)继续管理和发展。如今SSL被更名为TLS,WAP讨论组就在TLS的基础上实现了WAP安全。
虽然TLS是建立在传输层,其实它是介于应用层和真正的传输层之间的附加层。同样,WTLS也是建立在传输层之上,但在它上面是WTP事务层和WSP会话层,这2层在Internet模型中是不存在的。这种安排使得它们与应用层所要求的服务无关。
TLS同WTLS最显著的不同是:TLS需要一个可靠的传输层,也就是TCP。TLS无法在UDP上工作。WAP协议栈没有提供可靠的传输层,而且在分组网络上优先选择了UDP。它只在协议栈的上层通过WTP和WSP实现了可靠性。因此,这也是设计另一套安全协议的动机,使得WTLS工作在WDP和UDP之上。WTLS帧中定义了序列号,而这在TLS中是不存在的。该序列号确保WTLS可以工作在不可靠的传输层上。WTLS不支持数据的分组和重装,它将这个工作交给了下层协议处理。与此不同的是,TLS可以对上层协议的数据包进行分组。
TLS和WTLS都认为会话和连接是不同的。连接一般认为比会话更短暂。在无线网络中,连接的生存期依赖于任何时候网络的覆盖质量,因此当火车穿越隧道或天气变化时它都会受到影响。会话比连接要持久,它可以存在于多个连接之上,我们可以用一个ID标识一个会话。该会话的安全参数用于确保连接的安全。这意味当连接被破坏时,会话仍然可以存在,并且能够在以后恢复它。
一个会话可以与另一个会话具有相同的安全参数,它可以来自当前某个有效的连接,也可以来自过去有效的连接。恢复连接可以使用一种优化的"握手"方式,而不用交换所有的消息。它也可以用来同时打开若干个连接,而使用相同的安全参数。一般由服务器决定是否允许会话被恢复。
WTLS允许通过匿名方式或证书对客户机与服务器进行认证,一般需要客户机或服务器在会话建立消息中提供他们的公钥。为了便于实现,一共定义了3类WTLS,在这3类中,有些特性是必备的,有些是可选的,还有些是不需要的。第1类实现必须支持公钥交换、加密和消息认证码(MAC,Message Authentication Code),而客户机和服务器证书、共享秘密握手(即客户机和服务器已经知道了秘密,因而不再需要对这些秘密进行交换)是可选的。第1类WTLS实现不需要支持压缩算法和智能卡接口。第1类实现可以选择通过证书实现客户机和服务器的认证,但不是必须的。第2类实现必须支持服务器证书,第3类实现必须同时支持客户机和服务器证书。第2类和第3类中的压缩和智能卡接口都是可选的。
当开始建立安全会话时,客户机向服务器发送一条请求消息,要求开始安全会话设置的协商过程(一般都是由客户机开始协商过程的)。服务器可以向客户机发送消息,请求它开始会话协商,但客户机可以选择是否忽视该请求。在会话的任何时候,客户机都可以发送消息以请求对设置进行重新协商。如果有数据窃听威胁WAP安全,那么该重新协商过程将通过产生新的密钥以保证尽可能少的数据被暴露。当客户机请求安全会话的协商时,它将提供它所支持的安全服务列表。另外客户机还需要指出经过多少条消息之后这些安全参数需要被刷新,极端的情况是每条消息之后都要刷新这些参数。
如果双方所认同的公钥交换机制不是匿名的,那么服务器需要向客户机发送证书以标识自己。所发送的证书必须符合他们所认同的钥交换算法。事实上,服务器所发送的这条消息中包含了一条从服务器自身的证书到CA(Certification Authority)根的证书链,发送者的证书必须位于链表头,每个后续的证书必须验证它的前驱(上一个)。CA根的证书可以在链表中省略,因为CA根证书是自由发放的,客户机可能已经拥有该证书,而且即使没有,客户机也能轻易地获取它。
如果钥交换不是匿名的,服务器还可以向客户机要求证书。如果客户机没有证书,则它需向服务器发送一条不包含证书的消息,然后由服务器决定是否继续与这个没有合法证书的客户机进行会话。通过这条消息,客户机可以证明它具有与公钥相关的私钥,其中的公钥包含在了它发送给服务器的证书中。客户机发送这条消息,其中包含了客户机与服务器之间的先前所有的交换握手消息,并且用它的密钥签名。这使得服务器可以进行相似的计算,检查签名中的消息摘要,然后与它所产生的进行比较,如果相符,则服务器认为客户机是可靠的,否则认为有错误。
TLS使用X。509证书,而WTLS定义了新的专为移动设备使用的证书。虽然WTLS可以使用X。509,但是多数移动设备并不支持它,因为它的体积太大。WTLS证书更适合于移动终端贫乏的存储资源。WTLS证书与X。509证书的格式对比如表1所示。
X。509 |
WTLS |
版本(Version) |
版本(Version) |
序列号(Serialnumber) |
|
算法标识(Algorithmidentifier) |
算法标识(Algorithmidentifier) |
发行者名称(Nameofissuer) |
发行者名称(Nameofissuer) |
有效时期(Periodofvadility) |
有效时期(Periodofvadility) |
证书所有者(属主)(subject) |
属主(Subject) |
属主公钥(Subject'spublickey) |
属主公钥(Subject'spublickey) |
发行者ID(IssuerID) |
|
属主ID(SubjectID) |
|
发行者签名(Issuer'ssignature) |
发行者签名(Issuer'ssignature) |
TLS和WTLS在我们所讨论的通信中的2个角色上--客户机与服务器--都可以实现。在客户机上,TLS/WTLS发起与远端服务器的通信,并提出对安全选项的建议。在服务器上,它检查所提交的选项,并选择那些它实际使用的以确保通信安全。在任何协议中(包括TLS与WTLS)都有一组消息以确保客户机与服务器的信息交换,并有一套规则约束该交换的进行。 |