RC4(v||k)? RC4(v||k)? m=m
b. RC4产生的密钥流是伪随机的 c= RC4(v||k)? m
k一定只当v相同时,可以部分确定使用。
c. k=2=2 d. 亦即2
9.2 用图9.6所示的RSA算法对下列数据实现加密和解密: a. p=3;q=11;e=7;M=5 b. p=5;q=11;e=3;M=5 c. p=7;q=11;e=17;M=9 d. p=11;q=13;e=17;M=7 e. p=17;q=31;e=7;M=2
提示解密不像你想象的那么难,请使用一些技巧。
RSA算法中有(p,q)=1则n=pq ?(n)=(p-1)(q-1) d≡e?1mod ?(n) 此时有加密C= memodn 解密M=Cdmodn
a. 加密:n=pq=3*11=33, ?(n)=(p-1)(q-1)=(3-1)(11-1)=20 de≡1(mod20) 即7d≡1(mod20) 所以d=3
m2mm2c=57mod33=(3125mod33)(25mod33)=78125mod33=14
解密:M=Cdmodn=14mod33=2744mod33=5
b. 加密n=pq=5*11255 ,?(n)=(p-1)(q-1)=(5-1)(11-1)=40 de≡1(mod40),即3d≡1(mod40),所以d=27 C= memodn=93modn=729mod55=14
解密:M=Cdmodn=14mod55=9 同理可得:
273c. n = 77; ?(n)= 60; d = 53; C = 57. d. n = 143; ?(n)= 120; d = 11; C = 106. e. n = 527; ?(n)= 480; d = 343; C = 128.
9.3在使用RSA的公钥体制中,已截获发给某用户的密文C=10,该用户的公钥e=5,n=35,那么明文M等于多少? 解答:
已知n=35,又因 n=pq, (p,q)=1 可知 p=5,q=7或p=7,q=5 ?(n)=(p-1)(q-1)=24
d≡e-1mod(?(n))= 5-1mod24=5
M=Cdmodn=105mod35={(103mod35)(102mod35)}mod35=(20*30)mod35=5
9.4
在RSA体制中,某给定用户的公钥为e=31,n=3599,那么该用户的私钥等于多少? 提示:首先用试探法决定p和q,然后用扩展欧几里得算法寻找31模?(n)的乘法逆。
解答:
n=3599,n=pq,又(p,q)=1
则假设p与q值进行推断,根据此数最后一位,则p与q的值最后一位为1,3,9
3599不能整除,所以q≠3; 33599若p=9则q=不能整除,所以q≠9;
93599若p=11则q=不能整除,所以q≠11;
11若p=3 则q=
…… ……
可推断出p=59,q=61,或p=61,q=59 所以?(n)= (p-1)(q-1)=(59-1)(61-1)=3480 de≡1(mod ?(n)) 3480=112*31+8 31=3*8+7 8=1*7+1 所以 1=8-7
=8-(-31-3*8) =4*8-31
=4*(3480-112*31)-31 =4*348+(-449)*31 所以d=3480-499=3031 即私钥为3031
9.5在使用RSA算法时,可以从少量的重复的编码中恢复出明文,其可能的原因是什么? 解答:
如果可以从少量重复的编码中恢复出明文则
Metet≡M(mod(n))
≡1(mod ?(n))
t?1ed=(mod ?(n))
e 的取值有问题(周期t小)
9.6假定我们已知若干个用RSA算法编码的分组但不知私钥,假设n=pq,e是公钥。若某人告诉我们说它知道其中的一个明文分组与n有公因子,这对我们 有帮助吗? 解答:
是有帮助的;
因为pq=n(p,q都为大素数)C=Memodn
说明明文中包含p或q的因子,而这个人已知道明文分组中有与n的公因子,表明明文块是p或q的倍数;可以测试每个组,如果互质则为p或q,如果不互质,则继续求它的因子得出p或q。
9.7在RSA公钥密码体制中,每个用户都有一个公钥e,一个私钥d,假定bob的私钥已泄密,bob决定产生新的公钥和新的私钥,而不是产生新的模数,请问这样安全吗? 解答: 不安全;
私钥泄密,则攻击者可以利用e,d和n按照加密公式C=M(modn)判断出p和q,易见?(n)
e也就知道了
又edmod ?(n)=1 当n不变时 d≡e?1mod ?(n)
所以可以解出密文 M=Cdmodn
9.8假设bob使用RSA密码体制,其中模数非常大以使得因子分解是不可行的。假设 alice给bob发消息,其中的字母表示为0到25(A→0,B→1,……,Z→25)。然后对每个字母用RSA算法单独加密,参数e和n都很大,这种方法安全吗?如果不安全,请给出最有效的攻击方法。 解答:
假定{A,B,……Z}符合相对应的整数代表字母符号在字母表中的位置,即形成一组信息块SM={0,1,2……25}这组信息对应的密文块SC={0emodn,1modn ……25emodn } 每个人都可以用公钥计算出来; 最有效地攻击方法是计算Meemodn,用密文创建一个查阅表作为索引,相应的明文是查阅
表中相应位置对应的值。
10.1用户A和用户B使用Diffie—Hellman密钥交换技术来交换密钥,设公用素数q=71,本原根α=7.
a.若用户A的私钥b.若用户B的私钥
XA=5,则A的公钥YA为多少? XB=12,则B的公钥YB为多少?
c.共享的密钥为多少?
解答: a. b.
YA= αXAmodq=75mod71=51
66YB=αXBmodq=712mod71=((7mod71)(7mod71))mod71=4
c.K=(YB)
5XAmodq=(YA)
XBmodq
=4mod71 =30
10.2设Diffe-Hellman方案中,公用素数q=11,本原根α=2。 a.证明2是11的本原本。
b.若用户A的公钥YA=9,则A的私钥XA为多少? c.若用户B的公钥YB=3,则共享的密钥K为多少?
解答: a.证明:
假设2是11的本原根,则有:
2,2,……2是(模11)各不相同的与11互素 -10与11互素 而
21021=2=2(mod11) 22=4=4(mod11) 23=8=8(mod11) 24=16=5(mod11)
25=32=10(mod11) 26=64=9(mod11) 27=128=7(mod11) 28=256=3(mod11) 29=512=6(mod11) 210=1024=1(mod11)
可见,2是11的本原根。
b.由YA= αq=2
c. 公钥 K=(YB)
XAXAmodq 可知
XAmod11 由α可推断出
XA=6
6modq=3modq=3mod11=3
6
10.7设EIGamal体制的公用素数q=71,其本原根α=7。
a.若B的公钥YB=3,A选择的随机整数k=2,则M=30的密文是什么? b.若A选择的k值使得M=30的密文为C=(59,C2),则整数C1是多少?
解答:
a. 由于EIGamal体制如题6所示 所以 K=(YB)modq=3mod71=9
k2C1=αmodq=7mod71=49
k2C2=αmodq=9*(30)mod71=57
所以密文为(C1,C2)=(49,57) B.由C1=αmodq可知 59=7mod71 尝试k值
kkk