YTM32的HSM模块在信息安全场景中的应用
文章目录
引言
随着汽车上通信系统越来越复杂,云端、远程通信的场景越来越多,信息安全变得越来越重要,在通信领域常用的AES、SHA、RSA等加密算法被越来越多地应用到汽车电子系统中。通常这类加解密算法都需要大量的数学运算,需要消耗相当多的CPU时间,但同时汽车应用场景对ECU有比较高的实时性要求,为了节省主CPU的资源,专用于执行加解密算法的硬件HSM模块应运而生。
广义上的HSM(Hardware Security Module),是MCU上专门用于实现加解密算法的外设模块,它一般会有一个独立的CPU,专门用来进行加解密运算,还有一些针对特定算法的硬件加速器(如AES-128、SHA-256等)。有了HSM模块,程序中就可以把加解密运算交给HSM来执行,同时主CPU就可以去做其他工作,一段时间后来查询结果,或等待HSM计算完成后通过中断等方式通知主CPU计算结果即可。HSM通常还拥有单独的存储区,包括RAM和NVM(Flash存储器),HSM的存储区在正常运行状态下应只允许HSM读写,主CPU不能读写。这样就可以把算法秘钥等重要数据存储在HSM存储区,与主CPU进行隔离,进一步加强安全性。此外HSM模块还会集成(或者共存)真随机数生成器等加密算法常用外设。
应用场景:一点点密码学基础
常用的加密方法,比较耳熟能详的是摘要算法(哈希算法,HASH)、对称加密、非对称加密等。
- 摘要算法是不可逆的,主要作用是对信息的完整性和一致性进行校验。
- 对称加密算法是可逆的,主要作用是保证私密信息不被泄露。不同于摘要算法(HASH),是真正意义上的加密算法。
- 相对于对称加密在加解密过程中使用同一个密钥,非对称加密在加密和解密过程中使用的密钥也是不同的(公钥和私钥)。
假设有发送方向接收方发送消息。如果没有任何加密算法,接收方发送的是一条明文消息:我是小灰
。
如果中间人截获到消息,即使中间人无法篡改消息,也可以窥探到消息的内容,从而暴露了通信双方的私密。
因此,我们不再直接传送明文,而改用对称加密的方式传输密文,画风就变成了下面这样:
具体工作的步骤如下:
- 发送方利用密钥
123456
,加密明文我是小灰
,加密结果为TNYRvx+SNjZwEK+ZXFEcDw==
。 - 发送方把加密后的内容
TNYRvx+SNjZwEK+ZXFEcDw==
传输给接收方。 - 接收方收到密文
TNYRvx+SNjZwEK+ZXFEcDw==
,利用密钥123456
还原为明文我是小灰
。(使用相同密钥的对称加密方法)
硬件:YTM32的信息安全子系统
HCU外设模块
YTM32的HCU(Hardware Cryptography Unit)是HSM的一种典型实现,使用硬件计算引擎,可以实现对用户数据的加解密计算,其中包括AES
、SM4
、SHA
等算法,并配合真随机数发生器TRNG
和HCU_NVR
存储区,完成了对加解密系统的硬件支持。如图x所示。
从HCU外设的系统框图中可以看到,HCU的核心是一个复用成多种模式的计算引擎,用户可以通过FIFO向计算引擎送数参与计算,并在计算结束后,通过FIFO读出计算结果。HCU的用户操作接口(寄存器)并不复杂,主要的配置选项都在选择计算引擎的工作模式上(HCU_CR
寄存器),DMA和中断,以及标志位的设置,都是面向FIFO的常规功能。
需要特别关注的是,HCU外设模块从Flash(EFM模块)存储器中导入Key到HCU_KEY
寄存器的机制,以及众多面向具体加解密算法,需要通过专用的寄存器传入专用的参数,例如通过HCU_MSGINFO
寄存器和HCU_MSGADL