全加密社交网络理论

信息安全 加密 理论
2021-09-03 13:31:57

我有这样的想法,即建立一个社交网络,将其所有数据加密存储。这个想法是成员的数据存储在多个“基础服务器”(由成员选择)上。每个成员有 3 个数据集和 3 个加密密钥。

  • keyP用于他自己的私人数据和设置
  • keyF用于他的个人资料(帖子、照片、好友列表),他将此密钥提供给他所有的朋友
  • keyA用于他的公共信息(姓名、城市等),也提供给朋友。朋友可以与他们的朋友分享这个 (这可以让人们找到朋友的朋友)

好友列表将包含您所有好友的 ID、服务器位置和密钥 A。

成员可以随时切换基本服务器。当他们这样做时,他们的加密数据将从服务器中完全删除。添加基础服务器后,加密数据将被复制到新服务器,并且该位置将发送给所有朋友,以便他们知道在哪里可以找到他。如果成员想从他离开的唯一服务器中“删除自己”,则应该进行一些额外的确认。

我添加了一个粗略的序列图,以给人一种视觉印象,它可能是什么样子。

问: 你认为这个概念在没有大的性能问题的情况下是可以实现的,你认为安全性可以保持吗?在此处输入图像描述

更新:也许“社交网络”并不是一个真正的名称,我希望它成为一个具有安全第一心态的平台,并试图在解密数据方面智取甚至类似 NSA 的组织(这需要非常小心用钥匙而不是与所有朋友分享)。

3个回答

第一个通用评论是,当您将密钥交给朋友时,您无法阻止该“朋友”将相同的密钥发送给其他人,或者喋喋不休地谈论您的半私人信息。从这个意义上说,加密无法在“keyF”和“keyA”之间做出有用的区分。在安全环境中,只有两类信息:您不告诉任何人的信息,以及您至少告诉一个人的信息。由于在任何服务器上上传前者都是毫无意义的,我们可以说,在社交网络中,只有一种信息是要共享的。而且您无法真正控制某些数据的共享范围。

这并不新鲜。通过八卦传播秘密是一个众所周知的现象,并且可能与语言本身一样古老。

但是,您可以尝试在朋友“受信任”的设置中工作,即他们会保守秘密(如果一组朋友包括三个以上的人,我强烈怀疑这种情况是否可行,但是,嘿,总是可以希望的)。在这种情况下,您确实可以通过向这些选定的少数人透露加密数据的密钥来共享数据。这需要第二个重要的评论:你不能强迫健忘。

这意味着如果你想“删除”一个朋友,那么你不能让他“忘记”之前共享的密钥。唯一的方法是创建一个新密钥,与您剩余的朋友共享,然后仅使用新密钥加密您的数据。这意味着从您的朋友集中删除人员意味着分配开销与剩余朋友的数量成正比。这可能会导致可伸缩性问题。


有点不清楚您要防止什么。服务器运营商?搜索引擎 ?你的朋友们 ?也许是流量分析(即重建友谊图)?这应该非常精确地定义。只有知道我们想要达到什么样的安全属性,才能分析任何协议算法的适用性。

我仍然敦促您考虑上面的一般评论。它们可以概括为:数据传播难以控制。将社交网络视为公共数据的存储库使事情变得更简单:您在此类网络上编写的所有内容都可能公开或足够接近。

安全性只有在您信任朋友不分享时才有效。像这样的分布式系统之前已经被考虑过,但采用是一个挑战。您实际上确实希望在多个服务器之间复制信息,以便您拥有冗余并可以跟踪它所在位置的图表。

另一个替代的想法是你可以给每个用户一个公钥/私钥对。然后,您可以将数据键与您想要为其分组权限的任何数据元素进行分类关联。

您可以通过为该组创建公钥/私钥对并使用组中每个成员的公钥加密私钥来创建朋友组。然后,您可以使用要授予访问权限的组或一组朋友的公钥对您想要共享的任何信息的数据密钥进行加密。

您还可以决定信任服务器来处理密钥管理或最终用户。如果您愿意信任服务器,您可以保护密钥,使用户永远无法访问组私钥或数据元素密钥,因此他们无法将其共享给其他人,这需要相信服务器不会'虽然在运行时行为不端。(离线攻击仍然受到保护,因为服务器从来没有离线使用任何用户的私钥所需的信息。)

另一方面,如果您在本地执行此操作,则任何有权访问的人都可以使用私钥和数据密钥,并且每次您想要删除他们的访问权限时,如果不重新加密某人有权访问的所有内容,就无法撤销(这可能会很昂贵.) 然后,您将为仍然应该有权访问的每个人重新加密新的数据密钥或组密钥对。

看看这个:
https ://joindiaspora.com/
https://github.com/diaspora/diaspora

Diaspora 使用公钥和私钥来加密内容和通信。它也是去中心化的。

你不必重新发明轮子;P