引言
多年来,消费者已习惯于依赖无源汽车防盗系统提供的便利性和加强的安全性。这种系统由驾驶员随身携带的密钥卡 (key fob) 与安装在汽车里的基站组成。两者协同工作,可判断驾驶员是否有权启动汽车;而更重要的是,系统能够阻止非法用户使用汽车。虽然表面看来汽车防盗器的功能性很简单,但其基本实现技术却十分复杂有趣。本文探讨了汽车防盗器的硬件和软件问题,并就设计和安全性方面的考虑事项给出了颇值得关注的评述。
通信
目前在无源汽车防盗系统中,密钥卡与汽车之间的主要通信方法是利用调制磁场,这个磁场由汽车的防盗器基站从低频 (一般为125 kHz) 交流电产生。该磁场的主要用途有三个:A) 密钥卡的能量来源,故有“无源” (passive) 之称;B) 从基站向密钥卡 (即“下行链路”) 传输信息的载波;C) 从密钥卡向基站 (即“上行链路”)传输信息的载波。
由于汽车防盗系统需要完全无源 (如无电池) 地工作,所以密钥卡的磁场特性特别适合这种应用。“下行链路”场检测和“上行链路”场调制都可以利用耗电量极小的电路来实现。此外,利用饱和磁场的场能来为密钥卡中的这些电路供电比较容易实现。
在系统设计阶段,必须仔细考虑一些关键的参数,比如密钥卡的能量要求 (会影响到天线线圈的几何形状和驱动电平),以及验证过程的安全性 (对响应时间有直接的影响)。下面将逐一对此进行详细阐述。
系统接口
汽车防盗器的系统架构分为若干提取层,其中每一层代表不同的系统接口。图1所示为这些分层的直观表示。
图1 汽车防盗器接口分层
物理层
汽车防盗系统的最底层是物理层,包含一个安装在车上的天线线圈,能够产生足够的磁场,让安装在用户密钥卡中的天线线圈检测与调制得到。
磁场产生与调制
根据磁场支持数据传输的方式不同,汽车防盗系统可分为两类:半双工和全双工。在半双工系统中,车载天线线圈在能量传输和数据传输周期之间更替,而数据调制采用频移键控 (FSK) 方式。这种通信方法的图解如图2所示。从图2可明显看出两点:其一,由于需要反复执行能量传输,如为密钥卡充电,数据传输率大打折扣;其二,相比能量传输期间的磁场,被调制信号极小,因此其更容易受到周围环境噪声的干扰,导致传输距离减小。这些特性使得半双工系统逐渐式微。
目前主要使用的是全双工系统。在这种系统中,车载天线线圈同步执行能量传输和数据传输,而数据调制采用幅移键控 (ASK) 方式。图3所示为这种通信方法的图解。显然,由于能够同步进行数据传输和密钥卡供能或充电,这种方法的数据传输率大大优于半双工系统。而且,恒定的载波场往往还可以屏蔽掉干扰,在数据传输期间确保通信的稳健可靠。此外,这种方案可以采用简单的包络检波电路来实现。鉴于目前市面上全双工汽车防盗系统的流行,下面将专门讨论这类系统。
系统接口:逻辑层
物理层上面是逻辑层。这一层涉及磁场上数据传输和编码的特性及要求。它适用于从汽车到密钥卡 (通常被称为“下行链路”),以及从密钥卡到汽车的双向数据传输 (被称为“上行链路”)。
下行链路
下行链路的信息采用脉冲长度调制方法:一般是二进制脉冲长度调制 (BPLM) 或 Quad 脉冲长度调制 (QPLM))来进行编码。这种方法基于插入一个长度固定的载波场时隙“Tgap”,并设置时隙到时隙的时间间隔,以预先确定次数:T0 对应于逻辑“0”,T1 对应于逻辑“1”。这种方案的好处是它把从汽车到密钥卡的能量传输嵌入到数据编码中,并确保密钥卡有足够的供能用于处理被编码的数据。不过,这种编码方法也有一个缺点,那就是数据传输波特率必须依赖于正在发送的数据位流的逻辑值,因为每一个二进制状态的传输时间都是不同的。图4给出了这种编码方法的更详尽的图解。
图4 BPLM编码方法
QPLM 是BPLM 的一种变体。利用这种调制方法, 一个时隙后传输两个比特位,于是在收发器端有更多的能量可用。此外,其平均波特率比BPLM的高。除了允许的状态数目从2扩展到4,而预定的时隙间隔被扩展以覆盖更多的状态之外,这种编码方法与BPLM的基本实现原理是相同的。图5所示为QPLM的直观表示。
图5 QPLM编码方法
上行链路
从用户密钥卡到车载基站的信息通信一般采用曼彻斯特 (Manchester) 或双相 (Bi-phase) 编码。这些编码方法都共有一些不同于下行链路的特性:A) 被编码位流的平均占空比总是为50%;B) 发送被编码数据的时间只依赖于波特率。上述两种编码技术都能够从被编码数据流中提取时钟,这是因为编码位流中的所有时间段都被量子化为T 或 2T (T 表示 “半个比特位”)。数据率固定为1/(2T)。时钟提取只需要检测最小时间段因子T,并使其相位与被编码的位流同步即可。
图6 曼彻斯特 (Manchester) 和双相 (Bi-phase) 编码
协议层
协议层定义各个数据位的分组,以实现车载基站和密钥卡之间的通信。它定义有多少个比特位,以及它们按什么顺序在读取器和收发器之间进行传输。打个简单的比方,这就类似于使用单词构成句子的语法规则。协议层就象由逻辑层构成的句子,而逻辑层则相当于单词。它形成一组固定的命令及其允许的应答。
验证
验证是用来描述判断驾驶员是否有权启动汽车这一个过程的术语。最简单的验证形式被称为单向验证 (unilateral authenTIcaTIon),这种情况下,汽车对密钥卡进行“测试”,以确定它是否与汽车匹配。若在这一过程中再增加一个步骤,即让钥匙也对汽车进行“测试”,判断其是否匹配,这时就成为了双向或交互式验证。显然,增加的这一步骤提高了安全强度,不过代价是验证时间延长。
单向验证
一般而言,单向验证协议由汽车发起,并包含以下几个步骤:
1) 汽车读取密钥卡的唯一ID (不会与密钥混淆)
2) 汽车产生一个随机数询问(challenge),并发送给密钥卡
3) 密钥卡对询问进行加密(使用密钥),然后向汽车发送应答(response)
4) 汽车对密钥卡的应答与自己计算的应答进行比较 (使用相同的密钥和询问)
注:汽车必须拥有密钥卡的密钥,这一过程才能成功完成。共享密钥的过程被称为“Key Learn”,下一节将详细阐述。
图7 单向验证
Key Learn: 公开/ 私密
Key Learn协议是指使汽车设立密钥,并与密钥卡共享之的过程。可以根据汽车发起的Key Learn会话的限制与安全设置,密钥是公开的或私密的。
一个公开的Key Learn进程一般包含以下 (以及图8所示) 步骤:
1) 汽车根据随机数产生一个密钥,并提交给密钥卡
2) 密钥卡“接受”密钥,保存在存储器中,并做出应答 (acknowledgment) 响应
3) 在成功接收到密钥卡的应答之后,汽车把密钥保存在存储器中
如果Key Learn协议无法阻止窃听者,或保护汽车不被非法使用,这时就需要采用私密Key Learn 进程。
图8 公开的Key Learn
双向或准交互式验证
准交互式或双向验证是一种更为复杂的验证过程。爱特梅尔防盗系统中实现的并非完全交互式的验证,因为它并没有在系统两端 (汽车和密钥卡) 使用随机发生器。这种实现方案使用一个消息验证代码 (Message AuthenTIcaTIon Code, MAC) 来验证汽车与钥匙是否匹配。
而且,在双向验证的情况下,验证协议由汽车发起,包含以下(以及图9所示)步骤:
1) 汽车读取密钥卡的唯一ID
2) 汽车产生一个随机数询问 ,并发送给密钥卡
3) 汽车对随机数进行加密,然后附加在询问上
4) 密钥卡对询问进行加密 (利用密钥 1) ,并将之与接收到的加密询问进行比较 (MAC)
5) 如果结果匹配,密钥卡加密之 (利用密钥2) ,并向汽车发送应答
6) 汽车对密钥卡的 应答与自己计算的应答进行比较(使用相同的密钥和询问)
图9 双向验证
加密层
最顶层是加密层。这一层包含了把纯文本信息转换为加密信息的数学函数。这种函数最理想的应该具有两种特性:
1. 唯一性:对于每一个纯文本输入,必须对应一个独一无二的加密文本输出
2. 不可预知性:纯文本至加密文本对必须是无法预测的,即使有已知纯文本至加密文本对大样本供分析。
公开与私密
私密加密算法已流行多年。不过,私密算法有若干不足之处:A) 算法强度不确定;B) 缺乏关键的代码对等评测机制的制约;C)若算法泄漏,可能导致大范围安全性受损。 近年来,有不少瞩目的例子陆续被报道,足以说明这些缺点的存在。更引人注目的缺点也许是系统缺乏互操作性,不能共享同一个物理和逻辑层。这一点有碍于基本的市场竞争力,而且在很多情况下促使了系统成本的上升。
为解决这些问题,人们开始转而接受公共域加密算法 ── 高级加密标准 (常常被称为AES)。这种算法源于1997年美国国家标准技术研究所 (NIST) 发起的征集公共域加密算法的倡议。那一年共产生了15个候选算法,并都经过了加密研究领域的严格评测 (critical review)。这种评测分析包括对每一种算法的安全性和效率的评测。NIST 从15 个候选算法里选中了4 个,然后进入第二轮公开评测,最终在2000年选出了AES算法。
正如我们现在所了解的,AES是一种对称分组密码,使用128位的纯文本输入和128位的密钥,产生128位的加密输出。由于这种对称特性,AES也可以反向操作,利用加密输出和密钥,找出并提取原始纯文本输入。
系统安全性考虑事项 – 攻击及防范对策
目前有一个普遍的误解,即误以为汽车防盗系统的安全性取决于加密算法的强度。虽然加密算法的强度是很重要,但其本身并不能决定整个系统的抗攻击能力。防盗系统中的每一个接口、算法、协议、逻辑和物理特性,均影响着系统的总体安全性,都应该予以研究与增强,以提高系统的抗攻击性。
算法安全性及防范对策
如前所述,加密算法必须拥有唯一及不可预测的特性。以AES为例,算法的详细工作原理对公众是完全公开的,因此,它已经过了研究领域的严格评测。这是迄今最好的防范对策。到目前为止,科学研究已确认该算法的强度,而且经得起超过10年的时间考验。然而,在私密算法的情况下,研究领域不可能进行科学分析,这些算法的强度究竟如何是不可知的。事实上,其中许多算法都无法经受得起时间的考验,而且近年来它们的缺点也暴露了出来。
协议安全性及防范对策
在使用单向验证的系统中,对协议层的攻击一般是采用“扫描式”或“字典式”方法。在“扫描式”攻击中,攻击者从汽车端接收到一个“询问”(challenge),再返回一个随机值作为应答。如果协议包含56位应答,则比特位安全性为256,即获得一个正确的“询问-应答”配对需要256次尝试。为了防止这类攻击,可以考虑采用以下措施:
提高应答的位长度 (bit length),以增加复杂性
让汽车嵌入的连续性失败尝试之间的时限指数级增长
在一定次数的连续性尝试失败之后,让汽车拒绝尝试
在“字典式”攻击中,攻击者通过与收发器直接通信来收集正确的询问 (从攻击者) 应答 (从密钥卡) 配对。这些“询问-应答”配对被放在查找表或“字典”中,供以后参考。配备了这种字典后,攻击者就触发汽车发出询问,然后在字典中搜索相应的正确应答。若协议包含100位应答,则需要251次尝试即获得一个正确的询问-应答对。“生日悖论” (Birthday paradox) 表明在2n/2 个记录的“询问-应答”配对和2n/2 次尝试之后,获得正确结果的概率为0.5。由此可知,这种攻击的总体复杂性为2n/2+1 = 251。这种情况下应该考虑的防范对策为:
提高询问的位长度,以增加复杂性
采用双向验证协议
物理/逻辑安全性及防范对策
近年来,攻击手段日趋复杂先进。“边信道”攻击,比如简单功耗分析 (SPA) 和差分功耗分析 (DPA) 及其它“入侵式”攻击,已被成功用来提取密钥卡的密钥。这些所谓的边信道攻击测量和评估加密设备的耗电量,再结合纯文本密码文本方面的知识,即可提取出一个其它的密钥。这些方法的基本理论相当复杂,超出了本文的范围。防御上述边信道攻击的最强有力措施包括:
时钟频率和运行随机化
数字控制和加密工作交错进行
“入侵式”攻击着眼于硅芯片上与加密相关的电路的物理实现方案。只要在设计流程初期即考虑到防范对策,最佳防御手段的实现相当简单。下面是可以考虑使用的一些步骤实例:
存储块的金属屏蔽
采用非标准综合库
加密期间抢夺所用关键数字元素的位置
若发生尝试入侵情况,限制存储器访问和自动芯片擦除功能
系统性能的考虑事项
耗电量
系统性能涉及不同的方面。其一是密钥卡的功耗,这个参数直接关系到可获得的密钥卡与车载基站之间的通信距离。汽车制造商和领先供应商往往强调耦合因子的重要性,将之视为一项关键参数。然而,它描述的主要是密钥卡天线和车载基站天线之间的机械尺寸的关系。该参数只对给定系统配置有效,并取决于天线的电感、Q因子、驱动电流、读取器灵敏度,以及点火锁芯材料。有鉴于此,单独用该参数来比较不同系统的性能是不够的。其实,除耦合因子之外,同样重要的还有耗电量,尤其是考虑到密钥卡在无源无电池的环境中工作,能量需从磁场采集,并存储在很小的电容中,因此耗电量十分受限。通过选择超低功耗的系统组件,与能够利用均衡软件进行编程的微控制器 (尽可能让微控制器进入睡眠模式),工程师就能够克服前面提到的需要高耦合因子来补偿密钥卡的大电流这一系统缺陷。
验证响应时间
防盗系统中的另一个重要因子是从转动插入门锁的密钥卡到引擎启动所需的时间。这个时间应该足够短到让驾驶员感觉不到延时。根据系统的机械和电气设计,以及一个人插入和转动钥匙的速度情况,该时间预算一般应该在300ms 到 500ms之间。这个预算中相当大一部分被消耗在机械和车身控制模块的开销上;而剩下的100ms到 200ms则用于验证过程。在速度和安全性方面,一个不错的折衷方法是采用询问位长度为100位,应答长度为56位的双向验证。在大多数系统中,这会把应答时间降至100ms以下。
错误处理
为防止验证因任何原因失败,现在的系统需要完整的验证周期才能重新从头启动,且在一定时间内最多只允许3次重试。爱特梅尔的重试策略稍有不同,它可以使系统从通信错误中更快地恢复过来。所有命令和可选数据都采用循环冗余码校验 (CRC) 来保护。密钥卡和基站都利用CRC来检测错误,并把这些状态信令给各自的通信伙伴,这就使基站可以选择重复信息的数量、最后行为、最后应答或最后命令。这种特性可实现更快的通信恢复,而且在相同的时间内允许更多次的通信恢复尝试 (5-7次重试,而不只是3次)
总结
通过选择能够满足汽车市场的安全性和性能目标,并且支持高度可配置的开源防盗器软件堆栈的系统组件,可以大大简化开发一个稳健汽车防盗系统的任务。作为汽车准入解决方案的领导厂商,爱特梅尔拥有一个包含硬件和软件的完善系统解决方案。
密钥卡设计可采用 ATA5580 及 ATA5795 来实现。这两个器件都包含有一个LF前端、一个执行快速高效加密计算的AES硬件模块,以及一个针对超低耗电量进行了优化的AVR微控制器。它们还均包含可编程闪存,可用于运行爱特梅尔的开放式防盗器协议或其它客户专用软件,并能够使防盗器完全无源工作。
车载基站可采用爱特梅尔 ATA5272 实现。该器件集成了 LF 基站功能和一个带 8K 可编程闪存的 AVR 微控制器。
除了这些器件之外,爱特梅尔还向用户免费提供开放式防盗器协议软件,能够提供前所未有最高的用户可配置性 (包括许多可实现系统参数权衡的动态评估的用户可选功能),并加速开发和优化进程:
带上行链路和下行链路波特率、位编码和调制深度的逻辑层
带询问和应答位长度、单向或双向验证、数据字段CRC、两个密钥、私密或公开Key Learn的协议层
AES加密时钟速度 “在线” 从125 kHz 到 4 MHz 的加密层