一种基于KEELOQ的改进加密算法及其在单片机中的实现技术
(2)扩展功能弱、升级不方便。其算法由硬件芯片实现。其所能实现的功能由按键决定。其按键只有4个,最多也只有15种组合。发送方无法附加其余的信息(对于大多领域来说,它要求能发送一些附加信息,如用户的姓名、年龄、出生日期等),功能扩展几乎不可能。另外,某一特定型
号的芯片其序列号和同步计数器的长度是固定的。当系统建成后,开发者如果想只通过软件升级来扩充系统的容量或提高系统的性能、用硬件实现技术基本不可能。
(3)对功能码的检错和纠错的功能较弱。在无线传输中,出现误码的概率比较大。功能码代表所要实现的功能,如开门、报警、开阀等。如果发送的数据是0010,而接收的数据为0100,其后果非常严重。
(4)传输效率较低。在发送的数据中,其有用信息(如序列号、功能码)全部在固定码中,加密码只作为一种加密用的附加数据,这样不但降低了安全性,而且传输效率不高。以HCS300为例,发送的66位数据中只有32位为有用信息,传输效率比较低。
(5)无法用于数据加密。由于其是由硬件芯片实现的,它所能加密的数据只限于序列号、同步码等预先存在HCS300的EEPROM中的数据。它没有数据入口,无法对数据流进行加密。
(6)受硬件设计限制,灵活性差,成本较高,由于不拥有核心技术,容易受制于人。
基于上述分析,笔者结合单片机的特性,对KEELOQ算法提出如下改进:
(1)保留出厂密钥,但引入随机数,防止出厂密钥和种码的泄漏,用户可随时改变加密密钥。
(2)改进数据传输的格式,把同步码映射到各组待加密的数据中,提高传输效率。
(3)增加对功能码或关键数据的检错和纠错的功能。
(4)增加数据入口,改变对加密数据的长度要求,使其适合批量的数据加密。
数据加密系统的两个基本要素是加密算法和密钥管理。密钥是控制加密算法和解密算法的关键信息,其产生、传输、存储等工作十分重要。目前数据加密技术可以分为二类,即对称型加密、不对称型加密。对称型加密(如DES算法)使用单个密钥对数据进行加密或解密。不对称型加密算法也称公用密钥算法(如RSA算法),其特点是有二个密钥(即公用密钥和私有密钥),只有二者搭配使用才能完成加密和解密的全过程。便两者都在密钥的管理和分发上遇到一些困难。KEELOQ密钥管理机制的订特别是对每个用户都有自己独特的加解密密钥,在学习过程中发送到主机并保存。但密钥信息隐含在每次发送的信息(SN和MKEY)中(即使在安全模式下,种子码SEED也是固定码,可截获),并且依赖于生产厂家和出厂密钥,不可更改。本改进算法主要针对无线传输领域的小型系统,可以在学习过程中引入随机参数RANDOM,与MKEY、SN一起生成EN_KEY。这个随机数据RANDOM在同一次学习时相同,但每次学习时都会改变。这样,加密密钥就不依赖于生产厂家和出厂密钥并且在用户感到密钥有可能泄漏时不随时改变数据,增加了安全性。
3 改进加密算法在单片机中的实现
整个系统分为用户端(CLIENT)和主机端(SERVER),系统框图如图1所示。在本系统中,考虑功耗、外围功能等需要,选用飞利浦的LPC76X系列芯片。P87LPC764是20脚封装的单片机,可以在宽范围的性能要求下实现高集成度低成本的解决方案,4Kbits的ROM,32Byte用户代码区可用来存放序列码及设置参数,内带看门狗定时器,处理器的指令执行速度为标准80C51 MCU的两倍。EEPROM发送部分选用AT2401(128×8 bits),接收部分选用AT2404(1024×8bits),8-DIP封装,I2C总线接口,擦写次数>1百万次,保存时间>100年。
用户必须经过学习后才能与主机通信。在学习过程中,用户把序旬号SN、出厂密钥MKEY、加密密钥EN_KEY送给主机,主机对每一个用户要开辟一片EEPROM来存储用户信息。
《一种基于KEELOQ的改进加密算法及其在单片机中的实现技术(第2页)》