随着信息社会的飞速发展,大规模集成电路和嵌入式系统的应用已深入到各个行业。于是,软硬件知识产权的保护、系统的安全运行等也就成为人们关注的问题。目前,利用PCB抄板技术直接读取存储在OM或Flash中的程序代码来进行产品仿制的盗版行为越来越多。因此,只有更好地发展加密技术,才能更有效地保护知识产权。下面我就给大家讲一下KEELOQ加密算法在硬件加密中的应用。

一、现有的软件加密技术和硬件加密技术

嵌入式系统由处理器、存储器、传感器、数据接口和嵌入式软件等部分组成。其中程序存储器、数据存储器和嵌人式软件加密是硬件知识产权保护的关键所在。

很多嵌入式系统都采用外部扩展程序存储器,只要有相应的控制信号出现,程序存储器便对CPU是透明的。因此,建立一个同样的硬件电路,拷贝一片新的程序存锗器即能完成仿制。因而系统设计人员十分关注馓机系统的程序保密性及提高保密性的方法。目前主要有以下几种保密方法:

(1)无关值插入法

在源程序中的某些地方插入一些与源程序无关的值,可使反汇编出来的源程序面目全非。

(2)总线置乱法

在单片微机的应用领域(如采用扩展程序的存储器)中,为了防止从程序存储器中直接得到正确的源程序,可以采取地址、数据总线鼍乱的方法。若该微机系统的地址总线为n根,则将它置乱的方式有n种。

(3)求复、异或加密

将程序存储器里的代码按有效程序代码逐字节求反后存放,或者按同钥匙码异或后的二进制码存放。这样,解密者直接反汇编将得不到正确的原代码。

以上三种方法虽然有一定作用.但有经验的设计人员经过分析后,仍有很大的破解可能,安全性不够。

(4)外部随机存储器验证法

在一外部随机存储器中预先写入一些数据,系统运行时,CPU首先从该存储器读取数据,这些数据可以是CPU执行程序的条件判别依据,也可以是CPU将执行的程序。如果数据正确,则整个系统髓正常运行;否则系统不能运行。随机存储器由电池供电,能在掉电后保持数据。若对硬件电路没有剖析清楚,拔下了随机存储器或取下电池,则随机存储器中的数据消失。在无正确源程序的情况下,根本无法恢复原来的数据。

该方法的缺陷在于,只要分析清楚电路,随机存储器中的数据很容易被读取。另外若不小心断电,则会导致系统不能运行,不够稳定。

(5)订制IC、FPCA、PLD

该方法不易被破解复制,但成本过高,且不易实现。

以下将要介绍的基于KEELOQ的硬件加密方法是一种新型的加密方法,具有不易破解复制、可靠、低成本、易于实现等特点,弥补了以上方法的缺陷,又综合了各种优点。

二、KEELOQ跳码加密技术分析

KEELOQ技术是一种非线性跳码加密技术和解密技术。其原理如图1所示。

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

根据密码学的原理,要保证加密系统的安全性,必须不断地更新密码内容,它包含着密钥、被加密数据、加密算法等。KEELOQ技术完全符合这一特点。它着重于非线性和跳码。二者结合使得每次发进的码均以无规律方式变化,而且不重复,因此满足高性能加密的需求。采用硬件电路产生加密码,使编码和加密变换过程都被封装在芯片里,内部进行密钥与编码算法运算,每次发送不同密码,即使被截获,也不易被破译。设置同步码,阻止了通过截获重发的破解方式。

KEELOQ技术的核心思想是:由64位厂商密码、32位产品序列号和32位种子码经过特定的生成算法生成6位的加密密钥。用64位的加密密钥去加密32位的数据CSR(包括4位功能码,12位校验码,16位同步码)得到32位的密文。

加密机制为:首先定义一个非线性表,这个非线性表有5位输入,一位输出。它在CSR中间隔均匀地取固定5位,通过非线性产生一个输出码;这一位输出码再与加密密钢中的15位、CSR中的2位进行异或运算后输出第一位输出码CRYP[0];每输出一位后,加密密钥、CSR分别进行移位,加密密钢作循环移位,CRYP [O]作为CSR移位的输入;重复上述步骤直到输出32位密文。依此方法,即使32位CSR中只有一位发生变化,用KEELOQ加密算法得到的CRYP密文也会有50%以上的数据位(16位)发生变化。解密过程类似。

Microc hip公司的HCS301是一款较典型的以KEELOQ技术为基础的跳码专用芯片。它是一块8引脚的编码IC芯片,里面集成了KEELOQ加密算法和其他一些功能,带有四个按键接口,实现15位的功能,命令码。内置192bit(12x16bit)EzPROM。用来存放EN_KEY(加密密钥)、SN(序列号)、SYNC(同步码)、SEED(种子码)等。每次发送数据时,同步计数器的值都被更新,所以每次发送的密文都不相同,有效防止了空中截获法和数据重传带来的安全隐患。

三、 KEELOQ技术用于硬件加密的改进算法

为了将KEELOQ技术用于程序加密,需要对KEELOQ加密算法进行一些改进。

(1)原加密算法发送的书记中,其有用信息(如序列号、功能码)全部在固定码中,加密码只作为一种加密用的附加数据,这样不但降低了安全性,而且传输效率不高。以IICS300为例,发送的66位数据中只有32位为有用信息,传输效率比较低。改进后把同步码映射到各组待加密的数据中,提高了传输效率。

(2)原加密算法无法用于数据文件加密。由于原加密算法是由硬件芯片实现的,它所能加密的数据只限于序列号、同步码等预先存在HCS301的E2PROM中的数据。它没有数据入口,无法对数据流进行加密。因此,需要增加数据入口,改变对加密数据的长度要求,使其适合批量的数据文件加密。

(3)原加密算法对功能码的检错和纠错的功能较弱。由于加密的都是关键数据,若在传输中出现误码,后果非常严重。因此需要增加对效据的检错和纠错的功能。

四、KEELOQ硬件加密算法在硬件防盗版中的应用

KEELOQ硬件防盗版技术由硬件验证和程序加密两部分组成,其框图见图2。

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

1、硬件验证

硬件验证法类似于前面所述的外部随机存储器验证法。只是外部随机存储器被替换为HCS301,这样系统更为稳定可靠。

CPU在第一次运行时会对HC5301进行学习,获取序列号以及种子码,并据此算出癣密密钥,每次开机上电或复位后,由CPIJ产生4位随机数,送至HCS301的SO-S3。

经过HCS301的硬件加密后,密文由PWM输出至CPU。

CPU收到密文后就用解密密钥进行软件解密,解密得到的4位随机教、序列号及计数器的值若都与发送的内容相符,则通过验证,主程序开始执行,否则主程序不会执行。验证流程如图3所示。

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

这一验证方式保证了CPU内部程序的保密性,将CPU换到其他电路将不能运行,除非知道HCS301的厂商密码、同步码萼信息。而这些信息一般都是很难获取的。

2、程序加密

对于存放在外部存储器中的程序或数据,可以用改进的KEELOQ加密算法进行加密,然后储存起来。一般只须对程序及数据中的一些关键数据文件进行加密。

关键数据文件加密的过程如下:

(1)扩充非线性表

原加密算法是用64位密钥去加密32位的明码数据文件,现在把它扩展为64位密钥去加密64位的明码数据文件,密文长度也为64位。可按原规律扩展非线性表。

(2)数据分组

尽管关键数据传输量较小,但还是必须对所要加密的数据文件进行分组。在使用分组时,对明文尾部不满一个整组的碎片采用填充随机数的办法将其扩充为一个整组,然后进行正常加密。即数据分组长度、
密钥长度和输出密文长度均为64位。

(3)将同步码映射到各组数据中

同步码每次发送时均会改变,它是保证系统每次发送的密文都不一样的根本。只需进行分配、叠代、移位、异或等简单的变换即可完成映射任务。

(4)封装加密算法

加密算法经封装后可方便地被各种程序调用。加密算法的入口参数有三个:EN_KEY、Data、Mode。其中Er.lT_ KEY为64位的加密密钥;Data为64位被加密或被解密的数据;Mode为工作方式,有加密或解密两种。

(5)检错纠错

在发送数据时还要加入检错利纠错功能。检错视系统的要求可选奇偶校验、CRC校验等。纠错可以用汉明码。

改进后的KEELQQ加密算法可用于数据文件加密的数据格式如图4所示。

KEELOQ硬件加密算法在硬件防盗版中的应用
读写数据的过程就是加密和解密的过程。对于不同组的数据要设置不同的同步码。这样存储在外部存储器中的关健数据就是用改进后的KEELOQ加密算法加密的。想要单纯地复制其中的数据和程序是不可能的。只要出厂码不被泄露,几乎不可能破解,惟一可能的穷举法用现有最快的计算机也要上百年的时间。若再配合取反异或等其他一些加密方法,破解的可能性几乎为零。

小知识之PCB抄板技术

PCB抄板也常被称为电路板抄板、PCB克隆、电路板克隆、PCB逆向设计等等,它是指在已经有电子产品实物的前提下,利用各种反向研究手段反推出产品PCB文件,电路原理图等全套技术资料,然后利用这些资料对产品技术原理进行完整解析和应用研究,并通过制板打样、电路板焊接、组装等工序来实现电子产品仿制克隆的过程。