谷动谷力

 找回密码
 立即注册
查看: 980|回复: 0
打印 上一主题 下一主题
收起左侧

【技术专栏】泰凌微电子经典蓝牙技术安全知识讲解

[复制链接]
跳转到指定楼层
楼主
发表于 2024-1-10 09:31:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
【技术专栏】泰凌微电子经典蓝牙技术安全知识讲解
由于个人生产设备的快速蔓延,使用蓝牙设备的频率和数量也在不断的增长,这对蓝牙通信安全性提出了更高的要求。随着蓝牙官方协议版本的迭代,经典蓝牙信息安全模型也在不段更新和完善。本文主要讲述经典蓝牙技术安全相关内容。

1
蓝牙安全模型

目前,蓝牙安全模型主要分为五个安全部分:

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

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

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

数据完整性([url=]Integrity[/url]):确认收到的数据就是对端发送的数据。

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

2
经典蓝牙安全机制

蓝牙核心安全架构随着时间的推移而发展,已经有多种安全机制。

早期BR/[url=]EDR[/url]使用legacy pairing方式进行配对,该方式基于E21或E22算法进行。E21和E22均基于E1算法。通信加密则利用了MasseyRueppel 算法衍生的e0算法。这种方式局限于无法提供加密消息的完整性。目前,出于加密安全的考虑,使用较多的是Secure Simple Pairing (SSP),其使用[url=]ECDH[/url]生成Link Key。且在4.0版本之前使用P-192 Elliptic Curve计算Link Key,设备认证和加密算法与2.0+EDR相同。4.1版本引入Secure connection功能,使用P-256 Elliptic Curve计算Link Key,通过AES-CCM进行加密。

SSP提供了四种关联模型:Numeric Comparison、Passkey Entry、Just Works以及[url=]Out of Band[/url] (OOB)。

Numeric Comparison:两个蓝牙设备显示6位数字,用户选择“是”或“否”,与使用PIN的区别是显示的数字不作为计算Link Key的条件,因此窃听者也不能用它生成连接或者密钥。

Passkey Entry:一个设备有输入能力另外一个有显示能力使用此模型,和Numeric Comparison一样,传输的6位数字不作为计算Link Key的条件,所以对窃听者也没有作用。

Just Works:没有输入和显示的设备适用此模型,与Numeric Comparison在认证阶段1相同,因为没有显示,不能对比两个设备上的数值就接受了连接,因此不能提供MITM保护。

Out of Band (OOB):通过有线或者NFC等其他方式进行设备的发现和加密数据的交换。


SSP流程图


SSP生成Link Key流程

总共分为三步:




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

01
认证

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

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

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

02
传统身份验证

当使用传统配对或者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进行比较。
  • Step 5:如果相同则认证成功否则失败。


03
安全认证

使用P-256 Elliptic Curve进行SSP执行此流程。


  • Step 1:Master发送128bit的随机数RAND_M给Slave
  • Step 2:Slave 发送RAND_S给Master
  • Step 3:Master和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把SRES_slave 传给master
  • Step 5:Master吧SRES_master传给Slave
  • Step 6:Master和Slave拿自己的SRES与对方的进行比较
  • Step 7:相同则认证成功,否则失败。


3
经典蓝牙的保密性

处理配对和认证之外蓝牙还有单独的保密服务,防止数据包被监听。

  • 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加密机制。

AES_CCM是一种[url=]对称密钥[/url]加密算法,用于保护通信中传输的数据的机密性和完整性。它广泛应用于无线通信协议如蓝牙(Bluetooth)和Wi-Fi等中,为4.0版本之后新加入的加密机制。

AES_CCM是基于AES算法(Advanced Encryption Standard)和CCM模式(Counter with CBC-MAC mode)的组合设计。AES算法是一种分组密码算法,通过多轮置换和混淆的方式进行加密和解密。CCM模式则是一种加密模式,它使用计数器和CBC-MAC模式对数据进行加密和验证,同时提供了认证和传输机密性保护功能。

下图为蓝牙packet中AES_CCM与E0的加密范围和流程:


需要注意的是,AES_CCM算法仅提供对数据的机密性和完整性保护,而无法提供绝对的安全性。如同时使用质询机制等其他安全措施可以增强安全性。


+10
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-12-28 15:50 , Processed in 0.143997 second(s), 44 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表