开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2017.01.09
文:岡健五,译:牛喀网
CAN总线是车载网络技术发展中的典型代表。本文针对车载网络的攻击,基于多层防御的原则,介绍一下车内网络的4层防护技术。
这次我们介绍下车内网络的安全技术。车内网络的架构和通信都是有安全保证需要的。
以往机械式的构造和功能在逐渐演变为受汽车电子和软件控制的系统,在这过程中,原来简单且独立的系统已经变成了相互关联的复杂系统。
结果不仅安全方面变得脆弱了,而且也更容易成为黑客攻击的目标,能够诱发攻击的要素也增多了。这些通过网络安全专家近些年攻破的汽车网络案例就可以见分晓。因此,安全的车内网络架构变得极为重要。
网络完全防护的基本出发点是多层防御(Defense-in-depth),对于车内网络我们也推荐多层方法。例如博世公司推荐的多层网络安全方法共有四层。
図1实现车内网络安全的4层构造
接下来是第三层电子电气架构。目的是分离并保护整个车内网域。推荐使用能够管理通信数据以及访问权限的车载安全网关。
例如,车载网关可以按照车内LAN网络的规范,以CAN的ID和报文内容,以及报文的传输频率为基础,对通信内容进行检查和过滤。
使用列出安全通信对象的“白名单”方式,可以验证帧的ID,使用“状态包检查”和“深度包检查”等包过滤技术则可以检查报文的内容。
此外,通过与正常传输的频率比较,可以检测出以更高频率或更低频率发送的报文。应该限制对安全网关的诊断和非标准数据的传输,如果必须接入访问的话,要请求解锁。
図2第二层/三层的构成
第二层主要目的是保护车内网络信号的完整性,是车辆网络安全重要一环。这个部分十分重要,后面详细说明。
车载网络安全的重要目标之一是确保所有ECU都按照预期的状态动作。为了实现这个目标,需要采用安全烧录、安全启动、运行时意外监测、安全调试等安全机制。对硬件的要求有:加密密钥的完整性和机密性保护,安全存储,加密加速器,安全应用运行的所需要的安全执行环境等。
即使针对车外通信进行了安全防护,也会存在恶意攻击者采用各种方式侵入车内网络的可能性。因此,对这些攻击采用可能的应对措施是必要的。
AUTOSAR的SecOC规范考虑了常规车内网络上的资源制约,对发送到车辆网络上的重要数据,提供了有效且适当的验证方法。
该规范中,主要描述了根据报文认证码MAC(MessageAuthenticationCode)按照对称(公共秘钥)加密方式进行验证的方法。对称加密方法可以用更小的秘钥实现与非对称(公钥)加密系统同级别的安全性水平,同时运算量减少了。硬件上和软件上都可实现。
但是,AUTOSAR的SecOC配置很灵活,支持对称和不对称两种加密方法。SecOC模块可以方便地集成到AUTOSAR通信栈。SecOC规范提供了验证和完整性保护机制,即确保接收的数据发送自正确的ECU而且没有数据被篡改。而且,SecOC规范中也支持信息交互的新鲜性保护。
図3MAC生成和验证案例
发信和收信ECU要各自保存且共享私钥。发信ECU首先生成一个叫做认证码(Authenticator)的认证信息(比如MAC),MAC生成算法根据实际报文,私钥和新鲜值计算出唯一的认证数据,其结果是诸如128位的MAC这样的数。
消息的有效负荷由实际的报文、新鲜值以及认证码组成。报文的长度根据安全等级、性能要求不同。比如,为了缩短报文的长度,SecOC规范支持将报文截断。因而对于支持各种认证码长度的报文系统都能灵活应对。这种情况下,报文的有效负荷由截断的新鲜值,截断的认证码组成。
截断的新鲜值,应该从新鲜值的最低位(LSB)配置,相反,截断的认证码应该从最高位(MSB)开始配置。送信端的ECU将实际报文、新鲜值和认证码组成的有效负荷发动到收信端ECU。
为了防止回放攻击,收信端的ECU首先验证收到的新鲜值(LSB)比本地保存的新鲜值(LSB)高。然后收信ECU将收到的实际报文、本地保存的新鲜值(MSB)和收到的新鲜值(LSB)连接起来,连接后的值和秘钥作为MAC生成算法的输入。
计算出来的MAC和收到的MAC比较,比较成功的话,收信端ECU可以认为报文来自可靠的(共享同一个私钥)ECU,确保消息没有被篡改,也是新鲜的(未被重播)。
使用截断认证码的情况下,只发送了MAC的一部分,只能使用一部分MAC做比较。按照SecOC的规范,推荐的秘钥长度最低要求是128位。关于截断的认证码的尺寸,NIST(NationalInstituteofStandardsandTechnology)认为如果MAC有64位以上,就足够防护预测攻击(guessingattack)。
当然,因为有各种各样的用例,为了达到期望的安全等级,决定截断MAC的时候,安全专家必须要慎重的考虑。在计算资源有限的情况下,认证码计算推荐使用AES-CMAC(AdvancedEncryptionStandardCipher-basedMessageAuthenticationCode)算法。