3

假设我有一个N节点网络,每个节点都有一个唯一的身份(例如公钥),与无中央服务器的协议(例如 DHT、Kad)进行通信。每个节点存储一个变量V。以电子投票为例,该变量可以是候选人的姓名。

V现在我想对网络中所有可用的变量执行“聚合”函数。参考电子投票示例,我想计算选票。

我的问题完全是理论上的(我必须证明一个陈述,问题末尾的细节),所以请不要专注于电子投票及其所有安全方面。我必须再说一遍吗?不要回答我说“一个节点可以通过生成更多的密钥来拥有任意数量的身份”、“IP 可以追溯”等,因为那是另一回事。

让我们只从隐私来看分布式聚合的角度来看分布式聚合。

问题

有没有可能,一般情况下计算存储在其他节点上的变量的函数,而不会将它们的值与节点的身份相关联?研究人员是否设计了这种具有隐私意识的分布式算法?

我只处理隐私方面,而不是一般安全!

目前的想法

我目前的回答是否定的,所以我说中央服务器获取所有Vs 并在不存储的情况下处理它们是必要的,并且有比技术手段更合法的方法来确保中央服务器不会存储或重新传输任何单个节点的数据。我要求证明我之前的陈述是错误的:)

在电子投票的例子中,我认为不可能统计有多少人投票,AliceBob不是一一询问所有节点,“嘿,你投票给谁?”

真实案例

我正在研究个人数据存储领域。假设您将通话记录存储在 PDS 中,并且有人想要找到有关电话通话的统计值(即平均持续时间、每天通话次数、方差、标准差),而不会透露有关个人的汇总或准时数据(即是,没有人必须知道我给谁打电话,也不知道我自己的平均通话时间)。

如果存在受信任的代理,并且每个人都信任它,那么该节点可以公开一个API,该 API 首先在网络中的每个 PDS 上double getMeanCallDuration()调用,然后对所有行进行统计。CallRecord[] getCalls()如果没有中央可信代理,每个暴露的 PDSdouble getMyMeanCallDuration()在统计上都是不可用的(平均值不应该是所有的平均值……),最重要的是揭示单个用户的身份。

4

2 回答 2

2

对的,这是可能的。考虑到一些假设,有些工作实际上可以回答您解决问题的问题。查看以下论文:大规模星型网络聚合计算中的隐私、效率和容错

您可以在另一个节点上对一组节点进行一些计算(例如求和),而无需让参与者节点显示它们之间的任何数据,甚至不显示正在计算的节点。在计算之后,每个人都知道结果(但没有人知道除了他们自己的数据之外的任何个人数据,他们已经知道了)。该论文描述了协议并证明了它的安全性(协议本身为您提供了我刚刚描述的隐私级别)。

至于保护节点的身份以将其价值与其身份脱钩,那将是另一个问题。您可以使用匿名凭据(检查此:https ://idemix.wordpress.com/2009/08/18/quick-intro-to-credentials/ )或类似的东西来表明你是谁,而无需透露你的身份(在分布式场景中)。

该协议的问题是您需要一个半可信节点来进行计算。但是,完全分布式的协议(例如,在 P2P 网络场景中)并不是那么容易。不是因为缺少存储(例如,你可以有一个 DHT),而是你需要用网络替换那个受信任或半受信任的节点,那就是当你发现问题时,谁来做?为什么是那个而不是另一个?如果有勾结怎么办?ETC...

于 2016-12-08T02:20:16.953 回答
0

每个节点何时发布两组数据x 和怎么样y,这样

x - y = v

假设我可以独立发出xy您可以正确计算总体均值总和,而每条消息在很大程度上毫无价值。

因此,对于投票示例和候选人 X、Y、Z,我可能有一个身份发布投票

+2   -1   +3

我的第二个身份发布了投票:

-2   +2   -3

但是你当然不能证实我没有多次投票了。

于 2013-01-17T16:39:43.250 回答