实用密码学课程
我读完理论数学学士学位后,不知道接下来该从事什么职业。我一直在规划自己的人生,想在职业选择与人生追求之间找到平衡。自然地,我对密码学产生了浓厚兴趣。研究密码学既让我有事情可做,也符合我对人生的规划。于是,我开始阅读各种与密码学有关的图书。很快,我就发现了人生的价值。
很多书总是花费大量篇幅去介绍密码学的发展历史,而我一向只对技术细节感兴趣,因此我发誓,如果我要写一本关于密码学的书,绝不会介绍维吉尼亚密码、凯撒密码和其他陈旧的密码算法。在获得法国波尔多大学的密码学硕士学位后,我本以为自己已做好畅游“实用密码世界”的准备。但实际情况是,我掌握的密码学知识仍然太少。
原本我以为自己的学位已经足够了,但实际上我从学校里学到的知识还不够多,我甚至缺乏攻击现实世界密码协议所需的基本知识。我花了很多时间学习与椭圆曲线有关的数学知识,但并没有学习如何在密码算法中使用椭圆曲线。我还在学校里学习了LFSR、ElGamal和DES算法,以及一系列加密原语,但是后来我再也没见过它们。
我的第一份工作是在Matasano(后来变成NCC集团)审计OpenSSL库,它是一种最为常用的SSL/TLS实现——整个互联网的流量都是基于该协议进行加密的。这份工作让我伤透了脑筋。我记得每天回家后都头痛得厉害。当时,我不知道若干年后自己会成为TLS 1.3协议的开发者。
但是,当时我在想,这些东西是我本应该在学校学习的。而我现在正在学习的才是对现实世界有用的知识。毕竟,在密码学领域里,我也是一位信息安全从业者。我审查过许多现实世界的密码应用程序,这份工作也是许多拥有密码学学位的学生梦寐以求的。我的工作就是实现、验证和使用各种密码学算法,并对具体应用中使用哪种密码学算法给出建议。以上就是我声称自己是本书的第一位读者的原因。我将本书献给过去的自己,证明我为进入实用密码世界做好了准备。