多重要素驗證 / 雙重認證 (MFA / 2FA)

歡迎到我的Blog看這篇文章~

https://myblog-jeserlin.vercel.app/tech/mfa-2fa

近來我們會發現有越來越多的網站開始支援雙重認證甚至是多重驗證,這是因為單一要素驗證 — 也就是我們常見的輸入帳號密碼的這種驗證方式,他的安全度已經遠遠不足了。

試想一下,如果駭客透過不法手段竊取了你的帳號及密碼,那麼他就可以輕易地登入你的帳號獲取你的資料,甚至是進入你的公司網路造成更大的損失。

但是這類的事情實在防不慎防,為了降低風險&提升帳號安全,開始出現了雙重認證以及多重驗證

名詞解釋

  • 多重驗證 (Multi-factor authentication,縮寫為MFA): 又稱為多因子認證, 多因素驗證, 多因素認證, 使用者需要透過兩種以上的認證機制才能得到授權,使用電腦資源。
  • 雙重認證 (Two-factor authentication,縮寫為2FA): 又稱為雙重驗證, 雙因子認證, 雙因素認證二元認證。是多重要素驗證中的一個特例,使用兩種不同的元素,合併在一起,來確認使用者的身分。

驗證機制

使用者提供的片段資訊來驗證自己的身分,目前有以下5種驗證機制:

  • 知識驗證 (Knowledge Factor): 驗證你知道什麼, e.g. 密碼
  • 持有驗證 (Possession Factor): 驗證是否持有, e.g. 手機security token, OTP (一次性密碼)
  • 固有驗證 (Inherence Factor): 驗證你的身分, e.g. 指紋虹膜
  • 地域驗證 (Location Factor): 驗證你的地理位置,e.g. IP。舉例來說,平常你都是在台灣登入帳號,如果突然間登入的位置出現在美國,那麼就會視為異常登入。
  • 時間驗證 (Time Factor): 驗證你的時間,假設對公司電腦的預期登入時間是早上9點到下午6點,如果出現了不在這個時間範圍的登入紀錄就會判定為非預期登入。

雙重認證的種類

簡訊驗證 (SMS 2FA)

  • 優點
    • 使用簡單: 發送簡訊到使用者的手機,使用者只需要輸入收到的驗證碼就可以通過驗證
    • 快速方便: 當發生可疑活動時,只有持有綁定裝置的使用者可以驗證登入活動是否異常,是一種快速驗證身分的方式
    • 普及化:簡訊驗證是最古早的雙重驗證,接受度跟普及度都很高
  • 缺點
    • 需要手機號碼:使用者的手機會暴露到第三方的軟體,會有隱私的疑慮也有可能會稱為廣告的目標。
    • 需要數據網路:簡訊驗證需要可以接收簡訊的手機,如果手機壞掉,遺失或是沒有數據網路,使用者就無法收到驗證簡訊

基於時間的一次性密碼演算法 (TOTP 2FA, Time-based One-Time Password)

TOTP驗證會在使用者嘗試登入的設備上產生一組key,這組key一般會以QR code的形式呈現,使用者可以用設備掃描從authenticator獲取數字密碼(passcode)並登入。而數字密碼(passcode)會在一段時間後過期,並且在使用者下次登入時產生另一組新的數字密碼(passcode)。

  • 優點
    • 靈活性:提供了更多的彈性讓使用者可以獲取數字密碼(passcode)。相較於SMS 2FA,SMS 2FA只能透過指定的設備來接收簡訊獲取數字密碼(passcode),而TOTP 2FA不限定設備,只要能掃描QR code就能獲取密碼。
    • 改善登入流程:Mobile authenticators可以紀錄上一次登入的帳號,因此使用者可以在沒有數據網路的情況下獲取數字密碼(passcode)。
  • 缺點
    • 需要設備:TOTP 2FA需要一個能掃描QR code的設備來完成驗證。如果使用者的設備或QR code遺失或被偷走了,也許就無法再登入。

Push-Based 2FA

Push-Based 2FA可以同時透過多種驗證其實驗證使用者的身分,改善了SMS 2FA和TOTP 2FA。

  • 優點
    • 防止網路釣魚:Push-Based 2FA不需要使用者自己輸入數字密碼(passcode),取而代之的是發送一個通知到使用者的手機上。這個通知會包含:登入地點,時間,IP等等的資訊,讓使用者判斷這是否為安全的登入行為。
    • 使用簡單:一旦設定好之後,之後只需要在手機上確認登入通知。
    • 可擴展性:因為使用方式簡單,組織可以很容易讓成員使用。
  • 缺點
    • 需要數據網路:Push-based 2F透過數據網路發送通知到手機上,使用者的手機需要有網路才能完成驗證。
    • 需要資安意識:使用者需要有足夠的資安意識來驗證通知的內容。

安全金鑰 (U2F tokens)

U2F Tokens透過實體的金鑰在使用者登入時驗證地點和身分。使用方式是將安全金鑰插入設備中,然後按金鑰上面的按鈕,啟動之後會輸入密碼(PIN)就可以完成驗證並登入了。

  • 優點
    • 防止網路釣魚:需要在將金鑰插入在設備上,因此可以防止密碼(PIN)被竊取。
    • 可以備份:U2F tokens可以在多個設備上備份,而且在遺失時也支援更換取代原本的token。
    • 使用簡單:只需要簡單的設定就能使用,操作方式也能輕易上手。
  • 缺點
    • 不普遍:目前算是比較新的驗證方式,因此支援度不廣。
    • 需要實體金鑰:實體的物品就會有遺失跟損壞的風險。

Web 身分驗證 (WebAuthn, Web Authentication API)

WebAuthn是由W3C和FIDO 聯盟制定的官方標準,適用於各平台與瀏覽器,具備簡單和強大的認證能力,允許使用者選擇指紋識別、面部識別、虹膜識別、聲音識別、實體密鑰來登入帳戶,目標是實現無密碼登入。

  • 優點
    • 便利:使用者只需要有支援WebAuthn的瀏覽器,OS和驗證機制。
    • 更加安全:WebAuthn是目前最安全的驗證機制之一,他支援透過生物辨識的方式提供獨一無二的憑證給特定的服務,也就意味著服務之間不會需要共享密碼。
  • 缺點
    • 難以恢復帳號:WebAuthn密碼是綁定於單一設備上,因此恢復帳號會有一定的難度。

資料來源