关于蓝牙技术安全机制的分析.doc

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

摘要:蓝牙安全问题是除价格之外直接制约蓝牙技术广泛应用的瓶颈之一,文章通过对其安全结构、安全模式、安全级别、链路层安全参数、鉴权、密钥管理、加密等分析,讨论蓝牙安全体系中存在的一些问题,旨在探讨蓝牙技术在应用过程中如何能够实现一个真正的无电缆连接、方便快捷、安全可靠的通信环境。关键词:蓝牙;安全;鉴权;加密蓝牙提供了一种短距离的无线通信标准,解决了小型移动设备间的无线互连问题。它以规范的公开性、频带的无须授权性等优点而越来越受到人们的重视。蓝牙技术的应用范围也已经从替代各种移动信息电子设备之间的电缆,向信息家电、电子商务、汽车、航空、医疗、交通等更加广阔的领域中拓展。同时,由于蓝牙工作在ISM214GHz开放频段上,很容易受到干扰。因此,它的安全性就显得尤为重要。为了保证通信的安全,蓝牙系统必须在链路层和应用层上提供安全措施。1蓝牙安全机制的框架1.1蓝牙的安全结构图1蓝牙安全体系结构蓝牙的安全体系结构由用户接口、应用程序、RFCOMM或者其他复用协议、L2CAP、链路管理器/链路控制器、安全管理器(SecurityManager)、通用安全管理实体、HCI、服务数据库、设备数据库、注册等模块组成。其安全体系结构如图1所示。其中实线为“询问”过程,虚线为“注册”过程。该体系结构各个部件的功能如下。其中安全管理器是蓝牙安全体系结构中的关键部件。它主要完成以下六种功能:存储和查询有关服务的相关安全信息;存储和查询有关设备的相关安全信息;回应来自协议实体或应用程序的访问请求(允许或拒绝);在连接到应用程序之前进行认证或加密;通过初始化或处理ESCE(外部安全控制实体,例如设备用户)的输入来建立设备级的信任关系;初始化呼叫及查询由用户输入的个人标识码PIN,PIN输入也可以由应用程序来完成。服务数据库为每个服务提供相关的安全入口。在起始阶段存储在非易失性存储器NVM或服务寄存器中。信任设备必须储存在设备数据库NVM中。如果入口因故而被删除,那么设备就看成未知设备,而且被设为默认的访问级别。用户接口其功能是为实现授权而产生的用户交互对话,如输入PIN等,如果安全管理器需要PIN,可以使用对ESCE的调用,也可以直接从链路管理器中取得。RFCOMM或其它复用协议是需要对服务访问作决定的其它复用协议(如RFCOMM)以与L2CAP同样的方式查询安全管理器,但有另外的附加注册过程,它允许对连接到复用协议本身的连接去设置访问策略。L2CAP接口要求安全管理器在导入和导出请求状态下有访问数据库的权利。HCI/链路管理器的接口模块可实现以下功能:①鉴权请求;②加密控制;③远程设备的名称请求;④在链路层设置加密策略;⑤在链路层设置鉴权策略。有一些注册过程是必须的,如:有安全级别和协议栈信息的服务、在L2CAP层之上的复用协议。注册由负责在BT协议栈中设置路径的实体完成,它的具体实现取决于注册的实体,如果没有注册,就使用缺省设置。该体系结构指出何时关联用户(如输入PIN),以及为了支持预期的安全检验功能底层的蓝牙协议需要执行的动作。蓝牙安全体系建立在L2CAP层之上,它可以实现对服务的选择性访问。利用中央安全管理器很容易实现灵活的访问机制,因为协议及其它实体的接口很简单,并且它们被局限于请求/答应和注册这样一种过程,访问控制封装在安全管理器中。因此,实现更为复杂的访问不会影响其他部分的实现。在该体系结构中,访问一个信任设备的信息流,连接的建立过程依次为:(1)HCI向L2CAP发送连接请求。(2)L2CAP请求安全管理器给予访问权限。(3)安全管理器查询服务数据库。(4)安全管理器查询设备数据库。(5)如果有必要,安全管理器执行鉴权和加密过程。(6)安全管理器给予访问权限。(7)L2CAP继续建立连接。1.2蓝牙的安全模式蓝牙规范中定义了三种安全实现模式:·安全模式1:无安全机制·安全模式2:服务级安全机制·安全模式3:链路级安全机制安全模式1:无任何安全需求,无须任何安全服务和机制的保护。此时任何设备和用户都可以访问任何类型的服务;其典型的应用有:电子名片(vCard)的交换、电子日历(vCalendar)等数据传输。安全模式2:对系统的各个应用和服务需要进行分别的安全保护,包括授权访问、身份鉴别和加密传输。加密和鉴别发生在逻辑链路控制和适配协议(L2CA信道建立之前)。安全模式3:对所有的应用和服务的访问都需要实行访问授权、身份鉴别和加密传输。这种模式的鉴别和加密发生在链路配置完成之前。113安全级别(1)设备的安全级别蓝牙技术标准为蓝牙设备定义了三个级别的信任等级:·可信任设备:设备已经通过鉴权,存储了链路密钥,在设备数据库中标识为“可信任”,可信任设备可以无限制的访问所有的业务;可信任级别可以得到大多数服务。·不可信任设备:设备已通过鉴权,存储了链路密钥,但在设备数据库中没有标识为“可信任”,不可信任设备访问业务是受限的。·未知设备:无此设备的安全性信息,为不可信任设备。(2)服务的安全级别蓝牙技术标准定义了三种服务安全级别:需要授权与鉴权的服务、仅需要鉴权的服务、对所有设备开放的服务。一个服务的安全等级由以下三种属性决定,它们保存在服务数据库中。·需授权———只允许信任设备自动访问的业务(例如,在设备数据库中已登记的那些设备)。未被信任的设备需要在授权过程完成后才能访问该业务。授权总是需要鉴权过程来确认远端设备的身份。·需鉴权———在连接到应用程序之前,远端设备必须接受鉴权。·需加密———在允许访问服务之前,链路必须进入加密模式。另外,蓝牙还定义了缺省安全级别,用于提供继承应用的需要。当处在最低安全级别时,任何设备都可以得到服务。当处于最高安全级别时,服务需要授权和鉴权,这时可信任设备可以访问服务,但不可信任设备则需要手工授权,方可访问服务。2链路层安全体系211链路层安全参数在链路层中使用了四种不同的实体来保证安全。每一个用户有一个唯一的蓝牙设备地址(BD2AD2DR)、两个加密密钥和一个随机数(每交易一次,变化一次)。这四个实体及其长度如表1所示。表1链路层的实体及其长度实体长度蓝牙设备地址(BD2ADDR)48bit秘密的认证密钥128bit秘密的加密密钥(比特长度可变)8~128bit随机数(RAND)128bit蓝牙设备地址(BD2ADDR):是一个48位的IEEE地址。对于每个蓝牙设备单元来说,这个地址是惟一的、公开的,通过MMI(人机接口交互)或者查询过程得到。认证密钥:认证密钥在设备初始化期间生成,它由两个或多个蓝牙网络成员共享,用于认证过程,同时也作为生成加密密钥的参数。蓝牙采用了一种功能强大的现代加密算法(SAFER+)来生成128bit的认证密钥。认证密钥由一个随机数、PIN码的低8位及BD2ADDR生成。加密密钥:通常在认证期间由认证密钥生成,其长度根据算法要求选择8~128bit之间的数(要求是8bit的整数倍)。当前给出的64bit加密长度足以满足大部分用户的保密要求。加密密钥的长度由厂商预先设定,用户不能更改。为防止用户使用不允许的密钥长度,蓝牙基带处理器不接受高层软件提供的加密密钥。使用加密方式进行点对多点的通信时,主设备可以使用不同的加密密钥与每一台从设备进行通信。随机数(RAND):随机数RAND由蓝牙单元内随机过程或者伪随机过程生成,其长度为128bit,它不是静态参数,经常会发生变化。2.2鉴权(Authentication)鉴权是为了防止非法访问数据,防止伪造合法用户。鉴权的作用有两个:一是进行身份认证;二是确认参数传递是否成功。蓝牙鉴权有一个先决条件,那就是鉴权单元和被鉴权单元之间链路已经有链路字并且安全。蓝牙的鉴权方案采用询问与响应策略。协议检查双方是否有相同的密钥,如果有则鉴权通过。在鉴权过程中生成一个鉴权加密偏移值ACO,并存储在两个设备中用于以后加密密钥的生成。在方案中,校验者对于申请者是否能够根据认证算法E1认证随机数AU2RANDA,并返回认证结果SERS,进行校验。如图2。图2询问—响应策略由图2可知:E1算法输入参数包括随机数AU2RANDA及申请者的蓝牙设备地址BD2ADDR,使用该地址可以防止简单的反射攻击,由单元A和单元B共享的密钥为当前链接字。鉴权方案按以下步骤进行:①被鉴权设备A向鉴权设备B发送一个随机数供鉴权。②利用E1鉴权函数,使用随机数、鉴权设备B的蓝牙地址和当前链路密钥匹配时得出响应。③鉴权设备B将响应发往请求被鉴权设备A,设备A而后判断响应是否匹配。哪个设备将被鉴权由应用决定,这意味着被鉴权设备不一定是主设备。鉴权可以单向进行,也可以互相鉴权。某些应用只要求进行单向鉴权。而在点对点对等通信中,可能更希望互相鉴权。如果鉴权失败,则必须经过一段时间(即等待时间)后才会允许新一轮鉴权。这样可阻塞一些恶意的试验性攻击。213密钥管理为了确保数据的安全传输,蓝牙系统定义了几种密钥,其中最重要的密钥是链路密钥,它用于BT两个设备的鉴权。使用链路密钥可以得到加密密钥,它可以保护报文数据并对所有的新传输重新生成密钥。对于PIN来说,虽然它不是密钥,但可以用来识别蓝牙设备。(1)链路密钥链路密钥是一个128位随机数,为通信双方或多方共享,构成多方安全通信的基础。它用于两个蓝牙设备之间的鉴别。针对不同应用,有四类链路密钥:·单元密钥KA:KA在单元A中生成。它的存储只需要较少内存的蓝牙单元,用于设备允许大量的其他用户访问且设备存储空间小的情形。·联合密钥KAB:KAB由单元A和单元B的信息生成。每一对新单元组合均需要生成新联合密钥。它用于安全要求高且需要较大存储空间的设备间。·临时密钥Kmaster:此密钥在主设备需同时向多个从设备传输数据时使用。在此会话过程中,它将临时替代原有的链路密钥。·初始化密钥KINT:该密钥在初始化过程使用。它用于保护初始化参数的传输。(2)加密密钥由当前的链路密钥推算而来,每次需要加密密钥时它会自动更换。之所以将加密密钥与鉴权密钥分离开,是因为可以使用较短的加密密钥而不减鉴权过程的安全性。(3)PINPIN码是一个个人识别码,它可以是蓝牙设备提供的一个固定码,也可以由用户任意指定。但两个设备中的PIN码必须匹配。在两个设备中,采用用户指定的PIN码,比采用设备自身提供的PIN码更安全。即使采用固定的PIN码方式,也应该允许能够改变PIN码,以防止获得该PIN码的用户重新初始化设备。如果找不到可用的PIN码,则使用缺省值0。短PIN码可以满足许多具体应用的安全性要求,但存在不确定的非安全性因素;过长的PIN码则不利于交换,需要应用层软件的支持。因而,在实际应用中,常采用短的数据串作为PIN码。其长度一般不超过16字节。在应用层中,用户可以使用个人标识码PIN来进行单双向认证。214加密只有至少进行了一次成功的鉴权活动之后,才可以进行加密。蓝牙系统加密算法采用E0流密码方式,系统地对每个数据包的净荷进行加密。E0将对每一有效载荷(净荷)重新同步。流密码系统E0由三部分组成:第一部分执行初始化工作,生成有效载荷字(即净荷密钥);第二部分生成字流位;第三部分完成加密和解密。有效载荷字的生成非常简单,它将输入位按一定的顺序进行组合,然后将它们转移到用于字流发生器的四位FLSRs(线形反馈移位寄存器)中。有几种加密模式可供使用(取决于设备使用半永久链路密钥还是主密钥),如果使用了单元密钥或者联合密钥,广播的数据流将不进行加密,点对点的数据流可以加密也可以不加密。如果使用了主密钥,则有三种可能的模式:·加密模式1:不对任何数据流进行加密;·加密模式2:点对多点(广播)数据流不加密,点对多点数据流用临时密钥Kmaster进行加密;·加密模式3:所有数据流均用临时密钥Kmaster进行加密。由于密钥长度从8比特到128比特不等,信息交互双方必须通过协商确定密钥长度。在协商中,既可以自己提议,也可以拒绝他人的建议。在每个应用中都定义了最小的密钥长度,假如两个参与设备的最小密钥长度得不到满足,应用程序就会中断协商,加密就不能使用。这就可能防止了某些非法用户用

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功