917829-密码学-第四章 分组密码 4.4 国际数据加密算法(IDEA)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
,重复这个过程,直到
产生52个16比特子密钥为止。
二、IDEA算法描述
52个密钥子块的生成
k1, k2 ,, k127 , k128 k26 , k27 ,, k24 , k25 k51, k52 , , k49 , k50
z1, z2, z3, z4, z5, z6, z7 , z8 z9 , z10 , z11, z12 , z13, z14 , z15, z16 z17 , z18, z19 , z20 , z21, z22 , z23, z24
(4)
(4) (4)1 (3) (3)
1
3
24
56
Z Z Z Z Z Z (3)1
(3)
(3) (3)1 (2) (2)
1
3
24
56
Z Z Z Z Z Z (2)1
(2)
(2) (2)1 (1) (1)
1
3
24
56
Z Z Z Z (1)1
(1)
(1) (1)1
1
2
34
表5.3.1 IDEA加、脱密子密钥的关系
IDEA是一种使用128比特密钥以64比特分组 为单位加密数据的分组密码,其设计目标可以归 结为两方面:一方面与密码强度有关,另一方面 与使用的方便性有关。
三、IDEA的设计原理
(一)密码强度
IDEA的下列特性与其密码强度有关: 分组长度:分组长度应足够大,以抵抗统计分析。 使用64比特的分组大小通常认为已经足够强。
)
Z
(7) 5
Z
(7 6
)
Z Z Z Z Z Z (8) (8) (8) (8) (8) (8) 1 23456
Z Z Z Z (9) (9) (9) (9) 1 234
Z Z Z Z Z Z (9)1
(9)
(9) (9)1 (8) (8)
1
2
34
56
Z Z Z Z Z Z (8)1
(8)
(8) (8)1 (7) (7)
经过模216加法运算,实现了将输入的低位信息 向输出的高位的扩散。
二、IDEA算法描述
模216+1乘法的具体运算过程如下:
(1)
如果
a=0,则
ab
mod(216
1)
1 b 216 1 b
b 0,1 2 b 216 1
(2)
如果
b=0,则
ab
mod(216
1)
பைடு நூலகம்
1 216
a 1
a
a 0,1 2 a 216 1
二、IDEA算法描述
(3) 若a、b为两个非零整数,则有
ab mod(216 1)
ab(mod 216 ) ab(div216 )
若ab(mod 216) ab(div216)
ab(mod 216 ) ab(div216 ) 216 1
若ab(mod 216) ab(div216)
二、IDEA算法描述
基本参数
分组长度:64比特 密钥长度:128比特 迭代圈数:8圈(每圈6个子密钥块)
再附加一个输出变换(4个子密钥块)
IDEA的分组长度为64比特,密钥长度为128比特。其加、 脱密运算用的是同一个算法,二者的不同之处仅在于密钥调 度不同。其加、脱密运算是在128比特初始密钥作用下,对 64比特的输入数据分组进行操作,经8圈迭代后,再经过一 个输出变换,得到64比特的输出数据分组。整个运算过程全 部在16位子分组上进行,因此该算法对16位处理器尤其有效。
这说明当共处理变换以 y1, y2 , y3, y4 作为输入,而子密钥 z, z 不变时,其输出为 x1, x2, x3, x4 。也就是说,共处理 变换的4个输入子块经过两次共处理变换后的输出是它本 身。至此证明了IDEA分组密码加、脱密变换的相似性。
三、IDEA的设计原理
“使用来自不同代数群的混合运算”是IDEA 所提出的新的设计思想,它利用三个“不相容” 的群运算以达到混乱,利用乘加密码结构来实现 扩散和进一步的混乱。使得IDEA复杂的代数结构 不能得到简化。而这正是我们在设计分组密码算 法中所追求的。
证明 (1) b=0时,abmod(2161)= 216 216 mod(216+1)
=1=1-0,
b=1时,abmod(2161)= 216 mod(216+1)=0=1-1,
2 b 216 1 时,abmod(2161)
= 216 bmod(216+1)
= -bmod(216+1) = 216 +1-b
… …
k126 , k127 ,, k124 , k125
z41, z42 , z43, z44 , z45 , z46 , z47 , z48
k23, k24 ,, k86; k87 ,, k21, k22
取前64比特
z49 , z50 , z51, z52
密钥比特的使用:平均6-7次
二、IDEA算法描述
其中 ab(div216 ) 表示ab 除以216所得的商。
设 那么就有 注意到 即证
ab 216 h l
ab 216 h l l h mod(216 1)
l ab(mod 216 )
h ab(d iv216 )
二、IDEA算法描述
(二)密钥生成算法
IDEA分组密码的子密钥生成算法比较容易。用于8
,
Z1( 2 )
,
Z
2(2,) 然后将上述128
比特密钥循环左移25位,并将由此产生的128比特密钥再
从 左 到 右 分 成 8 个 16 比 特 子 块 , 得 到 随 后 的 8 个 子 密
钥
Z (2) 3
,
Z
(2) 4
,
Z
( 5
2)
,
Z
(2) 6
,
Z1(3)
,
Z
(3) 2
,
Z
(3) 3
,
Z
(3) 4
三、IDEA的设计原理
关于扩散:
在IDEA中,扩散是由乘加结构(MA)实现的。 MA的输入有两部分,一部分是由明文导出的两个 16比特数值,另一部分是两个16比特密钥子块。第 一圈输出的每一比特依赖于输入(明文部分和密钥 部分)的每一比特。经8圈循环之后,可提供非常 有效的扩散。
加、脱密算法的相似性,只需证明共处理变换的4个输入子
块经过两次共处理变换后的输出仍然是它本身即可。
图中的虚框部分被称为乘加结构MA。MA的输入和输
出均为32比特, 显然输入为( x1 x3, x2 x4 ),若记输 出的左16比特为LMA,右16比特为RMA,则有下面4个式
子:
y1 x1 RMA(x1 x3 , x2 x4 , z, z)
Z1(4)
Z
(4) 2
Z
(4) 3
Z
(4) 4
Z
(4) 5
Z
(4) 6
5
Z Z Z Z Z Z (5) (5) (5) (5) (5) (5) 1 23456
6
Z Z Z Z Z Z (6) (6) (6) (6) (6) (6) 1 23456
7 8
输出变换
Z1(7)
Z
(7) 2
Z
(7) 3
Z
(7 4
a + b (mod216) = c 其中a = a15 a14…a0,b = b15 b14…b0,c = c15 c14…c0, ai , bi , ci{0, 1}, i = 0, 1, …, 15。
由于进位的原因,输出c的比特位ci包含有输入 a 和b 的比特位ai、bi、ai-1、bi-1、…、a0、b0的信息。
y2 x2 LMA(x1 x3 , x2 x4 , z, z) y3 x3 RMA(x1 x3 , x2 x4 , z, z)
注意到
y4 x4 LMA(x1 x3 , x2 x4 , z, z)
y1 y3 x1 x3 , y2 y4 x2 x4
二、IDEA算法描述
则将上面4个式子移项得到
x1 y1 RMA( y1 y3 , y2 y4 , z, z) x2 y2 LMA( y1 y3 , y2 y4 , z, z) x3 y3 RMA( y1 y3 , y2 y4 , z, z) x4 y4 LMA( y1 y3 , y2 y4 , z, z)
216 的加法逆。
二、IDEA算法描述
圈数
加密子密钥
脱密子密钥
1
Z1(1)
Z
(1) 2
Z
(1) 3
Z
(1) 4
Z
(1) 5
Z
(1) 6
2
Z Z Z Z Z Z (2) (2) (2) (2) (2) (2) 1 23456
3
Z
(3) 1
Z
(3) 2
Z
(3) 3
Z
(3) 4
Z
(3) 5
Z
(3) 6
4
1991年对PES作了改进,并将改进后的算法 称 为 IPES ( Improved Proposed Encryption Standard,改进型推荐加密标准)。
IPES 于 1992 年 改 名 为 IDEA ( International Data Encryption Algorithm,国际数据加密算法)。
Z (1) 5
Z (1) 3
Z
(1) 4
Z (1)
6
第 一 圈
Z (9) 1
Z (9) 2
Y1
Y2
Z (9) 3
Z (9) 4
Y3
Y4
二、IDEA算法描述
其中Xi(i=1, 2, 3, 4)是16比特明文子分组; Yi(i=1, 2, 3, 4)是16比特密文子分组; Zi (r)(对r=1,…,8, i=1,2,3,4,5,6; 对r=9, i=1, 2, 3, 4 )是
二、IDEA算法描述
(四)IDEA加、脱密变换的相似性
下图所示的变换是IDEA的圈变换中的一部分,称为共 处理变换。
x1
x2
x3
x4
•
•
•
•
z
z
•
•
y1
y2
y3
y4
IDEA的圈变换中的共处理变换
二、IDEA算法描述
设该变换的4个16比特输入子块分别为x1, x2, x3, x4 ,4个 16比特输出子块分别为 y1, y2, y3, y4 。容易推出,要证明IDEA
(三)脱密算法
脱密过程与加密过程基本上是相同的,唯一改变的
是脱密过程中所使用的52个16比特的脱密子密钥
k
( i
r是) 由
加密子密钥 zi(r)按下述方式计算出来的:
(k1(
r
)
,
k
(r 2
)
,
k
( 3
r
)
,
k
(r 4
)
)
( z (10r )1 1
,
z
(10 3
r
)
,
z
(10r 2
)
,
z (10r )1 4
1
3
24
56
Z Z Z Z Z Z (7)1
(7)
(7) (7)1 (6) (6)
1
3
24
56
Z Z Z Z Z Z (6)1
(6)
(6) (6)1 (5) (5)
1
3
24
56
Z Z Z Z Z Z (5)1
(5)
(5) (5)1 (4) (4)
1
3
24
56
Z Z Z Z Z Z (4)1
密钥长度:密钥长度应足够长,以抵抗密钥穷尽攻 击,通过使用128比特的密钥长度,在将来的很长时 间里IDEA似乎在这方面都是安全的。
三、IDEA的设计原理
关于混乱: 密文应以一种复杂的方式依赖于明文和密钥,这
样做的目的是:使确定密文的统计特性和明文的统 计特性的依赖关系非常复杂。IDEA通过使用三种 不同的操作达到该目的,而DES主要靠异或运算及 小的非线性S盒代替来实现。
圈迭代和输出变换的52个(8圈迭代每圈6个,输出变换4
个)16比特子密钥是由128比特初始密钥按下述方式生成
的:首先将128比特初始密钥从左到右分成8个16比特子
块,并将所得的 8 个子块直接作为加密算法中最前面的8
个子密钥
Z1(1)
,
Z
(1) 2
,
Z
(1) 3
,
Z
(1) 4
,
Z
(1) 5
,
Z
(1) 6
密码学
第四章 分组密码
4.4 国际数据加密算法(IDEA)
4.4 国际数据加密算法(IDEA)
IDEA背景 IDEA算法描述 IDEA的设计原理
一、IDEA背景
Xuejia Lai和James Massey于1990年提出了 PES (Proposed Encryption Standard,推荐加密 标准)分组密码算法。
IDEA 加密总 体方案 流程图
64bit 明文X
x1 x2 x3 x4
第1圈
z1 z6
第2圈
z7 z12
第8圈
z43 z48
输出变换
y1 y2 y3
y4
z49 z52
64bit密文Y
二、IDEA算法描述
(一)加密算法
IDEA分组密码算法的加密过程如图所示。
X1
X2
X3
X4
Z
(1) 1
Z
(1) 2
16比特圈子密钥; ⊕表示16比特的逐位异或运算; + 表示16比特整数的模216加法运算; 表示16比特整数的模216+1乘法运算,其中全零子块
用216代替。
三种基本运算:按位模2加,模216加法,模216+1乘 法。
二、IDEA算法描述
模216加法运算是IDEA算法中使用的非线性环节 (相对异或运算而言),记
)
(k1(
r
)
,
k
(r 2
)
,
k
( 3
r
)
,
k
(r 4
)
)
( z (10r )1 1
,
z
(10 2
r
)
,
z (10r 3
)
,
z (10r )1 4
)
(k
( 5
r
)
,
k
( 6
r
)
)
(
z
(9r 5
)
,
z
(9r 6
)
)
r 2,,8 r 1,9 ; r 1,,8 。
这里 z1 表示 z 的模 216 1 的乘法逆, z 表示 z 的模