密码学基础回顾:对称加密与非对称加密、哈希函数与消息认证码、数字签名与证书
说实话,很多做物联网的工程师一听到「密码学」三个字就头大。我刚开始接触 Matter 协议时也一样,觉得这东西太数学了,离实际开发很远。直到有一次我在调试一个智能门锁的固件升级流程时,发现设备因为证书链校验失败而反复重启……嗯,从那以后我老老实实把密码学基础补了一遍。
Matter 协议的安全体系,说白了就是建立在几个核心密码学工具之上的。你不需要成为密码学专家,但必须理解它们各自的作用、优缺点,以及为什么 Matter 选择了某种组合。这一章我们就来快速过一遍。
对称加密:又快又简单,但有个大麻烦
对称加密,就是加密和解密用同一个密钥。打个比方:你有一个带锁的箱子,锁上只有一把钥匙。你用这把钥匙锁上箱子,收件人用同一把钥匙打开。常见的算法有 AES、ChaCha20 等。
它的优点是快,非常快。在嵌入式设备上,AES-128 硬件加速几乎是标配。我在一个智能灯泡项目里测过,用 AES-CCM 加密一条 128 字节的消息,耗时不到 0.1 毫秒。
但缺点也很明显——密钥怎么安全地传给对方?如果密钥在传输过程中被截获,整个加密就形同虚设。这就是所谓的「密钥分发问题」。
Matter 中的对称加密:Matter 使用 AES-CCM 作为会话加密算法。设备配对成功后,双方会协商出一个对称密钥(称为 Session Key),后续所有应用层通信都用这个密钥加密。注意,这个密钥不是直接传输的,而是通过后面要讲的非对称加密协商出来的。
非对称加密:解决了密钥分发,但慢
非对称加密使用一对密钥:公钥和私钥。公钥可以公开,私钥必须保密。你用公钥加密,只有持有私钥的人能解密;反过来,你用私钥签名,别人用公钥验证签名。
常见的算法有 RSA、ECDSA、Ed25519 等。在 Matter 中,主要使用基于椭圆曲线的 ECDSA 和 ECDH。
非对称加密解决了密钥分发问题——公钥随便传,私钥不出设备。但代价是慢。RSA 2048 位签名比 AES-128 加密慢几百倍。所以在实际系统中,我们通常用非对称加密来协商一个临时对称密钥,然后用对称加密来保护后续的大量数据。
| 特性 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1 个(共享密钥) | 2 个(公钥 + 私钥) |
| 速度 | 快(硬件加速常见) | 慢(计算量大) |
| 密钥分发 | 困难(需要安全通道) | 容易(公钥可公开) |
| 典型算法 | AES, ChaCha20 | RSA, ECDSA, ECDH |
| Matter 用途 | 会话加密(AES-CCM) | 证书签名、密钥协商(ECDSA, ECDH) |
我的经验:在 Matter 设备开发中,非对称加密操作(如签名验证)通常只在配对和证书更新时发生。一旦会话建立,99% 的通信都走对称加密。所以不要因为非对称加密慢就担心性能——它用得很少。
哈希函数:数据的「指纹」
哈希函数能把任意长度的数据,压缩成一个固定长度的摘要(digest)。而且这个摘要是唯一的——哪怕原文只改了一个比特,摘要也会完全不一样。常见的哈希算法有 SHA-256、SHA-3 等。
哈希函数有几个关键特性:
- 单向性:从摘要反推原文,在计算上不可行。
- 抗碰撞性:找到两个不同输入但摘要相同,在计算上不可行。
- 固定输出长度:无论输入多大,输出长度固定(SHA-256 输出 256 位)。
哈希函数本身不提供机密性,它主要用于完整性校验。比如你下载一个固件,网站会同时提供 SHA-256 值。你下载后自己算一遍,如果一致,说明文件没被篡改。
注意:哈希函数不能防止「中间人攻击」。攻击者可以同时篡改固件和它旁边的哈希值。所以哈希必须配合数字签名或消息认证码一起使用。
消息认证码(MAC):给消息加个「防伪标签」
消息认证码(Message Authentication Code,简称 MAC)解决了哈希函数的一个问题:如何确保消息和哈希值都没被篡改?答案是使用共享密钥。
MAC 的输入是消息 + 密钥,输出是一个固定长度的标签。只有持有相同密钥的人才能验证这个标签。常见的 MAC 算法有 HMAC(基于哈希的 MAC)和 CMAC(基于分组密码的 MAC)。
在 Matter 中,AES-CCM 模式本身就内置了 MAC 功能——它同时提供加密和认证,称为「认证加密」(AEAD)。这意味着每条加密消息都自带一个认证标签,接收方可以验证消息是否完整、是否来自合法的发送方。
关键区别:哈希函数保证完整性(数据没变),MAC 保证完整性和真实性(数据没变 + 确实是持有密钥的人发的)。数字签名则更进一步,还能提供不可否认性。
数字签名与证书:你是谁?谁信你?
数字签名是非对称加密的典型应用。发送方用私钥对消息的哈希值进行签名,接收方用公钥验证签名。这能证明:
- 消息确实来自持有私钥的人(真实性)
- 消息没有被篡改(完整性)
- 发送方不能否认自己签过名(不可否认性)
但这里有个问题:你怎么知道这个公钥真的属于对方?这就是证书的用武之地。
数字证书(X.509 证书)是一个数据结构,它把公钥和身份信息绑定在一起,并由一个可信的第三方(证书颁发机构,CA)签名。Matter 协议使用的就是 X.509 证书体系。
Matter 的证书链是这样的:
- 根 CA:Matter 联盟维护的顶级证书,预置在设备固件中。
- 中间 CA:由根 CA 签发,每个设备制造商有自己的中间 CA。
- 设备证书:由中间 CA 签发,每个设备出厂时烧录自己的证书和私钥。
配对时,设备会把自己的证书链发给控制器。控制器从根 CA 开始逐级验证,直到确认设备证书是合法的。这个过程叫「证书链验证」。
避坑指南:我曾经在一个 Matter 桥接设备上遇到过证书过期问题。设备出厂时烧录的证书有效期是 5 年,但客户在 6 年后才首次使用。配对时证书链验证失败,设备直接拒绝连接。解决方案是让设备在首次启动时检查证书有效期,如果过期则触发 OTA 更新证书。这个坑我踩过,你设计时一定要考虑证书生命周期管理。
知识体系总览
下面这张图把本章的核心概念串起来了。你可以看到,Matter 的安全体系就是把这些密码学工具组合起来,各司其职。
小结
这一章我们快速回顾了密码学的几个核心概念。你不需要记住每个算法的数学细节,但一定要理解它们各自解决什么问题、有什么局限。Matter 协议的设计者把这些工具组合成了一个完整的体系:非对称加密用于配对和密钥协商,对称加密用于日常通信,证书链用于身份验证,哈希和 MAC 用于完整性保护。