用单片机实现keeloq滚动码加密原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用单片机实现keeloq滚动码加密原理

本文把这项封装在芯片里的KEELOQ加密技术用软件方式实现,并针对单片机的特性进行了适当改进。这

种在单片机中实现的改进算法不仅包含了原来HCS300所具备的所有功能,而且在系统安全性、灵活性、可

扩展性、传输效率等方面均有较大改善,同时对改进算法在数据加密领域作了全新的尝试,以其特殊的密钥管

理方法独立于对称型加密(如DES)与不对称型加密算法(即公开密钥体制,如RSA) [1],成为一种适用于无线

传输领域小型系统的数据加密算法。

1 KEELOQ技术简介及其硬件实现

KEELOQ技术的核心思想[2,3,4]是用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)发生变化。Microchip公司以KEELOQ技术为基础开发了滚动码系列专用芯片,HCS300是其中较典型的一款。它

是一块8引脚的编码IC芯片,里面集成了KEELOQ算法和其他一些功能,带有四个按键接口,实现15位的功

能/命令码。内置192bits(12×16bit words) EEPROM,用来存放EN_KEY(加密密钥)、SN(序列号)、SYNC(同

步码)、SEED(种子码)等。序列号用来标识不同的对象;加密密钥用来对发送的数据进行加密,增加破译的难

度,它不直接发送出去;同步计数器用来抗截获,每次发送数据时,同步计数器的值都被更新,所以每次发送的

数据都不一样。种子码用于安全学习时参与加密密钥的生成。接收方必须先通过学习来获得并存储发送方

的序列号、加解密密钥和当前同步计数器的值。学习相当于身份确认,只有经过学习的用户才能与主机通信。

主机在接收到信号后,首先比对序列号,然后利用学习过程中得到并存储的加密密钥对接收的数据进行解密;

接着检查同步计数器是否匹配,在确认其匹配后,再去处理接收到的按键信令,并根据接收到的按键信令作出

相应的动作反应。HCS300系统使每次发送的密文都不相同,有效防止了空中截获法和数据重

传带来的安全

隐患。

HCS300系统的加密密钥在学习过程中经密钥生成算法产生。学习分为一般学习和安全学习。一般模

式下,解密密钥由MKEY和SN生成加解密密钥EN_KEY,其解密密钥隐含于发送信息(MKEY和SN)中。安

全模式下,增加了种子码SEED(当四键一起按时发送),它与MKEY和SN一起生成加解密密钥EN_KEY,而

SEED_KEY在平时并不发送,这样增加了安全性。不过,在学习时SEED码的发送是不经过加密的。

2 KEELOQ技术的不足与改进加密算法的提出

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

存在一些不足:

(1)安全性基于出厂密钥和种子码SEED。在HCS300芯片中,加密密钥EN_KEY是由出厂密钥MKEY、

序列号SN和种子码SEED(安全模式)生成的。而SN和SEED在发送数据的过程中未经加密,是可截获的。

理论上出厂密钥一经确定一般不会更改。所以,一旦出厂密钥外泄,后果极其严重。

(2)扩展功能弱、升级不方便。其算法由硬件芯片实现。其所能实现的功能由按键决定。其按键只有4

个,最多也只有15种组合。发送方无法附加其余的信息(对于大多领域来说,它要求能发送一些附加信息,如用

户的姓名、年龄、出生日期等),功能扩展几乎不可能。另外,某一特定型号的芯片其序列号和同步计数器的

长度是固定的。当系统建成后,开发者如果想只通过软件升级来扩充系统的容量或提高系统的性能、用硬件

实现技术基本不可能。

(3)对功能码的检错和纠错的功能较弱。在无线传输中,出现误码的概率比较大。功能码代表所要实现的

功能,如开门、报警、开阀等。如果发送的数据是0010,而接收的数据为0100,其后果非常严重[4]。

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

位为有用信息,传输效率比较低。

(5)无法用于数据加密。由于其是由硬件芯片实现的,它所能加密的数据只限于序列号、同步码等预先存

在HCS300的EEPROM中的数据。它没有数据入口,无法对数据流进行加密。

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

基于上述分析,笔者结合单片机的特性,对KEELOQ算法提出如下改进:

(1)保留出厂密钥,但引入随机数,防止出厂密钥和种子码的泄漏,用户可随时改变加密密钥。

(2)改进数据传输的格式,把同步码映射到各组待加密的数据中,提高传输效率。

(3)增加对功能码或关键数据的检错和纠错的功能。

相关文档
最新文档