• 汽车网络和控制单元的安全威胁研究


    注:

    本文是对《汽车网络和控制单元的安全威胁研究》一文的读书笔记。
    原文和翻译文可以从我的网盘下载: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.对福特车的进行攻击的演示包括:

    1. 在车门关闭的情况下,通过发送数据,使仪表盘显示车门处于半开状态。
    2. 更改速度表和转速表的显示
    3. 控制里程表的数值(累加里程)
    4. 篡改导航系统的车辆行驶目的地
    5. 限制车辆的转向。(辅助转向被关闭,车轮会变得很难移动,并且无论怎么努力尝试转动方向盘都无法超过45%)
    6. 修改动车辅助模块(PAM)
    7. 制动啮合 - 即使猛加速也无法使车辆移动,汽车实际上被锁定在其位置上。
    8. 无制动 - 刹车无法工作,也无法停止车辆,至少使用刹车无法做到。(攻击只有在车速相当慢时才有效,大概小于5英里/小时)
    9. 关车灯,可以使车头灯、车内灯、收音机、HVAC、刹车灯等停止工作。
    10. 熄灭引擎
    11. 灯光闪烁
    12. 修改汽车

    8.对丰田车的进行攻击的演示包括:

    1. 速度表,使之可以显示任意速度
    2. 修改制动系统
    3. 修改加速系统
    4. 修改转向系统
    5. 修改转向系统- 车道保持辅助(LKA)
    6. 熄灭引擎
    7. 车灯开/关
    8. 喇叭开/关
    9. 安全带马达啮合
    10. 车门上锁/开锁
    11. 燃油表数据的更改
  • 相关阅读:
    基于visual Studio2013解决C语言竞赛题之1074八皇后
    Bit,Bytes,KB,MB,GB,TB,PB,EB,ZB,YB
    RFID系统的选择
    java中复制文本文件
    java中复制文本文件
    数据筛选和排序
    实现Windows程序的数据绑定
    实现Windows程序的数据更新
    使用ListView控件展示数据
    构建良好的windows程序
  • 原文地址:https://www.cnblogs.com/CiACAN/p/4929145.html
Copyright © 2020-2023  润新知