【问题标题】:Is end-to-end encryption possible with Realm Mobile Platform?Realm 移动平台可以实现端到端加密吗?
【发布时间】:2016-12-29 17:19:48
【问题描述】:

在客户端设备上,可以使用用户唯一的加密密钥设置同步的 Realm,并存储在设备钥匙串上,因此数据在客户端上以加密方式存储。 (相关问题:Can "data at rest" in the Realm Mobile Platform be encrypted?

Realm Object Server 和客户端可以通过 TLS 进行通信,因此数据在传输过程中被加密。

但是领域对象服务器似乎没有使用加密存储数据,因为管理员用户能够通过领域浏览器 (https://realm.io/docs/realm-object-server/#data-browser) 访问所有数据库内容。

是否可以设置 Realm 移动平台,以便对用户数据进行端到端加密,例如除了用户(甚至服务器管理员)之外没有人可以访问解密密钥?

【问题讨论】:

  • 端到端加密和静态加密是有区别的。想想你的 Whatsapp 聊天:有 e2e 加密,聊天的两个部分仍然能够看到内容。如果您不希望服务器管理员访问您的数据,则应在离开设备之前在设备上对数据进行加密。这样,加密密钥将保留在设备上,数据将无法在服务器上使用。
  • 看来实现这一点的唯一方法是使用存储在设备钥匙串上的密钥手动加密我的领域模型中的所有字段?但这会破坏 Realm 移动平台的“同步”功能,除非我还可以在用户设备之间同步该加密密钥(使用 iCloud 钥匙串等第 3 方安全同步机制)。或许可行,但不太实用。
  • 这取决于您存储的数据类型。如果您在用户之间进行聊天,那么 e2e 加密是有意义的。在任何其他情况下,我认为您的提议可以使用设备上的密码加密数据,并且当在另一台设备上需要时,需要相同的密码才能对其进行解密。我不知道这是否可扩展。无论如何,这是加密笔记在 Evernote 上的工作方式(我不再是 Evernote 用户了。)检查你的选项。你必须做出选择。
  • 谢谢。数据类似于笔记,我希望在同一用户的多个设备之间实现“无缝”(无登录名或密码)同步,尽管稍后可能会添加 p2p 共享。我只是不想承担访问用户私人数据的负担/责任。由于它是一个仅限 iOS 的应用程序,我考虑将 CloudKit 作为后端来避免这个问题,但还没有找到在 CloudKit 和 Realm 之间进行同步的好的解决方案,并且滚动我自己的同步系统目前超出了范围。因此,我希望使用 RMP 之类的插入式系统,同时还能让我免于隐私问题。
  • 更新:解决冲突没有问题;我们正在努力整合。如果您想注册提前预览,请联系我。大卫/ZeroKit 团队

标签: encryption realm realm-mobile-platform


【解决方案1】:

由于我们处理冲突解决的方式,我们目前无法提供端到端加密,正如您正确推断的那样。让我们稍微详细介绍一下冲突解决方案。

为了以我们的方式处理冲突,我们使用了名为 operational transformation 的东西。这意味着客户端不是直接发送数据,而是告诉服务器更改的意图,而不是结果。例如,当两个用户编辑一个文本字段时,我们会告诉服务器 insert(data='new text', offset=0) 因为第一个用户在文本字段的开头添加了数据,而insert(data='some more stuff', offset=10) 因为第二个用户在字段中间添加了数据。这两个独立的操作允许服务器唯一地解决发生的事情,并且两个写入的解决方案没有冲突。

这也意味着,如果我们加密所有内容,服务器将无法处理这种冲突解决方案。

话虽如此,这是针对当前版本的。对于未来如何处理这个问题,我们确实有很多想法,同时提供(某种程度的)加密。主要是这意味着客户端需要做更多的工作,也许会找到一种新算法,让我们可以告诉客户端意图,让客户端弄清楚如何合并所有内容。不过,这是一个二次问题,因此我们不愿在客户端上投入过多的工作,因为这确实会耗尽电池电量。

这对于某些用户来说可能是可以接受的,这就是我们正在研究它的原因。基本上,会有一个取舍。正如古老的格言所说:快速、安全、方便:选择两个。我们只需要弄清楚如何正确处理这个问题。

【讨论】:

    【解决方案2】:

    我刚刚打开了一个功能请求,可能使用 Tresorit 的 ZeroKit 来解决提出的端到端加密问题。听起来冲突解决实施仍然会引起问题,但也许有一个不同的冲突解决级别可以应用于那些不需要实时动态编辑单个数据字段(如患者健康数据,其中只有一个单个临床医生在任何给定时间都真正编辑过记录)。

    https://github.com/realm/realm-mobile-platform/issues/96

    【讨论】:

      猜你喜欢
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多