1.WAP的安全性

    在WAP安全性的实现上,我们需要以最小的代价获得最大的利益。WAP论坛的一个目标就是不进行"重复发明"。他们希望利用一切现存的技术,包括使用Internet技术作为模型,因而与Internet和Internet协议的一致和互用就成为一个重要目标。如同Internet一样,WAP的安全性也是在传输层实现的。外观上唯一的区别是:Internet模型将它的多数安全特性在TLS中实现,而WAP则在WTLS中。协议的命名可以给我们提示:WTLS与TLS很相似,而且WTLS是以TLS为基础的。然而,在实际的网络配置中,它们有着微妙的不同,这些不同对于安全性有很重要的含义。
    为了阐明这种区别,我们需要看看在WAP环境中通信是如何进行的。图1是一张类似于Internet通信模型的图解。


图1 WAP通信模型

    在该模型中,连接仍然是通过电话呼叫建立的,但是此时的连接是由网络运营商而不是ISP进行处理的。在实际中并非必须这样实现,但是它代表了多数的通信模型,因而我们在讨论中只以该图为参照。同Internet模型一样,当运营商接收到电话呼叫时,会将其路由到它的某个调制解调器上,进而连接到RAS服务器。
    WAP论坛曾经指出移动设备应该使用PPP协议,但是这里的PPP本身只是OTA业务承载协议及其它相关的处理移动电话呼叫的协议的一个"隧道"。通信时,在手机与基站之间有一层加密机制,该加密机制与PPP或其它高层协议是无关的。这种加密被定义为GSM的一部分,虽然该附加的安全层使得电话窃听变得较为困难,但是它并不是足够健壮,而且不能保护范围只限于基站之内,所以它本质上并不能提供安全的连接。
    同Internet模型一样,RAS服务器进行认证处理,但是同Internet模型不同的是,当数据包通过RAS服务器之后,它并没有经过Internet被路由到WEB服务器,而是被路由到了WAP网关。WAP网关负责WML、WMLScript与适合于无线传输的二进制格式代码之间的转换,同时,它也作为手机的代理,代表手机用HTTP 1.1协议与WEB服务器通信。WEB服务器并不知道它在和WAP网关对话,它只是将WAP网关看作另一个客户机设备。
    一般作为信息服务的WEB服务器是网络运营商所有的,因而数据包可能从未离开过运营商所控制的范围。然而你可能需要访问其它组织提供的服务,这时WAP网关就会通过防火墙向其它机构网络的远端服务器发送它的HTTP包。网络运营商可以在它们的WEB服务器上设置DMZ(非禁止区域),以向普通大众提供WAP或Internet服务,但是主要的服务还是应该放置在公众无法访问的独立的服务器上。
    在安全性方面,可以明确的一点是:如果WAP网关作为手机的代理使用HTTP 1.1协议与WEB服务器通信,那么TLS是可以确保WAP网关和WEB服务器之间的一切通信安全的,这点与Internet一模一样。但是TLS不能确保手机与WAP网关直接的通信安全,这是因为TLS需要可靠的传输层,即TCP,但是手机并没有使用TCP与WAP网关通信。TCP适合于高带宽和高可靠度的网络,而移动网络无疑不具备这样的特征。而且普通的移动设备的处理器和资源无法应付TCP协议栈的需求,因此WAP讨论组设计了另一种比较轻便和适合于移动网络的协议栈,该协议栈在IP网络上使用UDP或在非IP网络上使用WDP作为其传输层协议。

2.WAP网关

    如同TLS对于Internet作用一样,多数情况下WTLS已足以确保WAP的安全。但是对于WAP有一个不安全的例外,该例外只发生在WAP会话中,而且与WAP网关有关。WAP需要将WML与WMLScript翻译为二进制代码,以适合与在低带宽的网络上传输,并且使得资源贫乏的终端设备易于处理。WAP网关负责这种转换,这里存在2点暗示:

    ◆WTLS安全会话建立在手机与WAP网关之间,而与终端服务器无关。这意味着数据只在WAP手机与网关之间加密,网关将数据解密后,利用其它方法将数据再次加密,然后经过TLS连接发送给终端服务器。
    ◆WAP网关可以看见所有的数据明文,而该WAP网关可能并不为服务器所有者所拥有,这样,潜在的第3方可能获得所有的传输数据,而该数据却被认识是安全传输的。

    在有线互联网世界里与WEB服务器建立安全连接,通常会假设您与Internet有一条不为第3方干预的直接连接。如果您从公司网络访问Internet,则数据包在达到Internet之前往往会经过代理服务器。这种情况下,访问Internet的安全性就依赖于所使用的代理服务器的配置情况。一些ISP提供缓存服务,其中包括了代理服务器,您可以配置浏览器以通过这些代理进行网上冲浪。另外还有一种透明的代理服务器,使您无需配置本地浏览器就可以直接使用它。这似乎与介于设备和服务器之间的WAP网关很相似,但其实它们有着本质的不同。代理服务器为SSL/TLS会话建立了"隧道",它有些像路由器,只是进行包的转发,而不会对数据进行解密进而获得数据明文。
    当然,你可能会说WEB服务器会在其后方的应用程序之前先获得数据明文,但是,对于多数有较高安全需求的公司来说,他们一般拥有这些WEB服务器以及连接WEB服务器和终端应用程序的网络。这意味着他们可以控制谁有权发现WEB服务器的位置,WEB服务器对谁是可见的,谁对WEB服务器具有管理权限,何时对服务器进行维护,以及其它与服务器和网络安全相关的事项。
    然而让网络运营商拥有WAP网关究竟有多大危险呢?诚实的回答是:危险很小,但仍然存在。著名的网关供应商和网络运营商都尽力确保他们的WAP网关安全。很明显,他们并不愿意他们的业务与安全灾难有任何牵连,所以他们保证数据明文不在磁盘上读写,而且加密与解密全部在内存中以最快的速度进行,这些进程使用的内存空前在释放前必须被覆盖,以确保数据是绝对安全的。
    以上的所有措施都是非常可靠的,并且或许能够满足多数人的需求。然而仍有不少人持怀疑态度。我们可以考虑这个事实,尽管许多最大的软件生产商和世界上最好的编程人员都在尽力解决安全问题,但是各种产品的安全漏洞却不断地被发现。有些人认为,WAP网关的安全漏洞迟早会暴露,这或许是由于软件的脆弱,或许由于配置和管理错误,或许是由于雇员的蓄意或无意地操作。
    对于那些有着较高安全需求的公司来说,一个很明显的可行的解决方案是拥有自己的WAP网关。许多著名厂商如Nokia等都推出了自己的WAP网关产品,您可以在自己的站点上安装它们。另外有一些WEB和应用程序服务器的生产商也在它们的产品中嵌入了WAP网关,如BEA的WebLogic。如果您决定运行自己的WAP网关,那么需要考虑几个问题。根据您的安全需求和环境配置情况,您可以成为自己的ISP。如果那些移动设备访问的应用程序很敏感,而您不希望它们被Internet访问,则您需要建立调制解调器堆和RAS服务器,以允许拨号访问您的网络。您应该允许您的用户连接到WAP网关及其之后的服务。除非您同意您的用户经过您的网络访问Internet,否则您必须在您的网络上配置Internet网关,这样用户就无法访问到Internet上的其它WAP服务。如图2所示是一个例子。



图2 WAP网关配置模型(1)

    根据所要提供的服务,这些可能根本不是问题。许多客户可以轻易地满足上图的配置,因为他们已经具备了大而且复杂的计算环境,以支持拨号连接。他们一般明确地表示不希望Internet能访问到他们的应用程序,而且不希望用户能通过他们的网络访问到Internet。他们通常是大型的投资银行或基金管理结构,具有迫切的安全需求和充足的资金以建设这种机构。这种方案一般不适合于小公司。
    另一种配置方案可以让您具有自己的WAP网关,但是无需额外的资金来充当自己的ISP。这种配置对你是否足够安全主要依赖于你的安全需求。一旦WAP网关可以被Internet访问,那么它将更容易受到攻击,当用户访问你的系统遇到问题时,你和ISP之间的责任分界线将不如上个模型那样鲜明。但是对于那些希望向公众提供服务而又想拥有自己的WAP网关的组织来说,这个模型比较容易实现。该模型中,用户拨号到ISP,接着就可以访问Internet,然后他们使用ISP的RAS服务器,并且就如同访问Internet上的任何WEB服务器一样开始访问WAP网关。这个模型是安全的,因为在手机与WAP网关之间使用了WTLS作为"隧道"协议。



图3 WAP网关配置模型(2)

    虽然在该图中WAP网关和WEB服务器位于同一个网段内,但在实际中并非一定如此。就如同网络运营商拥有网关时一样,WAP网关和WEB服务器可以位于不同的网段,而且WEB服务器甚至可以位于Internet可以访问的另一个网络中。由于TLS用来保证网关和WEB服务器之间的通信安全,它就同Internet上任何客户/服务器连接一样安全可靠。
    值得一提的是,一些零售金融机构选择通过网络运营商的网关向用户提供服务,因为他们希望用户能够便利地访问他们的移动银行服务。由于在交易环节中存在着安全缺陷,那么用户自然会考虑是否值得使用这些服务来进行与帐户的交易。这种安全问题同样会影响用户在移动连接上使用信用卡的意愿。
    考虑到需要将WML和WMLScript转化为二进制代码,如果我们要提供端到端的安全解决方案,就要求应用层支持认证和数据加密。WAP 1.2说明中的加密库只包含了一个函数,用来为文本串产生签名,但是该说明也指出,在未来版本的说明中,可能加入新的加密功能。当支持WIM(WAP Identity Module,WAP身份模块)的设备启动时,它有可能将产生签名的密钥保存在智能卡上。WAP讨论组已经意识到了端到端安全性的问题并且正在寻找解决方案,但至今仍没有书面的标准方案,因此我们只能利用现有的协议自己设计应用程序。

3.TLS与WTLS

    TLS的前身是SSL,它是Internet上最重要的安全标准。SSL是由Netscape的工程师于1993年发布的,意在不改变现存的应用和协议的前提下提供一种安全机制。SSL的有效性使得它在Internet上十分流行。SSL已经成为了Internet标准,并且由IETF(Internet Engineering Task Force)继续管理和发展。如今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)
序列号(Serial number)  
算法标识(Algorithm identifier) 算法标识(Algorithm identifier)
发行者名称(Name of issuer) 发行者名称(Name of issuer)
有效时期(Period of vadility) 有效时期(Period of vadility)
证书所有者(属主)(subject) 属主(Subject)
属主公钥(Subject's public key) 属主公钥(Subject's public key)
发行者ID(Issuer ID)  
属主ID(Subject ID)  
发行者签名(Issuer's signature) 发行者签名(Issuer's signature)

    TLS和WTLS在我们所讨论的通信中的2个角色上--客户机与服务器--都可以实现。在客户机上,TLS/WTLS发起与远端服务器的通信,并提出对安全选项的建议。在服务器上,它检查所提交的选项,并选择那些它实际使用的以确保通信安全。在任何协议中(包括TLS与WTLS)都有一组消息以确保客户机与服务器的信息交换,并有一套规则约束该交换的进行。

4.无线安全的未来

①WAP 1.2

    WAP规范的最新版本是1.2。虽然WAP 1.2规范在较早就通过了,但是目前多数的手机和网关产品仍然只支持WAP 1.1。然而本文中所讨论的安全技术对于WAP 1.1和1.2版本来说是相同的。在近期未来对WTLS不可能有很大改动,主要是因为WTLS是基于很成熟的TLS协议的。这对于WAP开发者是一个好消息,因为这表示他们在与一个经过检验和尝试的技术打交道。虽然这并不代表WAP安全不会有任何发展,但是在可预见的将来,WTLS将作为新的WAP安全技术的稳定基础。
    有一点可能的改变是以后的设备和软件产品可能会支持第2、3类WTLS,它们将使用基于服务器和客户机证书的认证。另外,WAP 1.2还有一项特性没有被广泛支持,那就是WIM。

②WIM

    WIM规范是WAP 1.2中新加的内容。WIM的目的是将安全功能从手机转移到抗损害设备中。这种设备可以是智能卡或者SIM卡。智能卡有自己的处理器,可以在卡上的芯片中实现加解密算法和哈希功能。与手机上的软件实现相比,WIM有若干优点,其中之一是较好的性能,因为它可以设计专门的加解密芯片。智能卡还可以存储数据,比如一些经常需要访问的数据,包括私钥和共享秘密等,它们通常用于建立长时间的会话。从共享秘密中继承密钥是很有效的,因而,从性能上看,保持这些长时间的会话,并且可以随时挂起和恢复它们显得十分重要的。当然,这也表示需要长时间存储这些共享秘密和继承的密钥。既然已经在智能卡上保存了这些数据,那么手机中就不用留有备份。当手机遗失时,任何人都不能轻易地重用这些会话。另外,即使手机电池耗尽,密钥也不会丢失,并无需重新建立。
    WIM规范中并没有包含API(Application Pragramming Interface,应用程序编程接口),而且不能被WML和WMLScript直接访问,以后这点可能会有所改变。规范主要定义了卡的行为以及底层接口,这样生产商在移动设备上实现WTLS时就能够任何兼容的WIM相配合。这表示该功能主要依赖于设备生产商。
    将私钥与一些敏感的安全信息从手机中分离出来还可以解决其它问题,如由于用户可以将智能卡与手机分开保存,那么个人的合法性认证与设备的合法性认证的安全问题就迎刃而解了。当然,还有智能卡遗失的现象,不过我们仍有办法。比如我们可以将电话存储在SIM卡中,而将私钥存储在智能卡上,那么用户每次必须输入他的PIN码以获取安全服务,这样我们或许可以获得比目前的有线网络更安全的服务。