Proton Authenticator 是一款开源的双重验证 (2FA) 身份验证器应用,可在您的设备上生成基于时间的一次性密码 (TOTP) 代码,让您在访问在线服务时获得额外的安全保障。 它采用与 Proton 生态系统其他部分相同的、经过充分测试的加密技术。Proton Authenticator 的独特之处在于,它从设计之初便旨在支持几乎所有平台,同时保护您的隐私,并让您完全掌控自己的数据。
与其他身份验证器应用不同,Proton Authenticator 采用端到端加密来保护您的数据,即使您启用了设备同步也是如此。
这意味着 Proton Authenticator 可防止任何人,包括 Proton 自身,知晓您在哪些在线服务拥有帐户。这类信息与您的电子邮件或浏览历史一样,可以透露许多与您相关的信息,保护这些信息对于维护您的隐私至关重要。
Proton Authenticator 的端到端加密保证所有加密操作,包括密钥生成和数据加密,均在您的设备上本地执行。这意味着 Proton 无法访问您的未加密数据,也不会将其分享给任何第三方。Proton 服务器永远无法访问您的未加密数据,包括您的 Proton 帐户密码。
加密模型
Proton Authenticator 采取全面的方法来确保所有用户数据获得最高级别的安全和隐私保护。所有加密操作均在您的设备上本地进行,任何传输到服务器的数据始终经过加密。Proton 永远无法访问解密用户数据所需的纯文本密钥,因此即使第三方提出要求,我们也无法解密已存储的数据。
Proton Authenticator 采用与 Proton Mail 身份验证相同的高级加密技术,其中包括使用强化版的安全远程密码 (SRP) 协议,该协议可针对中间人 (MITM) 攻击提供更强的安全保障。得益于我们的实现方式,即使攻击者能够以无法察觉的方式任意读取、修改、延迟、销毁、重放或伪造 Proton 与用户之间的消息,其在每次登录尝试中也只能猜测单一密码,相当于直接尝试登录。这样一来,即使 Proton 已遭泄露并恶意行事,与密码等效的信息也不会被泄露
数据加密
即使您没有 Proton 帐户,Proton Authenticator 也允许您安全地存储双重验证 (2FA) 代码。这意味着初始加密过程必须完全在您的本地设备上完成。之后,如果您决定使用 Proton 帐户跨设备同步代码,我们就可以使用存储在 Proton 服务器上的加密密钥来执行同步。
Proton 加密始于 Proton 服务器提供根密钥的已加密版本,身份验证器应用使用该根密钥来加密用户数据。每位 Proton 用户都拥有一个非对称的用户密钥,Proton 会在您的设备上按以下方式对该用户密钥进行加密:
- 使用单一帐户密码的帐户: Proton 使用帐户密码和帐户盐值的 bcrypt 哈希来加密用户密钥。
- 使用多重帐户密码功能的帐户: Proton 使用密钥密码和帐户盐值的 bcrypt 哈希来加密用户密钥。
Proton Authenticator 使用 bcrypt 和帐户盐值对您的密码进行哈希处理,作为抵御暴力破解攻击的额外保护层。即使恶意行为者获得了 Proton 数据库的访问权限,您的帐户密钥也能免受暴力破解攻击。
启用同步后,Proton Authenticator 会生成一个 32 字节的随机身份验证器密钥。该密钥会使用您的用户密钥进行加密和签名,确保只有您本人才能将其解密,任何其他人(包括 Proton)都无法读取或创建新的身份验证器密钥。获得身份验证器密钥后,Proton Authenticator 中的所有条目都会使用 256-bit AES-GCM 进行加密。

由于 Proton Authenticator 不要求使用 Proton 帐户,我们还需要一种单独的加密方案,以便在数据仅存在于您的设备上时安全地存储这些数据。归根结底,实现这一点最简单的方法是将 Proton 帐户视为一个独立的密钥提供方。最终方案如下所示:

对于您设备上的本地密钥存储,我们依赖各系统的安全密钥存储提供方:
- Android:我们将密钥安全地存储在 Android Keystore(新窗口) 中,该密钥随后用于加密我们存储在应用受保护文件系统中的本地随机密钥。该密钥用于以对称方式加密您设备上的所有 Proton Authenticator 条目。
- iOS/iPadOS/macOS:我们生成一个本地随机密钥并将其存储在 钥匙串服务(新窗口)中。该密钥用于以对称方式加密您设备上的所有 Proton Authenticator 条目。
- Windows:我们生成一个本地随机密钥并将其存储在 Windows 凭证管理器(新窗口)中。该密钥用于以对称方式加密您设备上的所有 Proton Authenticator 条目。如果与 WCM 的连接不可用,我们允许用户使用密码来加密其本地随机密钥。
- Linux:我们生成一个本地随机密钥并将其存储在可用的 DBUS Secret Service 中。该密钥用于以对称方式加密您设备上的所有 Proton Authenticator 条目。如果没有配置 DBUS secret service,我们允许用户使用密码来加密其本地随机密钥。
备份加密
Proton Authenticator 的主要优势之一是您始终掌控自己的数据。这包括允许您定期将代码备份到本地设备,并设置密码对这些敏感数据进行加密。
为实现这种安全的本地备份,我们使用您提供的密码,以 Argon2 作为密钥推导函数 (KDF) 来生成一个安全的加密密钥。KDF 用于根据用户输入的密码等机密输入生成加密密钥,其主要目的是通过增加攻击者破解密码的难度和耗时来提升安全性。借助这个由您的密码生成的加密密钥,我们会对您的所有条目进行序列化并加密,确保即使备份泄露,您的数据依然保持安全加密状态。而且,由于使用的是众所周知且开放的技术,您无需使用 Proton Authenticator 即可解密自己的数据,即使您决定迁移到其他身份验证器应用,也能始终掌控局面。
以透明实现安全
与所有 Proton 服务一样,Proton Authenticator 是开放源码的。任何人都可以查阅我们的源代码来验证我们的安全模型。与我们的其他服务一样,Proton Authenticator 也将定期接受独立安全审计,审计报告一经发布,我们就会公开分享
最后,对于感兴趣的安全研究人员,Proton Authenticator 也符合 Proton 漏洞赏金计划 的参与条件,该计划为发现 Proton 软件中的问题提供最高 100,000 美元的奖励






