一种蓝牙配对策略的改进方法王昭顺,楚恩来(北京科技大学信息工程学院计算机系,北京,100083)摘要:蓝牙已成为当前非常流行的短距离无线通信方式。蓝牙配对能够保证两个设备之间的认证和安全连接的建立,但是,在配对过程中会受到多种攻击,例如:中间人攻击。为了提高蓝牙配对策略的安全性和易用性,本文对传统蓝牙配对过程进行了介绍,通过分析针对传统配对的攻击方式,给出一个利用基于椭圆曲线的Diffe-Hellman密钥交换体制和蓝牙带外传输机制的配对策略,既简化了蓝牙配对过程,又增加了蓝牙通信安全性。关键词:蓝牙;配对;安全性;中图法分类号:TP393文献标识码:AAnimprovementforBluetoothpairingCHUEn-lai1,WANGZhao-shun2(DepartmentofComputerScience,SchoolofInformationEngineering,UniversityofScienceandTechnologyofBeijing,Beijing,100083)Abstract:Bluetoothhasbecomeapopularwirelesscommunication.Bluetoothdevicepairingenablestwodevicestoauthenticateeachotherandestablishasecurewirelessconnection.However,therearemanyattacksduringpairing,e.g.man-in-the-middleattacks.InordertoimprovetheusageandsecurityofBluetooth,Thispaperpresentsthetraditionalpairingprotocolandanalyzestheattacksagainstpreviouslypairing.Itprovidesastrategyofpairing,whichinvolveEllipseCurveDiffie-Hellmankeyexchangeprotocolandoutofbandcommunication.Notonlyitcansimplifytheprocessofpairing,butalsoimprovethesecurityofBluetooth.Keywords:Bluetooth;pairing;security;0引言蓝牙技术作为短距离、低功耗、低复杂度的连接手段,致力于将特定的移动电话、便携式计算机以及其他各种便携式通信设备在近距离内实现无缝的资源共享。蓝牙技术已获得了全球认可,它是当今市场上支持范围最广泛,功能最丰富的无线标准。蓝牙技术与其他无线通信技术一样,采用开放的信道作为通信介质,因此,蓝牙无线网络在安全性方面也面临各种威胁,例如假冒、窃听、非授权访问和服务拒绝。不同的安全威胁会给网络带来不同程度的破坏。蓝牙安全体系主要包括三方面的内容:密钥管理、认证和加密。整个安全系统依赖于用户的个人身份识别码(PersonalIdentificationNumber),简称PIN码。其长度为8—128比特。为了通过蓝牙建立连接,在第一次与对方设备建立安全连接时或者是链路密钥丢失时,需要双方设备提供各自的PIN码,完成设备间的认证,这个过程叫做配对。由于蓝牙无线通信技术需要安全保障,使得蓝牙设备在使用时需要配对来提高通信的安全性。蓝牙特别兴趣小组(BluetoothSpecialInterestGroup,简称SIG)给出的一项有关使用问题分布调查结果显示:39%的用户不知道如何将设备进入配对模式,24%输入的PIN码被拒绝,12%的设备没有被授权。这对蓝牙配对策略和安全性提出了新的要求,例如:简化配对过程(减少配对步骤、需要最小程度的用户干预、提高配对速度),提高蓝牙无线通信的安全。1传统蓝牙配对策略和安全隐患分析1.1传统配对策略本文的研究是基于蓝牙规范中定义的安全模式3,即在链路层使用蓝牙设备地址、用于认证的链路密钥、加密密钥、128比特的随机数四个实体来建立或维持蓝牙安全性的模式。其中,配对过程的认证方案采用“提问”/“应答”的方式。当一个设备发出请求,另一个设备收到后作出响应,配对就开始了,配对成功表示双方相互认证的成功,从而可以进行加密的数据通信。假设设备A为申请者,设备B为验证者,进行配对主要步骤可用下列过程简要描述:1)初始化密钥的建立:设备A初始化,产生一个随机数IN_RAND,并将这个随机数通过蓝牙信道传递给设备B。A,B分别利用函数E22生成初始化密钥Kinit,其中输入参数为申请连接的设备地址BD_ADDRa、PIN码,PIN码的长度,随机数IN_RAND。Kinit=E22(BD_ADDRa,PIN,PIN_Len,IN_RAND)2)验证方的验证:设备B生成鉴别随机数AU_RANDb,将其发送给设备A,设备A利用AU_RANDb,通过基于SAFER+128的认证函数E1,计算得出32比特的响应数SRES1,并将其发送给设备B。设备B同样利用认证函数E1计算得出32bit的响应数SRES1,比较两个SRES1是否一致,一致继续完成配对过程,否则配对失败。SRES=E1(Kinit,BD_ADDR,AU_RAND)3)申请方的验证:再进行反方向的认证,设备A生成鉴别随机数AU_RANDa,发送给设备B,B计算出SRES2,并将其发送给设备A。A比较自己计算得出的SRES2和设备B传来的是否一致,一致则配对成功,否则配对失败。同时保存在第二次生成SRES时计算出的一个辅助参数——96比特的鉴别加密偏移数ACO,作为输入参数用在生成加密密钥的算法中。至此配对过程完成。1.2传统配对的安全隐患分析传统蓝牙配对策略面临的安全挑战主要包括被动监听(利用监听的PIN码攻击)和主动控制(中间人攻击)两大类。被动监听是指第三方设备监测两个蓝牙设备之间的通信,通过逆向过程推导出双方使用的LinkKey。主动控制是指第三方设备直接充当信息的中转站,控制两个蓝牙设备的通信。1.2.1PIN码攻击蓝牙技术中在选定密钥长度一定的情况下,加密强度取决于PIN码,可见PIN码在蓝牙安全体系中的重要地位。在传统的配对过程中PIN码的选择一般有三种:①无PIN码:无安全性(无验证、无加密);②固定PIN码:有限安全性(通常为“0000”、“1111”或类似数字);③可变PIN码:最佳安全性(1至16位字母数字字符);这里对安全性相对较高的可变PIN码做安全分析。通过上文的分析可以看出,PIN码在链路密钥产生的过程中是一个重要的参数。但是PIN码在使用过程中会带来一定的问题。如使用较短的PIN码(一个典型的PIN是一个4位十进制数,用户甚至还会选择一些容易记忆的号码,如“1234”),这使得密钥空间只有10000个值,会成为穷举攻击的对象。由于蓝牙设备的地址是公开的,其它参数信息见表1,都是明文传送。只要攻击者对开放的蓝牙链路做监听,就能够容易的获得这些参数。当用穷举法猜到正确的PIN码时,攻击者通过E1算法很容易就可计算出链路密钥,安全的链路就会被攻击者攻破。如果选择较长的PIN码,如最长的128比特。将带来极大的不便,因为,每次配对时都需要输入PIN码来完成认证。表1配对参数表消息标号源目的消息长度备注1ABIN_RAND128位明文2ABLK_RANDa⊕Kinit128位明文,B收到消息后,解开得到LK_RANDa3BALK_RANDb⊕Kinit128位明文,A收到消息后,解开得到LK_RANDb4ABAU_RANDa128位明文5BASRES132位明文6BAAU_RANDb128位明文7ABSRES232位明文穷举猜测PIN码的步骤:1)列举出所有可能的PIN值,假定PIN码为4个十进制数,那么可能的PIN取值从0000到9999之间。2)按照顺序取PIN列表中的第一个值,并从监听两设备的蓝牙会话中取得消息IN_RAND,就可以通过公开的算法E22算法,计算得到Kinit。3)根据消息2和消息3,第二步得到的Kinit,反推计算出LK_RANDa和LK_RANDb(LK_RANDa和LK_RANDb是设备A,B生成的又一组随机数,在第一次认证时使用Kinit作为参数计算认证密钥,以后的认证过程使用由LK_RANDa,LK_RANDb计算得来的认证密钥Kab)。4)根据LK_RANDa和LK_RANDb以及两个设备的地址等信息,计算得到Kab。5)由Kab和消息4(AU_RANDa),计算得到SRES,并与信息5的SRES1比较。同样的,用Kab和AU_RANDb,计算得到SRES2,并与信息7进行比较。6)如果第五步的消息比较相等,则给定的PIN是正确的;如果不匹配,回到第二步,取PIN列表的下一个PIN,重复第二步后的步骤,直到找到个正确的PIN为止。由于配对完成后,接下来的通信不需要再进行交换PIN码的配对,而是直接进行双方认证,这时攻击者不能再监听获得所有的参数来达到攻击的目的。但是,由于蓝牙技术支持在一方设备丢失链路密钥的情况下发送LMP_not_accepted消息告知对方,可以重启配对过程,这一特点给了攻击者可乘之机。在此给出了三种方法实现重启配对过程获得所有参数:方法一,如果在设备A发送AU_RAND给从设备B后,攻击者立即发送伪造了的LMP_not_accepted消息给设备A,A误认为此消息是B发来,重新配对开始。方法二,攻击者在设备A向设备B发送AU_RAND前,伪造A向B发送IN_RAND消息。B误以为A丢失了链路密钥,于是迫使配对过程重新开始。方法三,设备A发送AU_RAND消息给设备B,并等待设备返回SRES。如果在A收到B返回SRES之前,攻击者仿造B向A发出一个随机的SRES,设备A将收到的SRES与设备自身计算的SRES进行比较,比较结果不一样,A于是重新要求认证,当认证失败次数达到一定数量时,配对过程会重新启动。1.2.2中间人攻击方式假设设备A和设备B之间存在着公共链路密钥,现在攻击者就可以对两个设备进行攻击,如图1所示:设备B攻击者设备APairingAU_RANDaPairingConnectReqConnectReqLMPAcceptLMPAcceptAU_RANDaSRES1SRES1AU_RANDbAU_RANDbSRES2SRES2CompleteCompleteCompleteComplete图1中间人攻击1.攻击者假冒A和B,向A、B分别发送Connection_Req命令,A、B分别用LMP_Accept来应答请求,建立连接。2.A向攻击者发送随机数AU_RANDa来要求验证。3.攻击者向B转发A发送给它的随机数AU_RANDa要求B进行验证。4.B产生验证码SRES1发送给攻击者。5.攻击者把B产生的验证码SRES1转发给A。6.A通过计算SRES1,验证正确,攻击者通过A的验证。7.同样通过SRES2的验证正确,攻击者通过B的验证。这样攻击者在不知道设备A和设备B公共链路密钥的情况下冒充设备通过了验证,可以读取或篡改双方设备传递的信息。2改进配对策略的研究和实现2.1概述本文对传统配对过程进行改进,给出一种易用性强、安全性高的配对策略,来满足人们对蓝牙安全通信的需要。在易用性方面我们采取的措施是:不用输入PIN码,尽量减少用户对配对过程的干预;安全性方面采用的措施是:利用基于椭圆曲线的Diffe-Hellman密钥交换和蓝牙带外传输机制,并使用了两次认证的方式,防止受到上文中阐述的攻击方式的攻击,实现安全配对。2.2改进配对的过程实现配对过程包括三个阶段:公钥交换、第一次认证、第二次认证。假设设备A为申请者,设备B为验证者进行配对。2.2.1公钥交换1)在启动配对过程之前,确保蓝牙设备A是初始化过的,设备A、B生成各自的ECDH(EllipticCurveDiffie-Hellman)密钥对(SKa,PKa)、(