点击上方蓝字谈思实验室
获取更多汽车网络安全资讯
随着信息安全重视程度的提高,车载MCU级芯片,也在不断地将信息安全算法硬件化,以便于加速信息安全的处理速度。信息安全的算法很多。从大类上说,可分为对称算法和非对称算法。
非对称算法有ECC(Elliptic Curve Cryptography,椭圆曲线密码学)、RSA(Rivest-Shamir-Adleman)等;对称算法有AES(Advanced Encryption Standard,高级加密算法)等。
01
AES算法原理
AES属于对称加密算法,即:加密和解密过程,使用相同的密钥操作,示意如下:
在AES算法处理中,需要将明文分组,且每组长度固定为16 byte。而密钥可以选择128 bit、192 bit以及256bit。工程中,常用128bit(16 byte)。
选择AES密钥长度不同,加密轮数不同,即:加密函数调用的次数不同,如下所示:
02
前AES加密模式及填充模式言
(一)AES密钥模式
使用AES算法加密时,可以使用不同的加密模式。AES加密模式包括:ECB(电码本模式)、CBC(密码分组链接模式)、CFB(密码反馈模式)、OFB(输出反馈模式)、CTR(计算器模式)。
其中,工程上常使用ECB和CBC模式,ECB模式只需要输入密钥即可,而CBC模式,除了输入密钥以外,还需要输入密钥初始值。
(二)AES填充模式
由于AES算法采用对称分组密码体制,因此,在AES进行数据加密前,需要将明文拆分成固定长度块(16 byte)。如果输入的明文数据长度不是16byte怎么办呢?答:进行填充处理,以此确保每组数据块的长度为16 byte。
常见的填充模式如下:
如果填充方式选择None,则明文和密文长度相等;如果填充模式使用非None模式,明文和密文的长度不同。
03
AES128性能测试(硬件)
(一)AES在线计算
在信息安全开发过程中,有时为了验证开发功能是否正确,需要对算法计算结果进行比对。可以通过在线计算方式,比对MCU计算结果,在线计算示例如下:
提示:对于车载MCU开发,原始明文一般以16进制的形式表示。
AES在线计算网址链接:
https://the-x.cn/cryptography/Aes.aspx
(二)基于Tc3xx的AES128硬件计算性能测试
1、CBC模式测试
基于Tc3xx,使用AES128 CBC模式,填充:None。对32字节明文进行加密、解密操作。
进行10次测试,测试结果如下所示:
如上图,可以得出如下结论:
-
AES128 CBC模式,加密速度比解密速度慢
-
AES128 CBC模式,加密或者解密32字节用时约5ms,这里的5ms并不能表示硬件的真实计算性能,本文测试中,Host端的计算请求和结果接收放在5ms Task中调度(为了更贴近工程做法),实际的计算能力要远高如上的量化。
提示:本文测试没有考虑5ms调度的影响,对于32 byte数据量,计算速度应该在us级别。
2、ECB模式测试
基于Tc3xx,使用AES128 ECB模式,填充:None。对32字节明文进行加密、解密操作。
进行10次测试,测试结果如下所示:
如上图,可以得出如下结论:
-
AES128 ECB模式,加密速度比解密速度慢;
-
AES128 ECB模式,加密或者解密32字节用时约5ms,这里的5ms并不能表示硬件的真实计算性能,本文测试中,Host端的计算请求和结果接收放在5ms Task中调度,实际的计算能力要远高如上的量化。
如果想测试出真实的AES性能,Host与HSM两端使用中断方式通知更合适,且测试数据量需要更大一些,本文仅作抛砖引玉。
精品活动推荐
原文始发于微信公众号(谈思实验室):信息安全:AES算法简介
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论