Simperium 中用于添加数据加密的插入点在哪里?

Where are the insert points in Simperium for adding data encryption?

我就是喜欢 SimpleNote。

但是,我不喜欢我的数据在某处服务器上未加密。我理解为什么默认情况下不是这种情况(尤其是对于 SimpleNote),但如果我愿意,我希望可以选择加密我的数据。

我正考虑在我自己的分支上向 Simperium 客户端库添加 (optional/configurable) 加密,但我很难找到 encrypt/decrypt 例程的插入点。这些库做了很多差异化(我敢肯定,这对速度有好处),但我无法找到任何关于模型或数据流的文档。

所以,我想知道:

  1. 有人已经在解决这个问题了吗? (我在 Simperium 或 SimpleNote 网站上找不到路线图。)
  2. 是否有关于代码编写方式的任何实际文档(model/relation 图表或流程图)?
  3. 插入加密货币的最佳位置在哪里? (我打算从 Android 客户端开始。)
  4. 什么是 "Ghost"?

希望你做的不仅仅是伟大!

  1. 恐怕加密不是我们团队目前正在研究的问题。

  2. 虽然 class 图表并没有真正上传到任何地方,但有几个自动生成工具,例如 https://www.visual-paradigm.com/solution/freeumltool/,可以为您动态呈现。

  3. 见下文!

  4. Simperium 的工作方式非常有趣。本地数据库实体在我们称为 Ghost.

    的字段中保留了一份 最后已知远程状态 的副本

    每当执行本地更改时,库将计算最后已知的远程状态AKA Ghost)和本地状态。此更改已入队,并在可能的情况下发送。

    现在,这就是它变得更加棘手的地方。后端被视为规范存储库 // Master,客户端实际执行 Change Requests。接受或拒绝更改取决于后端。

    这在某种意义上类似于 GIT 的工作方式。如果您尝试推送本地更改,在远程分支发生分歧后,您将收到错误消息,并且需要进行变基/合并。

    按照设计,恐怕 Simperium 的后端需要能够将客户端发布的差异应用到它的本地数据库中。实施加密需要重新考虑 protocol works 的方式,并修补后端。

如果您想进一步讨论这个问题,请随时直接通过 jorge.perez (at) automattic -dot- com 给我发邮件,或者在 WordPress.org Slack 上找我。非常乐意带您了解架构。

感谢您对 Simperium / Simplenote 的关注!