当前位置:文档之家› 2010-密码学第5周_分组密码

2010-密码学第5周_分组密码


12
Feistel结构的安全性
(1)分组大小:分组越大则安全性越高,但加密速度 就越慢。分组密码设计中最为普遍使用的分组大小是64比特。 (2)密钥大小:密钥越长则安全性越高,但加密速度 就越慢。现在通常使用128比特的密钥长度。 (3)轮数:单轮结构远不足以保证安全性,但多轮结 构可提供足够的安全性。典型地,轮数取为16。 (4)子密钥产生算法:该算法的复杂性越大,则密码 分析的困难性就越大。 (5)轮函数:轮函数的复杂性越大,密码分析的困难 性也越大。
R0(n比特)
密文(2n比特) Feistel网络加密过程
明文(2n比特) Feistel网络解密过程
14
一轮的解密
Feistel 解密的输入密文为 ( Rr , Lr ) ,作为第 1 轮的解密的输入,右半部分的操作是
Rr F ( Lr , Kr ) , 其 中 由 于 Lr Rr 1 以 及 Rr Lr 1 F ( Rr 1 , Kr ) , 因 此 Rr F ( Lr , Kr ) 等价于 Lr 1 F ( Rr 1 , Kr ) F ( Rr 1, Kr ) Lr 1 ,因此第 1 轮解密输出 ( Rr 1 , Lr 1 )
26
CBC模式
原始图
CBC模式
27
ECB 模式与CBC模式
original
ECB
CBC
/wiki/Block_cipher_modes_of_operation 28
j-比特密码反馈CFB模式
初始变量(IV) (移位寄存器) 64-j比特 64 K 分组加密 64 选j比特 j 明文分组P1 j 密文分组C1 j 明文分组P2 丢弃64-j比特 j 选j比特 j j 密文分组C2 (a) 加密 K 选j比特 (移位寄存器) 64-j比特 64 分组加密 64 丢弃64-j比特 选j比特 j j j 明文分组PN 密文分组CN ... 选j比特 (移位寄存器) 64-j比特 64 分组加密 64 丢弃64-j比特 选j比特
K
C1 P S j 1
E IV
初始变量(IV) (移位寄存器) 64-j比特 64 K 分组加密 64 选j比特 j j 丢弃64-j比特 j 密文分组C1 选j比特
(移位寄存器) 64-j比特 64 分组加密 64 选j比特 j j 丢弃64-j比特 ... 选j比特
(移位寄存器) 64-j比特 64 分组加密 64 选j比特 j j j j 密文分组C2 明文分组PN 丢弃64-j比特 选j比特
30
CFB模式错误传播
1、明文某一组中有错,会使以后的密文组 都受影响,但经解密后的恢复结果,除原有误 的一组外,其后各组明文都正确地恢复。 2、密文里的一位错误会引起明文的一个单 独错误,此处,错误进入移位寄存器,导致密 文成为无用信息,直到该错误从移位寄存器中 移出。
例:对于8位(1个字节)的加密,则会产生 9字节的错误
这里要严格的照本宣科!!!
15
分组密码的运行模式
16
分组密码的运行模式
即使有了安全的分组密码算法,也需要采用 适当的工作模式来隐蔽明文的统计特性、数据的 格式等,以提高整体的安全性,降低删除、重放、 插入和伪造成功的机会。美国在FIPS中定义了五 种运行模式。 电码本(ECB)
密码分组链接(CBC) 密码反馈(CFB) 输出反馈(OFB) 计数器模式(CTR)
Li(n比特) 第r-1轮 XOR F
Ri(n比特) Kr-1 第r-1轮
Rr-i(n比特) XOR F
Lr-i(n比特) K2
Lr-1(n比特) 第r轮 XOR Rr(n比特) F
Rr-1(n比特) Kr 第r轮
R1(n比特) XOR L0(n比特) F
L1(n比特) K1
Lr(n比特)
密码分组链接CBC模式
初始矢量 IV(Initial Vector):第一组明 文加密时无反馈密文,为此需要在寄存器中预 先置入一个,收发双方必须选用同一IV。 每个明文组加密之前,先与反馈至输入端 的前一组密文按位模2求和后,再送至加密算法 加密 实际上,IV的完整性要比其保密性更为重 要。在CBC模式下,最好是每发一个消息,都改 变IV,比如将其值加一。
25
CBC的错误传播
1. 明文有一组中有错,会使以后的密文组 都受影响,但经解密后的恢复结果,除原有误的 一组外,其后各组明文都正确地恢复。 Never trouble trouble till trouble troubles you. 2.若在传送过程中,某组密文组出错时,则 该组恢复的明文和下一组恢复数据出错。再后面 的组将不会受中错误比特的影响。
To: Bank From: ATM Action: Deposit Amount: $900.00
23
密码分组链接CBC模式
初始变量(IV) K
明文分组P1
明文分组P2
明文分组PN
分组加密
K
分组加密
...
K
分组加密
密文分组C1
密文分组C2 (a) 加密
密文分组CN
密文分组C1
密文分组C2
密文分组CN
第i轮
XOR
Li(n比特) 第r-1轮 XOR F
Ri(n比特) Kr-1
Lr-1(n比特) 第r轮 XOR Lr(n比特) F
Rr-1(n比特) Kr
Rr(n比特)
密文(2n比特)
11
Feistel网络中除了最后一轮,每轮结构相同, 每轮右半部分在子密钥控制下数据先进入轮函数F, 然后与左半部分异或得到下一轮的右半部分,而下 一轮左半部分直接为上一轮的右半部分。最后一轮 的结构则是上一轮右半部分在子密钥控制下数据先 进入轮函数F,然后与左半部分异或得到下一轮的 左半部分,而右半部分是上一轮的右半部分。
K 初始变量(IV)
分组解密
K
分组解密
...
K
分组解密
明文分组P1
明文分组P2 (b) 解密
明文分组PN
Cn EK Cn1 P n
DK Cn Cn 1 DK EK Cn 1 Pn Cn 1 Cn 1 Pn Cn 1 Pn 24
17
电码本ECB模式
明文分组P1 K K 明文分组P2 K 明文分组PN 分组加密 分组加密 ... 分组加密
密文分组C1
密文分组C2 (a) 加密
密文分组CN
密文分组C1
密文分组C2
密文分组CN
K
分组解密
K
分组解密
...
K
分组解密
明文分组P1
明文分组P2 (b) 解密
明文分组PN
18
填充(Padding)
6
代替-变换网络
S S S S
P S S S S
P S

S
S
S
代替-置换网络是 由多重代替变换(S)和 置换变换(P),S代 替变换起到混淆的作用, P置换变换起到扩散的 作用。



7
举例说明
以DES和AES为例子,说明扩散(置换)和混 淆(代替变换) 扩散:DES的E扩展和P置换
混淆:DES的S盒
31
输出反馈OFB模式
(移位寄存器) 64-j比特 64 K 分组加密 64 选j比特 j 明文分组P1 j 密文分组C1 j 明文分组P2 丢弃64-j比特 j 选j比特 j j 密文分组C2 (a) 加密 K 选j比特 (移位寄存器) 64-j比特 64 分组加密 64 丢弃64-j比特 选j比特 j j j 明文分组PN 密文分组CN ... 选j比特 (移位寄存器) 64-j比特 64 分组加密 64 丢弃64-j比特 选j比特
13
Feistel解密结构
明文(2n比特) 密文(2n比特) L0(n比特) 第1轮 XOR F R0(n比特) K1 第1轮 Rr(n比特) XOR F Lr(n比特) Kr
L1(n比特)

R1(n比特) F Ki 第i轮
Rr-1(n比特)

Lr-1(n比特) F Kr-i
第i轮
XOR
XOR
分组密码概述
1
分组密码
X x0 , x1,, xn2 , xn1 为明文块,在密钥
Y y0 , y1,, ym2 , ym1 ,其中
xi , y j , kr GF (2) ,且
K k0 , k1,, kt 1 的加密作用下得到密文块
0 i n 1 , 0 j m 1, 0 r t 1
9
Feistel一轮的加密
左明文 右明文
Li Ri 1
置换
Ri Li 1 F Ri 1 , Ki
密钥 XOR 替换 F
新的左明文
新的右明文
10
明文(2n比特)
L0(n比特) 第1轮 XOR F
R0(n比特) K1
Feistel结构
L1(n比特)

R1(n比特) F Ki
8
Feistel密码结构
最典型乘积密码是在1973年,Feistel提出的, 整个处理过程包括多个阶段的替代和换位,主密钥 分为一个子密钥集,每个阶段使用一个子密钥。在 每个阶段中,明文被分为左右两部分,两部分分别 进行交换,其中一个部分与子密钥混合,进行相应 变换。在进行完n轮迭代之后,左右两半合并在一起 再产生密文
4
分组密码的基本原则
(4)加密和解密的运算简单,易于软硬件高速 实现。 (5)数据扩展足够小,一般无数据扩展。 (6)差错传播尽可能小,加密或解密某明文或 密文分组出错,对后续密文解密影响尽可能小。
5
分组密码的原理
相关主题