Meshline
简体中文规范下载 Markdown 原文

中文为规范基准;英文为维护译本。

群组托管协议

客户端—中继协议

群组托管是客户端—中继协议的可选模块。群由用户创建并选择一个固定中继托管;客户端直接连接该中继,群组操作不经过账户路由 DHT 或中继 RPC。提供该能力的中继必须完整实现本模块,并在有效 RelayDescriptor 中声明 group.host.v1 能力。

作用与信任边界

托管中继验证设备、成员和角色,维护当前群状态,为事件和密钥版本排序,并向有权访问的设备分发中继秘密。当前成员共同持有客户端群秘密。群消息密钥必须同时由客户端秘密和中继秘密导出,因此中继单独不能解密群消息。

客户端通过永久保留的管理链验证成员和公钥。成员列表由客户端本地重建;封装秘密前必须完成管理验证。

中继与持有客户端秘密的一方串谋时可能解密相应消息;本协议不声明前向保密或入侵后安全性质。串谋、秘密泄露及秘密轮换的详细限制见安全边界。

协议内容

概念与核心对象

部分 内容
群组模型与密钥 固定托管、角色、分离秘密、承诺、密钥盒和群应用秘密派生
成员资格与访问控制 邀请、申请、成员变化、成员密钥重置、设备访问区间
群组时间线与同步 群时间线、数据保留与访问、首次加载与断线恢复
账户内群状态与秘密同步 同账户设备之间的群私有状态请求、成员私钥及历史群应用秘密同步
群消息与加密 信封、消息密钥派生与加解密、群消息业务对象、昵称更新
核心对象 群 ID、GroupState、GroupEvent 和管理链

方法与通知

部分 内容
方法公共约定 传输、授权、签名、列表分页、校验和错误
生命周期与同步方法 创建、状态查询、事件同步和关闭
准入方法 邀请、入群申请与审批
属性与角色管理方法 群属性、角色和所有权转让
成员与封禁管理方法 退出、移除、封禁与解除封禁
成员密钥重置方法 重置请求的提交、列表、批准与拒绝
密钥方法 密钥同步与客户端秘密轮换
消息方法 群消息发送与幂等重试
订阅方法 群订阅集合替换、订阅上限、访问权限校验与订阅后同步
通知 事件、申请和成员密钥重置列表变化提示

方法索引

以下方法均使用设备会话。

方法 HTTP WebSocket
group.create POST JSON-RPC
group.resolve GET JSON-RPC
group.sync GET JSON-RPC
group.close DELETE JSON-RPC
group.invite.create POST JSON-RPC
group.invite.resolve GET JSON-RPC
group.invite.list GET JSON-RPC
group.invite.revoke DELETE JSON-RPC
group.application.submit POST JSON-RPC
group.application.list GET JSON-RPC
group.application.approve POST JSON-RPC
group.application.reject DELETE JSON-RPC
group.update PATCH JSON-RPC
group.role.update PUT JSON-RPC
group.owner.transfer POST JSON-RPC
group.member.leave DELETE JSON-RPC
group.member.remove DELETE JSON-RPC
group.member.ban PUT JSON-RPC
group.member.unban DELETE JSON-RPC
group.member.recovery.submit POST JSON-RPC
group.member.recovery.list GET JSON-RPC
group.member.recovery.approve POST JSON-RPC
group.member.recovery.reject DELETE JSON-RPC
group.key.sync GET JSON-RPC
group.secret.rotation.prepare PATCH JSON-RPC
group.secret.rotation.commit POST JSON-RPC
group.message.send POST JSON-RPC
group.subscribe N/A JSON-RPC

HTTP/WSS 映射和错误遵循群组方法公共约定。

通知索引

通知封装遵循客户端—中继通知约定。

一致性要求

兼容实现须遵循一致性测试边界及客户端方法公共约定,并覆盖:

  • 请求与提交:按群方法公共约定验证完整请求、设备签名与账户绑定、批准者独立验签、字段与资源边界、HTTP/WSS 错误映射及错误披露边界;并发和故障不得留下部分状态、事件、密钥、访问区间或邀请计数。
  • 管理状态:按管理链和成员资格与访问控制验证创建、属性与角色更新、转让、离群、移除、封禁/解除封禁、容量限制与成员投影;覆盖同值更新、旧链头重放、未知管理类型及管理验证失败后的暂停。
  • 邀请与审批:按准入方法和成员密钥重置方法验证邀请分享、查看及使用权限、申请重试与替换、成员密钥重置、到期和连带删除;列表分页须覆盖游标、空页、列表与权限变化、未变化列表的完整遍历,以及列表结果不能替代提交时的当前状态检查。
  • 秘密与轮换:按密钥模型及密钥方法验证分离秘密、承诺、两类密钥盒与派生结果、两阶段客户端轮换和中继轮换;覆盖分批与替换、迟到重试、期限不刷新、成员变化、完整覆盖、owner 换钥,以及候选材料经验证后启用。
  • 密钥与私有状态恢复:按账户内群状态与秘密同步和 group.key.sync 验证材料独立到达时的暂存、按已验证历史选择私钥和确认版本、历史盒与当前盒的恢复、跨页及相邻条目的盒省略规则;缺失历史密钥不阻塞管理验证和当前版本恢复。
  • 事件与访问:按设备访问区间及 group.sync 验证新设备入口、边界与多段区间、管理事件和消息的不同可见范围、非连续序号及密钥版本、消息认证与管理链重建;快照、通知和私有材料不能推进已验证状态或同步位置。
  • 消息与昵称:按群消息与加密和幂等重试验证完整信封、随机 nonce、AAD、当前权限、结果保留、正文与附件、回复引用,以及加密昵称的本地排序、清除和重新入群边界;业务明文错误与管理事件错误分别处理。
  • 订阅与通知:按订阅方法和群组通知验证集合替换、清空、上限调低、失败明细、设备访问区间保持;覆盖事件提示合并、无版本列表刷新,以及请求到期或删除后的通知。
  • 保留与关闭:按数据保留与访问规则及 group.close 验证消息与旧密钥裁剪、当前密钥恢复、管理事件及验签证书永久保留和不可逆关闭;关闭后不保证读取服务或消息、密钥保留。