查明加密数据时是否使用了额外的密钥

逆向工程 拆卸 加密
2021-06-27 21:09:20

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

我在这里谈论的是非对称加密,有问题的软件可能隐藏了一个或多个主密钥(或使用了系统其他地方已经存在的一些),我想找出答案。我怎样才能完成这项任务?

注意:您可能认为我已经确定了使用的各种算法。

2个回答

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

这方面的一个例子是Kleptography领域,其中:

[...] 受感染密码系统的输出与相应未受感染密码系统的输出在计算上无法区分。因此,在黑盒实现(例如,智能卡)中,攻击很可能完全被忽视。

您可能已经注意到,Kleptography 仅在黑盒实现上是安全的,因此在白盒攻击中确实存在检测空间。

但是,我在这个主题上没有足够的经验来给你一般性的建议。除了在尝试检测它之前您应该开始查看加密后门的真实世界实现这一事实之外。您可能想探索其中一些链接:

等等...

静态地,使用 IDA 查找对“使用中的各种算法”的所有交叉引用,以确定它们如何找到它们使用的密钥。

动态地,使用调试器在“使用的各种算法”上设置断点,从而允许您检查调用堆栈并确定它们如何找到它们使用的键。