基本介紹
簡介,支持,服務,客戶端,伺服器關聯的密鑰對,驗證U2F的真偽,
簡介
通用第二因子(U2F)是一種開放式認證標準,它使用基於智慧卡中類似安全技術的專用USB或NFC設備來加強和簡化雙因素認證(2FA)。由谷歌和Yubico最初開發,由恩智浦半導體提供支持,該標準現由FIDO聯盟主辦。
U2F安全密鑰由谷歌瀏覽器自38版和自版本40以來的Opera提供支持。U2F安全密鑰可作為支持U2F協定的線上服務(包括谷歌的兩步驗證的附加方法,Dropbox,GitHub,GitLab,Bitbucket,Nextcloud,Facebook等。
Chrome,Firefox和Opera目前是本地支持U2F的唯一瀏覽器。雖然微軟的Edge瀏覽器和微軟賬戶(包括Office 365,OneDrive和其他微軟服務)的身份驗證還沒有U2F,微軟已經啟用了Windows 10的Windows Hello登錄平台和EdgeFIDO 2.0支持。支持。Mozilla已將其集成到Firefox 57中,並在Firefox 60中默認啟用它。
支持
服務
客戶端
Google Chrome38版和Opera40版起支持U2F。微軟計畫在Windows 10和Edge瀏覽器中支持FIDO 2.0。Mozilla正在向Firefox增添支持,目前可以安裝附加組件方式支持,在Firefox 57以上版本則可設定瀏覽器原生支持。
伺服器關聯的密鑰對
U2F設備產生的密鑰對應該是伺服器關聯的,一對密鑰對應一個伺服器,而不是一個U2F設備對應一個伺服器。在註冊的時候,伺服器給U2F設備傳入伺服器相關信息,U2F設備產生一對密鑰對,將此密鑰對和伺服器相關信息相關聯,給此密鑰對分配一個key handle,將其和公鑰傳給伺服器,伺服器將註冊的賬戶信息,公鑰,key handle全部關聯在一起並保存。當用戶需要使用U2F驗證操作時,伺服器產生Challenge數據,使用U2F設備做簽名,此時伺服器將key Handle和伺服器信息通過瀏覽器傳給U2F設備,U2F設備使用Key Handle,尋找對應的密鑰對,如果密鑰對存在,檢驗密鑰對應的伺服器信息是否和傳入的伺服器信息匹配,如果不匹配,說明伺服器是偽造或者不正確的。如果正確,U2F設備等待用戶按鍵確認,用戶按鍵後,U2F設備對Challenge數據做簽名,簽名值返回給伺服器,伺服器驗證簽名值,如果簽名正確,說明此公鑰對應的唯一私鑰是正確的,表明用戶擁有合法的U2F設備,如果簽名不正確,說明此用戶正在偽造身份登錄。可見,U2F驗證身份是雙向的,U2F驗證伺服器的真偽,伺服器驗證U2F的真假。
驗證U2F的真偽
伺服器需要一種方式,來確定用戶使用的設備是伺服器所授權和允許使用的,例如,某銀行只使用了飛天誠信的U盾,銀行伺服器就應該有足夠的認證信息,來判斷用戶使用的U盾就是飛天誠信的,而不是別的廠商製造的。這樣對廠商著作權有利,對銀行安全性也有保障。一個廠商生產的一批U2F key中,他們應該都共享一對公共的根密鑰對,使用此根密鑰對來頒發證書,伺服器將驗證此證書的合法性,當然,驗證使用的是對應的公鑰。FIDO草案中,目前還未指明如何頒發跟密鑰對的過程,這個過程還在修訂中。