跳转至

硬件加密引擎

使用技术:Security Unified API(AES/SM4/SHA/TRNG/KM)

学习目标

  • 理解 WS63 硬件加密引擎的架构——对称加密(AES/SM4)+ 哈希(SHA256)+ 随机数(TRNG)+ 密钥管理(KM)
  • 掌握 AES-128/256-CBC/GCM 硬件加解密
  • 掌握 SM4-CBC(国密对称加密)硬件加解密
  • 掌握 SHA256 硬件哈希和 TRNG 真随机数生成
  • 理解软件加密 vs 硬件加密的性能差异——硬件 AES ~5MB/s,软件 AES ~50KB/s

基本概念

硬件加密 vs 软件加密

对比项 硬件加密 软件加密
速度 ~5MB/s ~50KB/s
CPU 占用 低(引擎独立运行) 高(CPU 逐字节算)
功耗
适用场景 大数据量:OTA 校验、日志加密 小数据:偶尔一次的密钥交换

国密 vs 国际算法

国密 等效国际 使用场景
SM4 AES 对称加密
SM2 ECC 非对称加密/签名
SM3 SHA256 哈希摘要

国内合规项目(政务、军工、金融)必须使用国密算法。

密钥管理(KM)

硬件密钥管理模块——密钥存储在安全区域(不可读,只能用来加密/签名),比存储在 NV 中更安全。即使攻击者获取固件 dump 也无法读取密钥。

涉及 API

API 用途
uapi_cipher_aes_cbc_encrypt(key, iv, in, out, len) AES-CBC 加密
uapi_cipher_sm4_cbc_encrypt(key, iv, in, out, len) SM4-CBC 加密
uapi_cipher_sha256(data, len, hash) SHA256 哈希
uapi_trng_read(buf, len) 真随机数生成(用于密钥/IV)
uapi_km_store_key(key_id, key, len) 密钥存储到安全区域
uapi_km_use_key(key_id, in, out, len) 使用安全密钥加解密

具体 API 以 security_unified/cipher.hsecurity_unified/km.hsecurity_unified/trng.h 头文件为准。

案例说明

做什么

TRNG 生成随机密钥 → 存储到 KM 安全区域 → AES-CBC 加密传感器数据 → 通过 MQTT 发送密文 → 云端解密。

关键配置

参数 推荐值 说明
加密算法 AES(国际)/ SM4(国密) 国内合规项目选 SM4
加密模式 CBC / GCM GCM 带认证防篡改
密钥长度 AES-128: 16B / AES-256: 32B 安全要求高选 256

代码详解

概念性代码:

/* TRNG 生成随机 IV */
uint8_t iv[16];
uapi_trng_read(iv, sizeof(iv));

/* KM 存储密钥 */
uint8_t key[16];
uapi_trng_read(key, sizeof(key));
uapi_km_store_key(KEY_ID_SENSOR, key, sizeof(key));

/* AES-CBC 加密传感器数据 */
uint8_t plaintext[64] = "sensor: temp=25.5C, hum=60%";
uint8_t ciphertext[64];
uapi_km_use_key(KEY_ID_SENSOR, iv, plaintext, ciphertext, sizeof(plaintext));

/* SHA256 校验 */
uint8_t hash[32];
uapi_cipher_sha256(plaintext, sizeof(plaintext), hash);

TRNG(True Random Number Generator)生成的真随机数比 rand() 伪随机数安全得多——用于密钥和 IV 生成。