Public-Key

公鑰加密而不是用於 Web 身份驗證的密碼

  • October 13, 2017

使用者在應用程序層對網站進行身份驗證的常用方法是使用共享密鑰 - 使用者密碼。如果使用者連接到銀行,他們會向銀行提供密碼,銀行會儲存密碼,希望不是明文,而是通過慢速 KDF 執行的加鹽雜湊。

這種方案有一些弱點,例如使用者傾向於在網站上重複使用密碼,以及許多伺服器運營商在儲存使用者密碼時沒有採取適當的預防措施。即使使用者為每個網站隨機生成強密碼,伺服器仍然可能失去密碼,因此使用者必須信任伺服器運營商安全地儲存密碼。

如果使用公鑰方案,類似於 SSH 密鑰身份驗證,使用者將不必信任伺服器。伺服器可以儲存使用者的公鑰,如果被盜,不會有任何危害。如果使用者的私鑰被盜,他們仍然可以撤銷密鑰,防止小偷使用它。

SSH 支持這種身份驗證。是否有任何現有系統對網站進行身份驗證,而不是像這樣的 SSH 伺服器?

基本上,是否有任何系統可以用使用者私鑰的簽名替換使用者密碼?

WebAuthn標準聽起來與您所描述的相似。

FIDO UAF 協議通過由稱為 FIDO 身份驗證器的專用硬體保護的私鑰提供身份驗證,其中不傳輸或儲存密碼。使用者可以通過指紋或面部認證解鎖他的私鑰。

TLS 提供的客戶端身份驗證通常需要 CA 頒發的客戶端證書。應用層也可以通過OpenSSL等實現提供的功能來接近證書中包含的認證資訊。

引用自:https://crypto.stackexchange.com/questions/52182