版本 v1.1web
FIDO UAF協議中文文檔。算法
如今FIDO UAF有關的文章還比較少,這主要是文檔翻譯和UAF系統概要介紹。瀏覽器
FIDO官網安全
感謝原文做者:服務器
Salah Machani, RSA, the Security Division of EMC
Rob Philpott, RSA, the Security Division of EMC
Sampath Srinivas, Google, Inc.
John Kemp, FIDO Alliance
Jeff Hodges, PayPal, Inc.網絡
FIDO UAF強大的認證框架使得網絡服務提供端可以透明的利用用戶終端上已有的安全功能來完成用戶身份的認證工做,並在這個過程當中避免認證過程當中和多認證憑證關聯所帶來的問題。架構
FIDO UAF參考架構描述了它的組件、協議及構成其強認證生態系統的接口。併發
本文檔介紹了FIDO通用認證框架(UAF)的參考架構。本文會方便技術架構師來深刻理解FIDO UAF強大的身份認證解決方案和它的相關工業標準。app
FIDO UAF將按以下順序介紹:框架
FIDO UAF 協議
FIDO UAF 應用程序API和傳輸綁定(Transport Binding)
FIDO UAF 認證器命令
FIDO UAF 認證器特定模塊(Authenticator-Specific Module,ASM)API
FIDO UAF 預約義值註冊表
FIDO UAF APDU(Application Protocol Data Unit,應用協議數據單元)
附錄文檔提供和UAF架構相關的重要信息:
FIDO AppID和Facets規範
FIDO 元數據語句
FIDO 元數據服務
FIDO 預約值註冊表
FIDO ECDAA算法
FIDO 安全參考
FIDO 詞彙表
以上文檔在FIDO聯盟網站獲取。
FIDO聯盟旨在經過如下方式來改善線上強認證生態:
制定開放、可擴展的、可互操做的線上用戶身份認證技術規範,取消對傳統密碼等的依賴;
制定確保這套標準再全球推廣的行業計劃方案;
向相關機構提交已成熟化的技術規範以推進標準化制定。
FIDO的核心驅動思想是:
易用性
隱私和安全
標準化
主要工做是使得網絡服務提供端可以透明的利用用戶終端上已有的安全功能來完成用戶身份的認證工做,並在這個過程當中避免認證過程當中和多認證憑證關聯所帶來的問題。
FIDO中包含兩個關鍵協議來知足用戶使用網絡服務的時兩種基本模式。兩個協議共享了大量的基礎內容,不過各自針對不用的使用場景有了不一樣的發展變化。
Universal Authentication Framework (UAF) 協議
UAF協議容許網絡服務端提供無密碼和多因子安全的服務。用戶經過本地認證機制(例如指紋,人臉識別,聲紋,PIN碼等)將用戶註冊到在線服務端。UAF協議容許服務選擇哪些安全因子來進行用戶認證。一旦註冊,當用戶需求服務時只需進行身份驗證,用戶只需重複本地身份驗證操做就能完認證過程。當在該設備進行身份驗證後,用戶將再也不須要輸入密碼。 UAF還能夠提供多因子認證的操做,例如指紋+ PIN碼等。
本文將着重介紹UAF相關內容。
Universal 2nd Factor (U2F) 協議
U2F協議容許在線服務經過要求用戶提供第二個安全因子構成的強認證來加強其現有密碼架構的安全性。用戶和之前同樣經過用戶名密碼登錄,然後服務端能夠在它選擇的任什麼時候間點要求用戶進行第二安全因子驗證。強認證方式能夠簡單的如4位PIN碼,而不會影響其以前原有結構的安全性。在驗證期間,還能夠經過U盾、點擊NFC等方式完成。用戶能夠在任何支持此協議的在線服務中使用他的FIDO U2F設備。
瞭解如下名詞有助於更好的理解FIDO UAF。
FIDO UAF 概述:本文檔,介紹FIDO UAF 框架、協議和規範。
FIDO技術術語:定義FIDO 聯盟規範和文件中使用的技術術語和短語。
UAF
UAF協議規範:全部UAF協議消息的消息格式和處理規則。
UAF應用程序API和傳輸綁定規範:規範客戶端應用程序使用FIDO的API和互操做性的配置文件。
UAF認證器命令:UAF認證機構應實現的最基本功能,用以支持UAF協議。
UAF認證器特定模塊API:由ASM向FIDO客戶端提供的特定於認證器的模塊API。
UAF預約義值註冊表:定義UAF協議保留的全部字符串和常量。
UAF APDU:將FIDO UAF認證器命令映射到應用協議數據單元(APDU)。
FIDO AppID和Facet規範:用戶憑證的範圍以及支持應用程序隔離的可信計算基礎。能夠對哪些應用程序和Web來源可使用哪些密鑰進行訪問控制決定。
FIDO元數據語句:FIDO認證過程當中用於交互和策略描述的因子、特徵、功能等的信息。
FIDO元數據服務:依賴方訪問最新元數據語句的基線方法。
FIDO ECDAA算法:定義FIDO認證器的直接匿名證實算法。
FIDO預約義值註冊表:定義FIDO協議保留的與多個FIDO相關的全部字符串和常量協議族。
FIDO安全參考:根據與FIDO相關的安全威脅的詳細分析,提供對FIDO安全性的分析基於其目標,假設和固有安全措施的協議。
參考架構文檔的「介紹」的其他部分主要講了有關UAF的關鍵驅動因素,目標和原則。
在後續章節中,本文檔會繼續介紹如下內容:
對架構定義的組件,協議和API進行更深刻的介紹。
一個的FIDO UAF實例和實現它們所需的協議消息流。
FIDO協議與其餘相關行業標準的關係。
爲了解決當下在強認證領域所面臨的問題,須要有一個運做良好的生態系統,一個全面、開放、多元化的架構,包括:
多樣化的用戶設備,不管是我的的、企業發佈的仍是企業BYOD,多樣化的設備運行環境,如家裏、辦公室、開放場所等。
認證器
依賴方應用程序及其部署環境
知足最終用戶和依賴方的需求
很是重視基於瀏覽器或傳統應用的終端用戶體驗
此解決方案架構必須具備如下特色:
FIDO UAF認證器的發現,認證和配置
經過FIDO UFA認證器實現跨平臺的強身份認證協議
統一的跨平臺的認證器API
依賴方簡單的整合機制
FIDO聯盟旨在打造一個開放、 多供應商、跨平臺的參考架構,其具備如下目標:
支持多因子強認證:經過兩個或更多個安全因子對終端用戶的身份認證來使服務提供方避免未經受權的訪問。
基於但不限於已有的設備功能:使用設備內置的認證器或功能(如指紋、相機、聲紋、嵌入式TPM硬件)來進行用戶身份認證,也可使用一些額外的輔助認證器。
認證機制的可選擇性:使服務提供端和用戶選擇最合適的認證機制來儘可能減小特定用戶場景下的風險。
簡化新認證功能的集成:使組織能夠簡便的擴展所使用的強認證手段以解決新場景、新挑戰並和新的認證器功能所匹配。
保持可擴展性:設計可擴展的協議和API方便之後使用
儘量利用現有的標準,並使其變得更開放、更具備可擴展性:一個開放、標準化的規範套件會帶來一個良性循環的生態系統,並下降部署強認證時遇到的風險、複雜度和成本。現有標準主要有下面的問題,缺少統一的身份驗證器配置和認證,缺乏統一的跨平臺的用於身份認證API,用戶認證過程當中更靈活強大的的認證挑戰-響應協議。
完善現有的登陸模式和認證聯合方式:現有的工業解決方案(如OpenID、OAuth、SAML等)已經在減小對密碼驗證方式和傳統認證聯合方式的依賴了,可是它們並無直接解決用戶和服務提供端初始的強認證交互過程所面臨的問題。
對最終用戶隱私的保護:向用戶提供控制服務提供方對設備等信息的傳播的能力,同時減小服務端潛在的信息傳播能力。
統一的最終用戶的體驗:在全部的平臺和相似的身份認證器上建立簡單、統一的用戶體驗。
FIDO UAF架構旨在知足FIDO目標併產生所需的生態系統優點。 它經過使用標準化協議和API填補現狀的空白來實現這一點。
下圖給出了參考架構及其組件和用戶、服務提供端的關係。
它實現了FIDO UAF 協議中客戶端的部分,主要負責:
經過FIDO UAF認證器抽象層的認證器API來完成和特定FIDO UAF認證器的交互;
使用用戶設備上(如手機app、瀏覽器等)特定的代理接口來完成和FIDO UAF 服務端的交互。舉個例子:FIDO可能會採用瀏覽器現有的插件,在app上可能會使用FIDO特定的SDK。隨後,用戶代理負責將FIDO UAF 傳送到服務提供方的FIDO UAF 服務器上。
FIDO UAF 架構確保FIDO客戶端軟件能夠實現跨系統跨平臺的能力。儘管每一個特定的FIDO客戶端是平臺相關的,可是組件間的交互會確保平臺到平臺的一致性的用戶體驗。
它實現了FIDO UAF協議中服務端的部分,主要負責:
服務端利用FIDO UAF協議經過設備用戶代理向FIDO UAF客戶端傳遞信息。
根據已配置的認證器元數據驗證FIDO UAF認證器的可靠性,確保只有可信賴的認證器註冊使用。
管理用戶接入的FIDO UAF認證器的認證聯合。
評估用戶認證和交易確認響應以肯定其有效性。
FIDO UAF服務器通常又服務端做爲內部服務器進行部署,或者又第三方外包服務商提供。
FIDO UAF協議用於在用戶設備和依賴方之間傳遞信息。這些信息主要包括:
認證器註冊:FIOD UAF註冊協議使依賴方可以:
發現用戶系統或設備上可用的FIDO UAF身份驗證器,並把認證器的相關屬性傳遞到服務依賴端,使得後續的安全策略得以肯定和執行。
利用FIDO UAF認證機構提供的認證元數據來對認證器的真實性和可靠性進行驗證。具體來講,是經過認證器元數據中發佈的認證公鑰完成驗證。
註冊認證者,並將其與依賴方的用戶賬戶相關聯。一旦認證者證實了驗證方,依賴方能夠提供獨特的安全標識符,該標識符是依賴方和FIDO UAF身份驗證器所特有的。該標示符能夠經過{RP,Authentication}這樣的對耳朵形式應用在後續的交互過程當中,而且這個標示符對其餘設備是不可知的。
用戶認證:認證過程使用基於加密的挑戰-響應認證協議,而且讓用戶選用認證過程當中將要使用的具體認證器。
確保安全的傳輸過程:若是用戶端認證器包含這樣的功能,依賴方就只需向用戶顯示一個安全消息進行確認。消息內容由依賴方決定。這個確承認以用於各類狀況,如金融交易、用戶合同肯定、醫療手續的確認。
認證器註銷:用戶再也不須要服務時,反註冊是一個基本的需求。服務提供方在驗證認證器合法性後刪除本地用戶相關認證數據,隨後向用戶確認註銷,用戶刪除UFA憑證完成註銷。
它爲FIDO客戶端提供統一的API,能夠爲FIDO支持的操做提供基於認證器的加密服務。它向下提供了一個底層的認證器插件API,以便部署多廠商FIDO UAF認證器和對應的驅動。
FIDO UAF身份驗證器是鏈接到或安裝在FIDO用戶設備中的安全實體,能夠建立與依賴方相關的key等。密鑰用於參與FIDO UAF強認證過程當中。如,隨後的FIDO UAF身份驗證器可使用密鑰材料提供對加密挑戰的響應,從而完成依賴方進行認證器的身份驗證。
爲了達到簡單集成可信認證功能的目標,一個FIOD UAF認證器須要提供它特有的認證類型(如:生物特徵),功能(如支持的加密算法)和設備來源等。這爲依賴方驗證用戶認證器身份的可靠性提供了支持。
在FIDO UAF認證的過程當中,認證是由認證器向依賴方提出的需求,認證器經過生成密鑰或信息報告來證實認證設備的真實性。而後有UAF協議攜帶包含簽名的信息給UAF服務端進行驗證。首先由認證器使用其私鑰進行簽名,而後在服務端經過認證元數據中的公鑰進行證書驗籤。元數據採用數據外放的方式和FIDO UAF服務器進行共享。
用戶將會有多種途徑獲取FIDO UAF認證器:好比購買了具備嵌入式FIDO UAF認證功能的新系統,後買了具備嵌入式FIDO UAF身份認證器的設備,或又其餘機構(eg.銀行)分發獲得身份認證器。
獲取了認證期以後,用戶須要向認證器進行特定的註冊(此註冊過程再也不FIDO UAF協議範圍內)。如,認證器設備是基於指紋的,用戶須要向認證器註冊其指紋。在註冊完成後,認證器就能夠在支持FIDO UAF的服務提供端進行下一步的用戶註冊。
以下給出的FIDO UAF架構,當用戶開始進行認證器初始化並和服務端發起交互時,依賴方能夠把信息透傳到FIDO服務器中。在初始化階段,服務端將提示用戶檢測到的認證器,並給出用戶註冊相關的選項。
註冊後,FIDO UAF身份認證器將在隨後用戶和服務端進行身份認證時使用。若是FIDO身份認證器不存在時,服務端將採用各類預備策略。這些策略可能包括容許常規登錄或者因權限減小而不容許登錄等。
用戶所使用的FIDO UAF認證器有多種類型。 一些認證器能夠採樣生物特徵數據,如臉部圖像,指紋或語音檢測。 一些經過PIN或本地認證者特定密碼條目, 還有一些可能只是一個硬件承載認證器。 這裏,只要遵照FIDO隱私原則,FIDO客戶端就能夠與外部服務進行交互 。
強認證是傳統的網站登錄驗證場景下的補充策略。一般網站會容許未經驗證或者經普通驗證方式認證的用戶瀏覽信息。可是當用戶但願有更高價值的交互時,如進入會員專區等,服務端會要求用戶進一步認證來提升安全級別。
FIDO UAF將幫助實現這種需求,有FIDO服務的網站將能識別用戶端系統可用的FIDO UAF認證器,並從中選擇合適的認證器來完成身份的認證。即,根據用戶對交互的安全要求,服務端將根據客戶端能提供的認證方式和網站風險分析引擎來動態的制定認證交互標準。
提供FIDO服務的依賴方結合有FIDO認證器的客戶端能夠提供多樣化的服務。例如以前的網站登陸認證和增強認證等。另外一個更高級的使用場景就是安全交易的處理。
考慮以下場景,依賴方但願最終用戶確認交易(例如財務操做,特權操做等)的狀況,以即可以檢測到在其到達終端設備顯示和返回的路由期間任何篡改交易消息。FIDO架構具備提供此功能的「安全事務」概念。若是FIDO UAF身份驗證器具備事務確認顯示功能,則FIDO UAF架構可確保系統支持「你看到的就是你要的」(WYSIWYS)。不少場景須要這種功能- 主要涉及交易受權(匯款,執行上下文特定的特權操做,電子郵件/地址的確認等)。
在某些狀況下,依賴方可能須要刪除FIDO中與特定用戶賬戶相關聯的UAF憑據認證。 例如,用戶的賬戶被取消或刪除,用戶的FIDO認證器丟失或被盜等。在這種狀況下,RP能夠請求FIDO認證器刪除綁定到用戶賬戶的認證密鑰。
隨着技術的發展,各類新的認證器將會出現。只要它們是基於FIDO結構的。則添加對它的支持,只須要依賴方在認證器描述元數據中添加對應條目,和認證證書便可。用戶就能夠經過新型認證器和依賴方進行交互。
用戶隱私是FIDO在設計之初就予以考慮的,並在又UAF提供了支持。一些核心的隱私保護設計以下:
UAF沒有一個全局可見的惟一標識符(實現不可連接性,即對同一角色或身份的關聯)若是出現UAF設備丟失的狀況,撿到設備的人也沒法準確的將其指向某個服務方,並發現其餘關聯帳戶。此外,若是有多名用戶共享某個UAF設備,且都進行過認證註冊過程,依賴方將不能經過UAF協議來單獨識別兩個帳戶在共享設備。
UAF協議基於帳戶、設備、服務端生成惟一的非對稱加密密鑰對。不一樣服務端的加密密鑰不能讓他們相互產生任何關聯,即UAF具備不可連接性。
UAF協議須要極少許的用戶我的數據,最多須要提供一個用戶在依賴方的username,這個信息指揮用在FIDO的做用過程當中,如註冊、認證、驗權等。這個數據信息只存在在用戶端環境中,且只有在必要的時候會作本地永久化處理。
在UAF中,用戶驗證(用戶生物特徵校驗等)在本地執行。UAF不向依賴方傳遞任何生物特徵數據,更不會要求依賴方對它進行存儲。
用戶會明確本身使用的某特定廠商的UAF設備。只有在用戶贊成的狀況下,纔會在註冊期間生產惟一的加密密鑰並將其綁定到依賴方。
UAF認證器只能經過生產批次或製造商和設備型號的認證證書來識別。它們不能被單獨標識。UAF規範要求廠商要以相同的認證證書和私鑰來製造一批100,000個或更多的UAF認證器,以確保不可連接性。
OpenID, SAML, OAuth
FIDO協議(UAF和U2F)完善了身份聯合管理(FIM)框架,如OpenId、SAML;也完善了web受權協議,如OAuth。
FIM依賴方能夠利用身份提供者(IdP)的初始身份驗證事件。然而,OpenID和SAML在IdP上沒有定義用於直接用戶身份驗證的特定機制。(就是OpenId和SAML只解決了第二千米的問題——經過鑑別後身份憑證的分享,沒有解決第一千米——對最終用戶的直接鑑別的問題)
當IdP與啓用FIDO的認證服務集成時,它能夠配合服務端進行強身份認證。下圖說明了這種關係。基於FIDO的認證機制首先被觸發,隨後FIM協議把這個身份認證用於隨後的身份憑證分享。
原創內容,版權全部,轉載請註明出處