假设我有一个N
节点网络,每个节点都有一个唯一的身份(例如公钥),与无中央服务器的协议(例如 DHT、Kad)进行通信。每个节点存储一个变量V
。以电子投票为例,该变量可以是候选人的姓名。
V
现在我想对网络中所有可用的变量执行“聚合”函数。参考电子投票示例,我想计算选票。
我的问题完全是理论上的(我必须证明一个陈述,问题末尾的细节),所以请不要专注于电子投票及其所有安全方面。我必须再说一遍吗?不要回答我说“一个节点可以通过生成更多的密钥来拥有任意数量的身份”、“IP 可以追溯”等,因为那是另一回事。
让我们只从隐私来看分布式聚合的角度来看分布式聚合。
问题
有没有可能,一般情况下计算存储在其他节点上的变量的函数,而不会将它们的值与节点的身份相关联?研究人员是否设计了这种具有隐私意识的分布式算法?
我只处理隐私方面,而不是一般安全!
目前的想法
我目前的回答是否定的,所以我说中央服务器获取所有V
s 并在不存储的情况下处理它们是必要的,并且有比技术手段更合法的方法来确保中央服务器不会存储或重新传输任何单个节点的数据。我要求证明我之前的陈述是错误的:)
在电子投票的例子中,我认为不可能统计有多少人投票,Alice
而Bob
不是一一询问所有节点,“嘿,你投票给谁?”
真实案例
我正在研究个人数据存储领域。假设您将通话记录存储在 PDS 中,并且有人想要找到有关电话通话的统计值(即平均持续时间、每天通话次数、方差、标准差),而不会透露有关个人的汇总或准时数据(即是,没有人必须知道我给谁打电话,也不知道我自己的平均通话时间)。
如果存在受信任的代理,并且每个人都信任它,那么该节点可以公开一个API,该 API 首先在网络中的每个 PDS 上double getMeanCallDuration()
调用,然后对所有行进行统计。CallRecord[] getCalls()
如果没有中央可信代理,每个暴露的 PDSdouble getMyMeanCallDuration()
在统计上都是不可用的(平均值不应该是所有的平均值……),最重要的是揭示单个用户的身份。