异地托管密钥:加密磁盘的服务器怎样做到无人值守重启
来源:jmmv.dev — 2026-11-07
📋 概述
家用 NAS 的经典两难:把密钥写成本地文件,磁盘加密就形同虚设;不写,就每次重启都要人工输密码。Julio Merino 的解法是把口令托管到异地:ZKeys 是一个托管服务,客户端机器从服务取回密钥并靠周期性心跳让密钥保持「解锁」状态;一旦服务长时间收不到心跳(比如机器被整台搬走、断了电),密钥自动上锁。这样既保住了自动、无密码重启,也覆盖了真实的失窃场景——而不是指望主人发现失窃后手动去吊销。
🔑 核心要点
- 威胁模型很具体:小偷进门把整个盒子搬走,插到别处就能读盘,而「发现后在远程删密钥」的时间窗可能长达一个假期。
- 设计上把「人在不在」变成可观测信号:心跳停止足够久即自动上锁,不需要人工介入。
- CLI 是 Rust,但必须配一堆 shell 脚本去接 FreeBSD 的 rc.d 与 Fedora 的 systemd/dracut,这部分最难自动化验证,所以只支持作者日常用的两个系统。
- 服务跑两个不复制实例(美西、欧西),前端是 2010 年代的 Bootstrap,管理页是 SPA——这样任何客户端能做后台所有事,API 与前端彻底分离。
- 接口设计与 systemd、ZFS 原生机制对齐:FreeBSD 侧的 rc.d 脚本就是自动挂载加密 ZFS pool 的延伸。
💡 金句
你既得到了自动的、无密码的重启,又让数据在真实事故中保持受保护。
👍 0
👎 0
← 返回 Lobsters 首页