基于NFC近场通信的WiFi传输连接方案介绍 - 中国一卡通网
用户名密码 [免费注册] [找回密码] 推广技巧 发布求购 建商铺  发产品  会员体制比较  
 

基于NFC近场通信的WiFi传输连接方案介绍

来源:中国一卡通网  作者:不详  发布时间:2014-10-16 17:49:28  字体:[ ]

关键字:NFC  WIFI  传输  连接  蓝牙  

摘   要:本文通过阐述NFC 技术和WiFi 技术特点,和对传统WiFi 传输的配对过程、安全认证、加密机制以及上层使用Socket 建立连接过程的分析,提出2 种使用NFC 为WiFi传输建立连接的方案,并在Android 系统上实现其中一种较易实现的方案。

  虽然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 所示。其中,服务器端作为接收方,需要向系统底层注册服务器监听机制,并且需要先于发送方开启服务等待连接,维护这个监听等待线程也会消耗一定的系统资源。

  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 所示。

  本文设计的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 种调用系统底层功能随机生成并安全传递无线局域网密码的方案实现较为复杂,因此,本文设计的系统并未采用该方案,但可以预见该方案能更有效地解决上述问题,提升传输过程总体效率和安全性,因此,下一步工作将研究并实现该方案。

更多

新闻投稿合作邮箱:yktchina-admin@163.com    字体[ ] [收藏] [进入论坛]

推荐文章

论坛热帖