首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >密码学和加密的起点

密码学和加密的起点
EN

Security用户
提问于 2014-11-07 06:58:31
回答 3查看 1.3K关注 0票数 14

最近,我对安全/加密/密码学的热情与日俱增。我在twitter上跟踪这个领域的一些名人,并在网上阅读文章。然而,这个话题似乎很深刻,每次我读到一些新的东西,我都会得到一些信息过载。

我相信这是因为我在这方面没有正确的基础。什么是更深层次的最好的方法呢?有没有初学者的书让它踏步?我很感激任何能引导我走向正确方向的起点,我也会从中挑选一些东西。

EN

回答 3

Security用户

发布于 2014-11-07 10:19:10

进入密码学的一个可能的途径是通过实现。取一些标准函数或一组函数,例如散列函数的SHA族。从标准中,生成您自己的代码;该标准包含一些测试向量,这些测试向量将帮助您验证实现是否正确。然后将您的代码与现有的库进行比较,例如OpenSSLCrypto++斯皮利卜;对代码进行基准测试,看看您可以做些什么来使代码运行得更快和/或更顺畅。虽然获得快速哈希函数实现本身并不是非常有用(因为快速实现已经可以免费获得),但该练习将使您对这些函数的工作原理有准确和深入的了解,这将是理解有关它们的研究论文的强大资产。

哈希函数是一个很好的起点,因为它们往往是精确指定的,而且不使用任何键。一旦您掌握了一些散列函数,请尝试HMAC。然后继续进行对称加密(特别是RC4DES和3 DESAES)。到那时,您将了解一些对称密码内部工作的概念,也许更重要的是,您将知道如何读取和理解算法规范。

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

一旦您完成了哈希函数、HMAC、对称加密和RSA,您就可以开始编写您自己的SSL/TLS库,从TLS 1.0开始。编写一个可以连接到现有TLS服务器并与其进行互操作的TLS客户端,将使您对SSL/TLS握手非常了解,并且您将能够了解关于SSL上已知攻击的所有研究以及它们是如何修复的(例如野兽、Poodle、.)。使用这个答案作为有关TLS的阅读指南。

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

票数 19
EN

Security用户

发布于 2014-11-07 08:02:39

这取决于你到底在找什么。

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

对于对密码学和密码分析的初级讨论,Simon的代码书是对密码学的历史和该领域的挑战:http://simonsingh.net/books/the-code-book/的一个很好的介绍。

对于这个主题的专家之旅,如果你试图实现或使用密码算法,这也会给你提供参考材料,我听说过布鲁斯·施耐尔的书,比如“应用密码学”,但是我个人没有。

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

票数 5
EN

Security用户

发布于 2014-11-07 09:21:24

我建议阅读弗雷德派珀的“密码学-一个非常简短的介绍”。一本简明的小书,内容丰富,可以理解密码学的基本知识。

票数 3
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/72488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档