这里写目录标题
- 1 背景
- 2 了解黑客攻击原理
- 3 SecOC实现数据的真实性与完整性校验
- 3.1 数据身份验证完成真实性验证
- 3.2 防止重放攻击

1 背景
在今天的车载网络中,大部分数据传输是在没有任何特殊安全措施的情况下进行的。因此,一旦能够直接访问车辆的总线,任何人都可以读取总线上传输的原始数据,甚至在今天的车载网络中,大部分数据传输是在没有任何特殊安全措施的情况下进行的。因此,一旦能够直接访问车辆的总线,任何人都可以读取总线上传输的原始数据,甚至可以截获这些数据并且修改后重新发送到总线系统中。
为了解决上面的痛点,保证报文的完整性与真实性 Autosar标准定义了SecOC模块(Security onboard Communication)来去标准解决汽车发展中的信息安全
2 了解黑客攻击原理
从目前已知的攻击手段来看,远程控制一辆汽车的唯一障碍就是如何获取车辆总线的访问权。一旦能够直接访问车内网络,黑客就可以模拟一个合法的数据发送节点来操控整个汽车。使用了SecOC机制后,黑客除了获取总线访问权以外还需要知道发送节点的密钥才能模拟出合法的数据。通过合理的密钥分发机制可以保证密钥不会泄漏给汽车整车厂以外的其他任何人。因此SecOC可以有效地阻止黑客对汽车网络的攻击。(SecOC保证报文真实性的举例)
3 SecOC实现数据的真实性与完整性校验
在SecOC标准中,AUTOSAR主要基于两种手段来实现数据的真实性和完整性的校验:基于MAC的身份验证和基于Freshness的防重放攻击。
3.1 数据身份验证完成真实性验证
MAC(Message Authentication Code)是保障信息完整性和认证的密码学方法之一,其中常作为车载总线加密认证方案的为CMAC(Cipher–based Message Authentication Code)。MAC的作用不是防止有效数据被泄露,而是为了保护数据不会被攻击方篡改,即完成数据来源的认证。如需保护通信数据不被攻击方监听,则报文的有效数据还需要进行额外的加密。
在AUTOSAR中,需要加密保护的数据信息被称为AuthenticI-PDU。SecOC模块根据AuthenticI-PDU和密钥使用CMAC算法可以得到Authenticator(即MAC值)。Authenticator和AuthenticI-PDU再加上一些必要的报头即得到SecuredI-PDU,其数据结构如图1所示。发送节点在发送有效数据(AuthenticI-PDU)前,会根据上述方法得到对应的SecuredI-PDU,然后再将SecuredI-PDU发送到总线上。
CMAC一般用于对称加密,对称加密要求发送节点和接收节点都具有相同的密钥。整车厂可选择在车辆下线刷写程序时静态分配密钥,也可选择使用云端服务器动态地给车辆分配密钥。
在接收节点,SecOC模块使用同样的算法和密钥对收到的AuthenticI-PDU计算Authenticator。如果接收节点计算出的Authenticator和SecuredI-PDU中的Authenticator相同,则接收节点认为该数据来源于合法的发送节点。反之,则接收节点认为该PDU来自非法的发送节点,相关数据将会被直接丢弃。
另外,由于传统CAN报文每帧最多传输8个字节的数据,如果在传统CAN总线上使用SecOC,那么Authenticator和PDU Header通常会占用掉一半的数据场,这样会导致CAN报文的有效利用率过低。相比之下CANFD有长达64个字节的数据场长度,因此CANFD总线更适合使用SecOC通信。
3.2 防止重放攻击
在上述的通信机制中,Authenticator的计算依据只包含有效数据和密钥,因此只要有效数据相同,那么Authenticator一定是相同的。这意味着攻击方可以使用重放攻击干扰控制器的正常通信甚至控制车辆的行为。重放攻击指的是攻击者记录下合法数据源和接收节点之间的正常通信数据,并在必要时将记录下的数据重新发送给接收节点从而达到控制接收节点的一种攻击手段。此时接收节点无法检查报文是否来自合法的发送节点。
为了避免上述情况,在对AuthenticI-PDU加密过程中,SecOC规定Authenticator计算时还需要加入Freshness Value(新鲜度值),并在SecuredI-PDU中也需要包含FreshnessValue。
Freshness Value是一个根据一定逻辑不断更新的数值,Freshness Value的更新方法多种多样,如使用报文计数器、整车各节点统一的时钟作为更新源等方式。若将Freshness Value值结合有效数据和密钥一同作为计算对象计算Authenticator,那么由于每次数据传输Freshness Value值的变化,Authenticator也将随之改变。攻击方在监听到报文后,无法将Authenticator与相应的有效数据匹配,若重复发送带有错误Freshness Value的报文,接收节点将对其丢弃,也就无法形成有效的重放攻击(接入总线后进行的“DoS攻击”不在讨论范围内)。加入Freshness Value的SecuredI-PDU如图2所示:
SecOC的难点实际上在于Freshness Value的生成 管理与验证,后面一篇文章将介绍实际项目中的几种实现方式