信任控制:黑白名单与设备准入
学习提示
协调器能不能"不让某些节点加入"?节点能不能"只加入指定的网络"?能,但 ZigBee 3.0 没有叫"黑名单"的单个开关——它是靠"信任中心 + 应用层"四层组合实现的。这一页讲清双方的信任控制手段。
一句话理解
协调器 = 门卫(管让不让进),节点 = 访客(管进哪扇门)——双方都能做黑白名单,但都不是一个函数,而是一套策略。
一. 协调器侧:不让某些节点加入(4 招)
| 手段 | 机制 | 效果 | 典型 API(Z-Stack 3.0.1) |
|---|---|---|---|
| ① 安装码白名单 | 只有"登记过安装码"的设备才允许加入,没登记的一律拒 | 标准强安全"白名单",黑名单的镜像 | bdb_AddInstallCode() 登记 |
| ② 加入回调决策 | 每个设备加入瞬间,应用层回调里查自己的黑名单表,决定留或踢 | 应用自定义黑名单 | ZDO_RegisterForJoiningDeviceCb() / ZDO_JoiningDeviceCb_t |
| ③ 全局关门 | 关闭允许加入窗口 | 谁都进不来(不是黑名单,是停业) | ZDO_PermitJoiningRequest(0) / NLME_PermitJoiningRequest |
| ④ 运行时踢人 | 对已加入的节点远程踢出,配合 ①② 防止它再回来 | 清理"混进来的" | ZDO_LeaveReq() / Mgmt_Leave_req(0x0024) |
最常用组合:① 白名单准入 + ④ 踢人——"进来要登记、混进来就清走",这就是实际产品里的"设备管理黑名单"。
二. 节点侧:挑网络、拒绝网络、通信白名单(3 招)
| 手段 | 机制 | 效果 |
|---|---|---|
| ⑤ 只进指定的门 | 预置 EPID(写 ZCD_NV_EXTENDED_PAN_ID),steering 就只匹配这个网络;或应用层扫描后自己挑网(NLME_JoinRequest 指定 PAN/EPID) | 节点级"网络白名单":其他网络看见也不入 |
| ⑥ 黑名单网络 | 应用层维护"不加入的 EPID/PAN 列表",在扫描结果回调里过滤跳过 | 明确拒绝加入某些网络 |
| ⑦ 通信白名单 | 建立链路密钥表(APSME_AddKey()):只有持有对应"暗号本"的设备,才能和它安全通信 | 入网后还能继续过滤"谁配跟我说话" |
三. 一张图:双方的"信任控制矩阵"
🛡️
协调器(门卫)让不让进
① 安装码白名单:登记过才放行,没登记一律拒
bdb_AddInstallCode()
bdb_AddInstallCode()
② 加入回调决策:加入瞬间查黑名单表,决定留/踢
ZDO_JoiningDeviceCb
ZDO_JoiningDeviceCb
③ 全局关门:关 PermitJoining 窗口,谁都进不来
ZDO_PermitJoiningRequest(0)
ZDO_PermitJoiningRequest(0)
④ 运行时踢人:已混入的远程踢出,配合①②防再入
Mgmt_Leave_req
Mgmt_Leave_req
🧭
节点(访客)进哪扇门
⑤ 只进指定的门:预置 EPID,steering 只匹配它;或扫描后自己挑
ZCD_NV_EXTENDED_PAN_ID / NLME_JoinRequest
ZCD_NV_EXTENDED_PAN_ID / NLME_JoinRequest
⑥ 黑名单网络:维护"不加入的 EPID/PAN 列表",扫描回调里过滤
应用层过滤
应用层过滤
⑦ 通信白名单:链路密钥表——没"暗号本"的设备,消息解不开也不处理
APSME_AddKey()
APSME_AddKey()
四. 组合策略:怎么搭出一套"设备准入"方案
- 默认安全(消费级):① 安装码白名单 + ③ 允许加入窗口——按一下配对键,登记过的设备进来;
- 高安全(门锁 / 安防 / 工业):① + ② + ④ + ⑦——每台设备登记安装码、应用层查黑名单、异常设备立即踢出、通信还要对暗号(链路密钥);
- 多网络隔离:⑤ 预置 EPID + ⑥ 黑名单网络——节点只进指定网络,主动避开不信任的网络。
小结
黑白名单不是一个函数,是一套策略:协调器用"登记表 + 查名单 + 关门 + 踢人"管进人,节点用"只认门牌 + 跳过黑名单 + 只跟有暗号的人说话"挑门。① 是标准 ZigBee 3.0 的准入白名单(强安全),② 是应用自定义黑名单的钩子,⑦ 是入网后还能继续过滤的通信白名单。
本章自测
一、单项选择题(每题 10 分,共 50 分)
答完全部 5 题自动判分并计入学习档案(需登录后作答)
🔒 登录后才能作答,成绩将计入学习档案。 去登录 / 注册
1 ZigBee 3.0 标准中,协调器实现"准入白名单"(没登记的设备一律拒绝加入)的标准机制是?
2 应用层想自定义"黑名单"(设备加入瞬间查表决定留或踢),应注册哪个回调?
3 协调器"全局关门"(关闭允许加入窗口,谁都进不来)应调用?
4 把已加入网络的设备远程踢出,应使用?
5 节点入网后仍想过滤"谁配跟我通信",应建立?
已完成 0 / 5 题
二、问答题(每题 25 分,共 50 分)
作答并提交后,参考答案要点才会展示(需登录,计入学习档案)
🔒 登录后才能作答,提交后查看参考答案(计入学习档案)。 去登录 / 注册