现代密码学期末总结

写在前面

临近期末,总结了下知识点,供个人复习使用,仅供参考(近期不间断更新)。

1.引言

知识点

现代密码学期末总结

1.在本书中,c指密文,m指明文,E()表示加密函数,D()表示解密函数

2.仿射变换:加密和解密中a,b为秘钥 (属于单表变换)

c=Ea,b(m)=am+b(mod 26)

m=Da,b(m)=a-1(c-b)(mod 26)

注意a-1*a≡1 mod 26

3.多表代换密码:其中A为n*n的矩阵,n等于几代表明文每几个分成一组。一般N为26。

Ci≡AMi+B(mod N),i=1,2,3…

Mi≡A-1(Ci-B)(mod N),i=1,2,3…

4.人为攻击分为

  • 被动攻击 就是窃听,是对系统保密性的攻击
    • 获取信息的内容
    • 业务流分析 敌收无法获得消息但可能获得通信双方身份、次数…
  • 主动攻击 对数据流的篡改或产生假数据流
    • 中断 如破坏硬件、系统是对系统可用性的攻击
    • 篡改 修改数据是对系统完整性的攻击
    • 伪造 如插入伪造消息或记录,是对系统真实性的攻击

被动攻击不改变消息而主动攻击改变消息内容

抵抗被动攻击:预防 抵抗主动攻击:检测修复

5.密码算法的安全性包括哪两类??(暂时没找到)

6.**管理:**产生、分配、存储、销毁等问题

7.密码体质从原理上可分为两类

  • 对称(单钥)密码* (可用于数据加密和消息认证)
    • 流密码 逐位加密
    • 分组密码 消息分组,逐组加密
  • 非对称(双钥)密码* 两**,一公开一私密

8.对密码系统的攻击按攻击者可获取的信息量可分为

  • 唯密文攻击 仅知道一些密文
  • 已知明文攻击 知道一些密文和相应的明文
  • 选择明文攻击 密码分析者可以选择一些明文并得到相应的密文
  • 选择密文攻击 密码分析者可以选择一些密文,并得到相应的明文

以上攻击都建立在已知算法的基础之上,且攻击强度依次增加

9.单向陷门函数就是有一个陷门的一类特殊单向函数。

若y=f(x),已知x很容易计算y,但已知y很难计算x(单向性)。特别的是存在一个z使得知道了z那么就很容易由y计算出x,那么z则称为陷门(有陷门也称后门)

10.加密算法满足下列两点则认为是计算上安全的

  • 破译密文的代价超过被加密信息的价值
  • 破译密文所花的时间超过信息的有用期

11.攻击密码*的常用方法

  • 穷举攻击 (解决方法 : 增大**量)
  • 统计分析攻击 (解决方法:使明文的统计特性与密文的统计特性不一样)
  • 数学分析攻击 (解决方法:选用足够复杂的加密算法)

12.***组成部分(加密系统的五元组):明文,密文,**,加密算法,解密算法。

13.一个好***至少应满足的两个条件:

  • 已知明文和加***计算密文容易,已知密文和解***计算明文容易
  • 在不知解***的情况下,不可能由密文 c 推出明文

14.清楚信息安全专业学习密码学的原因 (非标准答案)

答:信息在社会中的地位和作用越来越重要,则其安全愈发重要,而密码学是保障信息安全的核心技术。可以说没有密码学就没有信息安全。

习题

1.设由仿射变换对一个明文加密得到的密文为edsgickxhuklzveqzvkxwkzukvcuh,又已知明文的前两个字符是“if",对该密文解密。

答:e=4 d=3 i=8 f=5 (26个字母下标从0开始)Ea,b(m)=am+b(mod 26)

E(i)=e,4≡8*a+b(mod 26)

E(f)=d,3≡5*a+b(mod 26)

由上述两个式子可推出a=9,b=10,所以m=9-1(c-10)(mod 26)

现代密码学期末总结

2.设多表代换密码C≡AMi+ B(mod26)中,A是2X2矩阵,B是0矩阵,又知明文“dont”被加密为“elni”,求矩阵A。

现代密码学期末总结

注意矩阵相乘的结果要模26,上式求b的时候算得125b=13,其实应是125b≡13(mod 26),即为21b≡13(mod 26),解得b=13,其他类似

2.流密码

知识点

现代密码学期末总结

1.流密码的基本思想:利用**k产生一个**流z=z0z1z2…,并对明文串x=x0x1x2

加密:y=y0y1y2…=Ez0(x0)Ez1(x1)Ez2(x2)… (**产生**流,依次逐位加密信息)

2.流密码中**流就等于明文串和密文串异或

3.移位寄存器是流密码产生**流的一个重要组成部分

4.m序列密码的破译就是求**流的递推关系即am+i=cmai⊕cm-1ai+1⊕…⊕c1am+i-1

(公式中的m即题目说多少级级线性反馈移位寄存器就是多少)

比如是3级,我们求得是ai+3,当i=1,i+3=4即第四个这样根据前三个就可知道后面所有的数

习题

1.求矩阵的逆(这章习题会用到,复习下)

核心公式:A-1=A*/|A|

现代密码学期末总结

若是三阶矩阵:Aij=(-1)i+jMij,Mij为除去aij所在那一行和那一列得到的二阶矩阵

现代密码学期末总结

现代密码学期末总结

现代密码学期末总结

现代密码学期末总结

2.已知流密码的密文串1010110110和相应的明文串0100010001,而且还已知**流是使用3级线性反馈移位寄存器产生的,试破译该密码系统。(和P65例2-6类似)

答:由已知可得**流为1010110110⊕0100010001=1110100111,因为是3级线性反馈

现代密码学期末总结

按照上面矩阵:a4=c3*a1+c2*a2+c1*a3正是**流递推关系(m=3,i=1然后是m=3,i=2…)

现代密码学期末总结

记住c从高到低,a从低到高

3.如图是一个3级反馈移位寄存器,其初始状态为(a1,a2,a3)=(1,0,1),求输出序列

现代密码学期末总结

从图中可看到a1、a2、a3经f函数送至左边形成一个循环,比如f(a1,a2,a3)=b,那么b将代替a3的位置,a3~a1均右移,所以a1输出,以此类推。

答:f(a1,a2,a3)=f(1,0,1)=1*0⊕1=1,然后f(1,1,0)

可总结规律,右边的3为参与f函数生成的数放在左边,然后以左边这个数向右数3个数分别当做a3,a2,a1参与f生成的又放在最左边…最后输出是从右到左

现代密码学期末总结

即输出序列为10111011101…,周期为4

3.分组密码*

知识点

现代密码学期末总结

1.分组密码:将明文划分为长为n的组x(x0,x1,…,xn-1),各组在**k=(k0,k1,…kt-1)控制下变换成等长的数字序列y=(y0,y1,…ym-1)。实质是对字长为n的数字序列的代换密码 (一般m=n)

2.扩散和混淆是Shannon提出的设计密码系统的两个基本方法(分组密码安全设计性原则) 必考!

  • 扩散:使明文与密文之间的统计关系变得尽可能复杂,以使敌手无法得到**
    • 明文每一比特变换尽量多的影响密文序列的变化,以隐蔽明文的统计特性(雪崩效应)
    • P盒(置换)用于扩散
  • 混淆:使密文与**之间的统计关系变得尽可能复杂,以使敌手无法得到**
    • S盒(代换)用于混淆

3.很多分组密码结构本质都基于Feistel结构

将每组明文分为左右两半L0和R0,n轮迭代后再合在一起产生密文分组

第i轮迭代(代换): Li=Ri-1 (左等右上) Ri=Li-1⊕F(Ri-1,Ki) (右等左上异或F即右上和K)

最后一轮交换左右两半数据(置换)

现代密码学期末总结

解密和加密本质过程一样,密文作为输入,但使用子**Ki的次序和加密相反(这一特性保证了加密和解密可用同一算法)

4.DES加密过程可分为三个阶段 (64比特明文,64比特**(每个第8位设置奇偶校验位实际56位))

  • 初始置换IP,用于重排明文分组的64比特 (由IP置换表实现)
  • 生成子**
  • 迭代过程即16轮变换(代换和置换)然后交换左右次序
  • 逆初始置换IP-1

2️⃣ 生成子**过程 参考:算法科普:神秘的 DES 加密算法 ,下同

56比特**经PC-1置换后分为左右C0和D0,然后由表左循环经PC-2产生48比特的本轮**

现代密码学期末总结

3️⃣ 迭代过程等同于Feistel结构(左等右上,右等左上异或F),而其中用到的F函数为:

现代密码学期末总结

5.分组密码的运行模式

  • ECB(电话本)模式 各明文组以同一**加密
  • CBC(密码分组链接)模式 加密的输入是当前明文组和前一密文组的异或
  • CFB(密码反馈)模式 每次处理j位输入,上次密文加密产生伪随机再与当前明文异或
  • OFB(输出反馈)模式 与CFB不同的是加密的输入是前一次加密的输出(与明文异或的那个)

2️⃣ CBC模式加解密示意图 (必考!

现代密码学期末总结

加密: Ci= Ek[Pi⊕Ci-1] (可认为C0=IV) 解密:Pi= DK[Ci]⊕Ci-1

IV为初始向量应重点保护,该模式可加密也可认证,适合加密64比特的消息

6.AES是DES的替代者,也是当今最流行的对称加密算法之一

现代密码学期末总结

AES轮函数包括字节代换、行移位、列混合、**加

1️⃣ 字节代换:根据S盒把明文块的每一个字节都替代成另外一个字节

2️⃣ 行移位:如第1行不变,第2行循环左移C1个字节,第3行左移C2个字节,第4行移C3 要根据表

3️⃣ 列混合:输入数组每一列和修补矩阵的二维常量数组做矩阵相乘,得到对应的输出列。

4️⃣ **加:输入数组的每个字节a[i,j]与**对应位置的字节k[i,j]异或一次,就生成了输出值b[i,j]

7.SM4算法,数据和密码分组均为128比特

加密:Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕rki)(i=0,1,2…31)

后经反序R处理:(Y0,Y1,Y2,Y3)=(X35,X34,X33,X32)=R(X32,X33,X34,X35)

解密算法和加密算法相同,轮**使用顺序相反

8.GF(28)中 a*a-1=1(mod x8+x4+x5+x+1)

GF(2)上的可逆的仿射变换 (x是题目中a的逆)

现代密码学期末总结

习题

1.对字节a=1011 0110字节替代变换,设a的逆为a-1必考!

答:先求a的逆,再用仿射变换即可

1️⃣ 由a得(x7+x5+x4+x2+x)a-1 ≡ 1(mod x8+x4+x3+x+1)

所以a-1=x6+x5+x4+x3 即0111 1000 (二进制对应位数有1就代表有x的那一次方)

根据老师给的考试要点,a的逆和仿射变换题目应该会给出

2️⃣ 使用仿射变换 (注意要用a的逆而且注意x的顺序从下往上读)

现代密码学期末总结

即(0100 1110)2=(4E)16 注意也是从下开始读 因为最下面的是字节高位即最前面的01…

2.利用DES算法和全0**对输入(1000 0001 1960 0000)进行一圈加密的结果 (需要查表P39)

答:1️⃣ 输入的右半部分是1960 0000 = 0001 1001 0110 0000 0000 0000 0000 0000

2️⃣ 经E盒扩展后为:000011 110010 101100 000000 000000 000000 000000 000000

3️⃣ 与全0**对异或后为:000011 110010 101100 000000 000000 000000 000000 000000

4️⃣ 经S盒后变为:15 8 3 7 2 12 4 13 即1111 1000 0011 0111 0010 1100 0100 1101

5️⃣ 经P盒后变为 1001 1100 1101 1000 1001 1010 1010 1110

6️⃣ 输出的左半部分即输入的右半部分为1960 0000,输出的右半部分为F函数输出和左半部分输入异或即8cd8 9aaf,最终输出为 1960 0000 8cd8 9aaf

这题主要是加深对DES迭代过程的理解,由于要查表,考试应该不会考

3.在DES的ECB模式中,如果在密文分组中有一个错误,解密后仅相应的明文分组受到影响。然而在CBC模式中,将有错误传播。加密解密图中C1中的一个错误明显地将影响到P1和P2的结果。

现代密码学期末总结

(1) P2后的分组是否受到影响?
(2)设加密前的明文分组P1中有1比特的错误,问这一错误将在多少个密文分组中传播?
对接收者产生什么影响?

答:1️⃣ CBC的加密: Ci= Ek[Pi⊕Ci-1],i≥2 解密:Pi= DK[Ci]⊕Ci-1,i≥1

若C1有错误,P2=DK[C2]⊕C1所以P2也会受影响,但i≥3时,Pi= DK[Ci]⊕Ci-1与C1无关因此不会受到影响

本题由于C1错误事实上C2、C3、C4…都会和原来不一样,但即使它是错的经**解密后还是可以得到原明文(可理解为是明文的另一种加密结果),所以说P2后不受影响

2️⃣ 若P1出错,则C1会是错的,由Ci= Ek[Pi⊕Ci-1]得,Ci≥2也都是错误的,因此会传递到每一个分组

由加密解密方式可知,若只是P1出错,解密后得到的还是原来的输入。即接收者解密后的P1和原来输入的一样会有1比特的错误,而其他的可以解密得到正确的明文