同态加密的冲突自由数据类型(CRDTs)
Hacker News 摘要原标题:Homomorphically Encrypting CRDTs
这篇文章讨论了如何对冲突自由数据类型(CRDTs)进行同态加密,以支持远程协作时的文档编辑,并确保内容的机密性。文章开头提出了一个本地优先软件的挑战:当与远方的朋友共同编辑一个文档时,担心文档内容的安全性。为了解决这个问题,作者介绍了同态加密的概念,这种加密方式允许在不解密数据的情况下对加密数据进行操作。
在讨论同态加密的工作原理时,文章引用了一个简单的代码示例,展示了如何通过同态加密库(THFE-rs)来实现加密和解密过程。文章介绍了同态加密具有的加法和乘法特性,并解释了不同类型的同态加密,包括部分同态加密、基本同态加密和完全同态加密。
接下来,文章介绍了构建一个同态加密的“最后写入胜出”寄存器(last write wins register)的过程。该寄存器存储一个值及其相关的元数据,包括一个“时钟”,该时钟在值被设置时递增,以及最后写入该值的对等体的ID。合并算法的基本逻辑包括:如果接收到的时钟小于本地时钟,则不更改寄存器;如果时钟相等,则比较对等体ID。此外,代码示例展示了如何实现一个未加密的“最后写入胜出”寄存器,并给出了相应的同态加密版本结构体的草图。
在实现合并函数时,文章指出由于加密限制,通常不能利用比较操作(如大于)直接判断,而必须使用同态加密的布尔操作符。合并过程中,所有逻辑都必须对最坏情况进行评估,确保不泄露任何信息。最终的合并逻辑使用加密布尔值完成条件判断,确保在合并过程中不会暴露任何关于明文值的关系。
但是,文章也详细论述了同态加密在实际应用中的固有限制,包括生成的密钥和加密数据大小之间的巨大差异,以及运行性能严重低下,例如,加密后的合并操作的时间比未加密版本慢了近2亿倍。此外,由于代码必须始终假设最坏情况,这使得合并和存储操作的计算需求更高。
最后,作者总结了在本地优先软件与同态加密结合时面临的挑战,并指出尽管同态加密的CRDTs可能有潜力,但其固有的限制增加了实现和性能方面的复杂性。文章呼吁对安全本地优先应用进行进一步研究,并提到了一些相关的研究和项目,例如结合安全组消息协议与CRDTs的尝试。通过探讨这些问题,作者表达了对未来解决方案的期待。
原文:https://jakelazaroff.com/words/homomorphically-encrypted-crdts/