欢迎再次来到“码灵半导体CFW32C7UL系列产品应用介绍”连载专题。通过前几期对CFW32C7UL系列的国密算法介绍,相信大家对码灵半导体CFW32C7UL系列的国密硬件模块有了充分的了解。
由于发展历程原因,目前市场上商用密码使用仍然以国际标准加解密算法为主,不过随国家对国密算法的推进,未来国密算法的应用也会越来越广泛。码灵半导体CFW32C7UL系列的加解密模块除了之前介绍的国密密码算法以外,还支持国际标准算法的AES加解密算法和SHA-1、SHA-256哈希算法。本专题聚焦于CFW32C7UL系列所支持的国际标准加解密算法硬件模块:AES分组加解密算法和SHA哈希算法。以下我们具体介绍下CFW32C7UL系列AES和SHA模块的使用以及加解密的速度等。
一、AES分组加解密算法
AES是Advanced Encryption Standard的缩写,即高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。高级加密标准是由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用,至2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
1、CFW32C7UL AES分组算法的实现
CFW32C7UL 系列的AES模块可完成标准AES加解密运算和AES-CM、AES-F8加密运算。标准AES算法即AES标准(FIPS-197)中规定的算法。AES-CM和AES-F8算法在The Secure Real-time Transport Protocol(SRTP)中有详细说明,这两种算法均以标准AES算法为基础,并对标准AES算法进行迭代运用。
AES模块中的标准AES算法除了支持CPU输入输出外,还支持DMA输入和DMA输出,而AES-CM、AES-F8只支持DMA输出。
2、CFW32C7UL AES分组算法的使用
开发模式一:裸机SDK
目前CFW32C7UL系列裸机SDK支持AES-CM, AES-F8,以及标准的AES加解密方式。其中AES-CM和AES-F8只支持加密,不支持解密。标准的AES方式支持加密和解密。
在CFW32C7UL系列 AES的SDK中有个关键的CIPHER_AES_Init_TypeDef结构体:
typedef struct {
uint32_t mode;
uint32_t encrypt;<