Answers:
滚动码需要几个部分才能正常运行。在这里,我将描述一种以特定方式使用所有部分的通用实现。其他系统是此主题的变体,但通常以相似的方式采用许多相同的技术。我将描述一个简单的系统,而不是试图描述完整的实现及其如何工作,而是逐步增加复杂性,直到达到密码安全的系统为止。
非加密滚动码只是使用相同伪随机数生成器(PRNG)的发送器和接收器。该生成器具有两条重要信息:计算和先前生成的数字。该计算通常是可以由单个数字表示的线性反馈方程。通过向PRNG提供先前的编号,并保持反馈编号相同,将生成特定的编号序列。该序列没有重复的序列,直到遍历了它可以生成的每个数字,然后以相同的序列重新开始。
如果遥控器和发送器都知道反馈号和当前号,则当遥控器发送下一个号时,接收器可以针对自己的发生器进行测试。如果匹配,它将激活。如果没有,它将滚动序列直到找到远程发送的号码。如果再次按下遥控器,则它应该匹配,并且它将激活,因为先前的传输已经同步了数字生成器。这就是为什么有时您必须按两次解锁按钮-接收器或发射器不同步的原因。
那是代码的滚动部分。如果PRNG足够长,则很难找到没有连续编号的反馈号,这在正常使用中是很难获得的。但这不是加密安全的。
最重要的是,您添加了典型的加密。车辆制造商使用特定的密钥作为发送方和接收方。根据制造商的不同,您可能会发现每个型号和年份都有不同的代码,或者它们可能会在几年的多种车型之间共享该代码。折衷方案是每个库存都需要存储一个不同的遥控器,但是在许多模型上共享代码的问题是,如果该代码损坏了,那么就会有更多的汽车容易受到攻击。
在加密的后面,您有按钮信息,PRNG生成的编号以及有关反馈编号的一些信息。不足以使PRNG从零开始,但足够以至于在按了一定数量的按钮之后,并且获得了有关有限空间的一些内部信息之后,反馈号可能会涉及到(同样,制造商,特定于生产线的反馈),然后接收者就可以在进行几次培训之后传输,确定反馈号,并开始跟踪该遥控器的PRNG。
滚动代码仅用于阻止重放攻击。加密的目的是保护滚动代码,以避免其被破坏。仅使用一个或另一个系统就很容易被破坏。由于制造商同时控制发送器和接收器,因此培训无需涉及公共密钥加密或任何特别涉及的内容。它还可以防止售后市场的遥控钥匙在这种系统的汽车上工作。
但是,滚动代码并不是不可渗透的。旧的keeloq系统是在几年前(使用十年后)成功遭到攻击的,因此可以找到制造商的加密代码,并且更容易找到滚动代码。早在此之前,它就受到了人们可以在不实际违反密码的情况下乘坐车辆的攻击。作为响应,新的加密密钥为60位。不像许多现代加密系统那样安全,但是足够安全,以至于它在被破坏之前可能会持续很多年。
在车库门开启器中研究芯片时,我第一次遇到KeeLoq。该Microchip的数据表做了解释它是如何工作的一个好工作。
简而言之:
从更高层次上讲,将新的发送器添加到接收器数据库类似于将客户端添加到Wi-Fi接入点的按键配置方法。接收者被告知处于接收新接收器的模式。
如果接收方和发送方共享相同的秘密制造商ID,则可以从普通激活消息中传递的信息中接受新的发送方。这是因为64位加密密钥是从接收者的制造商ID和序列信息中得出的。(请参阅第7.1节)。
除此之外,还有一个更安全的选择:“安全学习”。这是通过变送器上的特殊方式启动的(同时按下三个按钮)。发送器发送一个特殊的数据包:一个60位的种子值,从中得出加密密钥,大概与制造商ID或序列号无关。
当接收器不处于学习模式时,它当然会拒绝它不知道的来自发射器的传输。