# 從 Substack 的登錄設計了解 2FA 雙因子認證

*區塊鏈社會學 #157 2024.06.20*

By [DHK dao](https://paragraph.com/@dhk) · 2024-06-19

zh

---

上週漂流教室 pop-up store 第零次試營業就遇上紅雨，我做好沒生意的心理準備，居然「瘦田冇人耕，耕開有人爭」，得到四位讀者到場支持，雖然言談甚歡，但也擔心待慢了個別來賓。其中一位讀者本身持有 DHK 通證還送出了一枚，上次的小聚為 DHK dao 帶來了三位新持份者。

平日晚上我一般處於自閉模式，不過今天（6 月 20 日，星期四）例外，因此臨時決定 18:00-20:00 在尖沙咀[星座冰室](https://maps.app.goo.gl/iL3vFGXNMvYpp69D9) pop-up，是為漂流教室 #1。沿用同樣模式，有人來就一起開錢包，我派 DHK，沒人來我就啟動毒 L 模式，吃飯看書。請原諒我的倉卒，大家隨緣就好。

[Share](https://paragraph.xyz/@dhk/jXs7UyQpVSY5ZLpk6Bor)

* * *

我經常談區塊鏈和其他 web3 相關技術，即使有人認為沒事找事，甚至全是一場騙局，web2 和中央管治才是王道，相信也必然同意，資訊安全非常重要。

在當今資訊社會，資安已經成為顯學，不學上一招半式，只有吃虧的份。接下來我會寫一下資安相關的話題，讀後你會發現，是否認同 web3 都好，資安跟密碼學的關係，密不可分。

資安低掛水果：2FA
----------

如果有人問我，想要做好資安首要工作是甚麼，我會毫不猶豫地回答是 2FA，即 Two-Factor Authentication，雙因子認證。

是的，相較於擁有一個很強的密碼但缺乏第二重防禦，我寧願用戶的密碼是「123456」，但受到第二層驗證碼保護。當然，我只是說非得二選一的話我會這樣選，而絕非建議弱密碼，讀者可不要輕率看待密碼，被駭之後找我晦氣。不妨這樣說，2FA 是資安的「low hanging fruit」，花個五分鐘打開 2FA，保安程度馬上大幅提升，被駭的機會率至少降低九成。

近年生成式 AI 突飛猛進，每當有個 Alice 說擔心人類會被 AI 淘汰，就會有個 Bob 跑出來指正，其實我們不需要勝過 AI，只需要比其他人多懂一點 AI，被淘汰的就會是其他人。會否被駭也是同一道理，作為普通用戶，你不需要比駭客技勝一籌，只需要防禦贏過其他用戶就足以幸免於難——當大把沒打開 2FA 的帳號等著駭客予取予攜，他們何必大費周章去駭你的帳號？這就是我有信心說只要打開 2FA，被駭機率隨即大降九成的原因。

不過請注意，以上說的是「普通用戶」，如果你「上頭」被特別關照，以上邏輯並不適用。數位入侵有是否目標性攻擊之分（untargeted attack vs targeted attack），進行非目標性攻擊，駭客會選方便就手的，就好像街頭有一大堆單車，要偷當然選車鎖最弱的，你的鎖只要比別人好上一點，單車就不會被盜；目標性攻擊卻是另一回事，你的單車是輛林寶堅尼，賊人非要偷到手不可，這就變成貨真價實的攻防戰，你的盾必須擋得住對方的茅，單純贏過其他用戶可保不住你。

只要花少許時間讀我的一兩篇文章並且「弄髒雙手」跟進，我敢說已經足以應付非目標性攻擊。然而，萬一你因為某些原因被盯上，對手可能來自矽谷、五角大樓、特拉維夫、莫斯科、平壤或中南海，我一介小薯可招架不住，只能盡量小心，至少提高破解的門檻，避免死得太難看。

2FA 的最重點是 F
-----------

顧名思義，2FA 是以兩個不同因子認證，用戶必須先後通過，才能取得服務使用權。

所謂「因子」，可分為三類：

1.  What you know：你知道甚麼；如密碼、出生日期、身分證號碼等。
    
2.  What you have：你持有甚麼；如手機、鑰匙、IC 卡等。
    
3.  Who you are：你是誰；即生物認證，如指模、臉、虹膜等。
    

當服務要求用上以上三種方式中的兩種來認證，就符合 2FA 原則。換言之，只要密碼就能進入，不算是 2FA；即使靠雙重密碼才可進入，也不是 2FA，因為儘管用上兩組密碼，還是同一種因子，也因此，有人把 2FA 翻譯為雙重認證，不是太準確。當然，雙重密碼怎麼說都比單個密碼保險一些，只是差別比較有限，有能力破解一個密碼，往往就能破解第二個密碼，只是多花點時間；2FA 就不一樣，用上另一種因子有如打開一個新維度，從一維變成二維，保安程度大大提升。2FA 的最重點不在「2」，而在「F」。

傳統上，2FA 最典型的組合是「密碼 + 驗證碼」，前者記在腦袋，後者以用戶手持的編碼器生成，或者透過短訊獲取，即用上「what you know」和「what you have」兩個因子，要破解前者往往並不困難，尤其是靠用戶腦袋記的密碼，通常強不到哪裡去，但一旦加上後者，駭客就需要另一套破解的技巧，等於打開一個全新維度，難度大幅提升。留意以上只是最常用的 2FA 組合，絕非我的建議，我一則反對用腦袋記密碼，二則反對用短訊作為第二因子，短訊容易被盜，尤其是在某些國家，我就曾第一身遇過有能力把我的短訊看光光的駭客。

說到這裡我要自打嘴巴，一開始說資安的低掛水果是 2FA，其實並不精準，真正的意思是在那些只使用密碼登錄的帳號打開驗證碼機制，下載 [Google Authenticator](https://support.google.com/accounts/answer/1066447)，掃描指定的二維碼，從此以 [Google Authenticator](https://support.google.com/accounts/answer/1066447) 生成的驗證碼作為第二因子作登錄。[Google Authenticator](https://support.google.com/accounts/answer/1066447) 會鼓勵你把驗證碼同步到雲端，好處是這台手機壞了或者丟了還能如常登錄，但也意味著萬一你的 Google 帳號被駭，其他以此作 2FA 的帳號很可能會被牽連，因此建議不要打開雲端同步的選項。

本文先不討論更多進階的細節，比如哪家的 Authenticator 最好，作為起步，先按照以上的標準方式實行就已經不錯。我更希望先集中把 2FA 的概念說清楚，務求做到一理通，百理明。

重門深鎖但保安員輕率
----------

「密碼 + 驗證碼」是最為典型的 2FA 組合，當涉及的服務、對資安的要求和使用的設備不同，登錄的方式也會隨之改變，比如有些服務不依產業標準，硬要自行設計「安全」守則，如強迫用戶每三個月修改密碼，密碼卻只能八位之類；比如對資安要求較高的，願意購買專門用作第二因子的登錄硬體 Yubikey；又例如電腦不一定有生物認證，智能手機則多數有，這些因素全都會影響登錄方式。不過，萬變不離其宗，要判斷個別服務的登錄方式是否安全，只需靈活套用 2FA 原則，看是否應用上兩個因子，就能知道個大概。

以下讓我們玩個遊戲，以現實例子考考大家。且看我們挺熟悉的 Substack，帳號設定裡關於 account security 的部份：

![](https://storage.googleapis.com/papyrus_images/33d6b191ec97e6c314ae0a31c2f3098c.jpg)

如果讀者按文章初段的建議，嘗試在 Substack 打開帳號登錄的驗證碼以收 2FA 之效，Substack 會要求你首先打開 recovery questions，設定幾條私密問題及答案，萬一丟失電郵登錄或者安裝 authenticator 的裝置時，透過回答 recovery questions 恢復帳號。

![](https://storage.googleapis.com/papyrus_images/04a226a109fbf7a40ce4bd53dd4efbe4.jpg)

### 問題一：你會打開 Substack 的 2FA 嗎？

心水清的你或許早就看穿，第一張截圖已經「劇透」，Substack 是極少數我沒有打開驗證碼的線上服務之一。我明白 Substack 的好意，但 recovery questions 可說是最糟糕的登錄方式，很容易透過「社交工程」破解，比如駭客只需要友善地跟你年邁的父母聊聊天，就能得知他們在哪裏相遇。

一個系統的防禦能力等於所有攻擊面中最弱的一環，沒錯，輸入密碼後還要驗證碼才能登入符合 2FA，可是只要跟系統說丟失，你就能透過回答「私密」問題恢復帳號，這就好像你家的大門堅固而且安裝了鐵閘，不過持有兩條鑰匙的保安員熱心助人，只要穿得端莊一點跟他攀談，自稱屋主的朋友且能說得頭頭是道，就會乖乖替你開門。

Substack 的產品設計都非常用心，就連登錄也是，大概是考慮到文字創作者對資安不熟悉吧，特別使用上 recovery questions，我只能說，好意心領，但我寧可單用一組 40 字長，包含大小寫字母、數字和標點的密碼。

### 問題二：我的 Substack 帳號是單因子認證嗎？

這也太簡單了吧，當然啦。且慢——

當你知道、記得你的密碼，只靠密碼登錄，那就是單靠「what you know」這個因子的認證方式，這沒錯。可是，我在 Substack 用的密碼由密碼管理器 [Proton Pass](https://proton.me/pass) 生成，我記不住甚至沒看過，平時要填密碼得請 [Proton Pass](https://proton.me/pass) 代勞，而 [Proton Pass](https://proton.me/pass) 安裝在 MacBook 和安卓手機，也就是說，要密碼就需要拿到我的 MacBook 或手機，並使用指模解鎖設備才可，從這個角度看，雖然我只用密碼，但已經用上了「what you have」和「who you are」兩個因子，稱得上是 2FA。

真的該這樣理解麼？還是說，一重關卡就必然是單因子認證，我不過是強詞奪理，混淆視聽？

在留言區說說你的看法吧。

* * *

p.s. 才剛自誇三年來從不脫稿，本週就馬上發稿瘟，兩天敲不出一個字，倒楣得竟然鍵盤也壞了，好不容易才趕及如期刊登。迷信是對的，touch wood 很重要。

---

*Originally published on [DHK dao](https://paragraph.com/@dhk/substack-2fa)*
