密碼這套設計,其實從一開始就是權宜之計。1960年代初,麻省理工學院的工程師為了讓多人共用一台主機、又各自保留檔案,就讓每個使用者設一組字串作識別。這是密碼登場的原點。當時的世界沒幾台電腦,密碼只是工程師之間的小聰明。誰也沒料到,半個世紀後,每個普通人手上會握着幾十組密碼,而且每組都被要求大小寫加數字加符號,每三個月還要換一次。
人們討厭密碼,不是因為它複雜,而是因為它充滿矛盾。安全要求長、亂、不重複;記憶要求短、順、能聯想 —— 兩個方向背道而馳,硬塞在同一個輸入欄裡。更麻煩的是,各個系統各有一套規矩:銀行要求至少十二個字元、必須含特殊符號;公司內網偏偏禁止使用某些符號;舊系統可能限制在八個字元以內,連空格都不許。有的網站每九十日強迫換一次,新密碼還不能跟過去十組重複。光是替一個帳戶想出合規又好記的新組合,已經是一次小型腦力消耗。
要用一組密碼走天下,幾乎不可能 —— 各個系統的規則根本互不相容,你想偷懶,系統也不允許。退一步說,就算規則一致,重用同一組密碼也是壞主意:任何一個服務被攻破,駭客就會拿那組字串去試你所有其他帳戶,一次洩漏可以連鎖引爆十幾個服務。可是要記住幾十組各不相同、又要符合各自怪規矩的字串,普通人根本做不到。於是「忘記密碼」變成日常 —— 不停按重設按鈕,不停收驗證信,不停在便利貼上塗塗改改。人類記憶的極限與現代驗證系統的要求之間,本來就存在一道無法跨越的鴻溝。
為了解決這個矛盾,密碼管理器(password manager)出現了。它替使用者生成、儲存、自動填入,看似把問題解決了一半。但這一半本身又埋下另一重風險:所有雞蛋放進同一個籃子。LastPass、1Password這類雲端同步產品方便,代價是要把整個加密保險庫交給服務商;KeePass這類純本地產品風險較分散,卻得自己處理跨裝置同步,普及度因此一直不高。2022年下半年LastPass的大規模洩漏事件,正是雲端集中模型的反面教材 —— 主密碼或加密庫一旦被攻破,使用者的一切就同時暴露。把信任集中在一處,本來就不是安全,而是換了一個更大的賭注。
於是有人提倡密語句(passphrase)。用一串容易記憶的詞代替亂碼,例如四五個英文字串成一句,理論上更長、更難破解,又比亂碼好記。但密語句沒有真正流行,原因不在使用者,而在系統。許多網站把密碼欄限制在十幾個字符以內,連空格都不允許。更根本的問題是,密語句本質上仍是一組「共享秘密」 —— 你知道,伺服器也知道。只要那串字曾經離開過你的腦袋,被傳送、被儲存、被快取,它就有機會被偷走。
社交登入(social login)走了另一條路。把驗證的工作交給谷歌、臉書、蘋果這些大平台,使用者按一個鍵就完事。方便確實是方便,代價卻是把自己的身分和行為軌跡一併交出去。每登入一次,平台就多掌握一份你在哪裡、用甚麼、做甚麼的資料。這是一種以隱私換取便利的交易,多數使用者並不真正清楚自己付出了甚麼。
社交登入還有一個被低估的麻煩。許多人註冊時隨手按了Google,幾個月後忘了,又用Facebook再註冊一次,結果在同一個服務裡有兩個獨立帳戶,購物紀錄、訂閱、積分全部分散。網站後台則要決定:把這兩個帳戶合併、連結,還是當成不同的人?每一種處理方式都有副作用,工程師為此寫的判斷邏輯往往比驗證本身更複雜。便利的表面之下,是一條條打結的數據線。
問題的根,其實一直沒被觸及 —— 共享秘密這個模型本身。只要使用者和伺服器要共享一段字串,這段字串就有機會被釣魚、被攔截、被洩漏。要真正解決,就得換一個模型。
這就是通行密鑰(passkey)做的事。它以非對稱加密為基礎,註冊時,使用者的裝置生成一對密鑰:私鑰留在裝置的安全晶片裡,從不上傳;公鑰交給伺服器。登入時,伺服器發出一道挑戰,裝置用私鑰簽署回應,伺服器用公鑰驗證。整個過程沒有任何「秘密」在網絡上來回。釣魚網站即使外觀完全一致,也拿不到可用的東西,因為通行密鑰被綁定在原始網域上,換了網址就用不了。
通行密鑰過去最大的不便,是私鑰只存在於一台裝置上 —— 換手機就要逐個帳戶重新登記。這道門檻已經被打通。蘋果用iCloud鑰匙圈、谷歌用Chrome密碼管理器、微軟用Authenticator配合Microsoft帳戶,都能把通行密鑰同步到使用者名下的其他裝置;不喜歡雲端的,可以選YubiKey這類硬件安全鑰匙,把密鑰鎖在實體晶片裡隨身攜帶。
表面看來,這跟密碼管理器似乎是同一回事,都是在裝置之間搬運登入憑證。但兩者保護的東西,性質根本不同。密碼管理器同步的是密碼本身 —— 那是使用者和伺服器都持有的秘密,保險庫一旦被攻破,攻擊者立即拿到一條能直接走進每個帳戶的鑰匙。通行密鑰同步的是私鑰,而對應的伺服器從未持有任何秘密 —— 即使網站被駭,外洩的只是公鑰,對攻擊者一文不值。
那如果蘋果或谷歌的同步服務本身被攻破呢?關鍵在於它們都採用端對端加密:私鑰在離開裝置之前,已經用一把只有使用者裝置才知道的金鑰加密,雲端只看到一團密文,蘋果和谷歌自己也解不開。即使整個同步系統被攻陷,外洩的也只是無法閱讀的加密包。攻擊者要真正動到通行密鑰,唯一的路徑是反過來攻陷使用者的Apple ID或Google帳戶本身 —— 那需要同時取得密碼、通過雙重驗證、再說服系統信任一台陌生裝置,每一步都會在使用者現有的裝置上彈出明確警示。風險並沒有消失,但已從「儲存層」往上推到「身分層」 —— 攻擊面更窄,攻擊成本更高,外洩的密文本身也沒有立即可用的價值。
選擇YubiKey這條路,則有它自己的代價。私鑰永不離開晶片是它最強的保護,同時也是它最大的弱點:鑰匙遺失,私鑰也跟着消失,連Yubico都救不了你。因此業界的標準做法是永不只用一把 —— 註冊每個帳戶時同時登記兩把以上,一把隨身,一把鎖在家中或保險箱。日常那把不見了,備用那把仍能登入,第一件事就是把舊鑰匙從帳戶裡刪除、再補一把新的。如果只用一把又遺失了,使用者就被迫倒退回每個服務各自的「帳戶恢復流程」 —— 而這往往是整個系統最薄弱的一環,社交工程攻擊者最愛瞄準的,正是這條路徑。
通行密鑰也不局限於一個生態系。註冊時即使只有iPhone上的鑰匙,登入Windows電腦上的網頁時,仍可以用手機掃描螢幕上的QR code、靠藍牙確認兩台裝置在同一空間之後完成驗證。私鑰始終沒離開過手機,跨平台的銜接靠的是FIDO標準下的協定握手,而不是把秘密複製來複製去。這比起社交登入的「把身分外包」,已經是兩個不同層次的設計。
當然,通行密鑰並非萬靈丹。它把風險從「儲存層」推到了「裝置層」與「身分層」 —— 攻擊面更窄,門檻更高,但仍然存在。如果裝置本身被惡意軟體深度入侵、或被供應鏈在出廠前植入後門,存放在裝置上的憑證都會受波及。和密碼相比,這條攻擊路徑從來都是更難走的:鍵盤記錄器抓不到「沒有被輸入的字串」,釣魚網站騙不到「不會送出的私鑰」,伺服器外洩也吐不出可用的秘密。但「更難」不等於「不可能」,安全工程從來沒有一勞永逸的解。
還有一層結構性的隱憂值得正視。通行密鑰的雲端同步生態目前集中在蘋果、谷歌、微軟這幾家平台手上,端對端加密能擋住技術層面的窺視,卻擋不住政策層面的變動 —— 一旦平台改變存取規則、配合監管或執法要求、或使用者自己的平台帳戶因任何原因被凍結,整個登入流程也會跟着動搖。FIDO Alliance已經在推動Credential Exchange Format這類標準,讓通行密鑰未來能在不同服務商之間搬遷,但要真正做到無縫互通,仍需時間。對沒有智能手機的長者、不熟悉生物辨識的使用者、或受限於工作裝置不能啟用個人同步的人來說,純密碼短期內仍會以「備援」的形式繼續存在。
使用者看到的,只是一個指紋或一次面容辨識的瞬間 —— 而那枚指紋從頭到尾留在裝置內部的安全晶片裡,從不離開、從不上傳,伺服器收到的只是一個用私鑰簽署過的回應,跟生物特徵長甚麼樣子完全無關。背後其實是密碼學三十多年的成熟成果,被消費級裝置接住。蘋果、谷歌、微軟已內建支援,亞馬遜、PayPal、GitHub、Revolut等大型服務也已陸續開放。FIDO Alliance公布的數據顯示,全球已超過十億人啟用過至少一組通行密鑰,消費者認知度約為四分之三。2026年4月,英國國家網絡安全中心(NCSC)更正式建議消費者把通行密鑰列為登入首選,不再推薦純密碼。
這不是又一輪科技公司推銷新功能,而是一次工程模型的轉換。最安全的密碼之所以是沒有密碼,不是因為密碼變得不重要,而是因為「共享秘密」這個前提,本身就是漏洞的源頭。把秘密留在你裝置裡那枚指紋背後,永遠不出門 —— 才是這條路真正走通的方向。

