Cryptography Review


初次接触密码学是在大二的<<现代密码学>>课堂上,彼时仅对理论基础进行了学习,后来参加CTF比赛,为了解答其中 Crypto 模块,将课堂学到的知识运用了起来,但总的来说研究并不深,加之近段时间没有再碰过了,故此有了写此文的想法,一是为了自己复习,二是为了此刻正在看文章的你提供一点参考。

会议和期刊

密码学三大顶会

编号 会议简称 会议名称 出版社 会议网址
1 Crypto International Cryptology Conference Springer https://iacr.org/meetings/crypto/
2 Eurocrypt European Cryptology Conference Springer https://iacr.org/meetings/eurocrypt/
3 Asiacrypt Annual International Conferenceon the Theory and Application of Cryptology and Information Security Springer https://iacr.org/meetings/asiacrypt/

信息安全四大顶会

编号 会议简称 会议名称 出版社 会议网址
1 CCS ACM Conference on Computer and Communications Security ACM http://dblp.uni-trier.de/db/conf/ccs/
2 S&P IEEE Symposium on Security and Phivacy IEEE http://dblp.uni-trier.de/db/conf/sp/
3 Usenix Security Usenix Security Symposium USENIX Association http://dblp.uni-trier.de/db/conf/uss/
4 NDSS ISOC Network and Disthibuted System SecuritySyumposium ISOC https://www.ndss-symposium.org/

计算机类三大权威刊物

编号 名称 主办单位 网址
1 软件学报 中国计算机学会、中国科学院软件研究所 http://www.jos.org.cn
2 计算机学报 中国计算机学会、中国科学院计算技术研究所 http://cjc.ict.ac.cn/
3 计算机研究与发展 中国计算机学会、中国科学院计算技术研究所 http://crad.ict.ac.cn/

中国密码学会CACR推荐

地址:https://www.cacrnet.org.cn/site/content/96.html

期刊

会议

中国计算机学会CCF推荐

地址:https://www.ccf.org.cn/Academic_Evaluation/NIS/

期刊

会议

DES

DES 的英文全称是 Data Encryption Standard,意思是数据加密标准,DES是一个分组加密算法,加密和解密用的是同一个算法。

  • 典型的 DES 以 64 位为分组对数据加密

  • 密钥长 64 位,但实际上只有 56 位参与 DES 运算

    • 第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1
  • 分组后的明文组和 56 位的密钥按位替代或交换的方法形成密文组

DES 算法的步骤,包括 IP置换密钥置换E扩展S盒代替P盒置换末置换

IP置换

IP置换:将输入的 64 位数据块按位重新组合,并把输出分为 L0、R0 两部分,每部分长度为 32 位。

58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7

表中的数字代表新数据中此位置的数据在原数据中的位置,即原数据块的第58位放到新数据的第1位,第50位放到第2位,……依此类推,第7位放到第64位。置换后的数据分为 L0 和 R0 两部分,L0 为新数据的左32位,R0为新数据的右32位。

注意:位数是从左边开始数的,最左边的位为1,最右边的位为 64。

例子🌰

密钥置换

不考虑每个字节的第8位,DES的密钥由64位减至56位,每个字节的第8位作为奇偶校验位。产生的56位密钥由下表生成(注意表中没有8,16,24,32,40,48,56,64这8位):

57 49 41 33 25 17 9 1 58 50 42 34 26 18
10 2 59 51 43 35 27 19 11 3 60 52 44 36
63 55 47 39 31 23 15 7 62 54 46 38 30 22
14 6 61 53 45 37 29 21 13 5 28 20 12 4

在DES的每一轮中,从56位密钥产生出不同的48位子密钥,确定这些子密钥的方式如下:

  1).将56位的密钥分成两部分,每部分28位。

  2).根据轮数,这两部分分别循环左移1位或2位。每轮移动的位数如下表:

轮数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
位数 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

移动后,从56位中选出48位。这个过程中,既置换了每位的顺序,又选择了子密钥,因此称为压缩置换。压缩置换规则如下表(注意表中没有9,18,22,25,35,38,43,54这8位):

14 17 11 24 1 5 3 28 15 6 21 10
23 19 12 4 26 8 16 7 27 20 13 2
41 52 31 37 47 55 30 40 51 45 33 48
44 49 39 56 34 53 46 42 50 36 29 32

置换方法同上,此处省略。

E扩展

E扩展置换: 将 IP 置换后获得的右半部分 R0(32位)扩展为 48位 (6位×8组),达到与密钥相同长度的数据以进行异或运算;提供更长的结果,在后续的替代运算中可以进行压缩。

32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1

表中的数字代表位,两列橙色数据是扩展的数据,可以看出,扩展的数据是从相邻两组分别取靠近的一位,4位变为6位。靠近32位的位为1,靠近1位的位为32。表中第二行的4取自上组中的末位,9取自下组中的首位。

扩展置换之后,右半部分数据R0变为 48 位,与密钥置换得到的轮密钥进行异或。

例子🌰

S盒

压缩后的密钥与扩展分组异或以后得到48位的数据,将这个数据送人S盒,进行替代运算。替代由8个不同的S盒完成,每个S盒有6位输入4位输出。48位输入分为8个6位的分组,一个分组对应一个S盒,对应的S盒对各组进行代替操作。

S盒1

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

S盒2

15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9

S盒3

10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12

S盒4

7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 19
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14

S盒5

2 12 4 1 7 10 11 6 5 8 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 13 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3

S盒6

12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13

S盒7

4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12

S盒8

13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

P盒

S 盒输出的 32 位再经过 P 盒进行置换。

16 7 20 21 29 12 28 17
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25

表中的数字代表原数据中此位置的数据在新数据中的位置,即原数据块的第16位放到新数据的第1位,第7位放到第2位,……依此类推,第25位放到第32位。

IP-1置换

IP-1 置换是 IP 置换的逆过程,DES 最后一轮后,左、右两半部分并未进行交换,而是两部分合并形成一个分组做为末置换的输入。末置换规则如下表:

40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25

参考

原创]密码学基础:DES加密算法-密码应用-看雪论坛-安全社区|安全招聘|bbs.pediy.com

DES加密算法|密码学|信息安全 - 哔哩哔哩 (bilibili.com)

DES加密算法|密码学|信息安全_哔哩哔哩_bilibili

DES算法详解 - songoo - 博客园 (cnblogs.com)

DES加密算法解析与实现 - luogi - 博客园 (cnblogs.com)

赞助💰

如果你觉得对你有帮助,你可以请我喝一杯冰可乐!嘻嘻🤭

支付宝支付 微信支付

文章作者: 简简
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 简简 !
评论
填上邮箱会收到评论回复提醒哦!!!
 上一篇
Python:PyQt学习 Python:PyQt学习
PyQt是一个用于创建GUI应用程序的跨平台工具包,它将Python与Qt库融为一体。PyQt允许使用Python语言调用Qt库中的API。这样做的最大好处就是在保留了Qt高运行效率的同时,大大提高了开发效率。 基础第一个 PyQt 程
2021-07-23
下一篇 
Qt 学习记录 Qt 学习记录
Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。 Qt 基础文件 xxx.pro .pro就是工程文件(project),
2021-06-28
  目录