CAN/CANFD
CCP/UDS
Bootloader/OTA
ECU/VCU/FCU
Simulink/ECUCoder
Ethernet
Hardware
Download
上一篇
下一篇
信息安全基础知识
一.信息安全简介
-1.1.信息安全主要相关标准
-1.2.信息安全技术要求
-1.3.控制器的信息安全功能
-1.4.控制器信息安全关键技术
二.控制器加密技术
-2.1.加密技术简介
-2.2.AES128
-2.3.加密控制器
-2.4.获取加密状态
-2.5.解密控制器
-2.6.解密阶段通信协议
三.数字签名技术
-3.1.数字签名技术简介
-3.2.RSA数字签名
-3.3.刷写文件数字签名
-3.4.验证刷写文件
四.控制器信息安全小结
回到顶部
信息安全基础知识
一.信息安全简介
-1.1.信息安全主要相关标准
-1.2.信息安全技术要求
-1.3.控制器的信息安全功能
-1.4.控制器信息安全关键技术
二.控制器加密技术
-2.1.加密技术简介
-2.2.AES128
-2.3.加密控制器
-2.4.获取加密状态
-2.5.解密控制器
-2.6.解密阶段通信协议
三.数字签名技术
-3.1.数字签名技术简介
-3.2.RSA数字签名
-3.3.刷写文件数字签名
-3.4.验证刷写文件
四.控制器信息安全小结
回到顶部
# 信息安全基础知识 本文信息安全指的是汽车信息安全,即Vehicle Cybersecurity。 ## 一.信息安全简介
按照国标《GB 44495-2024 汽车整车信息安全技术要求》的定义,汽车信息安全指的是汽车的电子电气系统、组件和功能被保护,使其资产不受威胁的状态。 ### 1.1.信息安全主要相关标准
汽车信息安全主要相关标准如下: - GB 44495-2024: 汽车整车信息安全技术要求 - GB 44496-2024: 汽车软件升级通用技术要求 - GB/T 40861-2021:汽车信息安全通用技术要求 - ISO/SAE 21434-2021:Road vehicles — Cybersecurity engineering ### 1.2.信息安全技术要求
按照国标《GB 44495-2024 汽车整车信息安全技术要求》,信息安全技术要求涵盖以下几个方面: 1. 外部连接安全要求 2. 通信安全要求 3. 软件升级安全要求 4. 数据安全要求 关于信息安全技术要求的具体内容可以参考国标《GB 44495-2024 汽车整车信息安全技术要求》相关内容。 ### 1.3.控制器的信息安全功能
控制器的信息安全功能主要包括但不限于: 1. 安全启动:保证控制器中存储的固件的真实性和完整性。 2. 安全刷写:保证控制器软件升级包的真实性和完整性。 3. 安全访问:防止未经授权使用控制器测量标定功能或者UDS诊断服务。 4. 安全调试:避免黑客利用调试接口篡改软件或者提取关键信息。 5. 安全连接:禁止非授权访问控制器的外部接口,保证远程控制指令的真实性和完整性。 ### 1.4.控制器信息安全关键技术
控制器信息安全关键技术包含芯片、硬件、固件、软件等多个层次,其中软件是最接近用户的。控制器信息安全软件关键技术主要包括控制器加密技术与数字签名技术。 ## 二.控制器加密技术
控制器的所有信息安全功能,包括安全启动、安全刷写、安全访问、安全调试与安全连接都需要使用加密技术。 ### 2.1.加密技术简介
加密技术是IT与互联网采取的主要安全保密措施,是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。 加密技术包括两个元素:算法和密钥。算法是将普通的文本(或者可以理解的信息)与一串数字密钥的结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解码的一种算法。在安全保密中,可通过适当的密钥加密技术和管理机制来保证网络的信息通讯安全。密钥加密技术的密码体制分为对称密钥体制和非对称密钥体制两种。相应地,对数据加密的技术分为两类,即对称加密(私人密钥加密)和非对称加密(公开密钥加密)。 对称加密的加密阶段与解密阶段使用相同的密钥,常用的对称加密算法包括DES、3DES与AES。  非对称加密的加密阶段与解密阶段使用不同的密钥,公钥加密,私钥解密。常用的非对称加密算法包括RSA与ECC。  ### 2.2.AES128
AES,Advanced Encryption Standard是高级加密标准的缩写,RapidECU控制器使用了AES128-CMAC算法,AES128加密总体流程如下图。关于AES128算法的详细介绍,可以参考如下两个链接: [AES加密(1): 基本AES算法 - 知乎](https://zhuanlan.zhihu.com/p/125633081) [AES128加解密流程详细介绍 - 知乎](https://zhuanlan.zhihu.com/p/397940508)  ### 2.3.加密控制器
对于RapidECU用户,可以使用ECUCoder提供的Security子库模块加密RapidECU控制器。 将SecuritySetting模块拖入模型顶层,双击模块设置密码与加密选项等,如下图所示,然后点击“OK”按钮,这样就可以加密控制器。   如上图所示,参数AES128-CMAC Key用于设置控制器的密码,RapidECU使用AES128-CMAC加密算法,需要使用长度为16个字符的密码。另外,设置密码还需要遵循以下两点要求: (1)必须以字母打头,之后可以是任意字母、数字或下划线,字母区分大小写。 (2)长度必须是16个字符,不允许使用下划线以外的标点符号,不允许使用空格、Tab、回车等,不允许使用中文。 SecuritySetting模块的默认密码是’RapidECU12345678’,用户在熟练使用加密解密功能之前,建议不要修改默认密码。加密解密自定义密码需要获取完整授权,完整授权可通过联系华海科技相关销售与技术支持人员来获取。 Security选项用于选择加密选项,分别为: (1)Encrypt Nothing:不加密控制器。 (2)Encrypt Bootloader only:加密控制器的Bootloader,加密的控制器无法再进行软件升级。如果需要对控制器进行软件升级,必须先解密控制器,解密的控制器可以进行软件升级。 (3)Encrypt Bootloader and CCP:加密控制器的Bootloader与CCP测量标定,加密的控制器无法再进行软件升级,也无法进行CCP测量标定。如果需要对控制器进行软件升级或者CCP测量标定,必须先解密控制器,解密的控制器可以进行软件升级与CCP测量标定。 (4)Encrypt Bootloader and UDS:加密控制器的Bootloader与UDS故障诊断,加密的控制器无法再进行软件升级,也无法进行UDS故障诊断。如果需要对控制器进行软件升级或者UDS故障诊断,必须先解密控制器,解密的控制器可以进行软件升级与UDS故障诊断。 (5)Encrypt Bootloader and CCP and UDS:加密控制器的Bootloader、CCP测量标定与UDS故障诊断,加密的控制器无法再进行软件升级,也无法进行CCP测量标定与UDS故障诊断。如果需要对控制器进行软件升级或者CCP测量标定或者UDS故障诊断,必须先解密控制器,解密的控制器可以进行软件升级、CCP测量标定与UDS故障诊断。 ### 2.4.获取加密状态
使用SecurityStatus模块可以实时获取控制器的加密状态,将模块拖入到模型(通常是周期性任务)中,即可获取控制器的加密状态。SecurityStatus模块包含三个输出端口,端口1为Bootloader加密状态,端口2为CCP加密状态,端口3为UDS加密状态,端口输出数据0代表解密,数据1代表加密。 使用SID27Counter模块可以实时获取当前控制器SID27服务被访问的次数,将模块拖入到模型(通常是周期性任务)中,即可获取控制器SID27服务被访问的次数。当访问次数超过20的时候,控制器将不再提供解密服务,此时如果再尝试解密控制器会给出负响应。 在建模时使用BootVersion模块可以读取控制器Boot软件的协议版本,比如RapidECU-U34控制器的BootVersion模块输出应为51、52、52、51(对应字符'3'、'4'、'4'、'3'的ASCⅡ码),表示控制器使用的主控芯片为S32K344,Boot软件版本为V3。 需要注意的是,ECUCoder提供的BootVersion模块只在V3或者更新版本的控制器上有效,对于早期版本的控制器,BootVersion模块输出可能为255或者乱码。 ### 2.5.解密控制器
对于加密的控制器,需要先解密才能进行软件升级。使用MeCa-Security Tool工具可以解密控制器,点击MeCa软件工具栏的Security Tool按钮打开MeCa-Security Tool工具。需要注意的是,Security Tool需要电脑管理员权限,因此打开MeCa软件时请使用鼠标右键-以管理员身份运行,否则可能出现各种异常。  打开Security Tool后,首先会弹出登录界面,如下图所示。默认的用户名/密码是Tester001/12345678,Tester001用户仅用于功能演示,不具备自定义密码的功能。加密解密自定义密码需要获取完整授权,完整授权可通过联系华海科技相关销售与技术支持人员来获取。点击“登录”按钮即可登录Security Tool。  登录之后的软件界面如下图所示,主要提供了两种功能:验证S19文件与解密RapidECU。点击“解密RapidECU”按钮即可进入解密软件。  解密RapidECU的软件界面如下图所示,其中用户名是当前登录的用户名称,Tester001用户仅用于功能演示,不具备自定义密码的功能。加密解密自定义密码需要获取完整授权,完整授权可通过联系华海科技相关销售与技术支持人员来获取。  如果当前电脑已经连接了加密控制器的话,依次点击“建立连接”、“连接测试”、“解密”按钮,即可解密控制器,如下图所示。提示解密成功之后,关闭解密软件与功能选择界面,此时可以使用UDS Program来正常进行软件升级。需要注意的是:控制器解密是临时的,只在当前解密这一次上电有效。当控制器重启之后,控制器会重新进入加密状态。  ### 2.6.解密阶段通信协议
解密阶段通信基于UDS协议,使用了0x27等UDS服务,控制器加密算法为AES128-CMAC。测试阶段(即点击“连接测试”按钮)的具体通信协议如下图所示。  解密阶段(即点击“解密”按钮)的具体通信协议如下图所示。  ## 三.数字签名技术
控制器的安全启动、安全刷写与安全连接都需要使用数字签名技术,数字签名技术可以保证数据的真实性和完整性。 ### 3.1.数字签名技术简介
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。 数字签名的文件的完整性是很容易验证的(不需要骑缝章,骑缝签名,也不需要笔迹专家),而且数字签名具有不可抵赖性(不可否认性)。 简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。 一套完整的数字签名包括两个运算(假设已经有密钥,因此不包括密钥生成运算),一个运算用于生成数字签名,基本过程如下图所示。  另一个运算用于验证数字运算,基本过程如下图所示。  ### 3.2.RSA数字签名
RSA这个缩写词是三个发明者姓氏的首字母组成的,因此并不具有原理性含义。RapidECU控制器使用了RSA3072算法,关于RSA数字签名的详细介绍,可以参考如下两个链接: [一文搞懂RSA算法 - 知乎](https://zhuanlan.zhihu.com/p/337494458) [RSA加密及数字签名详解 - 知乎](https://zhuanlan.zhihu.com/p/299786289) ### 3.3.刷写文件数字签名
为了保证刷写文件包在文件传输过程中的完整性与真实性,需要对刷写文件(即S19文件)进行数字签名。RapidECU控制器提供了基于SHA256哈希运算的升级包完整性验证功能和基于RSA3072加密算法的升级包真实性验证功能,验证原理示意图见下图。  刷写文件验证的基本步骤包括: (1)模型文件经过模型编译之后生成S19文件。 (2)对S19文件进行基于SHA256哈希运算得到文件哈希值。 (3)利用ECUCoder的RSA3072私钥对文件哈希值进行签名运算得到数字签名文件。 (4)将S19文件、数字签名文件与RSA3072公钥文件打包成刷写文件包传输。 (5)文件接收方收到文件之后利用公钥对数字签名文件验证运算得到一个文件哈希值。 (6)文件接收方对S19文件进行基于SHA256哈希运算得到另一个文件哈希值。 (7)如果两个文件哈希值一致,文件验证通过,可以用于刷写。 (8)如果两个文件哈希值不一致,文件验证失败,不可用于刷写。 ECUCoder提供MATLAB脚本对S19文件进行数字签名,脚本命令为ec344_signs19(‘S19_File’)(或者ec311_signs19),该脚本的参数为包含详细文件路径的S19文件名称。脚本使用示例(基于MATLAB命令行):ec344_signs19('D:\ecucoderworks\Demos\Demo8.s19'),如下图所示(如果使用ECUCoder for S32K311软件的话下图中344需要更换为311)。  数字签名完成之后,在S19文件的相同路径下会生成一个与S19文件同名的.pem文件,该文件即为数字签名文件。通常需要将S19文件、数字签名文件与公钥文件打包成刷写文件包传输,如果刷写工具使用MeCa软件的话,可以不打包公钥文件,因为MeCa软件本身集成了与ECUCoder相同的公钥文件。 ### 3.4.验证刷写文件
使用MeCa-Security Tool工具可以验证S19文件的完整性与真实性,点击MeCa软件工具栏的Security Tool按钮打开MeCa-Security Tool工具。登录之后的软件主要提供了两种功能:验证S19文件与解密RapidECU。点击“验证S19文件”按钮即可进入验证软件。 验证软件界面如下图所示,点击“选择待刷写文件”按钮选择S19文件,点击“选择数字签名文件”按钮选择数字签名文件,点击“选择公钥文件”按钮选择公钥文件(位于MeCa软件根目录下),然后点击“验证运算”按钮即可进行验证运算。如果S19文件未被破坏或者篡改,软件会提示签名验证成功,S19文件可以用于刷写。如果S19文件已被破坏或者篡改,软件会提示签名验证失败,S19文件不可用于刷写。  ## 四.控制器信息安全小结
控制器的信息安全功能主要包括但不限于安全启动、安全刷写、安全访问、安全调试与安全连接,控制器信息安全软件关键技术主要包括控制器加密技术与数字签名技术。Security子库是[ECUCoder](./ecucoder.html)提供的信息安全相关功能控制器软件模块,提供了控制器加密、软件数字签名等功能。Security Tool是[MeCa](./meca.html)提供的信息安全相关功能控制器软件工具,提供了控制器解密、S19文件验证等功能。Security子库与Security Tool共同组成了信息安全相关功能控制器软件解决方案。基于上述软件解决方案,RapidECU用户可以更小代价快速实现信息安全合规。