BLE 设备是否每次与新设备绑定时都会生成新的 LTK、CSRK 和 IRK?
Does BLE device generates new LTK, CSRK, and IRK every time it bonds with new device?
我有一个关于 BLE 专家的概念性问题,涉及两个 BLE 设备之间发生绑定时生成和交换的密钥。我可能是错的,或者我的问题可能很天真,所以请多多包涵。
考虑下面的例子,我们称它为Case-1.
假设我们有一个外围设备 (P1) 和一个中央设备 (C1)。
P1 发送广告以连接到附近的设备。 C1 启动连接,并且两个设备都开始连接过程,其中两个设备交换它们的 I/O 功能、配对方法和一些密钥。最终,绑定完成后,两台设备都交换了 LTK
、IRK
和 CSRK
,用于加密连接、解析随机地址和解析签名,以及 EDIV
, RAND
.现在 P1 和 C1 都可以在使用这些密钥用于各自目的时进行通信。
我有以下问题:
Q1。 P1 和 C1 之间的连接终止。稍后,当 P1 和 C1 再次连接时,这两个设备是否会使用它们在 Case-1[= 中使用的相同 LTK
、IRK
和 CSRK
密钥60=]?
Q2。假设一个新的中央 (C2) 出现了。 P1 不再连接到 C1。 P1 现在想与 C2 连接(绑定)。在案例一?
Q3。 BLE 设备是否对每个 new[=60 使用不同的密钥(LTK
、EDIV
、RAND
、IRK
和 CSRK
) =] 他们连接的设备?
Q4。如果我将存储在C1中的密钥(LTK
、EDIV
、RAND
、IRK
和CSRK
)取出并存储在C2中,P1是否可以连接到 C2 使用相同的密钥?是否有可能使这项工作有效,或者从逻辑和安全角度来看它是不正确的?
如果有人能澄清这些要点,那将是救命稻草。谢谢
PS: 我正在查阅 core-spec v5.3 和一些在线资源以供阅读。
The connection is terminated between P1 and C1. Later, when both P1 and C1 connect again, will the two devices use the same LTK, IRK, and CSRK keys that they used in Case-1?
是的,他们将使用相同的密钥。你只是断开连接,债券还在那里。您需要移除绑定才能删除密钥。
Let's say a new central (C2) comes into the picture. P1 is no longer connected to C1. P1 now wants to connect (with bonding) with C2. Will the P1 use the same LTK, EDIV, RAND, IRK, and CSRK that it had used(generated) earlier to connect with C1 in Case-1?
不,P1 和 C2 将在配对过程中为此连接提供新密钥。
Do the BLE devices use different keys (LTK, EDIV, RAND, IRK, and CSRK) with every new device they connect with?
是的,他们有。密钥取决于设备,因此每个设备都不同。
If I take the keys (LTK, EDIV, RAND, IRK, and CSRK) stored in the C1 and store them in C2, can P1 connect to C2 using the same keys? Is it possible to make this work or it is incorrect logically and from the security point of view?
理论上是的,但出于安全原因,可能无法从系统中提取密钥。这是一项安全功能,每个连接都使用自己的密钥,以防一个连接被破坏。
如果没有绑定,设备需要为每个新连接配对并使用新密钥。它们会在绑定期间存储,以防止设备下次需要再次配对。
蓝牙核心规范 5.2 版的第 2.3 章进一步描述了配对过程 |第 3 卷,H 部分(第 1636 页)。
IRK 始终不变(在每次配对尝试中共享相同的 IRK)并用于创建随机可解析地址。然后,从远程设备接收 IRK 的设备可以确定随机可解析地址是否属于特定 IRK。
每个债券的所有其他密钥都是唯一的。
CSRK 对于每个绑定尤其必须是唯一的,因为有一个与之关联的计数器,在每次数据包写入时递增以避免重放攻击。如果两个绑定具有相同的 CSRK,这将不会在安全方面发挥作用,因为攻击者可以在冒充绑定 2 时重放来自绑定 1 的数据包(假设绑定 2 的数据包计数器较小)。
LTK、EDIV 和 RAND 用于导出会话密钥,以便下次同一对设备之间的连接连接时进行加密。
因此,问题 1 的答案是,只要绑定存在,同一对设备之间的每次新连接尝试都会重复使用密钥。
如果您特别将 IRK 从一个中心复制到另一个,那么可以在 P1 和 C2 之间建立连接,并且在该连接期间可以使用所有其他密钥,前提是 C2 使用随机可解析地址。这是因为由于随机可解析地址,P1 认为它与 C1 对话。毕竟,在 Link 层上,如果使用相同的 IRK 随机可解析地址,则无法区分 C2 和 C1。
如果不使用随机可解析地址,则通常无法在设备之间复制一组密钥。这是因为密钥与蓝牙设备地址相关联(public 或静态随机)。如果使用不同地址的中心连接到外围设备,外围设备将在其数据库中查找绑定密钥,以发现没有为该地址存储的 LTK、EDIV、RAND、CSRK。在某些实现中,虽然对于加密设置,外围设备将查找基于 EDIV 和 RAND 而不是地址的 LTK。在这种情况下,密钥的复制将起作用,至少可以建立加密。 CSRK 总是从地址中查找。请注意,对于 LE 安全连接,EDIV 和 RAND 始终为 0,因此在这种情况下,始终从地址查找 LTK。
请注意,CSRK 的使用并不广泛。我还没有看到任何实现在实际产品中使用它。由于只有“Write Without Response”命令可以与 CSRK 一起使用,并且必须持久存储计数器这一事实,覆盖每种数据包的正常认证加密通常是一个更好的主意,因为通常可以容忍少数加密设置数据包.
我有一个关于 BLE 专家的概念性问题,涉及两个 BLE 设备之间发生绑定时生成和交换的密钥。我可能是错的,或者我的问题可能很天真,所以请多多包涵。
考虑下面的例子,我们称它为Case-1.
假设我们有一个外围设备 (P1) 和一个中央设备 (C1)。
P1 发送广告以连接到附近的设备。 C1 启动连接,并且两个设备都开始连接过程,其中两个设备交换它们的 I/O 功能、配对方法和一些密钥。最终,绑定完成后,两台设备都交换了 LTK
、IRK
和 CSRK
,用于加密连接、解析随机地址和解析签名,以及 EDIV
, RAND
.现在 P1 和 C1 都可以在使用这些密钥用于各自目的时进行通信。
我有以下问题:
Q1。 P1 和 C1 之间的连接终止。稍后,当 P1 和 C1 再次连接时,这两个设备是否会使用它们在 Case-1[= 中使用的相同 LTK
、IRK
和 CSRK
密钥60=]?
Q2。假设一个新的中央 (C2) 出现了。 P1 不再连接到 C1。 P1 现在想与 C2 连接(绑定)。在案例一?
Q3。 BLE 设备是否对每个 new[=60 使用不同的密钥(LTK
、EDIV
、RAND
、IRK
和 CSRK
) =] 他们连接的设备?
Q4。如果我将存储在C1中的密钥(LTK
、EDIV
、RAND
、IRK
和CSRK
)取出并存储在C2中,P1是否可以连接到 C2 使用相同的密钥?是否有可能使这项工作有效,或者从逻辑和安全角度来看它是不正确的?
如果有人能澄清这些要点,那将是救命稻草。谢谢
PS: 我正在查阅 core-spec v5.3 和一些在线资源以供阅读。
The connection is terminated between P1 and C1. Later, when both P1 and C1 connect again, will the two devices use the same LTK, IRK, and CSRK keys that they used in Case-1?
是的,他们将使用相同的密钥。你只是断开连接,债券还在那里。您需要移除绑定才能删除密钥。
Let's say a new central (C2) comes into the picture. P1 is no longer connected to C1. P1 now wants to connect (with bonding) with C2. Will the P1 use the same LTK, EDIV, RAND, IRK, and CSRK that it had used(generated) earlier to connect with C1 in Case-1?
不,P1 和 C2 将在配对过程中为此连接提供新密钥。
Do the BLE devices use different keys (LTK, EDIV, RAND, IRK, and CSRK) with every new device they connect with?
是的,他们有。密钥取决于设备,因此每个设备都不同。
If I take the keys (LTK, EDIV, RAND, IRK, and CSRK) stored in the C1 and store them in C2, can P1 connect to C2 using the same keys? Is it possible to make this work or it is incorrect logically and from the security point of view?
理论上是的,但出于安全原因,可能无法从系统中提取密钥。这是一项安全功能,每个连接都使用自己的密钥,以防一个连接被破坏。
如果没有绑定,设备需要为每个新连接配对并使用新密钥。它们会在绑定期间存储,以防止设备下次需要再次配对。
蓝牙核心规范 5.2 版的第 2.3 章进一步描述了配对过程 |第 3 卷,H 部分(第 1636 页)。
IRK 始终不变(在每次配对尝试中共享相同的 IRK)并用于创建随机可解析地址。然后,从远程设备接收 IRK 的设备可以确定随机可解析地址是否属于特定 IRK。
每个债券的所有其他密钥都是唯一的。
CSRK 对于每个绑定尤其必须是唯一的,因为有一个与之关联的计数器,在每次数据包写入时递增以避免重放攻击。如果两个绑定具有相同的 CSRK,这将不会在安全方面发挥作用,因为攻击者可以在冒充绑定 2 时重放来自绑定 1 的数据包(假设绑定 2 的数据包计数器较小)。
LTK、EDIV 和 RAND 用于导出会话密钥,以便下次同一对设备之间的连接连接时进行加密。
因此,问题 1 的答案是,只要绑定存在,同一对设备之间的每次新连接尝试都会重复使用密钥。
如果您特别将 IRK 从一个中心复制到另一个,那么可以在 P1 和 C2 之间建立连接,并且在该连接期间可以使用所有其他密钥,前提是 C2 使用随机可解析地址。这是因为由于随机可解析地址,P1 认为它与 C1 对话。毕竟,在 Link 层上,如果使用相同的 IRK 随机可解析地址,则无法区分 C2 和 C1。
如果不使用随机可解析地址,则通常无法在设备之间复制一组密钥。这是因为密钥与蓝牙设备地址相关联(public 或静态随机)。如果使用不同地址的中心连接到外围设备,外围设备将在其数据库中查找绑定密钥,以发现没有为该地址存储的 LTK、EDIV、RAND、CSRK。在某些实现中,虽然对于加密设置,外围设备将查找基于 EDIV 和 RAND 而不是地址的 LTK。在这种情况下,密钥的复制将起作用,至少可以建立加密。 CSRK 总是从地址中查找。请注意,对于 LE 安全连接,EDIV 和 RAND 始终为 0,因此在这种情况下,始终从地址查找 LTK。
请注意,CSRK 的使用并不广泛。我还没有看到任何实现在实际产品中使用它。由于只有“Write Without Response”命令可以与 CSRK 一起使用,并且必须持久存储计数器这一事实,覆盖每种数据包的正常认证加密通常是一个更好的主意,因为通常可以容忍少数加密设置数据包.