i.MX8M Nano CPU通过NXP的加密加速器和保证模块(CAAM,也称为SEC4)提供模块化和可扩展的硬件加密。

特性

i.MX8M Nano CPU的CAAM包括以下功能:

内核配置

您可以通过以下内核配置选项来管理CAAM支持:

  • 加密APICONFIG_CRYPTO

  • 硬件加密设备CONFIG_CRYPTO_HW

  • 飞思卡尔caam -多核驱动后端CONFIG_CRYPTO_DEV_FSL_CAAM

哪些在默认情况下是内置的ConnectCore 8M Nano内核配置文件

内核配置选项的集合取决于CRYPTO_DEV_FSL_CAAM进一步配置CAAM支持。

内核驱动程序

CAAM驱动程序位于司机/加密/销售量:

文件 描述

ctrl.c

CAAM控制平面驱动后端

jr.c

中国汽车工业协会/秒4。用于处理键生成作业的X函数

caamalg.c

加密API的CAAM支持

caamhash.c

加密API哈希函数的CAAM支持

caam_keyblob.c

CAAM支持通用内存keyblob加密和解密

caamrng.c

支持hw_random的CAAM

sm_store.c

安全存储器存储接口

secvio.c

SNVS安全违规处理程序

key_gen.c

中国汽车工业协会/秒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的更多信息。