BLE 设备每次与新设备绑定时是否都会生成新的 LTK、CSRK 和 IRK?

HIq*_*HIq 5 security encryption android bluetooth-lowenergy

对于 BLE 专家,我有一个概念性问题,涉及两个 BLE 设备之间发生绑定时生成和交换的密钥。我可能是错的,或者我的问题可能很天真,所以请耐心等待。

考虑以下示例,我们将其称为Case-1

假设我们有一个外围设备 (P1) 和一个中央设备 (C1)。

P1 发送广告以连接到附近的设备。C1 发起连接,两个设备启动连接过程,其中两个设备交换其 I/O 功能、配对方法和一些密钥。最终,一旦绑定完成,两个设备就交换了LTKIRKCSRK用于加密连接、解析随机地址和解析签名以及EDIVRAND。现在,P1 和 C1 都可以在使用这些密钥实现各自目的时进行通信。

我有以下问题:

Q1. P1 和 C1 之间的连接终止。稍后,当 P1 和 C1 再次连接时,这两个设备是否会使用在Case-1中使用的相同LTKIRK、 和键?CSRK

Q2。假设出现了一个新的中央(C2)。P1 不再连接到 C1。P1 现在想要与 C2 连接(通过绑定)。P1 是否会使用之前在Case-1中使用(生成)的相同LTKEDIVRANDIRK、来与 C1 连接?CSRK

Q3。BLE 设备是否对其连接的每个LTK设备使用不同的密钥( 、EDIVRANDIRK和)?CSRK

Q4。如果我将 C1 中存储的密钥(LTKEDIVRANDIRKCSRK)存储在 C2 中,P1 可以使用相同的密钥连接到 C2 吗?是否有可能使这项工作正常进行,或者从逻辑上和安全角度来看这是不正确的?

如果有人能够澄清这些要点,那将是一个救星。谢谢

PS:我正在咨询 core-spec v5.3 和一些在线资源以供阅读。

Emi*_*mil 8

IRK 始终是恒定的(在每次配对尝试中共享相同的 IRK)并用于创建随机可解析地址。从远程设备接收 IRK 的设备可以确定随机可解析地址是否属于特定 IRK。

对于每个债券,所有其他密钥都是唯一的。

CSRK 对于每个绑定来说必须是唯一的,因为有一个与其关联的计数器,在每次数据包写入时都会递增以避免重放攻击。如果两个绑定具有相同的 CSRK,那么这在安全性方面是行不通的,因为攻击者可以在模拟绑定 2 时重放来自绑定 1 的数据包(假设绑定 2 的数据包计数器较小)。

LTK、EDIV 和 RAND 用于导出会话密钥,以便下次同一对设备之间的连接进行加密。

因此,问题 1 的答案是,只要绑定存在,同一对设备之间的每次新连接尝试都会重复使用密钥。

如果您特别将 IRK 从一个中心复制到另一个中心,那么可以在 P1 和 C2 之间建立连接,并且如果 C2 使用随机可解析地址,则可以在此连接期间使用所有其他密钥。这是因为 P1 认为由于随机可解析地址,它正在与 C1 进行对话。毕竟,在链路层上,如果随机可解析地址与相同的 IRK 一起使用,则不可能区分 C2 和 C1。

如果不使用随机可解析地址,则通常无法在设备之间复制一组密钥。这是因为密钥与蓝牙设备地址(公共或静态随机)相关联。如果使用不同地址的中央设备连接到外围设备,则外围设备将在其数据库中查找绑定密钥,以发现没有为此地址存储的 LTK、EDIV、RAND、CSRK。在某些实现中,对于加密设置,外设将根据 EDIV 和 RAND 而不是地址查找 LTK。在这种情况下,复制密钥将起作用,至少可以建立加密。不过,CSRK 始终是从地址中查找的。请注意,对于 LE 安全连接,EDIV 和 RAND 始终为 0,因此在这种情况下,始终从地址查找 LTK。

请注意,CSRK 的使用并不广泛。我还没有看到任何实现在实际产品中使用它。由于只有“Write Without Response”命令可以与 CSRK 一起使用,并且计数器必须持久存储,因此覆盖每种数据包的正常身份验证加密通常是一个更好的主意,因为通常可以容忍少数加密设置数据包。