我一直在研究功能加密。最近读到,多输入功能加密(MIFE)意味着难以区分的混淆。

#1 楼

这是GGH + 13(PDF)中引用的一个非常有趣的示例。


软件开发人员通常会希望发布其软件的演示版本或受限制的版本,以限制完整版本中可用功能的功能。在某些情况下,商业软件开发人员会这样做以证明其产品;在其他情况下,
开发人员将希望制作具有不同价格点的多层产品。在其他领域,可以将软件提供给仅部分受信任且仅开发人员的合作伙伴
要发布任务所需的功能。开发人员只需从完整版本开始,然后在界面级别关闭某些
功能,就可以创建软件的降级版本,而只需很少的额外工作。但是,如果这一切完成,
攻击者可能很容易绕过这些控件并获得对完整版本或其背后代码的访问权限。另一种选择是让软件开发团队仔细地从软件的核心中删除所有未使用的功能。删除功能可能会成为非常耗时的任务,其本身可能会导致引入软件错误。此外,在许多应用程序中,可能尚不清楚什么可以限制使用版本保留哪些内容,

接口级别,然后释放该程序的混淆版本。
对于此应用程序,不可混淆性就足够了,因为
根据定义,受接口限制的版本与具有相同行为的混淆程序是不可区分的br />在一开始就被删除了。


在同一篇论文中,他们还证明了不可区分性混淆意味着功能性加密。和PDF。也没有任何循环安全性假设。

#2 楼

程序混淆是一种对程序代码进行加扰以使其变得难以理解但保留了程序功能的方法。 [BGI + 01]中提出了不可区分混淆的概念。实际上,他们首先考虑了另一个概念,称为虚拟黑匣子混淆(VBB Obfuscation)。但是,他们表明不可能进行VBB模糊处理,因此他们提出了不可区分模糊处理(IO)的概念。

2013年,[GGH + 13]根据多线性图上的假设提出了第一个候选IO。此后,提出了许多应用。例如,可拒绝加密[SW14],见证加密[GGSW13]和最佳(两轮)MPC [GGSR13](实际上,只要在第一个候选IO出现后查看IACR预印本列表,您就会发现讨论IO应用的论文数量)。

当前的中心问题是如何从标准数学假设(例如LWE和双线性图)构建IO。最近的突破是Rachel Lin等人完成的。从去年到今年[Lin16] [LV16] [Lin16] [AS16] [LT17]。

#3 楼

来自InfoSec SE

应在此处发布答案之前阅读此Security.SE答案。下面的块引号和FPS示例是从链接的答案中提取的。


功能加密是关于提供一个可计算电路(被IO混淆),该电路接收一些值x的加密版本作为输入,并为某些函数F返回F(x),而没有透露关于x的任何其他信息。作者展示了他们如何对可以编码为电路的任何函数F做到这一点,并且相对于实现F的原始未混淆电路,生成的混淆电路是“多项式大小”。 br />以上引述和以下示例均来自Tom“ The Bear”。
他指出,FPS(第一人称射击游戏)视频游戏可以防止玩家作弊,这是一个很好的例子。他的例子的要点是,每个玩家的系统仅从服务器获取数据,而不能从对手的设备读取数据。

实用性

最明显的理论比较是同态加密。这涉及对加密数据执行计算而无需先解密。在软件工程的形式化方法(例如HACMS项目)中还有一个比较。允许对任何其他组件进行任何控制。但是,如果将其他所有因素都考虑在内(在答案的第一部分中由Tom进行详细介绍),那么在可预见的未来似乎不太可能。结果是具有同态加密的潜力,并增加了针对攻击的保护措施,例如基于行锤的风水攻击。展望未来,我们可能会看到无人驾驶汽车通过基于接近度访问的云进行通信。本质上,道路的每个区域都与该区域中的汽车通信,同时执行计算以辅助自动驾驶汽车的导航。如果对IO进行了足够的优化以使其实用,那么这将有助于确保每个人的日常通勤。

#4 楼

非正式地,对程序进行模糊处理是隐藏程序正在执行的操作,同时保留其功能的过程。除其他外,这有助于防止代码篡改和逆向工程。我在这里找到了一个很好的例子

混淆处理有很多应用。一种重要的应用是FE和FHE的构造。其他几个则是证人加密和NIZK的构建。
[CLTV14]

#5 楼

您有一些数学函数。

您有一些电路都可以计算相同的函数。

难区分性混淆算法,当给定这些电路中的任何一个时,都会将其随机转换为这些电路中的任何其他电路,可能性都相同。