-
基于
CANoe
的
SecOC
实现
在今天的车载网络中,大部分数据传输是在没有任何特殊安全措施的情况下进行的。因此,一旦能够
p>
直接访问车辆的总线,任何人都可以读取总线上传输的原始数据,甚至可以截获这些数据并且
修改后
重新发送到总线系统中。加密传输的数据不仅可以确保此信息只能由授权接收方接
收,更重要的是它
也会使拦截或修改报文变得更加困难。
如今的车辆是高度复杂的系统,由诸多传感器和执行器组成,
并通过总线系统不断交换数据。在绝大
多数情况下,控制器以原始数据的形式传输数据。
即使接收节点能对数据进行合理性检查,这些措施
对数据可靠性的提升也是有限的。接收
节点无法验证数据来自于期望的发送节点还是其他节点,即无
法验证数据是否真实。同时
,总线上传输的数据也是可以自由访问的,因此可以通过分析总线上传输
的原始数据来反
推得到其表示的内容。这样的数据传输既不进行保密也不进行认证。
在最近几年中,新闻媒体已经报道了多起针对汽车网络的恶意
攻击行为。这些报道引发了大家的热烈
讨论:恶意攻击是否能够实质上影响车载网络通信
?是否可以通过车载的无线终端或者
OBD
接口影
响车的行为?对于这些恶意的攻击,我们有哪些反制手段?
因此,加密通信(
Cyber
Security
或
Security Onboard Co
mmunication
)受到了越来越多的关注。为
了响应汽
车行业对数据加密和验证的需求,
AUTOSAR
组织提出了一
系列通信加密和验证的标准。在
本文中,我们以目前应用比较广泛的
Security Onboard Communication
为例介绍其实现
方式以及
CANoe
的支持情况。
Se
curity Onboard Communication
简称为
< br>SecOC
,该模块的主要作用是为总线
上传输的数据提
供身份验证,它可以有效地检测出数据回放、欺骗以及篡改等攻击手段。
从目前已知的攻击手段来看,远程控制一辆汽车的唯一障碍就
是如何获取车辆总线的访问权。一旦能
够直接访问车内网络,黑客就可以模拟一个合法的
数据发送节点来操控整个汽车。使用了
SecOC
机
制后,黑客除了获取总线访问权以外还需要知道发送节点的密钥才能模拟出合法的数据。通过合理的
密钥分发机制可以保证密钥不会泄漏给汽车整车厂以外的其他任何人。因此
SecOC
可以有效地阻止
黑客对汽车网络的攻击。
在
Se
cOC
标准中,
AUTOSAR
主要基
于两种手段来实现数据的真实性和完整性的校验:基于
MAC
的
身份验证和基于
Freshness
的
防重放攻击。
数据身份验证
MAC
(
Message
Authentication Code
)是保障信息完整性和认证的密码学方法之一
,其中常作为车载
总线加密认证方案的为
CMAC
(
Cipher
–
base
d Message Authentication Code
)。
< br>MAC
的作用不是防
止有效数据被泄露,而是为了保护数
据不会被攻击方篡改,即完成数据来源的认证。如需保护通信数
据不被攻击方监听,则报
文的有效数据还需要进行额外的加密。
< br>在
AUTOSAR
中,需要加密保护的数据信息被称为<
/p>
AuthenticI-PDU
。
Sec
OC
模块根据
AuthenticI-
PDU
和密钥使用
CMAC
算法可以得
到
Authenticator
(即
M
AC
值)。
Authenticator
和
AuthenticI-
PDU
再
加上一些必要的报头即得到
SecuredI-PDU
,其数据
结构如图
1
所示。发送节点在发送有效数
据(
AuthenticI-
PDU
)前,会根据上述方法得到对应的
SecuredI-
PDU
,然后再将
SecuredI-
PDU
发送
到总线上。
图
1 Secured
I-PDU
内容结构
1
CMAC
一般用于对称加密,对称加密要求发送节点和接收节点都具有相同
的密钥。整车厂可选择在车
辆下线刷写程序时静态分配密钥,也可选择使用云端服务器动
态地给车辆分配密钥。
在接收节
点,
SecOC
模块使用同样的算法和密钥对收到的
AuthenticI-PDU
计算
Authen
ticator
。如果
接收节点计算出的
Authenticator
和
SecuredI-PDU<
/p>
中的
Authenticator
相同,
则接收节点认为该数据
来源于合法的发送节点。反之,则接收节点认为该
PDU
来自非法的发送节点,相关数据将会被直接
丢弃
。
另外,由于传统
CAN
报文每帧最多传输
8
个字节的数据,如果在传统
CAN
总线上使用
< br>SecOC
,那
么
Authen
ticator
和
PDU Header
通常会占用掉一半的数据场,这样会导致
CAN
报文的有效利
用率过
低。相比之下
CANFD
有长达
64
个字节的数据场长度,因此
CAN
FD
总线更适合使用
SecOC
通信。
防止重放攻击
在上述的通信机制中
,
Authenticator
的计算依据只包含有效数据和密
钥,因此只要有效数据相同,那
么
Authenticator
一定是相同的。这意味着攻击方可以使用重放攻击干扰控制器的正常通信甚至控制车
p>
辆的行为。重放攻击指的是攻击者记录下合法数据源和接收节点之间的正常通信数据,并在必
要时将
记录下的数据重新发送给接收节点从而达到控制接收节点的一种攻击手段。此时接
收节点无法检查报
文是否来自合法的发送节点。
为了避免上述情况,在对
AuthenticI-PDU
加密过程中,
SecOC
规定
Authenticator
计算时还需要加入
Fre
shness
Value
(新鲜度值),并在
SecuredI-PDU
p>
中也需要包含
FreshnessValue
。
Freshness Va
lue
是一个根据一定逻辑不断更新的数值,
Freshnes
s Value
的更新方法多种多样,如使
用报文计数器、整车
各节点统一的时钟作为更新源等方式。若将
Freshness Value
值结合有效数据和
密钥一同作为计算对象计算
Au
thenticator
,那么由于每次数据传输
Freshn
ess Value
值的变化,
Authenticator<
/p>
也将随之改变。攻击方在监听到报文后,无法将
Authenti
cator
与相应的有效数据匹配,
若重复发送带有错误
Freshness Value
的报文,接收节点将对其丢弃,也就
无法形成有效的重放攻击
(接入总线后进行的
“
DoS
攻击
”
不在讨论范围内)。加入
Freshness
Value
的
SecuredI-PDU
如图
2
所示:
图
2 Secured
I-PDU
内容结构
2
对于使用全局时钟的
Freshness Value
,各节点将周期性的进行时钟同步,
Freshness Value<
/p>
随时间戳
改变而改变。若使用报文计数器作为
Freshness Value
的更新方法,其值可由发送节点提供,计数器
p>
值仅与报文发送次数相关;也可由专门的
Freshness
Value
管理节点进行同步控制。
我们可设置一个专门的
ECU
节点负责管理
Freshness Value
,它周期地发送同步报文至所有发送节点
和接收节点;也可使所有的发送节点都作为管
理节点,它将发送同步报文至相关接收节点。对于这两
种方案,
Freshness Value
不仅与报文发送次数相关,还将与
ECU
唤醒、重置、上下电、运行时间等
因素相关。
在分析
Freshness Value
的应用逻辑前,我们需要先简单介绍其加密过程。在发送节点,
SecOC
模块
向待发送的
Authe
nticI-PDU
添加认证信息从而创建
SecuredI-
PDU
。认证信息包括
Authenticator
(
e.g.
来自
CMAC
)和
Freshness
Value
。无论
Freshness
Value
是否包含在打包后的
SecuredI-PDU
p>
中,在生成
Authenticator
期
间都会考虑
Freshness
Value
。
在接收节点,
SecOC
模块通过验证收到的
Secure
dI-PDU
中包含的
Authenticator
来判断
AuthenticI-
PDU
的来源。为了实现认证,接收节点除了需要
AuthenticI-PDU
外还需要知道发送节点计算
Authenticator
时使用的
Freshness
Value
。
图
3
基于
M
AC
的报文加密认证过程
-
-
-
-
-
-
-
-
-
上一篇:少儿英语水果名称大全
下一篇:各种动植物的英文名称