文章目录
1.安全刷写的目的
随着车上ECU越来越多,主机厂会提出网络安全需求,网络安全需求中,包含安全刷写。安全刷写是避免ECU在升级过程中,刷写文件被恶意篡改,从而导致ECU功能失效。
2.安全刷写的实现
1.在刷写之前,必须使用27服务进行解密,才允许后续刷写操作,否则ECU将拒绝ECU升级操作
2.现在大部分主机厂都选择使用签名方式去升级ECU,签名一致后,将CMAC值写入ECU内部;如不一致不更新ECU内部CMAC值
3.为了防止ECU误刷入比ECU内部版本低的软件,从而导致ECU出现故障,需要做防降级操作。ECU只能刷入版本大于等于当前版本的软件。
3.安全刷写的要求
1.不支持除定义之前的会话模式
为了避免能在特殊会话下,能够支持部分诊断功能,从而能够修改ECU内部值(2E服务)或能够实现刷写功能,ECU在出厂前,需要将未定义会话(验证阶段,调试阶段使用,客户未定义)删除。
2.不支持未通过27解密就进行刷写
2.1 27 安全访问服务是保证是有权限的人员或者设备才能够进行刷写,从而避免ECU被随意篡改软件。
2.2 请求seed,seed要求不随机,重复度低。如果重复高那么就可能被穷举出来,从而通过27安全验证,从而能够篡改ECU内部数据或ECU内部软件
2.3 发送key,一般都使用多字节(目前大部分是4byte,现在逐步都在使用16byte),Key字节越长,被爆破可能性会降低。
2.4 如果尝试解密次数,需要开启Delay计时器,从而避免ECU一直被恶意攻击。
一般都是尝试次数达到3次后,开始Delay (10s)计时器,断电之前如果Delay(10s)延迟未结束,重启之后,10s定时器要重启,Delay定时器超时(10s)之后,才允许再次解密,Delay定时未超时前,不运行进行27解密操作。如果解密成功之后,则尝试次数清0,如果再次解密失败,则需要重启Delay计时器。
3.签名不一致,不允许软件下载
3.1 签名对刷写文件的验证,如果在软件已经下载到ECU内部时,ECU内部会对软件进行验证。如果上位机与ECU内部签名不一致,说明在刷写流程中,软件或签名被篡改,此次刷写存在安全隐患。
4.签名信息说明
主要使用一对公私钥搭配算法使用。
使用私钥对刷写文件进行签名,由车厂保管。
使用公钥对签名进行解密,主要嵌入ECU内部。
签名信号一般由:软件摘要值(SHA值)+版本(防降级)+ 签名(对软件摘要+版本使用私钥进行签名)组成
5.刷写过程
在刷写过程中,由上位机将刷写文件以及文件签名传递给ECU。
ECU接收到签名后,对签名进行解密得到一串数据。
ECU会使用算法对刷写文件进行计算得到一串数据。
ECU得到以上两串数据后,进行对比,如果一致,说明在软件刷写过程中,数据未被篡改;如果不一致,说明在刷写过程中,数据有可能被篡改。
版权归原作者 77赫兹 所有, 如有侵权,请联系我们删除。