我在这里谈论的是非对称加密,并且该软件可能有问题的隐藏一个或多个主密钥(或使用系统上其他地方的某些主密钥),我想找出来。
NB:您可能假设我已经确定了使用的各种算法。
#1 楼
假设您正在谈论强加密,那么即使您提供了密钥或明文,大多数算法也应该难以区分。因此,仅通过查看结果就不可能知道使用了给定的密钥。密码学领域的一个例子是:
[...]受感染密码系统的输出在计算上与密码系统的输出没有区别。相应的未感染密码系统。因此,在黑盒实施方式(例如智能卡)中,攻击很可能不会被完全注意到。因此,在白盒攻击中确实存在检测的空间。除了您应该在尝试检测到密码后门的真实世界实现这一事实之外。您可能想探索其中一些链接:
密码学的阴暗面:黑盒实现中的密码学,作者:Bernhard Esslinger和Patrick Vacek。
ClaudeCrépeau和Alain Slakmon撰写的RSA密钥生成的简单后门。
关于密码病毒学的论文
林廷玉(Ring-Yu Lin)的RSA密钥生成的后门综合研究-Min Min和Wu Mu-En Wu。
等等...
#2 楼
静态地,使用IDA查找对“正在使用的各种算法”的所有交叉引用,以确定它们如何找到所使用的密钥。使用”,从而使您可以检查调用栈并确定它们如何找到使用的键。评论
好吧,动态地可能不是一个好主意,因为我可能会忽略某种机制,该机制会使程序在调试器下的行为与正常运行时不同(就像某些恶意软件一样)。
– 0xC0000022L♦
13年8月29日在1:43
一些代码可能会动态计算算法功能的地址,因此IDA可能会错过它们的交叉引用。除非您有时间对整个程序进行完整的静态分析,否则通常最好以静态和动态方式进行分析以覆盖基础。
–詹森·格夫纳(Jason Geffner)
13年8月29日在16:50
评论
我意识到了有关密文的问题,但是我是在谈论在程序中查找它是否比我提供的密钥更能加密它;
– 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