29
第第第 第第第第第第第第第第第 主主主主主主主主主主主主主主主主主主主主主主主主 主主 主主主主主主主 DES 主主主主 主主主主 DES 主主主主主主主 主主主主主主主主 主主主主主主主主主 主 主主主 。,一 DES 主主主主 主主 主主主主主主主 主主 主主主主主主主主主 主主 ;一, DES 主主主主主主主主主主主主主主主主主主主主主主主主主主

第四章 现代常规的分组加密算法

  • Upload
    kioshi

  • View
    122

  • Download
    14

Embed Size (px)

DESCRIPTION

第四章 现代常规的分组加密算法. 主要考察较为流行的最重要的几个对称密钥的分组密码算法。这些算法都是自 DES 公布之后,人们了解 DES 的弱点越来越深入的情况下给出的。给出的方式有两种,一种是对 DES 进行复合,强化它的抗攻击能力;另一种是开辟新的方法,即象 DES 那样加解密速度快,又具有抗差分攻击和其他方式攻击的能力。. 我们主要考察如下三种加密算法. 1. Triple DES 2.IDEA 3. RC5 其他一些较实用的算法,自己看书了解,如 Blowfish , CAST ,以及 RC2 。. 1 TRIPLE DES. - PowerPoint PPT Presentation

Citation preview

Page 1: 第四章 现代常规的分组加密算法

第四章 现代常规的分组加密算法

主要考察较为流行的最重要的几个对称密钥的分组密码算法。这些算法都是自 DES 公布之后,人们了解 DES 的弱点越来越深入的情况下给出的。给出的方式有两种,一种是对 DES进行复合,强化它的抗攻击能力;另一种是开辟新的方法,即象 DES 那样加解密速度快,又具有抗差分攻击和其他方式攻击的能力。

Page 2: 第四章 现代常规的分组加密算法

我们主要考察如下三种加密算法

• 1.Triple DES

• 2.IDEA

• 3.RC5• 其他一些较实用的算法,自己看书了解,如 Bl

owfish , CAST ,以及 RC2 。

Page 3: 第四章 现代常规的分组加密算法

1 TRIPLE DES

• DES 算法设计的优点是很多的。如何加强 DES 的安全性是一个世纪感兴趣的问题。 Quisquater 等曾建议采用长达 768 bits 密钥的方案。由于已经证明 DES 不能成为群,见

K.W.Campbell and M.J.Wiener

Proof that DES is not a group

In Advances in Cryptology——Crpto’92.

Springer——Verlag, New York,1993.

于是多重 DES ,尤其是三重 DES 还在普遍使用。

Page 4: 第四章 现代常规的分组加密算法

( 1 )二重 DES(Double DES)

• 给定明文 P 和两个加秘密钥 k1 和 k2 ,采用 DES 对 P 进行加密 E ,有

密文 C=EK2(EK1(P)) 对 C 进行解密 D ,有

明文 P=DK1(DK2(C))

E EP X C

K2K1

加密图

D D

K2 K1

CX P

解密图

Page 5: 第四章 现代常规的分组加密算法

对于二重 DES 的加密,所用密钥的长度为 56×2=112 bits 这样是否真正能增强 DES 的强度呢?问题在于下式能

否成立: EK2(EK1(P)) =EK3(P) (4.1) DES 是一个从集合 A 到集合 A 的一个映射。其中:

映射 DES 事实上可视为对 A 的一个作用,作用方式为置换。所有可能的置换数为 ( 264)! 。

然而, DES 对每一个不同的密钥只决定唯一的映射。而密钥数 256<107 , (4.1) 式不能成立。

64

264321

2||

,1,0|,,,,

A

ZaaaaaA i

Page 6: 第四章 现代常规的分组加密算法

• 关于 DES 不是群的详细证明见上面给的文献。

• 注:二重 DES 很难抵挡住中间相遇攻击法( Meet-in-the-Middle Attack)

Page 7: 第四章 现代常规的分组加密算法

E EP CX

由 C=EK2(EK1(P))从图中可见 X=EK1(P)=DK2(C)

K1K2

D DC PX

K1 K2

加密

解密

Page 8: 第四章 现代常规的分组加密算法

若给出一个已知的明密文对( P,C) 做:对 256 个所有密钥 K1 做对明文 P 的加密,得到一张密钥对应于密文 X 的一张表;类似地对 256 个所有可能的密钥 K2 做对密文 C 的解密,得到相应的“明文” X 。做成一张 X 与 K2 的对应表。比较两个表就会得到真正使用的密钥对 K1,K2 。

Page 9: 第四章 现代常规的分组加密算法

对二重 DES 的中间相遇攻击的分析

• 已知,给定一个明文 P ,经二重 DES 加密有 264 个可能的密文。而二重 DES 所用密钥的长度应是 112 bits ,所以选择密钥有 2112 个可能性。于是对给定明文 P 加密成密文有 2112/264=248 种可能。于是,密文是假的比例约为 248-64=2-16 。这样,对已知明文 - 密文对的中间相遇攻击成功的概率为 1-2-16 。

• 攻击用的代价 { 加密或解密所用运算次数 } 2≦ 56+256=2112

Page 10: 第四章 现代常规的分组加密算法

( 2 )带有双密钥的三重 DES( Triple DES with Two Keys)

• Tuchman 给出双密钥的 EDE 模式(加密 - 解密 - 加密):

C=EK1(DK2(EK1(P))) …… 对 P 加密 P=DK1(EK2(DK1(C))) …… 对 C 解密 这种替代 DES 的加密较为流行并且已被采纳用于

密钥管理标准( The Key Manager Standards ANSX9.17和 ISO8732).

Page 11: 第四章 现代常规的分组加密算法

E D E

D E DCB A P

P A B

C

K1

K2 K1

K1K2 K1

加密图

解密图

Page 12: 第四章 现代常规的分组加密算法

• 到目前为止,还没有人给出攻击三重 DES 的有效方法。对其密钥空间中密钥进行蛮干搜索,那么由于空间太大为 2112=5×1033 ,这实际上是不可行的。若用差分攻击的方法,相对于单一 DES 来说复杂性以指数形式增长,要超过 1052 。

注意:• 1*. Merkle 和 Hellman 设法创造一个条件,想把中间相

遇攻击( meet-in-the-middle attack )的方法用于三重DES ,但目前也不太成功。

• 2*. 虽然对上述带双密钥的三重 DES 到目前为止还没有好的实际攻击办法,但人们还是放心不下,又建议使用三密钥的三重 DES ,此时密钥总长为 168bits.

C=EK3(DK2(EK1(P)))

Page 13: 第四章 现代常规的分组加密算法

2 RC5

RC5 是对称加密算法,由 RSA 公司的首席科学家 R.Rivest 于 1994年设计, 1995年正式公开的一个很实用的加密算法。

Page 14: 第四章 现代常规的分组加密算法

RC5 具有如下的特性:• 1. 适用于软件或者硬件实现• 2. 运算速度快• 3. 能适应于不同字长的程序(一个字的 bit 数是 RC5

的一个参数;不同字长派生出相异的算法)• 4. 加密的轮数可变(轮数是 RC5 的第二个参数,这

个参数用来调整加密速度和安全性的程度)• 5. 密钥长度是可变的(密钥长度是 RC5 的第三个参

数)• 6. RC5 形式简单,易于实现,加密强度可调节• 7. 对记忆度要求不高(使 RC5 可用于类似 Smart Card

这类的对记忆度有限定的器件)• 8. 高保密性(适当选择好参数)• 9. 对数据实行 bit 循环移位(增强抗攻击能力)

Page 15: 第四章 现代常规的分组加密算法

对 RC5 的系统描述:

( 1 ) RC5 的参数 RC5 实际上是由三个参数决定的一组加密算法。

参数 定义 允许值 w 字的 bit 数大小。 RC5 加密 16,32,64

的基本单位为 2 个字块 r 轮数 0,1, …,255

b 密钥字节的长度( 8-bit bytes) 0,1, …,255

Page 16: 第四章 现代常规的分组加密算法

• RC5 加密明文块的长度为 32 , 64 , 128 bits 。并且对应同样长度的密文。密钥长度为从 0 到 2040 bits 。一个特定的 RC5 表示为

RC5-w/r/b

Rivest 建议使用的标注 RC5 为 RC5-32/12/16

(明文分组长度 64 ,加密轮数 12 ,密钥长度 128 bits)

Page 17: 第四章 现代常规的分组加密算法

• ( 2 ) RC5 的密钥扩展 对给定的密钥 K 来说,经过一些复合运算可产生总数为 t 的字密钥,使得每一轮都分配一对密钥。除此之外的非轮运算部分也要分配一对密钥。总计产生 t=2r+2 个子密钥,每个密钥的长度为一个字长( w bits) 。子密钥可标记在 t-字阵列中:

s[0],s[1], …,s[t-1] 它为 w×t矩阵

这种阵列的产生图示为:

Page 18: 第四章 现代常规的分组加密算法

初始化

混合

转换

s[0] S[1]

S[t-1]……

L[0] L[1] L[c-1]……

K[0] K[1] …… K[b-1]

S[0] S[1] …… S[t-1]

r,w

Bytes

words

words

Page 19: 第四章 现代常规的分组加密算法

• 将参数 r , w输入,左面标出的 t-字阵列是一些伪随机 bit ,按 r,w 的规格选入的。然后把 b-bits 长的密钥K[0, …,b-1]转换成 c-字阵列 L[0, …,c-1] (字的 bit 数为 w ,这里 c=b×8/w ;注意:密钥长度为 b 个字节)。如果 b 不是 w 的整数倍,那么 L右端的空位用 0填入。

下面描述密钥生成的细节:

Page 20: 第四章 现代常规的分组加密算法

对于给定的参数 r 和 w ,开始初始化运算 Pw=Odd((e-2)2w)

Qw=Odd((Φ -1)2w)

这里 e =2.718281828459…( 自然对数的底) Φ =1.618033988749… (黄金分割比率)并且 Odd[x] 表示最接近 x 且可左可右的奇整数。例: Odd[e]=3, Odd[Φ ]=1

用上述两个常数,按下述方式得到初始化的阵列 S:

S[0]=Pw

For i=1 to t-1 do

S[i]=S[i-1]+Qw

其中的加法是模 2w 的加法运算。

Page 21: 第四章 现代常规的分组加密算法

得到初始化阵列 S ,然后与最后产生的密钥阵列 L做混合,最终得到子密钥阵列。

注 1*. 为了增强复杂性,可对阵列 S,L 做多次处理: i=j=x=y=0 do 3×max(t,c) times: { S[i]=(S[i]+X+Y)<<<3 ; X=S[i] ; i=(i+1)(mod t); L[j]=(L[j]+X+Y)<<<(X+Y) ; Y=L[j] ; j=(j+1)(mod c); }2*. Rivest 声称,这个扩张函数具有单向性。

Page 22: 第四章 现代常规的分组加密算法

( 3 ) RC5 的加密

整个加密使用了下述 3 个基本运算和它们的逆运算:• 模 2w 加法运算,表示为“ +” ;• 逐比特异或运算,表示为“⊕”;• 字的循环左移运算:字 x循环左移 y 比特,表示为

x<<<y

它的逆为循环右移 y 比特,表示为x>>>y

如( a0,a1,a2, …,an-1)<<<3=(a3,a4, …,an-1,a0,a1,a2)

Page 23: 第四章 现代常规的分组加密算法

加密运算图:明文( 2w bits)

+ +

⊕ ⊕<<< <<<

+ +

… …

⊕ ⊕<<< <<<

+ +

密文( 2w bits)

S[0]Round1

S[2]

Round r

S[2r]

S[1]

S[3]

S[2r+1]

REr

RE1

LEr

LE1

LE0 RE0

A B

Page 24: 第四章 现代常规的分组加密算法

• 将明文分组为左右 A,B ;用变量 Lei , Rei参与• 运算程序为: LE0=A+S[0]

RE0=B+S[1]

for i=1 to r do

LEi= ((LEi-1 RE⊕ i-1)<<<REi-1)+S[2×i];

REi=((REi-1 LE⊕ i)<<<LEi)+S[2×i+1];

Page 25: 第四章 现代常规的分组加密算法

( 4 ) RC5 的解密对两个 1-字变量 LDr 和 RDr 。用变量 LDi 和 RDi 从 r 到 1

做: for i=r down to 1 do

RDi-1=((RDi-S[2*i+1]>>>LDi) LD⊕ i);

LDi-1=((LDi-S[2*i]>>>RDi-1) RD⊕ i-1);

B=RD0-S[1];

A=LD0-S[0].

(5) RC5 操作模式 见书 119页 -120页

Page 26: 第四章 现代常规的分组加密算法

明文( 2w 比特)

- -

⊕ ⊕>>> >>>

- -

⊕ ⊕>>> >>>

- -

密文 (2w 比特)

A B

S[2r]

S[2]

S[0] S[1]

S[3]

S[2r+1]

… …

LDrRDr

Round r

Round 1LD0

RD0

RDr-1LDr-1

Page 27: 第四章 现代常规的分组加密算法

3 RC6 分组密码简介• 被选为 21 世纪加密标准算法。 RC6 是 RC5 的进一步改

进。像 RC5 那样, RC6 实际上是利用数据的循环移位。• RC5 自 1995年公布以来,尽管至今为止还没有发现实

际攻击的有效手段,然而一些理论攻击的文章先后也分析出 RC5 的一些弱点。

• RC6 的加密程序: RC6-w/r/b• Input : 明文存入四个 w-bit寄存器 A,B,C,D

轮数 r

w-bit轮密钥 S[0,1, …,2r+3]• Output :密文存入寄存器 A,B,C,D

Page 28: 第四章 现代常规的分组加密算法

Procedure: B=B+S[0] D=D+S[1] for i=1 to r do {

t=(B×(2B+1))<<<㏒ 2w

u=(D×(2D+1))<<< ㏒ 2w

A=((A t)<<<u)+S[2i]⊕ C=((C u)<<<t)+S[2i+1]⊕ (A,B,C,D)=(B,C,D,A) …………右边寄存器到左边 } 寄存器的并行分配 A=A+S[2r+2] C=C+S[2r+3]

Page 29: 第四章 现代常规的分组加密算法

RC6-w/r/b 加密图,其中 f(x)=x× (2x+1): A

<<<

B

+f<<<

C

<<<

++

D

+

<<< f

+ +S[2r+2] S[2r+3]

A B C D

RepeatFor rrounds

… … … …

S[2i] S[2i+1]

S[0] S[1]

log2w log2w log2w