Keeloq 用于许多但不是所有的遥控钥匙/车库开门器。本文由创建 keeloq终极 KEELOQ 技术介绍的 microchip 撰写。
tl;博士
遥控器(遥控钥匙/车库门开启器)和接收器(汽车/车库电机单元)使用相同的 64 位密钥进行加密和解密。“序列号”用于识别特定的遥控器。每次按下按钮时,遥控器的“同步计数器”都会增加 1。如果遥控器的“同步计数器”在接收器“同步计数器”之前为 0 到 ~250,那么它会接受代码并更新该遥控器的同步计数器. 由于“同步计数器”是使用只有远程和接收者知道的密钥加密的,因此即使嗅探器知道下一个“同步计数器”,它也无法伪造代码,因为它没有 64 位密钥。
我最初对滚动代码的理解是,在 fob 和汽车之间有一个共享的秘密(也许是序列号?),这被用来在双方加密生成相同的无限滚动代码序列。
遥控器加密数据包的“加密部分”并将其和固定部分发送给接收器,然后接收器使用遥控器使用的相同 64 位密钥解密“加密部分”。这是一种与通常用于 Web 身份验证的一次性密码不同的方案。
好吧,它不是无限的。每次按下按钮时,“同步计数器”都会增加 1。“同步计数器”的范围可以从 0 到 65535。因此,在 65536 次传输之后,您会看到相同的代码重复。如果您捕获了 65536 个解锁传输,您将能够通过播放该序列中的下一个原始捕获来解锁汽车/车库,因为它只是环绕。
我现在认为我高估了这项技术,因为似乎可以通过相对简单的过程训练接收器来接受新的 fob,不需要传输秘密——你只需要按下 fob 一次即可。 car/garage 相当于“更改密码”模式。
的种类。你是对的,没有共享秘密被交换或交流。遥控器和接收器最终如何使用相同的 64 位密钥取决于方案。
pdf 描述了 3 种学习模式“简单”“正常”“安全”。
- 简单的
简单密钥生成方案是 KEELOQ 技术系统支持的最简单的方案。使用简单密钥生成时,所有编码器都使用一个密钥,发射器仅通过序列号进行区分。用户准确理解使用这种密钥生成方案的含义是非常重要的。这可能是潜在的安全风险。如果任何编码器被泄露并找到加密密钥,那么所有编码器都被泄露,因为它们使用完全相同的密钥。
所有遥控器和接收器都使用完全相同的 64 位密钥来加密和解密数据包。
- 普通的
Normal 密钥生成方案是 KEELOQ 技术系统的通用密钥生成方案。在正常学习期间,使用主密钥(称为“制造商代码”)。当使用正常的学习机制时,解码器使用制造商代码和序列号来计算每个发射器的解密密钥。使用每个编码器的序列号和制造商代码,计算每个编码器的唯一加密密钥。编码器仅存储序列号和计算的加密密钥。解码器需要使用此制造商代码进行编程,以便能够计算单独的加密密钥。为了计算加密密钥,在 28 位序列号中填充 0x6000000 和 0x20000000,并使用制造商代码作为解密密钥进行解密。
64 位密钥是使用“序列号”和“制造商代码”导出的。遥控器只存储派生密钥而不是主密钥,但接收者知道主密钥,因此它可以派生任何特定的远程密钥。所以它“学习”遥控器的“序列号”,然后派生出遥控器的 64 位密钥。
- 安全的
安全密钥生成方案是更高级的密钥生成方案。当使用正常的密钥生成方案时,密钥是由序列号和制造商代码生成的。由于序列号在任何数据包中传输,密钥生成方案的一部分总是暴露出来的。但更安全的方法是生成一个随机数(称为“种子”)。根据种子的长度,有三种密钥生成方案:32位种子、48位种子和60位种子。在正常操作期间,不会传输种子。传输种子的唯一时间是在学习/配对阶段。因此,用于生成加密密钥的信息是保密的。一些实现进一步提高了安全级别,
使用种子而不是“序列号”来派生 64 位密钥。该种子的唯一传输时间是在学习/配对时间。
作为最后的说明。还有其他方案比keeloq 更好。甚至 pdf 也描述了使用 AES 而不是 keeloq 的方案,但也有更糟糕的方案。一些车库仍然使用固定代码。
我对汽车/车库安全系统感到失望。
我也是。