蓝牙技术提供了一种短距离的无线通信标准,同其它无线技术一样,蓝牙技术的无线传输特性使它非常容易受到攻击,因此安全机制在蓝牙技术中显得尤为重要。虽然蓝牙系统所采用的跳频技术已经提供了一定的安全保障,但是蓝牙系统仍然需要链路层和应用层的安全管理。本文首先讨论无线网络的安全问题,然后介绍了在蓝牙系统中采用的安全技术。
一、无线网络中的安全问题
蓝牙技术可以提供点对点和点对多点(广播)的无线连接,采用蓝牙技术,多个蓝牙设备能够临时组构无线通信网,实现信息的交换和处理。这种无线网络的安全威胁来源于非法窃听、非授权访问和服务拒绝等,不同的安全威胁会给网络带来不同程度的破坏。
非法窃听是指入侵者通过对无线信道的监听来获取传输的信息,是对通信网络最常见的攻击方法。这种威胁源于无线链路的开放性,但是由于无线传输距离受到功率和信噪比的限制,窃听者必须与源结点距离较近。蓝牙技术标准建议采用较低的发射功率,标准通信距离仅有十米,这在一定程度上保证了网络的可靠性。
非法访问是指入侵者伪装成合法用户来访问网络资源,以期达到破坏目的;或者是违反安全策略,利用安全系统的缺陷非法占有系统资源或访问本应受保护的信息。必须对网络中的通信设备增加认证机制,以防止非授权用户使用网络资源。
服务拒绝是指入侵者通过某些手段使合法用户无法获得其应有的网络服务,这种攻击方式在Internet中最为常见,也最为有效。在蓝牙网络中,这种威胁包括阻止合法用户建立连接,或通过向网络发送大量垃圾数据来破坏合法用户的正常通信。对于这种威胁,通常可采用认证机制和流量控制机制来防止。
耗能攻击也称为能源消耗攻击,现有蓝牙设备为节约电池能量,使用节能机制,在不进行通信时进入休眠状态。能源消耗攻击目的是破坏节能机制,如不停地发送连接请求,使设备无法进入节能模式,最终达到消耗能量的目的。目前对这种攻击还没有行之有效的办法。
二、蓝牙采用的安全技术
蓝牙技术标准除了采用上述的跳频扩频技术和低发射功率等常规安全技术外,还采用内置的安全机制来保证无线传输的安全性。
1. 安全模式
在蓝牙技术标准中定义了三种安全模式:
●安全模式1:无安全要求
●安全模式2:强制业务级安全
●安全模式3:强制链路级安全
安全模式1为无安全机制的模式,在这种模式下蓝牙设备屏蔽链路级的安全功能,适于非敏感信息的数据库的访问。这方面的典型的例子有自动交换名片和日历(即vCard和vCalendar)。
安全模式2提供业务级的安全机制,允许更多灵活的访问过程,例如,并行运行一些有不同安全要求的应用程序。在这种模式中,蓝牙设备在信道建立后启动安全性过程,也就是说它的安全过程在较高层协议进行。
安全模式3提供链路级的安全机制,链路管理器对所有建立连接的应用程序,以一种公共的等级强制执行安全标准。在这种模式中,蓝牙设备在信道建立以前启动安全性过程,也就是说它的安全过程在较低层协议进行。
2. 设备和业务的安全等级
蓝牙技术标准为蓝牙设备和业务定义安全等级,其中设备定义了三个级别的信任等级:
●可信任设备:设备已通过鉴权,存储了链路密钥,在设备数据库中标识为“可信任”,可信任设备可以无限制的访问所有的业务;
●不可信任设备:设备已通过鉴权,存储了链路密钥,但在设备数据库中没有标识为“可信任,;不可信任设备访问业务是受限的;
●未知设备:无此设备的安全性信息,为不可信任设备。
实现安全功能的途径之一是采用一个安全管理器,这些信息保存在蓝牙安全架构的设备数据库中,由安全管理器维护。
对于业务,蓝牙技术标准定义了三种安全级别:需要授权与鉴权的业务、仅需鉴权的业务以及对所有设备开放的业务。一个业务的安全等级由下述三个属性决定,它们保存在业务数据库中。
●需授权——只允许信任设备自动访问的业务(例如,在设备数据库中已登记的那些设备)。不信任的设备需要在授权过程完成后才能访问该业务。授权总是需要鉴权以确认远端设备是正确的设备。
●需鉴权——在连接到应用程序之前,远端设备必须接受鉴权。
●需加密——在允许访问业务前必须切换到加密模式下。
3. 链路级安全参数
蓝牙技术在应用层和链路层上提供了安全措施。链路层采用的四种不同实体来保证安全。所有链路级的安全功能都是基于链路密钥的概念实现的,链路密钥是对应每一对设备单独存储的一些128位的随机数。
4. 密钥管理
蓝牙系统用于确保安全传输的密钥有几种,其中最重要的密钥是用于两个蓝牙设备之间鉴权的链路密钥。加密密钥可以由链路密钥推算出来,这将确保数据包的安全,而且每次传输都会重新生成。最后还有PIN码,用于设备之间互相识别。
链路密钥:一共有四种可能存在的链路密钥,所有链路密钥都是128位的随机数,它们或者是临时的或者是半永久性的。
加密密钥由当前的链路密钥推算而来。每次需要加密密钥时它会自动更换。之所以将加密密钥与鉴权密钥分离开,是因为可以使用较短的加密密钥而不减弱鉴权过程的安全性。
蓝牙安全码通常称为PIN(个人识别号码),是一个由用户选择或固定的数字,长度可以为16个字节,通常采用四位十进制数。用户在需要时可以改变它,这样就增加了系统的安全性。另外,同时在两个设备输入PIN比其中一个使用固定的PIN要安全得多。事实上它是唯一的可信的用于生成密钥的数据,典型情况是四位十进制PIN码与其他变量结合生成链路密钥和加密密钥。
5. 加密算法
蓝牙系统加密算法为数据包中的净荷(即数据部分)加密,其核心部分是数据流密码机E0,它包括净荷密钥生成器,密钥流生成器,和加/解密模块。由于密钥长度从8比特到128比特不等,信息交互双方必须通过协商确定密钥长度。
有几种加密模式可供使用,如果使用了单元密钥或者联合密钥,广播的数据流将不进行加密。点对点的数据流可以加密也可以不加密。如果使用了主密钥,则有三种可能的模式:
●加密模式1:不对任何进行加密;
●加密模式2:广播数据流不加密,点对点数据流用临时密钥Kmaste进行加密;
●加密模式3:所有数据流均用临时密钥Kmaste进行加密。
每个应用程序对密钥长度有严格的限制,当应用程序发现协商后得到的密钥长度与程序要求不符,就会废弃协商的密钥长度。这主要是为了防止恶意用户通过协商过程减小应用程序密钥长度,以便对系统造成破坏。
6. 认证机制
两个设备第一次通信时,借助“结对”初始化过程生成一个共用的链路密钥,结对过程要求用户输入16字节(或128位)PIN到两个设备,根据蓝牙技术标准,结对过程如下:
●根据用户输入的PIN生成一个共用随机数作为初始化密钥,此密钥只用一次,然后即被丢弃。
●在整个鉴权过程中,始终检查PIN是否与结对设备相符。
●生成一个普通的128位随机数链路密钥,暂时储存在结对的设备中。只要该链路密钥储存在双方设备中,就不再需要重复结对过程,只需实现鉴权过程。
●基带连接加密不需要用户的输入,当成功鉴权并检索到当前链路密钥后,链路密钥会为每个通信会话生成一个新的加密密钥,加密密钥长度依据对安全等级而定,一般在8~128比特之间,最大的加密长度受硬件能力的限制。
为防止非授权用户的攻击,蓝牙标准规定,如果认证失败,蓝牙设备会推迟一段时间重新请求认证,每增加一次认证请求,推迟时间就会增加一倍,直到推迟时间达到最大值。同样认证请求成功后,推迟时间也相应地成倍递减,直到达到最小值。
7. 蓝牙安全架构
蓝牙安全架构可以实现对业务的选择性访问,蓝牙安全架构建立在L2CAP层之上,特别是RFCOMM层。其它协议层对蓝牙架构没有什么特别的处理,它们可能有其自身的安全特征。蓝牙安全架构允许协议栈中的协议强化其安全策略,例如,L2CAP在无绳电话方面强化了蓝牙安全策略,RFCOMM则是在拨号网络方面强化了蓝牙安全策略,OBEX在文件传输和同步应用方面使用自己的安全策略。蓝牙安全架构提供了一个灵活的安全框架,此框架指出了何时涉及用户的操作,下层协议层需要哪些动作来支持所需的安全检查等。在蓝牙系统中,安全架构是建立在链路级安全特征之上的,一般的架构如图1所示,其中实线为“问询”过程,虚线为“注册”过程。
安全管理器是蓝牙安全架构中最重要的部分,负责存储与业务和设备安全有关的信息,响应来自协议或应用程序的访问要求,连接到应用程序前加强鉴权和加密,初始化或处理来自用户或者外部安全控制实体的输入,在设备级建立信任连接等。
三、蓝牙安全技术存在的问题
用户隐私:由于蓝牙设备内的蓝牙地址具有全球唯一性,一旦这个地址与某用户相关联,他的行动都可以被记录,所以隐私就得不到保障。
PIN问题:为了初始化一个安全连接,两个蓝牙设备必须输入相同的PIN码。PIN是唯一的可信的用于生成密钥的数据,链路密钥和加密密钥都与它有关。用户有可能将其存在设备上,或者输入过于简单,所以PIN易受到攻击,解决的方法是使用较长的PIN,或者使用密钥变更系统。
链路密钥:鉴权和加密都是基于双方共享的链路密钥,这样,某一设备很可能利用早就得到链路密钥以及一个伪蓝牙地址计算出加密密钥,从而监听数据流。虽然这种攻击需要花一些功夫,但贝尔实验室已证实了其可能性。
蓝牙技术把众多的移动设备连接成网络,有着广阔的应用前景。它的底层协议栈是其技术的核心,一个个诱人的产品技术标准就建筑在这些底层标准上,而这些都需要安全机制的保证。随着蓝牙技术的逐步成功,它将扩展为更高的无线通信标准,使蓝牙技术具有蓬勃的生命力。
----《通信世界》