密码学 需要的知识
数学基础
密码学是一个高度跨学科的领域,包含纯数学、计算机科学以及电子工程等多方面的知识。个人认为数学基础是最重要的,也是最不好修炼的一门内功。
- 《高等数学》---------->工程学高数是必修课
- 《线性代数》--------->线性代数的研究对象是方程组和矩阵,对密码学来说,可以进一步了解《矩阵论》的相关知识。
- 《概率论》----------->需要把后续课程,《信息论与编码》的知识也掌握。
- 《抽象代数》(又称近世代数)----------->个人认为这是这些数学基础课里面,最重要的一门课,掌握好其中的群、环、域、模的知识,对学习目前热门的公钥加密,数字签名,认证等知识大有裨益。
- 《数论》------->基础中的基础,必修课。
密码入门
密码学专业入门:
- 《现代密码学》第4版------->杨波老师编写的,一本很薄的讲解基础密码学的书籍
- 《Introduction to Modern Cryptography》 2ed -------> by Jonathan Katz and Yehuda Lindell , 口碑之作,入门有一定难度,国防工业出版社翻译出版了第一版:《现代密码学:原理与协议》。
- 《应用密码学 : 协议算法与c源程序》------->介绍全面,值得阅读一遍,缺点就是书籍出版的有些年代了(1996年第二版)。
- 《密码编码学与网络安全——原理与实践》第七版 by William Stalling ------->很多著名大学都采用它做教材,内容比上面那本书新(2017年第七版)。
- 《密码学原理与实践》第三版 Douglas R.Stinson著 冯登国 译------->值得精读的一本书
现代密码学所涉及的学科包括:
概率论、随机过程、信息论与编码、数论、代数学(线性代数、矩阵论、抽象代数)、离散数学、计算复杂性、计算机知识和电路基础等。
大学必须掌握数学分析,线性代数,概率论的知识,尤其是概率论,理解透彻;其次,最好熟悉一门编程语言,推荐C或者Java,了解数据结构和算法,锻炼自己的思维,说不定哪天写代码就用上了;如果有精力了解电路、模电、数电的基本知识,HDL语言和FPGA要会,在进行密码的硬件实现时有很方便。最后,推荐了解信息论和通信理论的一些知识,尤其是信息论,这玩意儿在进行熵值分析的时候很有用。
研究生阶段,密码学的基础还是三大块:数学、计算机、密码学。
数学:数论与代数学、信息论与编码、概率论与随机过程、线性代数与矩阵论
计算机:离散数学,可计算性和计算复杂性
密码学:对称密码学、公钥密码学、数据完整性算法、电子认证、安全协议、量子密码等。
密码学,最重要的还是数学基础,比较适合数学专业的学生来学习。
密码学的入门门槛较高,其难点集中在数学,打好数学基础,对于以后做一些有意义、有品位的研究是很重要的。
视频推荐:
信息安全数学基础:http://mooc.study.163.com/course/HIT-1000002013#/info
近视代数:http://mooc.study.163.com/course/HIT-1000003009#/info
近世代数_104_南京大学(孙智伟):https://www.bilibili.com/video/av9351622/
Coursera 密码学公开课:Stanford University的Cryptography I和Cryptography II