>經常在前端社區中被忽視,但Passkey對用戶體驗的影響,尤其是在身份驗證和形式處理方面,是不可否認的。 本文探討了Passkeys和Webauthn API,對這項新興技術提供了全面的了解。 目錄的
>鍵術語
依賴派對(服務器):
服務器處理身份驗證請求。 我們將在本文中使用“服務器”。公共密鑰公開訪問,而私鑰仍將存儲在生成設備上。 WebAuthn的關鍵限制是設備依賴性。丟失設備意味著失去訪問權限。 Passkeys通過云同步解決此問題,從而使多個設備訪問訪問。 但是,重要的是要注意,也存在單個設備憑證。
>>目前,iOS,MACOS和Android為云同伴Passkey提供了全面的支持,儘管瀏覽器兼容性仍然是一個因素。 Google密碼管理器和Apple iCloud鑰匙扣有助於同步。
>公共密鑰密碼學採用簽名。 通過簽名算法使用私鑰處理數據,然後使用公共密鑰進行驗證。 任何人都可以生成一個密鑰對,但是只有專用密鑰才能使用相應的公鑰創建簽名。 此簽名替換了密碼。 服務器存儲公鑰,身份驗證涉及通過簽署隨機挑戰來驗證私鑰的擁有。
這種方法消除了與密碼洩漏相關的風險。 如果數據庫被妥協,則僅暴露了公共密鑰,使攻擊者無用。 由於瀏覽器記住憑據,簡化了登錄過程,因此被遺忘的密碼成為過去的事。 生物識別技術或引腳可以增強安全性。加密解釋
。 通過簽名和驗證來確保真實性。 發件人的私鑰符號帶有消息哈希,只能使用發件人的公鑰進行驗證。 > >訪問Passkeys
客戶端到身份驗證器協議(CTAP)提供了一個接口,用於通過各種方法(NFC,USB,藍牙)訪問身份驗證器。 一個獨特的功能是使用手機(通過藍牙)作為缺乏本機Passkey支持的設備的身份驗證器。
> Passkeys vs. Webauthn在存儲和登錄過程中,
passkeys(多設備)與WebAuthn鍵(單個設備)不同。 WebAuthn需要一個用戶句柄和一個允許的列表,而Passkeys則利用服務器的域名識別關聯密鑰,從而簡化了登錄過程。 在密碼學上,它們本質上是相同的。WebAuthn和Passkey生成都涉及接收服務器挑戰並使用navigator.credentials.create
>簽署新挑戰,然後由服務器驗證。 navigator.credentials.get
詳細介紹了Passkey實現
(註冊)和
響應包括公共密鑰和navigator.credentials.create
(包含
// ... (code snippet for PublicKeyCredentialCreationOptions) ...和
)。 服務器驗證此數據並存儲公共密鑰,ID,以及(可選)clientDataJSON
和cose算法。 type
斷言challenge
origin
attestationObject
>處理斷言。
(包含原點哈希和navigator.credentials.get
)。 該服務器驗證簽名,
// ... (code snippet for PublicKeyCredentialRequestOptions) ...用於身份驗證。
>
authenticatorData
潛在的缺點signCount
clientDataJSON
>當前限制包括有限的操作系統支持(尤其是Windows和Linux)以及Google和Apple的Passkey平台之間的互操作性。 signCount
>
更多資源
演示github存儲庫
以上是Passkeys:什麼哎呀,為什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!