汽车无源防盗系统设计与安全性的考虑事项
时间:01-04
来源:互联网
点击:
图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 的加密层(end)
- 汽车无源防盗系统的方案设计及考虑事项解析(07-22)
- 无源防盗系统软硬件设计与关键考虑事项(12-27)
- Atmega128单片机的RC5和RC6算法比较与改进(12-28)
- 现实世界中的嵌入式安全(04-17)
- 如何用C语言描述AES256加密算法最高效?(01-23)
- STM8L探索套件学习笔记-AES硬件加密(十三)(11-24)