背景
今天介绍两个分组密码族Simon和Speck。
【ECU(Electronic Control Unit)电子控制单元,又称“行车电脑”、“车载电脑”等,是汽车专用微机控制器。它和普通的电脑一样,由微处理器(MCU)、存储器(ROM、RAM)、输入/输出接口(I/O)、模数转换器(A/D)以及整形、驱动等大规模集成电路组成。 它就是汽车的大脑】。
目前在一些中高端乘用车上,不但在发动机上得到应用,在其它许多地方都有ECU的踪影。例如防抱死制动系统、四轮驱动系统、电控自动变速器、主动悬架系统、安全气囊系统、多向可调电控座椅等都配置有各自的ECU。随着汽车电子化、自动化比例的提高,ECU数量将会日益增多,线路也将日益复杂。为确保ECU之间安全地信息(数据)传输,需要先将数据(信息)解密后再进行传输。
那为何不直接用更复杂的对称算法AES呢?事实上,AES算法已经被建议在适当的时候用于轻量级应用。但对于受限制的环境而言,AES算法并不是最好的选择,理由是:
1、芯片层面积不应超过2000 GE,而最小的AES实现需要2400 GE。显而易见,当芯片面积小于2400 GE时AES算法并不适合,更轻量级的Simon与Speck则成为更优选。
2、软件层, Simon与Speck拥有被关注的对小数据对称加解密能力集,AES算法不能提供小的数据长度(如AES不提供64 bit)。
所以,车联网架构中,车辆中一些配置较低、面积较小的ECU之间相互通信的过程中,为了数据的安全性、完整性,Simon与Speck是最合适的选择。
概述
分组密码族Simon和Speck,属于对称算法范畴,它们的宽度和密钥大小各不相同。尽管存在许多轻量级的块密码,但大多数都是为了在单个平台上良好运行而设计的,而并不是为了在一系列设备上提供高性能。Simon和Speck的目标是满足对安全、灵活性和可分析的轻量级块密码的需求。它们在硬件和软件平台上都有出色的性能且足够灵活,可以在给定的平台上接受各种实现,并且可以使用现有技术进行分析。两者在整个轻量级应用程序中的性能都非常好,Simon在硬件方面优化了性能,Speck在软件方面优化了性能。
分组密码Simon族:是一类特别适合于资源受限环境的轻量级分组密码,采用平衡Feistel结构。自2013年被美国国家安全局提出以来,受到学者广泛关注。与其他轻量级分组密码不同,Simon密码要求门电路小于1000。此外,设计者提供了10个版本,均可用Simon 2n/mn表示(其中:n代表字长,2n表示分组长度,mn表示密钥长度),这使得Simon在硬件和软件方面均表现出良好的性能。例如:Simon 64/128指的是Simon对64 bit明文块执行操作并使用128 bit密钥版本。该算法被设计成在硬件上非常小,并且易于在不同级别序列化,但是注意不要牺牲软件性能。
(注:Feistel密码结构,在密码学研究中,是用于分组密码中的一种对称结构。其优点在于:由于它是对称的密码结构,所以对信息的加密和解密的过程就极为相似,甚至完全一样。这就使得在实施的过程中,对编码量和线路传输的要求减少了几乎一半。)
Simon分组密码工作原理如下图:
Simon轮函数原理图
分组密码Speck族: Speck系列算法也是美国安全局在2013年提出的轻量分组密码算法,该算法采用变形Feistel结构,轮函数(循环调用的函数)采用ARX模块,由循环移位、异或、模整数加法运算组成。分组密码在硬件和软件上都提供优异的性能,但是已经针对微控制器的性能进行了优化。我们对Speck的不同变体的表示法与Simon的完全类似。例如,Speck 96/144是指块大小为96 bit、密钥大小为144 bit的Speck分组密码。
Speck分组密码工作原理如下图:
Speck轮函数原理图
结束语
我们希望算法在4 bit、8 bit、16 bit和32 bit微控制器上具有优异的性能,而Simon和Speck非常适合低功耗和低能耗的实现(资源受限环境)。此外,由于Simon和Speck代码只提供加密功能(这对于轻量级应用程序是合理的),或许可在实现中包含解密算法。对于Speck来说,不成熟的实现还需要100字节左右的flash,但是通过利用加密和解密算法之间的相似性,我们可以大大减少这个数字。对于Simon来说,由于加密算法就是一种解密算法,因此其代价可以忽略不计,计算中最多就是交换首尾数据和重新排序轮密钥。
以下5个影响Simon与Speck的因素::
(1)块的大小:大的块会提高加密的安全性,但是会降低加密、解密的速度。(注:目前比较流行的这种方案是128 bit。)
(2)密钥大小:目前128 bit正逐渐取代64 bit,成为主流。
(3)轮函数循环次数:每多进行一轮循环,安全性就会有所提高。现阶段比较流行的是16轮。(注:关于轮数需要根据实际业务与安全级别而定。)
(4)子密钥的生成算法:生成算法越复杂,则会使得密码被破译的难度增强,安全性越高。
(5)轮函数的复杂度:轮函数越复杂,安全性越高。
以上就是车联网众多节点中的车辆基于ECU微小算法—Simon与Speck的介绍,下一回我们将分析低配置安全存储—SHE,敬请关注。