支持AES加密的LIN协议Bootloader参考设计
时间:01-16
来源:互联网
点击:
作者:孙涛,曹学余,王钰博
面对日益严峻的安全挑战,为了确保数据在传输和存储过程中的安全性,汽车生产厂商以及模块供应商需要能够将应用程序加密和解密从而提升传输过程中的安全性。本文着重讨论一种将SREC文件进行加密和解密并且能过通过LIN总线下载到目标ECU的方案,该方案同时支持从应用程序进行跳转的握手协议的定制。
现如今,汽车上集成了越来越多的电子控制单元(ECU),一辆高端轿车上可能就集成有多达300个电子控制单元,它们分别完成空调、车灯以及引擎等模块的控制。
这些电子控制单元通过以太网、CAN或者LIN等总线进行连接,汽车生产厂商在研发、生产以及售后维护等阶段都需要将新的应用程序下载到ECU中,相比通过调试端口进行下载,CAN、LIN等总线提供了这样一种比较容易接入的通讯接口,使得下载更新应用程序更为便捷。
面对日益严峻的安全挑战,为了确保数据在传输和存储过程中的安全性,汽车生产厂商以及模块供应商需要能够将应用程序加密和解密从而提升传输过程中的安全性。本文着重讨论一种将SREC文件进行加密和解密并且能过通过LIN总线下载到目标ECU的方案,该方案同时支持从应用程序进行跳转的握手协议的定制。
AES 加密解密算法
AES算法也被称为Rijndael算法,是由NIST(美国国家标准技术研究所)于2001年发布的电子数据加密规范。
AES算法采用128位的明文分组,密钥长度支持128,192和256位。AES算法目前被世界范围内广泛使用以代替在1977年发布DES算法,AES算法是对称算法,也就是说加密和解密数据的过程使用同样的密钥。
AES算法加密过程可以划分为以下四个步骤:
密钥扩展(Key Expansions)。
初始轮(Initial Round),其中包含了AddRoundKey步骤。
重复轮(Rounds),其中每一轮包括SubBytes, ShiftRows, MixColumns和AddRoundKey步骤。
SubBytes步骤
如图1所示,该步骤根据原矩阵中的字节,将查找表(S-box)中对应的字节替换原字节。
ShiftRows步骤
如图2所示,该步骤将原矩阵的第二、第三以及第四行字节分别向左平移一个、两个和三个字节,得到新的矩阵。
MixColumns步骤
如图3所示,该步骤将固定矩阵与原矩阵相乘,得到新的矩阵。
AddRoundKey步骤
如图4所示,该步骤将原矩阵与轮密钥进行位异或操作,得到新的矩阵。
最终轮(Final Round),其中包含了SubBytes, ShiftRows以及AddRoundKey步骤,但不包含MixColumns步骤。
AES算法解密过程可以理解为将上述加密过程逆向进行,其中SubBytes, ShiftRows, MixColumns和AddRoundKey步骤都替换为其逆变换。
LIN Bootloader参考设计
SREC文件的加密
根据用户输入的的密钥或者选择使用系统密钥,AES加密引擎使用用户密钥将输入的SREC进行加密生成加密的SREC文件,与此同时加密引擎使用系统密钥将用户密钥进行加密生成加密的密钥文件。在此过程中,系统密钥对于用户来说是不可见的,如图5灰色部分所示。也就是说,如果SREC文件是用系统密钥加密的,用户无法解密该文件得到原始的SREC文件。3
图5:SREC文件加密流程。
SREC文件的解密
如果希望解密SREC文件,用户必须要知道用于加密的密钥,也就是说该SREC文件不能是用系统密钥加密的,否则就无法解密得到原始的SREC文件。AES解密引擎使用用户密钥将SREC解密生成解密的SREC文件。在Bootloader下载过程中,AES解密引擎会使用系统密钥对密钥文件进行解密得到实际的密钥,这一密钥将会被用于解密SREC文件。在此过程中,系统密钥和解密的密钥对于用户来说是不可见的,如图6所示。
图6:SREC文件的解密流程。
Bootloader流程
初始化过程包括通道、波特率、模式等配置。根据是否配置了自定义通讯协议,如果没有配置自定义通讯协议,默认ECU已经处于Bootloader模式因而无需从应用程序跳转,直接进入应用程序下载部分。如果配置了自定义通讯协议,上位机则会依次发送最多三个自定义数据帧,握手成功后ECU从应用程序跳转到Bootloader进入应用程序下载部分。
在ECU进入Bootloader模式之后,上位机如果检测到SREC文件没有被加密则开始建立跟ECU的Bootloader握手连接。如果检测到SREC文件被加密,上位机首先解密密钥文件得到原始密钥,然后使用该原始密钥解密SREC文件得到原始SREC文件,之后开始建立跟ECU的Bootloader握手连接。握手成功之后,上位机会依次发送SREC文件的一行,直到整个SREC文件发送结束。
Bootloader下载完成之后,ECU跳转到应用程序执行,整个流程如图7所示。
图7:Bootloader流程图。
面对日益严峻的安全挑战,为了确保数据在传输和存储过程中的安全性,汽车生产厂商以及模块供应商需要能够将应用程序加密和解密从而提升传输过程中的安全性。本文着重讨论一种将SREC文件进行加密和解密并且能过通过LIN总线下载到目标ECU的方案,该方案同时支持从应用程序进行跳转的握手协议的定制。
现如今,汽车上集成了越来越多的电子控制单元(ECU),一辆高端轿车上可能就集成有多达300个电子控制单元,它们分别完成空调、车灯以及引擎等模块的控制。
这些电子控制单元通过以太网、CAN或者LIN等总线进行连接,汽车生产厂商在研发、生产以及售后维护等阶段都需要将新的应用程序下载到ECU中,相比通过调试端口进行下载,CAN、LIN等总线提供了这样一种比较容易接入的通讯接口,使得下载更新应用程序更为便捷。
面对日益严峻的安全挑战,为了确保数据在传输和存储过程中的安全性,汽车生产厂商以及模块供应商需要能够将应用程序加密和解密从而提升传输过程中的安全性。本文着重讨论一种将SREC文件进行加密和解密并且能过通过LIN总线下载到目标ECU的方案,该方案同时支持从应用程序进行跳转的握手协议的定制。
AES 加密解密算法
AES算法也被称为Rijndael算法,是由NIST(美国国家标准技术研究所)于2001年发布的电子数据加密规范。
AES算法采用128位的明文分组,密钥长度支持128,192和256位。AES算法目前被世界范围内广泛使用以代替在1977年发布DES算法,AES算法是对称算法,也就是说加密和解密数据的过程使用同样的密钥。
AES算法加密过程可以划分为以下四个步骤:
密钥扩展(Key Expansions)。
初始轮(Initial Round),其中包含了AddRoundKey步骤。
重复轮(Rounds),其中每一轮包括SubBytes, ShiftRows, MixColumns和AddRoundKey步骤。
SubBytes步骤
如图1所示,该步骤根据原矩阵中的字节,将查找表(S-box)中对应的字节替换原字节。
ShiftRows步骤
如图2所示,该步骤将原矩阵的第二、第三以及第四行字节分别向左平移一个、两个和三个字节,得到新的矩阵。
MixColumns步骤
如图3所示,该步骤将固定矩阵与原矩阵相乘,得到新的矩阵。
AddRoundKey步骤
如图4所示,该步骤将原矩阵与轮密钥进行位异或操作,得到新的矩阵。
最终轮(Final Round),其中包含了SubBytes, ShiftRows以及AddRoundKey步骤,但不包含MixColumns步骤。
AES算法解密过程可以理解为将上述加密过程逆向进行,其中SubBytes, ShiftRows, MixColumns和AddRoundKey步骤都替换为其逆变换。
LIN Bootloader参考设计
SREC文件的加密
根据用户输入的的密钥或者选择使用系统密钥,AES加密引擎使用用户密钥将输入的SREC进行加密生成加密的SREC文件,与此同时加密引擎使用系统密钥将用户密钥进行加密生成加密的密钥文件。在此过程中,系统密钥对于用户来说是不可见的,如图5灰色部分所示。也就是说,如果SREC文件是用系统密钥加密的,用户无法解密该文件得到原始的SREC文件。3
图5:SREC文件加密流程。
SREC文件的解密
如果希望解密SREC文件,用户必须要知道用于加密的密钥,也就是说该SREC文件不能是用系统密钥加密的,否则就无法解密得到原始的SREC文件。AES解密引擎使用用户密钥将SREC解密生成解密的SREC文件。在Bootloader下载过程中,AES解密引擎会使用系统密钥对密钥文件进行解密得到实际的密钥,这一密钥将会被用于解密SREC文件。在此过程中,系统密钥和解密的密钥对于用户来说是不可见的,如图6所示。
图6:SREC文件的解密流程。
Bootloader流程
初始化过程包括通道、波特率、模式等配置。根据是否配置了自定义通讯协议,如果没有配置自定义通讯协议,默认ECU已经处于Bootloader模式因而无需从应用程序跳转,直接进入应用程序下载部分。如果配置了自定义通讯协议,上位机则会依次发送最多三个自定义数据帧,握手成功后ECU从应用程序跳转到Bootloader进入应用程序下载部分。
在ECU进入Bootloader模式之后,上位机如果检测到SREC文件没有被加密则开始建立跟ECU的Bootloader握手连接。如果检测到SREC文件被加密,上位机首先解密密钥文件得到原始密钥,然后使用该原始密钥解密SREC文件得到原始SREC文件,之后开始建立跟ECU的Bootloader握手连接。握手成功之后,上位机会依次发送SREC文件的一行,直到整个SREC文件发送结束。
Bootloader下载完成之后,ECU跳转到应用程序执行,整个流程如图7所示。
图7:Bootloader流程图。
- 以灯光控制为例说明LIN总线在车身控制中的应用(05-24)
- 现代电动车辆中电控技术应用(03-01)
- CAN总线混合动力汽车电控系统的设计与实现(08-29)
- 利用CAN总线的进行汽车轮速传感器系统设计(09-22)
- CAN总线在CFA6470混合动力汽车中的应用(09-25)
- 基于CAN总线的汽车发动机智能电子控制器研究(10-20)