蓝牙架构(10)—— 5 安全概述(5.1 安全架构 & 5.2 BR / EDR安全简单配对 & 5.3 仅安全连接模式 &5.4 LE安全)

Vol 1架构和术语概述

Part A 5 安全概述

Agenda:

Part A 5 安全概述. 

5.1 安全架构. 

5.2 BR / EDR安全简单配对. 

5.2.1安全目标. 

5.2.2被动窃听保护. 

5.2.3中间人Man-In-The-Middle保护.

5.2.4关联模型. 

5.3 仅安全连接模式. 

5.4 LE安全. 

5.4.1 关联模型. 

5.4.2 密钥生成. 

5.4.3 加密. 

5.4.4 签名数据. 

5.4.5 隐私功能. 

Part A 5 安全概述

5.1 安全架构

(240页)蓝牙安全模型包括五个不同的安全功能:配对(Pairing),绑定(Bonding),设备认证(Device authentication),加密(Encryption)和信息完整性(Message integrity):

  • 配对:创建一个或多个共享密钥的过程
  • 绑定:存储在配对期间创建的密钥以在后续连接中使用以便形成可信设备对的行为设备
  • 验证:验证两个设备具有相同的密钥
  • 加密:消息机密性
  • 消息完整性:防止消息伪造

蓝牙核心安全架构随着时间的推移不断发展。

最初,配对使用基于SAFER +E21E22算法。此版本的配对称为“BR / EDR传统配对。设备认证最初基于E1算法,该算法也基于SAFER +。加密利用源自Massey-Rueppel算法的E0算法。加密消息完整性也没有规定。请注意,虽然CRC提供了一些完整性保护,但不会考虑提供加密完整性,因为它很容易伪造。

核心规范的2.1+ EDR引入了安全简单配对,它采用了FIPS认可的算法(SHA-256HMAC-SHA-256P-192椭圆曲线),并引入了四种关联模型:Just WorksNumeric ComparisonPasskey进入和带外(见第5.2节)。

引入安全简单配对时,设备身份验证和加密保持不变。

核心规范的3.0 + HS版增加了对AMP的支持(参见第5.5节)。

4.0版增加了Low Energy的整个安全模型(参见第5.4节),但没有改变BR / EDRAMP的任何安全功能。

版本4.1BR / EDR物理传输添加了安全连接功能,该功能将安全简单配对升级为使用P-256椭圆曲线,设备认证使用FIPS认可的算法(HMAC-SHA-256AES-CTR)。 Secure Connections还添加了消息完整性(AESCCM)。

版本4.2将安全连接功能添加到LE物理传输,升级LE配对以使用FIPS认可的算法(AES-CMACP-256椭圆曲线),并使数字比较关联模型适用于蓝牙LE物理传输。(241页)它还包括在物理传输上使用安全连接生成的密钥的规定,以排除用户第二次在另一个物理传输上配对的需要。 蓝牙核心规范4.04.1中定义的LE配对称为LE传统配对。

BR / EDR和AMP的安全密钥层次结构如图5.1所示。 密钥层次结构根据物理链路是使用安全连接还是传统安全过程和算法而有所不同。

 

蓝牙架构(10)—— 5 安全概述(5.1 安全架构 & 5.2 BR / EDR安全简单配对 & 5.3 仅安全连接模式 &5.4 LE安全)_第1张图片

LE的安全密钥层次结构如图5.2所示。 密钥层次结构根据物理链路是使用LE安全连接还是LE传统配对过程和算法而不同。(242页)

蓝牙架构(10)—— 5 安全概述(5.1 安全架构 & 5.2 BR / EDR安全简单配对 & 5.3 仅安全连接模式 &5.4 LE安全)_第2张图片

5.2 BR / EDR安全简单配对

  • 安全简单配对的主要目标是简化用户的配对过程。
  • 次要目标是维持或改善蓝牙无线技术的安全性。

由于高水平的安全性和易用性通常在许多技术和产品的频谱的两端,因此在最大限度地提高安全性的同时,最大限度地降低了最终用户的复杂性。

5.2.1安全目标

安全简单配对有两个安全目标:

  • 防御被动窃听
  • 防止中间人(MITM)攻击(主动窃听)

安全简单配对的目标是超过使用16个字母数字PIN提供的最大安全级别,以及蓝牙核心规范版本2.0 + EDR和早期版本中使用的配对算法。请注意,许多符合蓝牙核心规范2.0 + EDR和早期版本的蓝牙设备使用4位数的PIN或固定的已知值的PIN,这极大地限制了链路的安全性。

5.2.2被动窃听保护

(243页)强大的链接密钥与强大的加密算法相结合是必要的,以便为用户提供防止被动窃听的保护。链接密钥的强度基于其生成过程中的熵(或随机性)量,攻击者不会知道。

  • 使用传统配对,唯一的熵源是PIN,在许多使用情况下,PIN通常是由用户选择或针对给定产品固定的四位数。因此,如果记录了配对过程和一个认证交换,则可以进行穷举搜索以在通常可用的计算硬件上在非常短的时间内找到PIN。
  • 通过安全实施配对,记录攻击变得更加困难,因为攻击者必须解决公钥加密中的难题才能从记录的信息中导出链接密钥。此保护与密钥的长度或用户必须处理的其他数值无关。即使用户不需要做任何事情,安全简单配对也能对录音和被动窃听攻击提供相同的抵抗力。

安全简单配对使用椭圆曲线Diffie Hellman(ECDH)公钥加密作为阻止被动窃听攻击的手段。 ECDH提供了非常高的强度来抵御被动窃听攻击,但它可能受到MITM攻击,然而,在实践中执行比被动窃听攻击更难(见第5.2.3节)。

使用蓝牙核心规范版本2.0 + EDR中的安全协议以及之前的16位数字PIN可实现约53位的熵,而当使用整个62个字符集时,16个字符的字母数字,区分大小写的PIN会产生大约95位的熵([0,... 9,'A',......'Z','a',...'z'])。

对于不支持安全连接功能的设备(在核心规范v4.1中引入),使用FIPS认可的P-192椭圆曲线,安全简单配对具有大约96位的熵,这至少与蓝牙核心中的熵一样好 规范2.0 + EDR及更早版本使用16个字符,字母数字,区分大小写的PIN。 对于支持安全连接功能的设备,使用FIPS认可的P-256椭圆曲线,安全简单配对具有大约128位的熵。 ECDH密码术是在标准Diffie Hellman(通常称为DH76)上选择的,因为它在计算上不太复杂,并且不太可能超过普通蓝牙控制器中的低计算能力。

5.2.3中间人Man-In-The-Middle保护

(244页)当用户想要连接两个设备而不是直接相互连接时,他们会在不知不觉中连接到第三个(攻击性)设备,该设备扮演他们试图使用的设备的角色,从而发生中间人(MITM)攻击配对。

  • 第三个设备在两个设备之间中继信息,从而产生直接连接的错觉
  • 攻击设备甚至可以窃听两个设备之间的通信(称为主动窃听)
  • 并且能够插入和修改连接上的信息。

在这种类型的攻击中,两个设备之间交换的所有信息都受到损害,并且攻击者可能将命令和信息注入到每个设备中,从而可能损害设备的功能。

  • 成为攻击受害者的设备只有在攻击者在场时才能进行通信。
  • 如果攻击者未激活或超出范围,则两个受害设备将无法直接相互通信,用户将注意到它。

为了防止MITM攻击,安全简单配对提供了两种用户辅助的数字方法:数字比较密钥输入

如果安全简单配对使用16位十进制数字,则可用性与使用16位十进制数字的传统配对相同。在这种情况下,MITM成功插入其自己的链接密钥的机会是1016 = 253个配对实例中的1,这是不必要的低概率。安全简单配对可保护用户免受MITM攻击,其目标是提供MITM可成功攻击的百万分之一的机会。

  • 选择MITM保护的强度,通过使用六位数进行数字比较来最大限度地减少用户影响和密码输入。

选择此级别的MITM保护,因为在大多数情况下,当连接过程因MITM攻击失败而失败时,可以警告用户可能存在MITM攻击者。虽然大多数用户认为只要他们没有泄露密码,但4位密钥足以进行身份​​验证(即银行卡密码),使用6位数字可使安全简单配对符合FIPS标准,这被视为几乎没有可察觉的可用性影响。

5.2.4关联模型

安全简单配对使用四种关联模型,称为数字比较Numeric Comparison,正常工作Just Works,带外密钥输入。以下各节将更详细地描述这些关联模型中的每一个。

使用的关联模型是基于两个设备的I/O能力的确定性。

5.2.4.1 数字比较

(245页)数字比较关联模型设计用于两个设备都能够显示六位数字并且两者都能够让用户输入“是”或“否”的情况。这种模式的一个很好的例子是手机/ PC方案

  • 在两个显示器上向用户显示六位数字(从“000000”到“999999”),
  • 然后询问两个设备上的数字是否相同。
  • 如果在两个设备上都输入“是”,则配对成功。

数字比较有两个目的。

  • 首先,由于许多设备没有唯一的名称,因此它向用户提供了正确的设备彼此连接的确认。
  • 其次,数字比较可以防止MITM攻击(参见第5.2.3节)。

请注意,与数字比较和蓝牙核心规范及早期版本使用的PIN条目模型之间的加密观点存在显着差异。

  • 在数字比较关联模型中,六位数字是安全算法的工件,而不是蓝牙安全模型中的输入。
  • 所显示的数字对于两个设备之间交换的加密编码数据无关。

5.2.4.2 正常工作

Just Works关联模型主要设计用于至少有一个设备没有能够显示六位数字的显示器,也没有能够输入六位十进制数字的键盘的情况。

此型号的一个很好的例子是手机/单声道耳机方案,其中大多数耳机没有显示器。

Just Works关联模型使用数字比较协议,但用户永远不会显示数字,应用过程可能只是要求用户接受连接(确切的实现取决于最终产品制造商)。

  • Just Works关联模型提供与针对被动窃听的数字比较关联模型相同的保护,
  • 但不提供针对MITM攻击的保护。

与今天使用固定PIN的耳机的体验相比,Just Works关联模型的安全级别相当高,因为实现了对被动窃听的高度保护(?)。

5.2.4.3 带外Out of Band

(246页)带外(OOB)关联模型主要用于使用带外机制来发现设备以及交换或传输配对过程中使用的加密号码的场景。

为了从安全的角度来看是有效的,与蓝牙无线电信道相比,

  • 带外信道应该在安全性方面提供不同的属性。
  • 带外信道应该抵抗MITM攻击。

如果不是,则在身份验证期间可能会危及安全性。

根据带外机制,用户的体验略有不同。例如,使用近场通信(NFC)解决方案,用户将首先将两个设备一起触摸,并且可以选择配对第一个设备与其他设备。如果输入“是”,则配对成功。

这是一种单一触摸体验,其中交换的信息在两个设备中使用。交换的信息包括发现信息(例如蓝牙设备地址)以及加密信息。其中一个设备将使用蓝牙设备地址与其他设备建立连接。在认证期间使用其余的交换信息。

OOB机制可以实现为只读或读/写。

  • 如果一方是只读的,则执行单向认证。
  • 如果双方都是读/写,则执行双向认证。

仅当配对过程已通过先前的OOB信息交换激活并且设备中的一个(或两个)给出OOB作为IO能力时,才选择OOB协议。该协议使用已交换的信息,并简单地要求用户确认连接。

OOB关联模型支持任何可以交换加密信息和蓝牙设备地址的OOB机制。 OOB关联模型不支持用户激活蓝牙连接并且仅希望使用OOB进行身份验证的解决方案。

5.2.4.4 密码输入

密钥条目关联模型主要是针对一个设备具有输入功能但无法显示六位数而另一个设备具有输出功能的情况而设计的。这个模型的一个很好的例子是PC和键盘场景

在具有显示器的设备上向用户显示六位数字(从“000000”到“999999”),然后要求用户在另一个设备上输入该号码。如果在第二个设备上输入的值正确,则配对成功。

请注意,密钥输入与蓝牙核心规范2.0 + EDR和早期版本使用的PIN条目模型之间的加密观点存在显着差异。 在Passkey Entry关联模型中,(247页)六位数字与安全算法无关,而不是对其的输入,如2.0 + EDR安全模型中的情况。知道输入的数字对解密两个设备之间交换的编码数据没有好处。

5.2.4.5 关联模型概述

下图显示了从用于发现的技术的角度来看安全简单配对,然后是不同的关联可能性。

蓝牙架构(10)—— 5 安全概述(5.1 安全架构 & 5.2 BR / EDR安全简单配对 & 5.3 仅安全连接模式 &5.4 LE安全)_第3张图片

5.3 仅安全连接模式

当设备要求在BR / EDR物理传输上仅使用FIPS认可的算法时,它应在BR / EDR物理传输上进入仅安全连接模式。仅安全连接模式有时称为“FIPS模式。当设备具有高安全性而不是保持与不支持安全连接的设备的向后兼容性时,应该使用此模式。主机将强制在配对期间使用P-256椭圆曲线,使用安全认证序列,并使用AES-CCM进行加密。

当设备要求在LE物理传输上仅使用FIPS认可的算法时,它应该在LE物理传输上进入仅安全连接模式。(248页)仅安全连接模式有时称为“FIPS模式。当设备具有高安全性而不是保持与不支持LE安全连接的设备的向后兼容性时,应该使用此模式。在此模式下,主机将强制在配对期间使用P-256椭圆曲线。

如果在仅安全连接模式下配置BR / EDR / LE设备,则只有在两个设备都支持安全连接时才会使用传输。

5.4 LE安全

蓝牙核心规范v4.0中引入的配对机制(称为LE Legacy Pairing)在安全方面与BR / EDR安全功能(如安全简单配对)有一些差异。从用户的角度来看,关联模型类似于BR / EDR安全简单配对,并且具有相同的名称,但在提供的保护质量方面存在差异。

5.4.1 关联模型

蓝牙LE使用四种关联模型,称为Just Works,数字比较,带外和密钥输入。 LE传统配对没有相当于数字比较。

在LE传统配对中,这些关联模型中的每一个都与BR / EDR安全简单配对类似,但有以下例外

  • Just Works和Passkey Entry不提供任何被动窃听保护。这是因为安全简单配对使用Elliptic Curve Diffie-Hellman而LE传统配对则不然。
  • 在LE安全连接配对中,四种关联模型在功能上等同于BR / EDR安全连接。

每种关联模型的使用都基于设备的I / O功能。

5.4.2 密钥生成

(249页)蓝牙LE中的密钥生成由主机在每个LE设备上执行,独立于任何其他LE设备。注意:BR / EDR中的密钥生成在Controller中执行。通过在主机中执行密钥生成,可以升级密钥生成算法,而无需更改控制器。

蓝牙LE使用多个密钥,每个密钥用于特定目的,如下所示:

  • 数据和设备身份验证的机密性
  • 未加密数据的身份验证
  • 设备标识

在LE中,通过将来自每个设备的贡献组合成在配对期间使用的链接密钥来生成单个链接密钥。在BR / EDR中,密钥生成在Controller中执行。

5.4.3 加密

蓝牙LE中的加密使用AES-CCM加密。与BR / EDR一样,LE加密在Controller中执行。

5.4.4 签名数据

蓝牙LE支持通过未加密的ATT承载在具有可信关系的两个设备之间发送经过验证的数据的能力。这是通过使用连接签名解析密钥(CSRK)对数据进行签名来完成的。

  • 发送设备在数据PDU之后放置签名。
  • 接收验证签名,如果验证签名,则假定数据PDU来自可信源。
  • 签名由签名算法生成的消息认证码和计数器组成。
  • 计数器用于防止重放攻击,并在发送的每个签名数据PDU上递增。

5.4.5 隐私功能

蓝牙LE支持通过频繁更改蓝牙设备地址来降低在一段时间内跟踪LE设备的功能。

  • 隐私功能未在GAP发现模式和过程中使用,但在支持时,在连接模式和连接过程中使用它。
  • 为了使用隐私功能的设备重新连接到已知设备,设备地址(称为专用地址)必须可由其他设备解析。
  • 使用在绑定过程期间交换的设备的解析身份密钥(IRK)生成私有地址。

(250页)隐私功能有两种变体。

  • 在第一个变体中,私有地址由主机解析和生成。
  • 在第二种变体中,在主机提供控制器设备标识信息之后,控制器解析并生成私有地址,而不涉及主机。
  • 当Controller中的解析列表不能存储绑定设备所需的所有设备身份解析密钥时,第二变体可能涉及主机。

主机通过添加和删除设备标识来维护解析列表。主机可以向Controller提供完整的解析列表或解析列表的子集。设备标识由对等方的标识地址和本地和对等方的IRK对组成。

  • 当Controller执行地址解析并且主机需要引用解析列表中包含的对等设备时,它使用对等方的设备标识地址。
  • 同样,如果对等方的设备地址已经解决,则从Controller到主机的所有传入事件都将使用对等方的设备标识。
  • 如果Controller无法解析广播中对等方的设备标识地址,则可以将该事件传递给主机以便在主机中进行解析。

在Controller中执行地址解析时,可以进行设备过滤,因为在检查对等设备的设备标识地址是否在白名单之前,可以解析对等设备的标识地址。

图5.4显示了Controller解析列表和Controller白名单之间关系的逻辑表示。解析列表和白名单的实际实现不需要遵循此模型。

蓝牙架构(10)—— 5 安全概述(5.1 安全架构 & 5.2 BR / EDR安全简单配对 & 5.3 仅安全连接模式 &5.4 LE安全)_第4张图片

注意:并非白名单中的所有设备都是设备标识地址。

当仅在主机中执行地址解析时,设备可能会经历增加的功耗,因为必须禁用设备过滤。

————————————————————————————————————————

Reference

1 BT specification Core 4.2,Bluetooth SIG.

————————————————————————————————————————

作者按:蓝牙从业者,潜心学习BT stack,蓝牙协议奇多无比,概述只是开始,网上资料还比较多,学到后面的各种spec就只剩下英文原版可以参考了,遂把自己的笔记发出来,互相交流,互相交流。

你可能感兴趣的:(躺雨没的学习笔记——蓝牙架构)