摘 要:利用近场通信(NFC)技术安全性高、便捷和功耗低的特点,提出采用NFC 为无线保真(WiFi)传输建立连接的2 种方案:NFC 触碰传递WiFi 局域网的密码和NFC 触碰传递上层加密传输的密钥,避免传统WiFi 传输通过搜索热点后需经过认证加入局域网的繁琐操作,同时保证数据传输安全性。根据第2 种方案实现NFC+WiFi 数据传输系统,测试结果表明,该方案的建立设备连接速度和传输速度均快于传统WiFi 方式。
1 概述
随着智能手机和物联网的普及,近场通信(Near FieldCommunication, NFC)作为一种新兴的技术正被越来越多新款手机采用,并作为系统基本配置,该技术的发展使得将智能射频卡的功能集成到手机的设想成为可能。当前作为传统近距离通信的蓝牙技术已经发展到4.0 版本,传输速率已有大幅提高,对于传输数据安全性保护也有所加强,但还是有各种对蓝牙的攻击方法被提出。无线保真(WirelessFidelity, WiFi)作为无线局域网标准的别称,相比于蓝牙,其数据传输速度更快,通信距离更远,而且目前有比蓝牙更好的加密认证体系。随着越来越多的人对Ad Hoc 网络的研究以及WiFi 直连(WiFi Direct)技术被新的手机产品所配置,WiFi 传输有望代替蓝牙传输成为设备间数据传输的主要手段,但WiFi 本身也存在设备连接过程耗时、热点设备功耗大等一系列问题。如果把NFC 技术和WiFi 传输有效结合,利用NFC 交换数据便捷、安全性高、功耗低等特点传递参数,并用于WiFi 传输的建立连接过程,则能有效避免各种对传统WiFi 传输设备所在局域网密码的攻击,同时减少传输数据前连接过程的耗时,降低系统的整体功耗。
目前针对NFC 与WiFi 结合的研究还停留在提出概念阶段,由于NFC 硬件模块还未作为智能手机的标准配置,因此智能手机上还没有相关系统的实现,国内外对相关领域的研究基本还是空白状态,还没有文献从理论方面分析提出使用 NFC 为WiFi 传输建立连接并保证传输安全性、低功耗的方案。
本文通过阐述NFC 技术和WiFi 技术特点,和对传统WiFi 传输的配对过程、安全认证、加密机制以及上层使用Socket 建立连接过程的分析,提出2 种使用NFC 为WiFi传输建立连接的方案,并在Android 系统上实现其中一种较易实现的方案。
2 无线局域网技术及其存在的问题
2.1 无线局域网技术
无线局域网(Wireless Local Area Network, WLAN)的提出是为了覆盖有线网络难以涉及的范围,同时满足移动通信漫游访问的需求,作为传统的有线局域网的重要补充。从1997 年发布的802.11 标准,到后来的802.11a/b/g/n/p 标准,已先后有6 个无线局域网通信标准。相比于蓝牙等无线个人网技术,无线局域网数据传输速率更高,信号覆盖范围更广,有更好的传输性能。Ad Hoc 网络作为传统WLAN 的重要补充,是一种特殊的自组织、对等式、多跳、无线移动网络,也可称作无线自组网。将WLAN 和Ad Hoc进行比较,如图1 所示[1]。可以看出,802.11 无线局域网由基本服务集(BSS)构成,而一个BSS 由一个或多个无线移动节点和无线接入点(AP,也称作基站)设备组成,移动节点通过基站连接到路由器。Ad Hoc 网络则是一种特殊的不需要基础设施的无线移动自组网。
图1 传统WLAN和Ad Hoc网络结构比较
相比于传统的有线局域网,无线局域网的安全性更加难以保证和维护,移动设备节点间的无线链路非常容易受到窃听、干扰、假冒、数据篡改和重放以及拒绝服务等方式的攻击,攻击者可以破坏网络系统的机密性、数据完整性与有效性[1]。其中,作为热点的无线路由器或某个移动设备一旦受攻击,则整个网络面临着因单点失效而崩溃的风险。为此,WiFi 联盟等组织制定了一些安全协议,用于尽可能维护无线网络的安全性,被广泛采用的包括有线等效加密 (Wired Equivalent Privacy, WEP)、WiFi 保护访问(WiFiProtected Access, WPA)和IEEE802.11i(即WPA2)。此外,还有我国自主提出的双向认证安全架构(Wide Authenticationand Privacy Infrastructure, WAPI)[2]。Ad Hoc 网络由于拓扑动态变化难以预测、节点自由漫游、链路带宽受限、无基础设施用于鉴权,其安全性更加难以保证,目前在这方面的研究只是有一些成果,如基于口令的认证协议和分级混合网络体系结构[1]等,但由于Ad Hoc 本身都没有形成标准,因此也没有相应的安全标准。
2.2 WiFi 传输存在的问题
Ad Hoc 网络由于并未正式作为一个行业标准,因此,未被大多数移动设备统一定制,当前移动设备间通信和传输一般还是采用各自先加入到同一个无线路由器(即AP)下的局域网中,获取相应的动态IP 地址,然后两者之间可像在有线局域网下一样通信和传输数据,许多移动终端上的局域网聊天软件和视频同步共享软件都采用这种方式。
近年来有许多移动设备制造商试图在自身设备上定义Ad Hoc 网络的通信协议、安全机制,但目前并未有成功的实例作为统一标准而被推广。维护WLAN 的组织WiFi 联盟却并不热衷于统一Ad Hoc 网络标准,而是定义了WiFi直连(WiFi Direct)标准[3],该标准用于在2 台设备间建立WiFi 连接,然后快速传输各种数据,这和目前的蓝牙传输技术实际上有相同的用途,只不过由于WiFi 传输速率明显快于蓝牙,并且具有比蓝牙更远的传输范围,使得这项技术标准的定义对未来传输数据方式的改变有很大的影响。这种传输方式只适用于最新机型的手机,并未被广泛应用。
目前较为成熟的在移动设备间使用WiFi 进行数据传输的方案是:将一台设备设为WiFi 热点,而另一台或多台设备如同关联一般AP 一样去建立关联(Association),并加入到热点设备的局域网中。这个过程需要关联设备对周围WiFi 信号进行搜索,选择热点设备发出连接请求,在WEP或WPA 安全模式下要输入密码,热点设备对其认证,使用DHCP 为其分配动态IP 地址,即完成“入网”操作。之后在每次通信或传输之前通过IP 地址完成网络层Socket 连接。该方案简单可行,被越来越多的移动终端所采用,包括手机、平板电脑、笔记本电脑等,将“开启WiFi 热点”列为标准配置。这种方式可以看作是Ad Hoc 网络的简易实现,但是一旦当一个移动设备设置成充当WiFi 热点,则它将切换到热点模式,在这种模式下它将不能搜索到其他设备的信号,最终的网络拓扑只可能是多对一的星型结构,而不可能做到Ad Hoc 网络期望的任意设备都同时具有收发功能,可以形成网状结构或任意拓扑结构,因此,它还不可以算作真正意义上的Ad Hoc 网络,更多的还是一种使用移动设备充当AP 的新型WLAN 网络。
WiFi 的传输速率明显快于蓝牙,安全性也要好于蓝牙,但相比于蓝牙基于PIN 密码的配对认证,基于WEP、WPA等协议的认证方式更为复杂。同时相比于蓝牙直接使用设备的MAC 地址进行设备连接,WiFi 增加了网络层,使用动态分配的IP 地址建立连接,更增加了传输的安全性。这些因素使得加入WiFi 局域网的过程比蓝牙配对过程要占用更多的时间,而且需要用户手动开启WiFi 和搜索热点,并选择热点发送关联请求。在2 台设备间使用WiFi“点对点”传输文件,设备“入网”过程的时耗和手工干预无疑为用户带来更多额外的负担和很差的体验效果。
另外由于热点设备需要先于关联设备开启WiFi,等待响应关联设备加入局域网,对“入网”设备认证,并且要维护当前局域网内设备状态和IP 地址变化,还需要“轮询”地去发现哪些设备退出局域网,这些操作严重加大了其功耗,相比于设备的功耗管理带来了巨大挑战。
WiFi 传输最初采用WEP 安全协议认证机制过于简单,易于破解[4],它并不包含钥匙管理协定,都依赖在用户间共享一个秘密钥匙安全性[5],许多“蹭网器”利用其漏洞可轻易入侵 WEP 加密局域网。但随着WPA 特别是WPA2 被广泛采用,WiFi 安全性已有很大程度的改善,目前还没有有效的攻击方式,因此,多数专家建议将无线局域网的安全协议设置为WPA2,而不使用WEP。相比于蓝牙存在可被攻击的安全问题[6-7],WiFi 使用WPA2 协议加密传输在一定程度上可认为是安全的。
综上,WiFi 传输主要存在加入局域网过程复杂耗时和作为热点设备功耗较大这2 个方面的问题,因此,本文采用NFC 技术提出相应的解决方案。
3 基于NFC 的解决方案
3.1 NFC 技术
NFC 是由Philips、SONY、Nokia 等公司提出的用于近距离无线通信的一种新技术,它由无线射频识别技术(RadioFrequency Identification Devices, RFID)结合传统的近距离互联技术(如蓝牙、WiFi 等)发展而来,用于2 个设备在极近距离(10 cm 左右)通过触碰方式进行相互通信。它工作在13.56 MHz 频段,可以选择106 Kb/s、212 Kb/s 和424 Kb/s等多种传输速率。相比于RFID 和其他近距离互联技术,它具有传输距离近、带宽高和能耗低等特点。被确定为ISO/IEC 18092 标准的NFCIP-1 中详细阐述了NFC 设备控制原理[8]。而被确定为ISO/IEC 21481 标准的NFCIP-2 定义了一个灵活的网关系统来检测和选择NFC 技术3 种操作模式[9]:卡模拟模式,读写器模式和点对点通信模式,使NFC设备可以用作乘车票、电子钱包、电子票证,也可以读取智能海报,还可以将2 台支持NFC 的设备触碰进行点对点数据传输。
NFC 应用在极短距离通信中(10 cm~20 cm),这样短的距离本身就限制了潜在黑客的窃听和访问,因此,具有很高的安全性。另外NFC 链路层也包括了一个加密鉴权的程序和防冲突机制,在初始化过程中会选择好唯一的目标方进行通信,可以排除第三方以“中间人”的角色对链路进行控制。当然对于用作卡模拟模式进行手机支付的敏感应用,还可以采用标准智能卡采用的技术,即把高级加密标准(Advantage Encryption Standard, AES)和三重DES 加密算法添加到上层应用中[10]。
3.2 解决WiFi 传输问题的2 种方案
本文提出2 种使用NFC 作为设备使用WiFi 进行数据传输前建立连接的方案:(1)NFC 触碰传递WiFi 局域网密码;(2)NFC 触碰传递上层加密传输的密钥。
在2 台NFC 设备间使用WiFi 进行“点对点”方式通信或数据传输之前,可以利用NFC 技术的特点,使用NFC触碰“握手”使两者在同一个局域网中,这个过程可以代替上面提到的传统WiFi 通信中关联设备加入到热点设备的局域网中的过程。
虽然WiFi 的安全认证协议比较完善,但是还是要依赖关联设备在加入局域网前已知热点设备设置的局域网密码,但该密码的产生和交换并不安全,导致第三方获取该密码也可加入到该局域网中,方便窃取传输的数据。此时可以通过NFC 触碰方式传递WiFi 局域网密码,加强对它的保护,防止被入侵者截获。具体来说,首先使热点设备设置建立WPA2 协议认证的局域网;然后在2 台设备触碰过程中使热点设备利用NFC 主动模式下交换数据方式来传递随机生成的密码到关联设备;最后根据这个密码验证该关联设备,使其加入到该局域网中。由于避免了用户使用关联设备搜索热点的过程,而使用NFC 传递密码等热点相关信息,时间较短,因此比传统的WiFi 加入局域网过程耗时大大减少。同时,这种不同搜索和选择某一网络热点而是直接通过触碰加入该局域网的方案,也极大简化了用户操作,改善了用户体验。
但这种方案需要对系统底层框架中设置WiFi 局域网密码和加入局域网认证过程有深入了解,多数智能手机出于安全考虑隐藏了底层框架,无法通过SDK 接口调用,需要使用复杂的底层调用机制。
当然,还可以不对热点设置任何安全协议的认证,使用在开放模式下在应用层上对所传输数据加密。由于对称加密算法比公钥加密算法更简易,性能更高,在使用 NFC传递密钥可以保证不被窃取的情况下,选择使用同一随机密钥进行加密和解密的对称加密算法更为理想,这里可以选择较为常用的AES 算法,正如事实上WPA2 安全协议也是基于AES 算法进行加密认证的[3]。具体的设备间连接以及传输的过程为,发送方作为热点设备设置建立开放模式的局域网,在传输数据前通过NFC 触碰方式向关联设备(接收方)传递密钥,然后对传输的数据进行加密;待接收方加入到它建立的局域网后,将加密的信息发送给对方。由于在开放(不加密)模式下加入局域网的过程中,热点设备不需要对关联它的设备进行严格的认证,可进一步减少2 台设备传输数据前连接过程的耗时。
由于NFC 被设计为具有极短的工作距离(10 cm 左右),且与无线局域网通信不在同一频带,使用这种带外传输方式交换随机生成的无线局域网密码或者应用层加密密钥是极为安全的。第三方的设备无法以如此短的距离且在较低频率的频带上去窃听和截获传输的密钥,这样将极大地提高数据传输的安全性。当然NFC 本身传输数据也有用AES和三重DES 算法加密的,甚至有些设备还有专门的安全控件,具有硬件级的加密措施,可以进一步保证该过程的安全性。使用NFC 为WiFi 传输建立连接,尤其适合在2 个设备间“点对点”模式传输数据。
为减少作为热点的设备的功耗,可以考虑在每次传输数据完成后即关闭热点,这样关联它的设备会自动退出该热点设备的局域网,下次要传输数据前再重新进行加入局域网的过程。由于每次设备连接利用的NFC 技术本身具有低功耗的特点,不会带来过多额外的功耗,因此可以使整体功耗降低。当然这样在功耗降低的同时,却带来了每次传输前的设备连接耗时。为平衡两方面因素,可以加入功耗管理模块,考虑设定时间阈值,在一定时间内没有使用该热点设备进行数据传输则关闭该热点,在避免频繁连接设备的同时一定程度上降低功耗。
下面设计并实现NFC+WiFi 数据传输系统,对以上方案加以验证,并对该系统进行性能测试分析。
4 NFC+WiFi 数据传输系统
4.1 系统设计与实现
本文选用Google 的2 款原生态手机Google Nexus S 和Samsung Galaxy Nexus,配置Android 4.0 操作系统,作为本文系统实现和测试的平台。这2 款手机配置了NFC 芯片,并且其上搭载的Android 系统具有开源性和易用性。
本文主要实现一个文件传输系统来对比传统WiFi 方式和NFC+WiFi 方式的传输性能。
对于传统的WiFi 传输,利用前面提到的将其中一个设备设置为WiFi 热点这种方式。服务器端用于接收文件,它作为热点,首先设置热点的名称、BSSID。如果是在WPA2等加密认证机制的模式下需要设置局域网密码,而在开放(不加密)模式下就不需要设置密码。设置完毕后开启WiFi热点,等待客户端设备的加入。客户端用于发送文件,它首先搜索WiFi 热点,获取服务器热点的BSSID,使用该BSSID 关联服务器热点加入局域网。如果是在WPA2 等加密认证模式下,还需要事先已知服务器热点的局域网密码。接下来热点对发送方设备进行认证,使用DHCP 为其分配动态IP 地址。发送方设备在获取到本机IP 地址后,根据所在局域网IP 地址前缀,在其后改为“.1”,即获知服务器热点的IP 地址。下面既可通过Socket 连接客户端和服务器,其中服务器所在端口号可以用硬编码写在程序中,双方事先都已知。服务器响应客户端连接,创建线程接收文件;客户端在建立Socket 连接后向服务器分包发送要传输的文件,服务器再统一将收到的各包写入相应文件。采用传统WiFi 方式传输文件的具体流程如图2 所示。其中,服务器端作为接收方,需要向系统底层注册服务器监听机制,并且需要先于发送方开启服务等待连接,维护这个监听等待线程也会消耗一定的系统资源。
图2 采用传统WiFi方式传输文件的流程
NFC 技术在Android 上的实现可以理解为一种“推送(Push)”机制:通过2 台NFC 手机设备触碰将一台手机上的数据发送给另一台手机,发送方程序在发送的数据中加入接收方程序向系统注册的标识,接收方在接收到数据后则启动向系统注册特定标识的程序用于处理这些数据。本文利用NFC 触碰传递用于建立WiFi 连接的参数。
上文提出了2 种使用NFC 技术的改进方案, 但Android 系统并不支持在程序中使设备加入使用WPA2 等加密认证机制的网络,只提供了对于搜索到的热点使用手动输入的密码加入到该局域网的方式。由于其在SDK 接口中隐藏了相关函数,甚至系统底层相关类也设置了保护不可被程序调用,因此本文未能在Android 系统上实现这种方案。对于方案(2),即在应用层使用AES 算法对要传输的数据进行加密,可以在Android 系统中实现,这时可设置热点的安全性为开放模式。这种NFC+WiFi 传输方式在Android系统上的具体设计如下:
数据发送方将自身设备的MAC 地址、随机生成的服务端口号以及随机生成的用于AES 加密的128 bit 密钥通过NFC 触碰过程传递给数据接收方。然后发送方设备作为服务器,设置热点名称,使用设备的MAC 地址作为热点的BSSID,在开放模式下开启WiFi 热点。此后,接收方作为客户端加入到该热点的局域网中,然后使用Socket 在客户端和服务器间建立连接。这个过程与上述的传统WiFi 传输加入局域网和建立Socket 连接过程相同,这里不再赘述。需要注意的是,数据发送方和接收方作为服务器(热点设备)和客户端(关联设备)的角色与传统WiFi 传输正好相反。对于传输文件的过程,这里需要在传统WiFi 分包传输的基础上,在发送方对每个数据包使用AES 密钥加密,在接收方则使用AES 密钥对收到的数据包解密。在后面的测试结果中可以看到, 加密和解密过程会增加一定耗时。采用NFC+WiFi 方式加密传输文件的具体流程如图3 所示。
图3 采用NFC+WiFi方式加密传输文件的流程
本文设计的NFC+WiFi 传输方式解决了传统WiFi 传输建立连接过程耗时和用户体验度降低问题,同时避免WiFi 热点长时间开启和接收方开启等待连接的监听线程,也可以降低系统功耗和资源(处理器、存储等)消耗。在这种方式下,发送方作为Socket 服务器可以由发送方NFC传递数据成功的反馈消息来启动其监听线程;而接收方则作为客户端,通过传递获取的发送方设备地址去建立连接。形象地说,由于服务器方的改变,传输数据的过程由原来向服务器“上传”变为从服务器“下载”,这样就通过NFC 的“推送”机制避免了传统WiFi 传输的“等待连接”模式。
4.2 系统性能测试及结果分析
本文在系统中实现了以NFC 触碰交换参数为WiFi 传输建立连接的NFC+WiFi 传输方式,并实现了传统WiFi 传输中采用设备作为WiFi 热点的传输方式,下面就对这2 种方式建立设备连接耗时、传输不同大小文件耗时两方面进行测试,并对结果加以分析。
测试使用的2 台样机分别为Google Nexus S(CPU 主频1024 MHz,内存512 MB RAM)和三星Galaxy Nexus(CPU主频1 228 MHz,内存1 GB RAM),并分别配置Android 4.0系统。
首先对使用NFC 为WiFi 传输建立连接方式和传统的WiFi 传输连接方式所用时间进行对比。为减小每次测试中设备间触碰、手指点击发送等动作造成时延不同而产生的误差,以及所处系统环境中其他未知事件的干扰,进行了30 组测试并取其平均值,如表1 所示。其中,连接过程包含加入到热点设备的局域网和建立网络层Socket 连接2 个过程。由于传统WiFi 方式需要在搜索热点后选择服务器热点加入到局域网中,而NFC 触碰方式是热点传递给关联设备其BSSID 等相关信息,避免了关联设备搜索WiFi 热点信号的过程。
可以看出,后者比前者节省约一半时间。因此通过对表1 的结果分析可以得出结论:使用NFC 触碰建立连接的方式耗时要明显少于传统WiFi 搜索热点连接方式的耗时,采用这种方式可以缩短整体传输用时,提高传输过程中的用户体验。
对在应用层不加密和使用AES 算法加密2 种传输方式传输不同大小文件耗时情况进行对比,分别选取手机设备中典型文件类型的文件,包括2 KB 大小的文本、95.76 KB的图片和3.68 MB 的音频作为测试用例,进行10 组测试取其平均值,如表2 所示。
由表2 可以看出,各种传输方式接收方比发送方耗时都要长很多。这是因为发送方是从文件中读,向Socket 文件流中写,并在设备底层逐渐封包向接收方发送,期间不存在阻塞问题。而接收方要循环等待,每次从设备底层接收到的包解析而成Socket 文件流中逐步读到内存缓冲区,再写入要存入的文件,直到读完所有文件流。其中循环等待、判断文件流结束等过程都增加了耗时,另外缓冲区大小的设置可能成为效率瓶颈。而对于使用AES 加密传输方式来说,接收方在每次从Socket 文件流中读取数据后同步进行AES 解密处理,而解密过程比读取数据更耗时。
此外,通过对表2 的对比可以发现,在应用层使用AES加密要比不加密所用时间长,对于大文件的传输,加密所用时间带来的耗时更加明显。当然在WiFi WPA2 加密认证模式下即使在应用层不加密,也会由于底层会对传输数据的加密增加一定耗时,但不会比在应用层通过AES 加密的耗时多。在应用层对数据进行AES 加解密的处理,会在一定程度上加重接收方的负担,以至于对大文件难以处理解密与接收速度的匹配。从这一点来看,对于并非十分重要却很大的数据文件,可以只在加入局域网和建立Socket 连接阶段利用NFC 触碰传递参数引导建立连接,代替传统WiFi 搜索后发送请求建立连接;而在数据传输阶段仍采用不进行应用层加密的明文传输。但这样数据就易于被第三方截获,有时不得不在传输速度和数据安全性间作出一些权衡。
当然较好的实现方案仍是本文前面提出的使用NFC 传递WiFi 局域网密码建立连接的方案。这种情况下局域网底层使用完善的WPA2 协议加密认证,则应用层就无需使用AES 等算法加密数据,而WPA2 采用的高效加密算法以及底层操作的高效性会使其比在应用层单独使用AES 加密有更快的传输速度,可以同时兼顾传输速度和安全性。
5 结束语
本文提出一种使用NFC 为WiFi 传输建立连接以保证传输的安全性,同时减少整个传输过程耗时的方案,并设计和实现了使用该方案的数据传输系统,对该方案传输性能加以测试,与传统WiFi 传输通过搜索热点连接设备方式进行对比。结果表明,对于一般文件的传输其总体性能较传统WiFi 传输方式有所提升,解决了传统WiFi 传输中连接过程时间长、操作复杂、功耗大等问题,基本可以满足用户安全传输的需要。但在应用层进行加解密的方式在传输大数据量文件时存在时延。本文提出的第1 种调用系统底层功能随机生成并安全传递无线局域网密码的方案实现较为复杂,因此,本文设计的系统并未采用该方案,但可以预见该方案能更有效地解决上述问题,提升传输过程总体效率和安全性,因此,下一步工作将研究并实现该方案。