概述
简介
X5 芯片上的 Crypto IP 使用的是 ARM TE600,ARM TE600 是一款由 ARM 公司设计的 安全加密处理单元(Secure Crypto Engine),集成在 ARM 生态系统中,能够为嵌入式设备提供硬件加速的加密功能,并且作为加密硬件模块,与 ARM TrustZone 技术配合工作,旨在提供高性能、安全的加密操作。
安全算法
以下是硬件支持的算法列表:
| 算法 | 描述 |
|---|---|
| AES | 支持 ECB / CBC / CTR / OFB / XTS / CBC-MAC / CMAC / CCM / GCM,支持 128/192/256 三种密钥长度 XTS 仅支持 128/256 |
| DES / TDES | 支持 ECB / CBC / CBC-MAC / CMAC |
| HASH | 支持 SHA1 / 224 / 256 / 384 / 512 / SM3 / MD5, 支持 HMAC-SHA1 / 224 / 256 / 384 / 512 / SM3 / MD5 |
| RSA | 支持 1024 / 2048 / 3072 / 4096 / 8192 等密钥规格 |
| ECC | 支持 NIST 标准曲线 P-192 / 224 / 256 / 384 / 512 / 521 |
| SM2 | 256位密钥长度 |
| TRNG | 真随机数 |
硬件安全驱动
驱动源码
驱动相关文件位于:kernel/drivers/crypto/te
开启硬件安全
内核配置
在 menuconfig 配置中使能 te600 加解密驱动支持

注意: 如果用户使用了其他配置文件,请确保 te600 配置选项 CONFIG_CRYPTO_DEV_TE 开启
dts 配置
X5 dts 中默认已开启了 te600 节点,路径 kernel/arch/arm64/boot/dts/hobot/x5.dtsi
te600: te600@20300000 {
compatible = "armchina,trust-engine-600";
status = "okay";
reg = <0x20300000 0x00100000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
host-number = <1>;
clocks = <&hpsclks X5_SEC_AXI_CLK>,
<&hpsclks X5_SEC_APB_CLK>;
clock-names = "axi_clk", "merak_clk";
};
注意: 如果用户使用了其他板级dtb,需要引用 x5.dtsi
加载驱动
modprobe te_crypto
通过命令cat /proc/crypto | grep "driver" | grep "\-te",可以查看当前系统 TE600 硬件支持的 crypto算法。
driver : ecdh-nist-p256-te
driver : ecdh-nist-p192-te
driver : dh-te
driver : rsa-te
driver : gcm-sm4-te
driver : gcm-aes-te
driver : ccm-sm4-te
driver : ccm-aes-te
driver : cbcmac-3des-te
driver : cbcmac-des-te
driver : cbcmac-sm4-te
driver : cbcmac-aes-te
driver : cmac-3des-te
driver : cmac-des-te
driver : cmac-sm4-te
driver : cmac-aes-te
driver : sm3-te
driver : hmac-sm3-te
driver : sha512-te
driver : hmac-sha512-te
driver : sha384-te
driver : hmac-sha384-te
driver : sha256-te
driver : hmac-sha256-te
driver : sha224-te
driver : hmac-sha224-te
driver : sha1-te
driver : hmac-sha1-te
driver : md5-te
driver : hmac-md5-te
driver : ecb-3des-te
driver : ecb-des-te
driver : cbc-3des-te
driver : cbc-des-te
driver : ecb-sm4-te
driver : ecb-aes-te
driver : cbc-sm4-te
driver : cbc-aes-te
driver : ofb-sm4-te
driver : ofb-aes-te
driver : ctr-sm4-te
driver : ctr-aes-te
driver : xts-sm4-te
driver : xts-aes-te
注意事项
硬件安全的使用方法通常是通过 libkcapi 和 openssl engine 提供的用户空间接口库。