Ente Photos 安全与隐私实战指南:端到端加密、密钥管理与账户防护全解析
2026/9/11 23:36:40 网站建设 项目流程

Ente Photos 安全与隐私实战指南:端到端加密、密钥管理与账户防护全解析

【免费下载链接】ente💚 End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente

本指南以 Ente Photos 官方「Security and Privacy FAQ」(docs/docs/photos/faq/security-and-privacy.md)为骨架,系统讲解 Ente 的端到端加密模型、恢复密钥机制、共享加密、设备端机器学习与账户安全实践,并结合本仓库的 Rust 加密核心实现(rust/crates/core/src/crypto)与架构文档(architecture/README.md)给出源码级佐证。读完你将掌握 Ente Photos 的数据保护原理、恢复密钥的正确使用与存储方法,以及 2FA、应用锁、访客模式等账户防护的完整配置路径。

Ente 端到端加密总览

数据加密与存储

为什么 Ente 无法查看你的照片与视频

不会。你的文件在上传到服务器之前就已经在设备上完成加密。加密密钥由你的密码通过高级密钥派生函数(KDF)推导而来,由于只有你知道自己的密码,因此也只有你能解密自己的文件。

这一承诺的底层机制是一套严格的分层密钥体系,详细说明见 architecture/README.md:

  • 主密钥(masterKey):注册 Ente 账户时由客户端生成,永远不会以明文形式离开设备。
  • 密钥加密密钥(keyEncryptionKey):由你的密码派生,同样永不离机。注册时,客户端用keyEncryptionKey加密masterKey,再把加密后的encryptedMasterKey上传服务器存储。
  • 集合密钥(collectionKey):每张照片都属于某个集合(文件夹或相册),每个集合拥有独立的collectionKey。文件与元数据先用随机的fileKey加密,fileKey再用所属集合的collectionKey加密,collectionKey最终用你的masterKey加密后上传。
  • 文件密钥(fileKey):每一份数据(文件及关联元数据)都用随机生成的fileKey加密。

下载时按相反顺序逐层解密:masterKeycollectionKeyfileKey→ 文件与元数据。由于整条密钥链的根(masterKey)只由你的密码保护,服务器即使被攻破也无法还原任何明文内容。

元数据同样被加密

不会泄露。与照片和视频本身一样,所有元数据(包括 EXIF 拍摄时间、位置、描述等)同样经过端到端加密。这意味着服务器无法通过分析文件属性来推断你的拍摄时间、地点等敏感信息。

加密算法与技术细节

FAQ 官方文档列出的算法组合如下:

  • 加密XChaCha20XSalsa20流密码
  • 认证:Poly1305 消息认证码(MAC)
  • 密钥派生:Argon2id,采用高内存与高计算参数

这些算法在仓库的 Rust 加密核心中有对应实现(均声明与 libsodium 保持线格式兼容):

  • 对称加密(小数据):rust/crates/core/src/crypto/secretbox.rs 使用XSalsa20Poly1305,与 libsodium 的crypto_secretbox_easy线兼容,MAC 长度为 16 字节(secretbox.rs#L8)。它用于加密masterKeyrecoveryKeyprivateKeycollectionKeyfileKey等密钥材料本身。
  • 流式加密(文件数据):rust/crates/core/src/crypto/stream.rs 实现与 libsodiumcrypto_secretstream_xchacha20poly1305线兼容的XChaCha20-Poly1305加密流,以 4 MiB 为分块单位(stream.rs#L20),用于分块加密文件内容;末块必须携带 Final 标签,否则解密端会以StreamTruncated拒绝,从而防御截断攻击(stream.rs#L99-L106)。
  • 非对称加密(共享):rust/crates/core/src/crypto/sealed.rs 实现与crypto_box_seal兼容的密封盒,内部使用 X25519 密钥交换 + XSalsa20 流加密 + Poly1305 认证,密文开销为 32 + 16 字节(sealed.rs#L12)。
  • 密钥派生:rust/crates/core/src/crypto/argon.rs 使用Argon2id v1.3从密码派生keyEncryptionKey,定义了三级参数(argon.rs#L13-L34):
级别内存限制(mem_limit)计算轮数(ops_limit)用途
INTERACTIVE64 MiB(67,108,864 字节)2常规交互场景
MODERATE256 MiB(268,435,456 字节)3中等强度
SENSITIVE1 GiB(1,073,741,824 字节)4账户主密钥派生的默认目标

值得注意的是降级策略:若设备内存不足导致派生失败,客户端会将内存限制减半、计算轮数加倍,逐级尝试,直至内存下限 128 MiB(MEMLIMIT_SENSITIVE_MIN,argon.rs#L36、argon.rs#L126-L184)。服务器拒绝接受低于 128 MiB 的账户密钥属性——若降级过程中内存下限被突破,客户端将禁止在该设备上注册。这一逻辑在 argon.rs 的测试 中得到验证,保证任意降级档位下mem × ops的乘积恒定,即整体暴力破解成本不因降级而降低

此外,登录密钥由 rust/crates/core/src/crypto/kdf.rs 基于 Blake2b 从keyEncryptionKey派生出固定上下文(loginctx)的子密钥,用于 API 认证,与主密钥派生链路解耦。

数据存储位置与冗余策略

你的加密数据以多副本冗余方式存储在欧盟(EU)的多个云供应商:

  • 荷兰阿姆斯特丹(Amsterdam)
  • 法国巴黎(Paris)
  • 德国法兰克福(Frankfurt)

FAQ 中的承诺可以浓缩为一句话:3 份数据副本、3 家不同云供应商、3 个不同国家,其中一份存放在巴黎的地下防核掩体中。实现上采用对象存储与分布式数据库的组合以保证高可用与持久性,架构文档亦说明数据会在 3 家云供应商之间复制以保证可靠性(见 architecture/README.md 末尾的可靠性说明)。

与行业标准的对比

Ente 的加密模型超出行业常规:许多服务只做服务端加密(服务器持有密钥,理论上可解密),而 Ente 采用端到端加密。这意味着即使在服务器被入侵的极端情况下,攻击者拿到的也只是无法解密的密文与密钥材料,你的数据依然受到保护。

账户安全

忘记密码时的恢复路径

忘记密码后的命运取决于你的登录状态,三种情况逐一说明:

  1. 仍有一台设备处于登录状态:用该设备重置密码,再用新密码重新登录。
  2. 所有设备均已退出登录,但持有恢复密钥:用注册账户时获得的 24 词恢复密钥重置密码(具体步骤见下文)。
  3. 所有设备均退出登录,且密码与恢复密钥都已丢失:由于端到端加密架构,Ente无法帮你找回账户或数据。若仍需删除账户,可联系 support@ente.com 协助处理。

恢复密钥:24 词短语,账户的最后防线

恢复密钥(recovery key)是一串24 个英文单词组成的短语,是当以下两个条件同时成立时恢复账户的唯一途径

  • 忘记了密码,且
  • 所有设备都已退出登录

关于恢复密钥的三条关键事实:

  • ⚠️Ente 支持团队无法提供或重新生成恢复密钥。由于端到端加密,Ente 从不接触你的恢复密钥或加密数据。
  • ⚠️没有恢复密钥,忘记密码就意味着永久丢失访问权限(前提是你已在所有设备上退出登录)。
  • ⚠️恢复密钥不同于验证码。验证码是发送到邮箱的临时 6 位数字;恢复密钥是永久的 24 词短语。

从源码看,恢复密钥的机制与masterKey互为备份:注册时recoveryKeymasterKey互相加密后存储于服务器;在新设备登录时,这份加密的recoveryKey被下载,用masterKey解密后在你请求时展示。忘记密码时,客户端拉取先前加密推送的masterKey,用你输入的recoveryKey解密,成功即证明密钥正确,随后引导你设置新密码(详细流程见 architecture/README.md 的 Key Recovery 章节)。

恢复密钥恢复流程

如何找到恢复密钥

  • 仍有设备登录时:打开Settings > Account > Recovery key,输入密码查看你的 24 词恢复密钥,并立即保存到安全位置
  • 所有设备已退出登录且没有恢复密钥:很遗憾无法恢复账户。这是端到端加密的固有属性——为了你的隐私与安全,只有你能访问自己的数据。

如何安全地存储恢复密钥

推荐方式:

  1. 密码管理器:存入可信的密码管理器(如 1Password、Bitwarden 等)。
  2. 纸质备份:写下来存放在安全场所(防火保险箱、银行保管箱)。
  3. 加密笔记:保存在使用不同密码的加密笔记应用中。
  4. 多地点存放:在 2~3 个不同的安全位置各保存一份副本。

绝对不要:

  • 以未加密文件形式存放在电脑上
  • 通过邮件发给自己
  • 分享给任何人(包括 Ente 支持团队)
  • 截图后留在相册里
  • 只存放在单一位置

最佳实践:首次创建 Ente 账户时,在上传任何照片之前立即保存好恢复密钥。

使用恢复密钥重置密码的步骤

若你忘记了密码且已在所有设备上退出登录:

  1. 打开登录页面(任意平台)。
  2. 输入你的邮箱地址。
  3. 点击 “Forgot Password”(忘记密码)。
  4. 输入你的 24 词恢复密钥:
    • 每个单词之间用单个空格分隔;
    • 全部小写,不含标点;
    • 格式示例:word1 word2 word3 ... word24
  5. 设置新密码。
  6. 使用新密码登录。

常见问题:

  • 提示 “Invalid recovery key”(无效恢复密钥):检查拼写错误、多余空格或缺失单词。
  • 恢复密钥不起作用:确认你使用的是恢复密钥(24 词)而非验证码(6 位数字)。
  • 仍然无法访问账户:联系 support@ente.com——Ente 或许能协助验证账户所有权以便删除账户,但无法恢复你的数据。

修改密码

可以,随时可以在 Ente 应用中修改密码。Ente 的架构设计允许修改密码时无需对整个照片库重新加密:因为masterKey不变,只是用新密码派生的新keyEncryptionKey重新加密masterKey并上传。需要提醒的是,账户隐私强度取决于密码强度,请务必选择强密码。

双因素认证(2FA)

Ente 推荐启用 2FA 增加一层安全保护,支持:

  • TOTP(基于时间的一次性密码)
  • WebAuthn/FIDO2硬件安全密钥

可在移动端或桌面端应用的设置中配置 2FA。服务端侧的实现可参考 server/ente/passkey.go 与 server/ente/webauthnSession.go(WebAuthn 会话与凭据处理)。

⚠️Enteception 警告:如果你在 Ente Auth 中使用同一账户,在 Ente Photos 中启用 2FA 也会对 Ente Auth 生效——若你把 Ente 账户自身的 2FA 代码存放在 Ente Auth 内部,就会形成“自己锁自己”的死循环。这一场景的完整说明见 Enteception 指南。

应用锁(App lock)

可以。你可以为 Ente Photos 增加额外的锁屏保护:

  • 选择设备锁(Device lock)PIN 锁密码锁(Password lock)
  • 配置自动锁定(Auto lock),让应用在设定延迟后自动锁定
  • 在移动端开启隐藏内容(Hide content),在应用切换器中隐藏应用预览

配置路径:移动端Settings > Security > App lock,桌面端Settings > Preferences > App lock。详细操作见 App lock 指南。

访客模式(Guest view)

可以。你可以把手机交给别人,让对方浏览单张照片、选中的一组照片或整个相册,而无法触达其余照片库、设置或编辑、分享、删除等操作。访客模式启用时应用会隐藏所有查看器控件,看起来就是一个简洁的纯浏览界面。

访客模式只能通过设备认证(人脸识别、指纹或设备密码)退出,因此对方无法自行离开访客模式。该功能目前仅限移动端。三种启动方式及注意事项见 Guest view 指南。

PGP 加密支持

可以。你可以向 pgp@ente.com 发送加密邮件。公钥发布在 openpgp.org 密钥服务器,指纹为D71B F781 998B 4AED 01A2 0AF6 02BD D83A 56EA 68E2

共享与协作

共享的加密机制

解密相册所需的信息会用接收者的公钥(public key)加密,因此只有接收者本人能解密。

其底层正是架构文档中的 Sharing 流程:每个 Ente 账户在注册时会生成一对非对称密钥(publicKey/privateKey)。分享相册时,发送方把collectionKey用接收者的publicKey加密(对应源码为 rust/crates/core/src/crypto/sealed.rs 中的seal()密封盒实现);接收方收到后用私钥解开collectionKey,再逐层解密fileKey与文件。私钥本身由masterKey加密存储,因此只有接收者能访问自己的私钥。

共享加密流程

分享链接的密钥传递

对于可共享链接(shareable links),解密相册的密钥由客户端以URL 片段(fragment,即#之后的部分)附加到链接上,永远不会发送到服务器。这样即使链接被服务器记录,服务器也无法据此解密相册。

需要注意的是,只有付费套餐用户允许共享相册,而接收者只需一个免费的 Ente 账户即可。

安全审计

Ente Photos 已经历多次由可信机构执行的完整安全审计:

  • 首次评估由Cure53Symbolic Software合作完成。Cure53 是德国知名网络安全公司,Symbolic Software 专注于应用密码学。
  • 第二次(较近期)审计受CERN委托完成。

本仓库的 architecture/README.md 亦明确声明:源码已经过审计,以验证这些密钥仅对你可用。项目还维护有独立的安全政策文档 SECURITY.md,规范漏洞披露流程。

机器学习与隐私

人脸数据不会用于训练 AI 模型

不会。所有机器学习能力(人脸识别与魔法搜索)完全在设备端运行。你的照片下载到设备、在本地建立索引,索引加密后再跨设备同步。

Ente 的服务器永远不会收到:

  • 你的未加密照片
  • 人脸识别数据
  • 搜索索引
  • 任何关于照片内容的关联信息

你的照片与 ML 数据永远不会用于训练任何 AI 模型,无论是由 Ente 还是第三方。仓库中 rust/crates/ml 即为 ML 相关实现所在目录。

设备端 ML 如何维持隐私

设备端机器学习与应用的其余部分保持相同的端到端加密保证:

  • 本地处理:所有人脸检测、识别与魔法搜索分析都在你的设备上完成。
  • 加密索引:ML 生成的索引在同步到其他设备前先加密。
  • 零服务器知识:Ente 的服务器看不到你的照片、人脸或搜索数据。
  • 无第三方服务:ML 模型完全运行在 Ente 应用内部,不调用任何外部 AI 服务。

你的机器学习数据与照片享有同等的端到端加密,确保完全隐私。更多细节见 机器学习功能指南。

位置标签是否加密

是!位置标签与照片一样端到端加密。创建位置标签时,所有位置数据(坐标、半径、标签名称)都在设备上加密后再同步。Ente 服务器看不到你的位置标签或照片拍摄地点,所有基于位置的搜索都在本地设备完成。仓库中 rust/crates/location 与 rust/tools/location-dataset 与位置数据处理相关。

账户管理

删除账户

你可以随时通过设置中的 “Delete account”(删除账户)选项删除账户。出于安全考虑,Ente 建议用户自行在应用内删除账户,而非联系客服代为删除。

特别注意:Ente Photos、Ente Auth 与 Ente Locker 共用同一底层账户,因此无论从哪个应用发起删除,三个应用的关联数据都会被一并删除。

信任与可靠性

FAQ 从四个维度回答了“为何可以信任 Ente 做长期数据存储”:

  • 专注使命:与拥有多产品线的大型科技公司不同,Ente 只有一个专注的使命——为用户打造一个可以长期归档个人记忆的安全空间。
  • 财务可持续:其定价模式让服务可以不依赖广告或出售用户数据而盈利,从而将全部精力放在服务用户上。
  • 安全与透明:数据全程端到端加密;开源应用已经过 Cure53 等机构的外部审计;数据以 3 副本、3 家供应商、3 个欧盟国家的冗余方式保存;可靠性文档透明地披露了数据复制与灾难恢复计划。
  • 长期承诺:团队专注于此且无意分心其他项目,致力于提供尽可能可靠的服务。

安全漏洞披露与附加支持

  • 若发现安全漏洞,请负责任地披露:发送邮件至 security@ente.com,或在项目的安全公告入口提交,而不是公开发 issue。Ente 会调查所有真实有效的报告,流程详见 SECURITY.md。
  • 其他未覆盖的安全与隐私问题,可联系 security@ente.com。

总结

Ente Photos 的安全与隐私承诺可以归纳为一条主线:一切加密都在设备端完成,密钥由你独有。通过masterKey → collectionKey → fileKey的分层密钥体系(XChaCha20/XSalsa20 + Poly1305 + Argon2id),照片、元数据、位置标签乃至 ML 索引全部端到端加密;恢复密钥作为账户失而复得的最后保险,必须在注册后立即安全保存;共享通过公钥密封完成,分享链接的密钥只存在于 URL 片段中。理解这套机制,你就掌握了安全使用 Ente Photos、管理账户风险与评估其隐私承诺所需的核心知识。

【免费下载链接】ente💚 End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询