密码学中似乎发生了一些有趣的事情:最近出现了第一个同态加密方案(解释,HT)。粗略地说,它是一种编码方式,即使您无法轻松恢复x
and (对于 也是如此),您也可以轻松f(x)
计算。f(x+y)
f(x)
f(y)
x
y
f(x*y)
这种类型的方案有哪些实际应用(一旦建立了安全性)?对我来说,它们似乎可以使编写用于操作私人数据的算法变得更加容易。
这是我的想法:
- 电子投票
- 检查私人数据的完整性
- 是否有机会总体上有助于保护隐私?
示例:我在 A、B、C 银行有账户。实体 X 想确认我的总金额超过 1000 美元;它会很乐意接受银行 A、B、C 或 D 的对帐单,但不幸的是,我在任何一个帐户中都没有足够的钱。A银行用我的公钥加密了我500美元的信息;同样,银行 B 和 C 分别加密了我有 200 美元和 300 美元的信息。他们将这些数据发送给 X,X 将它们添加到某个数字上,我证明这个数字实际上是加密的 1000 美元(通过用我的公钥加密 1000 美元并证明结果是相同的)。我已经证明了一些事情,但没有透露X
我每个账户里有多少钱。
另一个例子:好公民 X_1, ... , X_n 正在联手选择两名候选人中的一名,其中一名是喝拿铁的自由人A l,另一名是持圣经的枪支爱好者(所有名字都是虚构的)。他们决定他们希望投票是私密但快速的。他们将投票以(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
,而且每一步都很慢(涉及一些格子)。