完全同态加密可以用于遗忘的代码执行吗?


22

前一阵子读完这个答案之后,我对完全同态加密产生了兴趣。看完Gentry的论文介绍后,我开始怀疑是否可以将他的加密方案用于第三段中定义的遗忘代码执行。

在完全同态加密方案中,我们通常对一些数据进行加密,然后将其发送到敌对环境中,在该环境中对数据进行某些功能的计算,然后将结果发送回(加密),而无需对手发现接收到的数据或函数的结果是。

在执行遗忘的代码的过程中,我的意思是我们对一段旨在解决某些问题的代码进行加密,并将其发送到敌对环境。对手想要使用来解决,但我们不希望他知道工作原理。如果他有一个输入为,他可以加密,然后使用(在某些加密方案)与,然后返回(未加密的)输出(的溶液为输入PCPP C I P I C I O P ICPCIPICIOPI)。加密方案可确保对手永远不会发现这段代码是如何工作的,即对他而言,它就像甲骨文一样工作。

这种加密方案的主要实际用途(我能想到)将使盗版更加困难,甚至无法实现。

我认为使用完全同态的加密方案可能实现此目的的原因是,因为我们可以对加密数据执行任意电路,特别是通用图灵机。然后,我们可以像对待数据一样对代码进行加密,然后将通用图灵机的电路用于此加密数据上以执行代码。

我在这里提出一个问题,是因为我不知道这个想法是否有用:我对Gentry的论文介绍不多,而且我对密码学的知识是有限的。另外,我不知道是否存在一个经常使用的遗忘代码执行术语:我尝试在Google上搜索该想法,但不知道什么都找不到合适的术语。

我可以想到有多个问题,这些问题可能会导致此方法出现问题。首先,如果我们使用未经修改的完全同态加密,则将对计算结果()进行加密。因此,对于希望使用您的代码来解决的对手将毫无用处。虽然这对于例如云计算仍然可能有用,但这不是我想要实现的目标。POP

其次,因为我们使用的是电路而不是任意的图灵机,所以我们不能使用任意数量的内存:我们只能使用预定数量的内存。这意味着,如果我们要以这种方式运行程序,则其内存占用量将始终相同,即峰值内存使用率。

最后,所涉及的常数几乎肯定会杀死这种系统的任何实际使用,但是我认为这个想法仍然很有趣。


您是否确定使用“代码执行遗忘”一词?我搜索了一会儿,什么也没有!
Deyaa 2010年

一点也不:我自己编造了这个词,因为我不知道这个词的正确性。混淆和混淆器显然是该概念的常规术语。
Alex 10 Brink

Answers:


17

不幸的是,从理论上讲,结果是禁止“遗忘的代码执行”:

Boaz Barak,Oded Goldreich,Russell Impagliazzo,Steven Rudich,Amit Sahai,Salil Vadhan和Ke Yang。在混淆程序的(IM)的可能性垫款密码学- CRYPTO 2001。

这里是链接:

摘要如下:

非正式地,混淆器是一个(高效,概率的)“编译器”,其将程序(或电路)P作为输入,并生成具有与P相同功能但在某种意义上“不可读” 的新程序O P )。。混淆器(如果存在的话)将具有各种各样的密码学和复杂性理论应用程序,范围从软件保护到同态加密再到莱斯理论的复杂性理论类似物。这些应用大多数基于对混淆中“不可读取”条件的解释,即O P ØPØPPØP是一个“虚拟黑匣子”,从某种意义上说,任何人都可以有效地计算给定的,也可以有效地计算给定的Oracle对P的访问权限。ØPP

在这项工作中,我们开始进行混淆的理论研究。我们的主要结果是,即使在上述直觉的形式化非常薄弱的​​情况下,混淆也是不可能的。我们通过构造一个在以下意义上固有地难以理解的函数来证明这一点:存在一个谓词π,使得(a)给定任何在F中计算函数f的程序,都可以有效地计算π f 的值。的,但给定的预言访问(随机选择的)函数(b)中˚F˚F,没有有效的算法可以计算π ˚F FπFFπFFFπF 比随机猜测好得多。

我们以多种方式扩展不可能的结果,甚至包括混淆器,这些混淆器(a)不一定可以在多项式时间内计算,(b)仅大致保留功能,并且(c)仅需要用于非常有限的计算模型 0)。通过构造“不可混淆”签名方案,加密方案和伪随机函数族,我们还排除了混淆器的几种潜在应用。ŤC 0


好吧,这种东西上放了阻尼器。我刚刚阅读了它们如何证明其结果:当我看到混淆器被认为可以访问对抗程序的源代码时,我尤其感到困惑!(尽管我可能只是误会了这篇论文)
亚历克斯十Brink 2010年

5
我的理解是,这些结果仅适用于使用虚拟黑匣子的“旧”(不成功)混淆模型,并且现在该领域的研究人员正在寻求采用较弱的混淆概念,希望可以得到一些保证。研究方向之一是采用完全同态加密,因此我想说这个问题是开放的。我记得今年夏天我参加了Microsoft Research的一次有关定点混淆器和虚拟黑匣子的演讲,研究人员正是在这一点上指出了这一点。
罗斯·斯尼德

3
该领域的研究人员(或作者列表中令人印象深刻的名字之一)可以发表评论吗?
罗斯·斯尼德

1
@Ross:是的,我也希望该领域的其他研究人员对此发表评论……
MS Dousti

@ Ross,Sadeq:一些作者不时访问该站点,希望他们会注意到该标签。在特色问题页面上询问该问题也可能会有所帮助。
卡夫

15

确实,虽然完全同态加密对于在多个不信任方之间执行代码非常有用(例如,参见本文),但是当计算加密输出的一方将其发送给知道密钥的一方时,您需要某种交互。

您正在寻找的概念听起来似乎与软件混淆非常接近,对此我们证明了上面提到的不可能结果。我也曾经对该论文进行过非正式的概述,有些人可能会觉得有用。

鉴于这种不可能的结果,有两种(不脱节的)方法可以放宽定义:要么通过限制程序/函数的类来混淆,要么给出一种宽松的安全性概念。

第二种方法也许是可行的,并且我们在本文中评论了一些类似于混淆的弱概念。但是,请注意,无论如何混淆,我们的攻击都能完全恢复某些程序的原始源代码。因此,您必须以某种方式制定一个安全定义,以简化我们的反例案例。

第一种方法是针对每个受限制的功能(例如,点函数)完成的,但是必须再次确保该类不包含我们的反例,这大致意味着它不应该包含伪随机函数。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.