试题一(共20分)【说明】密码编码学是研究把信息(明文)变换成没有密钥就不能解读或很难解读的密文的方法,密码分析学的任务是破译密码或伪造认证密码。【问题1】(10分)通常一个密码系统简称密码体制,请简述密码体制的构成。密码体制由以下五个部分组成:(1)明文空间M:全体明文的集合。(2)密文空间C:全体密文的集合。(3)加密算法E:一组明文M到密文C的加密变换。(4)解密算法D:一组密文C到明文M的加密变换。(5)密钥空间K:包含加密密钥Ke和解密密钥Kd的全体密钥集合。【问题2】(3分)根据所基于的数学基础的不同,非对称密码体制通常分为(1)、(2)、(3)。(1)基于因子分解。(2)基于离散对数。(3)基于椭圆曲线离散对数。【问题3】(2分)根据密文数据段是否与明文数据段在整个明文中的位置有关,可以将密码体制分为(4)体制和(5)体制。(4)分组密码。(5)序列密码。【问题4】(5分)在下图给出的加密过程中,mi(i=1,2,...,n)表示明文分组,ci(i=1,2,...,n)表示密文分组,K表示密钥,E表示分组加密过程。该分组加密过程属于哪种工作模式?这种分组密码的工作模式有什么缺点?该加密过程属于CBC的密文链接方式。CBC的密文链接方式下:加密会引发错误传播无界,解密引发错误传播有界。CBC不利于并行计算。拓展:密码分组链接模式(CBC)可以分为密文链接方式和明密文链接方式。(1)CBC的密文链接方式。密文链接方式中,输入是当前明文组与前一密文组的异或。CBC的密文链接方式下:加密会引发错误传播无界,解密引发错误传播有界,CBC不利于并行计算。(2)CBC的明密文链接方式。明密文链接方式中,输入是前一组密文和前一组明文异或之后,再与当前明文组异或。CBC的明密文链接方式下:加密和解密均会引发错误传播无界。试题二(共15分)【说明】RSA是典型的非对称加密算法,该算法基于大素数分解。核心是模幂运算。利用RSA密码可以同时实现数字签名和数据加密。【问题1】(3分)简述RSA的密钥生成过程。选出两个大质数p和q,使得p≠q计算p×q=n计算φ(n)=(p-1)×(q-1)选择e,使得1<e<(p-1)×(q-1),并且e和(p-1)×(q-1)互为质数计算解密密钥,使得ed=1mod(p-1)×(q-1)公钥=e,n私钥=d,n公开n参数,n又称为模消除原始质数p和q【问题2】(4分)简述RSA的加密和解密过程。设定C为密文,M为明文:加密:C=Memodn解密:M=Cdmodn【问题3】(4分)简述RSA的数字签名过程。设M为明文,M的签名过程为:签名:Mdmodn验证签名:(Md)emodn【问题4】(4分)在RSA中,已获取用户密文C=10,该用户的公钥e=5,n=35,求明文M。M=5解:已知n=35,得到p和q分别为5和7;计算φ(n)=(p-1)×(q-1)=24已知公钥e=5,又由于私钥d满足ed=1mod(p-1)×(q-1),因此d=5明文M=Cdmodn=105mod35=5试题三(英10分)【说明】阅读下面程序,回答问题1至问题3。【问题1】(3分)上述代码能否输出“Thisisatest”?上述代码存在什么类型的隐患?不能。(1分)代码存在缓冲区溢出错误。(2分)【问题2】(4分)造成上述隐患的原因是?(1)function()函数将长度为128字节的字符串拷贝到只有16字节的缓冲区中去。(2分)(2)strcpy()函数进行字符串拷贝时,没有进行缓冲区越界检查。(2分)【问题3】(3分)给出消除该安全隐患的思路。防范缓冲溢出的策略有:·系统管理防范策略:关闭不必要的特权程序、及时打好系统补丁。(1分)·软件开发的防范策略:正确编写代码、缓冲区不可执行、改写C语言函数库、程序指针完整性检查、堆栈向高地址方向增长等。(2分)试题分析C语言程序在内存中分为三个部分:程序段、数据段和堆栈。程序段里存放程序的机器码和只读数据;数据段存放程序中的静态数据;动态数据则通过堆栈来存放。在内存中,它们的位置如下图所示。Function()函数将长度为128字节的字符串拷贝到只有16字节的缓冲区中去;而调用strcpy()函数进行字符串拷贝时,没有进行缓冲区越界检查。下图中可以看到执行function()函数前后的堆栈情况。程序执行function()函数完毕时,由于缓冲区溢出,子程序的返回地址被覆盖,变成了0x41414141(AAAA的ASCII...