使用Realm移动平台可以端到端加密



在客户端设备上,可以使用用户独特的加密密钥设置同步范围,并存储在设备键链上,因此数据存储在客户端上。(相关问题:"可以加密境界移动平台中的retation"数据?)

Realm Object Server和客户端可以通过TLS通信,因此数据已在运输中加密。

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

是否可以设置领域移动平台,因此用户数据是端到端加密的,例如,除了用户(甚至服务器管理员)都可以访问解密密钥吗?

由于我们处理冲突解决方案的方式,我们目前无法根据您正确推导端到端加密。关于解决冲突,让我们详细介绍一下。

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

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

这样说,这是针对当前版本的。我们对将来如何处理(某种程度)加密有很多想法。这主要意味着对客户端的更多工作,也许会找到一种新算法,该算法使我们能够告诉客户意图,并让客户弄清楚如何合并所有内容。不过,这是一个二次问题,因此我们不愿在客户端投入太多工作,因为它确实会耗尽电池。

对于某些用户来说可能是可以接受的,这就是为什么我们正在研究它。基本上,将进行权衡。随着古老的格言,快速,安全,方便:选择两个。我们只需要弄清楚如何正确处理此操作。

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

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