第 八讲 数据加密标准 ( des )
DESCRIPTION
第 八讲 数据加密标准 ( DES ). 1974 年, IBM 向美国国家标准局 (NBS) 提交了一个名为 LUCIFER 的加密算法。 NBS 将其转给了国家安全局 (NSA) 进行审定,之后就得到了一个名为数据加密标准 DES 的算法。 1977 年, NBS 正式将其用于无限制级的政府通讯。. 从 1975 年起,围绕 DES 的争论就没有停止。许多学者担心 NSA 无形的手对算法产生的干预。如: (1) NSA 可能修改算法以安装陷门。 (2) NSA 将原先的 128 位密钥缩短到 56 位。 - PowerPoint PPT PresentationTRANSCRIPT
第八讲 数据加密标准 (DES)
1974 年, IBM 向美国国家标准局(NBS) 提交了一个名为 LUCIFER 的加密算法。 NBS 将其转给了国家安全局 (NSA) 进行审定,之后就得到了一个名为数据加密标准 DES 的算法。 1977 年,NBS 正式将其用于无限制级的政府通讯。
从 1975 年起,围绕 DES 的争论就没有停止。许多学者担心 NSA 无形的手对算法产生的干预。如:
(1) NSA 可能修改算法以安装陷门。 (2) NSA 将原先的 128 位密钥缩短到 56 位。 (3) 算法内部的运行机理始终没有得到明确
解释。例如,差分分析。 许多 NSA 设计算法的原理在 90 年代逐渐
清晰起来,但在 70 年代这些的确另人迷惑。
DES 已经使用了三十多年,因此, 2000 年,国家标准与技术研究所 (NIST) 决定使用新的系统代替 DES 。但是 DES 仍然值得研究,它代表了一类曾经非常流行的对称加密算法。
DES 是分组密码,每个分组为 64 比特数据。 64 比特明文通过加密最后成为 64 比特密文。 DES 的核心是一个被称为 Feistel 系统的部件。
本讲提要 简化 DES 型算法 差分分析 DES DES 不是一个群 破译 DES 口令安全
1 简化 DES 型算法
Li Ri
Ri1(6 比特 )Li1(6 比特 )
Ki (8 比特 )
f
一轮 Feistel 系统
一轮 Feistel 系统 (续 )
。。最后交换次序得到继续下去就能得到
。,,,
输出,则给出步输入使用相反的次序。第一
但是密钥使用加密相同的过程,。解密过程
。并产生密文次数这一操作会做某个固定。,,,异或表示这里,,和
加密过程
0000
11
111
111
]][[])(
)(][[])(][[
2 1 XOR
)(
RLLR
LRKLf
KRfLRKLfRL
LRK
LRRL
RL n
i
KRfLRRL
nnnn
nnnnnnnn
nni
nnnn
nn
iiiiii
一轮 Feistel 系统 (续 )函数 f(Ri1,Ki)
Ri1
E
E (Ri1)
Ki
4 bits
S1
4 bits
S2
f(Ri1, Ki)
一轮 Feistel 系统 (续 )扩张函数
1 32 4
3
5
4
6
1 32 4 5 6
S- 盒
100001010110111000011101
010011001111101110000100
011101111000010110100001
000111100011110001010101
2
1
S
S
一轮 Feistel 系统 (续 )
011000100110
100110011000000100011100
)( 000100)(
100 1111 000
1100 110011110110010110101010
(100110)100110 01100101
100111001001
1
111
2
1
1
11
。我们得到
,。并且,接着。,因此,。得到输出送给。比特得到输出送给比特。
和。也就是和假定输入是
ii
ii
iiiiii
ii
iii
RL
RL
KRfLRKRf
S
S
KER
KRL1例子
2 差分分析 思路:通过适当选择明文得到密文比较
它们的差异以推导出使用的密钥。我们从前面的操作可以看出密钥与 E(Ri1) 进行异或得到结果,因此,我们可以通过再次异或移除由密钥引入的部分随机性。
2.1 针对三轮的差分分析
参数。以外的除密钥通过输入输出知道所有在最后这个式子中我们
。,,
我们得到,,由于
。
重新安排一下得到。
因此,。,定义。且假定另一条消息
。,,,,我们有。应该得到相应
不同的输入消息为起点进行分析。使用而不是我们先以
4
4*44414
*4
*343
4*34314
4*3431
*444
***11
*1
*1
432114334
32112
4411
0011
)()(
),(),(
),(),(
)()()(
)(
K
KLfKLfLR
LRLR
KRfKRfLR
KRfKRfLRRR
LLLRRRRRRL
KRfKRfLKRfLR
LKRfLR
RLRL
RLRL
iiiiii
2.1 针对三轮的差分分析 (续 )
。比特比特和后的前也就是盒输出的异或两个输出是两个异或
;为
这是因,比特比特和后的前就是扩张函数也盒的输入两个操作可以延伸入异或
知道的分析,我们,和,通过对函数
)33 (
XOR-S XOR (2)
)()()()(
)44)(
(-S XOR (1)
)( )(
14
4*44
*44
4
4*444
LR
LELLELELE
LE
KLfKLf
2.1 针对三轮的差分分析 (续 )
。下一个密钥重复以上过程直到只剩。推导可能的密钥
是否在列表上。,对
。和输出列表查看输入列表
总结攻击过程如下:
4
4
4*444
14
4
(4)
(3)
))()(( (2)
XOR
)(XOR (1)
K
K
KLEKLE
LR
LE
2.1 针对三轮的差分分析 (续 )
。密钥就是。的可以产生正确仅有。中。因此,
,在比特的密钥后中,,在比特的密钥前。我们发现和现在重复
中。,在比特的密钥以推出后使用同样的方法我们可中。,在比特的密钥前因此,。输出等于异或
,,和,。对于对的输出是,的输出是这意味着。和此,
。因可以得到我们选择
如果。我们得到比特开始。并从其的第特
比轮加密只使用其中的在第密钥。假定我们不知道密钥
。和密钥我们开始于
001001101
001001101 001101?00 1011}
{ 4 1000}{ 4
111011100110110101110110
}{1111 4
}{1001 4 010 XOR
1001)(00110011)(1001 001 010
010100 10101011)()()(
001001000110111011100110
010000111001
8
001001101 110001110110
44
44
*1
*111
4
4
21
14*444
*4
*4
*1
*1
44
11
KRL
KK
KK
RLRL
K
K
SS
LRLELELE
RLRL
RLi
iKK
KR L
i
01000011
0100
0011
2例子
2.2 针对四轮的差分分析四轮差分分析是建立在三轮基础之上的,但是要扩展到四轮还需要使用一些统计方面的知识。这里我们关注 S- 盒的一些弱点。
2.2 针对四轮的差分分析 (续 )
。也就是
,。这样满足
和。现在我们假定选择的概率为输出等于们可以得到盒的输出相互独立,我两个
。如果我们假定这通过扩展函数得到。满足和假定我们开始随机选择
。输出等于个的异或的对中,存在等于或
个输入的异盒中。在。类似的缺陷也存在于等于输出都个异或的对,我们发现等于异或
个输入的我们关注盒存在一个缺陷。如果在
000000011010011010
3/816)(12/16)(8/011010
XOR-S
00111100)001100(
001100
010 XOR81100XOR
16011
XOR120011 XOR
16
*11
01*000
*0
0
*000
*00
2
1
RR
LRLLLL
L
E
RRRRR
S
S
1事实
2.2 针对四轮的差分分析 (续 )
很多。高出将比其它不正确的密钥钥的列表中出现的次数在密,因此,正确的密钥确的密钥不会频繁出现
。由于不正出可能的密钥使用三轮差分分析推导接着。。假定,察输出观。等于随机选择输入对的异或
分析策略:
000011000000
000110100011 XOR
4
4
11
*
4
*
444
K
K
RLRLRL
2.2 针对四轮的差分分析 (续 )
。我们就能得出正确密钥加密消息。使用两种可能的密钥因此,密钥
频率位后频率位后频率位前频率位前下表。
的密钥频率列于。我们可以将每种可能和百个随机输入对假定我们已经实验了几
110000?10
17111111011139111160111
611108011028111040110
23110110010132110130101
8110027010040100
181011100011351011150011
8101035101080010
1610016000140100170001
81000140000331000120000
44 44
00011010001100
*0
*000
K
RL
RLRL
591100
420010
3例子
2.3 关于差分分析 (1) 我们注意到前面的例子表明差分攻击至
少和强力攻击有相同的速度。然而,对于更优异的系统如 DES ,在一定的轮数下,差分攻击的效率将明显快于搜索全部密钥空间的强力攻击。
(2) Mitsuru Matsui 发明了另一种名为线性攻击的分析方法。这一攻击使用线性估计来描述分组密码的行为。线性分析可以看作是一种效率改进的新型差分分析 ( 理论上需要大约 243 明 - 密文对 ) 。但是并没有证据显示其可以有效的在实际中攻击 DES 。
3 DES DES 的密钥通常写为 64 比特,但每 8 比特
有一位奇偶效验位,可以忽略,因此,实际只有 56 比特。算法只使用不超过 64 位的标准算术操作和逻辑操作,所以在 70 年代仅使用硬件就可以容易地实现算法。算法的重复特性非常适合专用芯片执行。起初采用软件执行的 DES 显得笨拙,但目前的软件执行效果也相当不错。
3.1 DES 算法描述
DES)3(
)(
(3)
48
)(
161 (2)
32 32
)( (1)
DES
16161
1616
111
00000
0
特串的次序。调换前后比算法一样在解密过程中步意味着无需像简化
相反的次序。第的过程,除了密钥使用解密过程使用完全相同
。
初始计算的逆得到密文接着使用,调换前后次序得到要定义的函数。
是一个在后面将比特的串,产生的一个是从密钥这里
,,进行如下操作:,对于
比特。是后比特是前,这里写为,初始计算得到的比特串通过一个固定消息
组成:算法的加密由三个阶段
LRIPc
LR
fKK
KRf LR RL
i
RLRLm
mIPmm
i
iiiiii
3.1 DES 算法描述 (续 )明文
IP
L0 R0
fK1
L1 R1
L16 R16
密文
IP1
3.2 初始计算
入芯片而提出的。为了使算法更有效的载年代意义,它可能只是在初始计算没有任何密码
初始计算
70
715233139475563
513212937455361
311192735435159
19172533414957
816243240485664
614223038465462
412202836445260
210182634425058
3.3 函数 f(Ri1 , Ki)Ri1
扩张
E(Ri1)
Ki
B1 B2 B3 B4 B5 B6 B7 B8
S1 S2 S3 S4 S5 S6 S7 S8
C1 C2 C3 C4 C5 C6 C7 C8
计算
f(Ri1, Ki)
3.3 函数 f(Ri1, Ki) (续 )
。,,,比特输出到每个盒的决定。通过这种方法得列由由
盒的行的输入。盒做为为写
比特。为,这里每个并将其写成计算
扩展计算
。比特使用如下表扩展为比特按如下描述运行:函数
821
543261
621
8211
11
1
4
- - . (3)
6
)( )2(
13231302928292827262524
252423222120212019181716
1716151413121312111098
9876545432132
) (48 )( ) (32 (1)
),
CCC
bbbbbb
SSSBbbbB
B
BBBKRE
RER
Kf(R
jjj
j
ii
ii
ii
3.3 函数 f(Ri1 , Ki) (续 )
9145012761124153110813
1523961285113410117140
5119610101214821574133
1050121327943116148115
2-S
1360101431157194281215
0510379121511261381414
8359111261011321447150
7095126103811152113414
1-S
-S
盒
盒盒
1427121154981311060153
4825143115137111209610
9141011227430156511813
1541211582110960314137
4 -S
1225113141547896013101
7141051221110315894613
1151112145821064390713
8241171213151536149010
3 -S
)( -S
盒
盒续盒
1380671141110155912234
6111311040731282515149
8311014131659127241510
1157144313086291510112
6 -S
3541090156132141712811
1403651291587131011124
6893101505113741221114
9140131535861110714122
5 -S
)( -S
盒
盒续盒
1165309121513810471412
8531513106021412914117
2914011651247310813151
7120514391011115648213
8 -S
1232141505971041813116
2950861510147312131141
6815212531410194711013
1610579123138015142114
7 -S
)( -S
盒
盒续盒
3.3 函数 f(Ri1 , Ki) (续 )
25411226301319
932732142482
10311852623151
172812292120716
-P
)(32
(4)
1
821
计算盒
的值。,比特串就是函数结果算。通过下面的表做一次计串
ii KRf
CCC
3.4 密钥变换
412202851321
2937455361614
2230384654627
15233139475563
3644526031119
2735435159210
1826344250581
9172533414957
28
56 DES 64 (1)
00
00
密钥计算
比特。有和这里,写成做一个计算。计算结果剩下的比特位通过下表
比特密钥。密钥变为比特的忽略奇偶效验位
DC
DC
3.4 密钥变换 (续 )
次。轮中大约使用原始密钥中每比特在
。就是输出的值比特。中提取比特按照下表,从移位轮
特数每一轮对密钥移位的比位的左移操作。或根据下表做
表示。,和令
1416 #
322936504246533456394944
483345514030554737315241
21320277168264121923
10216152835124111714
4856 )3(
1222222122222211
16151413121110987654321
21
161)()( (2) 11
iii
iiiiiii
KDC
LSiDLSDCLSC
3.5 DES 的安全DES存在关于密钥长度、叠代次数、 S- 盒设计准则的问题。特别是 S- 盒以常量形式给出,但并未明确说明这些常量为何以这种形式出现。虽然 IBM声称这些是经过 17 年大量密码分析得出的结果,但是人们还是十分担心NSA 的介入可能为算法安装陷门以利于其解密。
3.5 DES 的安全 (续 ) 在 90 年代初期, IBM 终于公开了 S- 盒
设计的基本原理。 (1) 每个 S- 盒为 6 比特输入和 4 比特输出。
这是 1974 年芯片处理数据的最大能力。 (2) S- 盒的输出不应该和输入接近线性的函
数关系。 (3) S- 盒的每一行都应该包括全部 0到 15这 16 个数字。
(4) 如果输入每个 S- 盒的两个数据有一位不相同,则输出必须有至少两位不同。
3.5 DES 的安全 (续 )
(5) 如果两个 S- 盒输入的前两位不同但最后两位相同,则输出必不相等。
(6) 对于每个给定的异或 XOR 值存在 32种可能的输入对。这些输入对可以得到相应异或XOR 输出。所有这些输出不得有 8 个的值完全相同。 这一原则显然是用来阻止差分分析的。
(7) 这一原则与 (6) 类似,只是这里考虑 3个 S-盒的情况。
( 详细论述,参见 “ D. Coppersmith, The data encryption standard and its strength against attacks")
4 DES 不是一个群 选 择两个 密 K1 和 K2 加 密 明 文 P 得 到
EK2(EK1
(P)) 。这样的做法是否可以增加安全性?如果攻击者有足够的存储空间,这样做提供的安全保障有限。进一步,如果两次加密等于单次加密,密码的安全性将比我们想象的还要弱。例如,这一条件要是对 DES 成立,那么穷尽搜索 256 的密钥空间将被搜索大约 228 的密钥空间所替代。
。出我们得,的最小正整数而是满足由于
。
因此,。是某个整数且,这里假定证明。则
,满足于某个特定是循环长度,也就是对同时
的最小正整数,都满足是对所有如果
叫做循环长度。的这里最小的满足
,,,,
的序列加密为个明文的密钥进行加密。对某
表示使用全的密钥进行加密而表示使用全令
0
0)()(
)()()()()()()(
0 .
|
)()(
)()(
)()(
)()())(()(
1 0
0010
010010100100
00100
10
10
10101010
10
r
nrPPEEn
PEEPEEEEPEEP
nrqrnqm
mn
PPEEPn
PPEEPm
nPPEE
PPEEPEEEEPEE
P
EE
n
rnqrm
n
m
n
n
1性质
1定义
不是一个群。。因此,大约为发现它们的最小公倍数个明文实验了
度的倍数。,其应该是各个循环长根据
。同时应该满足数为恒等映射的最小正整满足
,,这是恒等映射。由于
次:。我们解密时,有满足和某个
,我们得到对于的密钥空间仅为由于。有
。也就是对于某个对于组合操作是封闭的假定证明
。满足一个存在,不和对于任意也就是说,不是一个群。
DES
1033
h Coppersmit
2
20
121
2 DES
DES .
DES
2770
56
56
56
5601
3
21
123
P
mmE
ijEDEDE
iEEjiji
EEE
K
EEEK
K K
mK
iK
iK
jK
iK
ijK
iK
jK
K
KKK
1性质
1定理
5 破译 DES 5.1 DES 已显老迈 (1) 1977 年, Diffie和 Hellman 估计如果花费 2千万美元制造一台机器大约仅需一天就可以破译 DES 。
(2) 1993 年, Wiener利用开关技术设计了更加有效的破译 DES 设备。
(3) 到 1996 年逐渐形成了三种破译 DES 的基本方法。一种方法是利用分布计算。一种是设计专用攻击芯片。折中的方法是使用可编程逻辑门阵列。
5.1 DES 已显老迈 (续 )
(4) 分布计算方法破译 DES变得十分流行,特别是在 Internet兴起和壮大的情况下。 1997 年, RSA 数据安全公司开展了破译 DES 密钥和其加密消息的竞赛。仅仅 5 个月, Rocke Verser 就在搜索了25% 的 密 钥 空间后发现密 钥 。接下来, RSA 数据安全公司又开展了第二次竞赛。结果用时 39天搜索了密钥空间的85%发现了对应密钥。
5.1 DES 已显老迈 (续 )
(5) 1998 年,电子领域基金会 (EFF) 展开了一项名为 DES 破译的计划。计划的基本思想是 : 一般使 用 的 计 算 机 对 于完成 破 译DES 的任务来说不是最优的。计划使用的结构是硬件用来判定排除大量不可能的密钥并返回那些可能的密钥。软件则用来处理每一个可能的密钥,判定这些密钥是否确实为密 码 系 统 使 用 的 密 钥 。 结 果 是 计划使 用1500 个芯片平均在大约 4.5天可以完成对DES 的破译。
5.1 DES 已显老迈 (续 )
(6) 有传言说根据预先处理的不同, NSA 可以在 3到 5 分钟成功破译 DES 。而在机器方面的开销仅有 5万美元。
# 上述结果说明对于 90 年代晚期的计算技术而言,加密系统使用 56 比特的密钥显得过短,不能提供强有利的安全保护。
5.2 增加安全性的 DES变化
中间人攻击。这两个版本都可以抵抗
。,另一个是
。,加密执行。一是少有两个版本的三重
比特。至以达到加密的安全强度大约可三重全强度相当。
比特的安比特而不是加密与双重人攻击表明使用中间和。另一个不同的密钥加密
密明文接着再用加密是使用一个密钥加双重
)))((( )))(((
)))((( )))(((
DES
112 DES (2)
11257 DES
HellmanMerkle
DES (1)
121121
123321
cDEDmmEDEc
cDDDmmEEEc
KKKKKK
KKKKKK
5.2 增加安全性的 DES变化 (续 )
硬件上执行。能够很容易地在现有这个版本的好处在于它
具包。工年起用于电子邮件安全系统,自
年起被用于已经自安全强度。已经证明了其有相当的,这一方法也叫做
。提出加密方法由另一个版本的
DES #
BSAFE 1987
MailSafe1986DESX
DESX
)( ),(
Rivest DES (3)
1313 22KcKDmmKEKc KK
6 口令安全 问题 . 口令一般与每一个实体相关联,是一个 6到 10 或更多的方便记忆的字符串。口令由实体和系统共享。为了获得访问系统资源的权限 ( 例如,计算帐户,打印机,或软件应用 ) , 实体输入身份 - 口令对。系统则核实对于相应的身份和口令输入是否正确。如果正确,系统就按照身份分配实体相应的访问授权。系统通过实体展示其掌握口令秘密来将其与声称身份挂钩。
6.1 口令方案(1)存储口令文件(2) 加密口令文件
(IDA , pwdA
)
实体 A
拒绝
接受
系统口令表
否
是
f()
IDA
…
…
f(pwdA)
…
…
=pwdA
f(pwdA)
f(pwdA)
6.1 口令方案 (续 )
(3) 降低口令映射速度 (4) 口令加盐 为了使口令猜测攻击无效,每一个口令条目都增加 t 比特的随机串叫做盐,将盐和口令一同作为单向函数的输入。口令 Hash 值和盐一同记入口令文件,以供验证使用。
(5) 口令短语
6.2 常见攻击 (1) 重放固定口令 (2) 穷尽搜索口令 攻击的成功依赖于在成功发现口令之前
需要验证的口令数量以及每次验证测试所需要的时间。
(3) 口令猜测或字典攻击 在线 /离线口令猜测攻击
6.3 实例 – UNIX 口令系统
用户口令
12 用 户盐
64数 据Ii
I1=00…0
密钥 K
56
1264
加密口令/etc/passwd
截成 8 个 ASCII字符;如需要添加0
*DES#
重新打包 76 比特为 11个 7 比特字符
O25
下一次输入Ii, 2≤i≤25
输出 Oi
6.3 实例 – UNIX 口令系统 (续 ) (1) 口令盐。 UNIX 口令盐是将 12 位的随机串与
用户选择口令关联。这 12 位的随机串做为 DES的标准扩展函数 E 的一个变量,提供 4096种不同的变化情形,也就是盐的第 1 比特对应输入的第 1比特和第 25 比特,第 2 比特对应输入的第 2 比特和第 26 比特如此下去。如果盐比特值为 1 ,则输入的相对应位做交换,如果盐比特值为 0 ,则保持不变。 Hash 口令值和盐都保存在系统口令文件的一条目录之中。对于单个用户而言,口令的安全并没有增加,但对于字典攻击整体口令文件而言,对于每一个可能口令却增加了 4096种不同的口令测试计算。
6.3 实例 – UNIX 口令系统 (续 ) (2) 防止使用现成的 DES芯片攻击系统。由于 DES 的扩展计算需要使用盐,因此,标准的 DES 算法不再能执行 UNIX 口令算法。如果攻击者希望采用硬件加速攻击,他就不能直接选择一般商用 DES芯片,而要自己设计DES芯片。这毫无疑问增加了攻击成本。
谢谢 !