密码学

7 文章

AES 加密模式

6 分钟

设备安全评审里经常会听到一句话:“数据用 AES 加密了。”

这句话不够。AES 是一个分组密码,它只定义了怎样用密钥把一个 16 字节分组变成另一个 16 字节分组。真实消息往往不止 16 字节,也可能包含重复内容、协议头、长度、填充和多包传输。

阅读更多

Secure Boot 和 OTA 验签

5 分钟

很多设备安全讨论里会出现一句话:“固件已经签名了,所以安全。”

这句话只说对了一部分。固件签名能证明固件由可信私钥授权,且内容没有被篡改。但它不自动解决固件是否加密、旧版本能不能回滚、启动链每一级是否都验证下一极、签名密钥怎样保护、更新失败后设备能不能恢复。

阅读更多

证书链

6 分钟

很多设备接入云平台时,会拿到一个 .crt.pem 文件,然后配置到 TLS、MQTT 或 HTTPS 客户端里。

这很容易让人以为“设备证书”就是一个文件。实际上证书只是信任链里可见的一段。真正要设计的是:设备怎样证明自己是谁,服务器怎样验证这个身份,设备私钥怎样生成和保存,证书过期或泄露后怎样处理。

阅读更多

哈希、MAC 和签名

6 分钟

很多设备安全设计里,会出现一句很危险的话:“我们对数据做了 SHA-256,所以是安全的。”

这句话通常不够。SHA-256 是哈希函数,它能把数据变成固定长度摘要,但它不知道是谁算的,也不能阻止攻击者把数据改了以后重新算一个摘要。

阅读更多

一文学会密码学应用

11 分钟

IoT 密码学的"够用就好"

目标:会应用、能理解并能设计方案。不讲复杂数学,只讲必要概念、参数与避坑清单。

必要概念

  • 机密性(Confidentiality):防止被看懂(加密)
  • 完整性(Integrity):防止被悄悄改(认证)
  • 身份不可否认性(Identity):谁在对话(签名/证书)
  • 对称密钥(Symmetric):同一把密钥加解密(AES/ChaCha20-Poly1305)
  • 非对称密钥(Asymmetric):私钥/公钥(ECDSA/Ed25519、ECDH/X25519)
  • AEAD(Authenticated Encryption with Associated Data):一次完成加密+认证(GCM/CCM、ChaCha20-Poly1305)
  • MAC(Message Authentication Code):只做认证(HMAC/AES-CMAC),不加密
  • KDF(Key Derivation Function):把"原始秘密"(如 ECDH/X25519 共享秘密)变成"可用密钥"
  • 密钥格式:SPKI(公钥)/PKCS8(私钥)容器,DER(二进制)/PEM(文本)编码

一张图

[A私钥 + B公钥] --(ECDH/X25519)--> [共享秘密S]
[S] --(HKDF salt, info, L)--> [对称密钥K]
[消息M, AAD] --(AEAD:K, nonce)--> [C || tag]
[M] --(HMAC/CMAC:K)--> [tag]
[M] --(签名:私钥)--> [signature]
  • AEAD 输出总是"密文+标签",解密前先验标签
  • MAC/签名不加密数据
  • 共享秘密不能直接当密钥,必须 KDF

参数小抄(长度与格式)

  • Nonce/IV:GCM=12字节;ChaCha20-Poly1305=12字节;CCM=13字节(常用);CBC=16字节
  • Key:AES=16/24/32字节;ChaCha20-Poly1305=32字节
  • 签名编码:ECDSA=DER 或 RAW(r||s 64字节);Ed25519=RAW
  • 公钥/私钥容器:SPKI(公钥)/PKCS8(私钥),DER 字节可转 PEM 文本

何时用什么

  • 受限设备/无线协议:AES-CCM(硬件加速) 或 ChaCha20-Poly1305(软实现友好)
  • Web/通用:AES-GCM(Galois/Counter Mode) 或 ChaCha20-Poly1305
  • 只要完整性:HMAC-SHA256(Hash-based Message Authentication Code) 或 AES-CMAC
  • 固件/长消息签名:Ed25519 或 ECDSA-P256
  • 会话建立:ECDH-P256 或 X25519 → HKDF → AEAD

攻防小卡片

  • 绝不在同一密钥下复用 AEAD nonce
  • CBC 本身不认证,必须"加 MAC",推荐改用 AEAD
  • 密钥交换一定要带签名,防止中间人攻击(MITM)

快速上手

CryptoBox网页版 快速验证:

阅读更多