💡 先搞懂問題
登入一個系統,本質上是要向它證明「我就是這個帳號的主人」。最古老的做法是密碼:只有本人知道的一串字。問題是密碼太容易外流,被釣魚騙走、在別的網站外洩後被拿來試登、或被猜中,一旦落入別人手裡,系統分不出來輸入的人到底是不是你。於是我們替登入多加幾道證明,這就是多因子驗證(MFA,Multi-Factor Authentication)。
但是「多加幾道」不是隨便加。驗證因子分成三大類:所知(你知道的東西,像密碼、PIN)、所持(你持有的東西,像手機、IC 卡、硬體金鑰)、所是(你天生的特徵,像指紋、臉)。真正的多因子,必須結合不同類別;如果只是密碼再加一個安全問題,兩者都屬「所知」,攻擊者騙到一個往往就能騙到另一個,防護幾乎沒有變強。下面這張圖可以切換,看看不同組合算不算多因子。
用一個比喻來想:到銀行臨櫃領錢
你走到銀行櫃檯要領一筆錢。行員會做三件不同性質的核對:問你設定的提款密碼(只有你知道),請你出示存摺或提款卡(只有你持有),再抬頭看你的長相對一下證件(你天生的樣子)。這三樣分屬三種來源,路人就算偷聽到密碼,還是拿不出你的存摺、也長得不像你,冒領就難得多。
如果行員只是把「請說密碼」問兩次,或另外問「你母親的娘家姓」,看似多了一關,其實仍然只考「你知道什麼」。偷聽到的人可能連這些都一起套走。
回到資安,櫃檯的三種核對就對應三類驗證因子。提款密碼是所知(Something you know),存摺提款卡是所持(Something you have),長相是所是(Something you are,生物辨識)。
多因子的價值,來自「攻擊者必須同時偷到不同性質的東西」。密碼加安全問題只是所知一類,不算真正的多因子;密碼加手機上的一次性驗證碼(所知+所持)、或密碼加指紋(所知+所是)才算。
🎮 互動實驗室
四個實驗室分別練習「因子怎麼分類、什麼才算 MFA」、「AitM 釣魚怎麼一步步繞過驗證碼」、「推播疲勞轟炸與號碼比對」與「生物辨識門檻怎麼取捨」。所有畫面都是教學模擬,不會連到任何真實系統,也不是可用來攻擊的工具;出現的網域、號碼都是示意。
1因子分類台
下面有十種常見的驗證方式。先點一種方式(它會出現藍色外框),再點「所知/所持/所是」其中一格把它放進去,放下去就會立刻告訴你分對還是分錯。全部分完後,用下方的「組合判斷」挑兩種方式,看看這樣組出來算不算多因子。
所知
所持
所是
2AitM 釣魚逐步播放
AitM(Adversary-in-the-Middle,中間人對手)釣魚,是在你和真網站之間架一個「假登入頁」,它其實是一台反向代理:你打什麼,它就即時轉送給真網站。先選一種你在用的 MFA,再按「▶ 下一步」逐步播放,看帳密與驗證碼怎麼被轉送、工作階段(登入後的 Session Cookie)怎麼被偷走,以及切到 FIDO2 時是在哪一步被擋下來。示意網域用差一個字的 examp1e-bank.com 代表假站、example-bank.com 代表真站。
3MFA 疲勞轟炸
假設攻擊者已經拿到你的帳號密碼,只差最後那道推播確認。他不斷發動登入,你的手機就一直跳出「是否允許登入?」的通知,指望你被煩到隨手按下允許,這叫 MFA 疲勞轟炸(MFA Fatigue)。先用「一般推播」模式體驗只有允許/拒絕會怎樣,再切到「號碼比對」模式,看多了一個步驟後攻擊怎麼被卡住。
4FAR/FRR 門檻滑桿
生物辨識不是比對「一模一樣」,而是比對「夠不夠像」,由一個相似度門檻決定要多像才算是本人。門檻拉得越嚴,冒充者越難矇混(誤接受率 FAR 下降),但本人也越容易被誤擋(誤拒絕率 FRR 上升);拉得越鬆則相反。拖動滑桿,看兩條曲線怎麼一升一降、在哪裡交會,那個交會點就是交叉錯誤率 CER。曲線是示意模型,用來理解取捨方向,不是任何實際產品的數據。
冒充者被放進來
本人被擋在外
兩者相等處
📘 原理補完
抗釣魚程度:為什麼同樣是 MFA,差別這麼大
加了第二因子不代表就能防釣魚,關鍵在於這個因子「會不會被騙去、轉送給攻擊者」。凡是最後產生一串人看得懂、打得出來的數字或一個「按下同意」的動作,都可能在 AitM 攻擊裡被整份轉走。點下方的方式,看它為什麼落在這個位置。
點左圖任一格或上方按鈕,看那一種方式的抗釣魚說明。
簡訊 OTP 還多一個弱點:驗證碼經過電信網路傳送,可能被 SIM 卡側錄、SIM 交換(把你的門號轉到攻擊者手上)或惡意程式攔截。TOTP 驗證器 App 不經過電信網路,比簡訊安全一些,但它產生的仍是可被抄走、可被轉送的數字。推播把「輸入數字」改成「按下同意」,方便了使用者,卻也讓疲勞轟炸有機可乘。這三者都擋不住 AitM,因為攻擊者要的不是「破解」這串數字,而是「即時轉送」它。
FIDO2/WebAuthn:把驗證結果綁在真網域上
FIDO2 是 FIDO 聯盟制定的規格,搭配 W3C 的 WebAuthn 標準,在瀏覽器裡運作;用它登入而不再打密碼時,一般稱為通行金鑰(Passkey)。它的關鍵,是不再交出「一串可被轉述的東西」。註冊時,你的裝置(手機的安全晶片,或一支像 USB 隨身碟的安全金鑰)產生一組公私鑰:公鑰交給網站保存,私鑰永遠留在裝置裡,不會送出。登入時,網站送來一個隨機的挑戰值(Challenge),裝置用私鑰簽名,而簽名的內容裡包含瀏覽器當下實際連到的網域(Origin)。真網站收到簽名,用公鑰驗證,並檢查裡面的網域是不是自己。點下方按鈕,逐步看真網站與假網站的差別。
這就是「來源綁定(Origin Binding)」:即使你被騙到 examp1e-bank.com,瀏覽器產生的簽名綁的是這個假網域,真網站 example-bank.com 一驗就發現網域不符而拒絕,攻擊者拿到的簽名在真站上毫無用處。加上私鑰從不離開裝置,假頁面根本沒有東西可以轉送。以私鑰簽章的憑證式驗證(例如智慧卡、PKI)也是同樣道理,一併列為抗釣魚等級。FIDO2 的限制是裝置一旦遺失,需要事先準備好安全的備援與復原流程(例如註冊第二支金鑰),否則可能把自己鎖在門外。
生物辨識:FAR、FRR 與 CER 是什麼意思
生物辨識比對的是相似度,因此一定會有兩種錯誤。誤接受率(FAR,False Acceptance Rate)是把冒充者當成本人放進來,屬於安全問題;誤拒絕率(FRR,False Rejection Rate)是把本人擋在門外,屬於便利問題。調整判斷門檻時,兩者會往相反方向變動:要更安全就壓低 FAR,代價是 FRR 上升,正當使用者更常被擋。把門檻從鬆調到嚴,畫出這兩條曲線,它們相交的那一點叫交叉錯誤率(CER,Crossover Error Rate,也叫 EER 等錯誤率)。CER 是拿來比較不同生物辨識系統準確度的單一指標,CER 越低,代表這個系統整體越準。
另外要注意呈現攻擊(Presentation Attack):拿照片、面具、錄音或深偽(Deepfake)影像來冒充,對策是加上活體偵測(Liveness Detection),確認鏡頭前是活生生的人而不是一張照片。還有一點常被忽略:生物特徵無法像密碼一樣「改掉」,指紋或臉外洩後不能重設,所以主流做法(包含 FIDO2)是把生物特徵留在使用者的裝置上做比對、不上傳伺服器。
| 指標 | 意思 | 屬於什麼問題 | 要改善時怎麼調 |
|---|---|---|---|
| FAR 誤接受率 | 冒充者被當成本人放行 | 安全問題 | 把門檻調嚴以壓低(FRR 會隨之上升) |
| FRR 誤拒絕率 | 本人被系統誤擋 | 便利問題 | 把門檻放鬆以降低(FAR 會隨之上升) |
| CER 交叉錯誤率 | FAR 與 FRR 相等時的錯誤率 | 整體準確度指標 | 選用 CER 較低的系統或演算法 |
容易混淆的地方
兩個同類不算多因子。密碼加安全問題、密碼加 PIN,都仍然只是「所知」一類,不構成多因子。多因子一定要跨不同類別。
不是所有 MFA 都抗釣魚。題目問「哪種 MFA 擋得住 AitM 或釣魚」,答案是 FIDO2/WebAuthn/Passkey 或 PKI 憑證式驗證;簡訊 OTP、TOTP、推播都可能被即時轉送。「把密碼變更長、更常換」對 AitM 完全無效,是常見誘答。
AitM 不是撞庫。撞庫(憑證填充)是拿別處外洩的舊帳密到處試登;AitM 是即時騙走你當下輸入的帳密與驗證碼,並偷走登入後的工作階段 Cookie,之後連 MFA 都不必再過。
FAR 高不是「比較安全」。FAR 是誤接受,越高代表越容易被冒充,是壞事;要更安全是壓低 FAR。CER 也是越低越好,不要看到數字大就以為厲害。
✅ 自我檢測
以下是原創情境題,點選答案後會立即顯示對錯與解析。
🎯 重點整理
- 三類因子:所知(密碼、PIN、安全問題)、所持(手機 OTP、IC 卡、硬體金鑰)、所是(指紋、臉、虹膜)。多因子必須跨不同類別,兩個所知不算 MFA。
- 抗釣魚程度:簡訊 OTP、TOTP、推播都可能被 AitM 即時轉送,屬於較弱;FIDO2/WebAuthn/Passkey 與 PKI 憑證式驗證才是抗釣魚等級。
- AitM(中間人對手):假登入頁當反向代理,即時轉送帳密與驗證碼,偷走登入後的 Session Cookie,之後不必再過 MFA。加強密碼強度對它無效。
- MFA 疲勞轟炸:狂發推播誘使誤按同意;緩解靠號碼比對(要在手機輸入與登入畫面相同的號碼)、限制推播頻率、顯示登入地點與裝置。
- FIDO2 為什麼有效:私鑰不離開裝置、簽章綁定實際連線的網域(來源綁定),假網站的網域對不上,簽章在真站無效。
- 生物辨識:FAR 誤接受(安全問題)、FRR 誤拒絕(便利問題);門檻調嚴則 FAR↓、FRR↑。CER 是兩者相等處,越低越準。
- 生物特徵無法重設,主流做法留在裝置比對、不上傳;防照片與深偽要靠活體偵測。