「不再使用那種偷得走的密碼」——實現這一點的正是 passkey。本文講解其原理,以及它與密碼、簡訊驗證的區別(不會寫出攻擊手法)。
原理:祕密「不會離開裝置」
passkey 基於公開金鑰密碼學(FIDO2 / WebAuthn 這一標準)運作。註冊時裝置會產生一對金鑰,只把公鑰交給伺服器。登入時,只需用裝置內的私鑰對伺服器發來的「題目(challenge)」進行簽章並回傳。私鑰不會離開裝置的安全區域。
密碼
你 和 伺服器 共享同一個祕密。伺服器外洩/在假網站輸入就會被偷走
passkey
私鑰只在裝置內。伺服器只有公鑰=外洩也無法被濫用
「伺服器上只有公鑰」這一點很關鍵。公鑰顧名思義就是可以公開的值,因此即使資料庫外洩,單憑它本身也無法用來登入(這與密碼的保存前提正好相反→ 什麼是雜湊化)。
與密碼+簡訊到底有何不同
密碼+簡訊驗證碼
- 共享祕密(密碼)會外洩/因重複使用而連鎖失守
- 在假網站輸入時,連驗證碼一起被中間人轉發
- 容易以「我自己能識破」的過度自信為前提
passkey
- 沒有共享祕密=不存在可被偷走的字串
- 簽章繫結到網域=在假網站上無法成立
- 即使使用者沒察覺,機制上也會擋住假網站
中間人型釣魚(AiTM)即使你小心翼翼地輸入了正確的驗證碼,也會連那個驗證碼一起轉發(→ 什麼是釣魚)。passkey 因為簽章被繫結在網域上,從原理上堵住了這條路徑。
接下來閱讀
- 入門:如何挑選密碼管理器(也關係到 passkey 的保管・同步)
- 兩步:如何挑選多因素認證(MFA)(什麼是抗釣魚)
- 原理:密碼的安全保存方法 / 術語:什麼是釣魚
FAQ
Qpasskey 和密碼有什麼區別?
密碼是「你和伺服器共享的一串祕密字元」,所以一旦外洩任何人都能使用。passkey 則不持有共享的祕密。它用裝置內的私鑰進行簽章,伺服器上只保存與之配對的公鑰。不存在可被偷走的字串,即使伺服器發生外洩,僅憑公鑰也無法被濫用——這是根本性的區別。
Q為什麼 passkey 抗釣魚能力強?
passkey 的簽章繫結在「面向哪個網站(網域)」上。即使被誘導到假網站登入,由於網域不一致,簽章本身就無法成立。也就是說,即使使用者沒有察覺自己進了假網站,從機制上假網站也通不過。這與密碼+簡訊驗證碼在中間人攻擊中被原樣整體轉發形成鮮明對比。
Q丟了裝置就無法登入了嗎?
passkey 在多數情況下會透過作業系統或密碼管理器的雲端同步進行備份,在其他裝置上也能使用(同步 passkey)。此外,在多台裝置或多把金鑰上註冊 passkey、並準備好復原手段會更安全。應避免只繫結到一台裝置且沒有任何復原手段。