密码学的入门门槛较高,最好先对密码学的历史与基础密码学分类有个直观的了解;然后在深入学习对应的数学基础,密码学理论;最后学习密码学最前沿的内容。循序渐进学习,时间安排可作为参考。
1.密码学的直观理解(2天)
推荐结城浩的《图解密码学基础》,这本书用通俗的语言结合配图,讲述了密码学的历史,并涵盖了现代密码技术的主要分支,将对称密码,公钥密码,单向散列函数,消息认证码,数字签名,伪随机数生成器,量子密码,量子计算机一网打尽。可以轻松愉快的一堵密码学的概貌与基本原理。
2. 要想深入理解密码学,需要足够的数学知识(5,5,10天分配)
首先数论,潘承洞、潘承彪《简明数论》,主要理解素数基本定理,模运算,费马小定理,欧拉定理等。其余部分根据自己需求可看可不看。
然后冯克勤《近世代数》,理解群、环、域;或者看Rotman《抽象代数基础教程》、《高等近世代数》;或者Artin的《代数》。
最后是椭圆曲线相关教材,经典的Silverman的《椭圆曲线上的有理点》、《The Arithmetic of Elliptic Curves》系列,理解椭圆曲线上的群和域;更进一步可以阅Rosen的《Elliptic Curves Number Theory and Cryptography》,理解椭圆曲线对:Weil对与Tate对。为学习椭圆曲线密码学与全同态加密打好基础。
3. 密码学相关书籍(4天)
有了以上基础,可以较轻松的阅读Stinson的《密码学原理与实践》有中译本,该书对密码学有较全面的概括;Stalling的《密码编码学与网络安全》有中译本,与上本书相比,包含了网络应用部分。
4. 密码学前言,密码学分析(4天)
成书的内容都是比较老的密码学,最新的密码学需要阅读学术论文,例如零知识证明相关的Groth16,Gentry提出的基于理想格的全同态加密等等(这部分结合密码学在数字货币中的应用一起学习,可能更能引人入胜)。密码学分析相关请自行搜索学习。