《电子技术应用》
您所在的位置:首页 > 通信与网络 > 业界动态 > KEELOQ加密算法在硬件加密中的应用

KEELOQ加密算法在硬件加密中的应用

2008-03-31
作者:李 罗,卢建刚

  摘 要: 基于KEELOQ的硬件加密" title="硬件加密">硬件加密方法可解决目前通过PCB抄板和芯片解密仿造产品的问题。针对此方法,提出了具体的软硬件设计方案。该方法能够对产品的产权进行保护,阻止盗版活动,加强信息安全。同时,它也可以用于对U盘等数据存储器中的数据进行加密,以开拓KEELOQ算法新的应用领域。
  关键词: 硬件加密 KEELOQ 跳码


  随着信息社会的飞速发展,大规模集成电路和嵌入式系统" title="嵌入式系统">嵌入式系统的应用已深入到各个行业。于是,软硬件知识产权的保护、系统的安全运行等也就成为人们关注的问题。目前,利用PCB抄板技术直接读取存储在ROM或Flash中的程序代码来进行产品仿制的盗版行为越来越多。因此,只有更好地发展加密技术" title="加密技术">加密技术,才能更有效地保护知识产权。本文对KEELOQ技术的良好加密性能进行深入研究,并把它应用到嵌入式系统加密保护中。
1 现有的软硬件加密技术
  嵌入式系统由处理器、存储器、传感器、数据接口和嵌入式软件等部分组成。其中程序存储器" title="程序存储器">程序存储器、数据存储器和嵌入式软件的加密是硬件知识产权保护的关键所在。很多嵌入式系统都采用外部扩展程序存储器,只要有相应的控制信号出现,程序存储器便对CPU是透明的。因此,建立一个同样的硬件电路,拷贝一片新的程序存储器即能完成仿制。因而系统设计人员十分关注微机系统的程序保密性及提高保密性的方法。目前主要有以下几种保密方法[1]
  (1)无关值插入法
  在源程序中的某些地方插入一些与源程序无关的值,可使反汇编出来的源程序面目全非。
  (2)总线置乱法
  在单片微机的应用领域(如采用扩展程序的存储器)中,为了防止从程序存储器中直接得到正确的源程序,可以采取地址、数据总线置乱的方法。若该微机系统的地址总线为n根,则将它置乱的方式有n!种。
  (3)求反、异或加密
  将程序存储器里的代码按有效程序代码逐字节求反后存放,或者按同钥匙码异或后的二进制码存放。这样,解密者直接反汇编将得不到正确的原代码。
  以上三种方法虽然有一定作用,但有经验的设计人员经过分析后,仍有很大的破解可能,安全性不够。
  (4)外部随机存储器" title="随机存储器">随机存储器验证法
  在一外部随机存储器中预先写入一些数据,系统运行时,CPU首先从该存储器读取数据,这些数据可以是CPU执行程序的条件判别依据,也可以是CPU将执行的程序。如果数据正确,则整个系统能正常运行;否则系统不能运行。随机存储器由电池供电,能在掉电后保持数据。若对硬件电路没有剖析清楚,拔下了随机存储器或取下电池,则随机存储器中的数据消失。在无正确源程序的情况下,根本无法恢复原来的数据。
  该方法的缺陷在于,只要分析清楚电路,随机存储器中的数据很容易被读取。另外若不小心断电,则会导致系统不能运行,不够稳定。
  (5)订制IC、FPGA、PLD
  该方法不易被破解复制,但成本过高,且不易实现。
  以下将要介绍的基于KEELOQ的硬件加密方法是一种新型的加密方法,具有不易破解复制、可靠、低成本、易于实现等特点,弥补了以上方法的缺陷,又综合了各种优点。
2 KEELOQ跳码加密技术分析
  KEELOQ技术是一种非线性跳码加解密技术[2]。其原理如图1所示。根据密码学的原理,要保证加密系统的安全性,必须不断地更新密码内容,它包含着密钥、被加密数据、算法等。KEELOQ技术完全符合这一特点。它着重于非线性和跳码,二者结合使得每次发送的码均以无规律方式变化,而且不重复,因此满足高性能加密的需求。采用硬件电路产生加密码,使编码和加密变换过程都被封装在芯片里,内部进行密钥与编码算法运算,每次发送不同密码,即使被截获,也不易被破译。设置同步码,阻止了通过截获重发的破解方式。


  KEELOQ技术的核心思想[3,4]是:由64位厂商密码、32位产品序列号和32位种子码经过特定的生成算法生成64位的加密密钥。用64位的加密密钥去加密32位的数据CSR(包括4位功能码,12位校验码,16位同步码)得到32位的密文。
  加密机制为:首先定义一个非线性表,这个非线性表有5位输入,一位输出。它在CSR中间隔均匀地取固定5位,通过非线性产生一个输出码;这一位输出码再与加密密钥中的15位、CSR中的2位进行异或运算后输出第一位输出码CRYP[0];每输出一位后,加密密钥、CSR分别进行移位,加密密钥作循环移位,CRYP[0]作为CSR移位的输入;重复上述步骤直到输出32位密文。依此方法,即使32位CSR中只有一位发生变化,用KEELOQ加密算法得到的CRYP密文也会有50%以上的数据位(16位)发生变化。解密过程类似。
  Microchip公司的HCS301是一款较典型的以KEELOQ技术为基础的跳码专用芯片。它是一块8引脚的编码IC芯片,里面集成了KEELOQ算法和其他一些功能,带有四个按键接口,实现15位的功能/命令码。内置192bit(12×16bit)E2PROM,用来存放EN_KEY(加密密钥)、SN(序列号)、SYNC(同步码)、SEED(种子码)等。每次发送数据时,同步计数器的值都被更新,所以每次发送的密文都不相同,有效防止了空中截获法和数据重传带来的安全隐患。
3 KEELOQ技术用于硬件加密的改进算法
  为了将KEELOQ技术用于程序加密,需要对算法进行一些改进[5]
  (1)原算法发送的数据中,其有用信息(如序列号、功能码)全部在固定码中,加密码只作为一种加密用的附加数据,这样不但降低了安全性,而且传输效率不高。以HCS300为例,发送的66位数据中只有32位为有用信息,传输效率比较低。改进后把同步码映射到各组待加密的数据中,提高了传输效率。
  (2)原算法无法用于数据加密。由于原算法是由硬件芯片实现的,它所能加密的数据只限于序列号、同步码等预先存在HCS301的E2PROM中的数据。它没有数据入口,无法对数据流进行加密。因此,需要增加数据入口,改变对加密数据的长度要求,使其适合批量的数据加密。
  (3)原算法对功能码的检错和纠错的功能较弱。由于加密的都是关键数据,若在传输中出现误码,后果非常严重。因此需要增加对数据的检错和纠错的功能。
4 KEELOQ硬件加密算法在硬件防盗版中的应用
  KEELOQ硬件防盗版技术由硬件验证和程序加密两部分组成,其框图见图2。


4.1 硬件验证
  硬件验证法类似于前面所述的外部随机存储器验证法,只是外部随机存储器被替换为HCS301,这样系统更为稳定可靠。
  CPU在第一次运行时会对HCS301进行学习,获取序列号以及种子码,并据此算出解密密钥。每次开机上电或复位后,由CPU产生4位随机数,送至HCS301的S0-S3。经过HCS301的硬件加密后,密文由PWM输出至CPU。
  CPU收到密文后就用解密密钥进行软件解密,解密得到的4位随机数、序列号及计数器的值若都与发送的内容相符,则通过验证,主程序开始执行,否则主程序不会执行。验证流程如图3所示。


  这一验证方式保证了CPU内部程序的保密性,将CPU换到其他电路将不能运行,除非知道HCS301的厂商密码、同步码等信息。而这些信息一般都是很难获取的。
4.2 程序加密
  对于存放在外部存储器中的程序或数据,可以用改进的KEELOQ算法进行加密,然后储存起来。一般只须对程序及数据中的一些关键数据进行加密。
  关键数据加密的过程如下:
  (1)扩充非线性表。原算法是用64位密钥去加密32位的明码数据,现在把它扩展为64位密钥去加密64位的明码数据,密文长度也为64位。可按原规律扩展非线性表。
  (2)数据分组。尽管关键数据传输量较小,但还是必须对所要加密的数据进行分组。在使用分组时,对明文尾部不满一个整组的碎片采用填充随机数的办法将其扩充为一个整组,然后进行正常加密。即数据分组长度、密钥长度和输出密文长度均为64位。
  (3)将同步码映射到各组数据中。同步码每次发送时均会改变,它是保证系统每次发送的密文都不一样的根本。只需进行分配、叠代、移位、异或等简单的变换即可完成映射任务。
  (4)封装算法。算法经封装后可方便地被各种程序调用。算法的入口参数有三个:EN_KEY、Data、Mode。其中EN_KEY为64位的加密密钥;Data为64位被加密或被解密的数据;Mode为工作方式,有加密或解密两种。
  (5)检错纠错。在发送数据时还要加入检错和纠错功能。检错视系统的要求可选奇偶校验、CRC校验等。纠错可以用汉明码。
  改进后的KEELQQ算法可用于数据加密的数据格式如图4所示。


  读写数据的过程就是加密和解密的过程。对于不同组的数据要设置不同的同步码。这样存储在外部存储器中的关键数据就是用改进后的KEELOQ算法加密的。想要单纯地复制其中的数据和程序是不可能的,只要出厂码不被泄露,几乎不可能破解,惟一可能的穷举法用现有最快的计算机也要上百年的时间。若再配合取反异或等其他一些加密方法,破解的可能性几乎为零。
  本文把KEELOQ的非线性跳码编码技术用于硬件加密的改进算法,对硬件进行双重加密,大大降低了硬件盗版的可能。该技术可以广泛地应用于各类存储器、数据的加密,有着广阔的前景。
参考文献
1 任克强,刘 晖.单片机系统硬件与软件加密技术[J].电子设计应用,2003;(7):61~63
2 Kobus Mameweck.An Introduction to KEELOQ Code Hopping(TB003)[J].Microchip Technology Inc,2002
3 岳云天,郁 滨.一种基于加密算法的编解码IC的安全机制[J].电子技术,2002;29(7)
4 李福平,金伟正,邓德祥.KEELOQ技术的软件实现[J].电子技术应用,2002;28(6)
5 董 辉,卢建刚.一种基于KEELOQ的改进加密算法及其在单片机中的实现技术[J].电子技术应用,2004;30(9):14~17

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。