石头:2229 - 371 x
Sandipan巴苏 加尔各答大学Asutosh学院计算机科学系,印度西孟加拉邦加尔各答700026 |
通讯作者:Sandipan巴苏,电子邮件:(电子邮件保护) |
有关文章载于Pubmed,谷歌学者 |
更多相关文章请访问全球计算机科学研究杂志。
有几种对称和非对称数据加密算法。IDEA(国际数据加密算法)是最强的密钥分组密码之一。在本文中,我尝试以不同的方式表示现有的IDEA算法。在下面的插图中,我们将看到如何以更简单的方式表示加密。
关键字 |
圆,输出转换,子键,对称键算法。 |
介绍 |
国际数据加密算法(IDEA)是一种分组密码算法,由ETH-Zürich的赖雪佳(Xuejia Lai)和詹姆斯·l·梅西(James L. Massey)设计,于1991年首次被描述。原始算法经过几次修改,最终命名为国际数据加密算法(IDEA)。所述算法适用于64位纯文本和密文块(同时)。为了加密,64位的纯文本被分成4个16位的子块。在我们的讨论中,我们将这四个块表示为P1(16位),P2(16位),P3(16位)和P4(16位)。每个区块经过8轮和一个OUTPUT TRANSFORMATION阶段。在这8轮中的每一轮中,都会执行一些(算术和逻辑)操作。在整个8个回合中,重复相同的操作顺序。在最后一个阶段,即OUTPUT TRANSFORMATION阶段,我们只执行算术操作。在加密过程开始时,64位纯文本被分成4个大小相等的块,以便ROUND1输入。ROUND1的输出是ROUND2的输入。 Similarly, the output of ROUND2 is the input of ROUND3, and so on. Finally, the output of ROUND8 is the input for OUTPUT TRANSFORMATION, whose output is the resultant 64 bit cipher text (assumed as C1 (16bits), C2 (16 bits), C3 (16 bits) and C4 (16 bits)). As the IDEA is a symmetric key algorithm, it uses the same key for encryption and for decryption. The decryption process is the same as the encryption process except that the sub keys are derived using a different algorithm [6]. The size of the cipher key is 128bits. In the entire encryption process we use total 52 keys (ROUND1 to ROUND8 and OUTPUT TRANSFORMATION phase); generated from a 128 bit cipher key. In each round (ROUND1 to ROUND8) we use six sub keys. Each sub-key consists of 16bits. And the OUTPUT TRANSFORMATION uses 4 sub-keys. |
详细分析思路 |
正如我们之前提到的,在IDEA算法中,我们每次取大小为64位的输入文本,并将其平均分割;也就是说,64位的纯文本被分成4个子块,每个子块的大小为16位。现在,让我们看看,在整个过程中需要哪些基本操作。 |
前8轮需要的手术- |
1.对216 +1取模。 |
2.对216求模。 |
3.按位异或。 |
以及OUTPUT TRANSFORMATION阶段所需的操作 |
1.乘法课216 +1。 |
2.对216求模。 |
上述所有操作都是在16位子块上执行的。为了表示运算的简单性,我们用*符号表示对216 +1求乘法,用+符号表示对216求加法。按位的异或将由它通常的符号表示。现在,让我们看一下加密过程的密钥生成。在原始密钥上使用25位循环左移操作,我们生成其他后续子密钥,用于不同的轮。例如,在总数中没有。子密钥K1拥有原始密钥的前16位,子密钥K2拥有下16位,依此类推,直到子密钥K6;例如,对于ROUND1,子密钥K1到K6首先(16x6=)使用原始密码密钥的96位。 |
在ROUND2中,子密钥K7和K8占用原始密码密钥的剩余比特(比特97到比特128)。然后我们对原始密钥执行循环左移(25位)操作。因此,原始密钥的第26位移动到第一个位置并成为第1位(新移位的密钥),原始密钥的第25位移动到最后一个位置并成为第128位(第一次移位后)。这个过程一直持续到ROUND8,也在outputtransform阶段;即,在ROUND8之后,密钥再次向左移动25位,并将被移动的密钥的前64位作为使用,并在OUTPUT transformation阶段用作K49到K52的子密钥。因此,根据上面的观察,我们可以写成- |
思想分析 |
让我们假设,在图1的例子中,四个初始块是P1、P2、P3和P4。即P1、P2、P3和P4是ROUND1的输入。假设ROUND1的输出为R1、R2、R3、R4。同理,ROUND2的输出,记为R5、R6、R7、R8;等等......之前,我们已经看到,在一轮IDEA中发生了什么操作。现在,我们分析ROUND1的输出。如果我们仔细观察第一轮(或这8轮中的任何一轮),那么我们会发现,在一轮中发生的所有操作最终都可以用简单的方程表示。ROUND1的输出可以写成- |
其他后续回合的输出也可以以同样的方式写入。从上面我们会注意到,要计算R1, R2, R3和R4,我们必须执行很多操作。但是,在每一轮IDEA中,我们都在一次又一次地执行同样的操作,而且是不必要的。例如,为了计算R1,我们对(P1 * K1)和下划线部分的结果进行逐位异或运算(如公式所示)。同样,为了计算R2,我们再次执行R1中划线的相同操作。为了计算R3和R4,我们一次又一次地执行相同的操作(用斜体+下划线表示)。除此之外,在R3和R4的计算中,我们再次执行相同的操作序列(R3和R4的整个下划线部分)。 |
因此,对于R1、R2、R3和R4,没有逻辑可以一遍又一遍地执行同一组操作。为了简单起见,我们只执行一次基本操作,并将其结果用于其他进一步的计算。计算R1、R2、R3和R4的基本操作如下- |
1.P1 * k1 |
2.P4 * k4 |
3.P2 + k2 |
4.P3 + k3 |
其他操作都是基于这些基本操作。接下来,我们表示了实现IDEA算法所需的硬件单元框图。为了在硬件上实现它,我们需要一些单独的硬件组件来完成单独的任务,也需要作为一个整体来完成。 |
在图2中,我们可以看到,有一个名为“Key generator”的单元。在加密过程开始时,我们向上述单元提供原始(128位)密码密钥。必要时,KEY GENERATOR单元通过对当前密钥进行循环左移操作(25位)产生不同的子密钥,并将子密钥提供给其他单元(对216 +1作乘法模,对216作加法模)。这个单元被命名为“216+1的乘法模”,用于在需要时执行216+1的所有乘法运算。单元“除216模”和单元“位异或”也是如此。现在,我们期待着IDEA算法的并行实现。在我们的方法中,我们已经展示了,整个加密过程可以分几个步骤执行,并在可能的情况下并行执行操作。并行操作可以通过软件和硬件实现。在R1、R2、R3和R4的计算中,上述操作可以在不同的时间瞬间执行:时间单元1:t1=P1 * K1, t3=P3 + K3(这两个操作可以由对应的单元并行完成。T1和t3用于保存临时结果。) |
时间单元2:t2=P2 + K2;t4=P4 * K4;t5 = t1 t3 |
时间单元3:t6=t2 t4;t7=t5 * K5 |
时间单元4:t8=t6 + t7 |
时间单元5:t9=t8 * K6 |
时间单元6:R1 = t9 t1;t10 = t9 + t7 |
时间单元7:R2 = t9 t3 |
时间单元8:R3 = t10 t2 |
时间单元9:R4 = t10 t4; |
从上图可以看出,如果我们要并行执行一个回合的操作,那么至少需要9个时间单位。以单个时间单位写的操作可以并行完成。我们还可以看到,在ROUND1完成后,部分加密的输入文本R1在时间单位6产生,R2在时间单位7产生,R3在时间单位8产生,R4在时间单位9产生。 |
但是,对于下一轮,即ROUND2,计算R5将涉及使用R4(从ROUND1生成)。因此,在我们开始计算ROUND2之前,我们必须等待9个时间单位;即,直到从ROUND1生成R4。因此,直到第7轮,生成所有部分加密的密文(R1到R28),至少需要(7轮x 9) = 63个时间单位。现在,让我们看看如何改进第8轮&输出转换阶段。对于下面的示例,我们假设子密钥K49-K52在第8轮中也可用。因此,ROUND 8和OUTPUT TRANSFORMATION的计算也可以完成如下- |
时间单位64:t1=R25 * K43, t3=R27 + K45 |
时间单位65:t2=R26 + K44;t4=R28 * K46;t5 = t1 t3 |
时间单位66:t6=t2 t4;t7=t5 * K47 |
时间单元67:t8=t6 + t7 |
时间单位68:t9=t8 * K48 |
时间单位69:R29 = t9 t1;t10 = t9 + t7 |
时间单位70:R30 = t9 t3;R33 = r29 * k49 |
时间单位71:R31 = t10 t2;R34 = r30 + k50 |
时间单位72:R32 = t10 t4;R35 = r31 + k51 |
时间单位73:R36 = R32 * K52 |
从上图中我们可以看到,如果在ROUND8中有K49到K51的子键,那么我们就可以在ROUND8中执行OUTPUT TRANSFORMATION的前三个操作。因此,整个过程可以更快。因此,要完成IDEA加密过程,所需的时间是73个时间单位。 |
讨论 |
在上面的讨论中,可以看到,完成IDEA加密过程所需的最小时间是73个时间单位。这里,每个时间单位的跨度是多少,这取决于实现。在软件实现中,这取决于编写代码以实现操作中的并行性的效率。在硬件实现中,加密过程有多快,取决于不同的可用电路,用于实现并行性的硬件架构(因为,有许多可用的选项),以及用于设计和实现整个硬件单元的技术(图2)。在XCV300-6的实现中,位并行版本实现了1166Mb/秒的加密速率,使用82MHz时钟,而位串行实现在150MHz[2]的时钟速率下实现了600Mb/秒的吞吐量。位并行实现比位串行实现实现了更高的吞吐量和更低的延迟,而位串行实现允许最小面积的全并行设计[2]。在XCV1000E-6上实现,总时间为1.246μs,最大时钟频率105.9MHz,吞吐量6.78Gbps[3]。在他的论文中,Daemen提到了IDEA的大型弱键类。从某种意义上说,这些密钥很弱,只需要非常少量的工作就可以检测到它们的使用。可以通过稍微修改IDEA[4]的键调度来消除弱键问题。 |
结论 |
IDEA(国际数据加密算法)是一种强大的分组密码。虽然整个算法涉及到很多操作,但只涉及到三种不同的操作(如上所述)。由于密码密钥大小为128位,在这方面IDEA太强了(已经考虑到弱密钥)。 |
参考文献 |
|