繁體中文(台灣)
  • auth
  • password
  • oauth
  • oidc
  • identity

密碼仍未消亡

去年,網路上流傳著一些新聞文章,聲稱大型科技公司正在聯手消除密碼。一些初創公司甚至宣稱密碼已經過時且不再使用。

Gao
Gao
Founder

介紹

去年,網路上流傳著一些新聞文章,聲稱大型科技公司如 蘋果、谷歌和微軟正在聯手消除密碼。一些初創公司甚至宣稱密碼已經過時且不再使用。在深入研究身份管理領域數月後,我開始質疑這些說法的有效性和實際性。

密碼的用途是什麼?

乍看之下,答案似乎很明顯:密碼用於登入和驗證身份。然而,如果你考慮到密碼無法真正驗證你是誰的事實,我有不同的看法:

  • 當用戶使用電子郵件和密碼登入網站時,網站無法確認這些憑證背後的實際人員。可能是人,也可能是一隻貓。
  • 任何人都可以用正確的 PIN 解鎖 iPhone。

實際上,密碼的目的是匿名證明某物的所有權:用戶帳戶、設備或對門的訪問權限。

當前的“密碼殺手”

前面提到的公司提出了各種“密碼殺手”。許多聲稱是更安全的替代方案,可以消除用戶在驗證過程中記住複雜靜態密碼的需求。然而,這些替代方案大多沒有完全消除密碼的實用性。

FIDO 認證

FIDO (快速身份在線) 認證,如 官方文件 中所述,利用公鑰加密技術進行註冊和登入(值得注意的是, WebAuthn 是 FIDO2 規範的核心組成部分)。表面上看,這個過程似乎很吸引人:

簡單,對吧?但可惜的是,有個重大障礙:兼容性。與傳統的“標識符和密碼”組合相比,FIDO 認證要求:

  • 網站或應用支持 FIDO。
  • 瀏覽器和/或操作系統支持 FIDO。
  • 用戶設備具有用戶友好的驗證機制。

若未滿足任何這些要求,FIDO 認證將無法使用,必須退而求其次使用其他方法。

此外,即便所有條件都滿足,什麼才算是設備上的“用戶友好驗證機制”?目前,可能涉及指紋或面部識別等生物識別方法,並伴有 PIN 碼(即密碼)之類的替代選項。最終,我們回到原點。

從技術上講,這不是“密碼殺手”,而是一種受到密碼保護的、更安全且更用戶友好的驗證或驗證過程。

一次性密碼

儘管名稱中帶有“密碼”一詞,一次性密碼 (OTP) 並不是傳統的密碼,因為它們是動態的。有兩種流行的 OTP:

  • 基於時間的一次性密碼 (TOTP): 使用當前時間作為唯一性來源算法生成。通常用於 多重因素驗證 (MFA) 或 2FA。
  • 短信/電子郵件一次性密碼:使用隨機算法在伺服器上生成。在某些國家,已被廣泛用作主要的登入方法。

TOTP 也許不以名稱被廣泛認識。例如,當網站提示你設置 MFA 並使用像 Google Authenticator 或 Duo 這樣的應用掃描 QR 碼時,你很可能在使用 TOTP。你可能也注意到,網站經常顯示一長串的“恢復代碼”,並建議你保存下來,因為它將僅顯示一次。一些網站甚至鼓勵用戶將其打印在紙上。從本質上講,這個恢復代碼的作用就像一個長密碼。

至於短信/電子郵件 OTP,它們可能既昂貴又不可靠:

  • 從頭開始建立一個短信或電子郵件發送者需要設置。
  • 電子郵件發送者需要建立積極的“信譽”以提高可投遞性,否則發送者可能被標記為垃圾郵件。
  • 每個國家都有自己的行動網絡運營商,導致不可預測的投遞時間和尤其對於初創公司來說顯著的短信發送成本。

生物識別

“生物識別”一詞指的是僅使用生物識別方法進行在線驗證。事實上,與其他方法相比有一個根本的區別:生物識別驗證將原來的“證明某物的所有權”任務轉變為“證明你是誰”。由於隱私問題,生物識別方法主要用於本地驗證。

密碼並不完美,不過

正如我們所見,“密碼殺手”本質上是在隱藏密碼或使用密碼作為替代選項。以下是根據我們的討論對密碼的優勢總結:

  • 可訪問性和兼容性: 密碼可用於各種系統並對廣泛的用戶可訪問。
  • 成本效益和多功能性: 基於密碼的驗證通常比其他方法更具成本效益並適應不同的場景。
  • 匿名性和隱私: 密碼允許匿名使用並保護用戶隱私。

但每枚硬幣都有兩面。雖然密碼有其優勢,但僅靠它們進行驗證會帶來重大漏洞。它們對終端用戶的管理可能是個挑戰,如果網站所有者未能遵循正確的安全實踐,密碼便容易被破解。危險的安全實踐包括但不限於:

  • 允許使用弱密碼或洩漏密碼。
  • 不強制執行 HTTPS 連接。
  • 使用不安全的雜湊算法。
  • 未能嚴格遵循經過驗證的標準如 OAuthOpenID Connect (OIDC)。
  • 將資料庫公開。

結論

我並不意在貶低上述任何驗證方法。正相反,隨著我致力於構建 Logto,我對這些卓越的驗證方法及其背後的人們深表敬意。

然而,實現 100% 的安全性是個不可達的目標。我們能努力的方向是降低攻擊可能性。一個有效的方法就是將基於密碼的驗證與基於當前設備或環境的一次性密碼結合起來,這種方法添加了一層額外的驗證並已被廣泛採用。通過利用不同驗證技術的優勢,我們可以創建一個分層的方法,提供更強的保護。

最後,與其在密碼未真正被消除時專注於像“密碼殺手”這樣的流行語,不如專注於在安全性與用戶體驗之間取得平衡。這涉及到理解各種驗證方法的優勢和局限性,並以確保用戶數據安全和提供無縫用戶體驗的方式實施它們。