Ente Locker 使用指南:端到端加密的家庭重要信息保险库与数字遗产继承方案
Ente Locker 是 ente 开源仓库中面向家庭与个人用户的一款端到端加密文档保险库应用,用于集中存储护照、财务记录、账户凭据、医疗档案等敏感信息,并提供信任联系人(Trusted Contacts)与 Legacy Kits 两套数字遗产继承机制。本文以 docs/docs/locker/index.md 为主线,结合仓库内移动端应用(mobile/apps/locker)、Rust 核心实现(rust/crates/legacy)与服务端接口(server/ente/legacy_kit.go)源码,完整讲解安装、注册、首件物品、家庭共享、Legacy 恢复与底层加密原理,读完即可上手部署一套面向全家的安全档案体系。
什么是 Ente Locker
Ente Locker 是 ente 提供的一个私密空间,用于存储、共享和传承你最重要的数字信息。它的核心承诺与 Ente Photos、Ente Auth 一致:端到端加密(End-to-End Encrypted),Ente 服务器永远无法看到你的数据。
从仓库结构看,Locker 是一个独立的 Flutter 应用(mobile/apps/locker/lib),同时拥有 Web 端(web/apps/locker)、服务端支持(server/ente/legacy_kit.go、server/ente/kex.go)以及跨语言加密核心(rust/bindings/frb、rust/bindings/wasm/legacy)。
官方说明 Locker 提供 iOS、Android 与 Web(locker.ente.com)三个平台,目前尚未提供原生桌面应用,这一点在 安装文档 中有明确说明。
该往 Locker 里放什么
官方文档建议将家庭关键信息从“文件柜”或“云盘”升级到 Locker 中,典型场景包括:
- 身份证明文件:护照、身份证、驾照、出生证明
- 财务记录:纳税申报单、对账单、合同、保险单
- 账户凭据:你最不能丢失的重要账号信息
- 医疗记录:保险卡、疫苗接种记录、处方
- 实体文件位置登记:记录重要纸质文件的存放位置
核心特性总览
Legacy:确保家人能取回账户
Legacy 是 Locker 最具差异化的能力。官方文档明确强调:“No other encrypted storage app offers this.”(没有任何其他加密存储应用提供这一功能)。它解决的是“如果我不在了,家人如何取回我的加密账户”这一数字遗产难题,同时通过等待期(waiting period)与阻断机制防止未授权恢复。
Legacy 提供两种恢复途径:
- 信任联系人(Trusted Contacts):指定另一位 Ente 用户,等待期后可代为恢复账户;
- Legacy Kits(实体恢复套件):生成 3 张实体恢复纸,任意 2 张即可在浏览器中发起恢复,协助者无需 Ente 账号。
两者都是账户级恢复工具,不是物品共享、集合共享或直接登录,这一点在 Legacy 文档 中有专门强调。
端到端加密
Locker 的所有数据在离开设备前完成加密,与 Ente Photos、Ente Auth 使用同一套加密体系。具体技术栈在 加密文档 中列明:XChaCha20 / XSalsa20 加密 + Poly1305 MAC 认证 + Argon2id 密钥派生,底层由 libsodium 实现。
集合与组织(Collections)
物品可归属于多个集合,方便按自己的习惯多维度归类,例如同一张护照扫描件可以同时出现在“身份证明”和“家庭文档”两个集合中。
安全共享(Secure Sharing)
- 与其他 Ente 用户共享整个集合(注意:共享的粒度是集合而非单件物品);
- 为单个物品或集合创建公开链接,任何人在浏览器中即可查看。
完全开源
Locker 与 ente 其他产品一样完全开源,任何人都可以审计其代码来验证安全声明。仓库内即可查看其 Flutter 客户端、Rust 加密核心与服务端实现。
Locker 与其他工具的定位分工
官方文档给出的分工建议非常清晰,Locker 是“补充”而非“取代”你现有的工具链:
| 工具 | 用途 | Locker 的角色 |
|---|---|---|
| 密码管理器 | 日常账号与每日登录 | 存放最关键的账号(网银、主邮箱等),以防丢失访问权 |
| Ente Photos | 照片回忆 | 存放敏感文档扫描件(护照、税单) |
| Ente Auth | TOTP 2FA 动态码 | 存放 2FA 备份码与恢复码 |
| 云盘 | 日常文件 | 存放不想被云服务商扫描的敏感文档 |
价格与配额
- 免费版:最多 100 件物品 + 1GB 总存储
- 付费版(任一 Ente 订阅):最多 1000 件物品 + 10GB 总存储
注意两个细节:
- Locker 的付费配额随任意 Ente Photos 订阅附带;
- Locker 存储与 Photos 存储是相互独立的。
从 注册文档 看,“物品”的计数口径为:每份上传文档(PDF、图片、扫描件)、每条个人笔记、每组账户凭据、每条实体档案登记各算 1 件。当前用量可在 Settings > Storage 中查看。
面向谁
- 家庭:组织重要文档,并确保意外情况下仍可访问;
- 个人:需要一个存放敏感信息的安全空间;
- 任何重视隐私、不希望云服务商扫描其文档的人。
快速上手:安装与注册
安装
安装方式在 installation.md 中说明:
- iOS/iPadOS:App Store 安装(应用 ID:ente-locker,ID 为 6747611956)
- Android:Play Store(包名
io.ente.locker)、F-Droid(io.ente.locker.fdroid)或 GitHub Releases 直接下载 APK;直接从 GitHub 安装 APK 时,建议核对 APK 签名验证文档 - Web:浏览器直接访问 locker.ente.com;旧的
locker.ente.io地址会重定向到新域名,原有账号与密码继续可用
注册与登录
Locker 复用 Ente Photos / Ente Auth 的同一套账号体系(signup.md):
- 打开 Locker,点 Create account;
- 输入邮箱、设置强密码;
- 通过邮件验证码验证邮箱;
- 务必保存恢复密钥(Recovery Key)——它是忘记密码后找回账户的主要途径,官方以 WARNING 级别提示:将恢复密钥存储在多个安全位置,并建议配置 Legacy 以便他人代为恢复。
恢复密钥是注册时生成的 24 个单词的短语。最佳实践:存入密码管理器、手写并存放在安全位置、多处留副本、绝不分享给任何人。
已有 Ente 账号的用户直接 Sign in 输入邮箱密码(如开启 2FA 再输入动态码)即可,Locker 数据与 Photos 数据相互隔离存储。
创建你的第一件物品
创建流程详见 first-document.md:点击底部 + 按钮,选择四种物品类型:
- Document(文档):上传 PDF、图片、扫描件
- Note(笔记):自由文本
- Secret(凭据):用户名与密码
- Thing(实体):登记实体文件的存放位置
以“上传文档”为例:选 Document → 从设备选择文件 → 填写描述性标题(如 "Passport Scan")→ 不选集合则归入 Uncategorized,或选择一个/多个集合 → Save。
“添加 Secret”则填写 Name / Username / Password / Notes 四个字段后保存。
集合是 Locker 的组织与权限边界:物品可属于多个集合,创建时即可勾选;未分类物品后续可再归类。首页支持按标题搜索和按集合浏览。
家庭部署:六步搭建指南
family-setup.md 给出了完整的分步方案,核心是每人一个独立账号 + 共享集合 + 私有集合 + Legacy 恢复:
第一步:为每位家庭成员建账号
- 方案 A(免费账号):每人独立注册免费账号,各自获得 100 件/1GB 配额;务必帮家人保存恢复密钥,并在
Settings > Security中启用锁屏保护。 - 方案 B(Ente 家庭计划):已有 Ente Photos 订阅时,通过
Settings > Subscription > Manage family邀请成员(该功能在 Photos 中管理,详见 family-plans 文档)。家庭成员共享 Photos 存储配额,并各自获得 Locker 的 1000 件/10GB 配额。建议将子女的恢复密钥以安全笔记形式存放在父母账号中。
第二步:规划集合结构
官方推荐的典型结构:
- 共享集合:Family Documents(出生证、结婚证)、Medical(保险卡、疫苗记录)、Home(房产、按揭)、Vehicles(车辆登记)、Emergency Info(紧急联系人)
- 个人集合:Personal IDs(护照、驾照、社保)、Financial(银行、信用卡)、Work(工作档案)、Passwords(个人凭据)
第三步:数字化并上传重要文档
使用手机相机或扫描应用生成清晰的图片/PDF,按“文件类型 → 描述性标题(如 'John Passport - Expires 2028')→ 归入集合 → 保存”的流程上传。官方清单覆盖身份、财务、医疗、法律四类关键文档(遗嘱、授权书、信托文件、地契等)。
第四步:与家人共享集合
在 Locker 中共享的是集合而非单件物品:打开集合 → 点共享按钮 → 选 Share with Ente user → 输入家人的 Ente 邮箱 → 确认共享。共享后该集合内全部物品对对方可见。单个物品的分享则通过 公开链接 实现。
推荐矩阵(摘自官方文档):
| 集合 | 共享对象 |
|---|---|
| Family Documents | 所有家庭成员 |
| Medical | 所有家庭成员 |
| Home | 成年人 |
| Vehicles | 成年人 |
| Emergency Info | 所有家庭成员 |
| Kids' Documents | 父母 |
第五步:配置 Legacy 账户恢复
- 信任联系人:夫妻互为联系人、父母添加成年子女、子女添加父母或兄弟姐妹;
- Legacy Kits:面向遗产继承规划,将 3 张恢复纸存放在彼此独立的信任位置。
第六步:创建紧急信息笔记
以 Personal Note 形式整理一份“家庭紧急信息”文档,内容涵盖紧急联系人、保险信息、医疗信息、重要位置(保险箱/家中保险柜/文件存放处)与财务联系人,并与所有成年成员共享。官方还提供了可直接套用的模板(见 family-setup.md)。
最后用官方清单自检:每人有独立账号、恢复密钥安全存放、锁屏已启用、集合分类完成、关键文档已上传、相关集合已共享、Legacy 已配置、紧急信息笔记已创建并共享、家人知晓应急访问方式。
深入解析:Legacy 信任联系人恢复机制
信任联系人恢复流程(legacy/index.md):
- 添加一位或多位信任联系人;
- 对方接受邀请(对方必须已是 Ente 用户);
- 需要时,联系人发起账户恢复;
- 等待期内 Ente 通知你本人;
- 若你不阻断,联系人可通过恢复流程重置账户密码。
等待期选项:7 天 / 14 天 / 30 天(默认)。官方建议:希望快速恢复选短等待期;更重视防未授权恢复则保留默认 30 天。
移动端添加信任联系人路径:打开 Locker → Locker 菜单 → Legacy → Add Trusted Contact → 输入对方邮箱。对方需在自己的 Ente 应用的 Legacy 页面接受邀请。你的 Legacy 页面会同时展示“可恢复你账户的信任联系人”和“你作为信任联系人的账户(Legacy accounts)”两类列表;移除联系人只需打开该联系人并选 Remove。
阻断恢复:移动端进入 Legacy → 打开恢复警告 → 阻断该次恢复尝试。对信任联系人而言,阻断即终止该次恢复;对 Legacy Kit 而言,阻断仅终止当前激活的尝试,持 2 张纸的人仍可再次发起,除非删除整个 Kit。
深入解析:Legacy Kits 与 Shamir 2-of-3 秘密共享
Legacy Kits 是 ente 为账户继承定制的实体恢复方案(legacy-kits.md)。每个 Kit 生成 3 张恢复纸,任意 2 张即可发起账户恢复,单张不够;协助者不需要 Ente 账号,也无需安装任何应用。
创建 Legacy Kit(移动端)
- 打开 Locker → Locker 菜单 → Legacy → Legacy kits;
- 点 Create legacy kit;
- 为 3 张恢复纸命名;
- 选择恢复等待时间;
- 按提示完成身份认证;
- 下载、打印或分享恢复纸。
建议将 3 张纸分开存放:家中留一张、信任的家人处一张、律师或另一安全地点一张。
等待时间选项:Immediate(立即)/ 1 天 / 7 天(默认) / 15 天 / 30 天。等待时间在恢复发起时被“固化”,之后修改只影响未来的恢复尝试,且恢复进行中不能修改。立即恢复适合自我恢复,但几乎没有阻断未授权尝试的时间窗口;遗产继承场景建议长等待期。
恢复流程(Web 端)
- 打开恢复纸上印刷的恢复 URL(Ente Cloud 为 legacy.ente.com;自托管部署的 URL 以纸面为准);
- 添加同一 Kit 的任意 2 张纸;
- 按浏览器引导完成恢复流程;
- 等待恢复尝试就绪;
- 为账户设置新密码。
管理 Legacy Kit
移动端:Legacy → Legacy kits → 点选 Kit,可重新下载恢复纸、在无激活恢复时修改等待时间、删除 Kit、阻断激活中的恢复尝试。最多可同时存在 5 个未删除的 Kit,删除后不再计数。
阻断与删除
- Kit 恢复发起与完成时,Ente 都会发送邮件;但延迟恢复就绪时目前不会单独发邮件;
- Block recovery:取消当前激活的恢复尝试,Kit 仍可用;
- Delete kit:禁用这些恢复纸并阻断该 Kit 挂起的恢复尝试;
- 每个 Kit 同时只允许一个激活的恢复尝试。
源码级原理:客户端分割与重构
Legacy Kits 的数学基础是 Shamir 2-of-3 秘密共享,其实现位于 rust/crates/legacy/src/kit/shares.rs:
- 分割(
split_secret_2_of_3):将 32 字节的 Kit 秘密secret与随机斜率slope组合,对 x=1,2,3 计算share_i = secret<a href="https://link.gitcode.com/i/1c45e156dc97428609ed7d8fc6caea19" target="_blank">i] XOR gf_mul(slope, x),得到 3 份共享(见 [shares.rs#L110-L128); - 重构(
reconstruct_secret_2_of_3):取任意两份共享,先在 GF(256) 有限域上还原斜率再还原秘密,最后用 SHA-256 校验和验证恢复出的秘密与纸面校验一致(见 shares.rs#L130-L190); - 校验对(
validate_share_pair):要求两份共享来自同一 Kit(kit_id 相同)且索引不同(见 shares.rs#L86-L94)。
关键设计(文档与源码双重印证):
- 恢复纸不包含账户恢复密钥。纸面内容重建的是一个独立的 “kit secret”,它仅用于打开一个受限的恢复会话;
- 服务器永远看不到 kit secret、纸面内容或解密后的恢复密钥——Kit 秘钥派生(
derive_kit_encryption_key/derive_kit_auth_keypair,见 rust/crates/legacy/src/kit/mod.rs)全部在本地完成; - 恢复密钥只有在“足够的纸 + 等待期允许”后才在本地解密。
服务端侧,server/ente/legacy_kit.go 定义了完整的恢复会话状态机:WAITING → READY → BLOCKED / CANCELLED / RECOVERED(见 legacy_kit.go#L8-L14)。创建 Kit 时客户端提交 EncryptedRecoveryBlob(secretbox 加密的恢复密钥)、AuthPublicKey(由 kit secret 确定性派生的 X25519 公钥,用于会话鉴权)与 EncryptedOwnerBlob(持有者专属的纸面名称与载荷,服务端无法解读,见 legacy_kit.go#L20-L31)。
安全注意要点(摘自官方文档)
- 同一 Kit 的两张纸即可发起恢复;
- 纸面不包含账户恢复密钥;
- 纸面名称与存储载荷均加密,Ente 服务器无法读取;但打印的纸会显示可读的纸面名称,因此避免使用敏感名称;
- 持有者恢复详情仅在恢复会话激活期间可见;
- 恢复审计信息(使用的纸序号、IP、UA)只是提示线索,不能证明身份;
- Legacy Kits 不建立信任联系人关系,也不暂停非活跃账户删除流程;
- 若账户恢复密钥发生变化,已有 Kit 可能在未重建/未重包装前失效(未来版本会解决);
- 2-of-3 数学方案同时以独立 Web 应用形式开源为 2of3(twoof3 应用源码),无需 Ente 账号即可用于任意文本秘密。
加密体系与密钥模型
encryption.md 对加密流程的说明如下:
- 你创建或编辑物品;
- 设备用你的加密密钥加密数据;
- 密文上传至 Ente 服务器;
- 需要时下载回设备;
- 设备本地解密供查看。
加密范围覆盖一切:物品标题与内容、上传文件、集合名称、元数据、共享信息。
密钥模型:
- 密码(Password):保护账户本身,须使用强且唯一的密码;
- 恢复密钥(Recovery Key):24 词短语,忘记密码时的恢复凭据;丢失后只能通过已配置的 Legacy 恢复 找回;
- 集合密钥(Collection Keys):每个集合独立的加密密钥,实现“安全共享而不暴露主密钥”。
技术细节:XChaCha20 / XSalsa20 流加密 + Poly1305 MAC 认证 + Argon2id 密钥派生,全部基于 libsodium 实现(对应 Rust 侧实现见 rust/crates/core 与 cli 加密工具)。官方文档同时说明该加密方案已经过德国安全公司 Cure53 的审计。
从源码构建 Locker(可选)
仓库提供了完整的从源码构建流程(mobile/apps/locker/README.md):
- 安装 Flutter v3.47.2 与 Rust;
- 在
mobile/内任意目录执行flutter pub get --enforce-lockfile安装工作区依赖; - 在
rust/下执行cargo codegen frb生成 Rust 绑定(FRB 导出面变更后需重新执行); - 运行应用:
- Android:
flutter run --flavor independent - iOS:
flutter run
- Android:
发布构建:flutter build apk --release --flavor independent(需先配置 keystore)与 flutter build ios。iOS 依赖更新后需在 ios/ 下执行 pod install。
变更记录与帮助渠道
最新变更见 changelog.md。官方提供的帮助渠道包括:完整文档(Getting Started、Features、Legacy、FAQ)、Discord 社区、邮件 support@ente.com,以及 GitHub Issues 提交 bug 与功能请求;安全问题请直接发送至 security@ente.com。
总结
Ente Locker 以“端到端加密 + 数字遗产继承”双核心,将家庭重要信息的存储、共享与传承整合进统一产品:日常用集合组织与共享,意外来临时通过信任联系人或 Shamir 2-of-3 的 Legacy Kits 完成账户恢复。无论是个人敏感档案归档,还是全家规模的应急预案,均可按官方六步指南在数小时内完成部署。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust4.21 K637- DDeepSeek-V4.1-FlashDeepSeek-V4.1-Flash 是一个多模态混合专家(MoE)模型,拥有 5520 亿骨干参数,并支持最多一百万 token 的上下文长度。该模型原生支持图像和文本输入,并以自回归方式生成文本Python270
jforgamejforgame是一个一站式游戏服务器开发框架。包含游戏服务器开发所需要的各种组件,比如网关,socket服务端与客户端,自定义高效消息编解码,游戏热更新,游戏通用工具等等。包含游戏服,跨服,匹配服,后台管理系统等实现,同时提供大量业务案例以供学习。亦可用于其他socket应用,例如及时聊天等。Java311
fizz-gateway-nodeAn Aggregation API Gateway in Java . FizzGate 是一个基于 Java开发的微服务聚合网关,是拥有自主知识产权的应用网关国产化替代方案,能够实现热服务编排聚合、自动授权选择、线上服务脚本编码、在线测试、高性能路由、API审核管理、回调管理等目的,拥有强大的自定义插件系统可以自行扩展,并且提供友好的图形化配置界面,能够快速帮助企业进行API服务治理、减少中间层胶水代码以及降低编码投入、提高 API 服务的稳定性和安全性。Java220
certd开源SSL证书管理工具;全自动证书申请、更新、续期;通配符证书,泛域名证书申请;证书自动化部署到阿里云、腾讯云、主机、群晖、宝塔;https证书,pfx证书,der证书,TLS证书,nginx证书自动续签自动部署JavaScript220
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python300