FIDO 聯盟(Fast IDentity Online Alliance)簡介
網站:http://fidoalliance.org
FIDO Alliance,成立於2012年7月。
FIDO的目標是創建一套開放的標准協議,保證各個廠商開發的強認證技術之間的互操作性,改變目前的主流在線驗證的方式(即使用密碼作為主要驗證手段),消除或者減弱用戶對密碼的依賴。對於互聯網公司來說,隨着重大數據泄露事故的頻發,過去基於密碼的在線身份驗證技術已經難以維持互聯網經濟的穩定發展,安全界關於"密碼已死"的呼聲越來越高。而FIDO聯盟正是在這個背景下應運而生的一個推動去密碼化的強認證協議標准的組織。
FIDO的會員包括Nok Nok Labs、Google、BlackBerry、ARM、英特爾、PayPal、Lenovo、MasterCard、三星、VISA、Synaptics、RSA、微軟等等。支付寶也於今年9月份左右加入的FIDO組織。
FIDO標准支持多種硬件設備,如U盤(或U盾)、NFC芯片、TPM(可信賴平台模塊)芯片,以及指紋掃描器、語音識別、臉部識別、虹膜識別等生物識別硬件。目前的草案內容主要針對的是USB設備。
FIDO 基本原理
FIDO協議分為兩大類:U2F和UAF。對應的也有兩套規范(UAF Specifications,U2F Specifications),在如下地址下載:
https://fidoalliance.org/specifications/download/
- UAF: Universal Authentication Framework protocol.
UAF 支持指紋、語音、虹膜、臉部識別等生物身份識別方式。無需用戶密碼(Passwordless)介入,直接進行驗證交易。用戶在注冊階段,根據服務器支持的本地驗證方式,選擇一種驗證方式,如:指紋識別,人臉識別,語音識別,等等,服務器也可保留密碼驗證方式,將密碼和生物識別相結合,增強賬戶安全性。 - U2F: Universal Second Factor (U2F) protocol.
U2F類似國內的二代U盾的保護機制,使用雙因子(密碼和能與用戶交互的設備)保護用戶賬戶和隱私。用戶在注冊階段,使用服務器支持的加密設備,將賬戶和設備綁定。當進行登錄驗證操作時,服務器在合適的時候,提示用戶插入設備並進行按鍵操作,加密設備對數據簽名,發送給服務器,服務器做驗證,如果驗證成功,用戶則可登錄成功。由於有了第二因子(加密設備)的保護,用戶可以選擇不設置密碼或者使用一串簡單易記的4位密碼。
下圖展示了倆種協議的驗證方式:
和U盾相關的協議為U2F協議,下面內容主要針對U2F協議。
我們簡要分析一下U2F協議的安全性:在使用傳統的驗證方法時,系統需要從客戶端發送密碼到遠程服務器的密碼庫中進行比對,這樣就存在密碼被攔截和破解的風險。對遠程服務器而言,一旦超級管理員的帳號被盜,用戶的密碼會被直接或者間接獲取。破解者便能使用用戶信息登陸服務器進行惡意操作。如果服務器使用了U2F,服務器被破解者攻破,但其如果無法獲取用戶的U2F設備,也就無法登陸服務器進行惡意操作。
FIDO 工作原理
FIDO協議使用標准的非對稱公私鑰對來提供安全保障。確切的說,FIDO草案中使用的是ECDSA。
- 當用戶登錄服務器注冊信息時,用戶的加密設備產生一對非對稱密鑰對,私鑰在加密設備中保留,黑客無法讀取,公鑰傳給服務器,服務器將此公鑰和用戶對應的賬戶相關聯。
- 當用戶登錄服務器驗證信息時,用戶使用設備中的私鑰對服務器的挑戰數據做簽名,服務器使用對應的公鑰做驗證。用戶的設備中的私鑰,必須經過用戶解鎖(如按鍵,按下指紋等),才能被用來做簽名操作
FIDO 注冊演示
- User is prompted to choose an available FIDO authenticator that matches the online service's acceptance policy.
- User unlocks the FIDO authenticator using a fingerprint reader, a button on a second–factor device, securely–entered PIN or other method.
- User's device creates a new public/private key pair unique for the local device, online service and user's account.
- Public key is sent to the online service and associated with the user's account. The private key and any information about the local authentication method (such as biometric measurements or templates) never leave the local device.
FIDO 登陸演示
- Online service challenges the user to login with a previously registered device that matches the service's acceptance policy.
- User unlocks the FIDO authenticator using the same method as at Registration time.
- Device uses the user's account identifier provided by the service to select the correct key and sign the service's challenge.
- Client device sends the signed challenge back to the service, which verifies it with the stored public key and logs in the user.
FIDO(U2F)協議文檔
FIDO U2F規范目前草案有7個文檔分別為:
通過名字,應該能了解個大概。文檔的閱讀順序我已經做了標號。從0到7。7 為名詞表 ,做查詢名詞使用。
注:由於文檔還處於修訂當中,可能以后會有若干變化,本文是以2014.02.09的草案作為參考的。
U2F流程總覽
U2F 注冊
U2F設備 |
瀏覽器 |
服務器 |
|
||
將數據發送給客戶端 |
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
U2F 認證
U2F設備 |
瀏覽器 |
服務器 |
|
||
將數據發送給客戶端 |
||
|
||
|
||
|
||
|
||
|
||
|
||
U2F 協議解析
U2F的設備類型
文檔中提到,U2F的設備類型可以為USB設備,NFC設備,藍牙等設備。目前U2F規范中只涉及到了USB設備。以后會做補充。
服務器關聯的密鑰對
U2F設備產生的密鑰對應該是服務器關聯的,一對密鑰對應一個服務器,而不是一個U2F設備對應一個服務器。在注冊的時候,服務器給U2F設備傳入服務器相關信息,U2F設備產生一對密鑰對,將此密鑰對和服務器相關信息相關聯,給此密鑰對分配一個句柄(Key Handle),並將其和公鑰傳給服務器,服務器將注冊的 賬戶信息,公鑰,Key Handle全部關聯在一起並保存。
當用戶需要使用U2F做驗證操作時,服務器產生挑戰數據,使用U2F設備做簽名,此時服務器將Key Handle和服務器信息通過瀏覽器傳給U2F設備,U2F設備使用Key Handle,尋找對應的密鑰對,如果密鑰對存在,檢驗密鑰對應的服務器信息是否和傳入的服務器信息匹配,如果不匹配,說明服務器是偽造或者不正確的。如果正確,U2F設備等待用戶按鍵確認,用戶按鍵后,U2F設備對挑戰數據做簽名,簽名值返回給服務器,服務器驗證簽名值,如果簽名正確,說明此公鑰對應的唯一私鑰是正確的,表面用戶擁有合法U2F設備,如果簽名不正確,說明此用戶正在偽造身份登錄。可見,U2F驗證身份是雙向的,U2F驗證服務器的真偽,服務器驗證U2F的真假。
U2F設備"激活"和瀏覽器提醒
注冊時,在產生密鑰對前,U2F設備需要先被"激活"。例如,通過用戶按U2F設備上的按鈕,表示用戶允許繼續,激活U2F設備,U2F接着做后續操作。等待用戶按鍵時,瀏覽器需要提醒用戶按鍵確認。
驗證時,在做簽名前,U2F設備仍然需要先被"激活"。例如,通過用戶按U2F設備上的按鈕,表示用戶允許繼續,激活U2F設備,U2F接着做簽名操作。等待用戶按鍵時,瀏覽器需要提醒用戶按鍵確認。
U2F設備可以很廉價
為了保證安全性,私鑰的保護很重要。U2F協議允許一個廉價的設備,同時保證此設備不會泄露私鑰。Key Handle可以不是U2F設備上一個私鑰的索引,相反,Key Handle可以用來存儲私鑰和服務器相關信息,這些信息可以被加密保存到一個Key Handle中。(例如使用AES加密私鑰和服務器信息)。
驗證U2F的真偽
服務器需要一種方式,來確定用戶使用的設備是服務器所授權和允許使用的。例如,某銀行只使用了飛天誠信的U盾,銀行服務器就應該有足夠的認證信息,來判斷用戶使用的U盾就是飛天誠信的,而不是別的廠商制造的。這樣對廠商版權有利,對銀行安全性也有保障。一個廠商生產的一批U2F Key中,它們應該都共享一對公共的根密鑰對,使用此跟密鑰對來頒發證書,服務器將驗證此證書的合法性,當然,驗證使用的是對應的公鑰。FIDO草案中,目前還未指明如何頒發根密鑰對的過程,這個過程還在修訂中。
防止U2F設備被克隆
U2F協議中,使用了計數器。在用戶注冊完設備后,服務器會初始化計數器(從0開始),設備內部,對應的密鑰對也有一個計數器。用戶每驗證一次,設備內計數器加一,此計數會傳給服務器,服務器比對服務器上的計數器和設備的計數器,如果服務器的計數器小於等於設備的計數器,屬於正常操作,服務器驗證成功后,將計數器更新為設備當前的計數器。如果服務器的計數器大於設備的計數器,說明U2F設備已被克隆。例如,用戶注冊完一次后,並登陸,服務器的計數器更新為1,U2F設備也為1.下次用戶再次登陸,服務器和設備都跟新為2. 如果U2F設備被克隆,其它人使用該設備登陸,服務器計數器會隨着惡意使用者的登陸,計數器會遞增。假設,惡意用戶登陸了兩次,服務器的技術則為4。當真正的用戶登陸時,它的計數器加1,變為3,傳給服務器。服務器發現它的計數比服務器上的小,服務器就會給用戶發出警告信息,警告用戶設備已被克隆。但這種技術有個滯后的弊端,如果用戶不再登陸,或者很長時間都沒有登陸,用戶是無法發現被克隆的。即便是很快發現了,估計也為時已晚,黑客不可能等你發現了再去竊取你的隱私。
防止釣魚網站
假如,某釣魚網站在你注冊的時候,獲取到了你的Key Handle和公鑰。當做認證的時候,瀏覽器獲取的網址(application identity)和你注冊的時候網址是不一樣的。這樣,將Key Handle ,app_id信息傳入U2F設備中,U2F設備也不會實施簽名操作,因為它發現自身存儲的Key Handle對應的app_id和傳入的app_id不一致。
FIDO測試網站
下面羅列了幾個測試網站,可以做測試:
u2fdemo.appspot.com
demo.yubico.com/u2f.php
FIDO相關新聞事件
今年於加利福尼亞州蒙特雷舉行的The Cloud Identity Summit上,FIDO聯盟標准計划是一大重要主題。該聯盟在會議上舉辦了一場互操作性研討會,成員們演示了他們的FIDO Ready解決方案如何協同工作。
FIDO聯盟是一家非營利性組織,創立於兩年之前,旨在重新思考和重新設計身份驗證技術。成員們努力實現無密碼的用戶體驗。該組織包括谷歌、微軟和三星等重量級成員。
Yubico公司演示了YubiKey NEO U2F身份驗證。Yubico公司首席執行官兼創始人Stina Ehrensvard表示,有三家公司演示了基於Universal Authentication Framework框架協議的解決方案,還有六家公司演示了基於Universal Second Factor的設備和服務。
Eyelock公司率先演示了用於眼睛識別的Universal Second Factor協議。Eyelock和StrongAuth聯合演示了使用USB接口的身份驗證設備myris。Eyelock首席運營官Jeff Carter表示,Myris可將人眼的虹膜特征轉換為獨特的代碼,然后與用戶的加密代碼進行匹配,決定是否授予訪問權限。
StrongAuth公司的首席技術官Arshad Noor表示:"StrongAuth加入FIDO聯盟還不到五個月的時間,但我們確信FIDO Universal Second Factor協議具有足夠的吸引力,能夠得到廣泛實施,我們將以盡可能快的速度推出FIDO Ready解決方案。The Cloud Identity Summit的互操作性研討會證明了FIDO標准的效用,一旦規范獲得批准,面向市場的解決方案很可能投入部署。"
AGNITiO和Nok Nok使用AGNITiO面向移動設備的FIDO Ready語音ID,共同演示了如何在移動設備上使用Nok Nok Labs客戶端進行注冊並登錄到FIDO應用程序,以及如何使用AGNITiO語音ID密碼短語。用戶還能夠選擇在線購買,在支付界面中說出密碼短語來批准購買。
Nok Nok Labs演示了Universal Second Factor和Universal Authentication Framework與Nok Nok Multifactor身份驗證服務器的集成。Nok Nok公司高級營銷總監Jamie Cowper表示:"我們利用帶有Synaptics傳感器的三星S5,以及AGNITiO語音生物識別解決方案,實現了與指紋識別的集成。我們還結合ForgeRock OpenAM解決方案演示了FIDO協議,展示FIDO如何能夠為聯合解決方案提供補充。"
Plug-up International公司演示了雙重FIDO Universal Second Factor和Universal Authentication Framework USB身份驗證程序令牌與三個服務器合作伙伴的互操作。
FIDO主網站有這些公司的演示視頻:
https://fidoalliance.org/adoption/videos/