假设我有一个N
个节点的网络,每个节点都有一个与无中心服务器协议(例如DHT,Kad)通信的唯一标识(例如公钥)。每个节点都存储一个变量V
。以电子投票为例,该变量可以是候选人的名字。
现在我想对网络中可用的所有V
变量执行“聚合”功能。参考电子投票的例子,我想计票。
我的问题完全是理论上的(我必须在问题的最后证明一个声明,详细信息),所以请不要专注于电子投票及其所有安全方面。我必须再说一遍吗?不要回答我“一个节点可能通过生成更多密钥而具有任何数字标识”,“IP可以追溯”等等,因为这是另一回事。
让我们仅从隐私的角度来看分布式聚合。
是否可能在一般情况下,一个节点计算存储在其他节点的变量函数而不将它们的值与节点的标识相关联?研究人员是否设计了这种隐私感知的分布式算法?
我只处理隐私问题,不一般安全性!
我目前的答案是没有,所以我说中央服务器,获取所有V
并处理它们而不存储,是必要的,并且有更多的法律手段来保证中央服务器不存储或重传单个节点的数据。我要求证明我之前的陈述是错误的:)
在电子投票示例中,我认为无法计算Alice
和Bob
投票的人数,而不是逐一询问所有节点“嘿,你投票给谁? “
我正在个人数据存储字段中进行研究。假设您将呼叫记录存储在PDS中,并且有人想要查找有关电话呼叫的统计值(即平均持续时间,每天呼叫次数,方差,st-dev),而不显示有关个人的汇总或准时数据(< em>那是,没有人必须知道我打电话给谁,也不知道我自己的平均通话时间。)
如果存在受信任的代理,并且每个人都信任它,那么该节点可以公开double getMeanCallDuration()
API,该API首先在网络中的每个PDS上调用CallRecord[] getCalls()
,然后对所有行进行统计。如果没有中央信任的经纪人,每个暴露double getMyMeanCallDuration()
的PDS在统计上都不可用(均值的均值不应该是所有人的意思......)并且最重要的是揭示单个用户的身份。
答案 0 :(得分:2)
是的,有可能。在给出一些假设的情况下,有些工作实际上可以解决您解决问题的问题。请查看以下文件:Privacy, efficiency & fault tolerance in aggregate computations on massive star networks。
您可以对另一个节点上的一组节点进行一些计算(例如求和),而不需要参与者节点在它们之间显示任何数据,甚至不计算正在计算的节点。在计算之后,每个人都学习了结果(但是除了他们自己已经知道的任何个人数据之外,没有人能够学到它们)。本文描述了协议并证明了其安全性(协议本身为您提供了我刚才描述的隐私级别)。
至于保护节点的身份以将其价值与其身份取消链接,这将是另一个问题。您可以使用匿名凭据(请检查:https://idemix.wordpress.com/2009/08/18/quick-intro-to-credentials/)或类似的内容,以显示您是谁,而不会泄露您的身份(在分布式方案中)。
这个协议的问题是你需要一个半可信节点来进行计算。完全分布式协议(例如,在P2P网络场景中)并不容易。不是因为缺少存储(例如,您可以使用DHT),而是需要通过网络替换该受信任或半受信任的节点,那就是当您发现问题时,谁来做?为什么那个而不是另一个?如果有共谋怎么办?等...
答案 1 :(得分:0)
每个节点何时发布两组数据x
和y
,这样
x - y = v
假设我可以独立发出x
和y
,您可以正确计算整体平均值和总和,而每条消息都是很无聊。
因此,对于投票示例和候选人X,Y,Z,我可能有一个身份发布投票
+2 -1 +3
我的第二个身份发表了投票:
-2 +2 -3
但当然你无法证实我不再多次投票了。