[蓝牙 Mesh Zephyr]-[005]-Key
创始人
2024-03-17 03:43:17
0

[蓝牙 Mesh & Zephyr]-[005]-Key

1. Keys

Mesh Profile specification 定义了 2 种key:application keys (AppKey)和 network keys(NetKey)。AppKeys 用于保护 upper transport layer 的通信安全,NetKeys 用于保护 network layer 的通信安全。两类 key 在节点之间时共享的。有一个特殊的 application key 称为 device key(DevKey),每个节点都是唯一的,只有节点自己和 Configuration Client 知道,用于保护节点和 Configuration Client 之间的通信安全。
每个 Application key 都绑定到 一个 Network key,这意味着 application key 只可以在绑定到的 Network key 上下文使用;一个 device key 隐式绑定到所有 network key。
下面是一个 application keys 绑定到 network keys 的例子:
在这里插入图片描述

2. Application Keys

2.1. Device Key (特殊 App Key)

device key(DevKey)是 一个 access layer key,在节点加入网络时生成,只有节点和一个 Configuration Client 知道。这个 device key 会绑定到节点中所有的 Network key。绑定不可以更改。下图描述了 device key 的派生:
在这里插入图片描述
DevKey 应该派生于 ECDHSecret 和 ProvisioningSalt,如下面公式所示:
DevKey = k1(ECDHSecret, ProvisioningSalt, “prdk”)
ProvisioningSalt 定义在 章节 5.4.2.5,ECDHSecret 定义在 章节 5.4.2.3。

2.2. Application Keys

application key(AppKey)应该使用定义在 Volume 2, Part H, Section 2 of the Core Specification [1]. 的随机数生成器生成。
application key identifier(AID)用于识别 application key,Provisioner 使用 “Config AppKey Add ” 配置到节点上,AID的派生如下图所述:

在这里插入图片描述

3. Network keys

3.1. Network key

network key(NetKey)应该使用在 Volume 2, Part H, Section 2 of the Core Specification [1] 中的定义的随机数生成器生成,网络密钥层次结构如图3.38所示。
在这里插入图片描述
在配网过程中,Provisioner 使用 “Provisioning Data” 将第一个 NetKey 发送到节点上,如果需要将主网的节点添加到一个子网中,可以使用 “Config NetKey Add” 进行添加。

3.2. Encryption Key, and Privacy Key

Encryption Key, and Privacy Key 也是 NetKey,用于加密Network PDU 。
每个 Network PDU 都使用由 NID,Encryption Key 和 Privacy Key 组成的 security material 加密。
NID 是一个 7 bit 的值,用于标识用于加密 Network PDU 的 security material。
注意:每个 NID 最多可以对应 2的121次方个 key,NID 值只能指示用于保护此 Network PDU 的安 security material。
NID,EncryptionKey 和 PrivacyKey 由 k2 函数使用 security credentials 作为输入派生的。
Master security material 派生于 master security credentials:

  • NID || EncryptionKey || PrivacyKey = k2(NetKey, 0x00)

Friendship security material 派生于 friendship security credentials:

  • NID || EncryptionKey || PrivacyKey = k2(NetKey, 0x01 || LPNAddress || FriendAddress || LPNCounter || FriendCounter)

LPNAddress 是一个单播地址,是 Friend Request message 的源地址。
FriendAddress 是一个单播地址,是 Friend Offer message 的源地址。
LPNCounter 是Friend Request message 中的 LPNCounter 字段。
FriendCounter 是 Friend Offer message 中的 FriendCounter 字段。

对于在具有友谊关系的 Low Power node and Friend node 之间发送的 Network PDUs,使用Friendship security material。
对于所有其他 Network PDUs ,使用 Master security material。

3.3. IdentityKey

IdentifyKey 派生于 network key,每个 network key 生成一个 IdentifyKey。

salt = s1(“nkik”) 
P = “id128” || 0x01 
IdentityKey = k1 (NetKey, salt, P) 

用于 Advertising with Node Identity 过程,生成一个 Hash值,如下:
在这里插入图片描述

3.4. BeaconKey

BeaconKey 派生于 network key,每个 network key 生成一个 BeaconKey。

salt = s1(“nkbk”) 
P = “id128” || 0x01 
BeaconKey = k1 (NetKey, salt, P) 

在这里插入图片描述
Beacon Key 用于 Secure Network beacon ,生成一个校验值。

相关内容

热门资讯

专业文章丨跨境模具纠纷高效和解... 【珠海律师、珠海法律咨询、珠海律师事务所、京师律所、京师珠海律所】 (本文转载自北京市京师律师事务所...
全总等三部门联合发布2025年... 新华社北京12月25日电(记者樊曦、冯家顺)记者12月25日从全国总工会了解到,全国总工会与最高人民...
对“问题法规”要及时纠正 从事网约车经营要求车辆购置总价不得低于12万元、残疾人机动轮椅车登记需有本市常住户籍……日前提请全国...
专业文章丨相对不起诉:一起交通... 【珠海律师、珠海法律咨询、珠海律师事务所、京师律所、京师珠海律所】 (本文转载自北京市京师郑州律师事...
巡回审判进商场 两起纠纷就地解 央广网长春12月26日消息(记者舒震)“真没想到法官能把法庭‘搬’到商场里来,更没想到当庭就把我们的...
专业文章丨赠与车辆未交付 可以... 【珠海律师、珠海法律咨询、珠海律师事务所、京师律所、京师珠海律所】 (本文转载自北京市京师合肥律师事...
广西重拳打击制售假劣农资犯罪 ... 中新网南宁12月26日电 (韦小婷)广西壮族自治区农业农村厅25日介绍,今年开春以来,该厅在广西开展...
政策面前瞻:多元工具下的宽松红... 我们来聊聊今年政策的整体变化。感受特别明显的是,今年政策利率的锚发生了一些切换,包括货币政策投放工具...
政策力挺消费!这波逢低布局机会... 板块轮动已经成为A股常态。被看作“长坡厚雪”的消费板块,已经走过了一段漫长的调整路,估值也跌回了历史...