i.MX8M Nano CPU通过NXP的加密加速器和保证模块(CAAM,也称为SEC4)提供模块化和可扩展的硬件加密。
特性
i.MX8M Nano CPU的CAAM包括以下功能:
内核配置
您可以通过以下内核配置选项来管理CAAM支持:
加密API(
CONFIG_CRYPTO
)硬件加密设备(
CONFIG_CRYPTO_HW
)飞思卡尔caam -多核驱动后端(
CONFIG_CRYPTO_DEV_FSL_CAAM
)
哪些在默认情况下是内置的ConnectCore 8M Nano内核配置文件。
内核配置选项的集合取决于CRYPTO_DEV_FSL_CAAM
进一步配置CAAM支持。
内核驱动程序
CAAM驱动程序位于司机/加密/销售量
:
文件 | 描述 |
---|---|
CAAM控制平面驱动后端 |
|
中国汽车工业协会/秒4。用于处理键生成作业的X函数 |
|
加密API的CAAM支持 |
|
加密API哈希函数的CAAM支持 |
|
CAAM支持通用内存keyblob加密和解密 |
|
支持hw_random的CAAM |
|
安全存储器存储接口 |
|
SNVS安全违规处理程序 |
|
中国汽车工业协会/秒4。用于处理键生成作业的X函数 |
设备树绑定和自定义
CAAM设备树绑定记录在文档/ devicetree /绑定/加密/ fsl-sec4.txt
。
用户空间使用情况
真随机数发生器(TRNG)
Digi Embedded Yocto使用CAAM内部的硬件TRNG来为两者提供支持/dev/random
和/dev/urandom
。应用程序应该使用/dev/random
和/dev/urandom
是正常的。
密码和认证算法
使用cat命令可以列出系统支持的加密算法/proc/crypto
:
#Cat /proc/crypto…名称:cbc(aes)驱动:cbc-aes- cam模块:内核优先级:3000 refcnt: 1 selftest: passed类型:ablkcipher async: yes blocksize: 16 min keysize: 16 Max keysize: 32 ivsize: 16 geniv: eseqiv…
每个算法都有一组属性,包括:
名字
:算法名称司机
:提供此支持的驱动程序。如果驱动程序包含caam,则意味着caam硬件引擎提供了对该加密算法的支持。优先级
:数值越高,优先级越高。通常,硬件加速算法比软件算法具有更高的优先级。
要验证加密或散列操作是否正在使用CAAM,您可以检查jr(作业环)设备的中断计数。下面的示例显示了2142000的中断计数。使用OpenSSL(使用CAAM)执行AES CBC加密时,jr1增加。
#cat /proc/interrupts | grep jr 305: 2 GPC 105 Level 2141000jr0 306: 0 GPC 106级2142000。jr1 307: 0 GPC 46级2143000.jr2#Openssl enc -in input.txt out encrypted.bin -e -k mypassword -aes-128-cbc#cat /proc/interrupts | grep jr 305: 2 GPC 105 Level 2141000jr306: 116 GPC 106水平2142000。jr1 307: 0 GPC 46级2143000.jr2
Digi Embedded Yocto使用cryptodev用户空间支持,反过来,使用Linux内核中的加密API:
OpenBSD加密框架的端口
/dev/crypto
字符设备接口不是内核的一部分(必须从树中构建)
以下用户空间加密库使用cryptodev支持通过/dev/crypto
:
OpenSSL
GnuTLS
中国汽车工业协会团
caam_keyblob驱动程序在下面创建一个字符设备/dev/caam_kb
它可以与标准的Linux API (open、close、ioctl)一起使用,以执行CAAM blob的加密和解密。
看到安全存储获取有关CAAM blobs的更多信息。