密码学第五章习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.6习题
一.判断题
1~5
二.选择题
1~5 ACBDE
6~10 BCA
三.填空题
1. vernam算法
2.驱动部分组合部分
3.如何将一小段的比特串(密钥)扩展成足够长的密钥
4.同步和自同步
5. 移位寄存器反馈函数
6.参数n 种子密钥
7.2的n次方减1 n
8.奇数互素本原的
四.简答题
(1)简述序列密码算法和分组密码算法的不同。
(2)密钥序列生成器是序列密码算法的核心,请说出至少5点关于密钥序列生成器的基本要求。
①种子密钥K的长度足够大,一般应在128位以上;
②KG生成的密钥序列{ki}具极大周期;
③{ki}具有均匀的n元分布;
④利用统计分析方法由{ki}提取关于KG结构或K的信息在计算上不可行;
⑤混乱性,即{ki}的每一比特位均与K的大多数比特有关;
⑥扩散性,即K 的任一比特的改变要引起{ki }在全貌上的变化;
⑦序列密钥{ki }不可预测,密文和相应明文的部分信息,不能确定整个{ki }。
(3)已知序列密码的密文串1010110110和相应的明文串010*******,而且还已知密钥流是使用3级线性反馈移位寄存器产生的,试破译该密码系统。
解:由()12341423,,,1f a a a a a a a a =⊕⊕⊕,初态为 ()()1234,,,1,1,0,1a a a a =。线性递归可得:511101a =⊕⊕⊕=
611101a =⊕⊕⊕=
701111a =⊕⊕⊕=
811110a =⊕⊕⊕=
910111a =⊕⊕⊕=
1011101a =⊕⊕⊕=
可以得到输出序列为()1101111011,周期为5p =。
(4)简述RC4算法的实现过程。 RC4算法的原理很简单,包括初始化算法和伪随机子密码生成算法两大部分。假设S-box 长度和密钥长度均为n 。先来看看算法的初始化部分(用类C 伪代码表示):
for (i=0; i<n; i++) {
s[i]=i;
}
j=0;
for (i=0; i<n; i++)
{
j=(j+s[i]+k[i])%n;
swap(s[i], s[j]);
}
在初始化的过程中,密钥的主要功能是将S-box搅乱,i 确保S-box的每个元素都得到处理,j保证S-box的搅乱是随机的。而不同的S-box在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,并且,该序列是随机的:i=j=0;
while (明文未结束)
{
++i%=n;
j=(j+s)%n;
swap(s, s[j]);
sub_k=s((s+s[j])%n);
}
得到的子密码sub_k用以和明文进行xor运算,得到密文,解密过程也完全相同。
(5)简述A5算法的实现过程。
A5算法由三个线性反馈移位寄存器(LFSR)R1、R2、R3
组成,寄存器的长度分别是n1=19,n2=22和n3=23。所有的
反馈多项式系数都比较少。三个LSFR的异或值作为输出。
A5用不同的时钟控制。每一个寄存器由基于它自己中间位的时钟控制,并且三个寄存器的中间位的反向门限函数相异或。通常,在每一轮中时钟驱动两个LFSR。
有一种直接攻击需要240次加密:先猜测前两个LFSR的内容,然后试着通过密钥序列决定第三个LFSR。(这种攻击实际上是是否可行尚待讨论,但是目前一个硬件密钥搜索机正在设计中,并且将解决这个问题。)
总之,有一点可以明确,那就是A5的基本思路是好的,它的效率非常高。它能通过所有已知的统计测试,它已知的仅有的弱点是寄存器太短而不能抗穷举攻击。带较长寄存器和稠密反馈多项式的A5的变型是安全的。
(6)简述SEAL算法的实现过程。
给定一个160位密钥k和一个32位的n值,SEAL算法会根据密钥k将n扩展到一个L位的串k(n),L可以被赋值为小于64KB的任何值。密钥k首先进入制表阶段,然后S 盒T的部分字节连同密钥表R,预先输入整数值以及32位比特字n进入算法初始化过程。SEAL算法通过64次迭代,来
改变内部寄存器ABCD的值,每个迭代包含8轮。
(7)简述WAKE算法的实现过程。详见176页。
它每次产生一个32位密钥字与明文字进行异或形成密文。WAKE工作在CFB模式下,即用前一个密文字产生下一个密钥字。它也使用了一个包含256个32位数据的S盒。首先,从密钥中产生S盒的一项Si,然后用密钥初始化4个寄存器,产生一个32位密钥序列字,密文字Ci是明文字Pi与Ki异或的结果。
(8)简述PKZIP算法的实现过程。
PKZIP处理的是一种压缩文件,按字节加密,可变密钥长度的算法。PKZIP算法最重要的部分称为密钥更新,在进行加密计算时,首先选定12B的头信息,将明文信息附在头信息之后作为输入字节流,随后将每一个输入字节与当前计算出的K3进行异或,同时根据输入的字节执行密钥更新的过程,计算出新的K3用于下一字节的加密。
(9)简述FCSR算法的实现过程。
带进位的反馈移位寄存器,称作FCSR,有一个移位寄存器和一个反馈函数,FCSR有一个进位寄存器。它不是把抽头序列中所有的位异或,而是把所有的位相加,并与进位寄存器
的值相加,将结果模2可得到bn的新值,将结果除2就得到进位寄存器新的值。