密码学中似乎发生了一些有趣的事情:第一个 homomorphic encryption 方案最近出现( explanation , HT )。粗略地说,它是一种将x
编码为f(x)
的方法,这样您就可以轻松地计算f(x+y)
,知道f(x)
和 f(y)
即使您无法轻松恢复 x
和 y
(并且相同对于f(x*y)
)。
这种类型的方案有哪些实际应用(一旦建立了安全性)?对我来说,它们似乎可以使编写操纵私有(private)数据的算法变得更加容易。
这是我的想法:
- 电子投票
- 检查私有(private)数据的完整性
- 总体上是否有可能有助于保护隐私?
示例:我在银行 A、B、C 都有账户。实体 X 想要确认我的总金额超过 1000 美元;它很乐意接受银行 A、B、C 或 D 的对账单,但不幸的是我的任何一个账户中都没有足够的钱。 A银行用我的公钥加密了我的500美元的信息;同样,银行B和C分别加密了我有200美元和300美元的信息。他们将这些数据发送给 X,X 将它们添加到某个数字中,我证明该数字实际上加密了 1000 美元(通过使用我的公钥加密 1000 美元并证明结果是相同的)。我已经证明了一些事情,但没有向 X
透露我每个帐户中有多少钱。
另一个例子:好公民 X_1、...、X_n 正在组队选择两名候选人中的一名,其中一名是喝拿铁的 liberAl,同时另一个是一个B持有圣经的枪支爱好者(所有名字都是虚构的)。他们决定希望投票以私下方式进行,但速度要快。他们以加密的矢量格式 (1, vote_A, vote_B, vote_None)
发送选票给选举委员会,选举委员会公开添加他们的选票,并以 (count, count_A, count_B, count_None)
。在检查count = count_A + count_B + count_None
后,官员宣布其中一名候选人获胜,之后法官以与电子投票无关的某种原因宣布选举无效,并在未来 10 年我都会在法庭上度过,但是,嘿,这不是我的问题。
注释: - 我相信这些特定的例子在 RSA 之前就可以实现,因为它只需要一个操作中的同态性。我们希望通过更多的操作可以得到更加有趣的东西——所以,举一些例子吧!
我特别希望看到包含有机会在实践中使用的代码和/或开发框架的答案,原因是 SO 不是理论计算机科学讨论板。
同态算法,重复下面评论中所说的内容,允许创建一个在不知道数据的情况下管理数据的程序。不幸的是,程序的类型有些限制:你不能有
if (x=0) ...
因为x
是加密的,并且每一步都非常慢(涉及到一些格子)。
最佳答案
这是黑暗中的狂野镜头:
我们正在考虑保护明文免受对其进行计算的人的侵害。但如果目标是保护明文和算法呢?
以 MRI 机器为例。 MRI 机器最昂贵的部分是机器分析磁共振数据的算法。因此,它们受到硬件设备的严格保护,这些硬件设备旨在在允许不受信任的一方(或与此相关的任何人)检查程序之前破坏程序。
如果 MRI 制造商能够集中 MRI 数据计算,那么丢失算法的风险将大大降低。然而,法律禁止他们访问私有(private)患者数据。
那么!同态加密允许在患者数据和算法都受到保护的情况下发生这种情况。 “完全”同态加密(即在加密数据上引入环同态)允许对数据进行更高效、更稳健的计算。
关于security - 同态加密算法的实际应用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1023981/