FHE在混淆中的使用?

逆向工程 混淆 密码学
2021-06-15 05:04:52

FHE(Fully Homomorphic Encryption)是一种密码加密模式,其中可以在不解密的情况下对密文执行算术运算。

虽然目前还没有真正有效的具有这种特性的密码系统,但一些概念证明表明这种密码学确实存在。而且,也许有一天,我们可能会找到一种具有 FHE 属性的高效密码系统。

目前,FHE 的使用主要针对“云计算”,人们希望将昂贵的计算委托给远程计算机,而不会将其数据分散开。因此,原理只是发送加密数据,云将对数据应用给定的计算并在不知道内部内容的情况下发回加密的答案。

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

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

3个回答

完全同态加密并不像混淆代码那样好。虽然您确实可以在加密的图灵机上进行计算,但混淆封闭系统的好处并没有那么大,仅仅是因为系统的任何输入或输出都必须加密或解密。因此,程序的任何逆向工程都将简单地从这个加密或解密代码中提取加密密钥开始。

当IO的加密和解密由第三方,在这种情况下,它的好处仅仅变得实质不可能解密的代码,而获得访问该第三方。因此,在您想要混淆纯计算的情况下,您可以使用同态加密来运行完全不透明的僵尸网络。例如,控制器可以发送哈希来破解或发送比特币数据来挖掘,如果没有外部信息,就不可能通过查看客户端知道正在运行哪些代码。

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

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

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

似乎您有两个高级选择,“加密程序代码”或“加密程序数据”。加密程序数据似乎不那么强大,因为手动分析仍然可以通过观察其结构来收集有关程序的大量线索,因此似乎您想要做的减慢分析的工作是拒绝分析师查看程序结构的能力。

如果您将程序转换为字节码语言和解释器,就像 VMProtect 和其他人所做的那样。然后,对字节码的缓冲区进行加密,并在执行代码时使用 FHE 访问缓冲区。

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

  1. 针对 NC1 电路提出的不可区分性混淆,其中安全性基于所谓的多线性拼图(多线性地图的简化变体)。
  2. 将贡献与完全同态加密配对,您将获得所有电路的不可区分性混淆。
  3. 将 2 与公钥加密和非交互式零知识证明相结合,您可以对所有电路进行功能加密我相信在之前,不可能对所有电路进行功能加密。