5.3.3 密码学安全入门
密码学分为密码编码学和密码分析学,前者寻求提供信息机密性、完整性和非否认性等的方法,后者研究加密信息的破译和伪造等破坏密码技术所能提供安全性的方法。CTF 比赛中的密码学题目偏向于密码分析。
如何学习密码学
数学基础
数论,线性代数,抽象代数
当你有了这些基础之后才能更熟练的使用一些数学工具。
学习这些基础的东西最好的方法就是看书(群文件里都有哦~),如果是英文的话尽量看原著,这对后面看论文帮助很大。
编程基础
你可能需要了解一些 python 的基础语法。还有一些简单的算法。
一些基础的密码系统
古典密码:
- 凯撒密码
- 维吉尼亚密码
- 栅栏密码
- 希尔密码
- 培根加密
- 摩斯电码
- 等
现代密码:
- RSA(非常经典)
- AES
- DES
- ECC
- 等
还有近几年多起来的格密码
主要看一些书籍,或者在 ctf-wiki.org 学习。学习的过程中尽可能的多写一些 demo,既锻炼了编程能力也可以更好的了解一些密码系统。
有能力的同学可以先看一下这位教授的关于密码学的课程 https://m.youtube.com/channel/UC1usFRN4LCMcfIV7UjHNuQg
工具
一些 python 的库:
- pycryptodome (就是 Crypto 库)
https://pycryptodome.readthedocs.io/en/latest/
- gmpy2 (数论)
- sympy
sagemath (一个功能极其强大的集成工具)
刷题平台
buuoj
bugku (比较入门的题)
ctfhub
写在最后的话
密码学可能刚入门起来感觉非常难受(可能不包括古典密码),但事实是不管那个方向或者说任何的一门学科的学习过程都是这样的(怪胎除外)。因为现在大家基本上都是兴趣驱动的,所以希望大家永远保持对新知识的好奇心,这样就不会感觉说这是一个任务一样的东西。其实密码学还是很有意思的。