0


蓝牙安全概述

蓝牙安全概述

一、蓝牙安全模型包括五种安全特性

认证(Authentication:建立设备间的信任关系,证明正在通讯的设备是真正的设备而不是其他冒名的设备

保密性****(Confidentiality):对传输的数据加密,确保内容不被窃听者获取

授权(Authorization:是否允许对端设备通过建立的链接操作本地的数据项

数据完整性(Integrity:确认收到的数据就是对端发送的数据

配对/绑定(Pairing/Bonding:创建一个或多个共享密钥并存储用于后续连接,以形成可信设备

二、经典蓝牙的安全功能

BR/EDR/HS定义了在认证和加密安全流程的强制级别。

Link-level enforced:在物理链路建立之前进行认证和加密。
Service-level enforced:在物理链路建立之后且部分逻辑信道建立之后进行认证和加密。

模式

安全流程的级别

4

Service

3

Link

2

Service

1

Security Mode 1:设备是不安全的,安全功能永远不被启用
Security Mode 2:Service-level enforced安全模式,认证和加密是在控制器中进行的
Security Mode 3:Link-level enforced安全模式,此模式要求进行所有连接之前都必须进行认证和加密,因此在授权和加密之前搜索服务也无法执行。
但是NIST建议执行服务级别的授权防止“身份滥用”,即在本地设备不知情的情况下远端设备使用本地设备的蓝牙服务。

以上3中安全模式是蓝牙2.0以前的安全模式。

Security Mode 4:Service-level enforced安全模式,使用Secure Simple Pairing (SSP),使用ECDH生成Link key。在4.0之前使用P-192 Elliptic Curve计算Link key,设备认证和加密算法与2.0+EDR相同。4.1引入安全连接功能,使用P-256 Elliptic Curve计算Link key,通过AES_CCM进行加密。
此模式要求服务必须符合下面条件之一:

• Level 4: Authenticated link key using Secure Connectionsrequired
• Level 3: Authenticated link key required
• Level 2: Unauthenticated link key required
• Level 1: No security required
• Level 0: No security required. (Only allowed for SDP)

为了向后兼容,当与不支持安全模式4的Bluetooth 2.0和更早版本的设备通信时,安全模式4设备可以回退到其他三种安全模式中的任何一种。

在这种情况下,NIST建议使用安全模式3。

如果一个设备的安全性比向后兼容性更重要时,应当使用“仅安全连接模式”,此模式又称为“FIPS模式”,即在物理传输上仅使用FIPS批准的算法。此时将无法保持与旧设备的向后兼容性。

表3-3总结了根据两个对等端的蓝牙版本可以实现的最安全模式

表3-4总结了在模式4下可以达到的最安全级别

配对
蓝牙的认证和加密是通过对称密钥进行的。经典蓝牙是Link key, 低功耗蓝牙是LTK。
传统低功耗蓝牙先生成STK,使用STK加密连接后再分发LTK给对端设备,在低功耗安全连接模式下LTK是各个设备生成,不需要分发。
经典蓝牙有2种配对方式:Security Modes 2 and 3使用PIN码进行配对,Security Modes 4使用SSP(Secure Simple Pairing)。

PIN/传统配对

(本文略)

Secure Simple Pairing

通过提供多种输入输出能力的关联模型简化配对流程

通过ECDH增加配对的安全性

椭圆曲线类型有2种:P-192 or P-256(Secure Connections)

SSP提供了4中关联模型:

  1. Numeric Comparison:两个蓝牙设备显示6位数字,用户选择“是”或“否”,与使用PIN的区别是显示的数字不作为计算link key的条件,因此窃听者也不能用它生成连接或者密钥。
  2. Passkey Entry:一个设备有输入能力另外一个有显示能力使用此模型,和Numeric Comparison一样,传输的6位数字不作为计算link key的条件,所以对窃听者也没有作用。
  3. Just Works:没有输入和显示的设备适用此模型,与Numeric Comparison在认证阶段1相同,因为没有显示,不能对比两个设备上的数值就接受了连接,因此不能提供MITM保护。
  4. Out of Band (OOB):通过有线或者NFC等其他方式进行设备的发现和加密数据的交换。

SSP流程图

DH密钥交换原理

SSP生成link key流程

每个设备各自计算自己的公-私密钥,双方都支持安全连接使用P-256 elliptic curves 否则 P-192 curves。
1:每个设备发送public key给对方
2:执行authentication stage 1
3:第一个设备计算出确认值E1并发送给设备2,设备2对E1 进行验证,验证通过后,设备二计算确认值E2并发给第一个设备。
4:如果E2检查通过,那么双方就进行link key的计算。

认证

蓝牙的认证过程使用challenge–response scheme(质询-响应)方式,这个方式通过验证Link key的方式验证设备。

认证流程有2种:Legacy Authentication和Secure Authentication(双方都支持安全连接使用此流程)

如果认证失败,蓝牙设备会间隔一段时间后重试,间隔时间会成指数级增长,以避免攻击。

传统身份验证

当使用传统配对或者P-192进行SSP配对时使用此流程。

Step 1:verifier发送128bit的随机数(AU_RAND)质询claimant。
Step 2:claimant使用 “E1 algorithm”,通过输入48bit的mac地址、link key、AU_RAND来计算认证响应。verifier也执行相同的流程。
E1输出的高32位用于身份验证。剩余的96位时ACO,用于创建加密密钥。
Step 3:E1输出的高32位,即the Signed Response (SRES),发送给verifier。
Step 4:verifier拿自己的SRES与claimant的SRES进行比较。
Srep 5:如果相同咋认证成功否则失败。

安全认证
使用P-256 Elliptic Curve进行SSP执行此流程、

Step 1: Master发送128bit的随机数RAND_M给Slave
Step 2:Slave 发送RAND_S给Master
Step 3:Maste和Slave都利用“h4 and h5 algorithms”计算认证响应。以Master的MAC地址,Slave的mac地址、RAND_S、RAND_M、Link key作为输入。
h5输出的高32位用于验证,其余96位作为Authenticated Ciphering Offset (ACO) 用于创建密钥。
Step 4:Slave把SRESslave 传给master
Step 5:Master吧SRESmaster传给Slave
Step 6:Master和Slave拿自己的SRES与对方的进行比较
Step 7:相同则认证成功,否则失败。

保密性
处理配对和认证之外蓝牙还有单独的保密服务,防止数据包被监听。
虽然有3种加密模式,但是只有2种提供保密性。

• Encryption Mode 1—没有任何保加密
• Encryption Mode 2—Individually addressed traffic is encrypted using encryption
keys based on individual link keys; broadcast traffic is not encrypted.
• Encryption Mode 3—All traffic is encrypted using an encryption key based on the
master link key.
模式2和3使用E0或者AES_CCM加密机制。

三、低功耗蓝牙的安全功能
BLE并不是从BR/EDR/HS演变而来,所以安全性不同于经典蓝牙,但是从4.1/4.2版本这个差异已经很小了。
BLE配对生成LTK而不是Link key,传统ble配对生成LTK后进行分发,在ble 安全连接中LTK是在各自设备生成。
IRK(Identity Resolving Key)用来解析Resolvable Private Address(RPA)。
CSRK(Connection Signature Resolving Key)用来验证在未加密链路上传输的加密签名的ATT数据帧。

BLE的安全模式和级别
BLE的安全模式和经典蓝牙的服务级别的安全模式类似,BLE的每个服务都有自己的安全需求,同时BLE的请求也有自己的安全需求。

Low energy Security Mode 1:有多个与加密相关的级别
Level 1:无认证,无加密
Level 2:加密的无认证配对
Level 3:加密的认证配对
Level 4:认证的安全连接配对(4.2引入)

Low energy Security Mode 2:有多个与签名有关的级别,数据签名提供强大的数据完整性但是无加密。
Level 1:无认证的数据签名配对
Level 2:认证的数据签名配对

如果双方的安全级别不同,以更安全的为准。

模式1级别4使用AES-CMAC和P-256椭圆曲线进行配对,AES-CCM进行加密,是最安全的。

BLE的配对方法
4.2 使用低功耗安全连接配对
4.2以前版本使用低功耗传统配对

LE Legacy Pairing虽然和经典蓝牙的SSP类似,但是没有使用ECDH的加密方式且不提供窃听保护,所以除了OOB外其他配对方法都是不安全的。
如果攻击者抓取了配对帧,就能够确定LTK。
如果需求监听保护时应该使用低功耗安全连接配对。

LE传统配对的所有key使用密钥传输而不是密钥协商,LE安全连接每个设备独立生成LTK,在密钥分发阶段可以交换IRK、CSRK。

4.0和4.1 有OOB、Pask entry、Just Work三种配对方法,4.2添加了Numeric Comparison作为安全连接配对方法,仅使用于安全连接配对。LE安全连接配对在功能上与传统蓝牙SSP类似,但是与LE传统配对安全性完全不同。

四、蓝牙漏洞、威胁和对策

蓝牙漏洞

CVE(Common Vulnerabilities and Exposures)公共漏洞披露

CVE网站列出了已公开披露的各种计算机安全缺陷,可以通过网址https://www.cve.org/进行查阅。

在GitHub上已经有大佬列出了蓝牙相关的CVE,做安全测试时可以参考这些CVE影响的设备型号和版本。网址为:https://github.com/engn33r/awesome-bluetooth-security

目前一些在4.0及以后版本需要防范的一些漏洞:

id

安全问题或漏洞

建议

1

Just Works关联模型在配对期间不提供MITM保护,这会生成未经身份验证的link key

为了获得最高的安全性,BR/EDR设备应在SSP期间要求MITM保护,并拒绝接受使用Just Works配对生成的未经身份验证的link key

2

安全模式4设备(即2.1或更高版本)在和不支持安全模式4(即2.0及更早版本)的设备连接时允许回退到任何其他安全模式

最坏的情况是设备返回到安全模式1,该模式不提供安全性。

NIST强烈建议在这种情况下,安全模式4设备返回到安全模式3

3

可以重复的进行身份验证

蓝牙设备中需要包含一种机制以防止无限制的身份验证请求。蓝牙规范要求连续身份验证尝试之间的等待间隔呈指数级增加。

4

如果LE的地址可以被捕获并且和特定的用户关联,LE的隐私可能会受损

LE设备应该启动地址隐私功能

5

LE设备的传统配对不提供被动监听保护

如果成功,窃听者可以在LE配对期间捕获密钥(即LTK、CSRK、IRK)分发

6

Link key存储不当

如果访问控制没有安全的存储保护link key,可能会被攻击者获取

7

不存在用户身份验证

蓝牙规范仅提供设备身份验证。

应用程序开发人员需要增加应用级别的安全性,包括用户身份验证

8

没有进行端到端的加密

仅对单独的链路进行加密和身份验证,数据可能在中间被解密。需要在协议栈上层提供端到端的加密

9

安全服务有限(太少)

蓝牙规范标准提供的服务有限,如果需要可以由应用开发人员进行添加

10

可发现或可连接的设备容易被攻击

任何经典蓝牙设备在进入discoverable or connectable模式进行配对或者链接时应该尽快完成。

设备不应该一直处于discoverable or connectable模式

蓝牙威胁

下面列举一些常见的攻击方式

  • 中继攻击(Relay Attack)

攻击者A携带感应设备靠近车主,攻击者B携带另一台设备靠近目标车辆。当车主下车锁门去超市、商场等公共场合时,A可以跟踪并靠近车主,其携带的解码感应设备会采集车钥匙发射的数字密码,然后通过中继器传输给B,此时车上的解码系统就会误以为B身上携带的解码感应设备是“车钥匙”,B从而可以轻松开启车门。

当前大多数设备都没有对这个问题做出防范。

  • 重放攻击(Replay Attacks)

攻击者监听发往目标的数据包,之后再把它重新发给目标来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性

  • 拒绝服务攻击 (Denial Of Service Attack )

l2ping

l2ping是一种测试蓝牙链路连通性的工具,可以对连接范围内的蓝牙设备进行连通性测试。
可以通过此命令向目标主机发送大量的数据包,使得目标忙于响应,从而达到资源耗尽的目的。

鉴权Dos攻击

如果身份验证失败,蓝牙设备将等待一段时间间隔,然后再进行新的尝试。此时间间隔呈指数级增加,以防止对手试图通过使用不同的链接密钥进行反复试错来摧毁认证体系,从而获得访问权限。

攻击者可以伪装一个Mac地址,并尝试连接目标设备,并且故意失败多次,导致认证的间隔时间不断增大,此时被伪装的设备都不能连接了。

  • 中间人攻击

在配对过程中攻击者通过监听双方的认证流程冒充合法设备完成中间人攻击。
此后就可以拦截双方正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。


本文转载自: https://blog.csdn.net/lgdlchshg/article/details/127046004
版权归原作者 lgdlchshg 所有, 如有侵权,请联系我们删除。

“蓝牙安全概述”的评论:

还没有评论