聊聊关于STM32加密引擎的话题
可能有人在STM32的选型手册或相关产品宣全页上看到加密引擎的介绍,这里一般泛指STM32芯片中的加密处理器【Cryptographic processor】和散列处理器【Hash processor】。虽说二者都跟信息的安全性、有效性相关,在使用上可能有类似的地方,比如信息有效性、身份确认等方面,但二者并非一个东西。
加密处理器的重点是对数据进行加密,对信息做安全保护,不让信息被非法访问或对外泄露。信息提供方根据一定的加密算法对原始信息【明文】进行加密后形成【密文】,信息接收方根据相应的解密算法对加密过的【密文】信息进行解密还原为【明文】。
STM32内置的加密处理器一般支持如下几种加密算法标准:
DES: Data Encryption Standard 【数据加密标准】
TDES:Triple Data Encryption Standard【三重数据加密标准】
AES:Advanced Encryption Standard (【高级加密标准】
DES,TDES多应用在数据文件的传输,电子资金转账,门控门禁的安全性场合。
AES多应用在网络安全路由,无线通信,数据的加密保存等场合。
哈希处理器的重点是出于数据完整性和有效性的考虑,基于一定算法对数据信息进行计算得出一组哈希值,用于未来对数据信息的完整性和真实性进行比对验证。
比如要想利用哈希算法查验文件信息是否被恶意修改或破坏过,可以通过比较传输前后数据的哈希值来校验信息的完整性。
通过检查信息哈希值的有效真实性,进而确定信息本身的有效真实性。比方说,日常使用的密码并不是以明文形式存储,而是以哈希值的形式存储。通过对用户输入的密码做哈希运算,把所得哈希值和事先预留密码的哈希值进行比较,从而来确认用户身份的真实性。
STM32芯片内置的哈希处理器可能支持如下几种散列算法:
SHA-1:Secure Hash Algorithm 【安全散列算法,或说安全哈希算法】
MD5 :Message-Digest Algorithm 5【信息摘要算法5】
HMAC :keyed-Hash Message AuthenticationCode algorithm密钥散列消息认证码算法
简言之,加密处理器侧重保障信息的私密性、安全性,对原有信息直接进行加解密操作,有加密、解密的两个可逆操作。哈希处理器是侧重保障信息的真实性、前后一致性,使用一定的算法结合原有信息计算出固定长度的特征信息值,而且这个过程是不可逆的。
目前STM32家族9大产品线中,具备加密处理器和哈希处理器的芯片主要集中在高性能的产品线中,即STM32F2,STM32F4,STM32F7这三大系列。这里要注意几点:
上面提到的内置加密处理器和哈希处理器的三大高性能STM32系列中,并非每颗料号都具备,具体要细看各大系列的详细介绍。曾经有人选择了一颗并不带HASH处理器的F4芯片做MD5的应用,快折腾瞎了眼睛也出不来。
即使STM32F2,STM32F4,STM32F7这三大系列中带加密处理器和哈希处理器,可能个别芯片内部并不完全支持上面提到的所有加密算法和哈希算法,具体查看数据手册确认。
STM32家族中除了STM32F2,STM32F4,STM32F7这三大系列同时带加密处理器和哈希处理器外,还有个别STM32系列只带加密处理器,比如STM32L162系列,STM32L486系列,它们支持AES加解密算法。
在带加密处理器和哈希处理器的STM32芯片里,二者是两个独立的外设模块。ST官方的固件库函数里也有提供相关的项目例程。以STM32F4为例,ST官方提供的传统固件库或CUBE库里都有相关项目例程可供参考。
拇指长按上方精灵鸟识别图中二维码可关注公众号