HIq*_*HIq 5 security encryption android bluetooth-lowenergy
对于 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
Q2。假设出现了一个新的中央(C2)。P1 不再连接到 C1。P1 现在想要与 C2 连接(通过绑定)。P1 是否会使用之前在Case-1中使用(生成)的相同LTK、EDIV、RAND、IRK、来与 C1 连接?CSRK
Q3。BLE 设备是否对其连接的每个新LTK设备使用不同的密钥( 、EDIV、RAND、IRK和)?CSRK
Q4。如果我将 C1 中存储的密钥(LTK、EDIV、RAND、IRK和CSRK)存储在 C2 中,P1 可以使用相同的密钥连接到 C2 吗?是否有可能使这项工作正常进行,或者从逻辑上和安全角度来看这是不正确的?
如果有人能够澄清这些要点,那将是一个救星。谢谢
PS:我正在咨询 core-spec v5.3 和一些在线资源以供阅读。
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 一起使用,并且计数器必须持久存储,因此覆盖每种数据包的正常身份验证加密通常是一个更好的主意,因为通常可以容忍少数加密设置数据包。
| 归档时间: |
|
| 查看次数: |
2937 次 |
| 最近记录: |