APP下载

基于Android移动端的应用程序与蓝牙模块间数据通信研究

2019-09-10张漪张珊昝丽霞曾孟佳黄旭

现代信息科技 2019年8期

张漪 张珊 昝丽霞 曾孟佳 黄旭

摘  要:无线传输数据方式的发展代替了早期的串口通信,它包括点对点传输、蓝牙、Wi-Fi等。本文主要介绍蓝牙这种无线连接方式、蓝牙传输过程中存在的问题以及解决方法。一个蓝牙模块中集成了蓝牙芯片,能够在近距离内发送接收无线电信号,故能够起到信息传输的作用。这是较好的信息交流方式,它凭借功耗低、设备成本低、传输距离近的优点在数据传输中得到了广泛的应用。本文对于Android移动端的应用程序与蓝牙模块间数据通信传输进行研究,寻找一种简单便捷安全的通信方式。

关键词:蓝牙技术;Android移动端;安全通信传输

中图分类号:TN925  文献标识码:A  文章编号:2096-4706(2019)08-0056-04

Abstract:The development of wireless data transmission has replaced the early serial communication,which includes point-to-point transmission,Bluetooth,Wi-Fi and so on. This paper mainly introduces Bluetooth,the wireless connection mode,the problems in the process of Bluetooth transmission and the solutions. Bluetooth chip is integrated in a Bluetooth module,which can send and receive radio signals in close range,so it can play the role of information transmission. This is a better way of information exchange. It has been widely used in data transmission because of its low power consumption,low equipment cost and close transmission distance. This paper studies the data communication transmission between the application program of Android mobile terminal and Bluetooth module,looking for a simple,convenient and secure communication mode.

Keywords:Bluetooth technology;android mobile terminal;secure communication transmission

0  引  言

蓝牙技术是一种无线传输技术,适用于短距离范围内的通信传输。通过中间协议,实现蓝牙在不同设备端口的传输,蓝牙相对于Wi-Fi、4G等传输技术而言,具有低功耗、传输速度快、传输方便等特点,其采用的跳频扩频序列具有很强的抗干扰能力,适用于需求高的场合。最主要的一点是蓝牙通信传输时在后台运行保持信息通信,不需要人为建立通信过程[1]。于2010年提出的蓝牙4.0是更进一步的蓝牙技术,将经典蓝牙、高速蓝牙以及蓝牙低功耗结合在一起[2]。经典蓝牙用于信息的交互,在拥有蓝牙接口的设备进行连接传输;高速蓝牙用于高速数据交换,能够实现在不同设备间进行传输。蓝牙低功耗传输数据时保持较低的带宽的较低的功耗[3]。但是在传输的过程中还存在一些安全因素。如蓝牙的认证基于设备而不是用户,当设备丢失时,仍可以进行通信,这会对用户产生一定的损失。又如PIN码的长度问题,短的容易受到攻击,长的不便于记忆;蓝牙配对的密钥安全问题等。另外,需要考虑的是通过蓝牙进行传输时要遵守哪些协议,一些协议是所有的传输过程都要遵守的,一些是根据具体的传输而定,协议的选择至关重要。要进行安全快速的蓝牙传输,需要解决上述问题,针对以上提出的一些问题以及潜在的其他的问题,我们做了一系列的研究,包括传输过程、安全问题以及解决方案等。

1  传输過程

蓝牙手机连接主要分为设置蓝牙、搜索蓝牙、连接蓝牙、传输过程四个部分,如图1所示[4]。

1.1  设置蓝牙

本文采用蓝牙4.0版本,在3.0版本的基础上,它涵盖了蓝牙技术、高速技术、低功耗技术。使用时更省电、成本低、无线传输距离远,可广泛应用于多种领域,是较好的选择。蓝牙模块可以使用USB-TTL连接电脑,使用串口调试软件进入AT模式进行基本的参数设置[5],如蓝牙名称(CSBLYMK)、模式、匹配密码(第一次连接需要输入密码“1234”)。蓝牙有两种打开方式:请求打开蓝牙,用户同意;后台代码的编写,自动打开蓝牙。

1.2  搜索蓝牙

在Android端需打开蓝牙的权限,允许设备可被周围其他设备发现,并开始搜索蓝牙。此过程基于蓝牙芯片的功能——在近距离内发送和接收无线电信号[6],进而找到其他蓝牙。此过程需设置一个终止条件,避免一直搜索,造成资源浪费。

蓝牙主端设备发起呼叫,先进行查找,发现周围可被查找的设备。主端设备找到从端蓝牙设备后,与从端蓝牙设备进行配对,此时需要输入从端设备的PIN码,也有设备不需要输入PIN码。

1.3  蓝牙连接

配对是两个设备之间建立连接的过程。此期间两个设备交换链路密钥,链路建立成功后,主从两端之间即可进行双向的数据或语音通讯确保可靠传输,此后自动连接。在传输之前要选择传输协议,根据传输方式的不同分别选择ASCII码协议和16进制协议[7]。本文主要介绍ASCII码协议,在传输的过程中使用二进制,符合计算机的存储方式,简单快捷。

1.4  传输过程

基于蓝牙技术的无线数据传输过程主要通过传输层协议管理,这层负责蓝牙设备和对方位置的确认,以及建立和管理蓝牙设备之间的物理与逻辑链路[8]。在传输时可以将数据进行分组,可以提高传输的效率、系统的抗干扰能力等。在传输时,两个手机的蓝牙建立连接后,数据进行传输,对接收的信息进行储存[9],然后将收集的信息进行监控,根据系统中设置规律的规模,对蓝牙设备传输的数据进行扫描和过濾,当数据能够符合设置的规则时,才可以通过扫描。确保了传输的有效性和安全性。

2  蓝牙传输的安全性分析

在传统信息传输中所存在的安全问题,同样也存在于蓝牙通信传输中。其安全问题会给信息传输造成不同程度的破坏,轻则数据传输受阻,重则蓝牙无线网络传输瘫痪。

2.1  蓝牙的安全问题

蓝牙认证问题。蓝牙身份认证的实质是与设备相关的设备认证,而并非涉及到使用者的身份信息认证。[10]身份认证的简单意味着当使用者的设备丢失时,其他人也可以使用该设备进行身份认证,会造成使用者设备的信息泄露。若设备被不法分子捡到后,对使用者的损失不可估量。

蓝牙PIN码的长度问题。蓝牙设备之间的配对密码即蓝牙的PIN码,而蓝牙的安全性依靠于PIN码的安全性。使用者在设置PIN码的时候通常会为了方便记忆而选择较短的PIN码,简单短小的PIN码更容易被破译,受到攻击的危害性也更大。[11]在第一次连接时需要输入PIN码,只有双方设备输入的PIN码相同时才能连接,之后的连接则不需要输入PIN码。

蓝牙设备的配对问题。查找相对的蓝牙设备,配对时需要输入密钥,只有输入的密钥正确时才能完成配对。[12]若匹配的蓝牙设备不安全或者密钥加密不安全,那对信息的传输也会产生威胁。

2.2  网络传输面临的安全问题

非法窃听问题,即非法使用者监听蓝牙传输的无线媒介信道。[13]当重要的传输信息被窃听,而使用者不知,所形成的危害便可想而知了。

非法访问问题,即非法使用者假装成合法使用者对网络上的资源进行访问。这类非法访问的行为通过网络安全中的漏洞对重要信息进行破坏,使合法使用者无法正确获得网络信息。

耗能攻击(又称能源消耗攻击)。蓝牙设备在不传输数据的时候为了节约能量,会进入休眠的状态。耗能攻击针对蓝牙设备的这一状态,不断发送信息请求,破坏休眠状态,从而使蓝牙设备耗能速度加快。[14]

3  解决方案

3.1  蓝牙方面的安全问题

蓝牙协议栈和安全体系如图2所示,从应用程序级安全和链路级安全进行描述。

在应用程序级安全模式中,蓝牙的安全结构[15]主要部件是安全管理器,其主要功能有关于存储设备和业务等的安全信息存储、对来自不同途径的访问请求进行响应、连接前的强制执行与加密、初始化或是处理来自外部安全实体的输入以建立稳定信任关系、初始化信任关系并查询相应用户的PIN(个人识别码)等。也正是因为安全管理器的作用,使得用户接口设计更加灵活,可以避免和较低层的通信协议、逻辑链路控制与适配协议等多种复杂协议直接交互。这样的用户体验和用户设计更加灵活便捷,同时安全管理器的强大功能令应用程序级更加安全。

链路管理连接的主要流程:链路控制器对设备进行查询、寻呼、扫描、错误处理等工作;逻辑链路控制、适配协议等上层协议提供复用、分组、重组的功能,可以在蓝牙网络中实现信息的交换。

和任何无线技术一样的是,蓝牙通信比较容易受到各种威胁和损耗,又因为蓝牙技术应用于较多场景或设备,导致蓝牙更加容易受到无线链路威胁和自身漏洞的影响甚至是攻击。因此,蓝牙技术标准规范定义了四种安全模式[16],提供不同方式、不同程度的保护措施:

安全模式1:蓝牙设备屏蔽所有链路级安全机制,即无安全模式;

安全模式2:提供业务级的安全机制,其中访问的安全策略较灵活,执行强制业务级安全;

安全模式3:提供链路级的安全机制,在较低层协议对所有建立连接的应用程序强制执行链路级安全。蓝牙设备在链路完全建立之前启动安全过程,在此模式下运行的蓝牙设备为设备的所有连接授权认证和加密。该模式为所有上层应用提供公共的安全措施,但是缺少了一定的灵活性;

安全模式4:使用安全简单配对策略,其中在链路密钥生成时,椭圆曲线密钥协议取代了过时密钥。

为实现安全功能,可以采用一个安全管理器或其他类似逻辑设备,将传输、设备等所有重要信息保存在安全架构的设备数据库中。此外,蓝牙技术标准还定义了针对业务的三种安全级别,包括需要授权与鉴权的业务、仅需鉴权的业务和对所有设备均开放的业务,以不同级别来定义其属性。

3.2  认证问题

在蓝牙安全的认证[8]问题上,要知道蓝牙核心协议只能认证设备,大体上,应用蓝牙安全架构使用安全管理器允许应用程序执行更精细的安全策略,相应具体的链路层控制操作可对应用层实施安全控制。由此可知,借助应用层可以进行基于用户的认证、访问控制、授权等操作。

另外,规范中对于拒绝服务攻击的防护没有完善,BLE的应用受到一定程度的威胁。连接过程中会受到Dos攻击,导致连接报文缺乏认证,这时攻击者会采用发送虚假连接报文的方式,来大大延长连接建立时延,使得破坏BLE的优良特性。

针对上述的问题,有关文献提出利用设备共享的认证密钥的方式[17]进行挑战应答,从而使得连接报文快速认证。

3.3  PIN码的长度问题

通过上文对关于PIN码长度缺陷受到攻击的描述,可以知道PIN的安全性对蓝牙传输的安全性和稳定性有很关键的影响,其安全性取决于PIN码的复杂性[11],改善算法以抵御对PIN码的攻击,从而可知该条件是解决蓝牙安全问题的有效方法,下面的算法是在安全性最大的安全模式3的基础上实现的。

防御措施的算法思想可分为三部分:

第一步:当输入的PIN码不同且小于8位时,需将其修正为8位。注意,为避免不同长度的PIN码错误的配对,需要在用户输入PIN码之前就用修正算法为其修正;

第二步:取一定长度的当前时间段T=(系统时间st/当前时间段长度ct)的后两个字节;PIN=PIN(8Byte)^T;

第三步:将上步得到的PIN经过MD5算法之后可得32个16进制的字符串,同时取其中间16个字符作为新PIN的值,即算法E的最终输入参数。

通过上面三步的变换,就算是在用户输入的较短的PIN码的情况下也可以保证安全通信。因为在当前时间段ct的控制下,攻击者要破解异或后的PIN值、8BytePIN码、得到准确的当前时间段cs等才有可能会破解成功,而以现在的计算水平和破解水平来计算,只攻克8Byte就需要花费大概1个小时,这样攻击者就会很难获取到原始的PIN码。此外,即使攻击者知道使用MD5算法,也无法得到原始PIN,第三步的异或操作使得PIN成为16Byte的字母数字的组合,这样的PIN码的长度和复杂度都已经远远超过现在的攻击计算破解水平。

上述的算法大大提高了蓝牙传输的安全性,但是在特殊情况下,还存在一些不足,比如当两个设备可能因为当前时间段不同或找寻不到合适的时间段,就会引起配对失败。相应的解决方法就是调整有效时间范围和设置一定条件。

4  结  论

本文研究了无线传输中的蓝牙传输和传输过程中遵守的协议,重点是传输过程中的安全问题以及相应的解决方案。蓝牙作为一种便捷高速的传输媒介自被提出时起,很快就被世界范围的以无线通信、物联网、计算机等为发展方向的大规模的企业研究与推广应用,现阶段,经过技术的普及与市场的更迭,蓝牙技术已经应用于社会的各个方面,为各个国家创造了很大的社会财富,同时,它也是一直被改进,力求达到更高要求。通过解决传输过程中蓝牙的安全问题包括认证问题、PIN码的长度问题、蓝牙的设备配问题,确保传输过程更顺畅,更安全,提高传输速率。而在这个负责的网络传输和市场利润化的大环境中,安全问题不容小觑,如非法窃听、非法访问、耗能攻击等情况都存在着较大的潜在威胁,甚至是影响未来通信方向。考虑到传输过程的这些安全隐患,有效解决这些问题才能提供一个高效安全的傳输过程。当然随着各种技术的发展,存在着不可预估的风险,这样想来,蓝牙方面在发展过程中会出现更多的更有现实性的研究方向。

参考文献:

[1] 兆雪.蓝牙技术概况 [J].民办教育研究,2009(10):89-92.

[2] 梁泽宇.物联网中的蓝牙技术应用研究 [J].数字技术与应用,2018,36(8):65-66.

[3] 李鹏,杜明辉,于巍巍.基于智能移动终端及蓝牙的金属探测器的研制 [J].计算机工程与应用,2017,53(16):205-210.

[4] 邓俊波.手机+蓝牙模块的简单玩法 [J].电子制作,2015(4):63-67.

[5] 万燕,李丽丽.基于Android与BLE的蓝牙通信系统的实现 [J].科技创新与应用,2018(16):15-17.

[6] 罗富财.基于Android平台的蓝牙通信系统的研究与实现[D].保定:华北电力大学,2013.

[7] 周锋,吴频频,王素梅.一种基于蓝牙的数据传输方法及其应用 [J].河南科技,2018(14):27-29.

[8] 钱志鸿,刘丹.蓝牙技术数据传输综述 [J].通信学报,2012,33(4):143-151.

[9] 罗春娟.手机蓝牙文件传输机制的安全性分析 [J].电子技术与软件工程,2015(9):229.

[10] 迟晓燕.基于蓝牙的安全身份认证技术研究 [J].信息安全与技术,2011(11):11-13.

[11] 王丽美,费金龙,贺新征.防御蓝牙PIN码攻击的研究与实现 [J].计算机应用,2009,29(4):941-943+955.

[12] 柳杨才,朱卫国.蓝牙技术及其安全性 [J].计算机光盘软件与应用,2014,17(12):202-203.

[13] 彭会萍.蓝牙中的安全措施及加密技术 [J].甘肃科技纵横,2005,34(3):20-21.

[14] 丁伟雄,宋晓,杨定安.蓝牙技术的安全机制 [J].中国科技信息,2005(3):16-18.

[15] 周海刚,肖军模.蓝牙网络的安全威胁和安全技术 [J].电信技术,2002(12):22-24.

[16] 胡新和,杨博雄.蓝牙系统的技术特点与安全机制 [J].咸宁学院学报,2004,24(3):60-63.

[17] 王启林,李小鹏,郁滨,等.基于连接认证的低功耗蓝牙泛洪攻击防御方案 [J].计算机应用研究,2017,34(2):499-502+547.

作者简介:张漪(1997-),女,汉族,浙江嘉兴人,本科在读,研究方向:物联网工程应用;通讯作者:曾孟佳(1980-),女,汉族,湖北荆州人,计算机专业负责人,讲师,硕士研究生,研究方向:物联网工程应用及其智能算法。