Keyhive:本地优先访问控制
项目概述
Keyhive是一个探索本地优先访问控制的项目,旨在为安全协作提供坚实基础,类似于私密聊天的保证机制,但适用于任何本地优先应用程序。
技术架构
00 · 背景与挑战
随着本地优先生态系统的成熟,应用程序场景不断扩展。本地优先强调协作,但不同应用场景的约束条件各不相同。从策划惊喜派对到企业会议记录,从书籍草稿到法律合同,数据不被全世界查看或编辑是基本需求。
当前最常见的访问控制模式依赖中央服务器。虽然云认证工具不断发展,但现有的云认证工具已非常成熟。在没有云认证服务器的情况下进行访问控制需要重新思考认证机制的基础原理。
核心组件
收敛能力(Convergent Capabilities)
- 适用于CRDT的新能力模型
- 位于对象能力和证书能力之间
- 提供无状态自认证和加密证明
群组管理CRDT
- 自认证的并发群组管理
- 支持无协调撤销
- 基于能力委托构建
端到端加密与因果密钥
- 具有后妥协安全性(PCS)
- 对称密钥管理授予对因果前驱的访问权限
- 基于文档因果结构管理E2EE密钥
技术实现
BeeKEM:群组密钥协议
BeeKEM是Keyhive的连续群组密钥协议协议,专为分布式本地优先应用程序设计:
核心特性
- 无需中央服务器,仅需因果操作顺序
- 对数性能(最坏情况下线性)
- 提供前向安全性和后妥协安全性
- 基于标准加密原语(Diffie-Hellman密钥交换和BLAKE3哈希)
树结构设计
- 二叉树叶节点对应群组成员
- 根节点存储加密的群组密钥
- 成员通过路径遍历解密根密钥
- 支持成员动态添加、删除和密钥更新
同步协议(Beelay)
Beelay是专为Keyhive设计的RPC同步协议:
认证机制
- 基于Ed25519密钥的消息签名
- 受众字段防止中间人攻击
- 时间戳机制防止重放攻击
多层同步
- 成员关系图同步:使用RIBLT集合协调协议
- 文档集合同步:同步文档状态和CGKA操作
- 文档内容同步:使用沉积树(sedimentree)结构高效同步加密内容
性能目标
Keyhive旨在高效处理:
- 数万个文档
- 数百万读者
- 数千名写作者
- 数百名管理员/超级用户
应用场景
- 发布系统:公开可见数据与受限编辑(如博客)
- 惊喜派对策划:小团体,低风险
- 会议记录:中小团体,中低风险
- 企业法律文件:中大团体,中高风险
- 记者与活动家:中小团体,高风险
设计原则
Keyhive遵循本地优先原则:
- 支持网络分区下的操作
- 无需中央权威机构
- 保持用户代理和自认证特性
- 在分布式环境中处理并发变更
该项目代表了本地优先应用程序访问控制的重要进展,为安全协作提供了新的技术基础。