密码学和加密的起点

信息安全 加密
2021-08-11 07:18:50

最近,我对安全/加密/密码学的热情越来越高。我在 Twitter 上关注该领域的一些名人,并通过网络阅读文章。然而,这个话题似乎很深,每次我读到新的东西时,我都会得到信息过载。

我相信这样做的原因是我没有正确的基础。深入了解这一点的最佳方法是什么?有没有什么初学者的书可以让它涉足?我会很感激任何能引导我走向正确方向的起点,我会从那里挑选东西。

3个回答

进入密码学的一种可能途径是通过实施采用一些标准函数或一组函数,例如SHA 系列哈希函数从标准出发,产生自己的代码;该标准包括一些测试向量,可帮助您验证您的实现是否正确。然后将您的代码与现有库进行比较,例如OpenSSLCrypto++sphlib对您的代码进行基准测试,看看您可以做些什么来使您的代码运行得更快和/或更流畅。尽管获得快速哈希函数实现本身并不是非常有用(因为快速实现已经免费提供),但该练习将使您准确而深入地了解这些函数的工作原理,并且将是了解有关它们的研究论文的重要资产。

散列函数是一个很好的起点,因为它们往往被准确地指定,并且它们不使用任何键。一旦你掌握了一些散列函数,试试HMAC然后继续进行对称加密(尤其是RC4DES 和 3DES以及AES)。到那时,您将对某些对称密码的内部工作有一些概念,也许更重要的是,您将知道如何阅读和理解算法规范。

进一步的步骤将是涉足非对称加密,基本上是RSA非对称密码学需要一些数学知识;你可能想看看应用密码学手册,它是免费提供的,是一本很好的参考书(这本书与布鲁斯施奈尔的“应用密码学”没有任何关系——后者是一个经常被引用的介绍书,但作为参考用处不大)。如果您想实现自己的 RSA,使用提供大整数运算的编程语言或库将使事情变得更简单(例如 Java 与java.math.BigInteger、C#/.NET 4.0System.Numerics.BigInteger或诸如GMP之类的外部库)。或者,继续编写你自己的大整数代码(再次,一个健康的练习);为此,您需要阅读手册的第 14

完成哈希函数、HMAC、对称加密和 RSA 后,您可以继续编写自己的 SSL/TLS 库,从TLS 1.0开始。编写一个可以连接到现有 TLS 服务器并与之互操作的 TLS 客户端将使您深入了解 SSL/TLS 握手,并且您将能够理解所有关于 SSL 已知攻击以及如何修复它们的研究(例如 BEAST、贵宾犬,...)。将此答案用作有关 TLS 的阅读指南。

实施不是学习密码学的唯一方法,但它确实有效。

这取决于您到底在寻找什么。

对于安全性的一般介绍,包括密码学,我目前正在学习免费的在线课程https://www.futurelearn.com/courses/introduction-to-cyber-security,我强烈推荐。它以会议的形式组织,下一个从一月份开始。

对于密码学和密码分析的初学者讨论,Simon Singh 的密码书很好地介绍了密码学的历史和该领域的挑战:http : //simonsingh.net/books/the-code-book/

对于该主题的专家之旅,如果您尝试实现或使用密码算法,这也将为您提供参考资料,我听说过 Bruce Schneier 的书籍非常好,例如应用密码学,但我个人没有。

编辑:显然,应用密码学是一个古老的并且已被证明有相当多的缺陷,所以最好使用它的一个新的替代品,比如密码学工程(https://www.schneier.com/book-ce.html) . 感谢您的提醒,Xander!

我推荐阅读 Fred Piper 的“密码学 - 一个非常简短的介绍”。一本简洁的小书,内容丰富,可以理解密码学的基础知识。