安全系统
安全子系统
概述
安全子系统包括对称加解密算法模块、非对称算法模块、单向散列算法模块、密钥派生模块、随机数生成器模块等子模块。
功能描述
安全子系统支持以下功能:
- 支持AES/SM4 对称算法加解密。
- 支持SHA1/SHA2/SM3 散列算法。
- 支持PBKDF2密钥派生算法。
- 支持多种非对称公钥算法。
- 支持随机数生成。
对称加解密模块
概述
实现AES-128/AES-192/AES-256/SM4对称加解密算法的算子模块,由CPU配置发起计算。
功能描述
对称加解密模块具有以下功能特点:
- 支持AES-128/AES-192/AES-256/SM4。
- 支持ECB/CBC/CTR/CFB/OFB/CCM/GCM/CBC_MAC/CMAC工作模式。
HASH 模块
概述
HASH是一个实现单向散列算法的模块,主要用于数据完整性认证。
功能描述
HASH模块具有以下功能特点:
- 支持算法SHA1。
- 支持SHA-2-224/256/384/512。
- 支持国密SM3。
- 支持HMAC-SHA1/HMAC-SHA224/HMAC-SHA256/HMAC-SHA384/HMAC-SHA512 单向散列算法。
密钥派生模块
概述
生成和配置对称加解密、HASH、FLASH在线解密模块所需要的软件key和硬件Key。软件key由用户传入派生材料,派生算法可选择PBKDF2和HKDF;硬件key的派生材料根据用户传入的root key类型决定,派生算法固定使用 PBKDF2算法,得到的key软件无法读取,由逻辑层面提供给其他模块使用,适用于对密钥安全性要求较高的场景。
功能描述
密钥派生模块具有以下功能特点:
- 支持调用HMAC-SHA256/HMAC-SM3实现 PBKDF2算法。
- 支持满足SP800-132 PBKDF2标准。
- 支持设备密钥和存储密钥派生。
非对称公钥算法模块
概述
非对称公钥算法模块可以实现非对称密码算法RSA(Rivest-Shamir-Adleman)、ECC(Elliptic Curve Cryptography)、SM2的功能。CPU可以访问PKE模块的内部寄存器,可以配置计算参数和读取计算结果或查询模块的工作状态。
功能描述
非对称公钥算法模块具有以下功能特点:
- ECC支持算法标准:RFC 5639 - BrainpoolP256/384/512;NIST FIPS 186-4 P192/224/256/384/521;RFC 7748 - Curve25519;RFC 8032 - ED25519;
- 支持RSA1024/2048/3072/4096 公私钥运算。
- 支持国密SM2。
随机数生成模块
概述
本模块能够产生真随机数,CPU可通过系统总线获取随机数。
功能描述
TRNG模块具有以下功能特点:
- 支持真随机数产生,CPU通过总线获取,随机数存储FIFO的深度为8。
- 随机数质量符合AIS-31标准。
EFUSE
概述
EFUSE IP是一种可编程的存储单元,由于其仅可编程一次的特征,多用于芯片保存Chip ID、密钥或其他一次性存储数据。
功能描述
EFUSE模块具有以下功能特点:
- 存储容量为2048bit。
- EFUSE_ARRAY_BIT[2047:0]区域分为2个锁定域和29个子区域:
- 锁定区域0:bit[207:199]:依次为区域8~0的锁定位。
- 锁定区域1:bit[317:304]:依次为区域22~9 的锁定位。
- 支持进行锁定的子区域有23个,子区域0:bit[303:208] + bit[191:0];子区域1:bit[335:320];子区域2:bit[351:336];子区域3:bit[479:352];子区域4:bit[607:480]; 子区域5:bit[927:672];子区域6:bit[959:928];子区域7:bit[975:960];子区域8:bit[1007:976];子区域9:bit[1023:1008];子区域10:bit[1039:1024]; 子区域11:bit[1055:1040];子区域12:bit[1087:1056];子区域13:bit[1103:1088];子区域14:bit[1119:1104];子区域15:bit[1151:1120];子区域16:bit[1295:1152]; 子区域17:bit[1439:1296];子区域18:bit[1583:1440];子区域19:bit[1631:1584];子区域20:bit[1679:1632];子区域21:bit[1727:1680];子区域22:bit[1775:1728]。
- 若PG[x]被烧写为 1,则锁定功能在下次上电后生效,软件不能再烧写修改对应区域;PG3和PG4被锁定后既不可再烧写,也不可读取。
- 不支持进行锁定的子区域有6个,子区域23:bit[1839:1776];子区域24:bit[1903:1840];子区域25:bit[2047:1904];子区域26:bit[198:192];子区域27:bit[319:318];子区域28:bit[671:608];其中子区域23 以及24 为客户预留的区域。