第三章 分组密码体制 —— 现代密码学(杨波)复习题
第三章
一、填空
1. 分组密码中的代换是一种从明文空间到密文空间的一一映射,如果明密文的长度均为n比特则不同的可逆代换有多少个_______
2. 从易于实现、提高速度和节省软硬件资源的角度看,加解密算法应具有什么样的特性____
3. 一般情况下,一个n bit 代换结构其密钥量是_________________bit
4. 扩散的目的是_________________混淆的目的是__________________________
5. 就代换和置换两类组件而言,采用______变换能够达到扩散目的,采用______变换能实现混淆
6. 乘积密码指顺序地执行两个或多个基本密码系统,如果采用相同的基本密码系统,则这样的乘积密码称为___________,其典型结构是______________
7. 在Feistel网络结构的密码中,加解密极其相似,加密和解密算法的唯一不同之处在于______。
8. DES的密钥长度_______分组长度_______输出密文长度________加密轮数__________
9. DES解密时子密钥的产生有两种方式,对于存储空间受限的环境,采用哪种方式更合适_______
10. DES的初始置换和扩展置换如表所示,则长为64比特的明文分组其第1、9、17、47个比特在置换后分别位于哪个位置____________________,DES加密某轮的右32比特中第1、28比特在经过扩展置换后的位置是___________________
(a)初始置换
(b)扩展置换E
11. DES密码的S盒定义如下表,如果输入是101011,则输出是________
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
S |
0 1 2 3 |
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 |
12. EDE的密钥长度_______分组长度_______输出密文长度___________加密轮数__________
13. DES加密每一轮的子密钥的长度是___________,EDE加密中一共有____个不同的子密钥
14. 在四种攻击中,差分密码分析属于_______ 线性密码分析属于__________
15. 已知一个3轮特征: a0, a1, a2, a3,则3轮特征概率为___________________
a0 L0'= 4008000016 R0'=0400000016
a1 L1'= 0400000016 R1'=0000000016 p1=1/4
a2 L2'= 0000000016 R2'=0400000016 p2=1
a3 L3'= 0400000016 R3'=4008000016 p3=1/4
16. CFB-8的一个比特的密文错误,会导致____个比特的错误传播?在CFB-12中,如果一个密文的倒数第二个比特发生了错误,则会导致___________个分组的错误传播。(注意,不包括发生密文错误的分组)
17. 在IDEA中,02=________,215*8=_______,215+215=_______,215 *215=__________
18. IDEA的密钥长度___分组长度____输出密文长度_____加密迭代轮数_____子密钥个数___
19. IDEA中8的乘法逆元是多少___________,加法逆元是多少_____________
20. 如图乘加结构,则解密时Z5对应的解密子密钥可表示为_________
21. AES的最小的密钥长度_______分组长度_______输出密文长度_______加密迭代轮数________
22. 12轮AES算法中,如果密钥长度k,分组长度为b,子密钥一共需要_______个比特
23. (x4+x+1)mod m(x)=x8+x4+x3+x+1的逆元是__________________________
24. AES的状态在明文输入时第n个字节放在状态阵列的位置(i,j)上,则第13个字节所对应的状态阵列的位置(i,j)=_______________
二、选择
1. 从古典密码的角度看,分组密码属于_________________
A. 单表代换密码 B. 多表代换密码 C. 单表置换密码 D. 多表置换密码
2. 分组密码可以用于实现下述那些功能______________
A. 加密, B. 产生伪随机数, C. 产生密钥流序列 D. 产生MAC E. 数字签名
3. 实现扩散的方法是________________
A. 置换 B. 代换 C. 先置换再代换 D. 先代换再置换
4. 下面这些密码算法中,属于Feistel结构密码的有_____________
A. AES B. IDEA C. RSA D. DES
5. 利用DES的取反特性进行的攻击,应属于哪一类密码攻击_____________
A. 惟密文攻击 B. 已知明文攻击 C. 选择明文攻击 D. 选择密文攻击
6. 下列算法中,哪一个是现行国际分组加密标准_____________
A. DES B. RSA C.IDEA D.AES
7. 下列运行模式中,哪一种模式的错误传播最小?_______哪一种模式可将分组密码转换为自同步流密码_______,哪些模式可实现随机读取_______
A. ECB B.CBC C.CFB D.OFB E. CTR
8. 如上题,AES状态阵列的第(2,5)位置上的元素对应明文的第_________个字节
A. 22 B. 7 C. 13 D. 10
三、判断
1. 分组密码用于加密时,其明文和对应密文的长度可以相同,也可以不同。 ( )
2. CFB运行模式下的分组密码可以等效为一个同步流密码。 ( )
3. OFB只需要DES的加密算法。 ( )
4. 在AES的解密算法中,所有密钥都要先进行逆向列混合,再进行轮密钥加 ( )
5. DES算法是一种多轮迭代密码 ( )
四、简答与计算
1. 分组密码在设计时,为什么会要求其加解密算法相似?
2. 试描述Feistel密码的结构
3.在Feistel密码中,如果第i轮的输入是Li-1,Ri-1,输出是Li,Ri,试用输出表示输入,其中轮函数设为F(Ri-1,Ki)
4. 试画出S盒的结构,并说明其工作原理,即如何由输入得到输出
5. 已知DES满足取反特性,试说明在对DES进行选择明文攻击时工作量会减少一半。
6. 一个用单重DES加密的密文C,密钥为k,如何用EDE算法解密?
7. 两个密钥的二重DES的中途相遇攻击是如何实现的?
8. 三个密钥的三重DES算法结构,如何用该算法解密一重DES产生的密文
9. 什么是ECB模式,为什么不适合于加密长消息,如果明文长度不是分组的整数倍怎么办?
10. 画出CBC模式的逻辑图,并回答其初始向量IV为什么要保密?
11. 试分析一下CBC、CFB、OFB运行模式的错误传播情况。
12. CFB和OFB哪一个适合有扰信道,为什么?试画出逻辑图
13. 什么是CTR模式?为什么可以并行计算和对密文进行随机存取?
14. Rijndael算法是建立在GF(28)有限域上的,且模多项式为m(x)=x8+x4+x3+x+1,试计算(x6+x2+x+1)×(x4+x+1) mod m(x),该计算用x乘来表示时,试给出计算过程。
15. 系数在GF(28)的mod x4+1的乘法a(x)=‘01’x2, c(x)=‘03’x3+‘01’x2+‘01’x+‘02’ 试计算a(x)´c(x)。
16. CFB-64和CBC的区别是什么?
17. 某攻击者要破译所截获的某n个密文分组,采用穷搜索攻击,试分析以下两种攻击的区别
1) 假设攻击者控制加密机,搜索所有可能的明文并加密,看是否等于截获的密文,从而实现对密文的破译。
2) 已知一些明密文对,搜索所有可能的密钥,然后再用该密钥对密文解密。
18. 以DES为例,试分析迭代密码中基本函数的子密钥相同和不同的区别。
五、证明题
1. 已知DES满足取反特性,试证EDE、3个密钥的3DES都具有取反特性。
2. 试说明AES的轮结构中行移位和字节代换的顺序可以互换。
3. 试证明:在Feistel结构密码中解密过程第1轮的输出等于加密过程最后一轮输入左右两半交换值。
六、综合题
某人要做一个密码芯片,该芯片要实现以下功能:对数据流加密、MAC认证、产生随机数。为节省硬件资源,如果仅有一重及多重DES可用,试分析分别采用何种模式、标准或结构能够实现这些功能
参考答案
四、简答与计算
4.11. 试分析一下CBC、CFB、OFB运行模式的错误传播情况。
CBC的错误传播只影响当前分组和下一分组的解密
CFB的错误传播影响当前分组的对应bit解密和后续的ë64/j û或ë64/j û+1个分组的解密
OFB的错误传播只影响当前分组的对应比特解密,无错误传播
4. 14. Rijndael算法是建立在GF(28)有限域上的,且模多项式为m(x)=x8+x4+x3+x+1,试计算(x6+x2+x+1)×(x4+x+1) mod m(x),该计算用x乘来表示时,试给出计算过程。
解:上述乘法即求’47’ ×’13’
’47’ ×’02’=xtime(47)=’8E’ //×x
’47’ ×’04’=xtime(8E)=’07’ //×x2
’47’ ×’08’=xtime(07)=’0E’ //×x3
’47’ ×’10’=xtime(0E)=’1C’ //×x4
而’13’=’01’+ ’02’+ ’10’
所以’47’ ×’13’=’47’ ×(’01’+ ’02’+ ’10’)= ’47’+ ’8E’+ ’1C’=’D5’
即(x6+x2+x+1)×(x4+x+1) mod m(x)= x7+ x6+ x4+x2+1
五、证明题
5.3 试证明:在Feistel结构密码中解密过程第1轮的输出等于加密过程最后一轮输入左右两半交换值
证明:假设加密过程的最后一轮输入左右两半分别表示为LE15,RE15,输出的左右两半分别表示为LE15,RE15,第16轮子密钥为K16
解密过程取密文作为同一算法的输入,由于加密最后一轮输出后又进行了左右交换,所以解密第1轮输入是RE16‖LE16
在加密过程中:
LE16=RE15 ; RE16=LE15ÅF(RE15, K16)
在解密过程中
LD1=RD0=LE16=RE15
RD1=LD0ÅF(RD0, K16)=RE16ÅF(RE15, K16)
=[LE15ÅF(RE15, K16)] ÅF(RE15, K16)=LE15
证毕#
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)