等保2.0下,身份鑒别技(jì )術大起底

文(wén)章來源:等級保護測評 | 發布時間:2019-08-07
 

1 等保2.0關于身份鑒定的規定

等保2.0标準在20195月正式發布,将于201912月開始實施。等保2.0标準中(zhōng)對身份鑒别做了詳細要求,下面表格中(zhōng)列出了等保2.0對身份鑒别的要求,黑色字體(tǐ)表示是針對上一安(ān)全級别增強的要求。



在等級保護體(tǐ)系中(zhōng),級别越高,對安(ān)全性要求越高。


等保2.0中(zhōng)主要在安(ān)全物(wù)理(lǐ)環境和安(ān)全計算環境中(zhōng)提到身份鑒别要求。安(ān)全物(wù)理(lǐ)環境中(zhōng)的身份鑒别主要指真實的人進入機房時要進行的身份認證,安(ān)全計算環境中(zhōng)的身份鑒别主要指用(yòng)戶登錄計算機、其他(tā)計算設備或業務(wù)系統時要進行的身份認證。在等保3級中(zhōng),要求必須采用(yòng)雙因子認證技(jì )術;在等保4級中(zhōng),要求安(ān)全通信網絡中(zhōng)通信前基于密碼技(jì )術對通信的雙方進行驗證或認證,計算機或進程之間通訊需要進行身份認證。


身份鑒别技(jì )術是我們大多(duō)數人最熟悉的安(ān)全技(jì )術,我們每天登錄電(diàn)腦、手機時都要進行身份鑒别,然後才能(néng)進行各種操作(zuò)。身份鑒别的目的是确認用(yòng)戶身份,是最基本的安(ān)全技(jì )術也是最重要的安(ān)全技(jì )術,因為(wèi)其他(tā)安(ān)全技(jì )術(比如權限控制、安(ān)全審計等)都要依賴用(yòng)戶身份信息。如果身份信息不可(kě)信,安(ān)全就成了無本之木(mù)、無源之水,失去了根基。


另外,在等保2.0中(zhōng)提到身份标識必須具(jù)有(yǒu)唯一性,這也是所有(yǒu)身份管理(lǐ)系統的基本要求,本文(wén)重點講解身份鑒别技(jì )術,關于身份标識唯一性、會話超時處理(lǐ)機制等不做詳細探讨。



2 身份鑒别理(lǐ)論


身份鑒别的核心理(lǐ)論都是通過3個問題來識别确認身份:你知道什麽,你擁有(yǒu)什麽,你的唯一特征是什麽。


2.1. 你知道什麽


你知道什麽,就是根據你知道的信息來證明你的身份。這是一種曆史悠久的身份鑒别技(jì )術,大家耳熟能(néng)詳的“天王蓋地虎,寶塔鎮河妖”,就是依靠你知道的暗号來确認你的身份。當然,現在這句話已經衆所周知,也就失去了身份認證的價值。當年我們地下黨的很(hěn)多(duō)活動就是靠這種方式确認自己人的身份,從而展開活動的。


你知道什麽,核心在于你知道的信息一定是保密的,别人不知道或難以猜測的。


計算機系統中(zhōng),基于這個理(lǐ)論實現的最常見的身份鑒别技(jì )術是基于用(yòng)戶名(míng)密碼的身份認證,這也是現在絕大部分(fēn)的系統使用(yòng)的身份鑒别技(jì )術。


2.2. 你擁有(yǒu)什麽


你擁有(yǒu)什麽,就是根據你擁有(yǒu)的東西來證明你的身份。這也是一種曆史悠久的身份鑒别技(jì )術,我們各種戲劇故事裏經常都有(yǒu)攜帶信物(wù)找人的事情,像寶劍、血書或發簪等都是常用(yòng)的信物(wù),這些信物(wù)就用(yòng)來證實對方的身份。當然有(yǒu)些信物(wù)因為(wèi)沒有(yǒu)明确的身份标識,導緻對方死不認賬的故事也有(yǒu)很(hěn)多(duō)。曆史上調度軍隊的虎符就是典型的信物(wù),因為(wèi)其設計嚴謹,是通過“你擁有(yǒu)什麽”驗證對方身份的經典案例。


你擁有(yǒu)什麽,核心在于你擁有(yǒu)的東西一定是有(yǒu)特征的,可(kě)以被對方辨識并認可(kě)的東西。


計算機系統中(zhōng),基于這個理(lǐ)論實現的最常見的身份鑒别技(jì )術是基于U盾、IC卡的身份認證,這是現在大部分(fēn)銀行系統使用(yòng)的身份鑒别技(jì )術之一。


2.3. 你的唯一特征是什麽


你的唯一特征是什麽,就是根據你的唯一特征來證明你的身份。同樣,這種技(jì )術也有(yǒu)悠久的曆史,因為(wèi)早期科(kē)技(jì )不發達,曆史上大家認為(wèi)的唯一特征可(kě)能(néng)實際并不是唯一特征。我們曆史上常見的“滴血認親”就是基于該理(lǐ)論進行身份鑒别的技(jì )術,現在科(kē)技(jì )已經證實“滴血認親”其實誤差非常大,不足以确認一個人的身份。


你的特征是什麽,核心在于你具(jù)有(yǒu)唯一的生物(wù)特征,這個生物(wù)特征可(kě)以準确對應到你這個人。


計算機系統中(zhōng),基于這個理(lǐ)論實現的最常見的身份鑒别技(jì )術是基于指紋識别、人臉識别的身份認證,這是大部分(fēn)智能(néng)手機和很(hěn)多(duō)門禁系統使用(yòng)的身份鑒别技(jì )術。



3 常用(yòng)身份鑒别技(jì )術


3.1. 密碼鑒别


這是靠“你知道什麽”來驗證身份的鑒别技(jì )術。


依靠密碼來進行身份鑒别是最基礎的鑒别技(jì )術,也是适用(yòng)性最廣的技(jì )術。現在雖然有(yǒu)了其他(tā)多(duō)種身份鑒别技(jì )術,在多(duō)因子認證方案裏,基于密碼鑒别身份也是其中(zhōng)必選的基本技(jì )術。等保2.0三級系統的身份認證要求:“應采用(yòng)口令、密碼技(jì )術、生物(wù)技(jì )術等兩種或兩種以上組合的鑒别技(jì )術對用(yòng)戶進行身份鑒别,且其中(zhōng)一種鑒别技(jì )術至少應使用(yòng)密碼技(jì )術來實現”。


密碼的鑒别的突出優點是簡單易懂,易于實施。


密碼安(ān)全的問題在于它既如此簡單,又(yòu)困難重重。


密碼鑒别技(jì )術面臨的主要安(ān)全問題是暴力破解。暴力破解是指攻擊者通過計算機系統組合所有(yǒu)可(kě)能(néng)性(例如登錄時用(yòng)到的賬戶名(míng)、密碼),嘗試破解用(yòng)戶的賬戶名(míng)、密碼等敏感信息。暴力破解一般會使用(yòng)密碼字典表,用(yòng)戶的密碼複雜度如果不是足夠強,暴力破解成功的概率非常高。


暴力破解分(fēn)為(wèi)2種:在線(xiàn)破解和離線(xiàn)破解。在線(xiàn)破解指基于客戶端接口使用(yòng)不同的而秘密嘗試登錄認證,離線(xiàn)破解指盜取了數據庫的賬号密碼信息,根據這些信息驗證破解密碼。離線(xiàn)破解不受原有(yǒu)系統的限制,破解成功率極高。


密碼服務(wù)公(gōng)司SplashData分(fēn)析了2018年在互聯網上洩漏的500多(duō)萬個用(yòng)戶密碼,最後統計出TOP 25的弱密碼如下圖:


 


這些密碼看起來實在是太弱了,但是複雜的密碼帶來的問題是記不住密碼,經常遺忘密碼、重置密碼也是很(hěn)讓人惱火的一件事。現在每個人都面對很(hěn)多(duō)系統密碼,如果每個密碼都很(hěn)複雜,真會讓人崩潰,有(yǒu)些人索性就把密碼直接記在本上或手機上,這樣反而帶來了更大的安(ān)全隐患。


為(wèi)了保證密碼鑒别技(jì )術的安(ān)全性,增大抵禦暴力破解的能(néng)力,在設計時需要考慮下面的一些要求:


1.  增強密碼複雜度。建議密碼長(cháng)度最小(xiǎo)8位,使用(yòng)大小(xiǎo)寫字母、特殊符号、數字組合,能(néng)極大的增大密碼的破解難度。


2.  附加驗證碼校驗。校驗碼一般是以圖形顯示的随機字符串,人眼可(kě)以識别,但是機器很(hěn)難辨認,使用(yòng)校驗碼可(kě)以避免惡意的在線(xiàn)破解密碼。現在有(yǒu)些網站的校驗碼已經越做越複雜,不隻是随機字符串,還可(kě)能(néng)是一個數學(xué)計算公(gōng)式,或者圖片内容識别等。這些基本原理(lǐ)都是一緻的,即人可(kě)以識别出校驗碼,機器很(hěn)難識别。


3.  多(duō)次登錄失敗鎖死賬号。多(duō)次登錄失敗,就很(hěn)有(yǒu)可(kě)能(néng)是有(yǒu)人或機器在嘗試破解密碼惡意登錄,這時需要有(yǒu)鎖定賬号的功能(néng),即在一段時間内不允許再次登錄,這可(kě)以大幅增加密碼破解的時間。密碼暴力破解技(jì )術主要依靠計算機的強大計算能(néng)力多(duō)次嘗試驗證密碼,如果賬号鎖死不允許嘗試登錄,該技(jì )術就失去了價值。這個方法是一把雙刃劍,還要注意有(yǒu)人惡意鎖死别人賬号的情況,所以有(yǒu)時候要結合IP地址和賬号進行細粒度的鎖死控制。


4.  上述方法針對在線(xiàn)破解有(yǒu)效,針對離線(xiàn)破解無效。要保證密碼存儲和驗證的安(ān)全性,還必須做到:密碼采用(yòng)單向不可(kě)逆的哈希算法計算後存儲;在對密碼進行哈希計算的時候必須進行加鹽處理(lǐ),鹽值必須随機生成;密碼哈希的鹽值必須存放在獨立的數據庫,避免和密碼一起被“脫庫”。


3.2. 動态口令牌


這是靠“你擁有(yǒu)什麽”來驗證身份的鑒别技(jì )術。




動态口令牌(OTPOne time password)是客戶手持用(yòng)來生成動态密碼的終端,主要基于時間同步方式,一般每60秒(miǎo)變換一次動态口令,口令一次有(yǒu)效,它産(chǎn)生6位動态數字進行一次一密的方式認證。


每個動态口令牌都有(yǒu)一個唯一的密鑰,該密鑰同時存放在服務(wù)器端,每次認證時動态密碼卡與服務(wù)器分(fēn)别根據同樣的密鑰,同樣的随機參數(時間、事件)和同樣的算法計算了認證的動态密碼,從而确保動态口令的一緻性。因每次認證時的随機參數不同,所以每次産(chǎn)生的動态口令也不同。由于每次計算時參數的随機性保證了每次動态口令的不可(kě)預測性,從而保證了系統認證的安(ān)全性。


服務(wù)器驗證動态口令時,跟這個動态口令牌沒有(yǒu)任何物(wù)理(lǐ)聯系,服務(wù)器和動态口令牌使用(yòng)同樣的算法,基于通用(yòng)的原始秘鑰和其他(tā)參數,各算各的,同一時間算出的數字都是一樣的。計算過程中(zhōng)時間是一個很(hěn)重要的參數,2者的時間必須要保持一緻,否則就會因時間不同步導緻動态口令失效。


對于時間不同步的令牌,可(kě)以通過增大偏移量的技(jì )術(前後10分(fēn)鍾)來進行兼容适配,确保其能(néng)夠繼續使用(yòng),降低對應用(yòng)的影響。但對于時間誤差較大(超過20分(fēn)鍾)的時間同步令牌,就無法繼續使用(yòng)了,必須返廠或送回服務(wù)器端另行處理(lǐ)。


由于動态口令牌使用(yòng)非常便捷,被廣泛應用(yòng)在VPN、網上銀行、電(diàn)子政務(wù)、電(diàn)子商(shāng)務(wù)等領域。随着智能(néng)手機的普及,現在有(yǒu)些應用(yòng)開始使用(yòng)智能(néng)手機代替動态口令牌生成動态口令,這能(néng)顯著降低成本,增強易用(yòng)性,以後也會得到越來越廣泛的應用(yòng)。現在應用(yòng)比較廣泛比較知名(míng)的手機動态口令服務(wù)是Google提供的Google Authenticator服務(wù),我們在後面章節會單獨講解。


3.3. 短信驗證碼


這是靠“你擁有(yǒu)什麽”來驗證身份的鑒别技(jì )術。


短信驗證碼會把密碼以手機短信形式發送到用(yòng)戶的手機上,隻有(yǒu)擁有(yǒu)這個手機的用(yòng)戶才能(néng)接受到信息,進行登錄驗證。


因為(wèi)手機的流行,現在基本人手一機,短信驗證碼是現在互聯網應用(yòng)中(zhōng)最常見的鑒别技(jì )術,短信驗證碼的好處是一次一密,安(ān)全可(kě)靠,又(yòu)不需要記憶密碼,極大的方便了使用(yòng)者。


短信驗證碼的主要問題:

1.  系統需要接入電(diàn)信網絡,一般通過電(diàn)信運營商(shāng)的短信網關接口。大多(duō)數工(gōng)控系統因為(wèi)無法接入互聯網,無法使用(yòng)短信驗證碼的鑒别技(jì )術。

2.  短信驗證需要暴露用(yòng)戶的手機号碼,這就存在洩漏用(yòng)戶隐私的風險。

3.  無法防禦新(xīn)型僞基站技(jì )術。采用(yòng)“GSM劫持+短信嗅探”技(jì )術,可(kě)實時獲取用(yòng)戶手機短信内容,進而利用(yòng)各大知名(míng)銀行、網站、移動支付APP存在的技(jì )術漏洞和缺陷,實現信息竊取、資金盜刷和網絡詐騙等犯罪。


注意,此類僞基站方法主要利用(yòng)了2G網絡GSM網絡的既有(yǒu)漏洞,“GSM劫持+短信嗅探”從技(jì )術上還沒有(yǒu)辦(bàn)法防範,一旦中(zhōng)招,短信信息就會洩露無餘。另外,犯罪者大多(duō)選擇淩晨作(zuò)案,且無需直接與受害者接觸,因此大部分(fēn)受害者一覺醒來隻有(yǒu)手機裏莫名(míng)其妙多(duō)出來的驗證碼:


 


以後随着2G網絡逐漸關閉,4G5G逐漸普及,如果手機開啓了VoLTE載波聚合,就可(kě)以避免GSM劫持的問題。


 


但是,另一個問題接踵而來,那就是智能(néng)APP如果被惡意程序控制,也可(kě)能(néng)拿(ná)到短信驗證碼,現在很(hěn)多(duō)APP都要求手機短信的讀取功能(néng),所以短信驗證碼用(yòng)于身份鑒别仍然是有(yǒu)不小(xiǎo)的安(ān)全風險。


3.4. IC


這是靠“你擁有(yǒu)什麽”來驗證身份的鑒别技(jì )術。


IC卡也稱智能(néng)卡,将一個微電(diàn)子芯片嵌入符合ISO 7816标準的卡基中(zhōng),做成卡片形式。IC卡與讀寫器之間的通訊方式可(kě)以是接觸式,也可(kě)以是非接觸式。目前IC卡可(kě)以認為(wèi)是不可(kě)複制的硬件,通過IC卡可(kě)以來确認用(yòng)戶身份。現在我們普遍使用(yòng)的二代居民(mín)身份證就是一種IC卡。



IC卡内置的芯片中(zhōng)存有(yǒu)與用(yòng)戶身份相關的數據,智能(néng)卡由專門的廠商(shāng)通過專門的設備生産(chǎn),是不可(kě)複制的硬件。智能(néng)卡由合法用(yòng)戶随身攜帶,登錄時必須使用(yòng)專用(yòng)讀卡器讀取智能(néng)卡的信息,驗證用(yòng)戶的身份。


IC卡一般和密碼一起形成雙因子認證方案。IC卡在使用(yòng)時需要配合專用(yòng)的讀卡器,所以推廣起來有(yǒu)些麻煩,無論從易用(yòng)性還是成本考慮,都不如基于USBKey的雙因子認證方案。


IC卡認證技(jì )術目前在門禁系統中(zhōng)應用(yòng)較多(duō)。


3.5. USB Key


這是靠“你擁有(yǒu)什麽”來驗證身份的鑒别技(jì )術。


USB Key是一種USB接口的硬件設備。它内置智能(néng)芯片,并有(yǒu)一定的存儲空間,可(kě)以存儲用(yòng)戶的數字證書信息,利用(yòng)USB Key内置的算法實現對用(yòng)戶身份的認證。


USB Key是國(guó)内很(hěn)多(duō)銀行采用(yòng)的客戶端認證方案,用(yòng)戶的私鑰在高度安(ān)全的USB Key内産(chǎn)生,并且終身不可(kě)導出到USB Key外部,交易簽名(míng)也在USB Key内進行,所以安(ān)全強度非常高。


用(yòng)戶私鑰保存在密碼鎖中(zhōng),理(lǐ)論上使用(yòng)任何方式都無法讀取,因此保證了用(yòng)戶認證信息的安(ān)全性。USB Key産(chǎn)品最早是由加密鎖廠商(shāng)提出來的,原先的USB加密鎖主要用(yòng)于防止軟件破解和複制,保護軟件不被盜版。


現在幾乎所有(yǒu)的計算機都支持USB接口,所以USB Key和密碼結合的雙因子認證方案是現在主流的身份鑒别方案。


 


3.6. 指紋認證


這是靠“你的唯一特征是什麽”來驗證身份的鑒别技(jì )術。

 


指紋是指手指末端正面皮膚上的凸凹不平的紋路,這些紋路包含大量的信息。這些皮膚的紋路在圖案、斷點和交點上各不相同的,這些信息就是“指紋特征”,指紋特征具(jù)有(yǒu)唯一性和永久性,通過比較指紋特征,就可(kě)以驗證一個人的真實身份。


指紋認證主要用(yòng)于手機和某些筆(bǐ)記本電(diàn)腦,在門禁系統中(zhōng)也得到廣泛應用(yòng)。在大多(duō)數業務(wù)系統中(zhōng)應用(yòng)較少,主要原因如下:

1.  指紋識别需要專用(yòng)的硬件,成本較高,不方便部署。

2.  指紋認證技(jì )術和其他(tā)生物(wù)認證技(jì )術比如人臉識别、虹膜認證一樣,面臨的主要問題是個人隐私問題。這些生物(wù)特征是比手機号碼更重要的隐私内容,一旦洩露出去後果很(hěn)嚴重。

3.  指紋很(hěn)容易被盜取、僞造,指紋識别技(jì )術目前沒有(yǒu)足夠的能(néng)力識别僞造的指紋。

4.  指紋不可(kě)改變,一旦指紋被盜取僞造,隻能(néng)作(zuò)廢指紋識别功能(néng),沒法修改指紋。所以指紋識别技(jì )術在安(ān)全要求較高的場景并不是很(hěn)合适的身份鑒别技(jì )術。


除了指紋認證,現在人臉識别技(jì )術也比較成熟,也是在手機、門禁系統中(zhōng)應用(yòng)較多(duō)。人臉識别系統和指紋識别系統都不大容易在業務(wù)系統中(zhōng)推廣,面臨的問題也是類似的,不再詳述。



4 身份鑒别技(jì )術對比分(fēn)析


幾種常見的身份鑒别技(jì )術的對比分(fēn)析如下表:



在實際應用(yòng)中(zhōng),一般采取密碼和其他(tā)鑒别技(jì )術一起組成雙因子認證機制,達到安(ān)全性和經濟性、易用(yòng)性的平衡。


在雙因子認證方案中(zhōng),動态口令牌和USB Key兩種方案易于部署,安(ān)全程度高,和密碼機制配合起來,是目前應用(yòng)最廣的雙因子認證方案。



5 業界成熟的身份鑒别方案


5.1. RADIUS


RADIUS,全稱是Remote Authentication Dial In User Service,最早是Livingston公(gōng)司研發的遠(yuǎn)程用(yòng)戶撥号認證系統,協議框架在RFC2865RFC2866中(zhōng)定義,是目前應用(yòng)最廣泛的AAA(認證、授權、計費)協議。AAA是一種管理(lǐ)框架,可(kě)以用(yòng)多(duō)種協議來實現。


RADIUS是現在事實上的網絡接入标準,幾乎所有(yǒu)的網絡接入服務(wù)器廠商(shāng)均實現了該協議。


RADIUS接入認證的整體(tǐ)框架如下圖所示:


 


RADIUS協議承載于UDP之上,官方指定的端口号是18121813RADIUS協議簡單明确、擴展性好,因此得到了廣泛應用(yòng)。


基于RADIUS的認證方案主要有(yǒu)以下特點: 

●  采用(yòng)通用(yòng)的客戶端/服務(wù)器結構,NAS作(zuò)為(wèi)RADIUS的客戶端,負責将用(yòng)戶認證信息傳遞給RADIUS服務(wù)器,RADIUS服務(wù)器負責接收用(yòng)戶的認證請求,對用(yòng)戶進行認證,返回結果給NAS處理(lǐ)。

●  采用(yòng)共享密鑰保證網絡通信的安(ān)全性,客戶端與RADIUS服務(wù)器之間的交互是通過共享密鑰來進行相互認證的,密碼不在網上傳輸,減少用(yòng)戶密碼洩露的風險。

●  具(jù)有(yǒu)良好的可(kě)擴展性,RADIUS是一種可(kě)擴展的協議,所有(yǒu)的交互報文(wén)由多(duō)個不同長(cháng)度的ALVAttribute-Length-Value)三元組組成,新(xīn)增加屬性和屬性值不會破壞到協議的原有(yǒu)實現。

●  協議認證機制靈活,RADIUS協議支持多(duō)種認證用(yòng)戶的方式,包括PAPCHAPUNIX login等多(duō)種認證方式。


5.2. Kerberos


Kerberos是MIT研發的一個集中(zhōng)身份認證框架,在RFC1510中(zhōng)定義。随着應用(yòng)系統越來越多(duō),單點登錄成為(wèi)一個剛性需求,Kerberos系統就是支持單點登錄的一套安(ān)全認證架構,目前在WindowsLinuxUNIX系統上都有(yǒu)成熟的實現。


Kerberos的認證框架和流程如下:

 


該框架的主要部件:

1.  Client:準備認證的客戶端;

2.  Authentication Service:認證服務(wù)器;

3.  Ticket Granting Service:票據服務(wù)器,和認證服務(wù)器一起,被稱為(wèi)KDCKey Distribution Center),即密碼分(fēn)發中(zhōng)心;

4.  AD:Active Directory,用(yòng)于存儲用(yòng)戶身份、權限信息;

5.  Server:用(yòng)戶準備登錄的業務(wù)服務(wù)器。


基于該框架進行認證登錄的主要過程如下:

1.  用(yòng)戶客戶端向認證服務(wù)器提出認證申請;

2.  認證服務(wù)器返回票據授權Ticket Granting Ticket (TGT)

3.  用(yòng)戶客戶端再向票據服務(wù)器提交剛才收到的票據授權TGT

4.  票據服務(wù)器返回用(yòng)戶本次訪問需要的票據Ticket

5.  用(yòng)戶客戶端使用(yòng)該票據登錄業務(wù)服務(wù)器;

6.  業務(wù)服務(wù)器驗證該票據,準許登錄或拒絕登錄。


Kerberos框架的核心設計思想是引入了KDCKDC名(míng)為(wèi)密碼分(fēn)發中(zhōng)心,實際并不會把原始密碼分(fēn)發出去,而是使用(yòng)客戶端和服務(wù)端各自的密碼分(fēn)别加密認證信息,生成和分(fēn)發票據,客戶端和服務(wù)器也分(fēn)别使用(yòng)自己的密碼解密拿(ná)到的認證過程中(zhōng)的票據信息,在整個過程中(zhōng),原始密碼不會在網絡中(zhōng)傳輸,避免了密碼傳輸洩密的風險,而且實現了客戶端和服務(wù)器的雙向認證。


認證成功後,後續就不需要每次訪問都再去KDC認證了,票據的生命周期結束後票據将自動消耗。


基于Kerberos的認證方案主要有(yǒu)以下特點:

●  引入KDC,密碼不在網上傳輸,隻傳輸加密後的數據,保證認證過程安(ān)全性,減少密碼洩露的風險;

●  預置客戶端和服務(wù)器的密碼,KDC作(zuò)為(wèi)中(zhōng)間人負責雙方密碼的管理(lǐ)和數據加密,客戶端和服務(wù)端使用(yòng)自己的密碼解密後和對方通信,從而實現雙向認證;

  客戶端認證成功後使用(yòng)票據進行通信,不需要每次通信都進行認證,可(kě)以保證通信性能(néng),減小(xiǎo)認證服務(wù)器的壓力;

●  支持多(duō)客戶端、多(duō)服務(wù)器、多(duō)業務(wù)的集中(zhōng)認證,是單點登錄的一個理(lǐ)想的認證方案。


5.3. LDAP


LDAP,全稱是Lightweight Directory Access Protocol,即輕量級目錄訪問協議,基于X.500标準的輕量級目錄訪問協議。目錄服務(wù)是一種特殊的數據庫系統,專門針對讀取,浏覽和搜索操作(zuò)進行了特定的優化,性能(néng)很(hěn)好。目錄服務(wù)一般不支持通用(yòng)數據庫的大量更新(xīn)操作(zuò)、事務(wù)、回滾等複雜策略。


LDAP目錄服務(wù)是由目錄數據庫和一套訪問協議組成的系統。


LDAP是開放的Internet标準,在業界得到廣泛認可(kě),市場上很(hěn)多(duō)産(chǎn)品都支持LDAP,因此對于這類系統,不需單獨定制,隻需要通過LDAP做簡單的配置就可(kě)以與服務(wù)器做認證交互,大大降低了重複開發和對接的成本。


目前知名(míng)的LDAP廠商(shāng)如下:



LDAP也适合用(yòng)于統一身份認證,用(yòng)戶的所有(yǒu)信息都存儲在AD Server中(zhōng)。終端用(yòng)戶在需要使用(yòng)公(gōng)司内部服務(wù)的時候,都需要通過AD服務(wù)器的認證,認證框架示例圖如下:


基于LDAP的認證方案主要有(yǒu)以下特點:

●  基于查詢做了優化,性能(néng)很(hěn)好,适用(yòng)身份認證的場景;

  采用(yòng)樹狀結構存儲,非常容易實現分(fēn)布式部署,可(kě)以把一棵樹的分(fēn)支單獨部署,易于擴展;

●  基于開放通用(yòng)的協議标準,方案成熟,支持跨平台;

●  支持集中(zhōng)身份管理(lǐ),集中(zhōng)認證。


5.4. Google Authenticator


Google Authenticator本身是一款手機APP軟件,可(kě)以用(yòng)于組成基于動态口令牌的身份認證方案。目前Google的多(duō)種服務(wù)和很(hěn)多(duō)互聯網應用(yòng)都采用(yòng)該方案進行增強身份認證。


Google Authenticator是一款基于TOTP算法(Time-Based One-Time Password,即基于時間的一次性密碼)的兩步驗證軟件令牌,此項服務(wù)所使用(yòng)的算法已列于RFC 6238RFC 4226中(zhōng)。


Google Authenticator會基于密鑰和時間每30秒(miǎo)計算一個HMAC-SHA1hash值,這個hash160bit的,然後将這個hash值随機取連續的4個字節生成32位整數,最後将整數取31位,再取模得到一個的整數——這就是Google Authenticator顯示的數字。

 



在服務(wù)器端驗證的時候,使用(yòng)同樣的算法方法來計算出這個數字,然後比較計算出來的結果和用(yòng)戶輸入的是否一緻。


使用(yòng)Google身份認證服務(wù)前,需要先在手機上下載Google Authenticator,這就是一個客戶端的一次性口令牌軟件,安(ān)裝(zhuāng)後圖标如下:





服務(wù)器端可(kě)以使用(yòng)Google公(gōng)開的Jar包,或者按照公(gōng)開的算法自己寫代碼實現。


這樣,客戶端使用(yòng)用(yòng)戶名(míng)、密碼,配合Google Authenticator的動态口令,形成雙因子認證方案。


基于Google Authenticator的認證方案主要有(yǒu)以下特點:

●  使用(yòng)智能(néng)手機代替口令牌硬件,成本大幅降低;

●  通過算法保證口令一緻性,經過市場驗證,安(ān)全可(kě)靠;

●  已經發布客戶端應用(yòng)和服務(wù)端代碼包,方便應用(yòng)集成;

●  手機客戶端在生成一次性口令時并不需要聯網,純粹依靠智能(néng)手機硬件進行計算,可(kě)以應用(yòng)在沒有(yǒu)手機網絡的場景。