LangReply 的安全性

我们加密什么、销毁什么,以及我们坦白无法保证什么。不用营销话术。

1. 静态加密

敏感数据(用户账户、翻译历史、OTT 消息、偏好设置)在静态存储时以 AES-256-GCM 加密。主密钥存放在 Git 仓库之外的受限访问卷上(权限 600,专用属主)。

每条敏感记录都带有各自的 IV(96 位随机 nonce)和 GCM 认证标签。密文若被篡改,会在解密时被发现(密码学校验失败,而不会静默损坏)。

已记录的例外:languages.json(受支持语言的公开清单)被明确排除在加密之外:它是公开目录,不是个人数据。

2. 不可逆擦除(crypto-shredding)

原理

每个 OTT 会话、每批敏感消息以及每个用户账户都拥有专属的 DEK(数据加密密钥)——一把随机生成的唯一 AES-256 密钥。数据用该 DEK 加密;DEK 本身再由主密钥(KEK)加密。

不可逆地擦除数据,我们销毁 DEK。密文字节仍可能留在数据库或磁盘上:没有密钥,它们与随机噪声无异。

数学保证

AES-256 的 DEK 拥有 2256 种可能取值,约 1.16 × 1077。以当前公开密码学知识与可用算力(包括按 Grover 算法推算的后量子情形,将其降至 2128)来看,暴力还原一把已销毁的密钥不可行

实际被销毁的内容

  • 内存中的 DEK(立即清零)。
  • 数据库中已加密的 DEK(UPDATE ... SET encrypted_dek = NULL,必要时配合 Postgres 的 VACUUM)。
  • 应用缓存中的副本。

3. 消息自动消失

任何 OTT 会话都可启用自动清除计时:超时后,消息将通过销毁该会话 DEK 的方式被彻底摧毁。

可选时长

若未做任何设置,则不适用任何默认时长:消息将一直保留,直至手动删除。

计时自消息被收件人读取时开始(默认),也可设置为自发送时开始。服务器清理任务每 10 分钟运行一次,清除已过期内容。

时长的更改会在会话中显示(带时间戳的系统消息)。发送方与接收方都无法「延长」已过期的消息:密钥已被销毁。

4. 账户彻底清除

在用户门户中,「销毁我的全部消息」按钮会立即销毁与您账户关联的所有 DEK:OTT 会话、翻译历史、草稿、加密附件。

该操作:

清除消息并不会删除账户本身(标识、邮箱、账单偏好):如需删除,请使用单独的完整账户注销功能。

5. 账户间隔离

每个账户都有自己的 DEK。某个 DEK 被攻破,只会暴露该账户的数据,不会波及其他账户。主密钥(KEK)用于解密 DEK,但仅凭它无法读取一个 DEK 已从数据库中消失的账户。

API 请求按 account_id 限定作用域。没有任何路由会在不校验会话归属的情况下,接受账户标识作为自由参数。

6. 自托管翻译引擎

主翻译由部署在我们自有服务器上的 NLLB-200 1.3B(202 种语言)完成,运行在不对互联网暴露的内部微服务中。内容不会为了翻译而离开我们的基础设施。

备用方案:主引擎不可用时,自动回退仅会调用 Claude(Anthropic)。敏感场景可按账户关闭该回退;一旦触发,内容将传输给 Anthropic,我们会在 API 响应中予以标注。

MyMemory 回退已于 2026 年 7 月 28 日移除:它把内容以明文放在 URL 中传输,且没有数据处理协议。不存在第三层回退:若没有任何引擎可用,翻译将直接失败,而不会交给未签约的第三方。

7. 身份验证

密码使用 scrypt 哈希(N=16384, r=8, p=1)。会话通过 HMAC 签名的 HttpOnly Cookie 维持。支持双因素认证:TOTP(Google Authenticator、Aegis、1Password)与短信一次性验证码(Twilio,短信按收件人语言本地化)。

身份验证端点设有速率限制(多次尝试后返回 429)。我们绝不通过邮件发送密码;重置流程使用一次性链接。

8. 备份

每日对数据卷进行加密备份。保留期:滚动 14 天,之后删除。

一份异地加密副本(AES-256)保存于 GitHub 与 Backblaze(美国)OTT/短信消息及其密钥被排除在外,永不离开欧盟。

9. 您的权利(GDPR/第 25 号法律/CCPA)

您享有访问、更正、删除、可携带和反对的权利。请通过 privacy@langreply.com 提交请求,我们将在 30 天内处理。删除采用上文所述的 crypto-shredding 方式。

10. 认证情况——如实相告

我们目前取得 SOC 2、ISO 27001 或 HIPAA 认证。在事实成立之前,我们不会作相反的宣称。本页所述措施确实已经落地;相应的外部审计尚未完成。

11. 我们坦白不作保证的部分

我们宁可说实话,也不愿兜售幻觉。以下是 crypto-shredding 做不到的事:

  • 备份:我们的备份不包含消息表与密钥表——任何还原都无法重新暴露已销毁的消息。我们坦承其代价:一旦数据库丢失,OTT/短信历史将无法找回。
  • 收件人截屏:如果您向某人发送了会消失的消息,对方可以用另一台设备拍下屏幕。世界上没有任何软件能阻止这一点,Signal 也不能。
  • WAL、日志、副本:Postgres 会写事务日志(WAL)。密文字节在被擦除前可能曾驻留其中。这些日志会轮转,但并非瞬时完成。
  • SSD 与磨损均衡:固态硬盘会在物理层面分散写入。逻辑上的 DELETE 未必覆盖物理扇区。正因如此,crypto-shredding 才比物理擦除更可靠——但密文字节仍可能在物理层面残留一段时间。没有密钥,它依旧无法读取。
  • 审计元数据:我们保留最少量的元数据(清除操作的时间戳、IP)以供审计与防滥用。其中不含被销毁的内容。
  • 端到端加密:OTT 消息在服务器侧做了静态加密,但这并非 Signal 意义上的端到端加密(连服务器也无法读取)。只要 DEK 仍存在,LangReply 在技术上就能解密某条消息。我们不这么做——但我们不能声称相反。

12. 报告安全问题

请通过 security@langreply.com 进行协同披露,主题注明 [SECURITY]。我们会在 72 小时内确认收悉,并根据严重程度在合理时间内发布修复或缓解措施。目前尚无正式的漏洞赏金计划;如报告者愿意,我们会予以致谢。

最后更新:2026 年 8 月 6 日。