对于逆向工程师来说,了解密码学真的很重要吗?
谢谢。
对于逆向工程师来说,了解密码学真的很重要吗?
谢谢。
我想说这是一个非常有用的工具,但你对它的使用将取决于你的最终目标。就个人而言,我在二进制应用程序评估中经常使用它,但并非所有人都如此。正如我所说,这在很大程度上取决于你想做什么。
归根结底,如果您最终进行逆向工程工作,您将看到应用程序中使用了密码学。理解和破解密码学可能是也可能不是你工作的一部分,但至少对该领域有基本的了解总是很好的。在你的简历上也总是一个不错的 +1。
在方面有什么你应该学习,我会说避免“经典密码”的东西,直行的香饽饽。一方面,我可以计算在实际产品中我必须破解简单的自定义换位密码或替换密码的次数。它们只是在现实中没有使用,如果客户端使用如此糟糕的“加密”,那么这已经是一个向他们标记的主要问题 - 打破它成为一个有争议的问题。
你想调查:
该列表相当大,但您可以按照自己的节奏从维基百科和其他各种在线位置获取这些内容。如果您在足够强的水平上理解了上述一半的主题以识别薄弱的实现,那么您就大功告成了。我做过的几乎所有使用加密的产品都在该列表中存在问题。
它对于实际逆向工程越来越重要。它现在存在于恶意软件中,Stuxnet、Flame 和其他例子是密码学在这种情况下使用的典型例子。而且,它也存在于大多数保护方案中,因为许多技术使用密码学来保护代码和数据。只需考虑诸如 Skype 或 iTunes 之类的软件,它们依靠加密来保护其协议或隐藏可执行文件中的信息。
所以,事实上,这将是一个真正的问题,如果你不明白在倒车时有点密码。而且,所谓“理解密码学”,我的意思是至少能够在汇编级别识别经典密码算法的代码,例如 DES、AES、SHA-1、SHA-3 等。并且,还要了解弱密码的经典缺陷和密码分析技术(例如频率分析)。
了解逆向工程所需的密码学的一个好方法是使用经典密码实现(借助网络上现有的代码)您自己的密码库并查看生成的程序集。如果您没有耐心这样做,只需查看OpenSSL的加密库,将其编译并查看代码和程序集。
当然,你对它了解得越多,面对它时你就会更有效率。