Recca Chao 的 gitHub page

推廣網站開發,包含 Laravel 和 Kotlin 後端撰寫、自動化測試、讀書心得等。Taiwan Kotlin User Group 管理員。

View on GitHub

翻譯自

https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Multifactor_Authentication_Cheat_Sheet.md


多因素認證速查表

簡介

多因素認證(MFA)或雙因素認證(2FA)是指用戶需要提供多種類型的證據才能在系統上進行身份驗證。有五種不同類型的證據(或因素),可以使用任何組合,但實際上在網絡應用程序中通常只有前三種是常見的。這五種類型如下:

因素 範例
你所知道的東西 密碼和PIN碼, 安全問題
你所擁有的東西 一次性密碼令牌, U2F令牌, 憑證,智慧卡, 電子郵件, 簡訊和電話
你的身份 指紋、臉部識別、虹膜掃描
你所在的地方 來源IP地址, 地理位置, 地理圍欄
你所做的事情 行為分析, 按鍵和滑鼠動態, 步態分析

應當注意,要求多個相同身份驗證因素的實例(例如需要密碼和PIN碼)並不構成MFA,並且提供的額外安全性極小。使用的因素應該彼此獨立,並且不應該能夠被同一攻擊破壞。儘管以下各節討論了各種不同類型MFA的缺點和弱點,在許多情況下這些只針對有針對性的攻擊。任何MFA都比沒有MFA好

優勢

應用程序中用戶帳戶最常被破壞的方式是通過弱密碼、重複使用的密碼或被盜的密碼。儘管應用程序實施了任何技術安全控制,用戶可能會選擇弱密碼,或在不同應用程序上使用相同的密碼。作為開發人員或系統管理員,應該假設用戶的密碼在某個時候會被破解,並且系統應該設計成能夠抵禦這種情況。

MFA 是目前對抗大多數與密碼相關攻擊的最佳防禦方式,包括暴力破解、憑證填充 和密碼噴灑攻擊,根據 Microsoft 的分析,MFA 可能已經阻止了99.9%的帳戶被入侵

缺點

MFA 最大的缺點是增加了管理複雜性,對管理員和最終用戶都是如此。許多非技術性的用戶可能會發現配置和使用 MFA 很困難。此外,還存在一些其他常見問題:

快速建議

MFA 在應用程式中的實施時間和方式將取決於多個不同因素,包括應用程式的威脅模型、用戶的技術水平以及對用戶的管理控制級別。這些因素需要根據每個應用程式進行考慮。

然而,以下建議通常適用於大多數應用程式,並提供了一個初始的考慮起點。

實施 MFA

MFA 是一個重要的安全控制,建議所有應用程式都應使用。以下各節提供了有關如何實施 MFA 以及應考慮的事項的指導。

法規和合規要求

許多行業和國家都有要求使用 MFA 的法規。這在金融和醫療保健行業特別常見,通常需要遵守歐盟的《一般資料保護規則》(GDPR)。在實施 MFA 時,考慮這些要求是很重要的。

何時需要 MFA

在應用程式中要求 MFA 最重要的地方是當用戶登錄時。但是,根據可用的功能,也可能需要在執行敏感操作時要求 MFA,例如:

如果應用程式提供多種用戶驗證方式,則所有這些方式都應要求 MFA,或實施其他保護措施。一個常見被忽略的地方是,如果應用程式提供了一個可用於登錄的獨立 API,或者有一個相關的移動應用程式。

改善用戶體驗

基於風險的驗證

頻繁使用 MFA 登錄對用戶來說是一種額外負擔,可能會導致他們在應用程式上停用 MFA。基於風險的驗證可用於減少 MFA 提示的頻率,只有在用戶執行被認為是高風險的操作時才需要 MFA。一些例子包括:

密鑰

基於 FIDO2 標準的 Passkeys 是一種結合 基於擁有物基於知識基於固有性 驗證特性的新型 MFA 形式。用戶需要擁有一個物理設備(例如手機)並輸入 PIN 或使用 生物特徵驗證 來進行驗證。然後,用戶的設備生成一個用於與伺服器進行驗證的加密金鑰。這是一種非常安全的 MFA 形式,對釣魚攻擊具有抵抗力,同時對用戶來說也是無縫的。

登入失敗嘗試

當使用者輸入密碼,但在使用第二因素進行驗證時失敗時,這可能意味著兩種情況之一:

當發生這種情況時,應採取一些步驟:

重設 MFA

實施 MFA 的最大挑戰之一是處理忘記或遺失額外因素的使用者。這可能以多種方式發生,例如:

為了防止使用者被鎖定在應用程式之外,需要一個機制讓他們重新獲得帳戶存取權,如果他們無法使用現有的 MFA;然而,同時也至關重要的是,這不應提供攻擊者繞過 MFA 並劫持其帳戶的方法。

沒有明確的「最佳方式」來做到這一點,適當的方式將根據應用程式的安全性以及對使用者的控制程度而有很大差異。對於所有員工彼此認識的企業應用程式有效的解決方案,對於全球數千名使用者的公開應用程式可能不可行。每種恢復方法都有其優點和缺點,這些需要在應用程式的情況下進行評估。

一些可能方法的建議包括:

考慮使用第三方服務

有許多第三方服務提供多因素認證作為服務。這對於沒有資源實施多因素認證的應用程式或需要對其多因素認證有高度保證的應用程式來說是一個不錯的選擇。然而,重要的是要考慮第三方服務的安全性,以及使用它的影響。例如,如果第三方服務受到破壞,可能會允許攻擊者繞過使用它的所有應用程式的多因素認證。

你所知道的東西

基於知識的認證是最常見的一種,它基於使用者所知道的東西 - 通常是密碼。這個因素的最大優勢是對開發人員和最終用戶的要求非常低,因為它不需要任何特殊硬體,也不需要與其他服務集成。

密碼和PIN碼

密碼和PIN碼是最常見的認證形式,因為實施它們非常簡單。認證防範小抄提供了如何實施強密碼政策的指導,而密碼存儲小抄提供了如何安全存儲密碼的指導。大多數多因素認證系統使用密碼以及至少另一個因素。

優點

缺點

安全問題

根據NIST SP 800-63,安全問題不再被認為是一個可接受的認證因素。帳戶恢復只是一種替代的驗證方式,因此它的安全性不應比常規驗證方式更弱。

優點

缺點

擁有的東西

基於擁有的身份驗證是基於用戶擁有一個物理或數位項目,該項目是需要進行身份驗證的。這是最常見的多因素認證形式,通常與密碼一起使用。最常見的基於擁有的身份驗證類型是硬體和軟體令牌,以及數位憑證。如果實施得當,這對於遠程攻擊者來說可能會更難以破解;然而,這也會給用戶帶來額外的管理負擔,因為他們必須隨身攜帶身份驗證因素,每次想要使用時都需要。

一次性密碼令牌

一次性密碼(OTP)令牌是一種基於擁有的身份驗證形式,用戶需要提交一個不斷變化的數字代碼以進行身份驗證。其中最常見的是基於時間的一次性密碼(TOTP)令牌,可以是硬體或軟體基礎。

硬體 OTP 令牌

硬體 OTP 令牌生成不斷變化的數字代碼,在進行身份驗證時必須提交。其中最著名的是 RSA SecureID,它生成一個每 60 秒變化一次的六位數字。

優點
缺點

軟體 OTP 令牌

使用軟體生成基於時間的一次性密碼(TOTP)代碼是硬體令牌的一種更便宜和更簡單的替代方案。這通常涉及用戶在其手機上安裝 TOTP 應用程序,然後掃描網絡應用程序提供的 QR 碼,該 QR 碼提供了初始種子。驗證器應用程序然後每 60 秒生成一個六位數字,方式與硬體令牌類似。

大多數網站使用標準化的 TOTP 標記,允許用戶安裝支援 TOTP 的任何驗證器應用程式。然而,少數應用程式使用自己的變體(例如 Symantec),這需要用戶安裝特定應用程式才能使用服務。應該避免這種做法,而採用基於標準的方法。

優點
缺點

通用第二因素

硬體 U2F 標記

通用第二因素(U2F)是一種 USB/NFC 硬體標記的標準,實現基於挑戰-回應的驗證,而不需要用戶手動輸入代碼。這通常是由用戶按下標記上的按鈕,或將其靠近 NFC 讀卡器來完成的。最常見的 U2F 標記是 YubiKey

優點

缺點

憑證

數位憑證是存儲在使用者設備上的文件,當進行身份驗證時,這些憑證會自動與使用者的密碼一起提供。最常見的類型是 X.509 憑證,更常被稱為客戶端憑證。憑證受到所有主要網頁瀏覽器的支持,一旦安裝,使用者無需進一步操作。應將憑證與個人使用者帳戶相關聯,以防止使用者嘗試對其他帳戶進行身份驗證。

優點

缺點

智慧卡

智慧卡是信用卡大小的卡片,其中包含用於使用者的數位憑證,該憑證通過 PIN 解鎖。它們通常用於作業系統身份驗證,但在網頁應用程式中很少使用。

優點

缺點

簡訊和電話通話

簡訊或電話通話可用於向用戶提供一次性代碼,用戶必須將其提交作為額外的驗證因素。由於這些方法帶來的風險,不應用於保護包含個人身份信息(PII)或存在財務風險的應用程序,例如醫療保健和銀行業。例如,NIST SP 800-63 不允許這些因素用於包含 PII 的應用程序。

優點

缺點

電子郵件

電子郵件驗證要求用戶輸入發送到其電子郵件地址的代碼或點擊鏈接。關於電子郵件是否構成多因素驗證的爭議,因為如果用戶在其電子郵件帳戶上未配置多因素驗證,則僅需要知道用戶的電子郵件密碼(通常與其應用程序密碼相同)。但是,出於完整性考量,這裡將其包含在內。

優點

缺點

您所擁有的

基於遺傳的身份驗證基於用戶的物理屬性。這對於 Web 應用程序來說不太常見,因為它要求用戶擁有特定的硬件,並且在隱私方面通常被認為是最具侵入性的。但是,它通常用於操作系統身份驗證,也用於一些移動應用程序中。

生物辨識

有許多常見的生物辨識類型,包括:

優點

缺點

您所在的位置

基於位置的身份驗證是基於用戶的實際位置。有時會爭論在決定是否需要多因素驗證時是否使用位置(如上文所述),但實際上這與將其視為一個獨立因素是相同的。其中兩個突出的例子是 Microsoft Azure 中提供的條件存取策略以及 BitLocker 中的網路解鎖功能。

來源 IP 位址

用戶連接的來源 IP 位址可以作為一個因素,通常是基於白名單的方法。這可以基於靜態列表(例如企業辦公室範圍)或動態列表(例如用戶先前驗證的 IP 位址)。

優點

缺點

地理位置

與使用用戶的確切 IP 位址不同,可以使用 IP 位址註冊的地理位置。這不太精確,但在 IP 位址不是靜態的環境中實施可能更可行。一個常見的用法是在從用戶正常國家以外進行驗證時要求額外的驗證因素。


原始連結:https://www.example.com

優點

缺點

地理圍欄

地理圍欄是地理定位的更精確版本,允許使用者定義一個特定區域,其中他們被允許進行身份驗證。這通常用於移動應用程式,使用地理定位硬體(如 GPS)可以高度準確地確定使用者的位置。

優點

缺點

某些您所做的事情

基於行為的身份驗證是基於使用者的行為,例如他們的打字方式、移動滑鼠的方式或使用移動裝置的方式。這是 MFA 中最不常見的形式,結合其他因素以提高對使用者身份的保證程度。這也是最難實施的方式,可能需要特定硬體以及大量數據和處理能力來分析使用者的行為。

行為分析

行為分析是基於使用者與應用程式的互動方式,例如他們登入的時間、使用的裝置以及他們在應用程式中導覽的方式。當與 風險基礎身份驗證用戶和實體行為分析(UEBA)系統結合時,在 Web 應用程式中變得越來越普遍。

優點

缺點

鍵盤和滑鼠動態

鍵盤和滑鼠動態是基於使用者的打字和滑鼠移動方式。例如,按鍵之間的時間、按鍵和釋放之間的時間,以及滑鼠的速度和加速度。這在很大程度上是理論性的,實際上並不廣泛使用。

優點

缺點

步態分析

步態分析是基於使用者步行方式的分析,使用攝像頭和感應器。它們通常用於物理安全系統,但在 Web 應用中並不廣泛使用。移動設備應用程序可能能夠使用加速計來檢測使用者的步態,並將其用作額外因素,但這仍然在很大程度上是理論性的。

優點

缺點

參考資料和進一步閱讀