蓝牙4.2 安全连接

针对蓝牙4.0传统配对过程中存在的中间人攻击和窃听漏洞,蓝牙4.2提出了安全连接的配对方式,蓝牙4.0传统配对方式可见https://blog.csdn.net/UFOfuck/article/details/102708853。

1.蓝牙4.0传统配对方式存在的漏洞

1.1窃听

传统的配对中生成短期密钥STK(用于链路数据加密)时使用了可预测的或易于确定的TK值,因此在配对过程中,没有一种配对方法可提供针对被动窃听者的保护。如果在没有窃听者的情况下分发配对信息,则所有配对方法都将提供机密性。

1.2中间人攻击

蓝牙主从设备身份认证过程中,身份确认值是明文传输的,所以会出现中间设备进行认证信息伪造进行中间人攻击。

1.3鉴权DOS攻击

蓝牙配对过程中如果鉴权失败,设备会成倍增加鉴权间隔时间,这段时间不允许任何设备与之配对。这就会出现鉴权DOS攻击。
另外由于目前大多数无线设备都使用内置电池组,DoS攻击会导致系统频繁崩溃,并耗尽其电池电量。

2.安全连接解决漏洞的方法

蓝牙4.2引入安全连接,采用符合联邦信息处理标准(FIPS)的DCTH (Elliptic Curve Diffie-Hellman)算法生成密钥。
蓝牙4.2提供了强大的安全机制以确保安全的无线连接系统。尽管BLE 4.1和4.2都提供了MITM防护功能,但只有蓝牙4.2能够实现真正安全的BLE系统。当使用蓝牙4.1 的LE传统配对时,只有OOB关联模型提供了被动窃听的防护,而蓝牙4.2还提供数值比较关联模型和ECDH算法以确保隐私和数据安全。下表汇总了传统配对和安全连接配对方法的保护级别。

     
2.1安全连接配对流程

 蓝牙4.2 安全连接_第1张图片

如上图,安全连接过程分为三个阶段,第1阶段是主从双方交换配对特征并计算Diffie-Hellman 密钥(用于生成STK),该密钥生成方式下面会讲。
第2阶段主从设备认证和STK的生成,安全连接中设置4种不同的认证方式,分别是分别是Just Work、Numeric Comparison(数字比较)、Passkey Entry(密码输入)和Out of Band(OOB)。当主从认证成功后,配对会使用第1阶段计算得到的Diffie-Hellman 密钥生成短期密钥STK,进行链路加密。
第3阶段为绑定阶段,该阶段与传统配对相同,主要是计算长期密钥LTK并保存,该过程可参考传统配对方式第3阶段。

2.2安全连接认证方式及对MITM的防御
蓝牙4.2中,安全连接方式包括4种认证方式,分别是Just Work、Numeric Comparison(数字比较)、Passkey Entry(密码输入)和Out of Band(OOB)。
MITM 攻击使用第三个设备伪装成参与通信的每个设备的对等设备,从而可以修改两个设备所交换的数据。数字比较、密钥输入和 OOB 关联模型能够提供更强的防御 MITM 攻击功能。下面将简单说明这些关联模型的认证流程和他们是如何防御 MITM 攻击。数字比较的配对过程比密钥输入的配对过程快,而且该方法不要求单独的通信链接(OOB 方法需要)。
2.2.1 Just Work和数字比较认证
Just work和数字比较的流程如下图:
       蓝牙4.2 安全连接_第2张图片
交换公钥后,每个设备都会选择一个伪随机的128位随机数(步骤2)。该值用于防止重放攻击,并且必须在每次配对时重新生成。
此后,响应设备(从设备)然后计算自己的身份确认值(步骤3c),并将其传输到启动设备(步骤4)。
然后,发起和响应设备交换它们各自的随机数值(步骤5和6),发起设备确认响应设备身份确认值(步骤6a)。此时的失败表示存在攻击者或其他传输错误,并导致协议中止。无论是否生成新的公私钥对,都可以重复该协议,但是如果重复该协议,则必须生成新的随机数。
使用Just Works时,不会执行承诺检查(步骤7a和7b),并且不会向用户显示6位数字的值。
当使用数值比较时,假定身份检查成功,则两个设备各自计算在其各自设备上显示给用户的6位确认值(步骤7a,7b和8)。要求用户检查这些6位数字值是否匹配。如果没有匹配项,则该协议将中止,并且如前所述,如果要重复该协议,则必须生成新的随机数。
数字比较关联模型使用以下认证措施来防御 MITM 攻击:
1)    在接收发起设备的随机数值(Na)前,响应设备必须提供使用响应设备随机数值(Nb)和两个 BLE 设备的公有密。
2)    钥计算得到的约定值(Cb)。
3)    接收响应设备的随机数值(Nb)前,发起设备必须分享它的随机数值(Na)。
4)    接收到响应设备的随机数值(Nb)后,发起设备需要检查约定值(Cb)。
 
MITM 攻击设备依次与响应设备和发起设备交换密钥
上图显示的是 MITM 攻击设备依次与响应设备和发起设备交换随机值的情况。在获得响应设备的随机值(Nb)前,攻击设备需要为响应设备提供它的随机值(Nc)。这样,用户检查 BLE 设备所显示的值时会发现不同的 6 数字值,因而认证失败。
 
MITM 攻击设备依次与发起设备和响应设备交换密钥
上图显示的是 MITM 攻击设备依次与发起设备和响应设备交换随机值的情况。在获得发起设备的随机值(Na)前,攻击设备需要为发起设备提供它的约定值(Cc)。发起设备将检查约定值,从而可以防止攻击设备修改它的随机值。用户检查 BLE 设备显示的值时将会发现不同的 6 数字值,因而认证失败。
2.2.2密码输入认证
密码输入的认证流程如下图所示:
       蓝牙4.2 安全连接_第3张图片
密钥输入关联模型使用以下认证措施来防御 MITM 攻击:
1)    两个 BLE 设备都接收到用户输入的公有 6 数字或 20 位密钥(ra 和 rb)。
2)    对于密钥中的每一位都需要重复执行第 3 到第 7 步(例如, i = 1, 2,….20)。
3)    两个 BLE 设备选择 128 位随机值(Nai 和 Nbi)。
4)    发起设备提供使用两个 BLE 设备的公有密钥(PKa 和 PKb)计算得到的约定值(Cai)、 128 位随机值(Nai)以及密钥的第 i 位(rai)。
5)    发起设备提供使用两个 BLE 设备的公有密钥(PKa 和 PKb)计算得到的约定值(Cai)、 128 位随机值(Nai)以及密钥的第 i 位(rai)。
6)    发起设备为响应设备提供它的 128 位随机值(Nai)。
7)    响应设备使用发起设备的 128 位随机值(Nai)来检查收到的约定值(Cai)。如果该约定值正确,则发起设备将为响应设备提供它的 128 位随机值(Nai)。
8)    发起设备使用响应设备的 128 位随机值(Nai)来检查收到的约定值(Cai)。如果两个值相互匹配,则发起设备继续进行配对流程。
密钥输入关联模型的中心是密钥逐渐或逐位被公开。 MITM 攻击设备与发起和响应设备接合时,它只能获得密钥的两位,然后 BLE 设备会检测到约定值不正确,并中止配对流程。与数字比较关联模型相比,该模型的缺点是需要进行k次认证(密钥的每一位需要进行一次),因此很耗时。
2.2.3 OOB认证
OOB认证流程如下图所示:
       蓝牙4.2 安全连接_第4张图片
4.3安全连接对窃听的防御
被动窃听器是第三个设备,用于监控两个 BLE 设备间的通信。被动窃听器需要获得通过 BLE 链接提供的密钥,从而监控加密通信。
主从设备认证前会计算短期密钥STK,该密钥用于链路中数据的加密,传统的匹配过程中通过TK计算得到STK值,TK一般为简单的或有规律的数字,容易泄漏,不能有效的防御被动窃听。
安全连接中使用椭圆曲线Diffie Hellman(Elliptic Curve Diffie Hellman,简称ECDH)密码体制生成密钥,达到了政府级美国联邦信息处理标准(Federal Information Processing Standard,简称FIPS)。该算法可以不需要通过 BLE 链接交换密钥而计算出一个公用的 Diffie-Hellman 密钥,设备使用该密钥计算生成用于链路数据加密的短期密钥STK,这样就有效的防御了蓝牙的被动窃听。
椭圆曲线 Diffie-Hellman(ECDH)算法允许两个 BLE 设备在进行基于 LE 安全连接的配对时建立一个共享密钥。配对过程的第二个阶段(认证阶段 2)将使用共享密钥(即 Diffie-Hellman 密钥)来生成长期密钥(LTK),用以对 BLE 链接进行加密。 Diffie-Hellman 密钥提供了随机的 256 位,这些位不会被无线交换,如下图所示。
       蓝牙4.2 安全连接_第5张图片

参考资料

蓝牙核心规范Core_v4.2.pdf

蓝牙核心规范Core_v4.0.pdf

AN99209_-_PSoC_4_BLE_and_PRoC_BLE_Bluetooth_LE_4.2_Features_Chinese.pdf

你可能感兴趣的:(BLE安全)