在公钥算法还没有诞生的年代,数字签名遥不可及。为了对n位的消息签名,研究者设计了这个方案:事先随机产生2n个56位的秘钥。k1,K1, k2,K2....,kn,Kn,这些参数是保密的。发送者再相应地事先准备好两套64位的签证参数:u,U1,u2,U2: ...,Un,U和v,V1,v2,V2.... vn,Vn,这两套参数公开,其中vi=E(ki,ui), Vi= E(Ki,Ui)。
消息M按如下方式签名。对于消息的第i位,依赖该消息位的值为0或1,将ki或Ki附在消息上。例如,如果消息
的前三位为110,则签名时附上的前三个秘钥为K1,K2,k3。请问该方法如何验证签名?一套 保密秘钥可以安全
地为不同的消息签名多少次?
如何验证签名:直接代入验证签名,例如,明文为M=110,那么M加密之后为K1,K2,k3,那么代入E(K1,U1)得到V1,验证V1是否正确(因为E(Ki,Ui)和Vi都是已知的),同理可以验证V2,v3,可以验证K1,K2,k3是正确的序列,即可验证签名。
一套保密钥可以安全的为不同的消息签名1次。
请借助RSA的相关方法,设计一个方案,使得:(1)第一签名者形成文件,对文件签名,并发给第二签名者;(2)第二签名者首先验证该文件确实是第一签名者签过名。然后,他将其签名也加入文件中。公众不能签证第一签名者签了名但第二签名者未签名的中间结果。只有当两人均签名,公众才能验证到两人都已签名。
第一签名者:RSA(PU2,RSA(PR1,M)) 先用签名者1的私钥加密,再用签名者2的公钥加密;
第二签名者:验证:RSA(PR2,RSA(PU2,RSA(PR1,M))) 先用签名者2的私钥解密验证;
加密:C=RSA(PR2,RSA(PR1,M)) 再用签名者2的私钥加密;
公众解密:RSAPU1,RSA(PU2,C)对于密文C,先用签名者2公钥解密再用签名者1公钥解密。
设H(m)是一个抗碰撞散列函数,将任意长消息映射为定长的n比特散列值。对于所有的消息x,x’, x≠x’,都有H(x )≠H(x')。.上述说法是否正确?给出解释。
抗攻击型=抗碰撞性=既是强抗碰撞性也是弱抗碰撞性
明文任意长是无限唱的,N位只有2^n中可能,所以是多对一的映射,存在两个消息映射成相同的结果,所以他们的散列结果可能相同。
利用加密算法构造单向散列函数。考虑使用有一个已知密钥的RSA算法。如下处理含有若干分组的消息:加密第一分组,将加密结果与第二分组异或并加密之,等等。通过解决下面问题,说明该方法是不安全的。给定两个分组消息B1,B2,其散列码为:RSAH(B1,B2)=RSA(RSA(B1)⊕ B2 ) 给定任一分组C1,选择C2使得RSAH(C1,C2)= RSAH(B1,B2)。因此该散列函数不满足抗弱碰撞性。求C2。
答:因为RSA加密算法的明文与密文是一一对应的关系,
即一个明文只有唯一一个密文与之对应。
所以有 RSA(A1)=RSA(A2) <=> A1=A2
补充定理A⨁A=0 0⨁A=A ⨁是异或,相同为1不同为0
RSA(RSA(C1)⨁C2)= RSA(RSA(B1)⨁B2)
RSA(C1)⨁C2= RSA(B1)⨁B2
RSA(C1)⨁RSA(C1)⨁C2= RSA(C1)⨁RSA(B1)⨁B2
C2= RSA(C1)⨁RSA(B1)⨁B2
Bob截获了一份发给Alice的密文C,该密文是用Alice的公钥e加密的。Bob 想获得原始消息M=C^d mod n。Bob选择一个小于 n的随机数r,并计算: Z=r^e mod n X=ZC mod n t=r^(-1)mod n
接着,Bob让Alice用她的私钥对X进行认证,从而对X进行解密。Alice 返回Y=X^d mod n。请说明Bob如何利用获得的信息去求取M。
加密算法为
补充定理:
获得一份密文C,想要获得C的明文
Y=(Z^dmod n) (C^dmod n )
r^edmod n=r 相当于给r先加密在解密回到原来
一个公司内部使用的通讯协议原版为:(1) A将(A, E(PUb, [M, A]), B)发给B.(2) B发送应答(B,E(PUa, [M, B]), A)给A。
请问该协议可否简化为:(1) A将(A, E(PUp, M), B)发给B。2) B发送应答(B, E(PUa, M]), A)给A。
答:假如简化会有安全漏洞,那么A发出的消息(A,E(PUb,M),B),如果有一个内部人员C截获A的报文,将A中的报文改成(C,E(PUb,M),B),在发送给B,那么B收到消息之后就会发送消息(B,E(PUc,M),C)发送给C,那么此时C可以用C的私钥解密获取消息。
形如F(M)=M^k mod N,其中K保密,N公开,M=2,3,4,5,6...
这个方案能生成一系列的子秘钥用于一次一密吗?
答:假设已知F(2)=2^k mod N=A,F(3)=3^k mod N=B
F(4)= 2^k *2^k mod N =4^k mod N =A^2 mod N
F(6)=6^k mod N =B^2 mod N 且N是已知的。
所以不是一次一密的。