现代密码学 复习题 答案.docx
- 文档编号:8604498
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:17
- 大小:98.17KB
现代密码学 复习题 答案.docx
《现代密码学 复习题 答案.docx》由会员分享,可在线阅读,更多相关《现代密码学 复习题 答案.docx(17页珍藏版)》请在冰豆网上搜索。
现代密码学复习题答案
(一)信息的载体有(媒质)和(信道)。
对信息载体的两种攻击为(被动攻击)和(主动攻击)。
密码学的两个分支是(密码编码学)和(密码分析学)。
密码体制有(单钥密码体质)和(双钥密码体质)。
现代流密码的设计思想来源于古典密码中的(维吉尼亚密码)。
现代分组密码的设计思想来源于古典密码中的(多字母代换密码)。
(二)在信息保密系统中,攻击者Eve所拥有的基本资源有哪些?
Eve在不安全的公共信道上截获了密文c。
Eve知道加密算法E和解密算法D。
攻击者Eve可能拥有的更多资源有哪些?
Eve可能知道密文c所对应的明文m。
(此时所进行的攻击称为已知明文攻击)
Eve可能拥有强大的计算能力。
Eve可能缴获了一台加密机(也称为加密黑盒子),可以任意地输入明文,输出密文。
(此时所进行的攻击称为选择明文攻击)
攻击者Eve不可能拥有的资源是什么?
Eve不知道加密密钥z和解密密钥k。
(事实上,在进行安全性分析时,有时也假设Eve知道了密钥的一部分,但决不能全部知道)
(三)叙述已知明文攻击。
设攻击者Eve截获了密文c,并且知道了密文c所对应的明文m。
(这种情况是怎样发生的呢?
当明文m是已经过期的消息,可能无法再保密,也可能必须将其公开。
因此,这种情况是经常发生的)于是:
•在解密方程m=D(c,k)中,Eve知道m和c,仅仅不知道解密密钥k。
•在加密方程c=E(m,z)中,Eve知道m和c,仅仅不知道加密密钥z。
•如果Eve从解密方程m=D(c,k)中计算出解密密钥k,则Eve今后就可以像Bob一样对任何密文c’进行解密:
m’=D(c’,k)。
•如果Eve从加密方程c=E(m,z)中计算出加密密钥z,则Eve今后就可以像Alice一样对任何明文m’进行加密:
c’=E(m’,z)。
•还可以给更加宽松的条件。
设攻击者Eve获得了以往废弃的n组明文/密文对:
(m1,c1),(m2,c2),…,(mn,cn)。
•于是Eve获得了关于解密密钥k的方程组:
•m1=D(c1,k),
•m2=D(c2,k),
•…,
•mn=D(cn,k)。
•(n越大,解密密钥k就越容易确定。
)
(四)叙述无条件安全性。
对密码体制的任何攻击,都不优于(对明文)完全盲目的猜测,这样的密码体制就称为无条件安全的(或完善保密的)。
什么样的加解密方式能够实现无条件安全性?
一次一密的加密方式容易实现无条件安全性。
因为密钥时时更新,所以以往得到的任何明文/密文对,对于破译新的密文没有任何帮助,只能做完全盲目的猜测。
(五)叙述计算安全性。
计算安全是一个模糊的概念。
我们可以给出以下三个级别的定义。
(1)对密码体制的任何攻击,虽然可能优于完全盲目的猜测,但超出了攻击者的计算能力。
这是最高级别的计算安全。
(2)对密码体制的任何攻击,虽然可能没有超出攻击者的计算能力,但所付出的代价远远大于破译成功所得到的利益。
这是第二级别的计算安全。
(3)对密码体制的任何攻击,虽然可能没有超出攻击者的计算能力,但破译成功所需要的时间远远大于明文本身的有效期限。
这也是第二级别的计算安全。
什么样的加解密方式能够实现计算安全性?
(六)设明文x,密文y,密钥z1,密钥z2,均为8比特课文。
加密算法为y=(x‘+’z1)“+”z2。
其中‘+’表示逐位(mod2)加法运算;“+”表示(mod28)加法运算。
试用2个明文/密文对解出密钥z1和z2各自的最低位,其中明文可以任意选择。
你选择什么明文?
怎样解出?
在解出密钥z1和z2各自的最低位以后,试用2个明文/密文对解出密钥z1和z2各自的次最低位,其中明文可以任意选择。
你选择什么明文?
怎样解出?
使用选择明文攻击,多少个经过选择的明文/密文对可以解出密钥z1和z2?
(七)设明文(x1x2x3x4x5),密文(y1y2y3y4y5),密钥A(5×5阶方阵),密钥(b1b2b3b4b5),满足域GF
(2)上的如下加密方程:
(y1y2y3y4y5)=(x1x2x3x4x5)A+(b1b2b3b4b5)。
取6组明文/密文对:
(00000)/(10110),(10000)/(01110),(01000)/(11010),
(00100)/(10000),(00010)/(10101),(00001)/(00111)。
试解出密钥A和密钥(b1b2b3b4b5)。
此加密方程能够唯一解密吗?
为什么?
(八)叙述Golomb随机性假设(三条假设)。
(1)当n充分大时,k1k2k3…kn中0和1的个数各占约一半。
(2)当n充分大时,在k1k2k3…kn中,长度为l的比特串10…01(称为0游程)的个数约有n/2l个;长度为l的比特串01…10(称为1游程)的个数约有n/2l个。
(3)若k>0,当n充分大时,以下的值(称为异相自相关函数值)约为0。
(九)回答下列问题:
1.一个周期的布尔序列一定是线性反馈移位寄存器序列吗?
为什么?
定理如果一个比特流是一个周期序列,则它一定是线性反馈移位寄存器序列。
证明设比特流k的最小周期是N。
则
l>N后,kl=kl-N。
因此比特流k为N阶线性反馈移位寄存器序列,抽头系数为{c1、c2、…、cN}={0、0、…0、1}(即极小多项式f(x)=1‘+’xN),初始状态为k1k2k3…kN。
2.n阶线性反馈移位寄存器序列的最小周期的上确界是什么?
(2n-1)最小周期达到该上确界的序列称为什么序列?
(n阶m序列)当n阶线性反馈移位寄存器序列的最小周期达到该上确界时,对Golomb随机性假设的符合程度是怎样的?
完全满足GOLOMB随机性假设.
(3.1)k在自己的一个最小周期内(即连续2n-1个比特内),0出现2n-1-1次,1出现2n-1次。
(3.2)取定j,3≤j≤n,观察k的连续2n-1个长j的比特串:
klkl+1kl+2…kl+j-1,l=1,2,…,2n-1。
10…01出现2n-j次;(长为j-2的0游程)
01…10出现2n-j次。
(长为j-2的1游程)
观察k的连续2n-1个长n+1的比特串:
kl~kl+n,l=1~2n-1。
10…01出现1次。
(长为n-1的0游程)
观察k的连续2n-1个长n+2的比特串:
kl~kl+n+1,l=1~2n-1。
01…10出现1次。
(长为n-1的0游程)
(3.3)对任何1≤j≤2n-2,下式接近0。
(自相关函数)
这样的序列为什么不能直接作为密钥流?
不能直接作为密钥流的原因为:
EVE如果得到任何一段连续2N个比特,就获得了一个关于抽头系数的方程组,由于加法和乘法都是在域GF
(2)上进行(MOD2运算),容易计算出抽头系数,从而被攻破。
解法:
如果n阶线性反馈移位寄存器序列用作密钥流,攻击者Eve截获了密文段c1c2c3…c2n,并知道了对应的明文段m1m2m3…m2n,因此计算出了对应的废弃密钥段k1k2k3…k2n。
则Eve获得了关于抽头系数{c1、c2、…、cn}的以下方程组。
kl=c1kl-1‘+’c2kl-2‘+’…‘+’cnkl-n,
其中l=n+1,n+2,…,2n。
注意到这是在有限域GF
(2)上的线性方程组,很容易解出抽头系数{c1、c2、…、cn}。
实际上,当Eve获得了n阶线性反馈移位寄存器序列的任何一段的连续2n个比特kj+1kj+2kj+3…kj+2n,他就获得了关于抽头系数{c1、c2、…、cn}的以下方程组。
kl=c1kl-1‘+’c2kl-2‘+’…‘+’cnkl-n,
其中l=j+n+1,j+n+2,…,j+2n。
以上方程组中的加法和乘法都是在域GF
(2)上进行的(即(mod2)运算)。
以上事实说明,当Eve获得了n阶线性反馈移位寄存器序列的任意连续2n个比特,Eve就获得了整个密钥流。
(3)当一个周期的布尔序列的线性复杂度为n时,该序列的长度为2n的串就能完全解出(综合出)该序列。
怎样解出?
(两种算法)
序列的综合的两种最著名的算法是B-M算法和Games-Chan算法。
(十)当非线性前馈序列用作密钥流时,哪三个部分可能作为通信伙伴的原始密钥?
初始状态,极小多项式,非线性布尔函数。
(十一)分组密码与流密码相比,有什么优点?
(分组密码与流密码相比,优点:
加解密算法简洁快速,占用的计算资源小,易于软件和硬件的实现;加解密算法参数固定,比流密码容易实现标准化;由于明文流被分段加密,因此容易实现同步,而且传输错误不会向后扩散.)
有什么缺点?
(不容易使用硬件实现,安全性很难被证明,至多证明局部安全性.)
分组密码的5个设计准则是什么?
(安全性,简洁性,有效性,透明性和灵活性,加解密的相似性.)
(十二)写出Feistel网络的算法步骤,并画出图。
将明文m分为等长的两部分m=(L(0),R(0));
使用由密钥k控制的高度非线性函数F,
(1)计算:
(L’,R’)=(L(0)‘+’F(R(0),k),R(0));
(2)计算密文:
c=(L
(1),R
(1))=(R’,L’)。
(十三)在DES中,
32比特课文X→扩充变换E→‘+’48比特密钥k→8个S盒→32比特课文Y
是可逆的;这就是说,当密钥k确定时,不同的X一定得到不同的Y。
说明这是为什么。
这种可逆性设计有什么意义。
为了使扩充变换E→8个S盒(32比特→32比特)整体是一个可逆函数,必须使得8个S盒总体输出是8个S盒总体输入的第2~5、8~11、14~17、20~23、26~29、32~35、38~41、44~47比特的可逆函数。
(回顾扩充变换E:
扩充变换E的作用是将32比特的课文膨胀为48比特,且扩充变换后的第1、6、7、12、13、18、19、24、25、30、31、36、37、42、43、48比特为扩充部分。
)
(十四)在DES、Rijndael、Safer+中,不具有加解密相似性的有()。
DES是加解密相似的。
RIJNDAEL不是加解密相似的。
SAFER+解密算法就是简单地将加密算法的操作逆向进行。
(十五)IDEA是加解密相似的。
设加密算法的密钥子块的标号顺序为
(z11,z12,z13,z14);(z15,z16);(z21,z22,z23,z24);(z25,z26);…;
(z81,z82,z83,z84);(z85,z86);(z91,z92,z93,z94)。
现在把解密过程用加密算法来实现,问:
第3轮的6个密钥子块依次是什么?
((z71-1,-z73,-z72,z74-1);(z65,z66))
第8轮的10个密钥子块依次是什么?
((z21-1,-z23,-z22,z24-1);(z15,z16);(z11-1,-z12,-z13,z14-1))
在IDEA中,“×”表示(mod216+1)乘法运算。
计算215“×”215。
(49153)
(十六)写出Rijndael轮函数(普通轮)的四个不同的计算部件名称。
RIJNDAEL的轮函数由四个不同的计算部件所组成,分别是:
字节代替(ByteSub)
行移位(ShiftRow)
列混合(MixColumn)
加密钥(AddRoundKey)
设Rijndael的字节代替函数为y=bytesub(x)。
计算sub(0)。
(1)首先,将字节看作GF(28)上的元素,映射到自己的乘法逆;0字节影射到它自身。
(2)其次,将字节看作GF
(2)上的8维向量,做如下的(GF
(2)上的;可逆的)仿射变换:
(11000110)
(十七)
在Safer+中,计算指数盒的值X(0),计算对数盒的值L(0)。
字节内的混淆采用字节非线性可逆变换函数X(·)和L(·),其中X(·)称为指数变换,X(x)=45x(mod257)(mod256),L(·)是X(·)的逆变换,称为对数变换。
X(0)=1
L(0)=128
Safer+线性层变换矩阵M有何特点,为什么这样设计。
线性层是环({0,1}8,+(mod256),×(mod256))上的一个16维可逆线性变换,作为字节之间的快速扩散。
线性层运算就是将输入课文看作环({0,1}8,+(mod256),×(mod256))上的16维向量,右乘矩阵M。
从上式可以看出,矩阵M中的元素都是2的幂,这种设计的目的是使模28乘法运算简化成为“左移位,右补0”,简单快速。
(十八)写出RSA的密钥生成过程。
密钥的产生:
(1)选择两个保密的大素数p和q;
(2)计算n=p×q,(n)=(p-1)(q-1),其中(n)是n的欧拉函数值;
(3)选一整数e,满足1 (4)计算d,满足d·e≡1mod(n),即d是e在模(n)下的乘法逆元。 因e与(n)互素,模(n)的乘法逆元一定存在; (5)以{e,n}为公开钥,{d,p,q}为秘密钥。 (十九)写出基本RSA的加密过程和解密过程。 加密: 加密时首先将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于log2n;然后对每个明文分组m,作加密运算: c≡memodn; 解密: 对密文分组的解密运算为: m≡cdmodn。 (二十)设p是奇素数,且p是4的倍数加3。 设c是一个(modp)平方剩余。 关于未知数x的二次方程c=x2(modp)一共有几个解? 它们怎样计算。 两个解 由题设知 是整数, 因为c是模p的二次剩余, 所以: (modp) 从而 即有 为c模p的两个平方根。 (二十二)设n=pq是两个不同的奇素数的乘积。 设c是一个(modn)平方剩余。 关于未知数x的二次方程c=x2(modn)一共有几个解? 如果给出2个不同的解,它们关于(modp)同余,关于(modq)不同余,则能够得到什么结果。 (重要! 由题设知,pq必须都是Blum数) 解方程组 显然该方程组有4组解。 其关于(modn)也不同余 (二十二)写出ElGamal的密钥生成过程,加密过程,解密过程。 ElGamal的密钥生成 选择一个大的素数p。 选择g,1 选择x,1 计算y=gxmodp。 Bob的公钥是(p,g,y),对外公布。 Bob的私钥是x,自己私藏。 ElGamal的加密过程 Alice欲发送明文m给Bob,其中 0 Alice选择随机数k,(k,p-1)=1,计算: y1=gkmodp(随机数k被加密)。 再用Bob的公钥y,计算: y2=mykmodp(明文被随机数k和公钥y加密) 密文由y1、y2级连构成,即密文c=y1||y2。 ElGamal的解密过程: Bob收到密文c后,用自己的私钥x计算 m=y2/y1x=myk/gkx=mgxk/gxkmodp。 (二十三)叙述杂凑函数应该满足的3条性质。 1.等长性,2.单向性.3.无碰撞性. (二十四)写出只使用杂凑函数构造的公平提交方案。 散列编码的用途 用途一: 公平提交方案 Alice猜测了一个号码x1,但不知道中奖号码x2; Bob设置了中奖号码x2,但不知道Alice猜测的号码x1。 Alice希望首先获得x2,然后重新确定x1使得x1=x2。 Bob希望首先获得x1,然后重新确定x2使得x2≠x1。 防止两人作弊的方案称为“公平提交方案”。 两人使用一个公开的杂凑函数y=H(x)。 方案如下: (1)Alice随机选择r1,计算y1=H(x1,r1),并将y1发送给Bob。 (2)Bob随机选择r2,计算y2=H(x2,r2),并将y2发送给Alice。 (3)Alice收到y2后,将(x1,r1)发送给Bob。 (4)Bob收到y1后,将(x2,r2)发送给Alice。 (5)Alice收到(x2,r2)后,检验是否y2=H(x2,r2),若是则x2是真实的中奖号码。 (6)Bob收到(x1,r1)后,检验是否y1=H(x1,r1),若是则x1是Alice的真实的猜测号码。 方案分析: Alice发送y1给Bob,Bob发送y2给Alice,这叫做承诺。 Alice发送(x1,r1)给Bob,Bob发送(x2,r2)给Alice,这叫做践诺。 当承诺值确定以后,无法改变践诺值。 当对方发送来了承诺值以后,己方无法计算出对方的践诺值,因而无法“随机应变地”确定自己的践诺值,以重合或避开对方的践诺值。 综上所述,杂凑函数阻止了双方作弊。 (二十五)叙述数字签名应该满足的3条性质。 1.完整性,2.身份唯一性(不可伪造性),3.不可否认性(公开可验证性). (二十六)写出公钥密码数字签名方案 (二)。 额外使用一个公开的杂凑函数H。 设Alice欲发消息m给Bob。 (1)Alice用H将消息m进行处理,得h=H(m)。 (2)Alice用自己的私钥k对h“解密”s=D(h,k),s就是对消息m的签名值,(m,s)就是一个签名消息。 (3)Alice将(m,s)发送给Bob。 (4)Bob收到(m,s)后,用Alice的公钥z,将消息m与签名s做如下的检验: 是否H(m)=E(s,z)。 若是则(m,s)是Alice发送的签名消息。 在上述方案中, ⏹签名方程是s=D(H(m),k)。 ⏹验证方程是H(m)=E(s,z)。 ⏹任何人只要拥有Alice的公钥z,都可以对签名消息(m,s)进行验证。 ⏹设攻击者Eve知道Alice的公钥z,他试图伪造一个(m,s),让Bob相信(m,s)是Alice的签名消息。 伪造的(m,s)必须满足验证方程H(m)=E(s,z)。 Eve面临着两难问题: ⏹如果选定消息m,再匹配签名值s,则在验证方程H(m)=E(s,z)中无法解出s。 (这是公钥密码的基本安全性) ⏹如果选定签名值s,再匹配消息m,则在验证方程H(m)=E(s,z)中能够解出H(m),却无法得到m。 (这是杂凑函数的性质) 如此看来,签名方案 (二)似乎具有身份唯一性和不可伪造性。 (二十七)写出D.Chaum盲签名方案。 D.Chaum曾提出第一个实现盲签名的算法,他采用了RSA算法。 令B的公钥为e,秘密钥为d,模为n。 (a)A需要B对消息m进行盲签名,选1 (b)B对t签名,td=(mke)d(modn)A。 (c)A计算s=td/k(modn)得 s=(mke)d/k(modn)=md(modn), (m,s)就是B对m按RSA体制的合法签名,任何知道公钥e的人都能验证se=m(modn)。 (二十八)完整地写出ElGamal数字签名方案和Schnorr数字签名方案。 (密钥生成、签名、验证)。 叙述Schnorr数字签名方案与ElGamal数字签名方案相比的优点。 ElGamal数字签名 ElGamal的密钥生成: 选择一个大的素数p。 选择g为域GF(p)的本原元素。 选择正整数x。 计算y=gx(modp)。 Alice的公钥是(p,g,y),私钥是x。 签名方案是上述的签名方案 (二),额外使用一个公开的杂凑函数H。 设Alice欲发消息m给Bob。 (1)Alice用H将消息m进行处理,得h=H(m)。 (2)Alice选择秘密随机数k,满足 0 计算 r=gk(modp); s=(h-xr)k-1(mod(p-1))。 (3)Alice将(m,r,s)发送给Bob。 (4)Bob用Alice的公钥,检验是否 yrrs=gH(m)(modp)。 若是则(m,r,s)是Alice发送的签名消息。 Schnorr数字签名 Alice拥有3个正整数(p,q,g),向自己的通信伙伴公开。 其中: ⏹p是模数(即将要进行(modp)模数运算),它是一个素数,值的范围在2511到2512之间(即p是一个长度为512的比特串)。 ⏹q也是模数(即将要进行(modq)模数运算),它是一个素数,2159 ⏹g是域GF(p)的元素,且gq=1(modp)。 ⏹Alice选择x,其中1 ⏹Alice计算y=gx(modp)。 ⏹Alice的公钥是(p,q,g,y),Alice的私钥是x。 ⏹签名方案是上述的签名方案 (二),额外使用一个公开的杂凑函数H,H的输出长度是160比特。 设Alice欲发消息m给Bob。 ⏹ (1)Alice选择秘密随机数k,满足0 ⏹r=gk(modp); ⏹e=H(r,m); ⏹s=k+xe(modq)。 ⏹(3)Alice将(m,e,s)发送给Bob。 ⏹(4)Bob用Alice的公钥,计算r’=gsy-e(modp)。 检验是否 ⏹e=H(r’,m)。 ⏹若是则(m,e,s)是Alice发送的签名消息。 Schnorr签名与ElGamal签名的不同点: 在ElGamal体制中,g为域GF(p)的本原元素;而在Schnorr体制中,g只是域GF(p)的阶为q的元素,而非本原元素。 因此,虽然两者都是基于离散对数的困难性,然而ElGamal的离散对数阶为p-1,Schnorr的离散对数阶为q 从这个角度上说,ElGamal的安全性似乎高于Schnorr。 签名长度比较: Schnorr比ElGamal签名长度短。 ElGamal: (m,r,s),其中r的长度为|p|,s的长度为|p-1|。 Schnorr: (m,e,s),其中e的长度为|q|,s的长度为|q|。 ●在Schnorr签名中,r=gk(modp)可以预先计算,k与m无关,因而签名只需一次modq乘法及减法。 所需计算量少,速度快,适用于灵巧卡采用。 (二十九)Shamir门限秘密共享方案。 设: p=17;n=5;t=3; (ID (1),h(ID (1)))=(1,8); (ID (2),h(ID (2)))=(2,7); (ID(3),h(ID(3)))=(3,10); (ID(4),h(ID(4)))=(4,0); (ID(5),h(ID(5)))=(5,11)。 当第1位~第3位参与者同时到场,解出共享的秘密 a0+a1x+a2x2 (三十)叙述Schnorr电子现金支付协议。 在Schnorr协议的初始化阶段,选择一个大素数p,一个正整数g。 p和g都被公开。 设顾客的身份秘密信息是(m,b),其中m和b都是正整数。 顾客的身份公开信息是(c,n),其中 c=gb(modp);n=gm(modp)。 Schnorr支付协议如下。 第一步: 顾客出示电子现金。 电子现金上有其身份公开信息(c,n)。 第二步: 商家随机地选择一个正整数x,发送给顾客。 (询问) 第三步: 顾客用自己的身份秘密信息(m,b),计算: y=mx+b(modp-1)。 顾客将y发送给商家。 (回答) 第四步: 商家用顾客的身份公开信息(c,n),验证是否有 gy=nxc(modp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现代密码学 复习题 答案 现代 密码学