如今,汽车系统与现代数字设备的互联为驾驶员提供了先进的用户体验。电子控制单元(ecu)在汽车信息物理系统(cps)中使用不安全的控制器局域网(CAN)总线执行大量操作。因此,危险的攻击,如失灵的刹车,是可能的,乘客的安全处于危险之中。在本文中,我们提出了TACAN (CAN中的发送器认证),它通过利用隐蔽通道提供ecu的安全认证,而不引入CAN协议修改或流量开销(即不使用额外的比特或消息)。TACAN颠覆了最初恶意的隐蔽通道概念,并利用它建立了一种有效的防御技术,通过可信的监控节点促进发射器身份验证。TACAN由三种不同的ECU认证隐蔽通道组成:1)基于到达间时间(IAT),利用CAN消息的IAT;2)基于偏移量,利用CAN报文的时钟偏移量;3)基于LSB (Least Significant Bit),将认证消息隐藏到正常CAN数据的LSB中。
我们在华盛顿大学(UW)的EcoCAR测试台上实现了隐蔽通道,并通过大量的实验评估了它们的性能。我们演示了TACAN的可行性,强调没有交通开销,并证明了ecu的正常功能。特别是,基于IAT的隐蔽信道和基于偏移量的隐蔽信道的误码率分别在0.1%和0.42%以内。此外,基于LSB隐蔽通道的误码率等于普通CAN总线的误码率,为3.1 × 10−7%。
控制器局域网(CAN)使封闭车载网络中的电子控制单元(ecu)之间能够通信[2,16]。CAN总线的安全性对于当今汽车和未来自动驾驶汽车的功能和安全性至关重要[1,34]。由于CAN总线是一种无需身份验证的广播媒体,因此受损的ECU可以通过发送带有伪造消息ID的消息来伪装成任何目标ECU(伪装攻击[3])。具有蜂窝、Wi-Fi或蓝牙等附加连接接口的现代外部可访问ecu打破了封闭车载网络的假设。因此,CAN总线已被证明容易受到网络攻击,如禁用刹车[3]和远程控制转向[30]。
使用诸如消息身份验证之类的加密原语是防御CAN总线上的攻击(特别是伪装攻击)的一种方法。然而,由于can协议的低吞吐量和紧张的位预算,在实践中可能具有挑战性,并且目前的解决方案,如[14,20,26,33]需要修改协议或引入流量开销。另一种选择是部署基于异常的入侵检测系统(ids),而不修改CAN协议[5 - 7,25],包括基于定时和基于电压的入侵检测系统。[5]中基于时间的IDS利用CAN消息的周期性来估计时钟偏差,作为检测伪装攻击的唯一指纹。然而,后来证明它对修改传输时间间隔以模拟目标ECU的时钟偏差的隐形攻击无效[28,35]。基于电压的ids[6,7,17,24]试图通过电压信号特征来识别攻击者。然而,如果攻击者使用的是被攻破的ECU在正常情况下允许使用的id,那么攻击将不会被检测到。
图1:TACAN的示意图。合法ecu传输唯一的身份验证消息,这些消息嵌入到正常CAN消息(例如,A1, B2和C3)的定时和LSB中,使用建议的隐蔽通道方法。Monitor Node通过验证接收到的认证消息对发送ecu进行认证。如果被入侵的ecu无法生成有效的身份验证消息,则该攻击将被监控节点检测到。
在这项工作中,我们开发了TACAN,允许可信监控节点(MN)验证传输ECU的真实性并检测CAN总线异常,如图1所示。在TACAN中,主密钥在ECU和MN之间共享,用于生成共享会话密钥。与[14,26,33]一致,我们假设密钥存储在安全模块(如可信平台模块(TPM))[12]的防篡改内存中。每个ECU将唯一的认证消息嵌入到CAN消息中,并通过隐蔽通道连续传输,这些消息可以被MN接收和验证。
因此,如果攻击者无法访问目标ECU的TPM,则无法使用被入侵的ECU或外部设备生成有效的认证消息,从而导致验证失败并触发MN侧告警。此外,TACAN将检测攻击(例如,拒绝服务(DoS)攻击),这些攻击会中断用于嵌入认证消息的CAN消息的传输。为TACAN使用隐蔽通道的主要好处是它们不会引入协议修改或流量开销(即额外的比特或消息)。此外,通过要求 ECU 传输认证消息的频率远低于每条消息认证方案,TACAN可以显著减少资源受限的 ECU 的计算负担。
在本文中,我们做出了以下贡献:
章节组织。本文的其余部分组织如下。
第2节回顾了相关工作。
第3节介绍了我们的系统和对立模型。
第4节介绍了TACAN。
第5节提供了关于TACAN的安全性讨论。
第6节给出了实验评价。
第七部分对本文进行总结。
最近的实验研究表明,攻击者能够物理或远程渗透到车载ecu中,并发动网络攻击,通过使刹车失灵或控制转向,造成潜在的危及生命的后果[3,22]。保护CAN总线的一种方法是部署基于异常的IDS,该IDS可基于流量分析(例如,定时/频率[15])、熵[25]或物理不变量(如时钟偏差[5,28]和信号特性[6,7,17,24])。虽然基于电压的ids对正在进行的伪装攻击者有效,但它们无法在攻击发起之前检测到受损的ECU(例如,隐形攻击者可能在汽车进入驾驶模式之前不会发起攻击)。此外,最近在[27]中显示,基于电压的ids所需的额外导线可能会引入新的攻击。
研究人员还尝试在CAN总线上添加消息认证码(MAC)等加密原语,包括CANAuth[33]、LCAP[14]、CaCAN[20]和LeiA[26]。由于CAN的比特预算紧张,吞吐量低,认证信息通常嵌入到现有的CAN消息中(即ID或数据字段),并通过额外的CAN消息传输,从而引入流量开销或增加总线负载[14,20,26]。在这项工作中,我们将重点放在发送器身份验证而不是每条消息身份验证上,以避免此类流量开销。这项工作的关键新颖之处在于使用隐蔽通道,这是一种众所周知的恶意技术,可转换为用于身份验证目的的防御应用程序。与以前的认证方案相比,我们的方案不需要修改协议,也不需要引入额外的比特或CAN消息。
在文献中,隐蔽信道主要有两类:基于时间的和基于存储的。在基于时间的隐蔽信道中,仅修改事件或流量的时间以在双方之间共享信息,而数据流的内容保持不变。基于存储的隐蔽通道将数据隐藏在共享资源中,而该共享资源的设计不是为了传输数据而设计,例如,通过利用数据包中保留或使用的字段或在有效载荷中隐藏数据。与需要某种形式的内容作为掩护的隐写技术相比,隐蔽通道利用网络协议作为载体[36]。在[32]中,Taylor等人提出了一种利用隐蔽信道增强工业控制系统应用中Modbus/TCP协议安全性的方法。据我们所知,这是第一篇探讨汽车CAN总线隐蔽通道的论文。
在本节中,我们将介绍CAN总线的系统(第3.1节)和对手(第3.2节)模型。表1列出了常用的记号。
CAN总线。作为一种广播媒介,CAN总线将所有ECU连接到同一条共享总线上,并允许它们向任何ECU传输任何消息,并观察所有正在进行的传输。每个CAN帧(或消息)都有一组预定义的字段,包括仲裁字段(包括消息ID)和数据字段(最多8个字节)。有关CAN框架结构的更多细节请参见附录A.1。
如果两个(或两个以上)ECU试图同时发送消息,则采用基于优先级(消息ID越小优先级越高)的仲裁方案来确定哪个ECU先发送消息。CAN消息没有传输时间戳,也不支持加密或身份验证。
时钟脉冲相位差。在汽车CAN中,大多数消息都是按照发送ECUs的本地时钟周期性传输的。由于ecu之间不存在时钟同步,本地时钟的频率由于时钟偏差而不同,时钟偏差是由时钟硬件晶体变化引起的物理特性。
设 CA(t) 为时钟 A 报告的时间,Ctrue(t) = t为真实时间。根据网络时间协议(NTP)[23],时钟A的时钟偏移量定义为 OA(t) = CA(t)−Ctrue(t),时钟偏差是时钟偏移量的一阶导数,即SA(t) = O‘A(t) = C’A(t)−1,通常以微秒每秒(μs/s)或百万分之一(ppm)来测量。在没有真时钟的情况下,相对时钟偏移和相对时钟偏差可以根据参考时钟来定义。
时间模型。如图2所示,我们设 ti 为消息 i 的发送时间(假设 t0 = 0), Δti = t i − t i − 1为根据发送方时钟的发送间隔时间。如果消息每 T 秒传输一次,我们有 Δti = T 和 ti = iT。接收方时钟作为参考时钟。在实际操作中,发射机的时钟相对于参考时钟存在时钟偏差,这在两个时钟之间引入了偏移量Oi。因此,根据参考时钟,实际传输时间为 t'i = ti − Oi。
图2:时序模型的说明。
虽然时钟偏差可能由于温度等因素而缓慢变化,但时钟偏差在短时间内几乎是恒定的。给定恒定的时钟偏差S,发送端经过的时间 ti 与接收端经过的时间 t'i 之间的关系为 S = (ti - t'i ) / t'i 。因此,我们有 t'i = ti / (1 +S) 和 Oi = ti - t'i = (S / (1+S)) ti。为了解释由于抖动引起的偏移偏差,我们对实际时钟偏移Oi = (S / (1+S)) ti + ϵi 进行建模,其中 ϵi 被假设为 i.i.d 零均值随机变量。
经过网络延迟 di (由于消息的传输、传播、仲裁和接收)和零均值量化噪声 ni [37]后,消息 i 的到达时间戳为
其中 ηi = - ϵi + di + ni 为总噪声。由于周期性 CAN 消息的数据长度随时间的变化是恒定的,因此可以合理地假设网络延迟为恒定均值,即E[di] = d。因此,ηi's可以建模为 i.i.d 随机变量,其均值为 d,方差为 σ2η。
我们考虑一个对手,能在渗透CAN总线并在不被发现的情况下发动隐形攻击。我们假设对手可以被动地监视和观察所有正在进行的can传输。此外,它完全了解已部署的隐蔽通道,还可以观察正在传输的所有身份验证消息。实际上,通常有两种方法可以获得对CAN总线的未经授权的访问:1)物理或远程破坏车载ECU[3],或者2)将外部设备(恶意ECU)插入CAN总线[18]。我们假设攻击者无法访问存储在受损ECU和其他合法ECU的TPM中的密钥。
图3:CAN总线上的三种典型攻击
攻击者可以使用受损(妥协的)或恶意的ECU执行三种基本攻击:1)暂停,2)注入,和3)伪装攻击,如[5,21,28]所考虑的。如图3(a)所示,暂停攻击者阻止受损ECU传输某些消息,而注入攻击者可以伪造并注入任意选择消息ID、内容和时间的can消息,如图3(b)所示。注入攻击可以导致更复杂的攻击,如DoS攻击[15]和bus-off攻击[4]。在(隐形)伪装攻击中,对手需要妥协两个ecu——一个是弱妥协(充当只能发动暂停攻击的强攻击者),另一个是完全妥协(充当既能发动暂停攻击又能发动注入攻击的强攻击者)。在图3©的示例中,攻击者暂停弱受损的ECU2传输消息0xB2,并使用完全受损的ECU1注入声称来自ECU2的消息0xB2。与暂停和注入攻击相比,隐形伪装攻击的检测难度要大得多。
在本节中,我们将在(第4.1节)详细介绍TACAN架构,并在(第4.2节)介绍发送器身份验证协议。然后,我们提出了三种传输身份验证消息的隐蔽通道:1)基于IAT(第4.3节),2)基于偏移量(第4.4节),以及 3)基于LBS(第4.5节)。
如图4所示,TACAN由车载 ECU 和连接到同一 CAN 总线的可信MN组成。我们假设 MN 是由制造商在生产过程中预先安装的,并且需要授权方(例如,授权维修店)直接进行物理访问,以防止潜在的篡改和妥协。我们进一步假设部署的隐蔽通道在生产期间预配置或在维护期间重新配置,因此可以成功建立从 ECU 到 MN 的身份验证信息的单向通信。
与[14,26,33]类似,假设主密钥(MK)在每个 ECU 和 MN 之间是预共享的,主密钥存储在 TPM 中。更新 MK (例如,当添加或更换ECU时)应再次要求授权方直接访问所涉及的ECU。密钥更新的过程不在本文的讨论范围之内。在操作过程中,每个 ECU 将从 MK 和全局计数器生成一个会话密钥(SK),并进一步使用它来生成认证消息。我们将在下一节中更详细地描述发送器身份验证协议。
图4:TACAN体系结构和发送者身份验证协议的说明
受[26]中工作的启发,MN 对每个发送ECU进行单向认证。TACAN 对 n 个 ECU 使用的参数汇总如下:
我们假设 SKi 和 gi 都存储在 TPM 中,这样攻击者就无法篡改它们并发起重放攻击。
会话密钥生成。每个 ECUi 存储自己的主密钥 MKi, MN 存储所有 ECU 的主密钥。n 个 ecu 的会话密钥通过 MKi 和 gi 生成,如下所示:
其中 HMAC(·)
为基于哈希的消息验证码算法[19]。可以为 HMAC 使用不同的哈希算法(例如,HMAC- sha256)来满足期望的安全要求。
每次 SKi 更新时,li 将重置为零。在接收端,MN 使用相同的 MKi 和 gi 为 ECUi 计算相应的 SKi。当 gi 值增加时,执行计数器同步。由于计数器的非同步可能引起身份验证消息验证失败,因此可以执行重新同步过程。更多细节见[26]。
认证消息生成。ECUi 首先增加 li,然后计算认证消息 Am,如下所示:
其中“||”表示位字符串连接。对于我们的工作范围,我们假设为 TACAN 设想的所有参数(键和计数器)都是二进制值。正如我们所看到的,Am 与任何正常的can消息无关,只是作为 ECUi 的标识符。
图5:基于时序的隐蔽通道示意图
至于 li,即使在每条消息验证中,对于一条10毫秒的消息,一个24位计数器也可以持续46个小时以上,这对于我们以更小的频率传输 Am 的发送器验证协议来说已经足够了。TACAN 的实现可以自由地使用 HMAC
的散列算法和被认为足够强的密钥大小。发送者可以将每个 digest 截断为几个比特来减少传输时间,而不是传输通常长达数百位的整个 digest (例如,使用最低有效的8位或将所有字节 XORing 在一起,以创建浓缩的8位 digest 版本,如[20,31])。
在信息安全领域,digest通常指的是消息摘要,它是一个固定长度的二进制字符串,通常用来表示对消息的加密哈希值。消息摘要通常由哈希函数计算得出,用于验证数据的完整性和一致性。在信息安全中,消息摘要可用于验证数据的完整性,以及防止数据被篡改。
图5 展示了用于周期性CAN消息的两个基于时间的隐蔽通道,其中传输 ECU 将认证消息嵌入到 CAN消息的 ITT(传输时间间隔) 中,后者可以由 MN 从 ITT 或偏移量中提取。通过验证接收到的身份验证消息,MN 可以对发送方进行身份验证。在本节中,我们介绍基于 IAT 的隐蔽信道。
Observations。根据Eq.(1)中的时序模型,观察到的消息 (i−1) 与 i 之间的IAT为
由于几乎所有CAN消息都是周期性的(如:Δti = T),因此 IAT 的平均值为E[ Δai ] = T /(1+S),方差为Var(Δai) = 2σ2η。在实践中,时钟偏差通常非常小(大约100s ppm)。因此,我们有κ = E[ Δai ]≈T,其中 κ 被认为是 IATs2 的参考水平。
从式(2)中可以看出,ITTs 中 δ 的偏差量会导致 IATs 中 δ/(1+S) 的相应变化,当 IATs 的方差较小时,接收器很容易观察到这一点。在 IATs 方差较大的情况下,接收机可以计算运行平均值来平滑噪声,即:
其中L为窗口长度。通过运行平均值,IATs 的方差可以通过 L2 因子显著减小。请注意,由于括号中存在1/L,为了保持观测到的 IATs 的相同变化水平,需要将偏离量 δ 添加到 L 个连续的 ITTs 中。
作为示例,我们在图6中绘制了来自丰田数据集[8]的消息0x020 (T = 0.01秒)的 IAT 分布。当 δ = 0.02T = 2·10−4 秒被加到或从IATs中减去时(为了模拟在假定可忽略时钟偏差影响的发射机操作),三个簇(代表比特0或比特1或两者都不是)不能彼此分离(图6(a)),这可能导致接收端出现比特错误。相比之下,当运行平均值为L = 4时,聚类可清晰区分(图6(b)),可以通过阈值分割进行分离。上述观察激发了我们设计基于 IAT 的隐蔽通道。
图6:来自Toyota数据集的消息ID=0x020的IAT分布示例(a)没有运行平均值(L = 1), (b)有运行平均值(L = 4)。
Am 嵌入到 ITTs 中。给定 nm 位的 Am ,发送端首先通过在 Am 前后插入ns/2 个沉默位来构造一个认证帧。沉默位(设置δ = 0)的主要目的是维持 IAT 的参考电平,并表示 Am 的开始和结束。因此,Af 的总长度为 nf = nm + ns 。例如,如果Am = 0101, ns = 2,我们有 Af = _0101 _ 。每个比特 i 被调制成 L 个连续的 ITTs,如下所示:
其中 j∈[iL, (i + 1)L)。
从 IATs 中提取 Am。在接收端,MN 记录目标消息的到达时间戳并计算 IAT。然后使用正确选择的 L 执行运行平均,得到{Δa¯[i]}。由于每个比特在 L 个连续的 ITT 中重复,接收器需要对 {Δa¯[i]} 的每个L值进行采样。设采样偏移量为 τ ,第j个样本为 Δa¯[jL+τ] 。如果正确选择 τ,则每个调制样本与参考电平(κ)之间的总距离应最大化,即:
然后接收端通过阈值处理将采样值转换为位,步骤如下:
其中Γl = κ − δ/2、Γu = κ + δ/2 分别为下阈值和上阈值,κ≈T,“_”为沉默位。之后,将输出位连接起来,然后在沉默位处分割以获得 Am 。
请注意,为了建立一个可靠的基于 IAT 的隐蔽通道,如3.1节所述,需要在发送 ECU 和 MN 之间预共享包括 L 和 δ 在内的参数。我们将在线估计 MN 侧的隐蔽信道参数作为未来的工作。
基于偏移量的隐蔽通道的思想与基于 IAT 的隐蔽通道非常相似(图5)。主要区别在于前者对 IAT 执行平均(包括添加的偏差)以平滑噪声,而后者旨在累积偏差以区分调制样本和噪声。我们对时钟偏移的观察如下。
观察结果。根据3.1节中的时序模型和Eq.(1),我们得到 ti =⎪i j=1 Δtj, a0 = η0, ai = ti /(1 + S) + ηi。由于接收方只知道目标消息的标准周期(T),因此它将观察到的时钟偏移量计算为发送方期望经过的时间(直到消息i)与接收方实际经过的时间之间的差,即:
我们可以看到,如果发射机对L个连续的ITTs加上δ (Δtj = T + δ,对于j = 1,…δL/(1 + S)会累积,导致δL/(1 + S)减小。因此,通过监测io的变化,接收器可以确定发送的位并从时钟偏移中提取Am。上述观察激发了我们设计基于偏移的隐蔽信道。
将我嵌入到ITTs中。与基于att的隐蔽信道(第4.3节)不同,发射器将Af的每一位嵌入到L个连续的itt中,如下所示:
对于j∈[iL, (i + 1)L),和
forj∈[iL+L/2, (i+1)L),其中假定L为偶数。换句话说,为了传输一个比特0/1,发射机在第一个L/2个ITTs上加上- δ/δ,然后在接下来的L/2 ITTs上减去- δ/δ,以便在每个比特传输后观测到的时钟偏移量返回到参考电平。
从偏移中提取Am。在接收端,监控节点记录到达时间戳,并批量处理iat。由于每个Af有nf位,每个位被调制成L个连续的itt,因此同一Af共有N = nf L个连续的itt,其中N表示批大小。
记k批中的第i个IAT为Δak,i,其中1≤i≤N。然后,观察到的相对于当前批开始到第i个IAT的时钟偏移量为
设κ = (max(Ok [i]) + min(Ok [i]))/2为中点(假设至少传输了一个0和一个1),作为时钟偏移的参考电平。由于时钟偏差通常非常小(百万分之100),并且我们计算的是批处理时钟偏移量,因此时钟偏差的影响很小,因此我们假设在批处理的持续时间内κ是恒定的3。由于每个比特都会影响L的值,接收器需要以采样偏移量τ对每个L值进行{{Ok [i]}采样,得到第j个样本为{{Ok [jL + τ]。如果正确选择τ,则每个样本与参考水平之间的总距离应最大,即:
然后,接收器通过以下基于阈值的方案将采样值转换为位:
其中Γl = κ−1 4 δL和Γu = κ + 1 4 δL分别为下阈值和上阈值,“_”为沉默位。δL的1 4项是由于δ是在L/2个连续的ITTs上加上(或减去)的,因此最大总偏差为±12 δL。选取κ和κ±12 δL之间的中点作为阈值。最终,通过连接所有已解码的比特并在沉默比特处分割它们来提取Am。
对CAN总线可调度性的影响。正如我们所示,在基于IAT和基于偏移量的隐蔽信道中,一定数量的偏差被添加到itt中。因此,它可能会增加CAN消息的最坏情况响应时间,这被定义为从初始事件(将消息放入传输队列)发生到需要它的节点接收消息的最长时间。如果我们将[9]中的可调度性分析应用于TACAN,我们可以发现,TACAN的效果相当于将阻塞延迟增加一个恒定的时间(数百μs),并将消息传输时间增加一个小百分比。因此,为了实现隐蔽信道的有效利用,需要在部署前通过实验获得TACAN参数并进行微调,以确保CAN总线的可调度性。附录A.2提供了更详细的讨论。
在本节中,我们将介绍一种基于存储的隐蔽通道,它将身份验证消息嵌入到ECU传输的正常CAN消息的数据有效负载的 LSB 中,称为基于 LSB 的隐蔽通道(图7)。与基于定时的隐蔽通道不同,基于 LSB 的隐蔽通道可以应用于非周期性CAN消息。对于这项工作的范围,我们使用CAN数据帧来开发我们的方法。
图7:基于 LSB 的隐蔽通道示意图。发送ECU将认证消息嵌入到多个正常CAN消息(具有相同ID)的 LSBs 中,供Monitor Node提取并验证。
观察结果。为了在CAN总线上传输认证消息,通常利用CAN消息的现有字段,如数据字段13,14,20和扩展ID字段[14],或者简单地引入额外的CAN消息[13,14]。然而,在实践中,如果数据字段中的所有字节都已被使用,或者CAN总线已经负载过重,那么利用CAN消息的现有方法可能会破坏ECU的功能或增加仲裁延迟。
与现有的试图对消息进行身份验证的方案不同,我们的发送方身份验证方案旨在对发送方而不是每条消息进行身份验证。因此,身份验证消息的传输频率要低得多,这意味着身份验证位可以分布在多个CAN消息中,每个CAN消息只使用几个位。此外,已经意识到某些CAN消息用于携带传感器值,其中大多数是浮点数,我们可以使用L lsb(例如,L = 1或2)用于身份验证目的,而不会导致精度的显着降低。以丰田凯美瑞(Toyota Camry)为例,42条消息中至少有7条消息携带传感器值(例如,轮速、发动机转速、车速、里程表、制动压力、转向角)[8]。我们期望在更新的汽车中有更多的CAN信息携带传感器值。上述观察启发了我们设计基于 LSB 的隐蔽通道。
将 Am 嵌入到 LSBs。嵌入过程是作为应用层和数据链路层之间的子层实现的。对于每个消息Am(加上一个已知的前导来指示Am的开始和结束),它用 Am 中的下一组 L 个位替换 CAN 消息中最不重要的 L 个位。如果L位恰好相同,则不需要修改。
从 LSBs 中提取 Am。在接收端,MN 从接收到的 CAN 消息中提取 LSBs,并重新构造认证消息。如果 MN 验证验证消息失败,则会发出警告,表明可能是发送ECU的妥协或恶意利用CAN总线。
与基于时间的隐蔽通道的情况一样,我们假设在生产期间每个 ECU 和 MN 之间预共享基于 LSB 的隐蔽通道的设置,并在必要时在维护期间更新。有关嵌入和提取过程的更多细节见附录A.3。