FHE(完全同态加密)是一种密码加密方案,可以在不解密的情况下对密文执行算术运算。

目前还没有真正有效的具有此属性的密码系统一段时间,一些概念证明表明这种加密技术确实存在。而且,也许有一天,我们可能会找到一种具有FHE属性的高效密码系统。

目前,FHE的使用主要针对“云计算”,其中一个人要委派一个无需将数据散布到远程计算机上的昂贵计算。因此,原理只是发送加密的数据,而Cloud会对数据应用给定的计算,然后在不了解内部内容的情况下发送加密的答案。

带有代码混淆的链接是很明显,好像我们可以完美地混淆数据一样,那么我们也可以通过将其编码到通用图灵机中来完美地混淆算法。但是,魔鬼总是存在于细节中。最近的一篇论文[1]提出了一种使用FHE进行混淆的方法,但是以一种过于强大的方式(以我的拙见)。

我的问题是:假设我们有一个有效的FHE模式,还要假设我们的目标是放慢程序的分析速度(而不是完全阻止它)。那么,在混淆中最有效地使用FHE是什么?

评论

有点相关:如何构造加密函数(使用公共或私有数据)?

#1 楼

我正要说“这听起来很像INSIGHT团队想聘请一名实习生在今年夏天进行调查”,但随后我查看了您的用户名和位置:)

我认为这个问题是很难明确地回答,因为您正在寻找一种有效降低手动分析速度的机制。无论如何,我都会提出我认为是答案的答案。

似乎您有两个高级选择,“加密程序代码”或“加密程序数据”。加密程序数据似乎没有那么强大,因为手动分析仍可以通过观察程序的结构来收集有关程序的许多线索,因此您似乎想减慢分析速度的做法似乎使分析人员无法查看程序的结构。

如果将程序转换为字节码语言和解释器,该操作类似于VMProtect和其他工具。然后,您对字节码的缓冲区进行加密,并在执行代码时使用FHE访问缓冲区。

评论


啊,你发现我了! :-)实际上,我们没有找到合适的硕士论文候选人,所以我将不得不独自研究这个主题,并且我试图设法找到一些想法。但是,我也认为在混淆时应该考虑FHE(通常是加密)。密码学家的问题在于,他们的方法倾向于极端主义。因此,您可以想象有一条中间路径,您可以在其中寻求强大而又不完美的保护以防止信息泄漏。但是,我非常同意您在这里的观点。

–恐怖
13年3月22日在17:23



#2 楼

完全同态加密的效果不如混淆代码。尽管可以在加密的Turing机器上进行计算是正确的,但是混淆封闭系统的好处并不是那么大,仅仅是因为必须对系统的任何输入或输出进行加密或解密。因此,程序的任何逆向工程都只需从此加密或解密代码中提取加密密钥即可开始。

只有在第三方对IO进行加密和解密的情况下,好处才变得可观如果没有获得该第三方的访问权限,就不可能解密该代码。因此,在要混淆纯计算的情况下,可以使用同态加密来运行完全不透明的僵尸网络。例如,控制器可以发送哈希值破解或将比特币数据发送给我,并且如果没有外部信息,就无法从客户端了解正在运行的代码。

当然,密钥这里的部分是加密/解密密钥是远程存储的,因此无法从混淆的程序中提取。

#3 楼

什么是所有电路的功能加密和所有电路的不可混淆性?


NC1电路的可混淆性的拟议混淆性,其中安全性基于所谓的多线性拼图( a
多线性映射的简化变体。)
用全同态加密对1进行贡献,然后
对所有电路进行不可区分的混淆。
使用公钥加密和非加密合并2。 -interactive
零知识证明,您可以对所有
电路进行加密。我相信在此之前,不可能对所有
电路进行功能加密。