连接蓝牙有哪些安全隐患?
像任何无线技术一样,蓝牙通信易受各种威胁。因为该技术已经使用各种各样的芯片组、操作系统和物理设备配置,这会导致大量不同的安全编程接口和默认设置。这些复杂性增加到无线通信中,意味着蓝牙易受一般无线威胁以及自身固有的漏洞的影响。常见的攻击包括:
Bluebugging :攻击者控制手机,可以拨打电话,窃听电话交谈,阅读联系人和日历等;
Bluejacking:将匿名、未经请求的消息发送到具有蓝牙设备的手机中并设为不可见;
Blueprinting:远程采集蓝牙设备指纹;
BlueSmack :通过蓝牙连接执行拒绝服务攻击,使设备不可用;
Bluesnarfing :使攻击者完全访问日历、联系人、电子邮件和短信;
BlueStumbling :允许攻击者根据蓝牙设备地址查找和识别用户。
蓝牙规范包括四种安全模式,分别提供不同方式、不同程度的保护措施。
灯具蓝牙怎么保证连接安全性
理论上,如果两个设备的密钥被攻击暴露,坏人就可以操纵设备之间交换的数据。这将使用户接触到第三方,第三方能够注入命令并监视受损设备。伊卡西提到,他们还没有看到这种攻击载体被恶意部署。蓝牙官方声明:“一个攻击要成功,一个攻击设备需要在两个脆弱的蓝牙设备的无线范围内,这两个蓝牙设备正在建立一个BR/EDR连接。如果其中一个设备没有漏洞,那么攻击就不会成功。
安全行业一旦发现漏洞,就会迅速采取行动来消除漏洞,但这并不意味着在发现漏洞后,所有设备都不会受到威胁。该漏洞于2017年底在集体雷达上登记,但许多设备从未收到必要的补丁和更新,以消除九个可能的威胁向量。研究表明,由于忽略了更新或者从一开始就没有收到补丁,20亿台设备仍然容易受到BlueBorne的攻击。
BlueBorne的工作方式与蓝牙设备面临的其他威胁不同,比如蓝牙窃听或蓝牙劫持。这种攻击针对蓝牙堆栈的不同部分。BlueBorne会试图伪装成一个希望连接的设备,但在连接尝试需要用户执行操作之前,漏洞就会被执行。BlueBorne如此有效的部分原因是,攻击并不依赖于设备的互联网连接,而这在当时是网络安全研究领域的一个很少探索的领域。
攻击者将操作发现查询的时间戳和大小,并将第二个发现查询作为单独的服务发送到原始目标。这有效地激活了设备的故障安全连接,并允许自由访问。BlueBorne在ios 10之前的Android、windows和Linux平台上的设备都受到了影响。虽然已经从BlueBorne事件中吸取了重要的教训,但是许多设备仍然容易受到新出现的攻击载体的攻击。
蓝牙的安全机制有哪些
蓝牙采取的安全机制适用于对等通信的情况,即双方以相同的方式实现认证与加密规程。主要的安全机制为使用密钥。它的链路层使用4个实体提供安全性,一个公开的蓝牙设备地址,长度为48比特;认证密钥,长度为128比特;加密密钥,长度为8~128比特;随机数,长为128比特。蓝牙安全管理器存贮着有关设备和服务的安全信息,安全管理器将决定是否接收数据,断开连接或是否需要加密和身份认证,它还初始化一个可信任的关系以及从用户那里得到一个PIN码。
蓝牙设备有两种信任级别,即可信任和不可信任。可信任级别有一个固定的可信任关系,可以得到大多数服务。可信任设备是预先得到鉴别的。而不可信任设备所得到的服务是有限的,它也可以具有一个固定的关系,但不是可信任的。一个新连接的设备总是被认为是未知的,不可信任的。
对蓝牙协议本身的攻击可以分为两类:主动攻击和被动攻击。主动攻击是没有被认证的第三方对传输过程中的数据流进行修改。主动攻击包括伪装、中继、信息修改以及拒绝服务。被动攻击可以是对传输内容进行窃听,也可以是对通信模式进行监听获取相关信息。
2.1字管理机制
蓝牙链字是长度为128位的随机数,它是蓝牙系统鉴权和加密的基础。为了支持不同阶段、模式的要求,蓝牙系统在链路层上用了4种不同的字来保证系统的安全性。包括单元字KA组合字是KAB,临时字Kmaster及初始化字Kinit。单元字KA与组合字KAB仅产生方式不同,执行的功能是完全相同的。也就是说,KAB是由两个单元A,B共同产生的,而KA仅由一个单元A产生,因此KA在初始化阶段产生后就基本不变了。系统的内存比较小时通常选择KA,而系统对稳定性要求比较高时选择KAB。临时字Kmaster只是临时取代原始字。例如,当主机想与多个子机通信时主机将用同一个加密字,因此把它存放在临时字中,以便于使用。初始化字Kinit仅仅在初始化阶段有效,也主是单元字KA,KAB产生的阶段,它不仅仅是初始化阶段的一个临时字,其产生需要一个PIN。 半永久性的链接字在特定的时间内被称作当前链接字。当前链接字和其它
链接字一样,用于鉴权和加密过程。
此外,还用到了加密字KC,加密字被LM的命令激活后将自动被改变。
另外,鉴权字和加密字在不同的阶段执行不同的功能。例如:在两个单元没有建立连接的阶段和已经建立连接的阶段有很大的不同,前者必须首先产生加密字,而后者可以继续使用上次通信的加密字。相应地不同的阶段对字的管理是不一样的。此外当主机想广播消息,而不是一个一个地传送消息时,需要特殊的字管理方法。正是蓝牙系统有力的字管理机制,才使得系统具有很好的安全性,而且支持不同的应用模式。
2.2链接字的产生
初始化字Kunit的值以申请者的蓝牙设备地址、一个PIN码、PIN码的长度和一个随机数作为参数,通过E22 算法产生。而申请者相对校验者而言是需要通过验证的一方。因此,申请者需要正确的PIN码和PIN码的长度。一般来讲,由HCI决定谁是申请者,谁是校验者。 当PIN的长度少于16个八进制数时,可以通过填充蓝牙设备地址的数据使其增大,因此如果循环使用E22可以使链接字的长度增长为128位。 初始化链接字Kint产生后,该单元将产生一个半永久字KA或KAB。如果产生的是一人KAB,则该单元将用一个随机数LK_RAND周期性地加密蓝牙设备地址,加密后的结果为LK_KA,而各自产生的LK_RAND与当前的链接字进行异或运算后,分别产生新值,永为CA和CA,然后互相交换,从而得到了对方的LK_RAND,并以对方的LK_RAND和蓝牙设备地址作为参数,用E21函数产生新值LK_KB的异或运算得到组合字KAB。当KAB产生后,首先单向鉴权一次,看KAB变为当前链接字,而丢弃原先的链接字K。E22的工作原理与E21类似。