注:
本文是对《汽车网络和控制单元的安全威胁研究》一文的读书笔记。
原文和翻译文可以从我的网盘下载:http://pan.baidu.com/s/1o6Op4fC
本文以2010款丰田普锐斯(prius)和福特翼虎(Escape)为演示对象,展示了对汽车进行控制和攻击的可能,这些攻击会对汽车的电气系统产生很大的威胁,造成诸如: 电气系统意外失败、或拒绝服务(类似于DDOS)等安全事故。
文中提到的一些关键点:
1.从安全方面考虑,CAN总线存在的隐患:
ECU之间通过CAN总线进行连接,ECU之间的通讯是通过发送CAN数据包进行的,这些数据包以广播的形式发送至总线,由每个ECU决定是否接收他们。
CA数据包中没有来源识别和验证信息。
基于以上两点,很容易在ECU之间进行CAN的网络嗅探,或者伪装成其他ECU发送CAN数据包。
2.丰田汽车的校验和
对于丰田汽车,字节数(DLC)的变化很大而且往往最后几个字节包含数据的检验和。正如我们后面看到的,有一种标准方式使用CAN数据包一次传输超过8字节的数据。
丰田普锐斯的许多CAN消息在最后几个字节会包含一个消息检验和,大量重要的CAN数据包都包含一个校验和,但不是所有消息都有,计算校验和的方法:
检验和 = (ID_H + ID_L + LEN + sum(Data[0] ~ Data[LEN-2]
)) & 0xFF `
然后:DLC[Len-1] = 校验和
CAN总线上已接收消息的数据包如果没有正确的校验和都将被ECU完全忽略。
个人评论:这是一个比较好的数据保护方式,如果采用较复杂的算法,应该可以保证车辆的安全,但是前提是该算法不被泄露,同时,对ECU的处理速度会有影响,毕竟复杂算法的执行需要时间。
3.ISO-TP(ISO15765-2)
是一个总线发送数据包的国际标准,这种标准定义了一种通过CAN总线发送任意长度数据的方法。ISO-TP在每个CAN数据包的前面防止一个或多个元数据字节,这些额外的字节叫做协议控制信息(PCI),第一个字节的前半个字节表示PCI类型,共有四个可能的值:
0: 单帧,包含整个载荷(Payload),后半个字节表示数据包有多少个数据
1: d第一帧,即多包数据的第一帧,后面的三个半字节(12bit)表示载荷的大小。
2: 连贯帧,即包含多包载荷的剩余部分,后半个字节作为接收到的数据包的排序索引,如果传输内容的长度超过112字节,该索引可以作为包裹。
3: 流控制帧,作为第一帧数据包的回馈信息,即诸如分发速率这样额外传输数据包的特定参数
正如你将在通篇报告中看到的那样,丰田汽车是偏离标准而为的,虽然在重新编码时使用了类似ISO-TP的协议但它并未直接遵守标准执行。
4.ISO 14229和ISO14230
ISO-TP标准中描述了怎么发送数据,有两种相近的标准ISO14229和ISO14230描述了实际数据发送的格式。
这里提到的安全访问很有意思:
为了完成许多敏感诊断行为,有必要对ECU进行鉴别,这是由安全访问服务完成的,有多种级别的访问可能。首先请求是向ECU请求一个密码种子,ECU和发送者共享一个密钥函数和密钥,给出种子后才会发出响应消息,然后发送者发送根据密码种子计算的结果给ECU,以证明其拥有密钥,用这种方式,实际的密钥就不会在CAN网络中传输,但反过来进行非重复的复杂响应就值得商榷了。
5.数据包的冲突问题
定位从一个ECU到另外一个ECU并执行动作的特定数据包请求需要大量的逆向工程。从控制角度看这些都是很有意思的。即使这些CAN-ID被识别,也仍然有两个问题发生:第一个问题是可以发送虚假数据包,但源ECU仍然会向网络发送数据包,这种冲突数据会让接收的ECU产生混乱。另一个问题是接收的ECU可能具有安全特性,可以忽略接收到的虚假信息包。......
最后,如果数据包在总线上发生并行冲突,可能会导致缺乏响应或者完全忽略数据包,记住:伪造数据包的源ECU依然会发送数据包到总线上,除非将之完全从网络上移除。所以,接收数据的ECU可能会受到冲突数据,例如:要伪造数据在仪表盘上显示当前速度就必须比ECU实际报告速度的频率更高,否则显示的信息不是预期的结果。
6.洪水攻击
当CANID实际上毫无意义时,这种方式可以用来启发式地查找哪个CAN数据包更加重要。总之,对CAN网络进行洪水攻击最简单的方法就是发送ID为0000的CAN数据包,这些数据包会被认为具有较高的优先级,其他所有数据包都会等待他们被传送。如果始终没有停止发送这些数据包,那就没有其他数据包可以被传送,并持续等待ID为0000的CAN数据包。 如果在汽车启动之前发送这个ID为0000的数据包,汽车将无法启动。
7.获取福特车密钥的方式
方法1:暴力破解
方法2:逆向实际福特汽车的集成诊断软件(IDS)工具。逆向丰田校准更新向导(CUW)
8.对福特车的进行攻击的演示包括:
- 在车门关闭的情况下,通过发送数据,使仪表盘显示车门处于半开状态。
- 更改速度表和转速表的显示
- 控制里程表的数值(累加里程)
- 篡改导航系统的车辆行驶目的地
- 限制车辆的转向。(辅助转向被关闭,车轮会变得很难移动,并且无论怎么努力尝试转动方向盘都无法超过45%)
- 修改动车辅助模块(PAM)
- 制动啮合 - 即使猛加速也无法使车辆移动,汽车实际上被锁定在其位置上。
- 无制动 - 刹车无法工作,也无法停止车辆,至少使用刹车无法做到。(攻击只有在车速相当慢时才有效,大概小于5英里/小时)
- 关车灯,可以使车头灯、车内灯、收音机、HVAC、刹车灯等停止工作。
- 熄灭引擎
- 灯光闪烁
- 修改汽车
8.对丰田车的进行攻击的演示包括:
- 速度表,使之可以显示任意速度
- 修改制动系统
- 修改加速系统
- 修改转向系统
- 修改转向系统- 车道保持辅助(LKA)
- 熄灭引擎
- 车灯开/关
- 喇叭开/关
- 安全带马达啮合
- 车门上锁/开锁
- 燃油表数据的更改