用于实现KASUMI加密过程的装置和方法转让专利

申请号 : CN200580019078.7

文献号 : CN1965523B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 卡马尔·科沙尔雅罗斯劳·西迪尔瓦迪吉·费格哈利

申请人 : 英特尔公司

摘要 :

提供一种用于执行KASUMI加密过程的方案。所述方案包括在一个时钟周期内使KASUMI轮中的两个FI函数的计算并行化并且在一个时钟周期内计算KASUMI轮中两个连续的FL函数的方法和装置。

权利要求 :

1.一种用于实现KASUMI加密过程的装置,包括:

KASUMI轮计算装置,所述KASUMI轮计算装置计算所述KASUMI加密过程所要求的八个KASUMI轮;

子密钥生成器,所述子密钥生成器生成计算所述八个KASUMI轮中每一轮所需要的子密钥;以及控制器,所述控制器控制所述KASUMI轮计算装置和所述子密钥生成器,以使得在所述八个KASUMI轮中的两个KASUMI轮上的两个连续FI函数的计算的并行化,从而产生最终的KASUMI输出。

2.如权利要求1所述的装置,其中所述KASUMI轮计算装置包括:FI/FL辅助器,所述FI/FL辅助器控制KASUMI轮中FI和FL函数的计算;

FI-FI运算装置,所述FI-FI运算装置在一个时钟周期内并行地计算在一KASUMI轮内的两个连续FI函数,并且在一个时钟周期内并行地计算跨两个KASUMI轮的两个连续FI函数;以及FL-FL运算装置,所述FL-FL运算装置计算所述KASUMI轮中的FL函数。

3.如权利要求2所述的装置,其中所述FI/FL辅助器包括:输入准备组件,所述输入准备组件为所述FI-FI运算装置和所述FL-FL运算装置准备输入数据;以及输出控制组件,所述输出控制组件为后续的FI和FL运算准备所述FI-FI运算装置和所述FL-FL运算装置的输出数据,并且形成所述KASUMI加密过程的最终输出结果。

4.如权利要求2所述的装置,还包括:

以可操作的方式耦合到所述控制器的KL选择器,所述KL选择器选择供所述FL-FL运算装置在计算KASUMI轮时使用的KL子密钥;

以可操作的方式耦合到所述控制器的KO选择器,所述KO选择器选择供所述FI-FI运算装置在计算所述KASUMI轮时使用的KO子密钥;以及以可操作的方式耦合到所述控制器的KI选择器,所述KI选择器选择供所述FI-FI运算装置在计算所述KASUMI轮时使用的KI子密钥。

5.如权利要求2所述的装置,其中所述控制器通过所述KASUMI轮计算装置中的所述FI/FL辅助器控制KASUMI轮计算。

6.如权利要求2所述的装置,其中所述FL-FL运算装置能够在一个时钟周期内计算跨两个KASUMI轮的两个连续FL函数。

7.一种用于计算KASUMI轮的装置,包括:

FI/FL辅助器,所述FI/FL辅助器控制所述KASUMI轮中FI和FL函数的计算;

FI-FI运算装置,所述FI-FI运算装置在一个时钟周期内并行地计算两个连续FI函数,所述两个连续FI函数包括在一KASUMI轮内的两个连续FI函数或跨两个KASUMI轮的两个连续FI函数;以及FL-FL运算装置,所述FL-FL运算装置计算所述KASUMI轮中的FL函数。

8.如权利要求7所述的装置,其中所述FI/FL辅助器包括:输入准备组件,所述输入准备组件为所述FI-FI运算装置和所述FL-FL运算装置准备输入数据;以及输出控制组件,所述输出控制组件为后续的FI和FL运算准备所述FI-FI运算装置和所述FL-FL运算装置的输出数据,并且形成所述KASUMI轮的最终输出结果。

9.如权利要求7所述的装置,其中所述FI/FL辅助器能够辅助所述FI-FI运算装置和所述FL-FL运算装置计算KASUMI轮中所要求的FI和FL函数。

10.如权利要求7所述的装置,其中所述FL-FL运算装置能够在一个时钟周期内计算跨两个KASUMI轮的两个连续FL函数。

11.如权利要求7所述的装置,其中所述FI-FI运算装置对所述两个KASUMI轮之间的XOR操作进行预XOR。

12.如权利要求7所述的装置,其中所述FL-FL运算装置能够在一个时钟周期内计算FL函数。

13.如权利要求7所述的装置,其中所述FL-FL运算装置将所述两个KASUMI轮之间的XOR操作并入FL函数运算,而不导致额外的延迟。

14.一种用于实现KASUMI加密过程的方法,包括:对于奇数KASUMI轮,计算FL函数,之后计算FO函数,所述FO函数包括三个顺序的FI函数,其中第一和第二个FI函数在一个时钟周期内被并行计算;

对于偶数KASUMI轮,计算FO函数,之后计算FL函数,所述FO函数包括三个顺序的FI函数,其中第二和第三个FI函数在一个时钟周期内被并行计算;以及在一个时钟周期内并行地计算奇数KASUMI轮中的第三个FI函数和继所述奇数KASUMI轮之后的偶数KASUMI轮中的第一个FI函数。

15.如权利要求14所述的方法,还包括:

在一个时钟周期内计算偶数KASUMI轮中的FL函数和继所述偶数KASUMI轮之后的奇数KASUMI轮中的FL函数。

16.如权利要求14所述的方法,还包括:

对所述奇数KASUMI轮和所述偶数KASUMI轮之间的XOR操作进行预XOR,而不导致额外的延迟。

17.如权利要求15所述的方法,还包括:

将所述奇数KASUMI轮和所述偶数KASUMI轮之间的XOR操作并入FL运算中,而不导致额外的延迟。

18.一种网络系统,包括:

交换结构;

通过所述交换结构互连的多个线卡;以及

多个KASUMI模块,每个所述KASUMI模块以可操作的方式与线卡耦合以执行KASUMI加密,KASUMI模块包括:KASUMI轮计算装置,所述KASUMI轮计算装置计算所述KASUMI加密所要求的八个KASUMI轮;

子密钥生成器,所述子密钥生成器生成计算所述八个KASUMI轮中每一轮所需要的子密钥;以及控制器,所述控制器控制所述KASUMI轮计算装置和所述子密钥生成器,以使得在所述八个KASUMI轮中的两个KASUMI轮上的两个连续FI函数的计算的并行化,从而产生最终的KASUMI输出。

19.如权利要求18所述的网络系统,其中所述KASUMI轮计算装置包括:FI/FL辅助器,所述FI/FL辅助器控制KASUMI轮中FI和FL函数的计算;

FI-FI运算装置,所述FI-FI运算装置在一个时钟周期内并行地计算在一KASUMI轮内的两个连续FI函数,并且在一个时钟周期内并行地计算跨两个KASUMI轮的两个连续FI函数;以及FL-FL运算装置,所述FL-FL运算装置计算所述KASUMI轮中的FL函数。

20.如权利要求19所述的网络系统,其中所述FI/FL辅助器包括:输入准备组件,所述输入准备组件为所述FI-FI运算装置和所述FL-FL运算装置准备输入数据;以及输出控制组件,所述输出控制组件为后续的FI和FL运算准备所述FI-FI运算装置和所述FL-FL运算装置的输出数据,并且形成所述KASUMI加密过程的最终输出结果。

21.如权利要求19所述的网络系统,还包括:

以可操作的方式耦合到所述控制器的KL选择器,所述KL选择器选择供所述FL-FL运算装置在计算KASUMI轮时使用的KL子密钥;

以可操作的方式耦合到所述控制器的KO选择器,所述KO选择器选择供所述FI-FI运算装置在计算所述KASUMI轮时使用的KO子密钥;以及以可操作的方式耦合到所述控制器的KI选择器,所述KI选择器选择供所述FI-FI运算装置在计算所述KASUMI轮时使用的KI子密钥。

22.如权利要求19所述的网络系统,其中所述控制器通过所述KASUMI轮计算装置中的所述FI/FL辅助器控制KASUMI轮计算。

23.如权利要求19所述的网络系统,其中所述FL-FL运算装置能够在一个时钟周期内计算跨两个KASUMI轮的两个连续FL函数。

说明书 :

用于实现KASUMI加密过程的装置和方法

[0001] 背景
[0002] 1.领域
[0003] 本发明一般地涉及网络安全,并且更具体地,涉及用于执行KASUMI加密过程的装置和方法。
[0004] 2.描述
[0005] 网络使计算机和其他设备能够进行通信。例如,网络可以运载表示视频、音频、电子邮件等等的数据。然而,网络系统面临包括泄密、丧失数据完整性、身份欺骗和拒绝服务攻击在内的很多威胁。为了解决这些威胁,已经开发和采用了很多手段来提高网络通信的安全性。例如,一种由名为“第三代伙伴计划”(3rd Generation Partnership Project,3GPP)的联盟所提出的标准提供了多种算法来改进网络通信的保密性和完整性。尽管3GPP标准的目标是移动通信,但是它的保密性和安全性算法被一般性地应用于网络通信。3GPP保密性和完整性算法的核心是KASUMI算法。
[0006] KASUMI算法是在128-位输入密钥的控制下从64-位输入产生64-位输出的块加密算法。它包括八轮计算。尽管KASUMI加密过程可以通过软件模拟来实现,但是由于硬件解决方案更高的处理速度,该加密过程的硬件实现可能是更为期望的。加密过程不显著地降低对网络通信的数据处理速度是有利的。在硬件实现中,KASUMI计算的低速度可能要求使用多于一个KASUMI模块来提高KASUMI处理速度,从而网络系统的整体数据处理速度不会被降低。更多的KASUMI模块要求芯片上更大的物理面积,并且因此要求更高的功率损耗和更高的成本。所以,期望提高KASUMI硬件实现的处理速度。
[0007] 附图简要说明
[0008] 从本发明的以下详细描述中,本发明的特征和优点将变得清楚,其中:
[0009] 图1是图示一般网络系统的图;
[0010] 图2是图示如何执行KASUMI加密过程的图;
[0011] 图3是图示如何执行KASUMI加密过程中的FO函数的图;
[0012] 图4是图示如何执行FO函数中的FI函数的图;
[0013] 图5是图示如何执行KASUMI加密过程中的FL函数的图;
[0014] 图6是实现KASUMI加密过程的系统的框图;
[0015] 图7(a)-(b)是图示如何并行执行一KASUMI轮中的两个顺序的FI函数的图;
[0016] 图8是FI函数的示例性实现的框图;
[0017] 图9是两个连续的KASUMI轮中FI函数的示例性实现的图;
[0018] 图10是两个连续的KASUMI轮中两个顺序FL函数的示例性实现的图;
[0019] 图11是根据本发明的实施方案,图示KASUMI轮数和处理周期之间的关系的图;
[0020] 图12是KASUMI加密过程的示例性实现的图;以及
[0021] 图13是网络系统的图。

具体实施方式

[0022] 本发明的实施方案包括用于实现KASUMI加密过程的装置和方法。KASUMI算法是在128-位密钥的控制下从64-位输入产生64-位输出的块加密算法。每一轮包括一个FL函数和一个FO函数的计算。FO函数包括三次FI函数的迭代。直接的硬件实现要求四个时钟周期来完成每一轮,其中包括用于计算FL函数一个周期,以及用于计算FI函数的一次迭代的每个周期。因此,产生KASUMI输出需要总共32个时钟周期。根据本发明的实施方案,KASUMI加密过程可以以这样的方式实现,即可以展开(unroll)八个KASUMI轮,以减少完成KASUMI加密过程的计算所需要的总周期数。在这样的实施方案下,在同一轮或者跨连续两轮的两个连续的FI函数可以在一个周期内被并行地计算,并且跨连续两轮的两个连续的FL函数可以在一个周期内被计算。因此,在一个实施方案中,仅需要17个周期而不是32个周期来产生KASUMI输出。
[0023] 在说明书中提及“一个实施方案”或“实施方案”意味着结合该实施方案描述的特定特征、结构或特性被包括在本发明的至少一个实施方案中。因此,“在一个实施方案中”在说明书中不同地方的出现不一定全是指同一实施方案。
[0024] 图1描绘支持多个终端的一般网络系统110。网络系统110可以包括例如路由器、交换机和网桥的多种设备,以便数据从一个终端传递到另一个。所述网络系统可以是无线系统、以太网系统、任何其他系统,或者不同网络系统的组合。所述网络系统可以采用卫星120来帮助将一个终端连接到另一个终端。网络系统的终端可以包括服务器(130)、桌面型计算机(140)、个人目录助理(Personal Directory Assistants,PDA)(150)、蜂窝电话(160)、膝上型计算机(170)或其他设备。在不同终端之间通信的数据可以包括视频、音频、消息(message)和其他数据。所述网络系统可以使用针对通信安全性的3GPP标准。根据3GPP标准的组成内容,KASUMI加密过程可以被用来加密数据,以保证保密通信和通信的完整性。
[0025] 图2描绘如“Specification of the 3GPP Confidentiality and Integrity Algorithms(3GPP保密性和完整性算法规范)”(2002年6月,V5.0.0)的“Document 2:KASUMI Specification(文件2:KASUMI规范)”(此后被称为KASUMI规范)中所定义的KASUMI加密过程。KASUMI加密过程采用64-位输入I;在128-位输入密钥K的控制下执行八轮操作;并且产生64-位输出O。输入I被分成两个32-位字符串L[0]和R[0],其中I=L[0]‖R[0],“‖”代表级联操作。对于每一轮i(1<=i<=8),
[0026] L[i]=R[i-1] Fi(L[i-1],RK[i]), (1)
[0027] R[i]=L[i-1], (2)
[0028] 其中RK[i]是用于轮i的128-位轮密钥,它是以在KASUMI规范中所指定的方式从K得出的;并且“ ”代表异或(“XOR”)操作。式(1)中的Fi代表如下定义的轮函数:
[0029] 对于奇数轮,Fi(I,RK[i])=FO(FL(I,KLi),KOi,KIi), (3)
[0030] 对于偶数轮,Fi(I,RK[i])=FL(FO(I,KOi,KIi),KLi), (4)
[0031] 其中,KLi、KOi和KIi是用于轮i的子密钥,它们是根据在KASUMI规范中所指定的那样从轮密钥RK[i]得出的。KLi与FL函数一起使用,并且具有32位。KOi和KIi与FO函数一起使用,并且每一个具有48位。如在式(3)和(4)中所示,在连续的两轮中函数FO和FL的顺序是颠倒的。KASUMI加密过程的64-位输出O从来自于第8轮的两个32-位输出得出,即O=L[8]‖R[8]。图2图示KASUMI加密过程所要求的操作。如图2中所示,每一轮包括FL函数、FO函数和XOR函数的操作,尽管在连续的两轮之间FL和FO函数的顺序颠倒。
[0032] 为了计算用于轮i的FO函数,32-位输入I_FO被分成两半L_FO[0]和R_FO[0],其中I_FO=L_FO[0]‖R_FO[0]。48-位子密钥KOi和KIi中的每一个也被分成三个16-位子子密钥,其中KOj=KOi,1‖KOi,2‖KOi,3,并且KIi=KIi,1‖KIi,2‖KIi,3。函数FO包括一组操作的三次迭代。对于每次迭代j(1<=j<=3),
[0033] R_FO[j]=FI(L_FO[j-1] KOi,j,KIi,j) R_FO[j-1], (5)
[0034] L_FO[j]=R_FO[j-1], (6)
[0035] 其中,FI是将在下面定义的函数。FO函数返回32-位值O_FO,O_FO是来自第3次迭代的两个16-位输出的级联结果,即O_FO=L_FO[3]‖R_FO[3]。图3图示如何计算用于轮i的FO函数。如附图中所示,FO函数的计算包括三次迭代,其中每次迭代包括两个XOR函数和一个FI函数。
[0036] 为了计算用于轮i中FO函数的第j次迭代的FI函数,16-位输入I_FI被分成9位的左半部分L_FI[0]和7位的右半部分R_FI[0],其中I_FI=L_FI[0]‖R_FI[0]。子密钥KIi,j被分成7位的左分量KIi,j,1和9位的右分量KIi,j,2,其中KIi,j=KIi,j,1‖KIi,j,2。FI函数如下定义。
[0037] L_FI[1]=R_FI[0], R_FI[1]=S9(L_FI[0]) ZE(R_FI[0]);
[0038] L_FI[2]=R_FI[1] KIi,j,2, R_FI[2]=S7(L_FI[1]) TR(R_FI[1])KIi,j,1;
[0039] L_FI[3]=R_FI[2], R_FI[3]=S9(L_FI[2]) ZE(R_FI[2]);
[0040] L_FI[4]=S7(L_FI[3]) TR(R_FI[3]), R_FI[4]=R_FI[3];
[0041] 其中,S7是将7位输入变换为7位输出的函数;S9是将9位输入变换为9位输出的函数;ZE是接受7位输入并且通过将两个0位添加到最前端(most-significant end)来将其转换为9位输出的函数;并且TR是接受9位输入并且通过丢弃两个最前端的位来将其转换为7位输出的函数。S7和S9函数在KASUMI规范中被详细地定义。如在上式中所描述的FI函数的内部操作在图4中被图示。
[0042] 为了计算用于KASUMI轮i的FL函数,32位输入数据I_FL被分成16位的左半部分L_FL和16位的右半部分R_FL,其中I_FL=L_FL‖R_FL。子密钥KLi也被分成各16位的两半,其中KLi=KLi,1‖KLi,2。以下操作在FL函数中执行:
[0043] R′_FL=R_FL ROL(L_FL∩KLi,1), (7)
[0044] L′_FL=L_FL ROL(R′_FL∪KLi,2), (8)
[0045] 其中ROL是将该函数的输入数据向左旋转1位的函数;“∩”代表按位AND(与)操作;并且“∪”代表按位OR(或)操作。FL函数通过将右半部分输出R′_FL和左半部分输出L′_ FL级联(即O_FL=L′_FL‖R′_FL)来返回32位输出数据O_FL。如在式(7)和(8)中所描述的FL函数的内部操作在图5中被图示。
[0046] 图6描绘实现KASUMI加密过程的一个示例性系统。该系统包括子密钥生成器620、控制器640、KL选择器650、KO选择器660、KI选择器670和KASUMI轮计算机制(mechanism)680。子密钥生成器620根据KASUMI规范基于128位输入密钥K生成用于每个KASUMI轮的子密钥KL、KO和KI。所述输入密钥可以生成自公钥或私钥。尽管子密钥生成器可以在一KASUMI轮的计算在KASUMI轮计算机制中开始的时候生成该KASUMI轮所需要的子密钥组,但是人们期望子密钥生成器在KASUMI轮的计算开始之前预生成该KASUMI轮所需的子密钥组,以提高系统的整体速度。
[0047] 控制器640在子密钥生成器、KL选择器、KO选择器、KI选择器和KASUMI轮计算机制之间进行协调和控制操作。例如,控制器可以指导子密钥生成器为KASUMI轮i准备好子密钥;当所要求的子密钥准备好被使用时,子密钥生成器可以通知所述控制器;并且一旦接收到这样的通知,控制器可以控制选择器为KASUMI轮计算机制提供正确的子密钥,并指导KASUMI轮计算机制计算轮i。当轮i完成时,KASUMI轮计算机制可以通知控制器,从而控制器可以指导子密钥生成器为轮i+1准备子密钥。此外,控制器可以从处理器接收/向处理器发送协调信号630。所述协调信号可以包括用于重置系统的重置信号、用于启动系统的启动信号和用于告知处理器KASUMI加密已经完成的完毕信号。
[0048] KL选择器650为每一个KASUMI轮中的FL函数计算选择KL子密钥。KO选择器660为每一个KASUMI轮中三个FI函数的计算选择KO子密钥。KI选择器为每一个KASUMI轮中三个FI函数的计算选择KI子密钥。尽管在图6中这些KL、KO、KI选择器被示为互相分离并且与子密钥生成器分离,但是它们可以被部分地或完全地组合,或者它们中的一些或全部可以与子密钥生成器组合来执行相同或类似的功能。
[0049] KASUMI轮计算机制680接受64位输入数据610,并使用由子密钥生成器所提供的子密钥为该输入数据计算八个KASUMI轮,以产生64位输出数据690。KASUMI轮计算机制包括FI块682、FL块684和输入/输出协调器686。FI块682能够计算八个KASUMI轮中的全部FI函数。FL块684能够计算KASUMI加密过程所要求的全部FL函数。输入/输出协调器686可以将输入数据分成两半以开始第一KASUMI轮运算,并且可以组合来自八个KASUMI轮的两个32位输出结果以产生最终的64位输出数据690。输入/输出协调器686还可以为每个FI函数分裂输入数据和组合输出数据。因为八个KASUMI轮中的全部FI函数包括相同的操作(每一个FI函数以它自己的输入数据和具体的子密钥进行操作),所以FI块包括仅仅执行FI函数定义中所指定操作的一组的组件是可能的。所述输入/输出协调器以及所述控制器640可以辅助从一个FI函数到后续FI函数或FL函数的数据流。类似地,FL块可以仅包括执行在FL函数定义中所指定操作的一组的组件,其中所述输入/输出协调器686和所述控制器640辅助两个连续的FL函数之间的数据流或FL函数和FI函数之间的数据流。
[0050] KASUMI加密过程具有多种在硬件实现中可以使用的特性。例如,每个KASUMI轮的FO函数中两个连续的FI函数的操作(如图3中示出)可以并行地进展。图7(a)描绘图3中的FIi,1和FIi,2操作可以如何并行地进行。因为(针对FIi,2操作的)迭代2不使用来自(针对FIi,1操作的)迭代1的结果,所以迭代1和迭代2可以同时进行。然而,(针对FIi,3操作的)迭代3不可以简单地与迭代1和迭代2两者并行进行,因为迭代3需要使用来自迭代1的结果作为它的输入。类似地,如图7(b)中所示,FIi,2和FIi,3操作可以并行地进行。此外,如图4中所示的,FI函数的S7和S9操作可以并行地进行。图8描绘S7和S9操作可以如何被并行地执行。
[0051] 不仅仅是在一KASUMI轮内的两个连续的FI函数可以被并行地执行(“轮内FI并行化”)(如图7(a)和7(b)中所示),跨两个KASUMI轮的两个连续的FI函数也可以被并行地执行(“跨轮FI并行化”)。根据如图2中所示的KASUMI加密过程的定义,跨轮FI并行仅可以在轮1和轮2之间、轮3和轮4之间、轮5和轮6之间以及轮7和轮8之间进行,因为仅在这些地方存在两个跨轮的连续FI函数。图9图示可以如何在轮1和轮2之间执行跨轮FI并行。32位输入数据902被分成16位的两半:左半部分数据904和右半部分数据906。左半部分数据904通过XOR机制908与子密钥KO1,1进行XOR。来自XOR机制908的输出数据被用作机制912的输入,所述机制912执行轮1的FI迭代1中FI函数FI1,1。FI1,
1操作使用子密钥KI1,1进行。来自FI1,1操作的结果与右半部分数据906进行XOR。轮1的FI迭代2中的操作与轮1的FI迭代1中的操作被并行地执行。右半部分数据906首先通过XOR机制910与子密钥KO1,2进行XOR。来自XOR机制910输出数据被用作机制914的输入,所述机制914执行轮1的FI迭代2中的FI函数FI1,2。来自FI1,2操作的结果进一步与来自XOR机制916的输出数据进行XOR以产生输出数据922,其中所述FI1,2操作使用子密钥KI1,2进行。
[0052] 在轮内FI并行(轮1的FI迭代1和FI迭代2)已经被执行后,跨轮FI并行化(轮1的FI迭代3和轮2的FI迭代1)可以开始。然而,轮内并行化和跨轮并行化之间存在差别,即,在轮1和轮2之间存在额外的XOR操作(即如图2中所示的FO1和FO2之间的XOR操作)。这样的差别可能要求轮内FI并行化和跨轮并行化以不同的方式实现,并且因此可能增加硬件复杂度。因此,人们期望具有一种实现轮内FI并行化和跨轮FI并行化两者的机制。这要求所述额外的XOR操作以特别的方式被处理。图9图示在实现跨轮FI并行化时处理所述额外的XOR操作的一种示例性方式。因为XOR操作是一种按位操作,所以轮1和轮2之间是32位操作的所述额外的XOR操作可以用分别由XOR机制924和923执
行的两个16位XOR操作代替,其中所述32位XOR操作具有一个输入是对KASUMI加密过程的输入数据的右半部分R[0]。XOR机制924使R[0]左半部分的16位(“R[0](L:16)”)作为它的一个输入,并且XOR机制934使R[0]右半部分的16位(“R[0](R:16)”)作为它的一个输入。因为XOR操作的“可交换性”特性,即(x y) z=x (y z),所以甚
至在数据922可获得之前,R[0](L:16)可以通过XOR机制924与子密钥KO2,1进行预XOR。
换言之,XOR机制924并非处于轮2的FI迭代1的关键路径中。类似地,只要数据922可获得,R[0](R:16)就可以通过XOR机制934与数据922进行预XOR。所以,XOR机制934并非处于轮1的FI迭代3的关键路径中。使用预XOR途径,可以使用被用来执行轮内FI并行的机制以及两个附加的XOR机制一起来执行跨轮FI并行化。
[0053] 通过对轮1和轮2之间额外的XOR操作进行预XOR,轮1的FI迭代3中所涉及的操作和轮2的FI迭代1中所涉及的操作与轮1的FI迭代1和2中所涉及的那些操作类似。在左侧,针对轮1的FI迭代3的操作从XOR机制920开始,所述XOR机制920在XOR机制916的输出数据和子密钥KO1,3之间执行XOR操作。来自XOR机制920的输出数据被机制930用来在子密钥KI1,3的控制下执行FI1,3函数。FI1,3操作的结果通过XOR机制928进一步与来自XOR机制934的输出数据936进行XOR。在右侧,针对轮2的FI迭代1的操作从XOR机制928开始,所述XOR机制928在来自XOR机制918的输出数据922和来自XOR机制924的输出数据之间执行XOR操作。来自XOR机制928的结果被机制932用来在子密钥KI2,1的控制下执行FI2,1函数。来自机制932的输出数据进一步与来自XOR机制940的输出数据进行XOR,以完成轮1的FI迭代3和轮2的FI迭代1之间的跨轮FI并行化。
[0054] 轮2的FO函数中剩余的操作可以通过轮2的FI迭代2和3之间的轮内并行化被执行。在左侧,针对轮2的FI迭代2的操作从XOR机制944开始,所述XOR机制944执行XOR机制940的输出数据和子密钥KO2,2之间的XOR操作。来自XOR机制944的输出数据被机制948用来在子密钥KI2,2的控制下执行FI2,2函数。FI2,2操作的结果通过XOR机制954进一步与来自XOR机制942的输出数据进行XOR。在右侧,针对轮2的FI迭代3的操作从XOR机制946开始,所述XOR机制946在来自XOR机制942的输出数据和子密钥KO2,3之间执行XOR操作。来自XOR机制946的结果被机制950用来在子密钥KI2,3的控制下执行FI2,3函数。来自机制950的输出数据进一步与来自XOR机制954的输出数据进行XOR,以完成轮2的FI迭代2和3之间的跨轮FI并行化。来自XOR机制954的输出数据形成轮2的左
侧输出958,并且来自XOR机制956的输出数据形成轮2的右侧输出960。左侧输出958和右侧输出960被级联在一起以形成轮2的输出962。
[0055] 典型地,一KASUMI轮的FO函数中的FI迭代中的操作是在一个时钟周期内被执行的。因为并行化,轮内FI并行化和跨轮并行化中的每一个可以在一个时钟周期内被执行。这意味着,如图9所示的轮1和轮2中的操作可以在三个时钟周期内而非六个周期内被执行。
[0056] 图10描绘跨两个KASUMI轮2和3的两个连续的FL函数的示例性实现(“跨轮FL-FL”运算)。该示例性实现将FL2和FL3之间额外的XOR操作(如图2中所示)并入(absorb)跨轮FL-FL运算中而不导致额外的延迟。因为该额外的XOR操作(32位)是按位操作,所以它可以被分别由XOR机制1014和1026执行的两个16位XOR操作代替。因此,该额外的XOR操作的一个32位输入数据R[1]被分成16位的两半,其中左半部分1016(R[1](L:16))是XOR机制1014的输入,并且右半部分1028(R[1](R:16))是XOR机制1026的输入。因为XOR操作的“可交换性”特性,即(x y) z=x (y z),所以XOR机制
1014可以被置于XOR机制1022之前,从而XOR机制1014并非处于跨轮FL-FL运算的关键路径中,即由1014和1022所执行的操作不导致额外的延迟。没有必要移动XOR机制1026,因为它并非处于跨轮FL-FL运算的关键路径中。
[0057] 通过将FL2和FL3之间额外的XOR操作并入跨轮FL-FL运算中,该跨轮FL-FL运算可以在一个时钟周期内被完成。如图10所示,跨轮FL-FL运算的32位输入数据1002被分成16位的两半:左半部分1004和右半部分1006。机制1008在左半部分1004和子密钥KL2,1之间执行逻辑按位“AND”操作。同时,XOR机制1014在左半部分1004和R[1](L:16)之间执行XOR操作。来自机制1008的输出数据通过机制1010被向左旋转一位。来自机制1010的输出数据通过XOR机制1012与输入数据的右半部分1006进行XOR。来自XOR机制
1012的输出数据被XOR机制1026进一步与R[1](R:16)进行XOR。同时,机制1018在来自XOR机制1012的输出数据和子密钥KL2,2之间执行按位逻辑“OR(或)”操作。来自机制
1018的输出数据随后通过机制1020被向左旋转一位。来自机制1020的输出数据进一步与来自XOR机制1014的输出数据进行XOR。
[0058] 机制1030在来自XOR机制1022的输出数据和子密钥KL3,1之间执行按位“AND”操作。该“AND”操作的结果通过机制1032被向左旋转一位。XOR机制1034在来自1028的输出数据和来自1032的输出数据之间执行XOR操作。来自1034的输出数据形成跨轮FL-FL运算的右侧输出1048。另一方面,机制1036在来自1034的输出数据和子密钥KL3,2之间执行按位逻辑“OR”操作。该“OR”操作的结果通过机制1038被向左旋转一位。XOR机制1040在来自1022的输出数据和来自1038的输出数据之间执行XOR操作,以产生跨轮FL-FL运算的左侧输出1044。左侧输出1044和右侧输出1048被级联在一起以形成用于该跨轮FL-FL运算的32位输出数据1046。
[0059] 图11图示KASUMI轮和处理周期之间的关系。如图2中所示,奇数轮包括之后紧跟FO函数的FL函数,而偶数轮包括之后紧跟FL函数的FO函数。FO函数进一步包括三个FI函数。第一轮以FL函数开始,所述FL函数可以在周期1内被执行。轮1中的第一个FI函数和第二个FI函数可以在周期2内被并行执行(“轮内FI并行化”)。轮1和轮2之间的XOR操作可以被预XOR,从而轮1中的第三个FI函数和轮2中的第一个FI函数可以在周期3内被并行地执行(“跨轮FI并行化”)。轮2中的第二个FI函数和第三个FI函数可以形成另一个轮内FI并行化,并且在周期4内被并行地执行。轮2和轮3之间的XOR操作可以被并入跨轮FL-FL运算中,并且可以在周期5内被执行,所述跨轮FL-FL运算包括轮2中的FL函数和轮3中的FL函数所需的操作。因为轮内FI并行化、跨轮FI并行化和跨轮FL-FL运算中的每一种可以在一个周期内被执行,所以八个KASUMI轮可以在总共17个周期内被执行。
[0060] 图12根据本发明的实施方案,描绘通过采用FI-FI并行和跨轮FL-FL运算来实现图6中的KASUMI轮计算机制670的示例性系统。该KASUMI轮计算机制的实现包括FI/FL辅助器(facilitator)1210、FI-FI运算机制1220和FL-FL运算机制1230。FI-FI运算机制1220可以被这样配置,即轮内FI并行化和跨轮并行化两者可以在一组共享的组件中被计算。FL-FL运算机制1230可以被配置来计算单个FL函数或两个跨轮连续的FL函数。FI/FL辅助器1210可以协调FI-FI运算机制和FL-FL运算机制,从而这两个机制可以被用来运算在八个KASUMI轮中所涉及的全部FI和FL函数。FI/FL辅助器可以包括输入准备组件1212和输出控制组件1214。输入准备组件1212可以为FI-FI或FL-FL运算机制准备输入数据。例如,它可以为FI或FL函数将输入数据分成两半。输出控制机制1214可以控制来自FI-FI或FL-FL运算机制的输出流。例如,它可以将输出数据从一个轮内FI并行化引导到跨轮FI并行化或跨轮FL-FL运算,或反之。输出控制机制还可以基于来自FI-FI和FL-FL运算机制的输出数据形成用于KASUMI加密过程的最终输出数据。
[0061] 图13描绘可以执行KASUMI加密的网络系统。所述系统可以包括通过交换结构1310(例如纵横结构或共享的存储器交换结构)互连的线卡集合1320(“刀片(blade)”)。
各个线卡可以位于相同的物理位置或不同的物理位置(例如,不同城市)。所述交换结构例如可以遵循通用交换接口(CSIX)或其他结构技术,例如HyperTransport、Infiniband、外设部件互连(PCI)、基于SONET的分组传输(同步光网络)、RapidIO和/或UTOPIA(用于ATM的通用测试和操作PHY(物理层)接口)。
[0062] 各个线卡(例如1320A)可以包括一个或更多个处理网络连接上的通信的物理层(PHY)设备1322(例如光、有线和无线PHY)。PHY在不同网络介质运载的物理信号和数字系统所使用的位(例如“0”和“1”)之间进行翻译。线卡1320还可以包括成帧器设备(例如,以太网、同步光网络(SONET)、高级数据链路(HDLC)成帧器或其他的“层2”设备)1324,所述成帧器设备可以对帧进行例如检错和/或纠错的操作。示出的线卡1320还可以包括一个或更多个网络处理器1326,所述网络处理器1326对通过一个或多个PHY 1322接收到的分组(packet)执行分组处理操作,并且经由交换结构1310将该分组引导到提供出口接口的线卡以转发该分组。潜在地,一个或多个网络处理器1326可以代替成帧器设备1324来履行“层2”的职责。
[0063] 一个或多个网络处理器1326可以是Intel 因特网交换网络处理器(IXP)或其他以不同设计为特征的网络处理器。所述网络处理器以在单个集成电路上的分组处理引擎集合为特征。各个引擎可以提供多个执行线程。另外,网络处理器包括核心处理器(所述核心处理器通常被编程来完成在网络操作中所涉及的“控制面”的任务。然而,核心处理器也可以处理“数据面”的任务。网络处理器1326还以至少一个可以在处理器和其他网络组件之间运载分组的接口为特征。例如,所述处理器可以以交换结构接口1310为特征,所述交换结构接口1310使得处理器1326能够向与所述结构相连的其他处理器或电路发送分组。处理器1326还可以以使得处理器能够与物理层(PHY)和/或链路层设备(例如MAC或成帧器设备)通信的接口为特征。处理器1326还包括例如与主机或其他网络处理器进行通信的接口(例如,外设部件互连(PCI)总线接口)。此外,处理器1326还可以包括被引擎共享的其他组件,例如存储器控制器、哈希引擎和内部便笺式存储器。
[0064] 如图13中所示,每个线卡1320可以以可操作的方式与至少一个执行KASUMI加密的KASUMI模块1330(例如1330A)耦合。在一个实施方案中,KASUMI模块可以与线卡分离。在另一个实施方案中,KASUMI模块可以与线卡集成。同样,在一个实施方案中,KASUMI模块可以是网络处理器1326的部分或PHY 1322的部分。在再一个实施方案中,KASUMI模块可以位于诸如链路层、网络层和/或应用层的其他的网络层次中。
[0065] 虽然参考图1-13描述了本发明的示例性实施方案,但是本领域的技术人员将容易明白,可以存在本发明的很多可替换的实施方案。例如,可以改变功能块或处理过程的执行顺序,和/或可以改变、取消或组合所描述的功能块或处理过程的一些。
[0066] 在以上描述中,已经描述了本发明的不同方面。出于解释的目的,阐述了具体的数量、系统和配置,以提供对本发明的完整理解。然而,获知本发明的本领域的技术人员将会清楚,没有这些具体的细节也可以实践本发明。此外,为了不使本发明变得模糊,省略、简化、组合或分离了公知的特征、组件或模块。
[0067] 这里所描述的本发明的实施方案可以用电路来实现,所述包括硬连线电路、数字电路、模拟电路、可编程电路等。它们也可以用计算机程序来实现。这样的计算机程序可以用高级程序性语言或面向对象的编程语言来编写。然而,如果期望的话,也可以用汇编语言或机器语言来实现所述程序。语言可以被编译或解译。另外,这些技术可以用在各种连网环境中。这样的计算机程序可以被存储在通用或专用可编程处理系统可读的存储介质或设备(例如硬盘驱动器、软盘驱动器、只读存储器(ROM)、CD-ROM设备、闪存存储器设备、数字多用途盘(DVD)或其他储存设备)上,用于当所述储存介质或设备由处理系统读取时,配置并运行该处理系统来执行这里所描述的过程。本发明的实施方案还可以被实现为机器可读存储介质,被配置来与处理系统一起使用,其中储存介质被配置为导致处理系统以专门的和预定的方式来运行,以实现这里所描述的功能。
[0068] 虽然已参考图示说明性的实施方案描述了本发明,但是该描述不想被理解为限制性的。对于本发明所属领域的技术人员来说所清楚的对所述图示说明性实施方案的各种修改以及本发明的其他实施方案都被视为落入本发明的精神和范围内。