Ente 安全策略深度解读:漏洞披露政策、适用范围与端到端加密安全架构 📅 发布时间:2026/9/11 3:45:42 👁 浏览次数: Ente 安全策略深度解读漏洞披露政策、适用范围与端到端加密安全架构【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/enteEnte 是一个完全开源、端到端加密的云服务项目包含 Ente Photos、Ente Auth、Ente Locker 等客户端与配套服务端其安全边界直接决定了用户数据的机密性。本文以仓库根目录的 SECURITY.md 为骨架系统梳理 Ente 的安全漏洞报告渠道、负责任披露Responsible Disclosure政策、测试范围与例外项并结合仓库内的加密架构文档与源码实现如 SRP 认证、Argon2 密钥派生、libsodium 原语帮助安全研究者、自托管运维者和开发者完整理解 Ente 的安全模型与协作方式。一、安全漏洞的官方报告渠道Ente 团队明确表示与全球安全研究者的协作是保障用户安全的关键。如果你认为在产品或服务中发现了安全问题官方鼓励通过以下两种方式联系发送邮件至securityente.com通过该仓库的GitHub Security Advisories 页面路径为security/advisories/new填写并提交漏洞报告。需要注意Ente 在项目根目录 README.md 的 Security 一节中同样强调发现安全漏洞时应通过上述渠道负责任地私下披露而不是直接提交公开的 issue这样团队才有机会在漏洞被滥用前完成修复。二、披露政策Disclosure PolicySECURITY.md 对安全研究者的行为提出了三条明确要求核心是尽早、克制、不破坏尽早通知在发现潜在安全问题的第一时间通知 Ente 团队团队将尽最大努力快速解决问题。给予合理的修复窗口在向公众或第三方披露之前为团队预留合理的时间用于修复。如果情况合适团队也可能在修复完成前先行公开披露。以善意方式避免破坏尽最大努力避免隐私侵犯、数据销毁以及服务中断或降级只能与你自己拥有的账户交互或获得账户持有人的明确许可后才能与他人账户交互。这一政策与业界通用的协调披露Coordinated Disclosure一致——研究者的价值在于帮助修复而非公开羞辱合理的修复时间窗口让安全补丁能够先行落地。使用 PGP 加密报告如果希望加密提交报告可以使用长 ID 为E273695C0403F34F74171932DF6DDDE98EBD2394的 PGP 公钥该公钥发布在公共 keyserver 池中。对于涉及敏感用户数据或零日漏洞的细节加密传输可以确保报告内容只被 Ente 安全团队读取。三、适用范围In-scopeSECURITY.md 明确测试范围覆盖Ente 服务的任何当前版本中的安全问题。产品下载与源码均可从 Ente 官方渠道获取本仓库即包含全部客户端与服务端源码。结合仓库结构这一范围实际上覆盖了移动端客户端mobileEnte Auth / Locker / Photos 的 Dart 应用桌面端应用desktopElectron 应用Web 应用webaccounts、photos、auth、locker 等多个应用服务端 API代号 MuseumserverGo 实现的单体 API 服务器CLI 工具cliGo 实现的命令行客户端支持导出、账户管理等操作原生加密核心rustEnte 的 Rust 加密与业务 crate。任何一个当前发布版本中存在的安全问题都属于可提交的范围。四、例外项ExclusionsSECURITY.md 列出以下不在测试范围内的漏洞类别研究者应在投入时间前先行判断已在 issue 跟踪器中报告的 bug包括已被 Ente 团队知晓的问题部分 issue 跟踪为私有状态无法直接查询上游依赖中已报告给维护者的问题例如 Flutter、Next.js 等上游组件中已提交给上游维护者的漏洞需要物理接触用户设备的攻击Self-XSS仅影响攻击者自身会话的 XSS不受 Ente 控制的软件或协议相关问题Ente 过时版本中的漏洞建议在最新版本上复现不会直接导致漏洞的缺失安全最佳实践对普通公众没有任何影响的问题。这些例外项的逻辑很清晰避免重复劳动已报告问题、避免把上游责任转嫁给下游上游依赖、排除不现实的威胁模型物理接触以及排除无实际影响的纸面问题。对于自托管用户若使用的是仓库中过时的镜像或版本也应注意先升级到当前版本再测试。五、研究过程中的禁止行为为了保障服务可用性与人员安全SECURITY.md 要求研究者在测试过程中避免以下行为拒绝服务Denial of service不得发起可能压垮服务的攻击垃圾信息Spamming社会工程攻击包括针对 Ente 员工或承包商员工的钓鱼Phishing等针对 Ente 财产或数据中心的任何物理尝试。这些限制本质上是在划定合法的渗透测试与非法的攻击行为之间的边界——安全测试应当针对代码与逻辑而非针对真实用户、员工或基础设施。六、为何需要披露政策Ente 的安全架构背景要理解这份安全策略的价值需要先了解 Ente 的保护对象。根据 architecture/README.md 的说明Ente 的核心承诺是你的数据在离开设备之前就已经使用只有你持有的密钥完成加密end-to-end encryptedE2EE。密钥层次与数据加密Ente 的加密模型是一个三层密钥体系注册时客户端生成masterKey主密钥永不以明文离开设备用户设置密码后客户端通过密钥派生函数生成keyEncryptionKeyKEKKEK 也永不离设备注册时masterKey 使用 KEK 加密为encryptedMasterKey后上传服务端存储在副设备登录时服务端返回加密的主密钥客户端用密码派生出 KEK 再解密还原 masterKey。如果解密失败客户端即可判定密码错误。数据层面每个相册/文件夹collection持有collectionKey每份文件持有fileKey文件用随机 fileKey 加密fileKey 用所属 collectionKey 加密collectionKey 再用 masterKey 加密后上传。因此服务端Museum即使被攻破也只能看到密文。共享场景则使用非对称加密分享时用接收者的 publicKey对 collectionKey 进行密封加密sealed box接收者用自己的 privateKey 解密分享双方可以通过验证 IDVerification ID由 publicKey 的 SHA-256 值转换为 BIP39 助记词生成在设备间互相核对验证 E2EE 链路的安全性。底层密码学原语所有加密实现基于libsodium库的高层 API随机密钥masterKey、recoveryKey、collectionKey、fileKey、authKey、tokenKey均为 256 位使用crypto_secretbox_keygen生成非对称密钥对使用crypto_box_keypair生成X25519 密钥交换 XSalsa20 流密码 Poly1305 MAC对称加密使用crypto_secretbox_easyXSalsa20-Poly1305加密各类密钥文件数据采用crypto_secretstream_*分块加密XChaCha20-Poly1305支持流式加解密密码派生使用crypto_pwhashArgon2 v1.3采用OPSLIMIT_SENSITIVE与MEMLIMIT_SENSITIVE级别若内存不足计算上限加倍、内存上限减半并逐步降级但当内存上限低于服务端接受的 128 MiB 下限时客户端将拒绝在该设备上注册。这些原语在仓库中有直接实现佐证。例如 cli/internal/crypto/crypto.go 中的DeriveArgonKey使用argon2.IDKey进行密码派生盐为 base64 解码后的 16 字节输出 32 字节密钥并基于 Blake2b 的上下文派生context 为loginctx生成登录子密钥cli/internal/crypto/crypto_native.go 则实现了secretbox解密校验 nonce 24 字节、密钥 32 字节与box.OpenAnonymous密封盒解密以及按 4 MiB 缓冲区流式解密 XChaCha20-Poly1305 分块文件。认证SRP 与防枚举设计用户密码验证采用了SRPSecure Remote Password协议密码明文永远不会到达服务器。服务端 server/pkg/controller/user/srp.go 中定义了Srp4096Params 4096使用 4096 位 SRP 参数组与MaxUnverifiedSessionInAnHour 10每小时最多 10 个未验证会话等限制并通过ReserveSrpSessionAttempt限制每次会话的尝试次数上限 5 次。值得注意的是服务端针对不存在的用户也会返回伪造的 SRP 属性FakeVerifier常量与随机时序如time.Sleep(20~50ms)随机延迟并持久化假会话AddFakeSRPSession以走与真实会话完全相同的数据库路径——目的是防止用户枚举与时间侧信道。在 server/ente/srp.go 中可以看到完整的 SRP 请求/响应结构SetupSRP、CompleteSRPSetup、CreateSRPSession、VerifySRPSession 等而GetSRPAttributesResponse中携带的memLimit、opsLimit、kekSalt正是客户端派生 KEK、进而生成 LoginKey 的必要参数。密码强度方面server/ente/user.go 定义了ExpectedKDFStrength int64(1073741824 * 4)即期望的 KDF 强度为 4 GiB 内存 × 4 次迭代量级历史迁移脚本 server/migrations/12_add_hash_limits.up.sql 则为key_attributes表添加了mem_limit默认67108864即crypto_pwhash_MEMLIMIT_INTERACTIVE与ops_limit默认 2即crypto_pwhash_OPSLIMIT_INTERACTIVE列。密钥恢复与 2FA/Passkey当用户忘记密码时可通过recoveryKey恢复密钥找回账户恢复密钥与主密钥互相加密后存储于服务端用户在新设备登录并完成邮箱验证后输入 recoveryKey 即可解密 masterKey随后设置新密码并上传新的encryptedMasterKey。此外server/ente/passkey.go 显示 Ente 还支持 Passkey每个用户最多 10 个以及基于恢复密钥的 Passkey 恢复机制userSecretCipher用于证明持有恢复密钥以执行 MFA 恢复。外部审计根目录 README.md 明确声明Ente 的源码与密码学实现已接受外部独立审计德国网络安全公司Cure53、法国密码学专家Symbolic Software以及印度渗透测试公司Fallible分别对项目进行了审计。这为端到端加密可信度提供了第三方背书也是安全研究者评估项目可信度的重要参考。七、对研究者的实操建议综合 SECURITY.md 与仓库实现向 Ente 提交安全报告时可以参考以下操作流程确认范围先在 Ente 的最新发布版本上复现问题排除过时版本上游依赖已报告Self-XSS无公众影响等例外情况准备材料尽可能提供复现步骤、受影响版本、影响分析机密性/完整性/可用性影响、可能的缓解建议涉及敏感细节时使用 PGP 公钥E273695C0403F34F74171932DF6DDDE98EBD2394加密选择渠道发送至 securityente.com 或通过 GitHub Security Advisories 页面提交不要提交为公开 issue遵守披露窗口提交后等待团队确认与修复在合理时间后再考虑公开披露控制测试强度避免 DoS、垃圾流量、社工与物理入侵仅对自有账户进行测试避免影响真实用户与服务可用性。八、总结SECURITY.md 是一份简洁但完整的负责任披露框架明确的报告渠道邮箱 Security Advisories、清晰的三条披露原则、PGP 加密支持、可测试范围所有当前版本、七类例外项以及四项研究禁区。而这份政策背后的技术支撑是仓库中层层设计的端到端加密体系——从 masterKey/collectionKey/fileKey 的三层密钥链到基于 Argon2crypto_pwhash的密码派生、SRP 无明文密码认证、XChaCha20-Poly1305 流式加密再到针对用户枚举的假会话与随机时序防护。安全研究者通过这份政策与团队协作实际上是在共同守护一套服务端即使被攻破也无法读取用户数据的密码学防线。【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考