对密码学的理解对逆向工程师真的重要吗?

谢谢。

评论

这个问题被搁置了,因为它在很大程度上取决于意见:如果您逆向工程密码功能,那么可以。如果从来没有,那就没有;)

#1 楼

对于实际的逆向工程来说,它变得越来越重要。现在,它已存在于恶意软件中,例如Stuxnet,Flame和其他实例就是在这种情况下使用密码术的典型代表。而且,由于许多技术使用加密技术来保护代码和数据,因此它也存在于大多数保护方案中。只需考虑像Skype或iTunes这样的软件,它们依靠加密技术来保护其协议或将信息隐藏在可执行文件中。反转时的密码学。而且,“了解密码学”的意思是至少能够识别汇编级别的经典密码算法的代码,例如DES,AES,SHA-1,SHA-3等。并且,还要了解弱密码的经典缺陷和密码分析技术(例如频率分析)。

了解反向工程所需的密码学的一种好方法是实施(借助您可以使用经典密码在自己的密码库中查看生成的程序集。如果您没有耐心,只需看一下OpenSSL的crypto-lib,对其进行编译,再看一下代码和程序集。面对它,您会更有效率。

#2 楼

我想说这是一个非常有用的工具,但是您对它的使用将取决于您的最终目标。就个人而言,我在二进制应用程序评估中使用了相当多的代码,但并非每个人都如此。正如我所说,这很大程度上取决于您要做什么。

最终,如果最终进行逆向工程,您将看到应用程序中正在使用加密技术。理解和破解加密技术可能会或可能不会成为您工作的一部分,但是至少对领域有一个基本的了解总是很高兴。同样,它也是履历表上最好的+1。一方面,我可以指望必须破坏真实产品中的简单自定义换位密码或替换密码的次数。它们只是在现实中不被使用,如果客户端使用了如此糟糕的“加密”,那么这已经是向他们标记的主要问题-打破它成为有争议的话题。调查:


简单的异或密码(一次填充,两次填充,重复密钥异或)
流密码
初始化向量(IV)的使用避免密钥重用问题
流密码可延展性
分组密码
分组密码填充
分组密码的操作模式(尤其是密码分组链接)
电子密码问题书本(ECB)模式
分组密码中的IVs
CBC中的恶意软件
填充Oracle攻击
压缩Oracle攻击(例如CRIME) 。)
哈希冲突和生日悖论
消息验证码(例如HMAC构造)
非对称密码术(例如RSA)
密钥交换机制(例如Diffie-Hellman)
混合密码系统(即使用非对称方式发送密钥,Symm etric加密)
有关SSL / TLS和PKI的常见问题列表:

未正确验证CA
未正确验证公用名
未验证有效期或有效期自
允许弱密码(例如NULL,DES)
允许弱证书签名(例如MD5)
等等...有关更多信息,请参见OWASP。如果您对以上主题的一半有足够的了解,足以识别出一个较弱的实现,那么您将步入正轨。我曾经做过的几乎所有使用加密技术的产品都在该列表中有问题。

评论


+1:尽管要仔细回答您的所有问题,但似乎很详细且有用。

–Pranit Kothari
2014年1月19日,12:03