垂直应用

信息安全(七)

STM32的加解密硬件模块



大家好,欢迎大家观看 STM32 信息安全(七):STM32的加解密硬件模块。




加解密硬件模块


TRGN

随机数产器,True Random Generator。之所以是True,因为这个模块产生的随机数是以真正随机的物理噪声源为种子产生的。模拟商源,在线性反馈移位的作用下,产生32位的 随机数。


该模块直接挂在AHB总线上,有三个时钟源可选,供给该外设:HSI16,内部高速16M晶振;SYSCLK、系统时钟;PLLQ,锁相环分频输出。在不使用它时,可以关闭该模块以节省功耗。




随机数被广泛用于加解密操作中,比如在验证对方身份时,使用挑战-应答模型,一方要产生一个随机数发送过去,作为challenge。在各种加密算法中,比如AES的密码分组链接模式里,最初一个密码块的生成,就需要一个随机数,作为初始向量参与。



AES加速器



STM32集成了AES加速器。密钥长度,128位和256位都支持。


支持的工作模式也很多:

加密模式有:ECB,电子密码本;CBC,密码分组链接;CTR,计数器模式。

可以同时产生消息认证码的模式有,GCM、CCM、GMAC


该模块已经过NIST(美国国标和技术研究院)的FIPS认证。G071上就有该IP。



Crypto


STM32芯片上,有些产品集成了刚才的AES,还有一些产品集成的是另外一种对称加解密模块,为了区别,名字叫做Crypto。

和AES模块差不多,只是还额外支持DES和TDES。该模块也是经过了NIST的FIPS认证。




哈希函数



哈希函数是用来保证消息完整性的基础。

STM32有些产品也集成了硬件的哈希模块。G0上没有。

该模块支持的算法有MD5、SHA1,SHA2。


在消息的广义完整性方面,它支持HMAC模式。即双方的共享密钥参与的哈希操作。




PKA



PKA,public key accelerator。公钥加速器,即,非对称密钥技术硬件加速模块。 集成了PKA模块的STM32系列,目前有WB和L5。


PKA支持RSA和ECC的加密、解密、签名、验签、以及基于ECC的密钥交换算法ECDH;RSA和ECC的秘钥长度,可支持高达 3136位,和640位。




加解密库


X-Cube-Crypto

基于主流的加解密算法,ST还提供了一个免费的安全包,X-Cube-Crypto,支持主流的密码学操作:加密、哈希、消息认证、数据签名等。用户可以使用它来在自己的应用中提供数据保密性、完整性、对标识的认证等安全服务。



在st官网任意页面的搜索框,输入标题里的软件包名称,就可以进入专门的下载页面。由于这个软件包是受ECCN 5D002管辖,需要大家使用自己在st官网的账户登陆后,填写申请,经审批后,方可获得临时的有效下载链接。


这个加解密安全包有两种实现方案,基于纯软件的,可以跑在任意STM32上,算法部分以库形式提供;对于带硬件加解密模块的系列,也提供硬件加速的实现。(硬件实现就不用调库了吗?)


库里的大多数算法,像AES、RSA、ECDSA、HMAC等,都经过CAVP的FIPS认证。基于它的应用开发,可以加速客户的安全认证过程。



Crypto library

加解密软件库 Crypto library,由于支持纯软件实现,因此全系列的STM32都支持。



而从加解密硬件模块来看,真随机数、两种对称加密模块,Hash、PKA,一眼看过去,五毒俱全的就是我们的L5了,不愧是STM32家族,安全实力的担当,配上从内核的trustzone架构,到全芯片系统的隔离。在F2、F4、F7、H7等高性能系列,也都集成了AES和Hash,但是使用方法和带隔离的L5还是有所不同。我会在后面推出的STM32L5线上课程系列来展开讨论。




本期回顾


回顾一下本期内容:



这一期比较短。一来,要讲清楚加解密硬件模块的使用,需要结合代码看API,我会有另外专门的STM32加解密技术线上课程来介绍,包括软、硬件实现的性能比较;二来后面用到的实验板G0并没有集成太多这些硬件,在SBSFU安全包中用到的算法,也都是软件实现的。内容虽然简短,但是需要大家对我们的X-Cube-Crypto 加解密安全包有基本的了解,知道去哪里下载,知道过了CAVP的FIPS认证,可以加速客户对安全应用认证。


讲到现在,STM32的安全特性,这些模块级别的小单元,大家都心里有数了。那么,从应用的角度,或者直白点说,客户关心的是什么安全方面的话题?客户找到我们的时候,不会问我们,有没有读保护,有没有写保护,有没有MPU。他们更多的是从安全应用的需求,或者应用层面的安全功能来咨询。



下期我们会以STM32G0为例,看看之前讨论的那些模块级别的小单元,彼此配合,通力协作,能够提供哪些应用层面的安全功能。敬请大家关注,谢谢观看。


微信扫一扫