密码学 需要的知识

原文链接

数学基础

密码学是一个高度跨学科的领域,包含纯数学、计算机科学以及电子工程等多方面的知识。个人认为数学基础是最重要的,也是最不好修炼的一门内功。

  • 《高等数学》---------->工程学高数是必修课
  • 《线性代数》--------->线性代数的研究对象是方程组和矩阵,对密码学来说,可以进一步了解《矩阵论》的相关知识。
  • 《概率论》----------->需要把后续课程,《信息论与编码》的知识也掌握。
  • 《抽象代数》(又称近世代数)----------->个人认为这是这些数学基础课里面,最重要的一门课,掌握好其中的群、环、域、模的知识,对学习目前热门的公钥加密,数字签名,认证等知识大有裨益。
  • 《数论》------->基础中的基础,必修课。

密码入门

密码学专业入门:

  • 《现代密码学》第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 ICryptography II