浅浅研究滚动码(上)

0x01 Keeloq算法介绍

KeeLoq算法的核心思想就是用8byte密钥加密4byte明文,从而得到4byte密文或者用8byte密钥解密4byte密文,还原出原4byte明文。KeeLoq算法演算过程需要定义一个数据寄存器,用于存放4byte明文y310或者4byte密文y310,和一个密钥寄存器,用于存放8byte密钥k63~0。

对于系统工作原理而言,门禁系统应该是先进社会最为常见的系统。车库门禁系统的目的是实现遥控无匙门禁技术 (R KE) ,使驾驶员可以通过遥控器的按钮来开关库门 , 下图为其原理结构图。系统由遥控编码器及接收解码 器组成。其中遥控器由编码芯片、发射电路组成 ,附加 按键及电池 ,是袖珍发射装置 ,可随身携带 ;接收器由接 收电路、解码芯片、控制电路及执行机构组成 ,执行机构又包括门控电机、声光报警等。下面分析系统各部分的设计及应用。

dw12BZF

KeeLoq数据加密过程模型图下图所示,首先定义一个非线性表,这个非线性表有5bits输入码,1bit输出码。它在数据寄存器中间隔均匀地取5bits: y31、y26、y20、y9、y1,通过NLF(Nonlinear Logic Function)运算产生一个输出码。输出码再与数据寄存器中的y16与y0以及密钥寄存器中的k0进行异或运算后生成1bit加密数据码。每生成1bit加密数据码,密钥寄存器和数据寄存器分别进行移位,密钥寄存器作循环移位,加密数据码作为数据寄存器移位的输入,重复上述步骤528次后,得到4byte的输出密文。

NLF(x4,x3,x2,x1,x0)=x4x3x2^x4x3x1^x4x2x0^x4x1x0^x4x2^x4x0^x3x2^x3x0^x2x1^x1x0^x1^x0

kHWsrin

针对于Keeloq算法研究部分,本文部分内容来自多篇学术论文,站在巨人的肩膀上,能够走的更远,致敬前辈。

我们先来看看HCS系列芯片,HCS系列芯片是美国Microchip公司推出的芯片,是为远程无“钥匙”系统中加密识别但愿而设计的KEELOQ滚动码编码解码器,它采用Keeloq滚动码算法对所要传输的代码进行加密。

这里是拿到的全网公开的一些芯片信息。有了这些介绍之后,我们就可以大致去研究滚动码的加密了。

bpSHdH8

可以看到主要的长度大概是67-69bit,对比数据格式来看,大同小异。

就加密方法来说,这里找一张很简洁的图来说明。

vTTWXHi

可以看到主要是有几个数据比较重要,32bit的序列号,64bit的编码密钥,16bit的同步计数值,除此之外还有识别码,功能码等等。

  • 同步计数值顾名思义就是用来同步计数的每次判断信号合法后汽车执行对应功能并将同步计数值保存下来,当新的信号到来会对比汽车保存的同步计数值,如果小于或者等于将判断信号非法,不执行任何操作,当大于保存的同步计数值,汽车执行对应功能并将同步计数值保存下来。
  • 功能码顾名思义就是代码执行什么功能的码

直接看这张图可能会是比较云里雾里。下面我们来看有关于Keeloq编码密钥的算法,这样的话才能更加清晰的明白此算法加密的原理。

0x02 简单加密

  • 直接把厂商密钥当作编码密钥的方式

0QLuLrx

0x03 标准密钥加密

  • 标准秘钥生成算法假设序列号为0x1234567,通过标准的秘钥生成算法来定的话,首先会拿

    OeQfq9E

h8c1GIY

0x04 安全加密

W0iD33D

0x05 三种区别

  • 简单加密直接拿厂商秘钥加密的话,直接可以对其他的设备进行解密操作。
  • 标准秘钥生成算法,因为每个遥控序列号都是不同的所以生出来的秘钥也是不同的。如果能获取到编码秘钥就是只对这个设备有用然而对其他的设备都没有效果的,但是如果厂商秘钥被其他人获取了,因为发送信号时候会带着28Bit的序列号,所以只要别人拿到了这个厂商秘钥就能解密信号。
  • 安全秘钥生成算法就不同了,即使是厂商秘钥被别人知道了,也只能拿到前32位秘钥,后32位是根据种子码生成的,而种子码又是随机生成的,相比较前两种加密算法来说,安全密钥生成算法是较为安全的一种算法。

最后附加密密钥产生原理图和滚动编码产生原理图。

vwsG0bP

0x06 参考文章

[1]使用 HackCube-Special 分析滚动码信号-360无线电安全研究院

[2]基于KEELOQ技术的车库门禁系统


浅浅研究滚动码(上)
http://example.com/2022/03/24/浅浅研究滚动码(上)/
作者
橡树(Yuning)
发布于
2022年3月24日
许可协议