集成电路外挂软件的加密方法

文档序号:6589832阅读:265来源:国知局
专利名称:集成电路外挂软件的加密方法
技术领域
本发明系关于一种集成电路外挂软件的加密方法,尤指一种以函数/反函数还原原理用于CPU/MCU与其外挂控制软件间的加密/解密措施的方法。
由上述可知,将控制软件以固件形式直接封存于集成电路中系存在成本高、存货种类多等种种问题。因而,将CPU/MCU的控制软件外挂为可以考虑的另一个方向。以电脑内部的储存单元中实际存放的程式指令为例,用于数据运算处理的电脑,由于程式指令庞大,所以多储存于其硬盘上,而以程式控制为主要功能的电脑,大多将程式固化为固件(Firmware),直接烧录在CPU/MCU内置的储存单元或其周边具有断电保护的外挂储存芯片内。然而,任何一种储存芯片的输出入方式都是标准的,其读取数据时,系依一定的时序将某一地址码以适当的高低电位分别加于地址总线之上,使该地址所对应的储存单体(Cell)内容依一定的时序出现在数据总线上。由于这是一种通用标准过程,所以储存芯片的内容无法依赖现有的通用结构加以保密。
由此可见,尽管外挂方式可以增加软件开发的弹性,并减少CPU/MCU供应厂的产品各类,但保密问题仍然影响软件开发者采用外挂软件的意愿。因为外挂软件业者的权益通常会受到两种方式的侵犯。第一种是直接仿冒。由于电子产品多采用通用的CPU/MCU,所以仿冒者只需在公开市场采购到相同的CPU/MCU,然后将想要仿冒的产品中外挂的储存芯片的内容加以拷贝,再烧入自备的通用型的储存芯片之中,即可自行生产仿冒的产品。第二种是盗取功能码(通常是汇编形式)。因为目前外挂的软件都是为通用CPU/MCU编写,只要将其读出,经过反汇编软件的解读,就能轻易的将CPU/MCU用的机器码(以0和1的方式存在)翻译成编程人员能了解的汇编码(依IBM的定义俗称Assembly)而达到窃取功能秘密的目的。
本发明的技术方案是这样的,一种集成电路外挂软件的加密解密方法,令具执行控制软件功能之集成电路以外挂方式储存其控制软件,其特征在于外挂的控制软件,先经过一个加密函数的处理,再被烧录于通用的储存芯片之上,又在集成电路内部设一以前述函数的反函数为基础的解密单元,专司对自外挂外储存芯片上读取的已加密的控制软件进行解密的功能。
这种加密保护方法的理论基础如下。
由前述可知,开发厂商所需保护的是其设计的软件。这种软件在开发完毕时通常是以16进制的可执行文件或类似的形式存在,等待被烧录于储存芯片之上。其内容依目前的习惯,不外是以byte或word的型式组成,每个byte含8个bit,每个word则依所用的CPU/MCU不同,可含8,12,13,14,15,16个或甚至更多个bit不等。此外,因为这些byte或word在文件内各占有一定的排序位置,这些位置就对应于他们被烧录在储存芯片中的硬件地址。所以在文件中某一位置An(其数值=n),就存有Dn的内容。
由于D是开发完成后的最终可执行文件内容,并且是以通用型式存在,便利抄袭,所以开发商都想将其改变为不通用的形态。但是CPU/MCU的执行单元只认识这种通用标准的内容,不容改变。所以本发明就是要提出一个主要的技术手段,能同时满足两者的需求。
从数学函数的理论,当一个函数满足了某些特殊条件时,它就有反函数存在。假设F是一个这样的函数,则它的反函数G就具有以下的特性。
G=F-1G·F=F-1·F=I在此I是Identity函数,不管作用在任何数据上,其输出永远和输入相同。
对一个通用的可执行文件D,只要将它做为输入数据(在此隐含了引用其内容Dn及所对应的地址An),经加密函数的操作,就可得到一个经过加密的可执行文件D′。这个文件已经不是标准型式,而且也不能被标准的CPU/MCU核心执行。这个过程的数学模式如下D′=F(D)在此当开发商以D′文件烧录于外挂储存芯片之上,就不会被轻易的抄袭了。但是这也衍生了一个新问题,就是如何让CPU/MCU核心来执行此一文件。
为了执行加密文件D′,在CPU/MCU芯片上于运算处理及执行单元之前必须以硬件方式实现反函数G。在执行过程中,当D′文件的内容D′n(隐含其地址An)被送至G作为输入数据时,函数G的操作可使它还原成可执行文件D,再被送入运算处理及执行单元,按照标准程式执行。这个过程的数学模式如下G(D′)=F-1(F(D))=I(D)=D这整个过程一方面使曝露在外挂储存芯片上的程式以非标准的方式D′存在,而受到了保护。另一方面对CPU/MCU的执行单元而言,它能实时而准确的读到执行文件D,而完成任务,维护了设计功能。
又由于不同的厂商可选用不同加密(F)/解密(G)函数对,所以加密执行文件D′是以多变化的非标准型式出现,更强化了保密(护)功能。而每一个F/G函数组,在实践时也可以依输入数据中的地址An做动态加密,使得被破解的可能性更大幅度降低。如果CPU/MCU厂家愿意进一步的努力,更可以为开发商提供在生产线上即时动态加密的能力,又更进一步的保障了知识产权。
图2为本发明产生加密可执行文件之流程图。
图3为本发明以“类”C语言形式表示以異或(XOR)函数加密的一种后处理软件内容(配合实施例一)。
图4为本发明以異或(XOR)构成解密函数“G”(“F”函数的反函数)的一种硬件架构示意图(配合实施例一)。
图5为本发明以“类”C语言形式表示以bit位移函数加密的又一种后处理软件内容(配合实施例二)。
图6为本发明以数据总线bit位移构成解密函数“G”(“F”函数的反函数)的又一种硬件架构示意图(配合实施例二)。
图7为本发明以组合方式设定解密函数的再一种硬件结构示意图,此图仅为可能的组合方式之一。
图8为图7所示硬件之一种解密函数参数设定方式示意图。
图9为图7所示硬件之另种解密函数参数设定方式示意图。


图10为图7所示硬件之另种解密函数参数设定方式示意图。
图号部分(10)集成电路(12)解码器(11)运算处理暨程式执行单元(13)地址产生器 (14)数据总线 (15)地址总线(16)接点切换单元(17)逻辑闸(31)(32)参数设定单元(310)(320)控制线在实际应用时,固件(Firmware)的开发者,面对一种CPU/MCU的开发平台进行程式化,经过种种软件工程步骤以后完成一个经过严密测试的版本,亦即可以烧录进芯片的程式文件,这个程式文件是以二进位机器码组成的可执行组合语言指令,然而对于储存芯片而言,前述的组合语言指令也是一种广义的数据,当其烧录进芯片后,在储存芯片中的每一个地址位置,就存有一份相对应的指令(或广义的数据)。如果这些数据是以通用的标准型式存在,任何人依照一定的程序均可由储存芯片中将其读出并予复制,然后和标准的CPU/MCU合用制成仿冒产品,所以对开发者毫无保障。因而本发明利用数学方法将这些标准指令(数据)进行加密,然后在执行前加以解密,即为本发明的主要技术特徵所在。
如图1所示(本发明之系统示意图),其是由一个具有执行程式功能的集成电路(10)(如CPU/MCU)以外挂方式连结一个储存控制软件的通用储存芯片(20);其中,该集成电路(10)至少包括有一运算处理暨程式执行单元(11)、一解码器(12)及一地址产生器(13);该运算处理暨程式执行单元(11)除透过解码器(12)、数据总线(14)与储存芯片(20)连接,又透过地址产生器(13)、地址总线(15)与储存芯片(20)连接。藉此,该运算处理暨程式执行单元(11)可透过地址产生器(13)产生欲读取数据的储存芯片地址,经由地址总线(15)送至储存芯片(20),储存芯片(20)将对应地址的控制软件数据经由数据总线送回集成电路(10),经解码器(12)作解码处理后送至运算处理暨程式执行单元(11)执行。
由于储存芯片(20)中的控制软件烧录前由加密函数作加密处理,即使透过一般程序读出,亦无法了解其实际内容,故可达保护软件创作之目的。又此项经加密的控制软件在送至集成电路(10)的运算处理暨程式执行单元(11)执行前,先经解码器(12)进行解密,故不影响控制软件之执行。由于解密函数是直接置入集成电路(10)中,外人亦无从取得或破解。
有关前述的加密/解密方法,谨进一步详述如依软件及储存储存芯片的特性,软件的内容可以下列的二进位方式表示Dn=dk-1,ndk-2,n…d1,nd0,nAn=aj-1,naj-2,n…a1,na0n前式中的dk-1,n,aj-1,n等代表一个word之中个别的bit,n代表地址,其范围自0至2j-1,其中j是整数。
Dn是位于地址An的软件内容,对一个K-bit宽的系统而言(即每个word含有K bits),可用二进位方式表示,如d(k-1),nd(k-2),n…d1,nd0,nd(k-1),n代表最高bit,d0.n代表最低bitAn是Dn所在的地址,如果地址起点为0,则An=n,其亦可用二进位方式表示,如a(j-1),na(j-2),n…a1,na0,1a(j-1),n表示最高bit,a0,n表示最低bit为进行加密,故选用一能对二进位系统进行操作的函数“F”,其满足了具有反函数“G”的特性,其数学表示如下G[F(D)]=F-1[F(D)]=I(D)=D对可执行软件进行加密的过程系如图2所示,用户可将已完成测试的标准软件D,经由函数处理而得到加密函数如下D′=F(D)这个新的加密可执行程式D′,就可以被烧录于外挂储存芯片之上,等候应用。在此,最合理的方法是将加密函数嵌在PC机上可执行的包装软件中。当然还有其它可用的方法,不过成本可能较高。由于这个软件由开发商自己监控,并可自行拟订内部参数,所以加密/解密函数组被盗用或破解的机会极低。在不知加密/解密函数的情况下,因为即使从外挂储存芯片上读出D′文件的内容,还是无法破解原码的内容。
在执行时,即如前述图1所示,集成电路(10)中加入一反函数的解码器(12),由外挂储存芯片(20)读入之D′加密文件,通过设有解密G函数的解码器(12)时发生下列的还原作用G(D′)=G[F(D)]=F-1[F(D)]=I(D)=D因而送至运算处理暨程式执行单元(11)执行的仍是原始可执行软件D。
为便于了解,以下将透过两个简化的具体实施例作进一步的说明实施例一(逻辑运算函数加密)首先,在第一个应用实施例中,系以一个8bit的系统为例,选用对地址总线和数据总线进行配对的異或(XOR)运算作为加密函数,亦即D′=F(D)=XOR(A,D)在此,D是欲保护的密可执行程式,A是可执行程式D个别内容的对应地址集合。F是一个以a0对d0,a1对d1,……a7对d7,bit配对方式进行異或(XOR)逻辑运算函数,其反函数G则为G(D′)=XOR(A,D′)=D适与F函数相同假设一份已经开发完成的可执行软件D,其中某一内容的地址码为16进制中3C,其数据为16进制的6C,故未经加密的数据如以二进位表示系为Dn=01101100其地址则为An=00111100经加密函数異或(XOR)运算后则已经加密的数据为D′n=01010000这份数据被烧录于储存芯片(20)之上,地址为An=00111100的单元中。
又集成电路(10)之解码器(12)中使用異或(XOR)为解密反函数G对前述数据解密,则经加密的数据为D′n=01010000对应地址仍为An=00111100经过異或(XOR)运算后,运算处理暨程式执行单元(11)所收到的内容为Dn=01101100其与原始的可执行软件内容相同,故可供正常执行。
前述加密/解密方法的具体技术内容请参阅图3,4所示,其中图3系以“类”C语言形式表示加密用的后处理软件。图4则为解密函数“G”(“F”函数的反函数)的硬件架构。
在此必须指出,在实际应用时,F/G函数组不局限于異或(XOR)一种,可依用户需要选择开发。即使是異或(XOR)函数也不局限于a0与d0,a1与d1……a7与d7一种配对方式。其它配对方式可依用户所选的参数设置。
实施例二(移位函数加密)在此一实施例中,系以一个4bit的系统为例,选择一种数据内容bit位移方式作为加密函数F,其方法如下d0→d1′d1→d2′d2→d3′d3→d0′其解密反函数G为d0′→d3d1′→d0d2′→d1d3′→d2假设在一已完成测试的可执行软件D中某一位置内容为二进位的0101(依d3d2d1d0顺序排列)。即Dn=dn,3dn,2dn,1dn,0=0101在经过嵌入F函数的加密软件处理后,获得Dn′=F(Dn)=d′n,3d′n,2d′n,1d′n,0=1010并被烧录于储存芯片(20)之上。
当此一内容被集成电路(10)读入后,经过硬件(12)解密反函数G的处理而发生以下变化。
G(D′n)=0101=Dn当运算处理及程式执行单元(11)收到这份指令,因其和原始内容完全一致,故得以顺利执行。
前述加密/解密方法的具体技术内容请参阅图5、图6所示,其中图5系以“类”C语言形式表示以移位函数加密的后处理软件。图6则为以移位法为解密函数“G”(“F”函数的反函数)的硬件结构。
由上述数学模式及具体实施例均可证明此一加密方法简易可行。对CPU/MCU制造厂而言,可向客户提供一份后处理软件(PostProcessor)以供产生于外挂控制软件的储存芯片中的加密程式,然后在集成电路(10)的运算处理暨程式执行单元(11)的前端加入一解密硬件结构,如前述嵌入解密反函数的解码器(12)。该加密用软件及解密用硬件必须配套,而它们供选择用的控制参数也必须配套。至于控制参数的输入与储存,对加密而言,十分方便。因为加密过程是完全由软件在PC等类型的硬件上执行。所以只要留下参数输入的窗口,即可达到目的。但对解密而言,则相对困难,因解密是在CPU/MCU芯片的前端的解码器(12)进行,所以参数必须以一有效方法输入并储存于芯片上。又因为加/解密必须具有一定的复杂性以防被人破解,所以更进一步增加困难度。典型的解密硬件控制参数输入方法如下(其相应的加密软件结构可由此推断出)。
如图7所示,提示一种硬件形式的解密反函数参数设定方式,主要系令数据总线(14)及地址总线(15)共同连接至一接点切换单元(Crosspoint)(16),该接点切换单元(Crosspoint)(16)输出端又连接一逻辑闸(17),逻辑闸(17)输出端系连接至运算处理暨程式执行单元(11)的数据总线;其中,该接点切换单元(Crosspoint)(16)与逻辑闸(17)系分别由一参数设定单元(31)(32)经由控制线(310)(320)所控制。这两个参数设定单元(31)(32)可用来设定并记存反函数的控制参数。目前可用的方法有三种。
第一种方法系如图8所示,系以暂存器方式作为两参数设定单元(31)(32)。另有写入控制电路便利用户自行烧录所选的参数于两参数设定单元(31)(32)之中。实施时由厂方提供含有多个加密函数的后处理软件,在硬件方面则提供由EEPROM等技术构成的参数设定单元(31)(32),可由用户在最终产品出厂前写入以选择不同的解密函数和加密函数。藉此,客户可掌握到最大的加密弹性与保密性,当然其生产成本也相对较高。
第二种方法如图9所示,系先令前述两参数设定单元(31)(32)的个别储存单体(Cell)分别与接地端GND、电源VCC构成接点,俟设定反函数时则以激光修整法(Laser trim)在出厂前选择性的烧掉接地端接点或电源接点,如此即可方便针对不同客户在解码器(12)上设定不同的解密反函数参数;前述方法的优点在成本低,但客户不能随时自由选择加密函数参数。
第三种方法如图10所示,系先令前述两参数设定单元(31)(32)的个别储存单体(Cell)经由熔丝和地端GND及电源VCC连接。如一般可编程逻辑元件(PLD)的结构。这种方法可允许用户在最终产品出厂前,以写码器将熔丝选择性的烧断,以达到选择不同解密函数参数的目的。
由上述说明可知,以往有软件开发业者将软件制成固件(Firmware),根据CPU/MCU制造厂提供的条件,封存于集成电路中,因其生产成本高,存货种类复杂及用户弹性空间较小等问题,不得不朝向外挂方式考虑。然而将控制软件等软件储存在外挂于CPU/MCU之外的储存芯片中(ROM,EEPROM,Flash等),虽可改善前列缺点,但储存芯片中的软件创作透过一般程序即可轻易读出并予复制,对于软件开发业者而言毫无保障,故极少业者采用。经本发明利用数学上的函数与反函数还原的操作原理,以函数对控制软件进行加密,在CPU/MCU内则设占用空间较小的反函数硬件予以解密。由于函数及反函数可由用户以自行选定的逻辑运算实现,故为一容易达到、可让业者放心将控制软件外挂而可有效降低成本之方法。
权利要求
1.一种集成电路外挂软件的加密解密方法,令具执行控制软件功能之集成电路以外挂方式储存其控制软件,其特征在于外挂的控制软件,先经过一个加密函数的处理,再被烧录于通用的储存芯片之上,又在集成电路内部设一以前述函数的反函数为基础的解密单元,专司对自外挂外储存芯片上读取的已加密的控制软件进行解密的功能。
2.根据权利要求1所述的集成电路外挂软件的加密解密方法,其特征在于所述的加密函数为一具有反函数的逻辑函数;输入为原控制软件(隐含其个别内容所占地址),输出为已加密的控制软件,其解密函数为前述加密函数的反函数。输入为前述的已加密控制软件(隐含其个别内容所对应的地址),输出为已还原的控制软件。
3.根据权利要求1所述的集成电路外挂软件的加密解密方法,其特征在于所述的加密函数为一具有反函数的bit位移函数。输入为原控制软件(隐含其个别内容所占地址),输出为已加密的控制软件,其解密函数为前述加密函数的反函数。输入为前述的已加密控制软件(隐含其个别内容所对应的地址),输出为已还原的控制软件。
4.根据权利要求1或2或3,所述集成电路外挂软件的加密解密方法,其特征在于所述加密的装置以通用计算机的软件实施,将选定的加密函数转换为通用计算机,如PC机等的可执行软件,这个可执行软件以所需加密的控制软件数据为输入,并且可能允许用户自行输入或选定一些加密参数,经过运行之后,其输出即为加密控制软件,可以烧录于外挂储存芯片之上。
5.根据权利要求1或2或3,所述集成电路外挂软件的加密解密方法,其特征在于所述加密的装置以专用的软、硬件实施,为将选定的加密函数转换为专用的软、硬件结构,这个结构以所需加密的控制软件数据为输入,并且具有按键、显示屏,或计算机通讯界面,或两者兼有做为人机界面,经过运行后,其输出即为加密控制软件,可以烧录于外挂储存芯片之上。
6.根据权利要求1或2或3,所述集成电路外挂软件的加密解密方法。其特征在于所述解密装置以结合于集成电路上的专用硬件单元实施,一集成电路,其至少由一运算处理暨程式执行单元、一解码器及一地址产生器所组成;一外部储存芯片,其上储存有控制软件,其中解码器是以专用电路构成,其可能的组成可包含有接收切换单元(Crosspoint),逻辑闸电路或其它的数学函数电路等;其执行时的参数可在生产时决定,也可以由控制单元依用户编列的参数在执行时决定;但不论如何组合,它的总体功能必须是所对应的加密函数的反函数,该运算处理暨程式执行单元系透过解码器,数据总线与储存芯片连接,又经地址产生器,地址总线与储存芯片连接。
7.根据权利要求6所述集成电路外挂软件的加密解密方法,其特征在于所述解密装置其组成可由一可执行微码(Micro code)的单元来取代专用硬件单元;所有可能非专用硬件执行的功能,如接收切换单元(Crosspoint),逻辑闸运算,或其它数学函数的运算,或它们的组合功能,都可由执行微码(Micro code)来代替,这个单元也可以允许用户以设定参数的方式来影响微码的执行。
8.根据权利要求6或7所述集成电路外挂软件的加密解密方法,其特征在于所述解密装置的组成可由部份专用硬件,部份微码(Micro code)执行单元联合构成,并且也可能允许用户以设定参数方式来影响执行的方式。
9.根据权利要求6或7或8所述集成电路外挂软件的加密解密方法,其特征在于所述解密装置如允许用户以参数方式影响其执行,这些参数系利用软件方式写入不受断电影响的寄存器之中,得以长期保存,而这些不受断电影响的寄存器(non-volatile)嵌入于集成电路内部。
10.根据权利要求9所述集成电路外挂软件的加密解密方法,其特征在于所述不受断电影响(non-volatile)寄存器的每一个bit在芯片上都各由一个上拉至电源VCC的电阻元件及一个下拉至接地端GND的电阻元件所取代,选定参数的方法是由CPU/MCU厂商在封装前,可以激光修整法(Laser Trim)将每一个bit的其中一个连接烧断,使其成为固定的“0”或者“1”。对不同的客户可以用不同的组合来区分。
11.根据权利要求10所述集成电路外挂软件的加密解密方法,其特征在于所述中上下拉电阻元件的连接线上增加熔丝单元结构,并在芯片上增加选择性烧断熔丝的编程控制电路。这样安排可以让软件开发商在烧录完加密软件后,再利用写码器依设计、烧断CPU/MCU上的选定的熔丝,而达到设定应参数的目的。
12.根据权利要求1或2或3或4或5或6或7或8或9或10或11所述集成电路外挂软件的加密解密方法。其中加/解密函数/反函数的最终选择是由设定后处理软件或硬件的参数,和设定CPU/MCU上的解码器参数而决定,这种参数的选择必须能够保证加密过程与解密过程之间函数与反函数的不可分割关系,这种保证可由一预设的表格或依数学公式发展的程式加以实现。
全文摘要
本发明系关于一种集成电路外挂的加密方法,主要系令中央处理单元(CPU)或微控制器(MCU)等集成电路的控制软件以外挂方式构成,该外挂的控制软件系以一函数进行加密,并在集成电路中内建一对应的反函数进行解密。藉此,集成电路可因控制软件系为外挂,达成简化存货种类、降低生产成本之目的外,且外挂的控制软件亦因前述加密/解密措施可获得周延的保护。
文档编号G06F11/36GK1405678SQ0213499
公开日2003年3月26日 申请日期2002年10月22日 优先权日2002年10月22日
发明者吴坦 申请人:陈少鹏
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1