密码学入门

注意:文末有更新版!

   引言:研究生的第一年就要过完了。有幸在号称中国密码学界的“黄埔军校”学习密码,得以见识到老一辈和新一辈密码学大师的风采。虽然学的不好,但也有些许收获。基础知识的匮乏和密码学科本身的高难度提高了这门学科的入门门槛,有必要写一篇建议性的文章,给那些希望从事密码学研究的师弟师妹们一个参考。

数学基础

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

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

密码入门

基础数学知识具备了,这个时候应该对密码学这个专业有一个总体的认识,这里推荐一些不错的资料。

  • 《现代密码学》第4版------->杨波老师编写的,一本很薄的讲解基础密码学的书籍
  • 《Introduction to Modern Cryptography》 2ed -------> by Jonathan Katz and Yehuda Lindell , 口碑之作,入门有一定难度,国防工业出版社翻译出版了第一版:《现代密码学:原理与协议》。
  • 《应用密码学 : 协议算法与c源程序》------->介绍全面,值得阅读一遍,缺点就是书籍出版的有些年代了(1996年第二版)。
  • 《密码编码学与网络安全——原理与实践》第七版 by William Stalling ------->很多著名大学都采用它做教材,内容比上面那本书新(2017年第七版)。
  • 《密码学原理与实践》第三版 Douglas R.Stinson著 冯登国 译------->值得精读的一本书
  • 西电胡予濮老师的《现代密码学》课件-------->胡老师本身就是学术大牛,对密码学科的认识很全面,课程讲解仔细,深入浅出,从上个世纪讲到目前的研究热点格密码,能很好的开启视野。
  • 西电胡予濮老师的《流密码》课件--------->基本涉及了流密码的方方面面,课件内容比较细致。

密码进阶

这一层的书我不太好推荐,先建议两个课程吧,等学到这一步,相信自己能有足够的主观能动性了。

  • 《安全协议理论》,这个课程网上资料不多,我这里有一份电子文档,内容比较“高深”,有需要私信。
  • 《计算复杂性理论》,神一样的课程,从来没听懂过。
  • 《Foundations of Cryptography》by Oded Goldreich,高级密码学理论研究的敲门砖,理论性很强!!!
  • Bristol大学的密码安全工作组为密码学和信息安全相关的博士准备了52个基本知识点,详情见52个密码学基本知识点,可以简单看一下即可。

   最后感叹一下,密码学是一个烧脑的课程。这门学课发展到至今,研究的重点仍然是加密和解密,但研究内容其实远远不止这些了。为了保证安全性,密码算法往往结构复杂、协议繁复,令人望而却步,但是基于的数学原理却又是如此的优美。加密和破解像一对欢喜冤家,携手推进密码学向前发展。

视频推荐:
信息安全数学基础: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

后记:密码学,人类智力的对决

*****************************************************************************************************************************************

更新版

****************************************************************************************************************************************

研究生过了一半,看看之前写的答案,决定重构一下:

  现代密码学所涉及的学科包括:概率论、随机过程、信息论与编码、数论、代数学(线性代数、矩阵论、抽象代数)、离散数学、计算复杂性、计算机知识和电路基础等。
  大学必须掌握数学分析,线性代数,概率论的知识,尤其是概率论,理解透彻;其次,最好熟悉一门编程语言,推荐C或者Java,了解数据结构和算法,锻炼自己的思维,说不定哪天写代码就用上了;如果有精力了解电路、模电、数电的基本知识,HDL语言和FPGA要会,在进行密码的硬件实现时有很方便。最后,推荐了解信息论和通信理论的一些知识,尤其是信息论,这玩意儿在进行熵值分析的时候很有用。

研究生阶段,密码学的基础还是三大块:数学、计算机、密码学。

数学:数论,近世代数(抽象代数、有限域、代数学。。。。为啥这么多名字,因为内容多、抽象)

计算机:离散数学,可计算性和计算复杂性

密码学:古典密码和现代密码、密码编码学和密码分析学(也就是破解)、私钥密码和公钥密码。。。。(流密码,分组密码,公钥密码,密钥分配与管理,消息认证和哈希函数,数字签名和认证协议,密码协议、可证明安全与安全多方计算,网络认证与加密。。。。。妈呀,太多了)。

密码学,最重要的还是数学基础,比较适合数学专业的学生来学习。目前密码学领域研究公钥的科研人员较多,得益于互联网的普及,密码学应用也越来越广泛。现在火的区块链和比特币就是密码学的典型应用,当然了,远远不止这些。。。

后记:密码学,一群天才玩的玩意!渣渣玩不转!

*****************************************************************************************************************************************

再更新版

****************************************************************************************************************************************

密码学是一门综合性学科,与数学、物理、计算机、微电子、通信、网络等有着广泛而密切的联系。密码学的学习重点在数学、计算机、密码学知识三大块。

数学:数论与代数学、信息论与编码、概率论与随机过程、线性代数与矩阵论。

计算机:离散数学、可计算理论与计算复杂性。

密码学:对称密码学、公钥密码学、数据完整性算法、电子认证、安全协议、量子密码等。

密码学的入门门槛较高,其难点集中在数学,打好数学基础,对于以后做一些有意义、有品位的研究是很重要的。入门之后,找一个感兴趣的方向,查阅对应论文是最有效的学习方法,三大会( https://iacr.org/ )和各大出版社都有论文出版。密码学是一门很讲究时效的学科,一定要善于紧跟研究前沿。

密码学是信息安全的基石,但是信息安全并不能只靠密码学来维护。安全原则其实和木桶原理很相似,安全问题往往出在最薄弱的那个环节上,密码学提供了很有效的防护手段,但是在具体实施的时候,需要方方面面的配合。比如系统安全和网络安全,攻击者往往不是直接攻击协议或算法的漏洞,更多的是寻找代码bug,这也告诉我们如果想做信息安全,光有密码学的知识是远远不够的,还需要充分的信息安全知识,或者说是计算机、网络、微电子的相关知识,这样才是一个合格的安全行业的从业者。

后记:路漫漫其修远兮,吾将上下而求索。

资料
[讨论]既然算法公开,那还有加密的必要? https://bbs.pediy.com/thread-93739.htm 链接里面有大量的资料

你可能感兴趣的:(密码学)