Elliptic-Curves
ECDSA 簽名簽名和驗證過程能否取代基於密碼雜湊的登錄系統?
ECDSA 或 DSA 通常是使用私鑰對消息或數據進行簽名並使用公鑰對其進行驗證,如果攻擊者/冒名頂替者沒有私鑰,則他們無法正確簽署消息。
如果 ECDSA 私鑰是保密的,ECDSA 的簽名驗證是否可以用於使用者登錄系統?而不是基於密碼散列的登錄方法?
是的,這是安全的,前提是要簽名的消息在每次登錄時都是唯一的,以防止重放攻擊。通常這是通過隨機挑戰或共享密鑰上的簽名來完成的。
事實上,SSH 已經使用 ECDSA 密鑰做到了這一點:雙方就一個共享密鑰達成一致,該密鑰經過雜湊處理,客戶端簽署雜湊密鑰和其他一些數據以驗證是否允許登錄。MariaDB 也做了類似的事情通過派生 Ed25519 密鑰(它不完全是 ECDSA,但類似)並使用它來簽署隨機挑戰(儘管它不一定以安全的方式派生該密鑰)。
類似地,大多數 FIDO2 和 WebAuthn 雙因素身份驗證設備,例如 YubiKeys,都使用這種方法。您還可以使用 ECDSA 的 TLS 客戶端證書,這是在某些環境中使用的另一種方法。
這可以用於任何類型的登錄,包括網站,但在那裡不太常見,因為人們不希望隨身攜帶密鑰,並且經常從不同的電腦登錄網站,因此實際上很不方便。但是忽略實際問題,如果正確實施,這是安全的。