滚动码说明


13

有人可以解释一下滚动代码协议(例如KeeLoq)如何工作吗?我了解他们每次都使用不同代码的基本前提,因此您不能仅使用重播攻击,但我不了解一方如何验证正确的代码等。

此外,如果事先不知道/未共享滚动码的索引,它们如何执行初始同步?

如果您必须以Keeloq为例进行说明,那很好,但是我宁愿对滚动代码进行一般性说明。


Answers:


10

滚动码需要几个部分才能正常运行。在这里,我将描述一种以特定方式使用所有部分的通用实现。其他系统是此主题的变体,但通常以相似的方式采用许多相同的技术。我将描述一个简单的系统,而不是试图描述完整的实现及其如何工作,而是逐步增加复杂性,直到达到密码安全的系统为止。

非加密滚动码只是使用相同伪随机数生成器(PRNG)的发送器和接收器。该生成器具有两条重要信息:计算和先前生成的数字。该计算通常是可以由单个数字表示的线性反馈方程。通过向PRNG提供先前的编号,并保持反馈编号相同,将生成特定的编号序列。该序列没有重复的序列,直到遍历了它可以生成的每个数字,然后以相同的序列重新开始。

如果遥控器和发送器都知道反馈号和当前号,则当遥控器发送下一个号时,接收器可以针对自己的发生器进行测试。如果匹配,它将激活。如果没有,它将滚动序列直到找到远程发送的号码。如果再次按下遥控器,则它应该匹配,并且它将激活,因为先前的传输已经同步了数字生成器。这就是为什么有时您必须按两次解锁按钮-接收器或发射器不同步的原因。

那是代码的滚动部分。如果PRNG足够长,则很难找到没有连续编号的反馈号,这在正常使用中是很难获得的。但这不是加密安全的。

最重要的是,您添加了典型的加密。车辆制造商使用特定的密钥作为发送方和接收方。根据制造商的不同,您可能会发现每个型号和年份都有不同的代码,或者它们可能会在几年的多种车型之间共享该代码。折衷方案是每个库存都需要存储一个不同的遥控器,但是在许多模型上共享代码的问题是,如果该代码损坏了,那么就会有更多的汽车容易受到攻击。

在加密的后面,您有按钮信息,PRNG生成的编号以及有关反馈编号的一些信息。不足以使PRNG从零开始,但足够以至于在按了一定数量的按钮之后,并且获得了有关有限空间的一些内部信息之后,反馈号可能会涉及到(同样,制造商,特定于生产线的反馈),然后接收者就可以在进行几次培训之后传输,确定反馈号,并开始跟踪该遥控器的PRNG。

滚动代码仅用于阻止重放攻击。加密的目的是保护滚动代码,以避免其被破坏。仅使用一个或另一个系统就很容易被破坏。由于制造商同时控制发送器和接收器,因此培训无需涉及公共密钥加密或任何特别涉及的内容。它还可以防止售后市场的遥控钥匙在这种系统的汽车上工作。

但是,滚动代码并不是不可渗透的。旧的keeloq系统是在几年前(使用十年后)成功遭到攻击的,因此可以找到制造商的加密代码,并且更容易找到滚动代码。早在此之前,它就受到了人们可以在不实际违反密码的情况下乘坐车辆的攻击。作为响应,新的加密密钥为60位。不像许多现代加密系统那样安全,但是足够安全,以至于它在被破坏之前可能会持续很多年。


啊,我一定忘记了PRNG的“无序列重复”部分,这一点非常重要。传输信息可以使接收机确定反馈代码的优点是什么?这似乎比仅仅选择一个反馈代码并制造已知的发送器和接收器要安全得多
。– NickHalden

@NickHalden每个远程控制器的反馈代码都不同,客户将希望以后添加更多远程控制器,或替换缺少的远程控制器。仅用于培训。一些稍微更安全的版本需要在遥控器上按特定顺序按一下按钮,然后遥控器才能发出额外的反馈信息,但是总体上来说,整个系统是足够安全的,即使您破坏了加密,在此之前您仍然需要更多的信息。一点信息就足以获取整个反馈代码。
亚当·戴维斯

8

在车库门开启器中研究芯片时,我第一次遇到KeeLoq。该Microchip的数据表做了解释它是如何工作的一个好工作。

简而言之:

  • 接收器维护着所有发送器的数据库,并在其序列号上输入了密码。
  • 每个发送器都与一个对称加密密钥(64位)相关联,该密钥位于芯片上,也位于接收者的数据库中。
  • 每个发送器都与一个16位循环序列号相关联,该序列号也存储在芯片上和数据库中。
  • 当发射器被激活时,它以65536(环绕16位)为模递增其序号,并发送一个数据包,该数据包由代表按下什么按钮的位掩码,其序列ID和序列号的加密版本组成。
  • 接收方匹配数据库中的序列号,拔出密钥并解密序列号。
  • 序列号必须是新的;它不能是最近使用的序列号,以防止重放攻击。(请参见数据表中的图7.3)。
  • 如果序列号经过验证,则接收器可以根据所按按钮的位掩码来激活功能。
  • 如果新序列号的开头超过16个值(用户在离开接收器时无意中多次按下按钮),则必须进行额外的握手才能重新同步,这需要额外按下按钮。(用户将执行额外的按钮操作,因为认为接收效果不好)。

从更高层次上讲,将新的发送器添加到接收器数据库类似于将客户端添加到Wi-Fi接入点的按键配置方法。接收者被告知处于接收新接收器的模式。

如果接收方和发送方共享相同的秘密制造商ID,则可以从普通激活消息中传递的信息中接受新的发送方。这是因为64位加密密钥是从接收者的制造商ID和序列信息中得出的。(请参阅第7.1节)。

除此之外,还有一个更安全的选择:“安全学习”。这是通过变送器上的特殊方式启动的(同时按下三个按钮)。发送器发送一个特殊的数据包:一个60位的种子值,从中得出加密密钥,大概与制造商ID或序列号无关。

当接收器不处于学习模式时,它当然会拒绝它不知道的来自发射器的传输。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.