第八讲 RSA 和 Rabin 算法 ( 下 )

45
第第第 RSA 第 Rabin 第第 ( 第 )

description

第八讲 RSA 和 Rabin 算法 ( 下 ). 本讲提要. RSA 加密的安全 ( 续 ) RSA 加密实践 Rabin 加密算法 Rabin 加密的执行 Rabin 加密的安全 公钥加密的总结. 3.8 循环攻击. 3.8 循环攻击 ( 续 ). 3.8 循环攻击 ( 续 ). 3.9 消息隐藏问题. 3.9 消息隐藏问题 ( 续 ). 3.10 前项搜索攻击. 3.11 RSA-OAEP. 3.11 RSA-OAEP ( 续 ). 3.11 RSA-OAEP ( 续 ). 3.12 定时攻击 - PowerPoint PPT Presentation

Transcript of 第八讲 RSA 和 Rabin 算法 ( 下 )

Page 1: 第八讲  RSA 和 Rabin 算法 ( 下 )

第八讲 RSA 和 Rabin 算法( 下 )

Page 2: 第八讲  RSA 和 Rabin 算法 ( 下 )

本讲提要 RSA 加密的安全 ( 续 ) RSA 加密实践 Rabin 加密算法 Rabin 加密的执行 Rabin 加密的安全 公钥加密的总结

Page 3: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.8 循环攻击

。息就应该等于明文消则它的前一次计算结果

,。如果,直到结果等于

,,击者计算了如下的循环攻击。攻

。这一事实就导致我们得到

一定存在。由此,整数上的一个计算,这样的,,,由于加密是在消息空间。满足

为一个正整数为一条密文消息。令令

m

nc

nccc nc

nc nc

nmcc

kn

ncc

knmc

k

k

kk

k

e

ee

ee

eee

e

e

)(mod

) (mod)(mod

)(mod)(mod

) (mod

1}

1{0 ) (mod

) (mod

1

3

2

11

Page 4: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.8 循环攻击 ( 续 )

)(mod

) (mod )(mod

) (mod )(mod

) (mod )(mod

1 )(=

。并且则

,和

果。另一方面,如并进一步得到明文消息者可以得到的分解,攻击都将导致。在任何一种情况下,则

,和

。同样地,如果则,和

。如果,

满足发现一个最小的正整数一般形式的循环攻击是

nc cf=n

qc c pc c

md

nf =q

qc c pc c

f = p

qc c pc c

>nccf

u

u

uu

uu

uu

u

e

ee

ee

ee

e

Page 5: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.8 循环攻击 ( 续 )

胁。加密的安全带来威能给所以这些循环攻击并不

通常情况下是困难的,数数的方法。由于分解整解整攻击可以看作是一种分显然,一般形式的循环

束。击结循环攻击要先于循环攻件,因此,一般形式的个条率要小于第一个和第二于第三个条件发生的概。由效计算环攻击成功并且可以有

情况下,基本循的最小正整数。在这种必定是满足按算法的执行过程,事实上,

RSA

)(mod

)(mod

1

n

nmc

nc

cu

u

u

e

e

.评述

Page 6: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.9 消息隐藏问题

。,,为文消息的确切数量。事实上,不可隐藏明

,,例如,不可隐藏的明文消息。一般总是有一些本身。也就是

,如果消息加密后还是方案中叫做不可隐藏的公钥加密在,,一条明文消息

1)] 1( + [11)] 1( + [1

)1

1 0 (

) (mod

RSA 10

qepe

n

m= m = m =

nmm

nmm

e

Page 7: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.9 消息隐藏问题 ( 续 )

加密带来威胁。对的明文消息问题将不会此,在实践中不可隐藏通常是可以忽略的。因占整个明文消息的比例

明文消息的数量加密产生的不可隐藏的用,则或机选择的小整数如

是随或也是随机选择随机选择的素数并且都是和条。如果为的明文消息的数量至少

都是偶数,不可隐藏,和,由于

RSA

RSA

)6553712 3

(

9

1 11

16 =+e=e =

ee

qp

qpe

Page 8: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.10 前项搜索攻击

止这类攻击的方法。一种简单的阻息密文。给消息加盐是比,来解密消消息明文与消息密文对密全部可能的攻击者可以通过简单加是可以预测的,如果消息空间十分小或

Page 9: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.11 RSA-OAEP

。比特的随机二进制串,是一个的联接,字符串比特个全与表示是联接符,这里

数就是,都是随机函数。加密函,,:

和,,:。令,例如,

的长度为。明文消息如,例的参数都是不可执行的操作步和为和令

。数比特输出的单向陷门函比特输入为一个令

0 0||||

))})(0||({||)}(0||({=)(

1}{0→1} {0

}10{→}10{)7681024

(= 128)==

(22

RSA

0

1

1010

10

1

11

01

10

10

kr

kmm

rGmHrrGmfmE

H

Gn= k=

kkknmkk

kk

kkf

k

kk

kn+k

n+kk

kk

Page 10: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.11 RSA-OAEP ( 续 )

Page 11: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.11 RSA-OAEP ( 续 )

。占方案中有用的消息部分比特,也就是说,在

,则明文消息的长度为考虑函数。

密钥函数,例如,安全的无可以使用密码和中,都是随机函数。在实践和假设

75%OAEP

-RSA768= 2561024 = |

=|||128

HashHash

1

010

k

knm = = kk

HGHG.评述

Page 12: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.12 定时攻击 对 RSA 算法的攻击,可能不仅仅来自算法

本身,对其的不恰当执行同样可能导致系统的漏洞。攻击者将可能利用这些执行的弱点来危及整个 RSA 系统的安全。对密码系统的执行攻击受到安全工程师和用户的极大关注。

执行攻击包括:定时攻击,电耗分析攻击,出错攻击,和电磁辐射攻击等。我们常常称这些攻击为边信道攻击 (side-channel attacks) 。边信道这个词用来描述从目标设备,例如,智能卡,无意泄露的信息。

Page 13: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.12 定时攻击 ( 续 )

在定时攻击中的边信道是指设备在做秘密密钥操作时需要的时间。攻击者能够仔细的测量目标系统的执行时间进而发现存储于设备中的秘密密钥,最终使整个安全系统崩溃。不少现实系统潜在受到这一攻击威胁,包括各种密码令牌,基于网络的密码系统,以及其它攻击者可以准确测量执行时间的应用系统。

Page 14: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.12 定时攻击 ( 续 )

假定环境 .攻击者可以观察系统对多个密文消息 g 的解密。他也知道加密算法的执行细节并能应用这些信息确定可能发生在算法计算过程中的不同步骤需要的执行时间。同时,假定计算 gd(mod n)使用的是上一讲的算法 4 。

Page 15: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.12 定时攻击 ( 续 )

异。时间长短有相当大的差这个模乘的执行花费的

况下,时才会执行。在多数情仅在相应的比特模乘法,在上一讲中的

1

)(mod

= b

ngAA

i

4算法5事实

Page 16: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.12 定时攻击 ( 续 )

。。我们有

就应该等于。整体的时间和它们各花费时间为,算分成两个独立的过程如果我们可以将一个计

应方差就是来得到。相则数学期望可以通过

,,,,均。如果输出是期望是所有输出值的平间。数学时设备计算所花费的时为给定随机输入令

})Var({})Var({})Var({

)()()(})Var({

/)(

222

21

21

21

iii

ni

n

n

ttt

t

tttt

n

EtEtEtt

ntttE

ttt

gt

6事实

Page 17: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.12 定时攻击 ( 续 )

。;否则猜测,则猜测如果。和。分别计算令

的时间。记录它们。

步中计算每个中的第是在令。假定

。指数,这里使用的就是秘密,,,时所需要的时间

并测量在计算每个,,,,选择消息密文

攻击者做如下步骤:的定时攻击对从左向右二进制算法

01})Var({

})Var({ })Var({})Var({ (2.2)

)(mod

(2.2) 1 (2.1)

:following thedo 0 down to from For (2)

)(

)(mod (1)

201

21

21

jji

iiiiii

i

ij

kk

n

din

ddt

tttttt

ngA

Atd

kj

dddd

ttt

ngggg

4算法

6算法

Page 18: 第八讲  RSA 和 Rabin 算法 ( 下 )

3.12 定时攻击 ( 续 )

。就可以得到时间假定需要是否执行,因此,他只步的第

骤可以确定所有的之前由于攻击者在之前的步。

是合理的。因此,互不独立应该和假定事件如果模乘没有发生,则

。合理的。因此,

独立是和时间。假定事件除该模乘以外所花费的

实际标定的设备在计算如果模乘发生了,

td

ngAA

tttt

tt

tttt

tt

t

j

i

iiii

ii

iiii

ii

i

1

)(mod(2.2)

(2)

})Var({})Var({})Var({ })Var({

})Var({})Var({})Var({ })Var({

(1)

4算法

.解释

Page 19: 第八讲  RSA 和 Rabin 算法 ( 下 )

4 RSA 加密实践 4.1 模的大小 根据分解整数算法特别是数域筛法的进展,

RSA 中的模 n 应该至少为 1024 比特。从长远的安全考虑,应该使用 2048 比特或更大的模。

Page 20: 第八讲  RSA 和 Rabin 算法 ( 下 )

4.2 素数的选择 (1) 素数 p 和 q 的选择原则是使分解整数

n =pq 在计算上不可能。主要对 p 和 q的限制是它们必须有足够的长度并且有差不多相等的比特长度。例如,如果使用 1024 比特的模 n ,那么, p 和 q 应该都是在 512 比特左右。

(2) 另一个对素数 p 和 q 的限制是 pq 不能太小。如果 p 和 q 是随机选择产生,则 pq 将会以压倒的概率比较大。

Page 21: 第八讲  RSA 和 Rabin 算法 ( 下 )

4.2 素数的选择 ( 续 ) (3) 许多地方推荐使用强素数 p 和 q 。一个

素数 p 是强素数需要满足以下三个条件: * p1 有大的素数因子,称为 r ; ** p+1 也有大的素数因子; *** r 1 仍然有大的素数因子。

Page 22: 第八讲  RSA 和 Rabin 算法 ( 下 )

第一个条件的原因是存在 Pollard 的 p1分解算法,这一算法只在模 n 存在一个素数因子 p 满足 p1 平滑时有效;第二个条件的原因是存在 p+1 分解算法,这一算法只在模 n 存在一个素数因子 p 满足 p1平滑时有效;第三个条件的原因为了保证循环攻击无效。

Page 23: 第八讲  RSA 和 Rabin 算法 ( 下 )

如果素数 p 随机选择且足够大,则 p1 和 p+1 将有非常大的可能有大素数因子。此外,如果 p 和 q 为随机选择,则循环攻击成功的可能性可以忽略。因此,强素数并不能比随机选择素数提供太多的保护。以现有的分解算法知识,并没有一定需要使用强素数的理由。另一方面,产生强素数相对随机产生素数仅增加了微小的计算时间,因此,即使使用强素数也不会带来多少开销。

Page 24: 第八讲  RSA 和 Rabin 算法 ( 下 )

4.3 指数 (1) 如果随机选择加密指数 e ,则 RSA

加密使用算法 4 将需要 k 次模平方和平均 k/2 次模乘,这里 k 是模 n 的比特长度。加密速度可以通过选择小的加密指数 e 并 ( 或 ) 选择加密指数 e 的二进制表示中 1 的个数尽量少。

Page 25: 第八讲  RSA 和 Rabin 算法 ( 下 )

4.3 指数 ( 续 ) (2) 在实际中,加密指数通常选择 e=3 。在

这种情况下,要求 p1 和 q1 都不可以被 3整除。这样做的好处是加密操作速度非常快只需要 1次模乘和 1次模平方。另一个在实际中经常使用的加密指数为 e=216+1=65537 。这个数字的二进制表示中仅有 2 个 1 ,因此,在使用算法 4 加密时仅需要 16次模平方和 1次模乘。加密指数 e=216+1 常常认为优于 e=3 ,这是由于在应用中通常不太可能将同一条消息发送给 216+1 个接收者。

Page 26: 第八讲  RSA 和 Rabin 算法 ( 下 )

4.3 指数 ( 续 ) (3) 由于小指数攻击,需要解密指数 d>n0.29

2 。 Boneh和 Durfee认为他们的攻击算法不能算做理论,这是因为他们也不能证明攻击算法一定总能成功。但是通过实验已经证实了攻击算法的确有效,他们并没有发现一个例子会导致攻击算法失败。

Page 27: 第八讲  RSA 和 Rabin 算法 ( 下 )

5 Rabin 加密算法 5.1 算法描述

。,的秘密密钥是而,的公开密钥就是。计算

基本相同的规模。两个数有,和的素数不同产生两个随机大

做如下步骤:每个实体钥。开密钥和相应的秘密密摘要:每个实体产生公

生公钥加密算法的密钥产

)( (3)

(2)

)( (1)

Rabin

qpAnA

qn=p

qp

A

7算法

Page 28: 第八讲  RSA 和 Rabin 算法 ( 下 )

5.1 算法描述 ( 续 )

。文消息际决定其中哪一个是明可以根据实之一。,或,,明文消息必然是

。,和,,个平方根的模找出做如下操作:恢复出明文消息,为了从密文消息

。给发送密文消息。计算

。之间的一个整数,将明文消息表示为在。的真实公开密钥得到

做如下操作:解密之。。给实体加密一条明文消息摘要:实体

公钥加密算法

m

Ammmm

mmmmnc

Ac

Ac

nmc

mn

nA

B

AAmB

(2)

4 (1)

(4)

) (mod (3)

1][0 (2)

(1)

Rabin

4321

4321

2

.解密

.加密

8算法

Page 29: 第八讲  RSA 和 Rabin 算法 ( 下 )

5.1 算法描述 ( 续 )

。等价于解同余式

则解多项式同余组,而两两互素,,,,如果整数

) (mod 0 )(

) (mod 0 )(

) (mod 0 )(

) (mod 0 )(

=

2

1

2121

nxf

nxf

nxf

nxf

nnnnnnn

k

kk

6事实 .解释

Page 30: 第八讲  RSA 和 Rabin 算法 ( 下 )

5.1 算法描述 ( 续 )

。给并发送接着计算

。,它的十进制表示为比特,得到消息的最后复制,实体比特的消息。为了加密被复制在消息的最后面比特在加密之前最后假定规则是原始消息的

。,秘密密钥为的,而的公开密钥为。

并计算,和选择素数实体

Ac

nmcB

mm=

mB

m =

q = p =

An = Aq =n = p

qpA

62111 91687) (mod 405692 ) (mod

40569 = 1110011001111001

6 1001111001

10

6

)331 277(

9168791687

331 = 277 =

2

.加密

.密钥产生4例子

Page 31: 第八讲  RSA 和 Rabin 算法 ( 下 )

5.1 算法描述 ( 续 )

。原始消息并可恢复出得到解密满足规则,由于只有

。,,,

它们的二进制表示为,,,,

的平方根:个的分解计算出利用其知道为了解密

1001111001 =

1011101100011110 = 1110011001111001 =

100011010110000 = 00101101000100000 =

51118 = 40569 = 22033 = 69654 =

) (mod

4 ,

33

43

21

4321

m

mcAm

mm

mm

mmmm

nc

nAc.解密( )续 4例子

Page 32: 第八讲  RSA 和 Rabin 算法 ( 下 )

6 Rabin 加密的执行6.1 计算平方根

。,就是平方根的模个。计算。计算

。计算

。计算

来反复使用。次计算出可以在密钥产生阶段一和。注意满足和算法发现整数使用扩展

平方根可简化如下:的模个的素数,则计算都选择和如果

) (mod ) (mod 4 (6)

) (mod ) ( (5)

) (mod ) + ( (4)

) (mod (3)

) (mod (2)

1 =

+ Euclidean (1)

44) (mod 3

1)/4+(

1)/4+(

nynxnc

nrqbspay

nrqbspax

qcs

pcr

baqb

paba

ncqp

q

p

Page 33: 第八讲  RSA 和 Rabin 算法 ( 下 )

6.2 关于效率 Rabin 加密过程的效率非常高,这是因为仅

需要 1次模平方计算。比较而言, RSA 加密使用加密指 e=3 需要 1次模乘和模平方计算。 Rabin 解密速度要比加密慢,但是与 RSA 解密在一个数量级上。

Page 34: 第八讲  RSA 和 Rabin 算法 ( 下 )

6.3 冗余问题 Rabin 公钥加密方案的一个缺点是接收者需要

从 4 种可能情况中选择一个正确的解密明文消息。这一解密中的不确定问题在实践中可以通过预先增加定义原始明文消息冗余来解决。 ( 例如,明文消息的最后 64 比特需要被复制。 ) 这样,将有非常高的概率解密出来的 4 个可能明文消息中仅有一个符合冗余的规则。如果 4 个平方根中没有一个符合冗余规则,则接收者就认为出错而拒绝密文消息。

Page 35: 第八讲  RSA 和 Rabin 算法 ( 下 )

(1) Rabin 公钥加密方案存在类似 RSA 加密中的小指数加密和前项搜索问题。前项搜索问题可以通过明文消息加盐来解决。

(2) 作为被动攻击者的任务是从密文消息 c恢复出明文消息 m 。这就是平方根 SQROOT 问题。分解 n 和计算模 n 的平方根问题在计算上是等价的。因此,假定分解 n 在计算上不可能, Rabin 公钥加密方案就可以证明能够抵抗被动攻击者的攻击。

7 Rabin 加密的安全

Page 36: 第八讲  RSA 和 Rabin 算法 ( 下 )

理由 .假定有一个多项式时间的算法 R 可以解决 SQROOT 问题。这个算法就可以用来解决合数 n 的分解问题。随机选择一个整数x 满足 (x , n)=1 ,并计算 ax2(mod n) 。接下来,算法 R 在输入为 a 和 n 的情况下运行,返回模 n 平方根 y 。如果 yx(mod n) ,分解尝试失败,随机选择另一个整数 x重复上述过程。否则, (xy , n) 就可以得到 n 的一个非平凡因子, p 或 q 。由于 a 有 4 个模n 的平方根,每次尝试成功的可能性为 1/2 。

Page 37: 第八讲  RSA 和 Rabin 算法 ( 下 )

(3) 对于主动攻击者, Rabin 公钥加密存在选择密文攻击问题。这样的攻击可以按如下步骤进行。攻击者选择一个随机整数 m 并计算 cm2(mod n) 。攻击者提交 c给 A 的解密机,它将解密 c 并返回某个明文消息 y 。由于 A 不知道明文消息 m ,并且 m 为随机选择,明文消息 y未必就是同一个消息 m 。如果随机返回,将有 1/2 可能性, y 不等于 m(mod n) ,在这种情况下, (my , n)就是 n 的一个素数因子。否则,攻击可以换新的 m重复以上过程。

Page 38: 第八讲  RSA 和 Rabin 算法 ( 下 )

(4) 如果将冗余规则用于以上情况,则 Rabin 公钥加密方案将不在存在选择密文攻击问题。 如果攻击者选择一条消息 m 并具有规定的冗余并将 cm2(mod n) 提交给 A 的加密机,加密机将以非常高的概率返回消息 m 本身给攻击者 (由于其它 3 个 c 的模平方根有非常大的概率不包含规定的冗余 ) ,则将不会提供给攻击者任何信息。另一方面,如果攻击者选择不包含冗余的消息 m ,则有非常高的可能性 4 个模平方根都不具有需要的冗余形式。在这种情况下,解密机将认为对 c 的解密失败并对攻击者不做答复。因此, Rabin 公钥加密通过增加适当的冗余规则将提高其实用价值。

Page 39: 第八讲  RSA 和 Rabin 算法 ( 下 )

8 公钥加密的总结 8.1 公钥加密的要求 在一个公钥系统中,消息集合 M ,密钥集合 K ,和加 / 解密函数 E/D ,必须满足如下要求:

(1) 对于任何消息 mM ,满足 Dk(Ek(m))=m 。 (2) 对于每一个消息 mM 和密钥 kK ,值

Ek(m) 和 Dk(m)容易计算。

Page 40: 第八讲  RSA 和 Rabin 算法 ( 下 )

8.1 公钥加密的要求 ( 续 )

(3) 给定密钥 kK ,很容易找到函数 Ek

和 Dk 。(4) 对于几乎所有密钥 kK ,如果仅仅知道函数 Ek ,不可能发现一个算法有效计算函数 Dk 。

Page 41: 第八讲  RSA 和 Rabin 算法 ( 下 )

8.1 公钥加密的要求 ( 续 )

可信第三方认证密钥。密钥冒充问题,就使用保密。如果存在公开,而。和解密函数应加密函数

并确定对钥,每个用户产生一个密一旦一个公钥系统建立

解密函数是。

。加密函数是,,的密钥是一个三元组的,件。正如我们提到加密是如何满足这些条让我们观察

kkkk

dk

ek

DEDE

k

nmmD

nmmE

ndek

) (mod)(

) (mod)(

)(RSA

RSA

5例子

Page 42: 第八讲  RSA 和 Rabin 算法 ( 下 )

8.2 关于认证和不可否认(1) 在对称密码系统中,认证是容易的,但不存在不可否认问题。 (2) 在公钥密码系统中,认证和不可否认都不能自然成立。但是,这些目标容易实现。例如,在 RSA 系统中计算并发送消息 Ekb(Ska(m))=Ekb(Dka(m)) 。

Page 43: 第八讲  RSA 和 Rabin 算法 ( 下 )

8.3 陷门单向函数

候选函数。很好的单向和陷门单向性能,我们还是找到了一些然也是未知问题。但是性自,陷门单向函数的存在函数的存在性仍然未知单向函的存在性。事实上,义下明确证明陷门单向定” “ ”和 计算困难 合理“没有人能够在对 容易

。将由计算困难变得容易满足,发现,则给定任意门信息

称为陷给定一些额外信息并附加一条性质就是:个单向函数一个陷门单向函数是一

#

=)()

(

→ :

yxfXxYy

YXf

2定义

Page 44: 第八讲  RSA 和 Rabin 算法 ( 下 )

8.3 陷门单向函数 ( 续 )

。和。陷门信息是,函数是函数。算法也是陷门单向候选

。,这里、或、和息是。陷门信,这里,,,就是

数是困难的。陷门单向函具信分解整数数的乘积。是两个素令是陷门单向候选函数。

qpnx

nxf

dedqp

enxenxf

n

qpn

e

) (mod

)( Rabin (2)

) (mod 1

1) ( ) (mod )(

RSA (1)

2

.陷门单向候选函数

Page 45: 第八讲  RSA 和 Rabin 算法 ( 下 )

谢谢!