社区控制的备份仪式
Posted on 2023-07-15 by
七位核心贡献者和一位委员会成员在苏格兰,F-Droid 的诞生地,相聚参加第一次 F-Droid 团队线下会议。我们需要处理的最紧迫的任务之一是设置一个由贡献者控制的我们所有签名密钥的备份。冗长,面对面,由共识驱动的计划过程对于这个需求是必要的。我们没有找到关于这个流程的比较好的文档,因此我们冒昧发布了我们的流程的大致框架。在公钥被用于加密之前,这个流程经过了多个具有不同专业技能的人的非正式审计。
F-Droid 管理数以千计应用的签名密钥。掌控这些密钥的人可以发布恶意版本并作为更新透明安装。更重要的是,与 TLS 或 Signal 不同,Android 并未提供容易的轮转密钥的方法。因此保护这些密钥非常重要。备份也很重要,因为 Android 操作系统使用签名密钥和应用 ID 作为表示每个已安装应用的唯一标识符。这次会面给了我们一个完美的机会,使我们可以创建一个新的备份流程,确保至少有 4 位受信任的社区成员亲自出席以解密所有密钥的备份。首先,我们从以下要求开始:
- 添加新密钥时定期备份。
- 对所有备份进行高强度,已证明的加密。
- 解密需要最少四名参与者。
- 参与不需要特殊技术经验。
- 各部分物理分散到不同的司法管辖区。
- 访问权限最小化(例如,签名服务器的维护者不需要备份的访问权限)。
- 每个参与者的压力尽可能小。
- 每个参与者如果不得不交出他们保管的组件,加密不会受到影响。
然后出席的人如下:
- 七名核心贡献者。
- 一位委员会成员。
- 一位受信任的外部观察员。
- 没有其他人。
基于此,我们构建了如下流程:
- 物理控制的三个角色:签名服务器管理员,加密备份持有者,密码片段持有者。
- 每个人只承担其中一个角色,例如,片段持有者不能访问签名密钥或加密备份。
- 数据的加密密钥是公钥加密。
- 私钥在一个一次性,内存中运行的 TAILS 会话中生成。
- 私钥使用 Shamir’s Secret Sharing 进行分片。
- 我们使用一个已经维护了 15 年的 Shamir’s Secret Sharing 实现。使用的安装通过可重复构建确认。
- 每个片段写入在商店使用现金购买未登记或预订的便携存储设备上。
- 每个写入密码片段的便携存储设备在其他人见证下装在防篡改信封中当面交给片段持有者。
- 备份严禁通过互联网传输,仅能在相互认识的人的面对面会议中交换。
- 所有参与者在仪式期间坐在一张桌子旁。管理面对面讨论的安全配置比安全的线上讨论容易得多。
- 所有出席的人都是每个过程的观察者,并口头表示同意。
- 签名服务器的管理员和备份数据的持有者通过 F-Droid 网络,PGP 信任网络和检查政府签署的身份标识验证彼此的身份。
- 需要至少来自两个司法管辖区的片段才能解密:欧盟,欧洲非欧盟地区,美国。
可靠备份的一个重要因素是定期更新。新应用不断添加,并且通常会分配新签名密钥。所以我们需要一个可以轻易更新备份数据但涉及尽可能少的人的系统。一名签名服务器管理员面对面收到加密备份的公钥。备份数据的持有者面对面从签名服务器管理员收到加密的备份。
持有如此重要的秘密也给持有它们的人带来了不可避免的压力。一个关键设计目标是插件一个不给任何现存管理员增加压力的协议。进一步,我们致力于使协议中每个角色的个人压力尽可能低。这使得给志愿贡献者赋权而不增加过重的负担成为可能。
我们同意应当在面对面会议中恢复备份。这个过程要求三位片段持有者和一位加密备份持有者会面,然后将数据交给签名服务器管理员。要求面对面会议会推迟恢复过程,但相比增加的信任是值得的。因此这是默认流程。如果有需要我们仍然可以切换到部分线上流程。这将需要五位参与者的同意。
我们相信对于非常敏感的数据这是一个安全可靠的备份程序。我们欢迎进一步的仔细审查并计划在未来的会议中按需更新这个程序。
(这场会议由 FFDW-DVD 款项提供资金.)