浅谈KEELOQ技术的软件实现

时间:2011-09-04

  Microchip公司的KEELOQ技术是一种多变化、抗截获、安全可靠性高的非线性跳码加密解密技术。KEELOQ目前是通过硬件芯片IC(以Mirochip公司的HCS300为代表)实现,主要应用于汽车防盗系统和门禁系统,是无钥进入系统领域的芯片。但也由于硬件芯片本身的限制(其所能加密的数据必须预先写入EEPROM中),使之很难用于其它(如数据加密)领域。KEELOQ技术其实是一种复杂的协议,只要弄清楚它的原理,就可以根据实际需要在这个协议里选择合适的参数。本文对KEELOQ技术进行了专门研究,提出了一种软件实现方法,并将这一方法应用于汽车防盗报警系统中。

  KEELOQ技术的思想是用64bit的EN_KEY[64:0](加密密钥)去加密32bit的CSR[31:0](校验码)得到32bit的CRYP密文。加密机制为:首先定义一个非线性表,这个非线性表有5位输入NLF_IN[4:0],一位输出NLF_OUT.它在CSR[31:0]中间隔均匀地取固定5位:I0、I1、I2、I3、I4,通过非线性产生一个输出码NLF_OUT;这一位输出码NLF_OUT再与EN_KEY中的15位、CSR中的2位进行异或运算后输出位输出码CRYP[0];每输出一位后,EN_KEY、CSR分别进行移位,EN_KEY作循环移位,CRYP[0]作为CSR移位的输入;重复上述步骤直到输出32位CRYP[0:31].依此法,即使32bit的校验码CSR中只有一位发生变化,用KEELOQ加密算法得到的CRYP密文也会有50%以上的数据位(16bit)发生变化。

  1 KEELOQ技术的一般特点

  KEELOQ技术作为一种安全实用的加密解密技术,具有以下特点:

  (2)将KEELOQ技术应用于通信中,安全性非常好。同一条命令,经KEELOQ编码后每次得到的码字都不相同(在一个非常长的周期里),且这种变化是无规律的。

  (2)发送方发送的码只能被一个特定的对象有效接收,接收方只有预先取得(通过学习)发送方的加密钥匙后,才能对接收到的数据进行有效解密。

  (3)特定的对象只有经过学习某一发送者的信息后,才能使用。

  (4)这种技术能防止发送码被截获后再转发带来的危害。

  (5)接收方能随时清除自己保存的学习信息,使原来的发送方不能控制自己,这样能有效避免第三方非法使用。

  正是这些特点使得KEELOQ技术越来越受重视,越来越广泛使用。

  2 硬件实现KEELOQ技术

  基于KEELOQ技术的专用芯片分为两种:一种实现加密功能,一种实现解密功能,通常配合起来使用。实现加密功能的芯片带有4个按键接口,组合使用可达15种功能。每有键按下,就自动生成KEELOQ加密码。KEELOQ加密码的组成一般如下:

  一旦芯片制造出来,上述项的长度就是确定的。如序列号的长度设计成28位,整个系统的容量就不会超过268435455(2 28-1),如果想扩展系统容量非常不方便。这种芯片在使用前必须预置一些初值(序列号、加密钥匙、同步计数器)。发送方和接收方一起工作前,接收方必须先通过学习来获得并存储发送方的序列号、加密钥匙和当前同步计数器的值。学习是KEELOQ技术的一个重要方面。

  硬件实现KEELOQ技术加密过程如图1所示。

  序列号用来标识不同的对象;加密钥匙用来对发送的数据进行加密,增加破译的难度,它不直接送出去;同步计数器是用来抗截获的,每次有键按下,同步计数器的值就被更新,它经过加密变换后被发送出去。

  硬件实现KEELOQ技术解密过程如图2所示。

  接收方在确认序列号匹配后,对接收的数据进行解密,然后检查同步计数器是否匹配,在确认其匹配后,再去处理接收到的按键信令。

  尽管KEELOQ技术有上述独特的优点,但是经过深入分析不难发现KEELOQ算法及其硬件实现技术也存在一些不足:

  (1)安全性基于出厂密钥和种子码SEED.在HCS300芯片中,加密密钥EN_KEY是由出厂密钥MKEY、序列号SN和种子码SEED(安全模式)生成的。而SN和SEED在发送数据的过程中未经加密,是可截获的。理论上出厂密钥一经确定一般不会更改。所以,一旦出厂密钥外泄,后果极其严重。

  (2)扩展功能弱、升级不方便。其算法由硬件芯片实现。其所能实现的功能由按键决定。其按键只有4个,多也只有15种组合。发送方无法附加其余的信息(对于大多领域来说,它要求能发送一些附加信息,如用户的姓名、年龄、出生日期等),功能扩展几乎不可能。另外,某一特定型号的芯片其序列号和同步计数器的长度是固定的。当系统建成后,开发者如果想只通过软件升级来扩充系统的容量或提高系统的性能、用硬件实现技术基本不可能。

  (3)对功能码的检错和纠错的功能较弱。在无线传输中,出现误码的概率比较大。功能码代表所要实现的功能,如开门、报警、开阀等。如果发送的数据是0010,而接收的数据为0100,其后果非常严重。

  (4)传输效率较低。在发送的数据中,其有用信息(如序列号、功能码)全部在固定码中,加密码只作为一种加密用的附加数据,这样不但降低了安全性,而且传输效率不高。以HCS300为例,发送的66位数据中只有32位为有用信息,传输效率比较低。

  (5)无法用于数据加密。由于其是由硬件芯片实现的,它所能加密的数据只限于序列号、同步码等预先存在HCS300的EEPROM中的数据。它没有数据入口,无法对数据流进行加密。

  (6)受硬件设计限制,灵活性差,成本较高,由于不拥有技术,容易受制于人。

  正是这些不足之处促使我们研究用软件来实现KEELOQ技术。

  3 软件实现KEELOQ技术

  KEELOQ技术的是KEELOQ算法,KEELOQ算法作为KEELOQ技术的重要部分是保密的。经过长时间的探索、研究、验证,本文提出了一种可靠的KEELOQ算法,并将其成功应用到汽车防盗报警系统中,取得了非常好的效果。

  序列号加密钥匙选用32位的m序列,对于一个用户而言,其加密钥匙和序列号不相同。同步计数器的长度从理论上讲越长越好,但是如果越长其他方面的开销就越大,这里选用16位的m序列。汽车防盗器由两部分组成:装在车身上的部分称之为座机;手持控制部分称之为手机。为了节省硬件开销,手机只设计三个按键,无组合按键,一共有12种按键功能。每个键有四种状态:一点按、两点按、三点按、长按。这12种按键又分成两类:一是控制座机操作的命令控制键,一是手机自身操作键。每次按下命令控制键,就执行KEELOQ加密过程。软件实现KEELOQ加密操作流程如图3所示。

  对按键信令进行纠错编码处理是必要的:假设某次按键信令为0110,经信道传输后,接收方解密得到的码字变为0101,而0101也表示一种有效的命令。显然,这种误操作带来的后果是严重的。用Walsh码编码,经过编码后,能同时发现并纠正3个或3个以内的错误;同时根据编码的特点,用加密钥匙对编码后的按键信令做变换处理。试验表明这些措施极大地提高了系统的可靠性。

  KEELOQ算法的关系之处在于同步计数器。如前所述,手机在次使用前必须预置有效的序列号、同步计数器值、加密钥匙。座机通过控制可以学习任何一只手机,学习成功手保存该手机的序列号、同步计数器值、加密钥匙。每次按下命令控制键时,手机的同步计数器的值加1,经过m序列发生器,从统计的角度看,有一半的位发生改变。接收方的确认接收数据的序列号匹配后,对接收数据进行解密,然后确定同步计数器是否匹配,只有同步计数器确认匹配后,才处理接收的按键信令。通过图4来说明确认同步计数器的匹配过程。

  KEELOQ技术是通过一个复杂的同步技术来实现的。虽然开发的防盗系统是双向通信的,但为了方便,将座机称为接收方,手机称为发送方。接收方判断解密后的同步计数器的值是否在单次操作范围内。如果在,就用接收到同步计数器值替换原来的同步计数器的值,并执行接收到的命令;否则,看是否在双次操作范围内。如果在,则暂存该计数器的值,并等待接收下有效数据。在这种情况下,如果接收到数据,在确认同步计数时就判断接收到的同步计数器的值是否在上次暂存同步计数器值的单次操作范围内。如果在,用当前接收到的同步计数器值替换原来的同步计数器的值,并执行命令;如果发送方的同步计数器的值不在接收方双次操作范围内,则该命令不被执行,且同步计数器的值不被保存。这个发送方必须被接收方学习后才能对接收方进行有效控制。由于接收方每次接收到有效命令后,就更新自己同步计数器的值,使前用过的同步计数器的值成为禁用码,不再有效。这样就能够避免发送的码被截获而再转发带来的危害。

  需要说明的是上述单次操作范围、双次操作范围,以及同步计数器的长度可以根据实际需要来选择。由于同步计数器非常重要,算法在处理时对它进行了检错编码处理。软件实现KEELOQ解密操作流程如图5所示。

  在KEELOQ技术中,学习功能一个重要部分。学习包括清除原来存储的信息和学习新的信息,它分为一般学习和安全学习两种。本文采用安全学习方式。通过长按座机上的学习清除键(该键有两种功能:长按为清除功能,点按为进入学习模式)来清除原来手机的信息,点按座机上的学习清除键,如果谇机的原来信息已被清除,则进入学习模式;否则,点按无效,不进入学习模式。这时,如果手机发送学习启动命令给座机,处于学习状态的座机收到命令后立即向手机发送请求学习信号,收到请求信号后,手机将经过变换处理后的加密匙和同步计数器立即发给座机,发送之后就退出学习状态,并保存新的加密钥匙和同步计数器值;座机确认数据有效后,就保存加密钥匙和同步计数器值并退出学习模式,需要继续学习。每次学习时手机发给座机的加密钥匙和同步计数器都不相同(无规律变化),这是安全学习的主要特点。为了更安全,座机多只能学习一支手机的信息。安全学习操作流程如图6所示。

  可以看到,用软件实现KEELOQ技术并不复杂,一般的单片机就够用。手机部分选用的是华邦(WINBOND)4位单片机,座机部分选用飞利浦(PHILIPS)8位单片机。用软件实现KEELOQ技术灵活性很大:手机按键可根据需要进行设计(仿移动电话按键设计);序列号、加密钥匙、同步计数器长度可根据需要进行选择,以后升级或改变都比较容易;手机发送的按键信令进行纠错编码,用加密钥匙对发送数据进行编码时可以有重点地做一些复杂的变换处理。有些厂家宣称他们能做到同一条按键信令约42.9(2 32-1)亿次无重复发送,其实只要增加加密钥匙和同步计数器的长度就可以做到这点,甚至比这更多次的无重复发送。这些都可以根据客户对系统要求的变化而进行软件上的修改,不需要改变硬件设计。总之,用软件实现KEELOQ技术,可以节约硬件成本,系统设计可以更少依赖于硬件,系统性能还能做到理优越可靠。


  
上一篇:介绍WinCE开发中最常用的概念及知识
下一篇:我国汽车电子产业发展机遇与挑战分析

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料