专利名称:生成加密数据流密码的方法和装置的制作方法
背景技术:
I.发明领域本发明涉及加密。本发明尤其涉及一种生成加密数据流密码的方法和装置。
II.相关技术领域的描述加密是一种处理过程,通过该过程,采用随机处理对数据进行运算,从而使除特定用户外的所有的用户都不能理解这些数据。对数字化的数据进行加密的一种方法是通过采用数据流密码来完成的。数据流密码是采用要加密的数据以及由加密规则所产生的伪随机位数据流(或加密位数据流)并且通常采用异或(XOR)运算将它们合并来进行工作的。解密是这样一种简单的处理过程,它生成同样的加密位数据流,并采用相应的运算操作从加密的数据中去除加密位数据流。如果XOR运算是在加密一侧进行的,那么在解密侧也进行相同的XOR运算。对于保密的加密处理过程,加密位数据流必须是在计算上较难预测的。
用于生成伪随机数数据流的许多技术是基于阶数为2的伽罗瓦有限域上线性反馈移位寄存器(LFSR)的。这是2n阶伽罗瓦有限域在n是正整数时的特殊情况。当n=1时,伽罗瓦域元素包含0和1的数据位值。寄存器是通过使数据位移位一个数据位位置,并计算新的输出数据位来更新的。将新的数据位移位到寄存器内。对于斐波那契寄存器,输出数据位是寄存器中的数据位的线性函数。而对于伽罗瓦寄存器,许多数据位是按照刚刚从寄存器中移位出来的输出数据位来更新的。从数学上说,斐波那契寄存器和伽罗瓦寄存器的结构是等效的。
生成伪随机数数据流即移位和数据位获取的运算操作在硬件上没问题,但在软件或采用通用处理器或微处理器进行的其他实施方式上却存在一些难度。存在的难度在移位寄存器的长度超过用于生成数据流的处理器中寄存器的长度时而增加。另外,当n=0时,每一组运算操作仅生成一个输出数据位,从而处理器的利用率很低。
采用数据流密码的典型的应用场合是无线电话。典型的无线电话通信系统是码分多址(CDMA)系统。CDMA系统操作运行可参见已转让给本发明受让人的美国专利4,901,307,该专利的标题是“SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATIONSYSTEM USING SATELLITE OR TERRESTRIAL REPEATERS”。已转让给本发明的受让人的美国专利5,103,459中进一步揭示了一种CDMA系统,该专利的标题是“SYSTEMAND METHOD FOR GENERATING SIGNAL WAVEFORMS IN A CDMA CELLULAR TELEPHONESYSTEM”。另一种CDMA系统包括GLOBALSTAR通信系统,用于采用低地轨道卫星进行的全球通信。其他的无线电话系统包括时分多址(TDMA)系统和频分多址(FDMA)系统。可以将CDMA系统设计成满足“双模式宽带扩谱蜂窝系统的TIA/EIA/IS-95移动站-基站兼容性标准”,该标准在本文中简称为IS-95标准。同样,可以将TDMA系统设计成满足TIA/EIA/IS-54(TDMA)标准,或者对于欧洲全球系统来说满足移动通信(GSM)标准。
由于远端站中缺乏计算能力,而使无线电话中数字化话音数据加密受到了影响。这使得诸如TDMA标准中所使用的话音专用屏蔽加密处理能力较弱,并使生成如GSM标准中所使用的A5密码的数据流密码的硬件受到影响。硬件数据流密码的缺点是附加的硬件成本,以及当加密过程需要改变时,所花的时间及费用具大。由于无线电话系统和数字电话中许多的远端站都包含有微处理器和存储器,速度快并且采用很少存储器的数据流密码很适合于这些应用场合。
发明概述本发明是一种生成加密数据流密码的新的、改进的方法和装置。按照本发明,设计循环关系(或称之为递归关系),使之在比GF(2)更大的有限域上进行运算操作。可以采用循环缓存器或使用滑动窗口来实现形成循环关系的线性反馈移位寄存器。在典型的实施例中,有限域元素的运算是用查询表来进行的。采用一个或组合的非线性处理过程,可以得到一个非线性输出。可以将数据流密码设计成支持多层密钥控,以满足数据流密码的使用要求。
本发明要解决的问题是,采用在处理器中实现起来较简单的结构来生成加密数据流密码。特别是,可以通过选择更适合于处理器的有限域,来实现更为有效的结构。可以选择循环关系的元素和系数,来配合处理器的字节或字的长度。这就使得可以由处理器对元素进行有效的运算。在典型的实施例中,所选择的有限域是具有256个元素(GF(28))的伽罗瓦域。这使得循环关系的元素和系数占用存储器的一个字节,而使得可以进行有效的变换。另外,使用大的有限域减少了循环关系的阶数。对于有限域GF(2n),对相同状态数进行编码的循环关系的阶数k减少了n倍(对于典型的GF(28),是8倍)。
本发明要解决的另一个问题是采用查询表来进行域的乘法。在该典型的实施例中,可以通过对两个运算对象中的每一个运算对象取对数、将对数值相加并对混合的对数值取指数,而在域中(对非零元素)进行乘法。可以用一种不可约多项式,来生成对数表和指数表。在本典型实施例中,表格是预先计算并存储在存储器中的。同样,可以用一种简单的查询表来进行常数系数的域计算。另外,可以用不可约多项式来预先计算表格,并将表格存储在的存储器内。
本发明再要解决的问题是,采用一个或混合的下述处理过程,去除线性反馈移位寄存器输出中的线性关系不规则扰动(有时也称为抽取)、非线性函数、多个移位寄存器以及混合寄存器的输出、一个寄存器上的变量反馈多项式以及其他的非线性过程。在本典型实施例中,可以采用非线性输出来随机控制移位寄存器的扰动(stuttering)。另外,通过对移位寄存器内被选择的元素上进行非线性运算,可以得到非线性输出。此外,可以将非线性函数的结果与一组常数进行异或,而使非线性输出位出现不可预计的转化。
本发明的要解决的再一个问题是,用循环缓存器或滑动窗口来构成线性反馈移位寄存器。采用这种循环缓存器或滑动窗口结构,缓存器中的元素是不移位的。相反,采用指针或指示符来给出最近计算的元素的位置。指针随着进行新元素的计算而移动,并移位到循环缓存器或滑动窗口内。当指针到达边缘时,指针绕回。
本发明再要解决的问题是提供一种具有多层密钥控能力的数据流密码。在该典型实施例中用一个密钥首先使移位寄存器的状态初始化。对于某些以帧的方式进行数据传送的通信系统,可以为每一帧生成一个数据流密码,从而擦除的或溢出的序列帧不会打断加密过程。用帧密钥初始化过程,可以为每一帧,使第二层密钥控过程初始化。
本发明再要解决的问题是,使用最大长度的循环关系,而使得序列复盖了重复前最大数量的状态。
本发明还要解决的问题是,采用清晰配对差异的循环关系或输出等式。清晰配对差异是,当用来实现循环关系的移位寄存器出现移位时,无论是在循环关系或非线性输出等式中,移位寄存器中不会出现特定元素对使用过两次的情况。这种特性就从输出等式的结果中去掉了线性关系。
本发明还要解决的问题是,在具有清晰配对差异的同时,按照应用的要求,有选择地使密码保密性以及计算效率为最佳。
再有,本发明要解决的问题是,提供一种方法,使加密过程的延迟不会超过预定的界限。为此,对加密延迟进行测量,如果估计的延迟超过了预定的阈值,则采用第二种加密方法,来限制加密操作的累计延迟。
附图简述在参照附图阅读了本发明的详细描述以后,读者将会更清楚地了解本发明的特征、目的和优点。图中,相同的标号所表示的意义相同。
图1是本发明典型实施例循环关系的方框图;图2是采用处理器的数据流密码发生器的典型方框图;图3A和3B分别表示时刻n和时刻n+1时循环缓存器内容的图;图3C表示滑动窗口内容的图;图4是本发明典型数据流密码发生器的方框图;图5是本发明典型密钥初始化过程的流程图;图6A是本发明典型每一帧初始化过程的流程图;图6B是本发明第二种典型每一帧初始化过程的流程图;图7是本发明第二种典型数据流密码发生器的方框图;图8是本发明第三种典型数据流密码发生器的方框图;图9是本发明用于限制加密延迟通常实施结构的方框图;图10是本发明用于限制采用随机抽取或扰动的加密密码中的加密延迟的一种通用结构的方框图;图11是本发明用于限制采用图7所示修改形式的随机抽取或扰动的加密密码中的加密延迟一种通用结构的方框图。
较佳实施例的详细描述线性反馈移位寄存器(LFSR)是基于伽罗瓦域上的循环关系的,这里的输出序列由下面的循环关系定义Sn+k=Ck-1Sn+k-1+Ck-2Sn+k-2+…+C1Sn+1+C0Sn(1)式中,Sn+k是输出元素,Cj是常系数,k是递归关系的阶数,而n是时间指数。状态变量S和系数C是基础有限域的元素。等式(1)有时也用本说明书中忽略的常数项来表示。
图1中示出了等式(1)中递归关系的典型实施方式的方框图。对于阶数为k的递归关系,寄存器12含有k个元素Sn至Sn+k-1。将这些元素提供给伽罗瓦域乘法器14,将这些元素与常数Cj相乘。从乘法器14得到的乘积提供给伽罗瓦域加法器16,将乘积加和,给出输出元素。
对于n=1,GF(2)的元素包含一个数据位(0值或1值),而等式(1)的执行需要许多次按数据位进行的运算。这时,由于是采用设计用来对字节或字大小的对象进行计算的处理器来对一个数据位进行许多次运算的,所以采用通用处理器来构成递归关系是低效率的。
本发明中,线性反馈移位寄存器是设计用于对大于GF(2)的有限域进行计算的。特别是,通过选择更适合于处理器的有限域,可以构成更有效的结构。本实施例中,选择的有限域是具有256个元素(GF(28))的伽罗瓦域,或具有2n个元素的伽罗瓦域,这里,n是处理器的字长。
在本较佳实施例中,采用的是具有256个元素(GF(28))的伽罗瓦域。这就使得递归关系中的每一个元素和系数占据存储器的一个字节。可以由处理器更有效地进行字节运算。此外,对相同数量的状态进行编码的递归关系的阶数k减少了n倍,对于GF(28)来说是8倍。
本发明中,采用最大长度的递归关系可以得到最佳的结果。最大长度指的是在重复前输出序列的长度(寄存器的状态数)。对于阶数为k的递归关系,最大长度是Nk-1,这里,N是基础有限域中的元素数,并且在本较佳实施例中,N=256。状态全部为0是不允许的。
图2中示出的是采用处理器的数据流密码发生器的典型方框图。控制器20连接到处理器22,并且包含一组指示处理器22进行操作的指令。所以,控制器20可以包含一个软件程序或一组微码。处理器22是一个执行发生器所需的运算的硬件。处理器22可以是一个微控制器、微处理器,或者是设计用于执行本文中的功能的数字信号处理器。存储器元件24连接到处理器22,并用来构成线性反馈移位寄存器,并储存将在下文中描述的预计算表和指令。存储器元件24可以是用随机存取存储器或其他设计用于执行这里所描述的功能的存储器件构成的。指令和表格可以存储在只读存储器内,只有用于寄存器本身的存储器才需要在算法的执行期间进行修改。
I.生成非线性输出数据流采用线性反馈移位寄存器用于数据流密码是很难恰当执行的。这是因为可以利用输出数据流中剩余的线性关系得到某一时刻的寄存器状态。接着,按照需要,可以使寄存器向前或者向后,使输出数据流恢复。可以采用几种技术,用线性反馈移位寄存器来生成非线性数据流密码。在本典型实施例中,这些非线性技术包含寄存器的扰动(无法预计的抽取),对寄存器的状态采用非线性功能,采用多个寄存器和寄存器输出的非线性组合,在一个寄存器上使用变量反馈多项式,以及其他的非线性过程。这些技术中的每一种技术描述如下。某些技术是通过举例来说明的。也可以采用其他的技术来生成非线性数据流,这些技术也包括在本发明的范围内。
扰动是这样一种处理过程,即,以可变的和不可预计的方式对寄存器实行时钟控制。扰动实施简单,并且能给出良好的结果。扰动时,在数据流密码处是不提供与寄存器的某些状态相关的输出的,因此,就更难从数据流密码来重新构筑寄存器的状态。
对移位寄存器的状态采用非线性函数也可以给出良好的结果。如等式(1)所定义的那样,对于某一递归关系,从寄存器状态的线性函数和系数,产生输出元素。为了提供非线性关系,可以从寄存器状态的非线性函数中生成输出元素。特别是,可以采用对通用处理器上的字节或字的长度数据进行运算的非线性函数。
采用多个移位寄存器并以非线性方式将寄存器的输出组合起来,可以给出良好的结果。可以以硬件的方式容易地构成多个移位寄存器,这时所添加的费用是最少的,并且可以并行地操作移位寄存器,以保持相同的操作速度。为了能在通用处理器上实施,由于可以以固定的时间来对更大的移位寄存器进行更新,可以采用执行与多个移位寄存器的功能相似的功能的单个更大的移位寄存器(不降低整体速度)。
采用变量反馈多项式在一个寄存器上以不可预计的方式进行变更可以给出良好的结果。不同的多项式可以以随机的顺序互换,也可以以随机的方式来改变多项式。如果设计得当,这种技术的实现可能会很简单。
II.更大阶数有限域元素的运算操作伽罗瓦域GF(28)含有256个元素。伽罗瓦域GF(28)的元素可以以几种不同方式中的一种方式来表述。一种共同的并且是标准的表述是从具有阶数小于8的所有多项式的系数模2中形成所述数据域。即,数据域的元素可以用具有数据位(a7,a6,…a0)的字节来表述,代表下面的多项式a7x7+a6x6+…+a1x+a0(2)数据位也称为是多项式的系数。可以通过相应系数(a7,a6,…a0)中每一个系数加法模2来执行由等式(2)所代表的两个多项式的加法运算。换句话说,通过对两个字节进行异或计算,可以实现对两个字节的加法运算。加法恒等式是多项式具有全0的系数(0,0,…,0)。
通过将普通的多项式与模2系数相乘,可以在数据域中进行乘法运算。然而,阶数为n的两个多项式相乘给出一个阶数为(2n-1)的多项式,该多项式需要减小为阶数为n的多项式。在典型的实施例中,通过将合成多项式除以一个不可约多项式,去掉商,并且保留余数作为约减的多项式,可以来实现多项式的约减。不可约多项式的选择改变了将编组内元素变换为存储器中的被编码的字节,但不会影响实际编组的运算操作。在典型的实施例中,选择的阶数为8的不可约多项式是x8+x6+x3+x2+1(3)也可以采用其他阶数为8的不可约首一多项式,这也在本发明的范围内。乘法单位元是(a7,a6,…a0)=(0,0,…,1)。
在通用处理器上进行多项式乘法和后续的约减运算是较复杂的运算。然而,对于具有中等数量元素的伽罗瓦域,这些运算操作可以通过查询表以及更简单的操作来完成。在本典型实施例中,数据域中(非0运算)的相乘可以通过对两个运算对象中的每一个运算对象取对数、加入对数值模255并对混合的对数值取指数来完成。可以将约减组合在查询表内。
可以象下面所描述的那样来生成指数表和对数表。首先,确定乘法子编组GF(28)的生成符g。这时,字节值g=2(代表多项式x)是一个生成符。表1中的指数表是i=0,1,…,28-1时,值gi的256个字节的表。当gi(看作是整数)小于256时,指数值如表1中第一行开头的8个表值所示的那样。因为g=2,所以表中的每一个表值是相邻左边的表值的2倍(考虑到表1中绕回到下一行)。但是,当每一gi大于255时,指数由等式(3)中所给出的不可约多项式约减。例如指数x8(第一行,第九列)由不可约多项式x8+x6+x3+x2+1约减,而产生余数-x6-x3-x2-1。该余数等效于模2运算的x6+x3+x2,在表1中表示为77(26+23+22+1)。重复该过程,直到当所有的指数i=0至255都计算了gi为止。
在定义了指数表以后,可以计算对数表,作为指数表的逆。在表1中,对于采用不可约多项式得到的每一个指数i,有一个唯一的指数值gi的对应关系。对于表1,映射是i_2i,所以第i个位置上储存的值是2i。对两边取log2对数,得到下面的结果log2(i)_i。这两种变换表示,如果指数表中第i个位置上是用作对数表的指数的,那么该指数的对数是指数表的索引。例如,对于i=254,如表1中最后一行、第5列所示的那样,指数值2i=2254=166。两边取log2对数,得到254=log2(166)。所以,对数表中索引i=166中的值设置为254。重复该过程,一直到变换了对数表中所有的值为止。0的对数是一个未定义数。在本典型实施例中,0用作占位符。
在定义了指数表以及对数表以后,数据域中(非零元素)的乘法可以通过查询对数表中的两个运算对象的对数、用模255将对数值相加以及通过查询指数表对混合的对数值取指数幂来进行。因此,数据域中的相乘可以通过三次查询操作和一次舍位相加来进行。在典型的伽罗瓦域GF(28)中,每一表格是255个字节长,并且可以预先计算和存储在存储器内。在本典型实施例中,对数表的0位置是不使用的,从而无需从索引中减去1。注意,当无论哪一个运算对象是0时,对数表中相应的值并不代表实际值。为了给出正确的结果,在按照所述的方法进行乘法之前,必须对每一运算对象进行测试看看是不是0,如果是0,则结果就是0。
为了用递归关系从线性反馈移位寄存器中产生输出元素,由于系数Cj在等式(1)中是常数,那么情况就更简单了。为了进行有效的实施,只要有可能,就应当将系数选择为0或1。当Cj是除0或1以外的一些值时,对于乘法ti=Cj·i,可以预先计算一个表格,这时,i=0,1,2,…,28-1。这时,乘法运算可以用一次表格查询来进行,而无需进行测试。这样的表格是固定的,并且可以存储在只读存储器内。
表1-指数表
表2-对数表
III.存储器结构在采用硬件来实施的时候,使数据位移位是一个简单而有效的操作过程。采用处理器和比起处理器的寄存器更大的移位寄存器使得使数据位移位是一个非常低效的递归过程。当要移位的单元是字节或字的时候,移位就更简单了,这是因为字节之间是没有进位的。但是,移位过程仍然是一个递归、低效的过程。
在典型的实施例中,线性反馈移位寄存器是用循环的缓存器或滑动窗口来实现的。图3A和3B中分别示出了在n时刻和n+1时刻循环缓存器24a中内容的图。对于循环缓存器24a,移位寄存器中的每一个元件是存储在存储器中的相应的位置处的。一个索引或指示符30保留了图3A中存储器如Sk-1中储存的最新元素的储存位置。如图3B所示,在时刻n+1,计算新的元素SK,并存储在存储器中最老的元素S0处。因此,所进行的不是使存储器中的所有元素移位,而是将指示符30移位到新元素Sk的储存位置上。当指示符30到达循环缓存器24a的末端时,将其复位到开头的地方(如图3A和3B所示)。这样,循环缓存器24就象是一个圆,而不是一条直线。
如图3A和3B所示,循环缓存器24a可以从左到右移位,或者从右到左移位。相应地,如图3A和3B所示,指示符30从左到右移动,或者从右到左移动。移位方向的选择是一种实施风格,并不会影响输出结果。
为了按照递归关系产生输出元素,通常要求从存储器中得到一个以上的元素。可以用一个单独的指示符来表示与每一所要求的元素相关的储存位置,而指示符在使寄存器移位时被更新。也可以根据需要,从指示符30,计算与每一所需元素相关的储存单元。由于每一元素与储存单元有一个一一对应的变换关系,通过(按照递归关系)确定该元素与最新元素的偏差、在指示符30中加入该偏差,以及对被更新的指示符所表示的储存单元进行寻址,可以得到某一特定的元素。由于存储器的循环特性,被更新的指示符的计算是通过对指示符30的偏差的相加模k来确定的。当k是2的幂时否则在处理器上会是一种低效运算操作。
在本较佳实施例中,移位寄存器是用如图3C所示的滑动窗口来实现的。滑动窗口24b的长度至少是循环缓存器24a的两倍,并且包含相邻排列的两个循环缓存器32a和32b。循环缓存器32a和32b中的每一个就象是上述循环缓存器24a。循环缓存器32b完全与循环缓存器32a相同。在正常操作时,缓存器32b含有一些有意义的值。接着,根据缓存器32b中的值,计算缓存器32a中储存的值。因此,移位寄存器中的每一个元素存储在存储器中的两个相应的位置处,循环缓存器32a和32b各有一个。指示符34保留了循环缓存器32a中储存的最新元素的储存位置,即,图3C中的Sk-1。在本典型实施例中,指示符34在滑动窗口24b的中间部分开始,从右移动到左,并且在到达左边结束部分的时候再恢复到中间位置。
从图3C可以看到,不管指示符34出现在循环缓存器32a的什么地方,前面的k-1个元素可以被寻址至指示符34的右边。因此,为了按照递归关系对移位寄存器中的某一元素进行寻址,将k-1或更小的偏差加到指示符34上。由于被更新的指示符总是指向指示符34的右侧的,并且具有一定的计算效率,所以无需进行加法模k。对于这种结构,滑动窗口24b的长度任意,至少是循环缓存器24a的两倍,并且忽略所有多余的字节。另外,更新时间是固定的,并且较短。
IV.基于GF(28)上LFSR的典型数据流密码可以通过基于GF(28)上的线性反馈移位寄存器的典型数据流密码发生器来很好地描述本发明。下面描述的数据流密码采用上述在阶数为8的伽罗瓦域上的字节运算,在伽罗瓦域上,分别具有相加和相乘的_和_的表述。在本典型实施例中,表格查询是用于与常数C进行相乘的。在本典型实施例中,滑动窗口用来进行移位寄存器的快速更新。
典型发生器的方框图如图4所示。在本典型实施例中,线性反馈移位寄存器52是17个8位字节(或136个数据位)长,使得移位寄存器52能够有2136-1(或者约为8.7×1040)个状态。整个寄存器为0的状态不是一种有效的状态,不会在任何一种状态中出现这种状态。以特定的非零元素数,按递归关系更新寄存器52的时间是常数,与寄存器52的长度无关。所以,可以在存储器中额外字节的标定成本下,来实现添加寄存器52的长度(对于更高阶的递归关系来说)。
在本典型实施例中,按照下面的递归关系来更新线性反馈移位寄存器52Sn+17=(100Sn+9)Sn+4(141Sn) (4)这里,运算是定义在GF(28)上的,_是由伽罗瓦加法器58所表示的两个字节的异或运算,而_是伽罗瓦乘法器54所代表的多项式模乘法(见图4)。在本典型实施例中,对系数56的模相乘是如上所述采用对预计算表进行字节表格查询来进行的。在本典型实施例中,用等式(3)所定义的不可约多项式来计算多项式模乘法表。将等式(4)中递归关系选择为最大的长度、具有极少的非零系数,从而所使用的移位寄存器元素不同于下述非线性函数所使用的移位寄存器元素。
在本典型实施例中,为了掩饰移位寄存器52的线性特征,采用上述两种技术,即扰动和采用非线性函数。采用的其他的非线性技术如下所述。在本典型实施例中,通过在多个移位寄存器52元件上进行非线性运算,来引入非线性特征。在本典型实施例中,用非线性函数将移位寄存器52中的四个元件组合起来。典型的非线性函数如下所述Vn=(Sn+Sn+5)(Sn+2+Sn+12) (5)这里,Vn是非线性输出(或发生器输出),_是由算术加法器60所代表的加法舍位模256,_是由模乘法器62所代表的乘法模257,并且将在下文中描述。在本典型实施例中,所使用的四个字节是Sn,Sn+2,Sn+5和Sn+12,这里,Sn是按照等式(4)中的递归关系而在序列中最早计算的元素。选择这些元素,从而当寄存器移位时,在两个发生器输出的计算中不会使用两个元素。这些元素之间按对计算的距离是明显不同的值。例如,Sn+12是不与Sn+5、Sn+2以及Sn组合的,因为它是通过寄存器52移位的。这一特性称作是“全正差值组(full positive difference set)”。
简单的字节与结果舍位模256相加由数据位之间的进位而在GF(28)中是非线性的。在本典型实施例中,寄存器中的两对元素{(Sn和Sn+5)和(Sn+2和Sn+12)}用加法模256组合起来,而产生两个中间结果。但是,由于最小有效位是没有进位输入的,并且仍然是线性组合在一起的,因而加法模256是不理想的。
另一种在处理器上可以方便地进行计算的非线性函数是乘法。但是,将普通的乘法舍位成只有一个字节不可能给出很好地结果,这是由于乘法模256因结果不是很好分布在数据域中的而不会形成一个编组。对素数257取整数模的一组相乘的数据域是可以使用的。这一数据组包含在1到256范围内的整数,带有分组运算是乘法约减模257。注意,0值是不会出现在该编组内的,但256值会出现在编组内。在本典型的实施例中,256值可以用0的字节值来表示。
一般说来,处理器可以有效地执行乘法指令,但许多的处理器却不能执行或者说是有效地执行除法或取模运算。所以,模约减257可以代表一个性能颈瓶。但是,可以用计算模2n,来计算约减模257,在n=8时在公共处理器上有效的。可以看到,对于在1到216-1范围内的值X(这里,X是两个第8阶运算对象相乘的结果),约减模257可以计算为X257=X256-X256 257 ----(6)]]>式中,X257是X的约减模257,而X256是X的约减模256。等式(6)表示,一个16位的数的约减模257可以通过从8个最小有效位(X256)中减去8个最大有效位(X/256)而得到。相减的结果在-255和255之间,并且可以是负值。如果结果是负值,则可以通过加上257而将其调节到正确的范围内。在另一种实施例中,采用包含65,536个元素而每一元素为8个数据位宽来执行约减模257运算。
两个中间结果的相乘是可以利用的许多非线性函数中的一个。采用查询表,也可以执行其他的非线性函数,如曲折函数或者在将它们组合起来之前对字节值进行置换。本发明指出使用各种非线性函数,以产生非线性输出。
在本典型实施例中,采用扰动来注入附加的非线性关系。可以采用从上述线性反馈移位寄存器的状态得到的非线性输出来重新构筑移位寄存器的状态。这种重新构筑由于不代表发生器输出处的某些状态并且是以不可预计的方式选择的而变得更加困难。在本典型实施例中,采用非线性输出来确定输出数据流中会出现的非线性输出的后续字节。当启动发生器时,第一输出字节用作扰动控制字节。在本典型实施例中,将每一个扰动控制字节分成四个数据位对,首先使用最小有效位。当已经使用了全部四个数据位对的时候,从发生器得到的下一个非线性输出字节用作下一个扰动控制字节,等等。
每一对扰动控制数据位可以取四个值中的一个值。在本典型实施例中,表3中列出了每一对值中执行的动作。
表 3
如表3所示,在本典型实施例中,当数据对值是(0,0)时,使寄存器循环一次,但不产生输出。寄存器的循环表示按照等式(4)进行下一个序列输出的计算,并使新的元素移位到寄存器内。随后,用下一个扰动控制对确定下一步要进行的动作。
在本典型实施例中,当数据对值是(0,1)时,使寄存器循环,并按照等式(5)来产生非线性输出。使非线性输出与常数(01101001)2异或,并提供结果作为发生器输出。接着,使寄存器再次循环。图4中,由异或门66执行异或功能处理,并由多路复用器(MUX)64用来自缓存器70的扰动控制数据位对来选择常数。将异或门66的输出提供到转换器(switch)68,由它按照扰动控制数据位对的值提供发生器输出和用于扰动控制的输出字节。扰动控制的输出字节被提供到缓存器70。
在本典型实施例中,当数据位对值是(1,0)时,使寄存器循环两次,并给出按照等式(5)产生的非线性输出,作为发生器输出。
在本典型实施例中,当数据对值是(1,1)时,使寄存器循环,并按照等式(5)产生非线性输出。接着使非线性输出与常数(11000101)2进行异或,给出结果作为发生器输出。
在本典型实施例中,选择用在上述步骤中的常数,使得当产生发生器输出时,使输出中有一半的数据位相对于其他扰动控制对产生的输出被交换。对于扰动控制对(1,0),可以将非线性输出看作是与常数(000000000)2的异或。所以,任意三个常数之间的海明Hamming距离是4。数据位变换还屏蔽了发生器的线性关系,并阻碍了根据发生器的输出对状态进行的重新构筑。本发明支持多层密钥控制结构。支持多层密钥控制结构的数据流密码特别适用于数据是在帧中发送出去的无线通信系统,这些数据帧有可能在接收中出现错误或失序。下面将描述典型的二层密钥控制结构。
在本典型实施例中,采用一个密钥来使发生器初始化。使用密钥来使发生器在序列中有一个不可预计的跳跃。在本典型实施例中,密钥的长度是4到k-1个字节(或者对于阶数为17的典型递归关系为32到128个数据位)。最好不要采用小于4个字节的密钥,这是因为初始随机化是不合适的。也可以采用大于k-1个字节的密钥,但这样有些浪费,并且必须小心,使得密钥的值不会使寄存器状态被设置成全0,这是一种不会随当前限制而出现的状态。
典型密钥初始化过程的流程图如图5中所示。过程在方框110处开始。在本典型实施例中,在方框112处,开始时,用斐波那契数模256来使移位寄存器的状态初始化。所以,分别用1,1,2,3,5,8等等,使元素S0,S1,S2,S3,S4,S5等等初始化。尽管采用的是斐波那契数,但可以采用在伽罗瓦域中不是线性相关的任何一组非零数来使寄存器初始化。这些数不应当再具有可以用来重新构筑寄存器的状态的线性关系。
接着,在方框114处,将循环数n设置成零。接着,密钥初始化进入一个循环。在该循环的第一个步骤中,即,在方框116处,将密钥材料中第一个不用的字节加到Sn上。加上密钥材料使得发生器在序列中进行了一次不可预计的跳跃。接着,在方框118处,使密钥移位一个字节,从而删去方框116中所使用的字节。随后,在方框120处,使寄存器循环。方框116和120的组合有效地进行下面的计算Sn+17=(100Sn+9)Sn+4(141(SnK)) (7)这里,K是密钥材料第一个不用的字节。循环数n在方框122处递增。接着,在方框124处,判断是否使用了所有的密钥材料。如果回答是否,那么过程就回到方框116。否则,过程继续进行到方框126。
在本典型实施例中,在方框126处,将密钥的长度加到Sn上。密钥长度的添加使得发生器在序列中出现另外的跳跃。随后,过程进入第二个循环。在第二个循环中的第一个步骤中,在方框128处,使寄存器循环。循环指数n在方框130处递增,并且在方框132处,将其与发生器的阶数k比较。如果n不等于k,那么过程就回到方框128。否则,如果n等于k,那么过程就继续进行到方框134,将发生器的状态储存起来。接着,过程在方框136处终止。
除了密钥以外,本发明中还可以使用第二密钥。第二密钥不能被看作是保密的,但却是用在典型的无线电话系统中产生每一数据帧的唯一的密码。这就确保了擦除的帧或失序的帧不会使信息流中断。在本典型实施例中,数据流密码以4个8位码无符号的整数的形式来接受每一帧密钥,称作是帧密钥。每一帧密钥初始化与上述密钥初始化的相似的,但却是为每一数据帧而进行的。如果使用数据流密码使得没有必要使用每一帧密钥信息,例如,对于一可靠线路上的文件转发,那么每一帧初始化过程是可以略去的。
采用密钥的典型每一帧初始化过程的流程图如图6A所示。该过程在方框210处开始。在本典型的实施例中,在方框212处,用上述从密钥初始化过程中储存的状态,来使发生器的状态初始化。接着,在方框214处,将循环指数n设置成0。随后,使每一帧初始化过程进入一个循环。在循环中的第一个步骤中,在方框216处,帧密钥的最小有效位被模256加到Sn上。接着,在方框218处,使帧密钥移位三个数据位,从而删除在方框216中使用的三个最小有效位。接着,在方框220处,使寄存器循环。在本典型实施例中,使循环指数n在方框222处递增,并在方框224处与11比较。方框224中所使用的11值对应于用作帧密钥的32个数据位以及帧密钥一次移位三个数据位这样一个事实。帧密钥的不同选择以及一次移位不同数量的数据位会产生方框224中使用的不同的比较值。如果n不等于11,那么过程就回到方框216。相反,如果n等于11,那么过程就继续进行到方框226,并且使寄存器继续循环。在方框228处使循环指数n递增,并在方框230处与2k比较。如果n不等于2k,那么过程就回到方框226。相反,如果n等于2k,那么过程就在方框232处中止。
上文中已经针对具有256个元素的典型伽罗瓦域描述了本发明。也可以采用不同的有限域,从而使元素的多少与用于计算元素的处理器以及/或者构成移位寄存器的存储器的字节或字的长短一致起来,或者还具有其他的优点。因此,可以采用具有两个以上元素的各种有限域,这也是属于本发明的范围的。
上述例子采用各种非线性处理器来屏蔽递归关系的线性关系的。可以采用不同的非线性处理过程,或上述非线性处理过程与其他的非线性处理过程的组合,来设计其他的一些发生器。因此,可以设计采用各种非线性处理过程来产生非线性的输出,这也属于本发明的范围。
上述例子采用的是具有阶数为17以及由等式(4)定义的递归关系。也可以产生具有其他阶数的递归关系,这也属于本发明的范围。此外,对于给定的阶数,可以产生各种不同的递归关系,这同样属于本发明的范围。本发明中,最长长度的递归关系将给出最佳结果。
V.基于GF(28)上LFSR的第二种典型数据流密码递归关系和非线性函数都对移位寄存器的元素进行访问。仅选择访问哪一个元素,从而元素之间的距离形成“全正差值组”(“On Security of NonlinearFilter Generators”,J. Dj. Golic,in Proceedings of Fast SoftwareEncryption 1996 Cambridge Workshop,Springer-Variag 1996)。随后,在递归关系和非线性函数之间划分这些元素,以使每一个的扩展程度为最大。在这些限制下,可以进一步将本发明发展成增强密码的保密性和计算的有效性。与第一种典型的实施例相比,第二种典型实施例提供了一种改进的密码保密性。
在数学上,在GF(28)上的LFSR等效于在长度为136的GF(2)上的八个移位寄存器,每一个移位寄存器具有相同的递归关系。本发明的典型实施例包括在GF(28)上的递归关系,它等效于一种特征多项式具有51个非零系数的二进制递归关系。递归关系中的三个抽头位置是由上文中给出的标准来决定的(即,“全正差值组”)。
在理想情况下,GF(2)上阶数为136的多项式,对于密码分析和最大值扩散的最佳长度应当近似具有其一半的系数为1。在GF(28)上有许多的多项式,有三个系数接近于这一目标,但所有三个系数都大于1。这就是说,采用这些多项式需要三个查询表和参照对象(reference),其效用与本发明的当前结构相比较差。然而,这些多项式在理论保密性的基础上是完全可以接受的。
以获取可能的等效二进制多项式为目标,同时保留系数为1的当前结构(避免了乘法表和查询),分析表明,使用65个非零二进制系数可以给出近乎实现68个非零系数目标的较佳实施例。在GF(28)上满足这些标准的多项式有16个。在GF(28)上总是按8个多项式编组,它们具有相同等效二进制多项式;这些多项式字节中的数据位发生了位置偏移。(可以找到每一等效的二进制多项式,例如,通过Berlekamp-Massey规则。)所以,如表4所示,有两种类型完全不同的多项式满足这一标准。对于本发明第二种典型的实施例,采用表4中第一组系数。
表4-递归系数
第二种典型发生器的方框图如图7中所示。在本典型实施例中,线性反馈移位寄存器82是17个八数据位长。当然,也可以采用其他长度的寄存器82(用于不同阶数的递归关系),这也属于本发明的保护范围。阶数为17的递归关系很适合于采用多达128个数据位密钥材料的应用场合。在本典型实施例中,按照下面的递归关系来更新线性反馈移位寄存器82Sn+17=(206Sn+15)Sn+4(99Sn)(8)式中的运算是定义在GF(28)上的,是由伽罗瓦加法器88所代表的两个字节上的异或运算,并且是由伽罗瓦乘法器84所代表的多项式模乘法器(见图7)。在本典型实施例中,对系数86的模乘法是通过对上述预先计算的表格进行字节表格查询来进行的。将等式(8)中的递归关系选择为最大长度。
在本典型实施例中,为了掩饰移位寄存器82的线性关系,采用上述两种技术,即,扰动和采用非线性函数。本说明书中还描述了其他的非线性技术。
在本典型实施例中,用相对于在GF(28)的线性运算是非线性的函数(或输出等式),通过将移位寄存器82的四个元素组合起来,引入非线性关系。在本典型实施例中,所使用的四个字节是Sn,Sn+2,Sn+5和Sn+12,这里,Sn是按照等式(8)中的递归关系而在序列中最早计算的元素。
本发明的许多密码保密性是由于采用了非线性函数而战胜了对扰动相位的攻击而得到,只要尽可能地非线性就可使该函数更强。
可以尝试各种可能的函数,用以将非线性函数与最接近的线性近似按位比较,并计算与0.5的平均绝对偏差和均方根偏差,这在理论上是一个完美的结果。研究表明,最优秀的技术方案是从旋转部分和得到的,这是一个在高阶数据位中带有影响的过程,从而将这些数据位与其他元素的最小有效位组合起来。
在微处理器上,加法函数通常一次仅接受两个运算操作,因而最好的策略是在一次中间加法以后进行旋转。将旋转运算操作记为ROTL(x),这意味着使x的数据位左移一个位置,因而更优越的非线性函数是Vn=ROTL(Sn+Sn+2)+Sn+5+Sn+12(9)这里,Vn是非线性输出,而+是由算术加法器90所代表的加法舍位模256(舍弃溢出)。ROTL表示旋转算符91。
加上Sn+5以后的附加旋转似乎不会产生更好的结果。正如本说明书中所讨论的那样,采用明显为非线性排列的查询表给出了另一种方法,但这种方法明显会有损本发明的计算效率。
在本典型实施例中,用于递归关系(8)的字节包含Sn,Sn+4和Sn+15,而用于输出等式(9)的字节包含Sn,Sn+2,Sn+5和Sn+12。在本典型实施例中,选择这些字节,使之具有特有的数据对距离。对于递归关系等式(8),所使用的三个字节具有的数据对距离是4(Sn和Sn+4之间的距离)、11(Sn+4和Sn+15之间的距离)和15(Sn和Sn+15之间的距离)。同样,对于输出等式(9),所使用的四个字节所具有的距离是2(Sn和Sn+2之间的距离)、3(Sn+2和Sn+5之间的距离)、5(Sn和Sn+5之间的距离)、7(Sn+5和Sn+12之间的距离)、10(Sn+2和Sn+12之间的距离)和12(Sn和Sn+12之间的距离)。递归关系(8)中的数据对距离(即,4,11和15)是在第一编组中唯一的,并且输出等式(9)中的数据对距离(即,2,3,5,7,10和12)在第二编组内也是特有的。另外,递归关系(8)中的数据对距离与输出等式(9)中的数据对距离也是明显不同的。明显不同的数据对距离确保了当移位寄存器82移位时,无论是在递归关系(8)中还是在非线性输出等式(9)中都不会两次使用移位寄存器82中特定的元素对。这一特性去掉了后续输出等式(9)中的线性关系。
在本典型实施例中,图7中所示的多路复用器(MUX)92、XOR门94、交换器(switch)96以及缓存器98是以与图4中的MUX64、XOR门66、转换器68以及缓存器70相同的方式工作的。
第二种典型的按帧初始化处理过程的流程图如图6B所示,它是图6A所示流程图的修改形式。
本实施例在第二密钥装载过程中采用非线性函数,从而以比以前更快的速度混合密钥信息,使得在产生输出之前进行的混合运行更短。这一特征防止了寄存器的状态形成寄存器总的状态组的线性子空间。
将密钥字节加到寄存器第5个字节上,而不是第0个字节上,而使扩展速度加快,这是递归关系元素之一。当加载“数据帧”时,一次放入8个数据位。除了进入来自“数据帧”的8位数据位以外,这一方法还在寄存器的第8个字节中加入了来自“nltap”的输出。在“数据帧”已被加载以后,这种方法继续使寄存器循环,并加入一些用于某些循环的输出。
因此,将图6B与图6A相比,方框218被修改,从而使该数据帧移位了8个数据位,去掉了8个最小有效数据位。新的方框219加入了来自非线性函数的输出。并且最终方框224中值的检验从11变到了4。
VI.基于GF(28)上LFSR的第三种典型的数据流密码如上所述,可以进一步将本发明发展以加强密码的保密性和计算效率,同时保持“全正差值组”。第三种典型实施例与第一种典型的实施例相比,使计算效率得到提高。
可以采用更简单的递归关系,其方法是采用更简单的二进制等效多项式,这样将使密码分析更为简单。首先,给定全正差值组的约束,使Sn+4的系数都是1,就可以避免乘法表和相应的表格查询。有8种这样的递归,有相同的等效二进制多项式,含有35个非零系数。这些Sn的系数分别是40,45,46,57,110,117,132和140。
如果允许某些内部系数是零,则可以有更简单的多项式。这时,去除的不仅可以是乘法,也可以是额外项的整个标记(reference)。有32个这样的递归关系;其中的8个是具有11个非零系数的等效二进制多项式,而其余的24项是具有13个非零系数的三个等效的二进制多项式。这些多项式中,8个多项式具有与Sn+1项相关的1系数,而其余的16项使之与Sn+4项相关。前8个的等效二进制多项式看上去比其他的具有更加“扩展”的非零系数,因而对于本发明最短时间来说,将采用这样的递归关系。Sn项的系数可以是79,83,166,187,225,239,243和252中任何数。对于本发明的第三种典型的实施例来说,采用第一个系数。因而递归关系变成Sn+17=79Sn+Sn+15(11)在普通8位微处理器上,对移位寄存器元素的标记相当烦琐。似乎可以完全去掉这些标记之一,也不会对保密性有太多的影响。选择去掉元素Sn+2,尽可能地使这些值“扩展”。然而,最好使中间和旋转,这是因为最小有效位的非线性关系不象所希望的那样好。事实上,这时的最佳旋转有四个位置。许多微处理器在实现这一操作时是执行“nybble-swap(半字节对换)”指令的。采用标记SWAP()以表示使字节旋转4个位置,非线性函数变成Vn=SWAP(Sn+Sn+5)+Sn+12(12)第三种典型实施例发生器的方框图如图8所示。在本典型实施例中,线性反馈移位寄存器102的长度是17个8位数据位,当然,也可以采用其他长度的寄存器102(用于不同阶数的递归关系),并且这也属于本发明的范围内。阶数为17的递归关系很适合于采用多达128个数据位的密钥材料的应用场合。在本典型实施例中,线性反馈移位寄存器102是按照下面的递归关系(11)来更新的,这时的运算是定义在GF(28)上的,是对伽罗瓦加法器108所代表的两个字节进行的异或运算,而是对伽罗瓦乘法器104所代表的两个字节进行的多项式模乘法运算。本典型实施例中,对系数106进行的模乘法运算是对上述预计算表格进行字节表格查询来进行的。可以将等式(11)中的递归关系选择成是最大长度。
这里,Vn是非线性输出,而+是算术加法器110所代表的加法舍位模256计算(舍弃溢出)。SWAP表示对换算符111。
在本典型实施例中,图8中的转换器116和缓存器118是以上述图4中的转换器68和缓存器70所描述的方式工作的。
在扰动期间,在两种情况下,非线性输出是与常数项进行异或的。(见表3)在本例中,这些计算被取消。
VII.具有实时条件的系统中采用抽取数据流密码发生的方法上述对数据进行加密的方法和装置是许多数据流密码的一个子集,它在设计中含有“扰动”,用于保密。其他经常使用的项是“不规则抽取”或“时钟控制”。其意义是,以假定很难预计的方法,通过忽略某些更大密钥数据流的元素来生成输出密钥数据流。在上述算法中,平均基础移位寄存器有7次循环会产生3个8位数据位的输出。其他在本领域中众所周知的抽取发生器是收缩发生器(见D. Coppersmith等人的“收缩发生器”,Proc.Crypto’93,Springer-Verlag,1994)以及“自收缩发生器”(W.Meier和O.Staffelbach的“自收缩发生器”,Communications and CryptographyTwo sides of onetapestry,R.E.Blahut等人,eds,Kluwer Academic Publishers,1994)。
在移动电话应用中,经常采用数据流密码来对相对较小的数据帧进行加密。移动站(蜂窝电话)通常有一个计算能力相对较小的计算机,以降低成本和功耗。移动站在将数据帧发送出去或者收听者检测到声音的“丢失”的时机之前,有一个固定的时间进行加密或解密。
抽取上下文中的数据流密码的问题是,它们对数据进行解密所花费的时间(或者说是输出密钥数据流的生成速率)是可变的。当数据量较大时,生成相同数量的密钥数据流的总的时间统计变化不是很明显的。但是,当每一数据帧中的数据量相对较小的时候(即,与上述线性反馈移位寄存器的尺寸具有相同的数量级的时候),输出中生成率的变化就很明显了。这就会产生这样的一种情况,即,移动站没有充分的时间进行加密或解密。
上述算法在最后阶段通过抽取(“扰动”)早先阶段产生的输出数据量来工作的。这是用输出中的一个8位数据位(扰动控制字节)确定以后四个阶段的行为来完成的。平均说来,每一这样的字节控制从早先阶段得到的6个值的消耗(最少4个,最多8个),并产生3个输出值(最少0个,最多4个)。在长时间取平均的基础上对扰动控制字节本身进行计数,上述算法将生成基础寄存器N次循环的输出的3/7N个8位数据位。然而,也会有这样的情况,即,抽取所引起的延迟会产生明显更大的延迟。
本发明提供了一种方法,即,通过在产生过度延迟之前使抽取过程中断,来限制对数据进行加密所需的时间。在本发明的第一种实施例中,加密系统识别加密时间是什么时候变得过大的,并用在固定速率下产生输出的保密性略弱的方法来产生其余的密钥数据量输出。在另一种实施例中,加密系统将抽取过程限制在预定个数的抽取。
由于这种情况出现的可能性较少,并且出现这些情况对于预计或检测加密的相反过程来说是不可能的,而且少量的输出是用保密性较弱的方法来产生的,所以,输出的加密分析仍然是不采用的。下面的例子给出,对于上面提供的算法,这是怎样来完成的,但这一原理是应用于钟控发生器,如,上面提到的收缩发生器。
该算法中,有两个扰动特征会引起密钥数据量输出产生率的变化。四种情况中有两种情况下,采用两个寄存器循环来产生一个8位数据位的输出。在其余的两种情况下,执行一次循环,但仅在一半的时间里产生一个8位数据位的输出。所以,在四分之一的情况中,是没有一点输出产生的;而在其余的时间里产生一个8位数据位的输出。另一方面,寄存器总循环数的变化控制整个抽取持续时间的变化。考虑到这些因素,有两种不同的方法可以用来检测发生器舍弃太多输出的情况,同时这样花费的时间太长。
1.初始化以后,可以对发生器不产生任何输出的次数进行计数。当该计数达到某一阈值的时候,算法转向到采用保密性较弱并更可能预计的方法。
2.初始化以后,计数器会对基础移位寄存器的总循环数进行计数。当该计数器达到一个(不同的)阈值的时候,算法将会相反回到保密性稍差并具有更多可预计性的方法。
上述方法在组合的时候采用了两种机制,以给出保密性。一种是移位寄存器的非线性函数功能。另一种是扰动机制。对于输出量相对较少的情况,即到达几百个8位数据位的情况,非线性函数本身将令给出合适的保密性。在本典型的实施例中,对数据进行加密的保密性较差的方法是简单地取消输出扰动,并从非线性函数中为基础寄存器的每一循环产生一个输出。对于其他的数据流密码,需要采用其他的方法。比如,在收缩发生器中生成数据位的保密性较差的方法是采用从时钟控制寄存器得到的输出数据位来选择来自其他寄存器的哪两个连续的数据位将用于输出。尽管该后退方案在由其自身使用时是不保密的,但在本上下文中还是足够保密的。
上述第一种方法的变异形式是连续地监视没有输出生成的次数,并且无论什么时候,只要有预定次数的循环数没有输出产生,就强迫产生一个输出。例如,当有四次循环中没有输出产生时,就可以生成一个输出。这就保证有一个输出生成率的特别约束,因而在算法的每四次递归中永远不会落到一个输出以下。(可以将这种情形看作是对上文中提到的情形的略微复杂的扰动方法。)每次结束时必须使密钥数据流发生器具有相同的配置参数,并且在同一时间上转到保密性较弱的方法。
应当选择用于转向的参数,从而使给定数据帧加密强度较小的几率会很小,比方说是104个中有一个或更少。采用数学方法,可以从给定密码的已知特征得到这些参数,或采用模拟的方法来确定。这同时确保了采用保密性较弱的方法加密的数据量是很小的。在本典型实施例中,在104个寄存器循环的情况下,加密系统转向到保密性较弱的密码。采用上述加密系统,将意味着,在10,000个数据帧中,只有一个以下的数据帧会转到保密性较弱的加密情况,并且其中,采用保密性较弱的方法,100中只有约一个会产生6个或更多个8位的数据位输出(这是根据从104个循环到116个循环得到产生的8位数据位而估计的)。这种情况由加密分析检测到是极为不可能的,这是因为6个8位数据位中的任何一个数据流代表的是二分之一不到的寄存器状态,这在正常操作运行的随机情况下同样也会发生。
参见图9,来描述加密过程中对延迟进行限制的加密系统。加密子系统A302执行较佳的加密操作。即,加密子系统A 302比起通过加密子系统B 300来说,具有更大的保密性。但是,与加密子系统B 302所执行的加密操作相比,加密子系统B 300所执行的加密操作具有较少的延迟。
加密子系统A 302所提供的有关密钥数据流的信息被提供到超时检测器306,由该检测器检测产生密钥数据流连续部分的时间,或者在另一些监视器中是产生对数据帧进行加密的累计时间。当从加密子系统A 302产生连续部分的密钥数据流的时间或者对一部分数据帧进行加密的累计时间超过了预定的门限值的时候,超时检测器306就向转换器304发送一个信号,指令转换器300应当采用加密子系统B 300所提供的密钥数据流,以替代加密子系统A 320所提供的密钥数据流。
将转换器304选择的密钥数据流提供到混合器308的第一输入。混合器308将要加密的数据与选择的密钥数据流混合,并输出经加密的数据。
图10描述的是图9中本发明的特定实施结构。在图10实施的特定实施结构中,较佳的加密操作按照线性运算操作、非线性运算操作以及随机抽取操作,产生密钥数据流。当抽取过程预示将会在加密过程引起过度的延迟的时候,那么将转变成退出该操作。
图10中,加密过程的线性部分是由线性反馈移位寄存器(LFSR)328执行的,其结构在本领域中是众所周知的,其结构如上所述。线性反馈移位寄存器328将其输出和一组寄存器的内容提供至非线性运算处理器324。非线性运算处理器324对线性反馈移位寄存器328的输出以及线性反馈移位寄存器328提供的寄存器内容进行非线性处理,并将非线性运算操作的结果输出到抽取器322和转换器326。
抽取器322对非线性运算器324的输出进行随机化的抽取,由它按照伪随机选择过程,删除非线性运算器324提供的一部分数据,并将随机抽取的数据流提供到转换器326。
在正常操作时,转换器326将抽取的密钥数据流从抽取器322输出到异或门330。但是,当抽取控制器320检测到抽取过程预示着会在加密数据中引入过度的延迟的时候,抽取控制器320向转换器326发送一个信号,而由转换器326根据输出,输出从非线性运算处理器324提供的密钥数据流,而不进行抽取。在本典型实施例中,抽取控制器320通过对线性反馈移位寄存器328的移位数进行计数,或者通过对抽取器322提供的抽取量进行计数,来检测变得过长的抽取过程。由抽取器322抽取的线性反馈移位寄存器328的移位数或者从非线性运算器324的输出数由抽取控制器320用来确定何时抽取过程变得过长了。
本实施例的方框图如图11所示。图11是图7中所描述的发生器的修改形式,其中加入了对加密延迟进行限制的装置。在本典型实施例中,线性反馈移位寄存器382有17个8位数据位长。当然,寄存器382也可以采用其他的数据长度(用于不同阶数的递归关系),这也属于本发明的范围。阶数为17的递归关系很适合于采用多达128个数据位的密钥材料应用场合。在本典型实施例中,线性反馈移位寄存器382是按照下面的递归关系来更新的Sn+17=(206Sn+15)Sn+4(99Sn) (13)
这里,运算是定义在GF(28)上的,是对伽罗瓦加法器388所代表的两个字节进行异或运算,而是对伽罗瓦乘法器384所代表的多项式模乘法运算。在本典型实施例中,对系数386进行的模乘法运算是通过对上述预先计算的表格进行查询来实行的。将等式(13)中的递归关系选择为最大长度。
在本典型实施例中,为了舍弃移位寄存器382的线性关系,采用上述两种技术,即,扰动和采用非线性函数。其他的非线性技术在本说明书的其他部分也有描述。
本典型实施例中,非线性关系是通过将移位寄存器382的四个元素采用相对于在GF(28)上的线性运算是非线性的函数(或输出等式)进行合并而引入的。在本典型实施例中,所采用的四个字节是Sn,Sn+2,Sn+5和Sn+12,这里,Sn在按照等式(13)中的递归关系的序列中是最早计算的元素。
本发明的许多密码保密性是利用非线性函数来防止对扰动阶段产生攻击而得到的,因而要求该函数尽可能是足够非线性的。
发明人尝试了许许多多种可能的函数,从而将非线性函数与每一数据位位置中最接近的线性近似进行比较,并计算与0.5的平均绝对偏差和根均方偏差,而“0.5”是在理论上完美的结果。研究表明,优秀的技术方案是通过使部分和旋转而得到的,这是一个在高阶数据位上具有进位效果的过程,从而使这些数据位与其他元素的最小有效位混合起来。
在一个微处理器处,加法运算通常一次仅接受两个运算,从而最好的策略是在一次中间加法以后进行旋转。将旋转运算记为ROTL(x),这就是说使x的数据位左旋一个位置,那么更好的非线性函数是Vn=ROTL(Sn+Sn+16)+Sn+1Sn+6+Sn+13(14)这里,Vn是非线性输出,而+是由运算加法器390进行的加法舍位模256(舍弃了溢出)运算。ROTL表示旋转运算391。
在加上Sn+5以后进行的附加旋转似乎不会给出更好的结果。正如在本说明书的其他地方所讨论的那样,采用非线性置换的查询表给出了另一种方法,但明显会破坏本发明的计算效率。
在本典型实施例中,用于递归关系(13)的字节包含Sn,Sn+4和Sn+15,而用于等式(14)的字节包含Sn,Sn+1,Sn+6,Sn+13和Sn+16。在本典型实施例中,选择的这些字节具有明显不同的数据对距离。对于等式(13)的递归关系,所使用的这些字节具有数据对距离4(Sn和Sn+4之间的距离)、数据对距离11(Sn+4和Sn+15之间的距离)以及数据对距离15(Sn和Sn+15之间的距离)。同样,对于输出等式(14),所使用的5个字节具有数据对距离1(Sn和Sn+1之间的距离)、3(Sn+13和Sn+16之间的距离)、5(Sn+1和Sn+6之间的距离)、6(Sn和Sn+6之间的距离)、7(Sn+6和Sn+13之间的距离)、10(Sn+6和Sn+16之间的距离)、12(Sn+1和Sn+13之间的距离)、13(Sn和Sn+13之间的距离)、15(Sn+1和Sn+16之间的距离)和16(Sn和Sn+16之间的距离)。递归关系(13)之间的距离(即4,11和15)在第一编组内是唯一的(或特有的),比起输出等式(14)中的数据对距离(即,1,3,5,6,7,10,12,13,15,和16)在第二编组内也是特有的。另外,递归关系(13)中的数据对距离除了一个数据对距离15以外,在输出等式(14)中是唯一的。特有的数据对距离确保了当移位寄存器382移位的时候,无论是在递归关系(13)中还是非线性输出等式(14)中都不会使用两次。这种特性去除了后续输出等式(14)中的线性关系。
在本典型实施例中,图11中的多路复用器(MUX)392、异或(XOR)门394、转换器396以及缓存器398是以上述参照图4中的MUX64、XOR门66、转换器68以及缓存器70的方式工作的。
来自转换器396的抽取密钥序列和加法器390b的输出被提供到转换器402。在正常操作下,转换器402输出来自转换器396的抽取的密钥序列。然而,如果抽取控制器400检测到加密过程由于抽取过程的可变性而引入了过度的延迟,则抽取控制器400向转换器402发送一个信号,使转换器402输出未抽取的序列。转换器402的输出与数据序列混合,提供经加密的数据。
在本典型实施例中,抽取控制器400通过对加法器390b输出的密钥数据流的某些部分进行选通而对来自缓存器398的输出数进行计数,或者通过对移位寄存器382的移位数进行计数,来检测加密延迟是否过长。也可以采用抽取扰动过程所引入的延迟的其他方法,这些方法同样属于本发明的范围。
加密数据的接收机必须知道什么时候在转换器396输出的抽取密钥序列和加法元件390b输出的未抽取的序列之间转换。在本典型实施例中,接收机还包括相同的抽取控制器400和转换器402,并将以与加密数据的发射机处相同的方式,在抽取和未抽取的序列之间转换。因此,就不必具有抽取的和未抽取的密钥序列之间的时间变换的明确提示了。
第二种典型的按数据帧初始化过程的流程图如图6B所示,它是图6A所示流程图的修改形式。
本实施例在第二密钥装载过程中采用非线性函数,以比以前更快的方式来混合密钥信息,从而使得在产生输出之前的混合时间更短。这一特征防止了寄存器成为寄存器总状态数的线性子空间。
将密钥字节加到寄存器的第15个字节上,而不是加到第0个字节上,从而使扩展加速,这是递归关系元素中的一个。当装入“数据帧”的时候,一次输入8个数据位。除了加入来自“数据帧”的8位数据位以外,本方法还将来自“nltap”的输出加到了寄存器的第8个字节上。在已经装载了“数据帧”以后,本方法继续使寄存器循环,并加入某几个循环的输出。
因此,比较图6B和6A,方框218被修改,从而数据帧移位了8个数据位,以去掉8个最小有效位。新的方框219加入了来自非线性函数的输出。并且最终在方框224中检验的值从11变到了4。
前文中对较佳实施例的描述使得本领域中的普通技术人员能够制造和使用本发明。很明显,本领域中的普通技术人员还能对这些实施例作各种修改,可以无需发明人的帮助,将本文中所描述的基本原理应用于其他的实施例。所以,本发明并非仅限于这些实施例,应当从最宽的范围来理解本发明的原理和新特征。
权利要求
1.一种对数据进行加密的装置,其特征在于,它包含产生第一密钥数据流的第一发生器;产生第二密钥数据流的第二发生器;接收所述第一密钥数据流和所述数据以及将所述第一密钥数据流和所述数据混合起来以提供加密数据的混合器;以及测量由所述第一发生器产生所述第一密钥数据流时的延迟的延迟测量装置;其中,所述混合器还用来接收所述第二密钥数据流和所述数据,并将所述第二密钥数据流和所述数据混合,在所述测量的延迟超过某一阈值的时候,提供经加密的数据。
2.如权利要求1所述的装置,其特征在于,所述第一发生器按照预定的抽取算法,产生所述第一密钥数据流。
3.如权利要求1所述的装置,其特征在于,所述第一发生器包含按照一种线性发生格式产生随机码元序列的线性发生器装置;对所述随机码元序列执行非线性运算以提供第二随机码元序列的非线性装置;以及选通所述第二随机码元序列的一些部分的伪随机抽取器。
4.如权利要求3所述的装置,其特征在于,所述第二发生器包含按照一种线性发生格式产生随机码元序列的线性发生器装置;以及对所述随机码元序列执行非线性运算以提供第二随机码元序列的非线性发生器。
5.如权利要求1所述的装置,其特征在于,所述递归关系的阶数为17。
6.如权利要求3所述的装置,其特征在于,所述第一发生器按照递归关系Sn+17=(206Sn+15)Sn+4(99S),产生所述第一随机序列,这里的运算是定义在GF(28)上的,_是对两个字节的异或运算,而_是多项式模乘法。
7.如权利要求3所述的装置,其特征在于,所述线性发生器是用线性反馈移位寄存器来实施的。
8.如权利要求7所述的装置,其特征在于,所述延迟测量装置测量所述线性反馈移位寄存器的移位数。
9.如权利要求7所述的装置,其特征在于,所述延迟测量装置测量由所述伪随机数抽取器选通的所述第二随机码元序列的部分数。
10.如权利要求8所述的装置,其特征在于,所述线性反馈移位寄存器是用滑动窗口构成的。
11.一种对数据进行加密的方法,其特征在于,它包含产生第一密钥数据流;产生第二密钥数据流;将所述第一密钥数据流和所述数据混合,给出经加密的数据;以及测量所述第一密钥数据流的步骤中的延迟;将所述第二密钥数据流和所述数据混合,当所述测量得到的延迟超过预定的阈值的时候,提供经加密的数据。
12.如权利要求11所述的方法,其特征在于,生成所述第一密钥数据流的所述步骤是按照预定的抽取算法来进行的。
13.如权利要求11所述的方法,其特征在于,生成所述第一密钥数据流的所述步骤还包含下述步骤按照一线性生成格式,产生随机的码元序列;对所述随机码元序列执行非线性运算,以提供第二随机码元序列;以及选通所述第二随机码元序列的一些部分。
14.如权利要求13所述的方法,其特征在于,生成所述第二密钥数据流的所述步骤包含下述步骤按照线性生成步骤,产生一随机的码元序列;以及对所述随机的码元序列执行非线性运算,以提供第二随机码元序列。
15.如权利要求13所述的方法,其特征在于,所述线性生成格式的阶数是17。
16.如权利要求所述的方法,其特征在于,按照线性生成格式生成所述第一随机码元序列的所述步骤按照递归关系Sn+17=(206Sn+15)Sn+4(99S)产生所述第一随机序列,式中,运算是定义在GF(28)上的,_是对两个字节的异或运算,而_是多项式模乘法。
17.如权利要求13所述的方法,其特征在于,生成所述第一随机序列的所述步骤是用线性反馈移位寄存器来实施的。
18.如权利要求17所述的方法,其特征在于,测量实施延迟的所述步骤是通过对所述线性反馈移位寄存器的移位数进行计数来进行的。
19.如权利要求17所述的方法,其特征在于,测量所述延迟即对所述伪随机抽取器选通的所述第二随机码元序列的部分数进行计数。
20.如权利要求18所述的方法,其特征在于,所述线性反馈移位寄存器是用一滑动窗口来实现的。
21.一种生成数据流密码的方法,其特征在于,它包含选择具有阶数大于2的有限域;在所述有限域上选择一种递归关系;选择一种输出函数;以及按照所述递归关系和所述输出函数来计算所述数据流密码,其中,所述递归关系和所述输出函数具有明显不同的数据对差,并且根据密码保密性和计算效率,选择所述递归关系和所述输出函数,以使特性标准为最佳。
22.如权利要求1所述的方法,其特征在于,所述有限域是根据用于计算所述数据流密码的处理器的字长来选择的。
23.如权利要求1所述的方法,其特征在于,所述有限域是含有256个元素的伽罗瓦域。
24.如权利要求1所述的方法,其特征在于,所述递归关系是最大长度。
25.如权利要求1所述的方法,其特征在于,所述递归关系的阶数是17。
26.如权利要求1所述的方法,其特征在于,所述递归关系是用线性反馈移位寄存器来实现的。
27.如权利要求6所述的方法,其特征在于,所述线性反馈移位寄存器是用循环缓存器来构成的。
28.如权利要求6所述的方法,其特征在于,所述线性反馈移位寄存器是用滑动窗口构成的。
29.如权利要求1所述的方法,其特征在于,所述性能标准是仅仅根据密码的保密性来实现的。
30.如权利要求1所述的方法,其特征在于,所述性能标准是仅仅根据计算效率来实现的。
31.如权利要求1所述的方法,其特征在于,所述输出函数包含计算所述发生器的状态的非线性函数。
32.如权利要求11所述的方法,其特征在于,所述输出函数包含数据位的旋转。
33.如权利要求11所述的方法,其特征在于,所述输出函数包含数据位的对换。
34.如权利要求1所述的方法,其特征在于,所述计算步骤包含域相乘和模相加。
35.如权利要求14所述的方法,其特征在于,所述域相乘的结果是由素数的模来约减的。
36.如权利要求15所述的方法,其特征在于,所述的素数是257。
37.如权利要求14所述的方法,其特征在于,所述的域相乘是用查询表来实现的。
38.如权利要求17所述的方法,其特征在于,所述的查询表是预先计算并存储在存储单元内的。
39.如权利要求14所述的方法,其特征在于,所述域相乘是通过下述步骤来实现的对两个运算对象中的每一个的对数值表格进行查询;对所述两个运算对象的对数值进行模相加,以得到一个组合的对数值;以及对所述组合的对数值的指数值表格进行查询。
40.如权利要求1所述的方法,其特征在于,它还包含下述步骤用一个密钥来使所述发生器初始化。
41.如权利要求20所述的方法,其特征在于,所述初始化步骤包含下述步骤将所述密钥的最小有效字节加到所述递归关系上;使所述密钥移位一个字节;以及重复所述相加步骤和所述移位步骤,直到所述密钥内的所有的字节都被加到了所述递归关系上。
42.如权利要求20所述的方法,其特征在于,所述密钥的长度小于所述递归关系的阶数。
43.如权利要求20所述的方法,其特征在于,它还包含下述步骤按照数据帧的密钥,对所述发生器进行初始化。
44.如权利要求23所述的方法,其特征在于,按照数据帧的密钥对所述发生器进行所述初始化包含下述步骤将所述按照数据帧的密钥的最小有效字节加到所述递归关系上;使所述按照数据帧的密钥移位三个数据位;重复所述相加步骤和所述移位步骤,直到所述数据帧的密钥中的所有的字节被加到了所述递归关系上。
45.如权利要求23所述的方法,其特征在于,所述按照数据帧的密钥的长度是4个8位数据位长。
46.如权利要求23所述的方法,其特征在于,用数据帧密钥使所述发生器进行所述初始化的步骤是针对每一数据帧进行的。
47.一种生成数据流密码的装置,其特征在于,它包含接收用于执行递归关系和输出函数的指令的处理器,所述处理器按照所述指令执行对元素的运算,其中,所述递归关系和所述输出函数具有明显不同的数据对差异,以及根据密码的保密性和计算效率,选择所述递归关系和所述输出函数,以使性能标准为最佳。
48.如权利要求27所述的装置,其特征在于,所述递归关系是定义在具有大于1的阶数的有限域上的。
49.如权利要求28所述的装置,其特征在于,所述有限域是按照所述处理器的字长来选择的。
50.如权利要求28所述的装置,其特征在于,所述有限域是含有256个元素的伽罗瓦域。
51.如权利要求27所述的装置,其特征在于,所述递归关系是最大长度。
52.如权利要求27所述的装置,其特征在于,所述递归关系的阶数是17。
53.如权利要求27所述的装置,其特征在于,所述递归关系是用线性反馈移位寄存器来实现的。
54.如权利要求33所述的装置,其特征在于,所述线性反馈移位寄存器是用循环缓存器来构成的。
55.如权利要求33所述的装置,其特征在于,所述线性反馈移位寄存器是用一个滑动窗口来实现的。
全文摘要
产生加密数据流密码的方法和装置是基于一种递归关系的,该递归关系是在大于GF(2)的有限域上工作的。可以采用一种或组合的非线性过程以形成输出函数来获得非线性输出。可以选择递归关系和输出函数使之具有明显不同的数据对距离,从而当移位寄存器(52)移位时,无论是在递归关系中还是在输出函数中,都不会在移位寄存器(2)中两次使用相同的数据对元素。在这些条件下,还可以选择递归关系和输出函数,以使密码保密性或计算效率为最佳。另外,本发明另一要解决的问题是提供一种确保形成加密过程的延迟不会超过预定的界限的方法。为此,测量加密延迟,如果估计的延迟超过了预定的阈值,则采用第二种加密方法,来限制加密操作的累计延迟。
文档编号H04L9/22GK1347607SQ00803505
公开日2002年5月1日 申请日期2000年2月4日 优先权日1999年2月8日
发明者G·G·罗斯, 小R·F·奎克 申请人:高通股份有限公司