密码学复习资料

一、DES
1.穷举攻击分析
(1)穷举攻击就是对所有可能的密钥逐个进行解密测试, 直到找到正确密钥为止的一种攻击方法.
(2)穷举攻击判断正确密钥的方法将利用试验密钥解密得到的可能明文与已掌握的明文的信息相比较,并将最吻合的那个试验密钥作为算法输出的正确密钥。
(3)穷举攻击又称为穷尽攻击、强力攻击、蛮干攻击等。只要明文不是随机的,就可实施穷举攻击。
2.简述DES算法中S盒的特点:答:(1)具有良好的非线性,既输出的每一个比特与全部输入比特有关;(2)每一行包括所有的 16 种 4 位二进制;(3)两个输入相差 1bit 时,输出相差 2bit;(4)如果两个输入刚在中间 2个比特上不同,则输出至少有两个比特不同;(5)如果两个输入前两位比特不同而最后两位相同,则输出一定不同;(6)相差 6bit 的输入共有 32 对,在这 32 对中有不超过 8 对的输出相同;(7)S 盒是 DES 中唯一非线性部分。
3.为什么二重 DES 并不像人们想象的那样可以提高密钥长度到 112bit,而相当于 57bit?简要说明原因。 答:已知明文攻击可以成功攻击密钥长度为112位的二重DES,其计算量级位2的56次方,与攻击 DES 所需的计算复杂度2的55次方相当,两者基本在同一个数量级,因此,二重DES并不能从根本上提高其安全性。
4.DES的S盒的设计标准:1.S盒的每一位输出都不是输入的线性或仿射函数。2.S盒的输入发生1比特变化,输出至少有2比特发生变化。3.当固定S盒的1位输入时,S盒的每一位输出中0和1的个数尽可能平衡。
5.在DES算法中,如果给定初始密钥K,经子密钥产生的各个子密钥都相同,则称该密钥K为弱密钥,DES算法弱密钥的个数为(4)
6.DES算法可以划分两步:第一步是子密钥的生产,第二步是数据处理。它的分组长度是64位,有效密钥长度56位。3DES是DES的一种变种,如它采用3个不同的工作密钥,使得整个密钥的长度为【168 】位。
7.Feistel模型是分组密码的经典模型;它的实现依赖于哪些参数它们分别如何影响安全性?答:1分组长度:分组较长意味安全性越高,但是会降低加密和解密的速度。2密钥长度:密钥较长意味安全性越高,但是会降低加密和解密的速度。3迭代轮数;虽然本质在于单轮不能提供足够安全性而多轮加密可取很高安全性典型值164子密钥产生算法:子密钥产生越复杂,密码分析攻击就越困难。5轮函数;越复杂越安全。
8.使用多个DES密钥执行多重加密可以增加安全性;但是双重DES由于中间相遇攻击而并没有相应地增加安全性。
9.DES算法提出以后;密码分析方法也取得相应进展,提出了差

分和线性密码分析,其中差分密码分析只
有在有相当多的密文条件下,才具有理论意义。
10.写出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’)。
11.DES加密法需要经过 E 盒、 S 盒、 P 盒三个过程。

二、AES,
1.简述DES与AES的相同之处: 二者的圈函数都是由3层构成,非线性层,线性混合层,子密钥异或,只是顺序不同; AES的子密钥异或对应于DES中S盒之前的子密钥异或;AES的列混合运算的目的是让不同的字节相互影响,而DES中的F函数的输出与左边的一半数据相加也有类似的效果; AES的非线性运算是字节代换,对应于DES中唯一的非线性运算S盒: 行移位运算保证了每一行的字节不仅仅影响其他行对应的字节,而且影响其他行所有的字节,这与DES中置换P相似。
2.AES算法由四个操作构成:字节代换、行移位、列混淆、轮密钥加。
3.分组密码的加解密算法中最关键部分是非线性运算部分,那么,DES加密算法的非线性预算部分是指 非线性代换,AES加密算法的非线性运算部分是指字节代换。
4.在高级加密标准AES规范中,分组长度只能是128位,密钥的长度可以是 128 位、 192 位、 256 位中的任意一种。
5.DES与AES不同之处: AES密钥长度可变DES不可变 , DES面向比特运算AES面向字节运算 。
6.写出Rijndael轮函数(普通轮)的四个不同的计算部件名称。
答:RIJNDAEL的轮函数由四个不同的计算部件所组成,分别是:
字节代替(ByteSub)
行移位(ShiftRow)
列混合(MixColumn)
加密钥(AddRoundKey)
设Rijndael的字节代替函数为y=bytesub(x)。计算sub(0)。
(1)首先,将字节看作GF(28)上的元素,映射到自己的乘法逆;0字节影射到它自身。
(2)其次,将字节看作GF(2)上的8维向量,做如下的(GF(2)上的;可逆的)仿射变换:

三、RSA,
1.写出RSA的密钥生成过程。
密钥的产生:
(1)选择两个保密的大素数p和q;
(2)计算n=p×q,j(n)=(p-1)(q-1),其中j(n)是n的欧拉函数值;
(3)选一整数e,满足1<e<j(n),且gcd(j(n),e)=1;
(4)计算d,满足d?e≡1 mod j(n),即d是e在模j(n)下的乘法逆元。因e与j(n)互素,模j(n)的乘法逆元一定存在;
(5)以{e,n}为公开钥,{d,p,q}为秘密钥。
2.写出基本RSA的加密过程和解密过程。
加密:加密时首先将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于log2n;然后对每个明文分组m,作加密运算:c≡mE mod n;
解密:对密文分组的解密

运算为:m≡cD mod n。
3.RSA的数论基础是数论的欧拉定理,在现有的计算能力条
件下,RSA被认为是安全的最小密钥长度是1024位 。

四、MD5,
1.简述MD5算法?答:(1)附加填充位;(2)初始化链接变量;(3)分组处理;(4)步函数。
五、费尔马定理:若p是素数,a是正整数且gcd(a, p)=1,则a((p-1))≡1 mod p。
六、欧拉函数:设n是一正整数,小于n且与n互素的正整数的个数称为n的欧拉函数,记为φ(n)
欧拉定理:若a和n互素,则a((φ(n)))≡1 mod n。
七、中国剩余定理,
八、简述密码分析者对密码系统的四种攻击。
答:密码分析者对密码系统的常见的攻击方法有:
1)唯密文攻击:攻击者有一些消息的密文,这些密文都是采用同一种加密方法生成的。
2)已知明文攻击:攻击者知道一些消息的明文和相应的密文。
3)选择明文攻击:攻击者不仅知道一些消息的明文和相应的密文,而且也可以选择被加密的明文。
4)选择密文攻击:攻击者能选择不同的被加密的密文,并得到对应的明文。
九、RSA计算过程,
十、公钥分配过程。单钥密码体制在进行密钥分配时, 要求通信双方或者已经有一个共享的密钥,或者可籍助于一个密钥分配中心。
① 用户A向公钥管理机构发送一个带时戳的消息,消息中有获取用户B的当前公钥的请求。
② 管理机构对A的请求作出应答,应答由一个消息表示,该消息由管理机构用自己的秘密钥SKAU加密,因此A能用管理机构的公开钥解密,并使A相信这个消息的确是来源于管理机构。
③ A用B的公开钥对一个消息加密后发往B,这个消息有两个数据项: 一是A的身份IDA,二是一个一次性随机数N1,用于惟一地标识这次业务。
④ B以相同方式从管理机构获取A的公开钥(与步骤①、②类似)。这时,A和B都已安全地得到了对方的公钥,所以可进行保密通信。然而,他们也许还希望有以下两步,以认证对方。
⑤ B用PKA对一个消息加密后发往A,该消息的数据项有A的一次性随机数N1和B产生的一个一次性随机数N2。因为只有B能解密③的消息,所以A收到的消息中的N1可使其相信通信的另一方的确是B。
⑥ A用B的公开钥对N2加密后返回给B,可使B相信通信的另一方的确是A。

十一、密码分类:代换密码、置换密码、HILL密码、轮转密码。密码学分类 单钥体制 双钥体制
十二、攻击分类:1.被动攻击(窃听)2.主动攻击(中断、篡改、伪造)
十三、预防
十四、各种算法输入输出位数
DES 64比特明文 56比特密钥 输出64比特密文
AES 128 192 256 比特
RSA 输入 664比特
MD5 输入 512比特分组 128比特输





十五、秘钥分配管理,
1 密钥分配管理
两个用户A和B获得共享密钥的方法包括:
① 密钥由A选取并通过物
理手段发送给B。
② 密钥由第三方选取并通过物理手段发送给A和B。
③ 如果A、B事先已有一密钥,则其中一方选取新密钥后,用已有的密钥加密新密钥并发送给另一方。
④ 如果A和B与第三方C分别有一保密信道,则C为A、B选取密钥后,分别在两个保密信道上发送给A、B

2 密钥分配
① A向KDC发出会话密钥请求
② KDC为A的请求发出应答。
② A存储会话密钥,并向B转发EKB[KS‖IDA]。
④ B用会话密钥KS加密另一个一次性随机数N2,并将加密结果发送给A。
⑤ A以f(N2)作为对B的应答,其中f是对N2进行某种变换(例如加1)的函数,并将应答用会话密钥加密后发送给B。




3 公钥分配
① 用户A向公钥管理机构发送一个带时戳的消息,消息中有获取用户B的当前公钥的请求。
② 管理机构对A的请求作出应答,应答由一个消息表示,该消息由管理机构用自己的秘密钥SKAU加密,因此A能用管理机构的公开钥解密,并使A相信这个消息的确是来源于管理机构。
③ A用B的公开钥对一个消息加密后发往B,这个消息有两个数据项: 一是A的身份IDA,二是一个一次性随机数N1,用于惟一地标识这次业务。
④ B以相同方式从管理机构获取A的公开钥(与步骤①、②类似)。这时,A和B都已安全地得到了对方的公钥,所以可进行保密通信。然而,他们也许还希望有以下两步,以认证对方。
⑤ B用PKA对一个消息加密后发往A,该消息的数据项有A的一次性随机数N1和B产生的一个一次性随机数N2。因为只有B能解密③的消息,所以A收到的消息中的N1可使其相信通信的另一方的确是B。
⑥ A用B的公开钥对N2加密后返回给B,可使B相信通信的另一方的确是A。

十六、杂凑、强单向杂凑,
1.叙述杂凑函数应该满足的3条性质。
答:1.等长性,2.单向性.3.无碰撞性.

十七、欧几里得,扩展的欧几里得
1. 求最大公因子
Euclid算法是基于下面一个基本结论:对任意非负整数a和正整数b,有gcd(a, b)=gcd(b, a mod b)。
2. 求乘法逆元
如果gcd(a, b)=1 ,则b在mod a下有乘法逆元(不妨设b<a),即存在一x (x<a),使得bx≡1 mod a。
推广的Euclid算法先求出gcd(a, b),当gcd(a, b)=1时,则返回b的逆元。

1. 求最大公因子
Euclid算法是基于下面一个基本结论:对任意非负整数a和正整数b,有gcd(a, b)=gcd(b, a mod b)。
2. 求乘法逆元
如果gcd(a, b)=1 ,则b在mod a下有乘法逆元(不妨设b<a),即存在一x (x<a),使得bx≡1 mod a。
推广的Euclid算法先求出gcd(a, b),当gc

d(a, b)=1时,则返回b的逆元。
十八本原根,
本原根的定义:
素数p的原根定义:如果a是素数p的原根,则数a mod p, a^2 mod p, … , a^(p-1) mod p 是不同的并且包含1到p-
1的整数的某种排列。
特别地,如果a是素数p的本原根,则a, a^2, …, a^(p-1)在 mod p下都不相同。
本原根的性质:
若A为模n的本原根,则A,A的平方,A的3次方,……,A的φ(n)次方模n的余数互不相同,而且构成一个模n的简化剩余系。
本原根的应用:
应用本原根可以证明:若x的[φ(n)/2]次方模n余1,则x为模n的二次剩余;若x的[φ(n)/2]次方模n余-1,则x为模n的非二次剩余。
十九、数字签名
1、执行方式:数字签字的执行方式有两类: 直接方式和具有仲裁的方式
(1)直接方式
指数字签字的执行过程只有通信双方参与,并假定双方有共享的秘密钥或接收一方知道发方的公开钥
(2)具有仲裁的方式:发方X对发往收方Y的消息签字后,将消息及其签字先发给仲裁者A,A对消息及其签字验证完后,再连同一个表示已通过验证的指令一起发往收方Y。此时由于A的存在,X无法对自己发出的消息予以否认。在这种方式中,仲裁者起着重要的作用并应取得所有用户的信任。
2、数字证书产生过程
答:第一步,密钥生成。有两种方法,一是主体可以用某个软件生成的公钥/私钥对,主体要使生成的私钥保密,然后把公钥和其他信息与身份证明发送给注册机构。二是注册机构也可以为主体生成密钥对,可能用户不知道生成密钥对的技术,或特定情况要求注册机构集中生成和发布所有密钥,便于执行安全策略和密钥管理。
第二步,注册。这一步只在第一步由用户生成密钥对时才需要。用户要向注册机构发送公钥和相关注册信息(如主体名)以及关于自己的所有证明材料。
第三步,验证。注册过程完成后,注册机构要验证用户的材料,这个验证分为两个方面。首先,RA要验证用户材料,如提供的证据,保证它们可以接受。然后的检查是保证请求证书的用户持有向A的证书请求中发送的公钥所对应的私钥。
第四步,证书生成。假设上述所有步骤成功,则RA把用户的所有细节传递给证书机构。证书机构进行必要的验证,并对用户生成数字证书。
3.数字签名的原理和作用分别是什么?
答:数字签名的原理是:利用Hash函数计算数据消息摘要;利用发送方的私钥加密该摘要;将该加密的摘要与原文一起发送,接收方对其进行验证,判断其真伪;
数字签名的作用是:防止对电文的否认与抵赖,发现攻击者对电文的非法篡改;保护数据完整性。

二十、模运算性质,同余式
1模运算性质
① [(a mod n)+(b mod n)] mod n = (a+b) mod n。
② [(a mod n)-(b mod n)] mod n = (a-b) mod n。
③ [(a mod n)×(b mod n)] mod n = (a×b) mod n。

2同余式
如果(a mod n)=(b mod n),则称两整数a和b模n
同余,记为a≡b mod n。称与a模n同余的数的全体为a的同余类,记为[a],称a为这个同余类的表示元素。
注意: 如果a≡0(mod n),则n|a。
同余有以下性质:
① 若n|(a-b),则a≡b mod n。
② (a mod n)≡(b mod n),则a≡b mod n。
③ a≡b mod n, 则b≡a mod n。
③ a≡b mod n, b≡c mod n, 则a≡c mod n

二十一 DES基本过程(图)
1. 初始置换
2 轮结构
3. 密钥的产生
4. 解密和Feistel密码一样,DES的解密和加密使用同一算法,但子密钥使用的顺序相反。

二十二 AES基本过程
1. 状态、种子密钥和轮数
类似于明文分组和密文分组,算法的中间结果也须分组,称算法中间结果的分组为状态,所有的操作都在状态上进行。状态可以用以字节为元素的矩阵阵列表示,该阵列有4行,列数记为Nb,Nb等于分组长度除以32。
种子密钥类似地用一个以字节为元素的矩阵阵列表示,该阵列有4行,列数记为Nk,Nk等于分组长度除以32。
2. 轮函数
Rijndael的轮函数由4个不同的计算部件组成,分别是:字节代换(ByteSub)行移位(ShiftRow)列混合(MixColumn)密钥加(AddRoundKey)
3. 密钥编排
密钥编排指从种子密钥得到轮密钥的过程,它由密钥扩展和轮密钥选取两部分组成。其基本原则如下:
轮密钥的比特数等于分组长度乘以轮数加1;
种子密钥被扩展成为扩展密钥;
轮密钥从扩展密钥中取,其中第1轮轮密钥取扩展 密钥的前Nb个字,第2轮轮密钥取接下来的Nb个字,如此下去。
4.加密算法
加密算法为顺序完成以下操作:初始的密钥加;(Nr-1)轮迭代;一个结尾轮

二十三 RSA基本过程
密钥的产生
1)选大素数p和q (各100~200位十进制数字),计算
n=p×q , j(n)=(p-1)(q-1)

1) 随机选一整数e, 1£e<j(n),(j(n), e)=1。因而在模j(n)下,e有逆元.

1) 计算 d = e -1 (mod j(n))

1) 取公钥为{e , n}。秘密钥为d
(p, q不再需要,可以销毁)
加密
加密时首先将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于log2n。然后对每个明文分组m,作加密运算
c = me mod n

解密
对密文分组c的解密运算为
m = cd mod n
二十四 MD5基本过程
① 对消息填充,使得其比特长在模512下为448,即填充后消息的长度为512的某一倍数减64,留出的64比特备第2步使用。

步骤①是必需的,即使消息长度已满足要求,仍需填充。例如,消息长为448比特,则需填

充512比特,使其长度变为960,因此填充的比特数大于等于1而小于等于512。

填充方式是固定的,即第1位为1,其后各位皆为0。
② 附加消息的长度用步骤①留出的64比特以little-endian方式
来表示消息被填充前的长度。如果消息长度大于264,则以264为模数取模。

Little-endian方式是指按数据的最低有效字节(byte)(或最低有效位)优先的顺序存储数据,即将最低有效字节(或最低有效位)存于低地址字节(或位)。相反的存储方式称为big-endian方式。
前两步执行完后,消息的长度为512的倍数(设为L倍),则可将消息表示为分组长为512的一系列分组Y0,Y1,…,YL-1,而每一分组又可表示为16个32比特长的字,这样消息中的总字数为N=L×16,因此消息又可按字表示为M[0, …, N-1]。
③ 对MD缓冲区初始化:算法使用128比特长的缓冲区以存储中间结果和最终杂凑值,缓冲区可表示为4个32比特长的寄存器(A,B,C,D),每个寄存器都以little-endian方式存储数据,其初值取为(以存储方式):

A=01234567,B=89ABCDEF, C=FEDCBA98,D=76543210。

实际上为67452301,EFCDAB89,98BADCFE,10325476。
④ 以分组为单位对消息进行处理每一分组Yq(q=0,…,L-1)都经一压缩函数HMD5处理。HMD5是算法的核心,其中又有4轮处理过程,如图6.6所示。

⑤ 输出消息的L个分组都被处理完后,最后一个HMD5的输出即为产生的消息摘要。
步骤③到步骤⑤的处理过程可总结如下:
CV0=IV;
CVq+1=CVq+RFI[Yq,RFH[Yq,RFG[Yq,RFF[Yq,CVq]]]]
MD=CVL

其中IV是步骤③所取的缓冲区ABCD的初值,Yq是消息的第q个512比特长的分组,L是消息经过步骤①和步骤②处理后的分组数,CVq为处理消息的第q个分组时输入的链接变量(即前一个压缩函数的输出),RFx为使用基本逻辑函数x的轮函数,+为对应字的模232加法,MD为最终的杂凑值。



相关文档
最新文档