14.4.1. 概念:信任、密钥与文件格式

在执行任何命令之前,先了解适用于本章节其余每一页的三点背景。

14.4.1.1. 信任模型

一个 TLS 连接可以提供三种递增的保证级别:

  • 仅加密——流量被加密,但任何一方都不证明自己的身份。易于设置(无需证书验证),但易受中间人攻击。仅用于本地测试。

  • 服务器认证——客户端根据一份受信任的证书来验证服务器的证书(即我们熟悉的 HTTPS 模型)。OpenMV Cam 既可以充当客户端(验证远程服务器),也可以充当服务器(出示自己的证书)。

  • 双向认证(mTLS)——两端都出示并验证证书。用于服务器也必须确认客户端身份的场合。

14.4.1.2. 选择密钥类型

摄像头的 mbedTLS 构建在 NIST/SEC 素数曲线上支持 ECDSA,并支持 RSA。有三种实用的密钥生成方式;推荐 ECDSA P-256(prime256v1)

  • ECDSA P-256(prime256v1)——约 128 位安全性,密钥长度 256 位。密钥和签名都很小,且在 Cortex-M 上是所支持选项中握手速度最快的(椭圆曲线运算比 RSA 私钥运算开销低得多)。受到 TLS 对端的普遍支持。这是在嵌入式设备上安全性、速度、RAM/闪存占用和兼容性之间的最佳平衡,这也是它成为本文默认选择的原因。

  • ECDSA P-384(secp384r1)——约 192 位安全性。仍属椭圆曲线,因此相当高效,但比 P-256 更大更慢,所换来的安全裕度是典型 IoT 部署所不需要的。仅在长寿命证书或合规要求需要时才使用。

  • RSA-2048——约 112 位安全性。普遍兼容,包括与非常老旧的对端,但 RSA 密钥和证书要大得多,而 RSA 私钥运算(由出示证书的一方执行)是微控制器上最慢、最耗内存的选项。仅在对端无法使用 ECDSA 时才使用。

备注

不支持 Ed25519 / Curve25519 密钥。OpenMV Cam 的 mbedTLS 构建未启用 EdDSA 或 Curve25519,因此 Ed25519 证书或密钥将无法加载或无法握手。请使用上述三个选项之一。

14.4.1.3. 文件格式:使用 DER

OpenMV Cam 所用的 mbedTLS 构建不包含 PEM 解析功能,因此摄像头只读取 DER 形式(二进制编码)的证书和密钥。大多数工具默认输出 PEM 形式(base64 文本),因此每个要送往摄像头的文件都要先转换为 DER——本章节中的每个操作示例都以该转换步骤结尾。你将需要:

  • 一份私钥——保密,由出示证书的那一方使用。

  • 一份证书——公开部分,在握手期间出示给另一方。

  • 一份 CA / 信任证书——由进行验证的一方加载、用于判断对端是否受信任的证书。对于自签名设置,这就是对端自己的证书。