随着全球汽车保有量的不断增长,汽车防盗日益成为人们所关注的焦点。采用了身份认证技术的发动机防盗系统是一种新型的汽车防盗系统,使发动机不能通过跨接导线来启动,实现了直接针对发动机的防盗,极大提高了汽车防盗性能。密码验证是实现身份认证技术的最常用方案。AES加密算法是新一代的数据加密标准,属于对称加密算法,运算迅速而又对硬件配置要求低,非常适合发动机防盗系统身份认证的加密运算。

一、AES加密算法理论基础

AES(AdvancedEncryptionStandard)美国高级数据加密标准,是新一代的分组数据加密标准。它采用了Rijndael算法,这是一个数据块长度和密钥长度都可变的迭代分组加密算法,分组长度为128-bit,数据块长度和密钥长度可分别为128-bit、192-bit、256-bit,可根据加密强度要求进行选择。AES所有的运算都在一个4bytes×4bytes的状态矩阵上进行,因此在加密前要对数据块做预处理。首先把数据块写成字的形式,再把字记为列的形式,如表1所示:

AES算法在发动机防盗系统身份认证中的加密应用

其中,每个ai,j表示一个8-bit的字节,每列就是一个字aj=(a0,j,a1,j,a2,j,a3,j)。我们用Nb表示一个数据块中字的个数,那么Nb=4、6或8。类似地,用Nk表示密钥中字的个数,那么Nk=4、
6或8,而算法轮数Nr则相应为10、12或14轮。以128-bit密钥长度为例,其加解密过程如图1所示:

AES算法在发动机防盗系统身份认证中的加密应用

其中,“+”表示状态矩阵与密钥进行字节异或运算。

字节代换采用非线性的S-盒变换。算法预先定义一个S-盒(一个16bytes×16bytes矩阵),再用查表的方法进行计算。

例如:要对状态矩阵中“0x12”这个字节加密,则在S-盒中找到第1行第2列的字节“0x57”,那么“0x57”就是“0x12”的代换字节。行移变换是将状态矩阵的每一行进行移位,移位量随行的不同而不同。第0行不移动,第1行循环左移C1个字节,第2行循环左移C2个字节,第3行循环左移C3个字节。位移量C1、C2、C3的取值与Nb有关,如表2所示:

AES算法在发动机防盗系统身份认证中的加密应用

列混合是在状态矩阵内每一列进行如下变换:

AES算法在发动机防盗系统身份认证中的加密应用

AES加密算法的可变分组长度和可变密钥长度,使其对ROM和RAM的要求低,快速密钥设置和运算设置更易于抵抗攻击,同时能够比较好的支持结构化平行设计。因此,AES加密算法汇聚了强安全性、高性能、高效率、对硬件配置要求低等优点,能够满足发动机防盗系统认证时间短、硬件配置经济可靠的要求,适合用作发动机防盗系统中身份认证的加密算法。

二、发动机防盗系统的身份认证技术

1、双重身份认证方案

发动机防盗系统主要由转发器、收发线圈和电子防盗器3大部分构成。转发器(Transponder)是一个集成在汽车钥匙手柄上的RFID芯片,以无线射频的方式通过收发线圈与电子防盗器进行通讯。电子防盗器(Immobilizer)一方面与转发器一起完成转发器身份认证,另一方面也通过K-Line总线完成ECU的身份认证。

可见,发动机防盗系统采用的是双重身份认证——转发器身份认证和ECU身份认证。转发器身份认证采用的是无线射频密码防盗,是第一重认证;ECU身份认证是通过K-Line总线完成的密码防盗,是第二重认证。只有当第一重认证通过后,发动机防盗系统才开始进行第二重认证,如果第二重认证也通过了,那么系统就通知ECU可以起动发动机了。否则,如果有任何一重认证没有通过,系统都会通知ECU不能起动发动机,从而实现了发动机的直接防盗。

2、身份认证过程

在对发动机防盗系统进行匹配时,首先要在转发器中存储转发器的标识码Transp_ID、密钥SK2,在电子防盗器中存储ECU的标识码ECU_ID、Transp_ID、密钥SK1、SK2,在ECU中存储ECU_ID和SK1。当汽车钥匙旋至车锁的Start时,ECU发出请求信号来唤醒电子防盗器,同时根据钥匙打到Start的次数生成一组随机数RN,ECU一方面将RN发送给电子防盗器,一方面将ECU_ID、RN和SK2进行加密运算,得到密文SC1。被唤醒的电子防盗器使与它连接的收发线圈产生电磁场,激活了集成在钥匙手柄中的转发器。转发器将Transp_ID发送给电子防盗器,电子防盗器也将收到的RN转发给转发器。双方接收到信息后,转发器将Transp_ID、RN和SK1进行加密运算,生成密文SC2;电子防盗器先将接收到的Transp_ID与其内部预存储的量相比较,如果一致也开始加密运算,得到密文SC3。对于密文SC2和SC3,电子防盗器要进行ECU身份的认证。在进行ECU身份认证时,电子防盗器先将内部存储的ECU_ID和SK2,以及来自ECU的RN进行加密得到密文SC4,然后再将SC4发送给ECU,在ECU中进行密文SC1与SC4的比较运算。如果SC1与SC4是一致的,那么就通过了ECU的身份认证,ECU发出指令起动发动机。否则,如果转发器身份认证和ECU身份认证有一项没有通过,ECU都不会起动发动机,实现发动机的防盗功能。

由于汽车钥匙打到Start的次数不断累加,ECU每次产生的随机数RN都是不同的,因而系统每次进行身份认证的密文SC1、SC2也是不同的。另外,获得密文SC1、SC2、SC3的加密运算几乎是同一时间分别在ECU、转发器和电子防盗器中同时进行的,因此大大节省了认证时间。由此可见,同以往的售后防盗及报警系统相比,发动机防盗系统保密性强,不产生声、光等污染,不会误动作,用户不需额外操作,正常使用过程中几乎感觉不到系统的存在,在极大提高汽车安全性的同时保证了汽车舒适性。

AES算法在发动机防盗系统身份认证中的加密应用

三、AES加密算法测试实验

1、加密实验步骤

在满足车辆防盗要求的同时,发动机防盗系统还应具备足够短的身份认证时间,从而使驾驶员在起动车辆时感觉不到发动机防盗系统的存在,保证汽车的舒适性。因此,采用AES加密算法时可以选取128-bit的数据块长度和密钥长度,在保证车辆安全性的同时,满足了整车的舒适性。

以ECU身份认证为例,发动机防盗系统的AES加密应用主要经过如下几个具体步骤:

(1)将128-bit初始密钥扩展为一个以“字”为单位的数组ExpandKey|44|;

(2)电子防盗器将ECU_ID和随机数RN构成的128-bit明文数据写入到状态矩阵State|4||4|中;

(3)在ExpandKey[44]中取前4个字为子密钥0,接下来的4个字为子密钥1,依次类推。每一轮选取的子密钥都装入数组RoundKey|4|中;

(4)State|4||4|与子密钥0进行异或运算AddRoundKey(),其结果重新装入State|4||4|中;

(5)将State|4||4|依次进行字节代换SubByte()、行移变换ShiftRow()和列混合MixColumn()操作,其结果仍然存入State|4||4|中;

(6)用下一轮子密钥与State|4||4|进行异或运算AddRoundKey(),并重复第5步,直到第10轮加密操作。在第10轮加密操作中,不需要进行列混合运算MixColumn();

(7)经过上述加密后的State|4||4|就是4bytes×4bytes的密文矩阵。

2、测试程序与实验结果

以Windows2000为平台,采用MicroSoftVC++为开发工具,设计AES加密算法应用于发动机防盗系统时的实验程序。在该实验程序中,在每一轮加密的最后输出状态数据State|4||4|,以便观察加密过程。该实验程序的主要代码描述如下:

设计随机测试数据如下:

AES算法在发动机防盗系统身份认证中的加密应用

AES算法在发动机防盗系统身份认证中的加密应用

(1)ECU_ID与RN构成的明文数据块为:

AES算法在发动机防盗系统身份认证中的加密应用

(2)初始密钥为:

AES算法在发动机防盗系统身份认证中的加密应用

则经过密钥扩展及上述AES加密实验程序,每一轮的输出为:

AES算法在发动机防盗系统身份认证中的加密应用

由此可见,实验程序得到了良好的加密结果,因而能够获得高级别的汽车安全性。同时,该实验用时非常之少,使驾驶员感受不到防盗系统的存在,满足了汽车人性化设计的要求。

身份认证能够增强发动机防盗系统的安全性,使其成功防盗概率达90%以上。在欧洲和美国,采用身份认证技术的发动机防盗系统已被列入汽车保险的必选件,它在汽车安全性方面的重要性,也由此可见一斑。

采用合适的加密算法来实现ECU、电子防盗器和汽车钥匙(指与之集成为一体的转发器)三者间的身份认证,则是整个防盗系统实现安全、快速、高效发动机防盗功能的核心与关键。AES加密算法针对二进制数进行加解密操作,具有很高的安全性能,已成为21世纪保护重要信息的高级算法。

小知识之发动机防盗系统

发动机防盗系统是针对发动机安装了一套防盗系统,因此即使盗车贼能打开车门也无法开走轿车。典型的发动机防盗系统是这样工作的:汽车点火钥匙中内装有电子芯片,每个芯片内都装有固定的ID(相当于身份识别号码),只有钥匙芯片的ID与发动机一侧的ID一致时,汽车才能启动。相反,如果不一致,汽车就会马上自动切断电路,使发动机无法启动。