假设我使用软件来加密数据。我将如何使用IDA或其他RCE工具找出加密期间是否使用了多个密钥?

我在这里谈论的是非对称加密,并且该软件可能有问题的隐藏一个或多个主密钥(或使用系统上其他地方的某些主密钥),我想找出来。

NB:您可能假设我已经确定了使用的各种算法。

#1 楼

假设您正在谈论强加密,那么即使您提供了密钥或明文,大多数算法也应该难以区分。因此,仅通过查看结果就不可能知道使用了给定的密钥。

密码学领域的一个例子是:


[...]受感染密码系统的输出在计算上与密码系统的输出没有区别。相应的未感染密码系统。因此,在黑盒实施方式(例如智能卡)中,攻击很可能不会被完全注意到。因此,在白盒攻击中确实存在检测的空间。除了您应该在尝试检测到密码后门的真实世界实现这一事实之外。您可能想探索其中一些链接:




密码学的阴暗面:黑盒实现中的密码学,作者:Bernhard Esslinger和Patrick Vacek。

ClaudeCrépeau和Alain Slakmon撰写的RSA密钥生成的简单后门。
关于密码病毒学的论文

林廷玉(Ring-Yu Lin)的RSA密钥生成的后门综合研究-Min Min和Wu Mu-En Wu。

等等...

评论


我意识到了有关密文的问题,但是我是在谈论在程序中查找它是否比我提供的密钥更能加密它;

– 0xC0000022L♦
13年8月29日在1:44

如果我理解得很好(告诉我,如果我错了,请告诉我),您想要检查程序中是否存在后门程序,以便创建一个主密钥来访问除您自己的私钥之外的明文。

–恐怖
13年8月29日在11:36



没错

– 0xC0000022L♦
13年8月29日在11:54

但是,我相信您可以在Crypto Stack-Exchange网站上得到更好的答案!只需尝试使用正确的词汇,他们就会尝试回答。 :)

–恐怖
13年8月29日在12:00

#2 楼

静态地,使用IDA查找对“正在使用的各种算法”的所有交叉引用,以确定它们如何找到所使用的密钥。使用”,从而使您可以检查调用栈并确定它们如何找到使用的键。

评论


好吧,动态地可能不是一个好主意,因为我可能会忽略某种机制,该机制会使程序在调试器下的行为与正常运行时不同(就像某些恶意软件一样)。

– 0xC0000022L♦
13年8月29日在1:43

一些代码可能会动态计算算法功能的地址,因此IDA可能会错过它们的交叉引用。除非您有时间对整个程序进行完整的静态分析,否则通常最好以静态和动态方式进行分析以覆盖基础。

–詹森·格夫纳(Jason Geffner)
13年8月29日在16:50