Matter分析与安全验证
上一篇文章简单的介绍了Matter的架构、实现、以及部分安全验证过程;这里继续补充一下Matter的其他安全验证流程,以更好的实现Matter安全。

Matter提供的安全实现流程大概总结起来是这个流程

硬件信任根→安全启动→动态证书→加密通信→ACL权限控制→DCL全局验证

上一篇介绍了前面的部分,这里再根据这个流程来汇总一下;

Matter安全实现流程

🔒 1. 硬件信任根(Hardware Root of Trust)

  • 实现机制
    • 安全芯片固化密钥:设备出厂时在安全芯片(如Silicon Labs的Secure Vault)中预烧唯一密钥对和厂商证书(DAC),私钥不可读取仅用于签名运算。
    • 物理防篡改设计:采用防物理探测的存储区域(Secure Enclave),确保密钥不被提取(如Nordic nRF54系列芯片)。
  • 作用:为后续安全启动和证书链提供不可篡改的信任起点,防止设备克隆和固件伪造。

🚀 2. 安全启动(Secure Boot)

  • 启动验证流程
    1. Bootloader使用硬件信任根的公钥验证首层固件签名(ECDSA算法)。
    2. 逐级验证:每个固件模块验证下一级签名,形成信任链(Chain of Trust)。
    3. 失败处理:签名无效则终止启动或回滚至安全版本(双镜像设计)。
  • 关键配置:芯片OTP存储器锁定启动策略(如禁用调试接口、强制加密OTA)。
  • 防攻击设计
    • 前面两部分需要硬件安全支持,在安全芯片的支持下实现,但是大部分低成本的芯片都不具有安全能力,但是我们给方案的时候也需要考虑类似的方案,硬件信任根还是需要落地,但是没有了安全芯片的支持,就需要放到不可读取区域来防止复制和伪造。

📜 3. 动态证书(Dynamic Certificates)

  • 证书体系结构
    • DAC(设备认证证书):出厂预置,包含设备唯一ID(VID/PID)和公钥,用于身份证明。
    • NOC(节点操作证书):配网时由控制器动态签发,绑定设备与特定Fabric网络。
  • 证书生命周期
    • 签发:配网阶段控制器通过CSR请求生成设备唯一NOC,私钥在设备安全区域生成。
    • 吊销:控制器可推送证书吊销列表(CRL),阻断恶意设备。
  • 防攻击设计
    • 设备配网认证阶段使用,这里的DAC证书的颁发者是产品认证中间证书,一般是设备厂商持有,所以设备认证阶段要通过DAC进行,而不是跟常规的设备认证通过某个设备序列号或者MAC信息来判断设备身份;那么这里就要防止设备唯一NOC伪造的情况出现,防止客户端自签NOC证书的设计出现,要让设备厂商来签发NOC证书,并做好身份验证以及权限控制。

📡 4. 加密通信(Encrypted Communication)

  • 分层加密协议
    • PASE(配网阶段):基于配网密码(QR码/PIN)生成临时会话密钥(AES-128),保护初始配置数据传输。
    • CASE(运行阶段):基于NOC证书交换,通过ECDH协商长期会话密钥,所有通信使用AES-128-CCM加密并附加消息认证码(MAC)。
  • 防攻击设计
    • 消息计数器:每个报文携带递增计数器,防重放攻击。
    • 密钥轮换:会话密钥定期更新(默认24小时),降低密钥泄露风险。

🛡️ 5. ACL权限控制(Access Control Lists)

  • 规则实现
    • 动态策略:ACL规则以JSON格式存储于控制器,定义设备/用户的操作权限(如Operate开关权限、Manage规则修改权限)。
    • 执行逻辑:设备处理命令前,通过安全会话向控制器请求授权,验证节点ID和操作权限。
  • 示例场景:门锁设备仅允许管理员角色执行Unlock命令,传感器仅可Read状态。
  • 详细分析见后文

🌐 6. DCL全局验证(Distributed Compliance Ledger)

  • 验证流程
    1. 设备入网时向控制器提交DAC证书链(DAC→PAI→PAA)。
      1. 设备认证证书 (DAC)
      2. 产品认证中间证书 (PAI)
      3. 产品认证根证书 (PAA)
    2. 控制器访问DCL节点,验证:
      • 证书有效性:PAA根证书是否在DCL信任列表。
      • 设备合规性:VID/PID是否通过CSA认证,固件哈希是否匹配。
      • 吊销状态:查询DCL中的证书吊销列表(CRL)。
    3. 动态拦截:若DCL返回未认证或已吊销,控制器拒绝设备入网。
  • 去中心化优势:DCL由CSA成员节点共识维护,防单点篡改(如伪造证书需攻破多数节点)

看完整个Matter的安全实现流程,可以看出对于安全验证这块基本上都设计的非常的全面,但是开发者按照Matter的设计文档来实现时,却是会漏洞百出,为什么会出现这种情况呢?这里列举几种可能性,以及对应的坑点;

  1. 成本
    1. 拿硬件信任根和安全启动来说,这里是需要硬件成本的,在芯片选型这块就需要决策,如果一开始因为成本原因采用不具有安全能力的芯片的话就无从谈起;
    2. 有些情况是选择了具有安全能力的芯片,但是开发者却没有使用安全芯片的能力去设计实现,调用相关安全能力也是挺无奈的,当然这块是偷懒行为;
    3. 当然了,还有一种是芯片厂商的锅,对外宣传具有安全能力,宣发文档写的该有都有,实际对接的接口文档却没有办法使用;
  2. 开发者理解错误
    1. 这块属于常见问题,类似于云端验证和实现的部分放到客户端去实现了;比如说动态证书部分NOC证书的生成,如果放到客户端生成,那么攻击者就可以自己伪造自签NOC证书;
  3. 业务实现设计错误(偷懒)
    1. 当开发者已经按照所有的验证流程来完成Matter的安全实现了,包括前面的安全芯片、设备认证、加密通信以及Matter的证书链;但是ACL权限却是懒得去配置,或者说依旧是客户端自己维护默认的,这种情况就会导致设备权限混乱的问题;
    2. 那么ACL规则要如何配置?

ACL规则参数解析

1. ACL 核心参数详解

(1) Subject(主体)

  • 含义:被授权操作的设备标识,即执行操作的设备 Node ID。

  • 配置选项

    • 单一设备:0x123(16 进制 Node ID)
    • 设备组:Group:LightSwitches(需提前定义设备组)
    • 生态域(Fabric)内所有设备:Fabric:All
  • 案例模板

    Subject:Type: SingleDevice# 单一设备Value: 0x123# 开关的 Node ID
    

(2) Target(目标)

  • 含义:被操作的资源,支持三级粒度控制。

  • 配置选项

    类型示例作用范围
    EndpointEndpoint: 1指定设备的单个端点(如灯泡)
    ClusterCluster: OnOffServer端点内的功能模块(如开关控制)
    DeviceTypeDeviceType: DimmableLight同一类型的所有设备(如所有调光灯)
  • 案例模板

    Target:Type: Cluster# 目标类型为 ClusterValue: OnOffServer# 操作 OnOff 功能Scope: Endpoint:1# 限制在端点 1 生效
    

(3) Permission(权限)

  • 含义:定义操作级别,分三级权限。

  • 配置选项

    权限操作范围示例
    View读取属性(如状态查询)读取灯泡开关状态
    Operate触发命令(如开关控制)发送 Toggle 命令
    Manage管理 ACL(如增删规则)允许添加新控制设备
  • 案例模板

    Permission: Operate# 允许触发命令(如开关灯泡)
    

(4) AuthMode(认证模式)

  • 含义:设备间通信的安全认证方式。

  • 配置选项

    模式适用场景安全性
    PASE配网阶段临时认证(如扫码配对)中低
    CASE运行时长期认证(如设备间控制)
  • 案例模板

    AuthMode: CASE# 高安全场景(如门锁控制)
    

2. 特殊配置注意事项

(1) 桥接设备配置

非 Matter 设备(如 Zigbee 传感器)需通过桥接接入:

  • 桥接端点映射:将 Zigbee 设备映射为 Matter 端点和 Cluster。

  • 案例片段效果:Zigbee 传感器可触发 Matter 灯泡 。

    Bridge:Endpoint: 2DescriptorCluster:DeviceType: MotionSensor# 映射为运动传感器ServerList: OccupancySensing# 支持占用感知 Cluster
    

(2) 权限冲突解决

当多条规则冲突时,精确匹配优先

# 规则 1:允许所有设备查看灯泡状态ACE1:Subject: Fabric:AllTarget: Endpoint:1Permission: View# 规则 2:禁止特定开关操作灯泡ACE2:Subject: 0x999# 优先级高于 ACE1Target: Endpoint:1Permission: Deny# 显式拒绝

3. 调试技巧

  • ACL 验证工具:使用 chip-tool 发送测试命令:

    ./chip-tool onoff toggle 0x123 1 --paakeyt 123456
    
  • 日志分析:检查设备日志中的 Access Control 模块,确认规则匹配结果 。

chip-tool是Matter测试条件中的一个工具,另一篇文章中介绍该工具的具体使用。

Matter 测试套件chip-tool


4. 安全实现

Matter ACL 通过 主体-目标-权限-认证 四元组实现精细控制,开发者需注意:

  1. 最小权限原则:避免滥用 Manage 权限。
  2. 认证分级:门锁等设备强制使用 CASE
  3. 桥接兼容:非 Matter 设备需完整映射端点和 Cluster

在实际开发场景中,业务和开发为了偷懒会直接所有设备端点都设置为"endpoint": 0,也就是控制网络中所有设备都是根端点,就会导致所有设备都是管理员权限;

下面给一个完整Matter网络ACL权限控制列表:

{"acl": {// ACL元数据"version": "Matter-1.3",  // 遵循的规范版本"fabric": "0xABCD1234",   // 所属生态域标识符"description": "智能家居设备控制策略","accessControlEntries": [{// 规则1:手机App管理员权限"label": "Admin-FullAccess","subject": "0x789",     // 管理员设备Node ID"target": {"endpoint": 0,        // 设备根端点"cluster": "ACLServer" // 管理ACL的集群},"permission": "Manage", // 允许修改ACL规则"authMode": "CASE"      // 强制证书认证[1](@ref)},{// 规则2:运动传感器联动所有调光灯"label": "Sensor-LightControl","subject": "0x456",     // 传感器Node ID"target": {"deviceType": "DimmableLight", // 目标设备类型"cluster": "LevelControlServer" // 亮度控制集群},"permission": "Operate", // 允许调整亮度"authMode": "CASE"       // 高安全认证[2](@ref)},{// 规则3:开关控制特定灯泡"label": "Switch-Bulb1","subject": "0x123",     // 开关Node ID"target": {"endpoint": 1,        // 灯泡端点"cluster": "OnOffServer" // 开关集群},"permission": "Operate", // 允许开关命令"authMode": "CASE"       // 标准认证[1](@ref)},{// 规则4:桥接Zigbee传感器只读权限"label": "Bridge-Sensor-Read","subject": "0x555",     // 桥接设备Node ID"target": {"endpoint": 2,        // 映射端点"cluster": "OccupancySensing" // 占用感知集群},"permission": "View",    // 仅允许读取状态"authMode": "PASE"       // 配网阶段临时认证[1](@ref)},{// 规则5:显式拒绝未知设备"label": "Deny-Unknown","subject": "Fabric:All", // 所有设备"target": {"deviceType": "DoorLock" // 门锁设备},"permission": "Deny",    // 显式拒绝访问"authMode": "CASE"       // 强制生效}],// 特殊配置区"securityParameters": {"certificateMode": "PAA-TRUST", // 使用根证书信任链[1](@ref)"groupKeyRotation": 3600        // 组密钥轮换周期(秒)}
}

参考

IOT知识-通信协议之Matter(1)

matter的Commissioning(入网过程)整体流程、加密方式、通信信息结构_wx618b454ed38ca的技术博客_51CTO博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98143.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98143.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/98143.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从基础到实践:Web核心概念与Nginx入门全解析

从基础到实践:Web核心概念与Nginx入门全解析 文章目录从基础到实践:Web核心概念与Nginx入门全解析一、Web是什么?从基本概念到核心架构1.1 Web的本质:一个超文本信息系统1.2 B/S架构:Web的“前端-后端”分工模式二、一…

【完整源码+数据集+部署教程】加工操作安全手套与手部检测系统源码和数据集:改进yolo11-cls

背景意义 研究背景与意义 随着工业自动化和智能制造的迅速发展,工人安全问题日益受到重视。特别是在涉及重型机械和危险操作的工作环境中,工人手部的安全保护显得尤为重要。传统的安全手套虽然在一定程度上能够保护工人的手部,但在复杂的加工…

代码随想录算法训练营第一天 || (双指针)27.移除元素 26.删除有序数组中的重复项 283.移动零 977.有序数组的平方

代码随想录算法训练营第一天 || (双指针)27.移除元素 26.删除有序数组中的重复项 283.移动零 27.移除元素 暴力方法 同向双指针双指针 自己AC的解答 卡哥的讲解 26.删除有序数组中的重复项 同向双指针 283.移动零 自己解答 灵神做法(同向双指针+交换) 977.有序数组的平方 暴…

Java全栈开发工程师面试实录:从基础到实战的深度探讨

Java全栈开发工程师面试实录:从基础到实战的深度探讨 一、初识与自我介绍 面试官(李工): 你好,欢迎来到我们公司。我是负责技术面试的李工,今天我们将进行一场关于Java全栈开发的深入交流。你可以先简单介绍…

Kafka:Java开发的消息神器,你真的懂了吗?

Kafka:Java开发的消息神器,你真的懂了吗? 一、Kafka 是什么鬼? 想象一下,你在网上疯狂剁手后,满心期待着快递包裹的到来。这时候,快递站就像是 Kafka,而你的包裹就是消息。快递站接…

深度学习之第八课迁移学习(残差网络ResNet)

目录 简介 一、迁移学习 1.什么是迁移学习 2. 迁移学习的步骤 二、残差网络ResNet 1.了解ResNet 2.ResNet网络---残差结构 三、代码分析 1. 导入必要的库 2. 模型准备(迁移学习) 3. 数据预处理 4. 自定义数据集类 5. 数据加载器 6. 设备配置…

Pinia 两种写法全解析:Options Store vs Setup Store(含实践与场景对比)

目标:把 Pinia 的两种写法讲透,写明“怎么写、怎么用、怎么选、各自优缺点与典型场景”。全文配完整代码与注意事项,可直接当团队规范参考。一、背景与准备 适用版本:Vue 3 Pinia 2.x安装与初始化: # 安装 npm i pini…

setup函数相关【3】

目录1.setup函数:1.概述:2.案例分析:2.setup函数的优化:(setup语法糖)优化1:优化2:安装插件:安装指令:只对当前项目安装配置vite.config.ts:代码编…

如何通过AI进行数据资产梳理

最终产出 数据资产清单 包含所有数据资产的详细目录,列出数据集名称、描述、所有者、格式、存储位置和元数据。 用途:帮助政府部门清晰了解数据资产分布和状态。 数据质量报告 数据质量评估结果,记录准确性、完整性、一致性等问题及改进建议,基于政府认可的数据质量框架(如…

【传奇开心果系列】Flet框架结合pillow实现的英文文字倒映特效自定义模板特色和实现原理深度解析

Flet框架结合pillow实现的英文文字倒映特效自定义模板特色和实现原理深度解析 一、效果展示截图 二、使用场景 三、特色说明 四、概括说明 五、依赖文件列表 六、安装依赖命令 七、 项目结构建议 八、注意事项 九、Flet 文字倒影效果实现原理分析 (一)组件结构与功能 1. 图像…

2025最新深度学习面试必问100题--理论+框架+原理+实践 (下篇)

2025最新深度学习面试必问100题–理论框架原理实践 (下篇) 在上篇中,我们已经深入探讨了机器学习基础、CNN、RNN及其变体,以及模型优化的核心技巧。 在下篇中,我们将把目光投向更远方,聚焦于当今AI领域最炙手可热的前沿。我们将深…

原子工程用AC6编译不过问题

…\Output\atk_h750.axf: Error: L6636E: Pre-processor step failed for ‘…\User\SCRIPT\qspi_code.scf.scf’修改前: #! armcc -E ;#! armclang -E --targetarm-arm-none-eabi -mcpucortex-m7 -xc /* 使用说明 ! armclang -E --targetarm-arm-none-eabi -mcpuco…

Python有哪些经典的常用库?(第一期)

目录 1、NumPy (数值计算基础库) 核心特点: 应用场景: 代码示例: 2、Pandas (数据分析处理库) 应用场景: 代码示例: 3、Scikit-learn (机器学习库) 核心特点: 应用场景: 代码示例&am…

现代 C++ 高性能程序驱动器架构

🧠 现代 C 高性能程序驱动器架构M/PA(多进程)是隔离的“孤岛”,M/TA(多线程)是共享的“战场”,EDSM(事件驱动)是高效的“反应堆”,MDSM(消息驱动&…

投资储能项目能赚多少钱?小程序帮你测算

为解决电网负荷平衡、提升新能源消纳等问题,储能项目的投资开发越来越多。那么,投资储能项目到底能赚多少钱?适不适合投资?用“绿虫零碳助手”3秒钟精准测算。操作只需四步,简单易懂:1.快速登录&#xff1a…

Mac 能够连Wife,但是不能上网问题解决

请按照以下步骤从最简单、最可能的原因开始尝试: 第一步:基础快速排查 这些步骤能解决大部分临时性的小故障。 重启设备:关闭您的 Mac 和路由器,等待一分钟后再重新打开。这是解决网络问题最有效的“万能药”。检查其他设备&am…

基于SpringBoot的旅游管理系统的设计与实现(代码+数据库+LW)

摘要 本文阐述了一款基于SpringBoot框架的旅游管理系统设计与实现。该系统整合了用户信息管理、旅游资源展示、订单处理流程及安全保障机制等核心功能,专为提升旅游行业的服务质量和运营效率而设计。 系统采用前后端分离架构,前端界面设计注重跨设备兼…

Springboot乐家流浪猫管理系统16lxw(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能:领养人,流浪猫,领养申请开题报告内容基于Spring Boot的乐家流浪猫管理系统开题报告一、研究背景与意义随着城市化进程加速和人口增长,流浪猫问题已成为全球性社会挑战。据统计,全球每年约有1.5亿只无家可归的宠物&a…

函数定义跳转之代码跳转

相信大家在开发的过程中都有用到函数定义跳转的功能,在 IDE 中,如果在函数调用的地方停留光标,可能会提示对应的函数定义,在 GitHub 中也是如此,对于一些仓库来说,我们可以直接查看对应的函数定义了&#x…

探讨Xsens在人形机器人研发中的四个核心应用

探索Xsens动作捕捉如何改变人形机器人研发——使机器人能够从人类运动中学习、更直观地协作并弥合模拟与现实世界之间的差距。人形机器人技术是当今世界最令人兴奋且最复杂的前沿领域之一。研究人员不仅致力于开发能够像人类一样行走和行动的机器人,还致力于开发能够…