我的问题是有关这个问题与@Rolf罗尔斯的出色答卷。由于MD Preda 等人的论文很有技术,所以我想知道我是否理解他们的想法。论文中引用了以下语句:
基本思想是将攻击者建模为具体程序行为的抽象解释,即具体程序语义。在这个框架中,当不透明谓词的抽象检测等同于其具体检测时,攻击者能够破解不透明谓词。
据我所知,他们给出了一个正式的攻击者模型,因为有人试图使用声音近似作为抽象解释 (AI) 来获取程序的属性。如果 AI 过程完成,攻击者将成功(非正式地说,抽象域中获得的不动点也“映射”回具体域中的不动点)。
具体来说,他们的模型可以被认为是一种基于人工智能的解决不透明谓词的算法。事实上,这个想法无处不在(例如在这篇论文中,作者已经证明了 SMT 求解器中使用的 DPLL 算法也是一种抽象的解释)。
显然,在抽象解释不完整的最坏情况下,攻击者可能永远无法恢复所需的属性(例如,他可以近似但永远无法恢复设计良好的不透明谓词的确切解决方案)。
所以我想知道攻击者作为抽象域的模型可能有一些限制,因为我们仍然不确定所有的攻击都可以在 AI 中建模。然后我想到了一个直截了当的问题:“如果攻击者使用其他一些方法来解决不透明谓词会发生什么?。”
举个简单的例子,攻击者可以简单地使用动态分析绕过不透明谓词(他接受一些不正确,但最终他可能能够得到他想要的属性)。
有人能给我一些建议吗?