密碼是第一道門,2FA 是那把鎖。

2FA 雙因素驗證完整比較:SMS 簡訊、TOTP 驗證器、Passkey 安全性差異與優缺點。附 App 推薦、備份策略、必開服務清單,一篇搞懂帳號安全最重要的防線。

你的密碼可能已經外洩了——只是你不知道而已。

每年大規模資料外洩事件層出不窮。2024 年光是被公開的帳密組合就超過 260 億筆。攻擊者拿到這些資料後做的第一件事叫「撞庫」:用你在 A 網站的帳號密碼去試 B、C、D 網站。如果你有任何一組密碼重複使用(老實說,大多數人都有),那些帳號就等於門戶大開。

就算你用密碼管理器、每個網站都用不同的隨機密碼,資料庫被駭時你的密碼一樣會外洩。差別只在於影響範圍——但那個被駭的帳號本身,依然需要額外保護。

這就是為什麼 2FA(雙因素驗證)不是「進階功能」,而是每個人都應該打開的基本防護

這篇文章從零開始解釋三種 2FA 方式的差異,幫你選出最適合的方案,並且告訴你哪些帳號一定要先保護。


🎯 這篇適合誰

你的情況 建議先看哪段
完全不懂 2FA,想搞懂概念 什麼是 2FA
想知道 SMS 驗證安不安全 SMS 簡訊驗證
想用 TOTP 但不知道怎麼開始 TOTP 驗證
聽過 Passkey 想了解 Passkey / FIDO2
想選 TOTP App TOTP App 推薦
怕換手機後進不去帳號 備份策略
想知道哪些帳號該先開 哪些服務一定要開 2FA

🔑 什麼是 2FA

2FA 的全名是 Two-Factor Authentication,中文叫雙因素驗證。核心概念很簡單:

登入時需要兩種不同類型的東西,缺一不可。

這兩種東西來自不同的「因素」:

  • 你知道的東西(Something you know):密碼、PIN 碼
  • 你擁有的東西(Something you have):手機、硬體金鑰
  • 你本身的東西(Something you are):指紋、臉部辨識

密碼屬於第一種。2FA 就是在密碼之上,再加一個第二種或第三種。

打個比方:密碼像是家門的鑰匙,2FA 像是門內還有一道需要指紋才能開的鎖。就算小偷偷到了你的鑰匙(密碼外洩),沒有你的指紋(第二因素),他還是進不了門。

目前主流的三種 2FA 方式:

  1. SMS 簡訊驗證碼
  2. TOTP 時間驗證碼(驗證器 App)
  3. Passkey / FIDO2(硬體金鑰或生物辨識)

接下來我們逐一拆解。

2FA 三種驗證方式比較


📱 SMS 簡訊驗證:為什麼是最弱的

SMS 驗證的流程你一定很熟悉:登入時系統發一封簡訊到你手機,裡面有 6 位數驗證碼,輸入後才能登入。

優點: - 不需要裝任何 App - 幾乎所有服務都支援 - 對非技術用戶來說最直覺

但它有幾個嚴重的安全問題:

SIM Swap 攻擊

攻擊者打電話給你的電信業者,假裝是你,說「我的 SIM 卡壞了,請幫我補發一張」。一旦成功,你的門號就轉到他的手機上,所有簡訊驗證碼都歸他收。

這不是理論攻擊——2019 年 Twitter CEO Jack Dorsey 的帳號就是這樣被盜的。

SS7 協議漏洞

SS7 是全球電信網路的底層協議,設計於 1970 年代,幾乎沒有安全防護。攻擊者如果能存取 SS7 網路(在某些國家並不難),可以攔截任何人的簡訊,完全不需要接觸你的手機。

釣魚攻擊

攻擊者做一個假的 Gmail 登入頁面,你輸入帳號密碼後,他即時拿去真的 Gmail 登入,Google 發送 SMS 到你手機,你在假頁面輸入驗證碼,攻擊者即時轉送——整個過程不到 30 秒。

結論:SMS 2FA 比沒有好,但它是三種方式裡最弱的。 如果一個服務同時支援 TOTP 和 SMS,永遠選 TOTP。但如果某個服務只支援 SMS(例如很多台灣的銀行網站),開著總比不開好。


⏱️ TOTP 驗證:你該用的標準方案

TOTP(Time-based One-Time Password)是目前最普遍也最推薦的 2FA 方式。打開手機上的驗證器 App,看到一組每 30 秒更新一次的 6 位數字,輸入就好。

原理很簡單

  1. 設定階段: 你在某個服務開啟 2FA 時,它會給你一個 QR Code(裡面其實是一串叫做「共享密鑰」的隨機字串)
  2. 你的驗證器 App 掃描這個 QR Code,把共享密鑰存起來
  3. 每次登入時: App 用「共享密鑰 + 當前時間」經過 HMAC-SHA1 運算,產生一組 6 位數字
  4. 伺服器端做同樣的運算,如果兩邊算出來的數字一樣,驗證通過

因為雙方都用「時間」當變數,所以驗證碼每 30 秒就會變一次。這就是為什麼它叫 Time-based。

為什麼比 SMS 安全

  • 不走電信網路: 驗證碼是在你手機本地產生的,不經過任何網路傳輸,SIM Swap 和 SS7 攻擊完全無效
  • 離線可用: 就算手機沒有網路,驗證碼一樣會正常產生(因為只需要時間)
  • 無法被即時轉送: 釣魚網站沒辦法直接取得你 App 裡的密鑰(但注意:如果你在假網站上手動輸入驗證碼,釣魚攻擊仍然有可能成功)

設定流程(以 Gmail 為例)

  1. 登入 Google 帳號 → 安全性 → 兩步驟驗證
  2. 選擇「驗證器應用程式」
  3. 用驗證器 App 掃描螢幕上的 QR Code
  4. 輸入 App 顯示的 6 位數驗證碼確認
  5. 重要:把 Google 給你的復原碼抄下來保存

整個過程不到兩分鐘。


🔑 Passkey / FIDO2:防釣魚的終極方案

Passkey 是最新一代的驗證方式,由 FIDO Alliance 推動,Apple、Google、Microsoft 三巨頭聯合支持。它的目標很明確:徹底消滅密碼

原理

Passkey 用的是非對稱加密(公鑰加密):

  1. 註冊時: 你的裝置產生一對金鑰——私鑰留在裝置上(永遠不會離開),公鑰給伺服器
  2. 登入時: 伺服器發一個挑戰(challenge),你的裝置用私鑰簽名後回傳,伺服器用公鑰驗證

因為私鑰永遠不離開你的裝置,伺服器也沒有存任何密碼或密鑰,就算伺服器被駭,攻擊者拿到的公鑰毫無用處。

為什麼是防釣魚的

TOTP 雖然比 SMS 安全,但仍然有一個弱點:如果你在釣魚網站上手動輸入驗證碼,攻擊者可以即時轉送到真的網站完成登入。

Passkey 從根本上解決這個問題——驗證過程會綁定網域。你的裝置在簽名時會檢查目前網站的網域,如果你在 g00gle.com(假網站)上嘗試登入,簽名根本不會觸發,因為它只認 google.com

支援方式

你不需要買額外硬體。Passkey 可以透過:

  • Windows Hello: 用指紋、臉部辨識或 PIN
  • Face ID / Touch ID: iPhone 和 Mac 原生支援
  • Android 生物辨識: 指紋或臉部辨識
  • 硬體金鑰: YubiKey、Google Titan Key(最高安全性,適合高風險帳號)

哪些服務已支援 Passkey

  • Google、Apple ID、Microsoft
  • GitHub、GitLab
  • Cloudflare、AWS
  • X(Twitter)、LinkedIn
  • 1Password、Bitwarden
  • Coinbase、PayPal(部分地區)

支援清單持續增長中。可以到 passkeys.directory 查詢最新狀態。

目前的限制

  • 跨裝置同步仍在演進: Apple 的 Passkey 透過 iCloud 鑰匙圈同步,Google 透過 Google Password Manager,但跨生態系(Apple → Windows)仍需掃 QR Code
  • 不是所有服務都支援: 很多台灣的服務還只有 SMS
  • 復原機制不統一: 各服務的 Passkey 遺失復原流程不同

我的建議: 在支援 Passkey 的服務上優先使用,但同時保留 TOTP 作為備用方式。純 Passkey(沒有任何備用)目前還太早。


📊 三種方式完整比較

項目 SMS 簡訊 TOTP 驗證器 Passkey / FIDO2
安全性 ⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
防釣魚 ❌(手動輸入仍可被騙) ✅(綁定網域)
離線可用 ❌(需收簡訊)
方便性 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
設定難度 極低
額外成本 無(軟體)/ 有(硬體金鑰)
裝置依賴 SIM 卡 手機 App 裝置生物辨識或硬體金鑰
服務支援度 幾乎全部 大部分 逐漸增加中
伺服器被駭影響 中(密鑰可能外洩) 低(只有公鑰)

一句話總結: 能用 Passkey 就用 Passkey,不能就用 TOTP,最後才用 SMS。


📲 TOTP App 推薦

TOTP 是目前最實用的 2FA 方式(因為幾乎所有服務都支援),選對 App 很重要。以下是主流選擇:

Aegis Authenticator(Android 限定)

開源、加密匯出、支援自動備份。介面乾淨,功能完整。如果你是 Android 用戶,這是首選,沒有之一。

2FAS

開源,支援 iOS 和 Android,有瀏覽器擴充功能(在電腦上登入時可以從手機推送驗證碼)。UI 設計現代,備份和匯入匯出功能完善。如果你用 iPhone,2FAS 是我的首選推薦。

Google Authenticator

Google 自己出的,2023 年終於加入雲端備份。優點是和 Google 帳號綁定、跨裝置同步。缺點是不開源、匯出功能有限、過去的口碑因為「沒有備份功能」被搞砸。

Authy

Twilio 旗下產品,支援跨平台和雲端同步。優點是多裝置同步做得早也做得好。缺點是不開源、Twilio 曾經發生過資料外洩事件(2022 年 Authy 用戶的手機號碼被洩露)。

Bitwarden / Vaultwarden TOTP

密碼管理器直接內建 TOTP 功能(Bitwarden 需要付費方案,Vaultwarden 自架則完全免費)。登入時自動複製驗證碼,非常方便。但有一個隱憂:密碼和第二因素放在同一個地方,等於把兩把鑰匙掛在同一個鑰匙圈上。

比較表

App 平台 開源 雲端備份 加密匯出 推薦場景
Aegis Android ✅(自動備份) Android 首選
2FAS iOS + Android iOS 首選,跨平台也行
Google Authenticator iOS + Android ⚠️ 有限 已在 Google 生態的人
Authy 全平台 需要桌面版的人
Bitwarden TOTP 全平台 追求方便、接受風險集中

我的推薦: Android 用 Aegis,iPhone 用 2FAS。如果你已經在用 Bitwarden 或 Vaultwarden,把 TOTP 也放進去是可以接受的選擇——但前提是你的主密碼夠強,而且 Bitwarden 帳號本身有用 Passkey 或硬體金鑰保護。


🛡️ 備份策略:換手機不要慌

2FA 最大的噩夢不是被駭,而是自己被鎖在門外。手機掉了、壞了、換新手機忘記轉移——這些情境每天都在發生。

復原碼一定要保存

開啟 2FA 時,大部分服務都會給你一組「復原碼」(Recovery Codes),通常是 8-10 組一次性密碼。這些碼可以在你失去第二因素時救你一命。

怎麼保存: - 最推薦: 抄在紙上,放在保險箱或固定的安全位置(不會被駭客遠端存取) - 次推薦: 存在密碼管理器裡(Bitwarden / Vaultwarden 的安全筆記功能) - 不推薦: 存在手機的備忘錄、雲端硬碟未加密的文件、螢幕截圖

TOTP App 備份

方式 說明
App 內建備份 Aegis 和 2FAS 都支援加密匯出檔案,定期匯出存到安全的地方
雲端同步 Google Authenticator 和 Authy 會自動同步,換手機後登入就恢復
掃描時留底 開啟 2FA 時,QR Code 截圖加密保存(這樣新裝置可以重新掃描)

多裝置策略

一個 TOTP 的密鑰可以同時存在多個裝置上。設定 2FA 時,同時用兩台手機(或手機 + 平板)掃描同一個 QR Code。這樣即使一台裝置遺失,另一台還能用。

Vaultwarden 作為備份方案

如果你有自架 Vaultwarden,可以把 TOTP 密鑰同時存在 Vaultwarden 和獨立的驗證器 App 裡。平常用 App 比較方便,Vaultwarden 當作備援——但記得 Vaultwarden 本身的登入也要有獨立的 2FA 保護。


⚙️ 哪些服務一定要開 2FA

不是所有帳號的優先級都一樣。如果你只做一件事,先把 Gmail 的 2FA 打開。

為什麼是 Email 第一?因為幾乎所有其他服務的「忘記密碼」都是透過 Email 重設。控制了你的 Email,等於控制了你的所有帳號。

優先級排序

🔴 最高優先(今天就去開): - Email(Gmail / Outlook) — 所有帳號的復原管道 - 密碼管理器(Bitwarden / 1Password) — 存了所有其他密碼 - Apple ID / Google 帳號 — 整個生態系的根基

🟠 高優先(這週內開): - 雲端儲存(iCloud、Google Drive、OneDrive) — 個人檔案和照片 - 金融服務(銀行、證券、加密貨幣交易所) — 直接關係到錢 - Synology DSM — 你的 NAS 裡有什麼自己最清楚(可以參考 NAS 三層防護

🟡 建議開啟: - 社群媒體(Facebook、Instagram、X、LinkedIn) — 身份冒用風險 - GitHub / GitLab — 程式碼和專案資產 - Cloudflare / AWS / GCP — 基礎設施管理

🟢 有開更好: - 電商平台(蝦皮、Amazon) — 綁了信用卡 - 串流服務(Netflix、Spotify、YouTube Premium) — 帳號共享時容易被盜 - 論壇和社群(Reddit、Discord) — 防止帳號被冒用


❓ FAQ

手機掉了 / 壞了,進不去帳號怎麼辦?

這就是復原碼存在的意義。用復原碼登入後,先關閉舊的 2FA,再用新裝置重新設定。如果連復原碼都沒有,大部分服務有身份驗證流程(上傳身份證等),但會很麻煩而且需要等待。教訓:一定要保存復原碼。

TOTP 驗證碼一直失敗,怎麼辦?

TOTP 依賴時間同步。如果你手機的時間不準(差超過 30 秒),驗證碼就會對不上。解決方式:

  • 手機設定 → 日期與時間 → 開啟「自動設定」
  • Aegis 和 Google Authenticator 都有內建的時間校正功能

Passkey 跟密碼管理器是什麼關係?

密碼管理器(如 Bitwarden、1Password)現在也可以儲存和管理 Passkey。它們扮演的角色類似「保險箱」——把 Passkey 的私鑰安全地存起來,並在需要時提供給瀏覽器。如果你擔心 Passkey 被鎖在單一生態系(例如只有 iPhone 能用),用密碼管理器存 Passkey 是跨平台的好方案。

把 TOTP 也存在 Bitwarden 裡,安全嗎?

安全性確實降低了——密碼和 TOTP 密鑰放在同一處,等於只有一個因素。但實務上,如果你的 Bitwarden 主密碼夠強(20 字元以上的隨機密碼),而且 Bitwarden 帳號本身用 Passkey 或 YubiKey 保護,風險是可以接受的。方便和安全永遠是取捨,重要的是你意識到這個取捨。

SMS 2FA 已經開了,要不要關掉換 TOTP?

大部分服務允許你同時保留 SMS 和 TOTP(TOTP 作為主要方式,SMS 作為備用)。建議的做法是:先加入 TOTP,確認運作正常後,如果服務允許你把 SMS 從備用方式中移除,就移除;如果不允許,至少確保主要驗證方式是 TOTP。

硬體金鑰值得買嗎?

如果你是開發者、管理雲端基礎設施、或有加密貨幣資產,一支 YubiKey(約台幣 1500-2000 元)是值得的投資。對一般用戶來說,手機上的 Passkey + TOTP 已經足夠。


✨ 結語

資安從來不是「有沒有被盯上」的問題,而是「自動化攻擊掃到你時,你有沒有準備好」的問題。撞庫攻擊不會挑人,它只是拿著外洩的帳密清單逐一嘗試。

2FA 就是你在這場自動化掃射中的防彈背心。不需要多厚,但你得穿上。

今天就打開你的 Gmail,花兩分鐘設定 TOTP。這可能是你這輩子做過投資報酬率最高的兩分鐘。


🔗 延伸閱讀

這篇有幫助嗎? 密碼是第一道門,2FA 是那把鎖。