Proton Authenticator 是一款開放原始碼的雙重驗證 (2FA) 驗證 app,可在您的裝置上產生基於時間的一次性密碼 (TOTP) 代碼,讓您以額外的安全層級存取線上服務。它使用保護 Proton 生態系統其餘部分的相同經充分測試加密技術。Proton Authenticator 的獨特之處在於它是從頭開始設計的,可在幾乎所有平台上使用,同時保留您的隱私並讓您完全擁有自己的資料。

不同於其他驗證 app,Proton Authenticator 使用端對端加密保護您的資料,即使您啟用裝置同步也是如此。

這意味著 Proton Authenticator 防止任何人(包括 Proton 本身)知道您擁有帳號的線上服務。這些資訊就像您的電子郵件或瀏覽記錄一樣,可能會洩露大量關於您的訊息,保護它對於維護您的隱私至關重要。

Proton Authenticator 的端對端加密保證所有密碼編譯操作(包括金鑰產生和資料加密)都在您的裝置上本機執行。這意味著 Proton 無法存取您的未加密資料,也無法與任何第三方共享。Proton 伺服器永遠無法存取您的未加密資料,包括您的 Proton Account 密碼。

加密模型

Proton Authenticator 採取全面的方法來確保所有使用者資料的最大安全性和隱私。所有密碼編譯操作都在您的裝置上本機發生,任何傳輸到伺服器的資料都始終已加密。Proton 永遠無法存取解密使用者資料所需的純文字金鑰,這使得我們不可能解密已儲存的資料,即使第三方要求也是如此。

Proton Authenticator 使用與 Proton Mail 驗證相同的進階加密技術。這包括使用強化版的安全遠端密碼 (SRP) 協定,該協定提供針對中間人 (MITM) 攻擊的更強大安全保證。我們的實作意味著即使攻擊者可以以無法偵測的方式任意讀取、修改、延遲、銷毀、重複或偽造 Proton 與使用者之間的訊息,他們每次登入嘗試也只能檢查單一密碼猜測,相當於嘗試直接登入。這樣一來,即使 Proton 受到入侵並惡意行事,等同密碼的資訊也絕不會洩露。

閱讀更多關於 Proton 的驗證加密資訊

資料加密

Proton Authenticator 允許您安全地儲存您的 2FA 代碼,即使您沒有 Proton Account。這意味著初始加密流程必須完全在您的本機裝置上完成。然後,如果您決定要使用 Proton Account 跨裝置同步您的代碼,我們可以使用儲存在 Proton 伺服器上的密碼編譯金鑰來執行同步。

Proton 加密始於 Proton 伺服器提供根金鑰的已加密版本,驗證 app 使用該金鑰來加密使用者的資料。每個 Proton 使用者都有一個非對稱使用者金鑰,Proton 會在您的裝置上加密此使用者金鑰,如下所示:

  • 使用單一帳號密碼的帳號:Proton 使用帳號密碼和帳號鹽值的 bcrypt 雜湊來加密使用者金鑰。
  • 使用我們多重帳號密碼功能的帳號:Proton 使用金鑰密碼和帳號鹽值的 bcrypt 雜湊來加密使用者金鑰。

Proton Authenticator 使用 bcrypt 和帳號鹽值來雜湊您的密碼,作為針對暴力攻擊的額外保護層。即使惡意行為者存取了 Proton 資料庫,您的帳號金鑰對於暴力攻擊也是安全的。

一旦您啟用同步,Proton Authenticator 會產生一個 32 位元組的隨機 Authenticator Key。此金鑰已使用您的使用者金鑰加密並簽署,確保只有您可以解密它 — 沒有人(甚至 Proton)可以讀取或建立新的 Authenticator Key。一旦您可以存取 Authenticator Key,Proton Authenticator 中的所有項目都會使用 256-bit AES-GCM 進行加密。

由於 Proton Authenticator 不需要 Proton Account,我們還需要一個獨立的加密架構,以便在資料僅存在於您的裝置上時安全地儲存資料。最後,實作此功能最簡單的方法是將 Proton Account 視為獨立的金鑰提供者。最後,它看起來如下:

沒有 Proton Account 的 Proton Authenticator 加密圖表

對於您裝置上的本機金鑰儲存空間,我們依賴每個系統的安全金鑰儲存空間提供者:

  • Android:我們將金鑰安全地儲存在 Android Keystore(新視窗) 中,然後用它來加密我們儲存在應用程式受保護檔案系統中的 Local Random Key。該金鑰用於對稱加密您裝置上的所有 Proton Authenticator 項目。
  • iOS/iPadOS/macOS:我們會產生一個 Local Random Key 並將其儲存在 Keychain 服務(新視窗)中。該金鑰用於對稱加密您裝置上的所有 Proton Authenticator 項目。
  • Windows:我們會產生一個 Local Random Key 並將其儲存在 Windows 認證管理員(新視窗)中。該金鑰用於對稱加密您裝置上的所有 Proton Authenticator 項目。如果無法連線至 WCM,我們允許使用者使用密碼加密其 Local Random Key。
  • Linux:我們會產生一個 Local Random Key 並將其儲存在可用的 DBUS Secret Service 中。該金鑰用於對稱加密您裝置上的所有 Proton Authenticator 項目。如果未設定 DBUS secret service,我們允許使用者使用密碼加密其 Local Random Key。

備份加密

Proton Authenticator 的主要優勢之一是您始終掌控您的資料。這包括允許您定期將代碼備份到您的本機裝置,並設定密碼來加密此敏感資料。

為了實作此安全的本機備份,我們使用您提供的密碼,透過 Argon2 作為 KDF(金鑰衍生函數)來衍生安全加密金鑰。KDF 用於從秘密輸入(如使用者輸入的密碼)產生密碼編譯金鑰,其主要目的是透過增加攻擊者破解密碼的難度和時間來提高安全性。使用此由您密碼產生的加密金鑰,我們將序列化所有項目並將其加密,以確保您的資料保持安全加密,即使備份外洩也是如此。藉由使用眾所周知的開放技術,您無需使用 Proton Authenticator 即可解密您的資料,即使您決定轉移到另一個驗證 app,也能保持掌控權。

透過透明化實現安全

就像所有 Proton 服務一樣,Proton Authenticator 是開放原始碼的。任何人都可以查閱我們的原始碼以驗證我們的安全模型。與我們的其他服務一樣,Proton Authenticator 也將接受定期的獨立安全稽核,我們將在稽核報告出爐後立即公開分享。

最後,對於感興趣的安全研究人員,Proton Authenticator 符合 Proton 的漏洞賞金計畫資格,該計畫為發現 Proton 軟體中錯誤的人員提供高達 100,000 美元的獎勵。