针对蓝牙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安全连接配对流程
如上图,安全连接过程分为三个阶段,第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和数字比较的流程如下图:
交换公钥后,每个设备都会选择一个伪随机的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密码输入认证
密码输入的认证流程如下图所示:
**输入关联模型使用以下认证措施来防御 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.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 位,这些位不会被无线交换,如下图所示。
参考资料
蓝牙核心规范Core_v4.2.pdf
蓝牙核心规范Core_v4.0.pdf
AN99209_-_PSoC_4_BLE_and_PRoC_BLE_Bluetooth_LE_4.2_Features_Chinese.pdf