提高crc加密系统保密性的方法

文档序号:2391448阅读:441来源:国知局
专利名称:提高crc加密系统保密性的方法
发明的背景与简介本发明总的说来涉及密码术,具体地说,涉及一种用计算机辅助技术更难以解密的数字信息加密方法。虽然本发明的用途广泛,但它特别适用于非钥匙开启锁的加密系统,例如,汽车用的非钥匙开启锁。
遥控无钥匙进入车辆和其它用途的密码系统中业已采用循环冗余码(CRC)处理。一般的CRC处理用伽罗瓦域(Galois Field)理论就可分析出来。虽然大部分人都不懂CRC处理,但懂得伽罗瓦域理论的人是不难破解CRC加密方案的。懂这种技术的人就可以例如根据这个理论编制计算机的程序,通过倒转CRC的处理步骤破解加密的数字信息。
本发明采用了一种经改进的方法给数字信息加密,从而使传统的伽逻瓦域理论和计算机化的解密分析实质上无效。采用这种经改进的加密法大大提高了解密数字信息所需的分析过程的复杂程度,从而大大提高了对破坏加密术的抵抗能力。采用这种方法实质上无需增加额外费用,只要将现有的加密系统稍加改装,只要增加处理机的一个时钟周期即可。
本发明经改进的方法是在CRC处理中,引入或插入实域运算或整数环运算(例如带进位的加法运算)。尽管CRC处理是容易用伽罗瓦域分析表示的,但整数环运算却不是轻易地就可变换成伽罗瓦域模型的。因此,如果事先不知道在CRC循环中什么地方应该进行整数环运算,如果事先不知道整数域运算的确切性质,实际上不可能应用传统的伽罗瓦域理论来破解数字信息的密码的。
按照本发明的一个方面,所提供的数字信息加密法是先选取一个掩码,将掩码和数字信息分别在伽罗瓦域中用预定量的比特表示,然后在伽罗瓦域GF(2n)中将数字信息与掩码相乘;这相当于多项式卷积运算,即在伽罗瓦域GF(2)中将数字信息比特中的第一部分与掩码比特中的第一部分相乘和相加,得出第一结式。
接着,经过预定次数的相乘之后,暂停卷积运算。接下去,选取预定比特数的补偿整数,并在整数环中表示该整数连同第一结式,然后对第一结式和补偿整数进行整数环运算,得出第二结式。接着,用第二结式代替第一结式,再次将第二结式和掩码在伽罗瓦域中表示同时恢复卷积运算,用第二结式代替第一结式。恢复卷积运算时是在伽罗瓦域中将第二结式的比特其余部分与掩码的比特的其余部分相乘和相加进行的,由此得出加密数字信息。
要更全面地理解本发明及其目的和优点,可以参阅下面的说明和附图。附图简介

图1是表示线性反馈移位寄存器(LFSR)一个实例的方框图,这有助于理解本发明的原理。
图2是应用伽罗瓦域和整数环中的处理程序对数字信息进行加密的方法的示意图。最佳实施例说明本发明的加密法采用循环冗余码(CRC)对数字信息的消息比特进行加密。上面说过,一般的CRC法加密作用较弱。这是因为CRC法可以表示为伽罗瓦域中的线性运算,而线性运算本来就是比非线性运算更容易分析的。
本发明在CRC法中引入了非线性,方法是在实施CRC处理过程中对整个实域或整数环进行运算。这里使用的“实域”和“整数环”二词实质上是作为同义词使用的。如稍后即将说明的那样,这种技术使加密过程非常复杂,从而使密码分析更加困难。例如整数域加的整数环运算的引用在基本的CRC法上增加了辅助性的加密功能。这实际上提供了两个同时起作用的加密或用密码编码级,实质上只付出一个代价就达到加密的目的。
本发明可供对任意量比特组成的数字信息进行处理。例如,在非钥匙开启的系统中可以用(带保密反馈多项式的)32比特CRC法对诸如存取码之类的32比特分段的数字信息进行加密。CRC法相当于伽罗瓦域GF(2n)中的乘法。CRC可作为移位以及用掩码的“异”运算的32次迭代而予以计算。
为举例说明上述原理,这里就举8比特CRC法的例子。当然,不言而喻,本发明并不局限于此,任何比特数的CRC法都可以实施。参看图1,寄存在寄存器10中的各位顺次分派给标以比特0至比特7的方框中。通常,寄存器10结构成使其从左至右地循环,因而比特7向右移将输入提供给比特6,比特6提供给比特5,如此类推(参与“异”运算的那些比特例外)。如图中所示,比特0移回到7,从而形成一个循环或回路除移位操作外,寄存器10中的数字信息还经过一次或多次“异”运算。图1中,例示的是异运算电路12和14。“异”运算电路12从比特4接收其其中一个输入,从比特0接收其另一个输入。“异”电路12将其出提供给比特3。同样,“异”电路14从比特2和0接收其输入,并将其输出提供给比特1。图1中所示的两个“异”运算仅仅是举例而已,因为,通常可采用任何数目的异运算,从无直到寄存器中的位数(在此情况为8)。此外,“异”运算还可以任何组合方式设在两个毗邻比特之间。因此,图1中所示的将“异”运算设在比特3与4之间和比特1与2之间,仅仅是举例而已。
为给定的加密选取的“异”运算可以将其视为一种掩码,其中掩码比特取1或0,这取决于是否存在“异”运算而定。例如,在图1中,掩码总的用表示16。
表1列出了图1寄存器/掩码组合的移位寄存器的比特模式。表1顶部列出了例示的初始比特模式(表示数字信息的字节或字的一个例子),接着是8个连续迭代或循环各自得出的比特模式。
表1列出了图1线路所有可能有的连续比特模式。由于图1的“异”门不对应于本原多项式,因而图1的线路不是最大长度反馈移位寄存器。观察一下表1就知道该寄存器不是极长的。每一独立栏中最后一个数移位(相当于一个循环)产生该栏顶部的数。在2与14之间有20个不同长度的循环。
表1<
p><p>CRC法提供的按位进行的移位和“异”运算可以看成伽罗瓦域GF(2n)中寄存器与掩码之间的乘法运算。这个运算实际上是一种卷积运算,即表示待加密的数字信息的寄存器比特模式用掩码的模式卷积或折合成掩码的比特模式。
与其进行如表1所示的全循环的移位和“异”运算,本发明认为倒不如在经过预定数的乘法或迭代运算推迟或暂停进行卷积运算。推迟进行CRC卷积处理之前进行的迭代次数可以视为以后对结式解密用的秘密数或关键码。图2中,圆圈18示意示出了CRC卷积处理过程。为举例说明起见,本实例中n次迭代的一个全循环(n为寄存器中的比特数)用在圆圈18内转360度的一整圈表示。因此,在圆弧A所表示的卷积过程的第一部分期间,CRC处理过程从其在12点钟的起始位置向前转到暂停位置(在此情况下为5点钟的位置)。暂停点是任意的,因而暂停可以在全卷循环内选取的任何点执行。
进行卷积处理时,如圆圈18所示的那样,所进行的各种运算可以看成是在伽罗瓦域中进行的,或以伽逻域表示,总的用区域20表示。然而,当达到如22的暂停点时,伽罗瓦域处理过程暂停,其余的处理过程在整数环24中进行。而在整数环中,先前伽罗瓦域各运算(乘法)的中间结式是用实域或整数环法运算的。图2中,中间结式值总的以比特模式26表示。在本最佳实施例中,比特模式26表示。在本最佳实施例中,比特模式26用算术方法与预定数或比特模式28相加,在30处得出和。
整数环运算的一个特点是,进位运算可能出现,也可能不出现,这取决于所加的数字值。就是说,若加的数字是0+0,则不会出现进位,而若加的是数字1+1,则产生进位。任何从最高有效位的进位都忽略不计,如32处所示。
整数环运算完毕后,得出的和如箭头C所示的那样送回伽罗瓦域,这时进行其余的CRC运算,如圆弧D所示。
不言而喻,简单CRC处理的修改方案是很多的。CRC处理暂停和结式送到整数环的确切时间(point)可以在任何预选次数的迭代之后(该预选迭代次数是可以任选的秘密数或关键码)。此外,在实域或整数环中时所加的数或比特模式28也可以是任何秘密数,用作附加的关键码。由于在整数环中进行加法步骤的过程中在中间值的各比特之间可会产生进位,因而这个处理过程相对于在进行CRC处理的伽罗瓦域是非线性的。可以看出,上述处理方法由于只需要履行一个或一些附加的程序指令,而且只要在短短的一个时钟周期内可完成,因而实施起来费用很低。
上述处理过程产生的经改进的加密可以用作密码技术新的基本组成部分,结合起来形成更复杂的加密/解密处理的一部分。举例说,在CRC处理过程中可以进行一次以上的整数环运算从而使任何解密分析变得更为复杂。同样,在CRC处理过程中还可采用任何对整数环进行的保持信息、可逆的单一或组合运算(例如加、减)。有效应用这种处理方法的关键在于,整数环运算必须产生比特之间算术进位可能性的效果,而这方面原来在伽罗瓦域分析中就表现得差劲。同样,对不同的数字结构,例如群、环或域,可以采用两个以上保持信息的可逆运算的任何组合。成功的关键在于,在一个数字结构进行的运算在一个或多个其它结构中本来就未能很好地表现起来。
本发明可应用于软件上。在这方面,本说明书的附录中列出了CRC和逆CRC(解码)处理过程的C码一览表。在附录所规定的代码中,补偿整数(图2中的值28)叫做旋转因子。
下面的分析有助于进一步说明本发明的原理。采用多项式g(x)的n阶p(x),其CRC等于将xnp(x)的余项除以g(x),其中所有多项式系数为0或1,二进制加法为“异”运算,二进制乘法为“与”运算。这可用下式表示(1)其中所有运算应理解为在伽罗瓦域GF(12)中进行的。第k步骤之后的CRC处理用二进制表示,称之为a,其中(2)&Sigma;i=0n=1ai&CenterDot;2i=Rg(x)[XkP(x)]]]>各ai为0或1。将二进制数(旋转因子)b加到a除以各整数得c(3)其中,通常,由于从较低Rg(x)[XnP(x)]阶位的进位ci≠ai+bi。&Sigma;i=011Ci2i=&Sigma;i=0n-1ai2i+&Sigma;i=0n-1bi2i]]>加旋转因子的效果可以通过确定相当于整数运算的伽罗瓦域运算来评估。即确定多项式q(x)必须加到p(x)使得(4)&Sigma;i=0n-1Ci2iRg(x)[Xk(P(x)+q(x))],]]>其中各运算是在GF(2)中进行的。即使旋转因子b是常数,得出的比特模式c也与a和k的值有关,参阅(3)式。由于伽罗瓦域运算中没有进位,因而等效的多项式q(x)也与a和k的值有关,即它不是常数。多项式q(x)是对p(x)进行非线性编码的结果。实际上它以另一个伪随机数的形式出现,而且进一步提高了CRC处理的保密性。
从以上所述可知,本发明提供的数字信息加密方法易于实施,但高度有效,因而用一般的伽罗瓦域分析不能轻易破解数字信息的密码。尽管本发明是就其目前的最佳形式进行说明的,但不言而喻,在不脱离本发明在所附的权利要求书中所述的精神实质前提下是可以对本发明进行修改的。附录<pre listing-type="program-listing"><![CDATA[void CRC(BYTE * val,BYTE * feed,BYTE twiddle){short i,j,flag;int cy;* * */* Perform iterations of a CRC process*/for (j=O;j CRC BITS;j++){/* Shift right &amp; feedback.Note that feedback term MUST*have the bit after the top bit set--this gives a*rotate function even though the field isn't an even-*bvte length.(because the top feedback bit will*always be XORed into a O-bit value,that top bit having*just been vacated by the preceedign ROR_C) */flag=val[O] &amp; 1;cy=O;for(i=(CRC_BYTES)-1;i=O;i**){ROR_C(val[i],cy);if(flag) val[i]=val[i]^feed[i];}if(j==TWIDDLE_ITER){/*Add in twiddle factor byte-wise(easy to express in C)/*/*Could also do it as a large add-with-carry across all bytes/*for(i=(CRC_BYTES)-2;i=O;i**) val[i]=val[i]+twiddle[i];}}* * *}void reverse_CRC(BYTE *val,BYTE * feed,BYTE twiddle){short i,j,flag;int cy * * * /*Perform iterations of a reverse CRC process*/ for(j=O;j CRC_BITS;j++) {/*compute cy-in bit from cu rrent highest bit*/ flag=cy=val[CRC_BYTES-1] &amp; CRC_TOP_BIT; /*Shift left &amp; feedback.Note that this is the same *feedback value as the forward CRC process,but the *opposite shifting direction (the alternative is to use *the inverse polynomial and shift the same way**but *that would complicate downloading the feedback terms *from the transmitter to the receiver).*/ if(j==(CRC_BITS-TWIDDLE_ITER-1)) {/*subtract out twiddle factor byte-wise*/ for(i=O;i CRC_BYTES-1;i++) val[i]=val[i]-twiddle[i]; } for(i=O;i CRC_BYTES;i++) {if(flag)val[i]=val[i]^feed[i]; ROL_C(val[i],cy}; } }* * *}]]></pre>
权利要求
1.一种加密数字信息的方法,其特征在于,它包括下列步骤选择由预定量的比特组成的掩码;将数字信息和掩码在伽罗瓦域中表示出来,并开始用该掩码对数字信息进行卷积运算,即在伽罗瓦域GF(2)中将第一预定量的比特的第一部分与第二预定量的比特的第二部分相剩和相加,得出第一结式;经过预定次数的中间步骤或移位之后暂停所述卷积运算;选取第三预定量的比特的补偿整数,并在第一结式与所述补偿整数之间进行整数环运算,得出第二预定量的比特的第二结式;用所述第二结式取代所述第一结式;在伽罗瓦域中表示第二结式和掩码,并用所述取代所述第一结式的第二结式恢复所述卷积运算,即在伽罗瓦域GF(2)中将第二结式第一预定量的比特的剩余部分与掩码第二预定量的比特的剩余部分相乘和相加得出加密数字信息。
2.如权利要求1所述的方法,其特征在于,所述数字信息是存取码。
3.如权利要求1所述的方法,其特征在于,所述整数环运算是整数加法运算。
4.如权利要求1所述的方法,其特征在于,所述整数环运算包括进位运算。
5.如权利要求1所述的方法,其特征在于,所述整数环运算以数据相关方式改变第一结式域的比特。
6.如权利要求1所述的方法,其特征在于,所述卷积运算用循环冗余码法进行。
7.如权利要求1所述的方法,其特征在于,它还包括下列步骤选取第一值;用所述第一值确定中间步骤或移位的所述预定次数,并提供所述第一值作为破解所述加密数字信息的关键码。
8.如权利要求1所述的方法,其特征在于,它还包括下列步骤选取第一值;进行所述整数环运算时采用所述第一值,并提供所述第一值作为破解所述加密数字信息的关键码。
9.如权利要求1所述的方法,其特征在于,所述整数环运算是整数加法运算,所述补偿整数的比特数比所述第一结式少。
10.如权利要求1所述的方法,其特征在于,所述整数环运算是整数加法运算,且将从该加法运算得出的任何进位比特忽略不计。
全文摘要
一种数字信息的加密方法,该方法是先对CRC进行预选次数的迭代或部分卷积运算,即在伽罗瓦域中与一个掩码相乘。在完成CRC运算之前,对中间结式进行整数环运算,例如加法,从而由于可能的算术进位运算而给伽罗瓦域引入非线性。整数环运算之后,继续进行伽罗瓦域的CRC处理直到完毕为止。得出结果的是不容易用伽罗瓦域法破解的加密值。
文档编号G09C1/00GK1130453SQ94193263
公开日1996年9月4日 申请日期1994年11月7日 优先权日1993年11月5日
发明者小·P·J·库曼, A·M·弗因 申请人:联合工艺汽车公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1