我碰到了这篇文章,其中描述了一种由UCLA CS教授Amit Sahai等人开发的方法,该方法用于使用功能加密来实现软件混淆。本文引用的论文在这里。有没有人消化过这篇论文并有更多信息要分享?结果是否如本文所建议的那样具有突破性?它仅适用于集成电路级别的硬件实现吗?即使对手一旦打开芯片就能够跟踪和映射信号,它也适用吗?即使对手完全控制了CPU和内部存储器(例如在仿真器中),它是否也适用于通用平台的软件实现?

评论

研究人员说,他们的数学混淆机制可以通过防止新算法被盗以及隐藏漏洞来保护知识产权,该漏洞旨在分发补丁时进行修复。这意味着所有混淆的软件都是潜在的恶意软件。但是,实际上,该技术是否会使AV几乎不相关?我认为文章可以在这里

@rath AV实际上与确保计算机安全无关。拥有它们的唯一原因是为了避免因没有一个而过失的指控。

@CodesInChaos:至少从商业角度来看,AV仍然可能是个问题,因为相当一部分ISV消费者可能永远不会在不受AV软件保护的平台上安装ISV软件。但是,考虑到软件混淆仍然无法隐藏某些可检测到的行为,例如可能有害的OS API调用,因此我不确定这是一个问题。

那篇论文没有任何实际意义。注意使用多线性映射和完全同态加密。我怀疑只有在FHE也可行的情况下这才是可行的。

#1 楼


结果是否如本文所建议的那样具有突破性?


结果将被证明对于理论密码学来说是非常重要的。完全同态加密的类比(Samuel在上面提到)很有用,因为这是另一个众所周知的结果,从理论的角度来看,这是一个巨大的开创性成果,但是即使几年后,这种构造也不是人们认为的“实用”。


是否有人清楚地知道该方法可能混淆的实现的哪个方面?


混淆的程序将隐藏所有方面实现的内容,输出除外。那就是混淆的定义。好吧,主要是。总的来说,混淆是最自然的定义。在不涉及太多技术细节的情况下,本文展示了如何获得一种较弱的东西,即“不可区分性混淆”,众所周知,这种混淆是您根据不可能的结果希望实现的最佳混淆。不幸的是,很难准确地解释您从可分辨性混淆中得到的东西。作者确实在论文中提到了这一点。


它仅适用于集成电路级别的硬件实现吗?到本文的硬件。您可以混淆任何程序,硬件或软件。但是,可能造成混淆的事实是,为了使用户感到困惑,您必须将程序表示为布尔电路(“与”,“或”,“非”门),而不是图灵机或汇编代码或C或其他任何形式。这在理论文献中是相当标准的,但是却导致了许多这类构造的不实用性。


即使对手一旦打开芯片就能够跟踪和映射信号,它也适用吗?即使对手完全控制CPU和内部存储器(例如在仿真器的情况下),它是否也适用于通用平台的软件实现?


对此类服务器没有此类限制对手。在软件级别上考虑,经过混淆的程序只是将1和0移交给对手的大斑点。现在,对手可以利用数据块来做任何喜欢的事情。安全保证(或多或少)是对手可以从此数据块中获取的唯一有用信息是能够根据其选择的输入执行程序。当然,这涵盖了您想象对手完全控制执行混淆程序的硬件的情况。

评论


$ \ begingroup $
在实用性方面要清楚一点:如果混淆意味着用AND,OR和NOT表示程序,那么似乎不可避免地会变得非常无效率,即在软件中实现像整数乘法这样的简单操作,不是吗?
$ \ endgroup $
–亨里克·赫尔斯特伦
13年7月31日在21:43

$ \ begingroup $
需要明确的是,将程序表示为布尔电路只是混淆的先决条件,而不是要本身赋予任何安全性(不确定您的评论中是否暗含了安全性)。任何多项式时间程序(图灵机)都可以编码为多项式大小的电路。当然,这会有很大的开销(但是很复杂),所以这取决于您所说的“极端低效”(理论家的定义或非正式的定义)。对于乘以整数的特殊情况,计算机工程师多年来一直在这样做:en.wikipedia.org/wiki/Binary_multiplier
$ \ endgroup $
–迈克罗
13年7月31日在21:48

$ \ begingroup $
我的意思是“非正式的东西”,因为在某些情况下,即使是多项式的开销实际上也是禁止的。例如,如果您尝试使用布尔门实现RSA 2048,例如x86或ARM并在SSL / TLS实现中使用它,远程对等方将超时并断开连接,然后您才有机会完成握手。
$ \ endgroup $
–亨里克·赫尔斯特伦
13年7月31日在21:55

$ \ begingroup $
FHE中涉及的常量意味着它甚至不是遥不可及的。另外,在最大性能至关重要的情况下,混淆将永远不可行,因为无法理解正在执行的代码会产生固有的损失(分支预测错误,缓存未命中等)。但是,让它在本机性能的一小部分内执行(说慢100倍),在这种情况下它将看到潜在的应用程序。
$ \ endgroup $
–锑
2013年8月6日在3:17



$ \ begingroup $
将程序表示为Turing Machine是什么意思?
$ \ endgroup $
– sashank
13年8月7日在1:32

#2 楼

希望为Mikero的答案增添一些内容。所谓的“多线性拼图(Multilinear Jigsaw Puzzles)”(多线性映射的简化变体)。
使用全同态加密将贡献与1配对,您将对所有电路产生难以区分的混淆。
使用公钥加密和非交互功能合并2。零知识证明,您可以对所有电路进行加密。我相信在此功能加密之前不可能对所有电路进行加密。

因此,答案实际上取决于您所指的贡献。


结果是否如本文所建议的那样具有突破性?是肯定的(即使在实施中由于#2中使用FHE仍不可行)。原因是到目前为止,不可能在所有电路上使用FE。因此,这是所有电路的FE的第一个构造。

#1和#2可能会相当地接地。但是,正如其他人所指出的,我们才刚刚开始意识到混淆器可以做什么。本文介绍了一种适用于所有电路的FE。同一位作者的另一篇论文使用IO来构建适当的加密。如果您对该领域感兴趣,我建议您也阅读该论文。 >

这确实取决于您在说什么。如果您在谈论#1和#2,那么我们真的不知道。首先,我们必须了解什么是不可区分的混淆器。假设我们有$ \ mathcal {O} $,这是一个不可区分的混淆器,并且有两个大小相同的(功能等效)电路$ C_1,C_2 $。不可区分的混淆器表示$ \ mathcal {O}(C_1)$与$ \ mathcal {O}(C_2)$不可区分。此外,还表明$ \ mathcal {O} $具有以下属性:没有$ \ mathcal {O}'$(即使效率低下)也不会使$ C_1 $和$ C_2 $难以区分。请注意,所有这些都说明被混淆的等效电路也同样被混淆(因为它们是无法区分的)。而且没有其他混淆器可以使它们更加相同地被混淆。这并没有说明混淆的质量(即,您能否从混淆中获取程序内部的信息)。功能加密(在标准意义上)不是功能(或软件)的混淆。因此,如果您在谈论由功能加密计算的功能,#3不会混淆任何内容。尽管有隐藏技术的技术,但我想可以将其与任何电路的结果结合起来。