




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、欢迎访问Freekaoyan论文站一种基于KEELOQ的改进加密算法及其在单片机中的实现技术欢迎访问Freekaoyan论文站欢迎访问Freekaoyan论文站摘要:讨论了Microchip公司的KEELOQ加解密算法的实现机制,通过引入随随机数,提出了一种新的改进算法,并给出了其在单片机中的实现方案。该算法具有简单实用、所需硬件资源少、传输效率和安全性相对较高等优点,适用于需要数据加密的小型无线数据传输系统,具有广阔的应用前景。 关键词:加密算法 KEELOQ 单片机 跳码技术当今的编解码电路已经朝着高度集成化和微电脑化发展。像普通的固定编解码芯片和MC145026/145027、PT226
2、2/2272等已被广泛应用于公用系统中,给生活带来了方便。然而这些芯片不能保证系统的安全性。由于这些系统每次发送的数据流一模一样,只是高低电平的组合,第三方面通过捕捉设备,一旦用户信号出现,便可瞬间取得合法的身份识别码;或使用编码扫描设备,主动攻击解码芯片。因此保证系统的安全性是一个很现实的问题。在此背景下,基于加密算法的编解码IC的安全机制得到了应用。Microchip公司的KEELOQ技术是这种技术的代表。KEELOQ技术是一种多变化、抗截获得、安全可靠性高的非线性跳码加密解密技术。KEELOQ目前是通过硬件芯片IC(以Mirochip公司的HCS300为代表)实现,主要应用于汽车阵盗系统
3、和门禁系统,是无钥进入系统领域的首选芯片。但也由于硬件芯片本身的限制(其所能加密的数据必须预先写入EEPROM中),使之很难用于其它(如数据加密)领域。1 KEELOQ技术简介及其硬件实现KEELOQ技术的核心思想是用64bit的EN_KEY64:0(加密密钥)去加密32bit的CSR31:0(校验码)得到32bit的CRYP密文。加密机制为:首先定义一个非线性表,这个非线性表有5位输入NLF_IN4:0,一位输出NLF_OUT。它在CSR31:0中间隔均匀地取固定5位:I0、I1、I2、I3、I4,通过非线性产生一个输出码NLF_OUT;这一位输出码NLF_OUT再与EN_KEY中的15位、
4、CSR中的2位进行异或运算后输出第一位输出码CRYP0;每输出一位后,EN_KEY、CSR分别进行移位,EN_KEY作循环移位,CRYP0作为CSR移位的输入;重复上述步骤直到输出32位CRYP0:31。依此法,即使32bit的校验码CSR中只有一位发生变化,用KEELOQ加密算法得到的CRYP密文也会有50%以上的数据位(16bit)发生变化。Microchip公司以KEELOQ技术为基础开发了滚动码系统专用芯片,HCS300是其中较典型的一款。它是一块8引脚的编码IC芯片,里面集成了KEELOQ算法和其他一些功能,带有四个按键接口,实现15位的功能/命令码。内置192bits(1216bi
5、t words)EEPROM,用来存放EN_KEY(加密密钥)、SN(序列号)、SYNC(同步码)、SEED(种子码)等。序列号用来标识不同的对象;加密密钥用来对发送的数据进行加密,增加破译的难度,它不直接发送出去;同步计数器用来抗截获,每次发送数据时,同步计数器的值都被更新,所以每次发送的数据都不一样。种子码用于安全学习时参与加密密钥的生成。接收方必须先通过学习来获得并存储发送方的序列号、加解密密钥和当前同步计数器的值。学习相当于身份确认,只有经过学习的用户才能与主机通信。主机在接收到信号后,首先比对序列号,然后利用学习过程中得到并存储的加密密钥对接收的数据进行解密;接着检查同步计数器是否匹
6、配,在确认其匹配后,再去处理接收到的按键信令,并根据接收到的按键信令作出相应的动作反应。HCS300的系统使每次发送的密文都不相同,有效防止了空中截获法和数据重传带来的安全隐患。HCS300系统的加密密钥在学习过程中经密钥生成算法产生。学习分为一般学习和安全学习。一般模式下,解密解钥由MKEY和SN生成加解密密钥EN_KEY,其解密密钥隐含于发送信息(MKEY和SN)中。安全模式下,增加了种子码SEED(当四键一起按时发送),它与MKEY和SN一起生成加解密密钥EN_KEY,而SEED_KEY在平时并不发送,这样增加了安全性。不过,在学习时SEED码的发送是不经过加密的。2 KEELOQ技术的
7、不足与改进加密算法的提出尽管KEELOQ技术有上述独特的优点,但是经过深入分析不难发现KEELOQ算法及其硬件实现技术也存在一些不足:(1)安全性基于出厂密钥和种码SEED。在HCS300芯片中,加密密钥EN_KEY是由出厂密钥MKEY、序列号SN和种子码SEED(安全模式)生成的。而SN和SEED在发送数据的过程中未经加密,是可截获的。理论上出厂密钥一经确定一般不会更改。所以,一旦出厂密钥外泄,后果极其严重。(2)扩展功能弱、升级不方便。其算法由硬件芯片实现。其所能实现的功能由按键决定。其按键只有4个,最多也只有15种组合。发送方无法附加其余的信息(对于大多领域来说,它要求能发送一些附加信息
8、,如用户的姓名、年龄、出生日期等),功能扩展几乎不可能。另外,某一特定型号的芯片其序列号和同步计数器的长度是固定的。当系统建成后,开发者如果想只通过软件升级来扩充系统的容量或提高系统的性能、用硬件实现技术基本不可能。(3)对功能码的检错和纠错的功能较弱。在无线传输中,出现误码的概率比较大。功能码代表所要实现的功能,如开门、报警、开阀等。如果发送的数据是0010,而接收的数据为0100,其后果非常严重。(4)传输效率较低。在发送的数据中,其有用信息(如序列号、功能码)全部在固定码中,加密码只作为一种加密用的附加数据,这样不但降低了安全性,而且传输效率不高。以HCS300为例,发送的66位数据中只
9、有32位为有用信息,传输效率比较低。 (5)无法用于数据加密。由于其是由硬件芯片实现的,它所能加密的数据只限于序列号、同步码等预先存在HCS300的EEPROM中的数据。它没有数据入口,无法对数据流进行加密。(6)受硬件设计限制,灵活性差,成本较高,由于不拥有核心技术,容易受制于人。基于上述分析,笔者结合单片机的特性,对KEELOQ算法提出如下改进:(1)保留出厂密钥,但引入随机数,防止出厂密钥和种码的泄漏,用户可随时改变加密密钥。(2)改进数据传输的格式,把同步码映射到各组待加密的数据中,提高传输效率。(3)增加对功能码或关键数据的检错和纠错的功能。(4)增加数据入口,改变对加密数据的长度要
10、求,使其适合批量的数据加密。3 改进加密算法在单片机中的实现整个系统分为用户端(CLIENT)和主机端(SERVER),系统框图如图1所示。在本系统中,考虑功耗、外围功能等需要,选用飞利浦的LPC76X系列芯片。P87LPC764是20脚封装的单片机,可以在宽范围的性能要求下实现高集成度低成本的解决方案,4Kbits的ROM,32Byte用户代码区可用来存放序列码及设置参数,内带看门狗定时器,处理器的指令执行速度为标准80C51 MCU的两倍。EEPROM发送部分选用AT2401(1288 bits),接收部分选用AT2404(10248bits),8-DIP封装,I2C总线接口,擦写次数1百
11、万次,保存时间100年。用户必须经过学习后才能与主机通信。在学习过程中,用户把序旬号SN、出厂密钥MKEY、加密密钥EN_KEY送给主机,主机对每一个用户要开辟一片EEPROM来存储用户信息。在主机SERVER端,每个用户CLIENT都需要有16bits的存储空间。所以本系统共可接收511个用户的信息。整个系统的设计充分考虑系统的升级和功能的扩展。其中出厂密钥、序列号、加密密钥、随机数均可按需要进行扩展或缩减。如果从安全角度考虑,可把序列号存放在微处理器的ROM中。3.1 学习过程所谓学习,就是使用户在主机端中注册登记的过程。引进随机数RANDOM,对每一次学习来说,它所产生的随机的数是不一样
12、的,它所发送的数据也是变化的、不可预知,提高了安全性。另外,RANDOM和序列号SN、出厂密钥MKEY一起生成加解密密钥EN_KEY,用户可以随时对加密密钥EN_KEY进行修改,这样也提高了安全性。进入学习模式后,用户端经三次数据发送完成整个学习。过程如下:(1)用户端产生随机数RANDOM,与MKEY、SN经加密后发送。主机接收到数据解密后,比对MKEY和SN,确认用户是本系统用户(比对MKEY)并且是一个新用户(SN不在EEPROM)时,开辟空间,保存SN和RANDOM。(2)用户端和主机端分别利用密钥生成算法生成,由MKEY+SN+RANDOM生成EN_KEY,并存入相应的 存储的空间。
13、(3)用户端利用EN_KEY对SN、RANDOM、SYNC、MKEY进行KEELOQ加密并发送。主机接收到数据后,比对MKEY、RANDOM、SN正确后把SYNC存入相应空间,请求第二次发送(只双向通信中才有请求功能)。(4)用户端收到发送请求后(如果是单向通信,则等待后直接发送)再对SN、RANDOM、SYNC、MKEY加密后发送。因为SYNC是每次改变的,所以这次数据位和上一次发送的数据位改变在50%以上。(5)主机在接收到数据解密后,比对同步码SYNC,如果用户和主机的同步码变化规律相同则学习成功。三次发送即完成一次学习过程。第二次学习时随机数重新产生,所以要求学习时三次数据发送是连续的
14、,否则无效。以上各步中有任何一次数据比对挫败则学习失败。主机端在前二次接收到数据后等待24s仍未见用户发送数据则学习失败。学习挫败后用户重新学习。随机数利利用单片机的计数器产生,有两种方法供选用:(1)单次操作完毕后,单片机的计数器一直不停地计数,在外界对它进行再次操作或者要发送数据时停止计数。因为外界的操作或发送的时间是不定的,所以计数寄存器里面的数是随机的。(2)可以对按键或操作时间进行计时。用户每次按键或操作的时间都是不定的,并且按键从抖动到稳定的时间也是不定的,对它进行计时,如果把间隔的时间取得合适,即可得到近似随机数。3.2 发送过程在数据发送前,必须先对数据进行加密。数据加密的过程
15、如下:(1)重新定制非线性表。原算法是用64位密钥去加密32位的明码数据,现在把它改为64位密钥去加密64位的明码数据,密文长度也为64位,可按原规律扩展非线性即可。(2)对数据进行分组。尽管应用场合针对小型系统(数据传输量较小),但还是必须对所要加密的数据进行分组。在使用分组时,对明文尾部不满一个整组的碎片采用填充随机数的办法将其扩充为一个整组,然后进行正常加密。即数据分组长度、密钥长度和输出密文长度均为64位。(3)把同步码的变化反映到各组数据中。同步码每次发送时均会改变,它是保证系统每次发送的密文都不一样的根本。只需进行分配、叠代、移位、异或等简单的变换即可完成反映的任务。(4)封装算法。算法经封装后可方便地被各种程序调用。算法的入口参数有三个:EN_KEY、Data、Mode。其中,EN_KEY为64位的加密密钥;Data为64位被加密或被解密的数据;Mode为工作方式,有加密或解密两种。HCS300芯片发送的数据主要由固定码和加密码组成。固定码34bit,加密码32bit。固定码主要由28位序列号、4位功能码(按键信息)和2位标志组成。加密码则由16位同步码、28位序列号(可扩展)、4位功能码组成。经改进后可用于数据加密的格式如图2所示。在发送时还要加入检错和纠错功能。检错视系统的要求可选奇偶校验、CR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技安全与网络安全意识的同步提升
- 2025年河南中医药大学单招职业适应性测试题库审定版
- 2025年贵州文化旅游职业学院单招职业倾向性测试题库及答案一套
- 2025年广东省潮州市单招职业适应性测试题库必考题
- 神经系统常见疾病护理指南
- 2025年海南软件职业技术学院单招职业技能测试题库含答案
- 现代办公中电子钱包的便捷性与安全管理
- 科技园区如何进行绿色电力工程建设
- 科技与艺术的融合网络游戏的创新设计
- 2025年广西城市职业大学单招职业适应性测试题库必考题
- 企业财务会计(第二版)高职PPT完整全套教学课件
- 3dsMax20223维动画制作标准教程PPT完整版全套教学课件
- 《公路工程计量与计价》说课草稿
- NXT上的PoP贴装课件
- 2023-2024苏教版小学数学5五年级下册(全册)教案设计
- 批评他人发言稿(通用12篇)
- 上海实验学校幼升小测试题资料
- 一年级美术课后服务教案-1
- 重大疾病保险的疾病定义使用规范(2020年修订版)-
- RB/T 040-2020病原微生物实验室生物安全风险管理指南
- GB/T 8162-2018结构用无缝钢管
评论
0/150
提交评论