什麼係雙重認證?淺白指南
雙重認證(2FA)係一種登入方式,要求你提供兩種唔同類型嘅證明,證明你就係你所講嘅人。典型嘅組合係:你知道嘅嘢,例如密碼;加上你擁有嘅嘢,例如你嘅手機或者安全金鑰。如果有人偷到或者估中咗你嘅密碼,佢冇第二重證明都係入唔到。呢個係保護重要帳戶最簡單嘅方法之一。
用 AI 建構時點解雙重認證重要
當你問 AI 建構工具要「登入」功能,通常會得到電郵同密碼嘅組合。呢個係好嘅起點,但密碼會被重複使用、被釣魚,亦會外洩。如果你嘅 App 持有任何有價值嘅嘢,例如客戶紀錄、發票、管理控制或者付款設定,一個被盜嘅密碼就可能令全部資料外洩。
2FA 亦會影響一啲你起初可能唔會諗到嘅決定:
- 邊個必須使用。 所有人都選用、管理員必須使用,定係所有人都必須使用?
- 支援邊啲方法。 認證應用程式嘅驗證碼、短訊、通行密鑰、安全金鑰。
- 用戶被鎖出之後點算。 遺失手機係任何有 2FA 嘅 App 最常見嘅支援要求。
- 喺邊度強制執行。 檢查必須喺伺服器上進行。如果 2FA 畫面只係喺瀏覽器入面隱藏頁面,就可以被繞過。
你唔需要自己寫加密技術,成熟嘅函式庫同認證服務商會處理。但你要知道應該要求乜嘢。
日常比喻
諗吓銀行嘅保險箱。要打開佢,你要出示身份證明(銀行核實嘅係你是或者知道嘅嘢),同時要有實體鎖匙(你擁有嘅嘢)。一個偷咗你簽名嘅賊,仍然冇鎖匙;一個扒咗鎖匙嘅賊,又過唔到身份核實。
2FA 嘅運作都係咁。密碼好似簽名,手機或者安全金鑰就好似實體鎖匙。單獨一樣都唔夠。
三類證明
安全標準,例如美國國家標準與技術研究院(NIST)嘅數碼身份指引,將證明分成三類:
| 證明類別 | 例子 |
|---|---|
| 你知道嘅嘢 | 密碼、PIN |
| 你擁有嘅嘢 | 裝有認證應用程式嘅手機、安全金鑰、儲存咗通行密鑰嘅裝置 |
| 你係嘅人 | 指紋、人臉,通常用嚟解鎖裝置,再由裝置完成真正嘅核實 |
關鍵字係「不同」。密碼加安全問題,兩樣都係你知道嘅嘢,所以唔算真正嘅雙重認證。如果同一次外洩就可以兩樣都攞到,咁只算一重。
常見 2FA 方法比較
| 方法 | 運作方式 | 穩陣程度 | 備註 |
|---|---|---|---|
| 短訊驗證碼 | 驗證碼以短訊發送到你嘅手機號碼 | 最弱 | 容易受 SIM 卡調包同釣魚影響,但仍然遠勝冇 2FA |
| 電郵驗證碼 | 驗證碼以電郵發送俾你 | 弱 | 安全程度只取決於電郵帳戶 |
| 認證應用程式(TOTP) | 例如 Google Authenticator 之類嘅應用程式,通常每 30 秒生成一組新嘅 6 位數字驗證碼 | 好 | 離線都可以用;但如果假網站要求你輸入驗證碼,仍然可能被釣魚 |
| 推送確認 | 應用程式問「係你嗎?」,你點一下批准 | 好 | 留意「批准疲勞」,即用戶因為提示太多而不假思索咁一律按同意 |
| 通行密鑰或安全金鑰 | 裝置上嘅加密金鑰證明你身處真正嘅網站 | 最強 | 唔會回應冒牌網域,所以能抵抗釣魚 |
NIST 嘅指引將需要打驗證碼嘅方法(短訊、電郵、認證應用程式)視為唔能抵抗釣魚,並將經電話網絡發送驗證碼列為「受限制」。而基於 WebAuthn/FIDO2 標準嘅通行密鑰同硬件安全金鑰,則被視為能抵抗釣魚。
實際結論:認證應用程式對大部分 App 嚟講係一個強大而又容易設定嘅預設選擇;如果你嘅用戶願意用,提供通行密鑰亦都值得。
實際例子:客戶入口網站嘅 2FA
假設你建咗一個入口網站,讓一間小型會計師樓同客戶分享稅務文件。以下係一個合理嘅 2FA 設定,逐步解說。
開啟(登記)。 客戶 Priya 打開設定,撳「開啟雙重認證」。App 會生成一個秘密金鑰,並以 QR 碼顯示。她用認證應用程式掃描,應用程式就開始顯示 6 位數字驗證碼。她將當前嘅驗證碼輸入入口網站,證明設定成功。App 會顯示十個恢復碼,並提示她將佢哋妥善保存。
之後登入。
- Priya 輸入電郵同密碼。伺服器核對佢哋。
- 伺服器唔會即刻讓她登入,而係將工作階段標記為「密碼正確,待第二重證明」,然後顯示驗證碼畫面。
- 她輸入認證應用程式嘅驗證碼。伺服器用佢儲存嘅秘密金鑰核對,並容許少少時鐘誤差。
- 只有到呢一步,伺服器先會建立完整嘅工作階段,讓她睇到文件。
攻擊者會見到乜。 如果 Priya 嘅密碼係由另一個網站外洩,攻擊者會卡喺第 3 步。每次驗證碼輸入錯誤都會被計算,連續多次錯誤之後,帳戶會被暫時鎖定,Priya 亦會收到電郵。
遺失手機。 Priya 可以用其中一個恢復碼登入,關閉再重新開啟 2FA(用新手機),並獲得新嘅恢復碼。已用過嘅恢復碼永遠唔可以再用。
對員工。 會計師樓嘅員工可以睇到每位客戶嘅所有文件,所以入口網站要求員工帳戶必須使用 2FA;未登記之前,佢哋連儀表板都入唔到。
常用詞語解釋
| 詞語 | 意思 |
|---|---|
| 2FA/MFA | 雙重/多重認證:用多於一種證明方式登入。 |
| 證明因素(Factor) | 一種證明方式:你知道、擁有或者係嘅嘢。 |
| TOTP | 基於時間嘅一次性密碼,即認證應用程式使用嘅輪換驗證碼。 |
| 共享秘密(Shared secret) | 透過 QR 碼設定嘅隱藏值,讓 App 同你嘅手機都可以生成相同嘅驗證碼。 |
| 恢復(後備)碼 | 用於遺失第二重證明時登入嘅一次性代碼。 |
| 通行密鑰(Passkey) | 儲存喺你裝置上嘅登入憑證,用公開密鑰加密技術代替密碼。 |
| 安全金鑰 | 一個細小嘅實體裝置(USB 或 NFC),功能同通行密鑰相似。 |
| SIM 卡調包(SIM swapping) | 騙流動網絡營運商將某人嘅號碼轉到新 SIM 卡上,令短訊被送去攻擊者手上。 |
| 釣魚(Phishing) | 假網站或假訊息,騙人交出密碼或驗證碼。 |
| 加強認證(Step-up authentication) | 喺敏感操作之前,例如更改收款資料,再要求一次第二重證明。 |
常見錯誤同誤解
- 「2FA 令帳戶無法被入侵。」 它令入侵變得困難得多,但並非絕對。釣魚網站仍然可以即時攔截用戶輸入嘅驗證碼,所以先有通行密鑰。
- 只喺瀏覽器檢查驗證碼。 如果伺服器喺輸入密碼之後就發出完整工作階段,驗證碼畫面就只係裝飾。伺服器必須喺第二重證明通過之前拒絕存取。
- 對驗證碼猜測次數冇限制。 六位數字有一百萬種可能。冇速率限制同鎖定機制,攻擊者可以不斷撞估。
- 忘記恢復方法。 冇恢復碼,每次遺失手機都會變成一張支援單,或者一位客戶被鎖在門外。
- 隨便儲存 TOTP 秘密金鑰。 共享秘密應該喺資料庫入面加密儲存,並且喺設定完成後永遠唔再顯示。
- 容許用戶唔經覆核就關閉 2FA。 關閉 2FA 或者更改帳戶電郵,應該要求輸入密碼同當前驗證碼。
- 密碼加安全問題算係 2FA。 唔係,兩樣都係你知道嘅嘢。
要問 AI 建構工具嘅嘢
- 「加入選用嘅雙重認證,使用認證應用程式(TOTP),設定時以 QR 碼顯示,並要求輸入確認驗證碼之後先會正式開啟。」
- 「開啟 2FA 時顯示十個一次性恢復碼。以雜湊方式儲存,就好似密碼一樣。」
- 「喺伺服器上強制執行 2FA:第二重證明通過之前,唔會發出完整工作階段。」
- 「限制驗證碼輸入次數,連續失敗後將登入鎖定 15 分鐘,並喺發生時電郵通知用戶。」
- 「管理員帳戶必須使用 2FA。」
- 「關閉 2FA 或更改帳戶電郵之前,要求輸入密碼同當前驗證碼。」
- 「使用成熟嘅函式庫,或者我哋認證服務商內建嘅 2FA,唔好自己寫加密技術。」
- 「解釋你用咗邊種方法,以及秘密金鑰儲存喺邊度。」
如果你用代管嘅認證服務,先睇吓佢會唔會已經提供 2FA 或者通行密鑰;開啟內建功能通常比自訂代碼更加穩陣。逐步教學可以睇 how to add two-factor authentication,而 what authentication is 就會講解背後嘅登入基礎。
Mythex 入面嘅雙重認證
Mythex 唔包括為你 App 用戶而設嘅內建登入系統,所以 2FA 會係你所揀認證方式嘅一部分:可以係你自己嘅電郵加密碼登入(由項目嘅資料庫支援),或者提供 2FA 嘅代管服務。你喺對話入面叫 agent 加入,任何服務商金鑰都會放喺項目機密入面,而唔係放喺對話裏。adding login to your app 嘅 docs 食譜有一個起始提示詞可以調整使用,而 security for apps you build 就講解有關金鑰嘅日常習慣。上線之前,請跟住 AI 建構 App 嘅安全清單 逐項檢查。
常見問題
簡單嚟講,什麼係雙重認證?
雙重認證(2FA)即係登入時要提供兩種唔同嘅證明,通常係你嘅密碼,加上你手機嘅驗證碼或者安全金鑰。淨係偷到你密碼嘅人,仍然入唔到你個帳戶。
2FA 同 MFA 係咪一樣?
差唔多係。多重認證(MFA)指兩種或以上嘅證明方式;雙重認證係最常見、剛好有兩種嘅情況。日常使用時,兩個詞語通常互相通用。
短訊驗證碼式嘅雙重認證安全嗎?
比單靠密碼好得多,但係係最弱嘅常見選項。短訊可能被截取,亦可能透過 SIM 卡調包被轉走;而假嘅登入頁面亦可以騙人輸入驗證碼。認證應用程式更加穩陣,通行密鑰或安全金鑰則更加穩陣。
我嘅 App 需唔需要雙重認證?
如果帳戶持有金錢、私人資料,或者對其他用戶有管理權限,提供 2FA 係好主意,而要求管理員使用亦好常見。如果只係簡單嘅興趣 App,可以設為選用,或者留待之後再加。
如果用戶唔見咗部手機點算?
咁就要靠恢復碼:喺開啟 2FA 時會顯示一個短清單,入面係一次性用嘅後備驗證碼。冇咗呢啲碼,通常要由 App 擁有者人手核實身份先可以恢復,所以要喺上線前計劃好。