【发布时间】: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