十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ente Legacy 数字遗产继承与账户恢复指南:可信联系人与 Legacy Kits 双方案深度解析

Ente Legacy 数字遗产继承与账户恢复指南:可信联系人与 Legacy Kits 双方案深度解析 Ente Legacy 数字遗产继承与账户恢复指南可信联系人与 Legacy Kits 双方案深度解析【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/enteEnte 的 Legacy 功能是面向端到端加密账户设计的数字遗产继承与紧急恢复体系当账户持有者失联、失能或离世时被信任的人可以在等待期后重置密码、接管账户。本文将基于 Legacy 功能文档 与 Legacy Kits 文档结合仓库中 服务端模型、Legacy Kit 控制器、数据库迁移 以及 Shamir 分享实现 等源码完整讲解可信联系人Trusted Contacts与Legacy Kits遗产工具包两条恢复路径的配置步骤、等待期机制、底层密码学设计与安全管理帮助你在 Ente Locker 中正确部署数字遗产方案。什么是 Ente Legacy生命充满不确定性。Legacy 让一个你信任的人在你失去账户访问权限、丧失行为能力或不幸离世时能够恢复你的 Ente 账户。这是 Ente 内置的数字遗产能力适用于 Locker密码保险库、Photos 等所有基于 Ente 账户体系的产品——恢复的是整个 Ente 账户而非某个单独的条目或集合。Ente Locker 提供两种 Legacy 方案可信联系人Trusted contacts选择另一位 Ente 用户在等待期结束后由对方恢复你的账户。Legacy Kits遗产工具包创建 3 张实体恢复单recovery sheet任意 2 张即可在浏览器中发起账户恢复协助者不需要Ente 账户。需要强调两种方案都是账户级别的恢复工具不是条目共享、集合共享也不是直接登录。日常向家人开放 Locker 条目或集合访问应使用共享功能而不是 Legacy。方案一可信联系人Trusted Contacts可信联系人是同意协助你恢复账户的 Ente 用户。如果可信联系人发起恢复你会收到通知并可在等待期内阻止该次尝试。可信联系人恢复的完整流程添加一个或多个可信联系人。可信联系人在其 Ente 应用中接受邀请。需要时可信联系人发起账户恢复。等待期内 Ente 会通知你。若你未阻止该次尝试可信联系人可通过恢复流程重置账户密码。等待期选项可信联系人恢复必须经过一段等待期可在 Legacy 页面配置选项说明7 天恢复更快但对未授权尝试的保护窗口较短14 天折中方案30 天默认对未授权恢复尝试提供更强的保护希望快速恢复可选择较短等待期默认的 30 天则更适合遗产继承场景给你充足时间发现并阻止异常恢复。在移动端添加可信联系人打开 Ente Locker。打开 Locker 菜单。点击Legacy。点击Add Trusted Contact。输入对方的邮箱地址。联系人必须已经拥有 Ente 账户不需要有效订阅但必须有账户。添加后对方需要在自家 Ente 应用的 Legacy 页面接受邀请——接受邀请意味着对方确认理解自身责任并同意参与也可以选择拒绝。管理可信联系人Legacy 页面会展示两类信息Trusted contacts可以恢复你账户的人。Legacy accounts你作为可信联系人、被他人指定参与恢复的账户。移除可信联系人打开Legacy点击该联系人选择Remove。移除后对方立即失去发起恢复的能力若该联系人已发起恢复移除操作会同时阻止该次恢复尝试。服务端的可信联系人实现可信联系人在服务端由紧急联系人emergency contact模型支撑定义见 server/ente/emergency.go。联系人的状态机包含五个阶段INVITED已邀请、REVOKED已撤销、ACCEPTED已接受、CONTACT_LEFT联系人退出、CONTACT_DENIED联系人拒绝。恢复会话的状态则定义在 同文件INITIATED已发起、WAITING等待中、REJECTED被拒绝、RECOVERED已恢复、STOPPED已停止、READY就绪。每个联系人的RecoveryNoticeInDays字段记录了等待天数即 7/14/30 天选项恢复会话通过WaitTill字段记录就绪时刻。围绕这些状态服务端在 server/pkg/controller/emergency/email.go 中定义了完整的邮件通知体系包括邀请邮件、接受/拒绝邮件、恢复已发起、恢复已就绪、恢复被阻止、恢复完成、恢复提醒等模板。也就是说每一次状态迁移都会触发对应的邮件通知这正是账户所有者被即时通知机制的服务端实现。方案二Legacy Kits遗产工具包Legacy Kits 是面向 Ente 账户的实体恢复工具包适用于遗产继承、灾难恢复或你在丢失密码和恢复密钥后的自助恢复场景。每个工具包生成 3 张恢复单任意 2 张即可发起账户恢复单张恢复单不足以恢复。Legacy Kits 的工作原理创建 Legacy Kit 时Ente 会生成一个独立的kit secret工具包密钥并用 Shamir 2-of-3 秘密分享算法将其拆分为 3 份每张恢复单携带其中一份恢复单不包含你的账户恢复密钥也无法让持有者直接登录账户。恢复时协助者在浏览器中组合任意 2 张恢复单在本地重建 kit secret打开一个受限的恢复会话scoped recovery session等待所选恢复时间后通过密码重置流程完成账户恢复。服务端永远看不到kit secret、恢复单内容或你解密后的恢复密钥。关于 Shamir 2-of-3 数学原理2of3 文档 有可视化说明同一秘密拆分出 3 张卡片任意 2 张可重建秘密单张卡片在数学上是无害的——其分享数据看起来完全随机仅泄露秘密的字节长度不泄露任何内容。仓库中的实际实现在 web/apps/twoof3/src/features/twoof3/utils/shamir.ts它基于 GF(256) 有限域GF_POLY 0x11b为秘密的每个字节生成随机系数并构造一次多项式三个份额分别取 x1、2、3 时的多项式值见 splitSecret恢复时通过拉格朗日插值combineSharesshamir.ts#L229-L283重建秘密并用 4 字节 FNV 校验和验证结果正确性。与 2of3 的关系Legacy Kit 是 Ente 为账户场景定制的版本——在相同的 2-of-3 Shamir 数学之上增加了服务端中介、可撤销的恢复流程等待期、阻止机制这正是账户继承所需要的。同一套拆分方案也以独立 Web 应用的形式提供2of3 介绍可对任意文本型秘密使用且不依赖 Ente 账户。创建 Legacy KitLegacy Kit 的创建和管理目前仅在Ente Locker 移动端提供打开 Ente Locker。打开 Locker 菜单。点击Legacy。打开Legacy kits。点击Create legacy kit。为 3 张恢复单命名。选择恢复等待时间。按提示完成身份认证。下载、打印或分享恢复单。存储建议将 3 张恢复单分开存放例如一张留在家中、一张交给信任的家人、一张放在律师处或其他安全场所。注意打印出的恢复单会显示人类可读的恢复单名称避免使用敏感名称。创建时移动端会通过 mobile/apps/locker/lib/services/legacy_kit.dart 中的createKit调用 Rust 侧实现携带当前账户的KeyAttributes用于加密恢复密钥、恢复单名称列表和noticePeriodInHours最终与服务端CreateLegacyKitRequest交互。恢复等待时间每个 Kit 只能选择一个等待时间选项服务端对应的noticePeriodInHoursImmediate立即01 天247 天默认16815 天36030 天720服务端在 server/pkg/controller/legacy_kit/controller.go#L24-L30 中通过validNoticePeriods白名单严格校验上述 5 个取值其他值一律返回invalid legacy kit notice period错误。选定的等待时间在恢复发起时被固化数据库中的effective_notice_period_in_hrs字段见 迁移脚本。之后修改等待时间只影响未来的恢复尝试且恢复尝试进行中无法修改——仓库代码在UpdateRecoveryNotice中会先检查是否存在活动会话存在则直接拒绝。Immediate立即恢复适合自助恢复但几乎不给你发现和阻止未授权尝试的时间遗产继承场景建议使用更长的等待期。使用 Legacy Kit 恢复账户协助者不需要安装 Ente也不需要 Ente 账户。恢复流程在浏览器中完成打开恢复单上印制的恢复 URLEnte Cloud 恢复单使用legacy.ente.com。从同一工具包中录入任意 2 张恢复单。跟随浏览器中的恢复流程。等待恢复尝试就绪。为账户设置新密码。自托管或自定义部署的恢复 URL 可能不同务必使用恢复单上印制的 URL。服务端通过配置项apps.legacy读取部署方自定义的 Legacy 应用地址缺省时为https://legacy.ente.com见 controller.go#L318-L324。服务端的恢复会话机制浏览器端重建 kit secret 后会向服务端发起OpenRecovery。整个流程的服务端实现值得细读挑战Challenge服务端生成 32 字节随机挑战用 kit secret 确定性派生的 X25519 公钥AuthPublicKey加密后返回有效期 1 小时数据库中只保存挑战的 SHA-256 哈希见 controller.go#L168-L193 与 repository.go 的CreateChallenge/consumeChallengeTx。打开会话客户端解密挑战并回传证明自己确实持有 kit secret服务端校验并创建恢复会话。每个 Kit 同时只允许一个活动恢复会话——迁移脚本中的唯一索引idx_legacy_kit_recovery_active_per_kit在数据库层面强制了这一约束121_create_legacy_kits.up.sql#L62-L64。会话令牌服务端发放 32 字节随机会话令牌数据库中仅保存其 SHA-256 哈希legacy_kit_recovery_session_token表。等待与就绪会话初始状态为WAITINGwait_till记录就绪时刻等待期过后状态转为READYensureSessionReadyForUseTx负责惰性转换。等待期为 0Immediate时会话直接进入READY。密码重置只有READY状态的会话才能调用GetRecoveryInfo获取加密的恢复密钥 Blob 与账户KeyAttributes随后通过 SRP 流程设置新密码并更新密钥属性成功后会话状态置为RECOVERED并触发恢复完成通知controller.go#L278-L299。会话状态机完整定义为WAITING / READY / BLOCKED / CANCELLED / RECOVEREDserver/ente/legacy_kit.go#L8-L14。toRecoverySession会把已过等待期的 WAITING动态转换为READY这一点有单元测试覆盖controller_test.go 中的TestToRecoverySessionMarksExpiredWaitingSessionReady。管理 Legacy Kit在移动端进入Legacy → Legacy kits并点击某个 Kit即可重新下载恢复单在没有活动恢复时修改恢复等待时间删除该 Kit阻止当前活动的恢复尝试。每个账户最多可创建5 个未删除的 Legacy Kit删除的 Kit 不计入该限额。服务端在CreateKitWithLimit中通过事务加行锁SELECT ... FOR UPDATE保证并发下限额的准确性repository.go#L52-L81。阻止与删除的语义差异当有人用 Legacy Kit 发起恢复时Ente 会发送恢复已开始邮件Legacy 页面也会显示活动恢复警告。两类操作的语义不同需要区分Block recovery阻止恢复取消当前活动的恢复尝试状态置为BLOCKED。Kit 本身仍然可用——持有 2 张恢复单的人之后仍可发起新的恢复尝试。Delete kit删除工具包使这些恢复单永久失效is_deleted TRUE并同时阻止该 Kit 任何待处理的活动恢复尝试。删除后这些恢复单无法再发起恢复。邮件通知方面Ente 会在 Legacy Kit 恢复开始和完成时各发送一封邮件目前不会在延迟恢复变为就绪时单独发送邮件。移动端实现中 Kit 相关的服务端接口blockKitRecovery、deleteKit、updateKitRecoveryNotice等都在 legacy_kit.dart 中统一封装。阻止恢复Blocking Recovery如果有人未经许可发起恢复你可以阻止打开 Ente Locker。打开 Locker 菜单。点击Legacy。打开恢复警告。阻止该恢复尝试。阻止可信联系人恢复会停止该次尝试。对于 Legacy Kit阻止会取消当前活动尝试但 Kit 仍可被用于发起下一次尝试除非你删除该 Kit。每次恢复发起的审计信息使用的恢复单编号、IP 地址、User-Agent会被记录在会话的initiatorsJSONB 字段中但这些只是审计线索audit hints不能证明操作者的身份——服务端代码注释也明确写道这是审计提示不是授权原语server/ente/legacy_kit.go#L89-L96。重要注意事项Legacy 作用于整个 Ente 账户恢复完成后访问的是被恢复的 Ente 账户跨所有 Ente 应用不限于 Locker 条目或某个集合。可信联系人必须是 Ente 用户Legacy Kits 的协助者则不需要 Ente 账户。恢复可以被阻止恢复开始时你会收到通知并可在等待期内阻止未授权尝试。这不是共享日常向家人开放 Locker 条目或集合请使用共享功能。恢复会重置密码与密钥通过恢复流程重置密码后账户的 2FA 与 passkey 等第二因素会被移除以便用新密码访问账户见 Legacy FAQ。Legacy Kits 不创建可信联系人关系也不会暂停不活跃账户删除inactive-account deletion。恢复密钥变化的影响如果你的账户恢复密钥发生改变现有 Kit 可能失效除非在未来版本中重新创建或重新包装。当前限制Legacy Kits 目前没有 Kit 昵称和Verify kit验证流程Kit 标签基于 3 张恢复单的名称。典型使用场景数字遗产继承Digital inheritance家人在你去世后恢复你的账户。紧急账户恢复Emergency account recovery丢失密码和恢复密钥后重新获得访问权。失能预案Incapacity planning确保你无法响应时重要信息仍可恢复。业务连续性Business continuity关键账户始终可被恢复保证组织运转不中断。安全设计小结从 服务端模型 与 数据库迁移 可以确认 Legacy 的安全设计要点账户恢复密钥以Base64(secretbox nonce || MAC || ciphertext)形式加密存储encrypted_recovery_blob服务端无法解密恢复单名称与已保存的分享载荷以EncryptedOwnerBlob加密存储服务端无法读取认证公钥由 kit secret 确定性派生X25519形成持有 2 份份额才能解密挑战的证明机制挑战与会话令牌在服务端均只存哈希即使数据库泄露也无法直接重用恢复完成前必须经历等待期期间账户所有者可随时阻止密钥恢复是延迟的、所有者可通知的delayed, owner-notified recovery这是整个 Legacy 体系的核心设计哲学。延伸阅读Legacy Kits 详细文档Legacy 常见问题FAQ2of3 独立分享应用介绍2of3 工作原理Shamir 数学与分享格式Ente 加密机制说明服务端实现Legacy Kit 控制器、Legacy Kit 仓储层、紧急联系人模型、数据库迁移客户端实现移动端 legacy_kit.dart、Shamir 分享算法【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表