當前位置:
首頁 > 最新 > 走進硬體時代的身份認證(二):賬戶安全需謹慎,動態口令勿泄露

走進硬體時代的身份認證(二):賬戶安全需謹慎,動態口令勿泄露

這是德嘉說第021期文章

編者按:動態口令通常通過一種稱為令牌的專用硬體來生成,即為硬體令牌。令牌的實現方式分為硬體令牌和軟體令牌。目前大部分採用硬體令牌,如中國銀行e-token、網易將軍令、盛大密寶、QQ令牌等。硬體令牌是一種採用內置電源、存儲器、密碼計算晶元和顯示屏的設備,具有使用便利、安全性高等特點。本文節選汪德嘉博士《身份危機》中硬體時代的硬體令牌章節,將為大家解析硬體令牌的安全性、發展現狀及相關技術原理。

常用的口令認證機制大都是基於靜態口令的,系統根據用戶輸入的口令和自己維護的口令表進行匹配來判斷用戶身份的合法性。靜態口令認證機制是最簡單的一種口令認證方法,但容易受到重放、網路竊聽以及猜測攻擊。針對靜態口令認證機制在安全方面的脆弱性,研究口令認證的學者提出了動態口令認證技術以保護重要的網路系統資源。一次性動態口令認證機制是產生驗證信息的時候中加入不定因素,使每次登錄過程中網路傳送的數據包都不同,以此來提高登錄的安全性。不定因子可以是用戶登錄的時間或者用戶登錄的次數等。

硬體令牌發展現狀

80年代初,貝爾實驗室的Lamport博士提出了一種生成動態口令的方法。90年代初貝爾實驗室開發出了較為成熟的動態口令系統S/KEY口令的生成主要是依靠一個口令生成器即令牌,令牌通常是獨立於終端的、授權用戶可隨身攜帶的、信用片或鑰匙鏈大小的器件,並且令牌本身可使用PIN來保護。動態口令認證系統通過使用令牌產生的無法猜測和複製的動態口令接入系統,保證了接入遠程系統的終端用戶確實為授權實體,有效地保護了信息系統的安全性,大大降低了非法訪問的風險。

當前最主流的是基於時間同步的硬體令牌,它30至60秒變換一次動態口令,動態口令一次有效,它產生6位/8位動態數字。硬體令牌內置電源、密碼生成晶元和顯示屏。密碼生成晶元運行專門的密碼演算法,根據當前時間或使用次數生成當前口令並顯示在顯示屏上。遠程系統採用相同的演算法計算當前的有效口令。用戶使用時只需要將動態令牌上顯示的當前口令輸入客戶端計算機,即可實現身份認證。由於每次使用的口令必須由令牌動態產生,而且只有合法用戶才持有該硬體,所以只要通過口令驗證就可以認為該用戶的身份是可靠的。由於用戶每次使用的口令都不相同,即使黑客截獲了某一次登錄時使用的口令,也無法利用這個口令來仿冒合法用戶的身份。動態口令技術採用一次一密的方法,有效保證了用戶身份的安全性。

硬體令牌優點

(1)動態性:令牌每次產生的口令都是不同的,不同時刻使用不同口令登錄,而且每個口令都只在其產生的時間範圍內有效。

(2)隨機性:驗證口令每次都是隨機產生的,不可預測。

(3)一次性:每個驗證口令使用過一次後就失效,不能重複使用。

(4)抗偷看竊聽性:由於動態性和一次性的特點,即使某一個驗證口令被人偷看或竊聽了,也無法被再次使用。

(5)不可複製性:動態產生的驗證口令與令牌是緊密相關的,不同的令牌產生不同的動態口令。令牌是密封的,而且卡內種子密鑰數據一旦斷電就會丟失。因此也就保證只有擁有令牌的用戶才能使用,其他用戶無法獲得。

(6)方便性:令牌隨身攜帶,驗證口令顯示在卡上,無需再為記憶負責的口令而煩惱。

(7)危險及時發現性:令牌隨身攜帶,一旦遺失或失竊,就會及時發現、及時掛失,把損失降到最小。

(8)抗窮舉攻擊性:由於動態性的特點,如果一分鐘內窮舉不到,那麼下一分鐘就需要重新窮舉,因此新的動態口令可能就在已經窮舉過的口令中。另外還可以通過系統設置,限制一個時間段內用戶嘗試登錄的次數,從而進一步降低窮舉攻擊的風險。

硬體令牌缺點

一次性口令儘管具有上述眾多優點,但是如果用戶終端與遠程系統的時間或登錄次數不能保持良好的同步,就可能發生授權用戶無法登錄的問題,並且終端用戶每次登錄時都需要輸入一長串無規律的密碼,使用起來非常不方便。

硬體令牌「認牌不認人」,雖然攜帶方便,但也容易丟失;缺少通信模塊,認證伺服器無法對其管理和更新數據。一旦失去同步,將無法使用;實施成本較高,這對於預算有限的中小企業來說,顯然是不現實的。

硬體令牌安全性分析

當硬體令牌面對安全性攻擊時,硬體令牌是通過何種技術抵擋攻擊手段,從而保證身份認證安全,以下將詳細介紹:

1、一次性口令生成演算法破解攻擊:

(1)從硬體中得到令牌密鑰:由於令牌密鑰固化在晶元中,如要讀取其中的密鑰,前提條件是已經獲得令牌。如果令牌被非法用戶所得,則合法用戶應該已經註銷了該令牌。因此,解密得到的是失效的令牌密鑰。為此,需要為用戶提供令牌註銷服務。如果用戶丟失了令牌,可使用令牌掛失服務,讓系統停用該令牌。需要輸入用戶的用戶名和其它一些該用戶在註冊時保留的個人信息;

(2)演算法分析:生成動態口令的加密演算法是RC5演算法,因此對演算法攻擊的可能性取決於RC5演算法的抗攻擊強度。系統採用的加密密鑰為16位元組,目前的窮舉密鑰方法還不能進行有效的攻擊,加密輪數為16輪(RSA對分組為64比特時推薦的加密輪數為12輪),經過測試得到加密時間約為幾百毫秒,速度能夠滿足需求。對抗差分分析或線性分析也有足夠的強度。

2、竊聽攻擊:因為網路上傳輸的是加密過並且經過轉換的數字,所以在網路上竊聽到這樣的數字沒有任何意義。

3、重放攻擊:這是時間同步一次性口令系統的缺點。而事件同步一次性口令認證系統,每認證成功一次。要更新伺服器端的計數器值。因此重發攻擊對本系統是無效的。

4、攻擊:因為挑戰值是由在硬體令牌內部產生的,而不是由伺服器產生的,所以不存在小數攻擊的威脅。

5、假冒伺服器攻擊:即在用戶認證數據包還未到達認證伺服器之前,修改用戶的認證數據包,使數據包的IP地址指向攻擊者所在的地址。所有的一次性口令系統都存在這樣的威脅,必須結合其它的方式來防止或告警。如利用SSL對傳輸過程進行加密。

6、口令猜測攻擊:為了防止口令猜測攻擊,用戶認證出錯超過3次,則停用該帳戶,並通知用戶。

動態口令技術原理

動態(一次)口令認證機制的主要原理是:在登錄過程中加入不確定因素。使每次登錄過程中摘錄所得到的密碼都不相同,以提高登錄過程的安全性。每次的口令是3個因子按一定演算法計算得到的結果,這3個因子分別是種子(seed)、迭代值(iteration)和秘密通行短語。它們之間應具備一種相同的「認證器件」,該認證器件實際上是某種演算法的硬體或軟體實現,它的作用是生成一次性口令。

一次性口令認證模式根據不確定因素的不同,分為以下幾種模式:挑戰應答模式、時間同步認證模式和事件同步認證模式,第一種使用的方法一般是通過客戶輸入的挑戰碼,令牌在內置晶元上會自動用演算法生產一個隨機數字串,有效期為一次性。第二種是與系統伺服器時間掛鉤的,通常是60秒生成一個口令,但其固有窗口與交易的過程無關,所以在實際應用上會與預想有一定的差距。第三種事物型令牌,工作機制是事務地順序與統一鑰匙解鎖,由HASH函數來運行出一樣的密鑰。

動態口令認證模式

動態口令身份認證系統,是由客戶端設備和認證系統同時擁有一個對稱密鑰演算法,並且同時擁有對稱密鑰(客戶端設備上的個人密鑰是由認證系統發放的)。動態口令的變化,則是由於演算法中變數的不同而不同。根據變數的不同,動態口令身份認證目前有基於時間同步方式的、基於事件同步方式的和基於挑戰/應答(非同步)方式三種技術模式。

(1)時間同步方式(TimeSynchronization)

所謂時間同步機制,就是以時間作為變數。每個用戶都持有相應的時間同步令牌(Token),令牌內置時鐘、種子密鑰和加密演算法。時間同步令牌根據當前時間和種子密鑰每分鐘動態生成一個一次性口令。用戶需要訪問系統時,將令牌生成的動態口令傳送到認證伺服器。伺服器通過其種子密鑰副本和當前時間計算出所期望的輸出值,對用戶進行驗證。如果相匹配,則登錄通過。時間同步方式的關鍵在於認證伺服器和令牌的時鐘要保持同步,這樣在同一時鐘內兩者才能計算出相同的動態口令。該方式的實現還需要有時間同步令牌這類特殊硬體的支持。

(2)事件同步方式

又稱為Lamport方式或哈希鏈(Hashchains)方式。事件同步機制是以事件(次數/序列數)作為變數。在初始化階段選取一個口令PW和一個迭代數N,及一個單向散列函數F,計算Y=Fn(PW)(Fn()表示進行n次散列運算),並把Y和N的值存到伺服器上。用戶端計算Y"=Fn-1(PW)的值,再提交給伺服器。伺服器則計算Z=F(Y"),最後伺服器將Z值同伺服器上保存的Y進行比較。如果Z=Y,則驗證成功,然後用Y"的值取代伺服器上Y的值,同時N的值遞減1。通過事件同步方式,用戶每次登錄到伺服器端的口令都不相同。這種方案易於實現,且無須特殊硬體的支持。例如S/KEY口令序列認證方案就是一種基於事件同步方式的認證方案。

口令為一個單向的前後相關的序列,系統只用記錄第N個口令。用戶用第N-1個口令登錄時,系統用單向演算法算出第N個,令與自己保存的第N個口令匹配,以判斷用戶的合法性。由於N是有限的,用戶登錄N次後必須重新初始化口令序列。

(3)挑戰/應答(非同步)認證方式(Challenge/Response)

挑戰/應答機制就是以挑戰數作為變數。每個用戶同樣需要持有相應的挑戰/應答令牌。令牌內置種子密鑰和加密演算法。用戶在訪問系統時,伺服器隨機生成一個挑戰(Challenge)數據,並將挑戰數據發送給用戶,用戶將收到的挑戰數據手工輸入到挑戰/應答令牌中,挑戰/應答令牌利用內置的種子密鑰和加密演算法計算出相應的應答(Response)數據。用戶再將應答數據上傳給伺服器。伺服器根據該用戶存儲的種子密鑰和加密演算法計算出相應的應答數據,再和用戶上傳的應答數進行比較來實施認證。該方式可以保證很高的安全性,是目前最可靠有效的認證方式。

動態口令身份認證模式比較

三種技術模式的認證系統端(即後台中心系統)結構非常類似,功能也基本相同,提供著同一級別的安全認證管理。但三種技術模式的客戶端則有著較大的不同:

(1)時間同步機制:時間同步方式的難點也在時間同步上,由於以時間做變數,因此客戶端設備必須具有時鐘,從而對設備精度要求高,成本高,並且從技術上很難保證用戶的時間令牌在時間上和認證伺服器嚴格同步;同步機制複雜,降低認證效率,數據在網路上傳輸和處理存在一定的延遲,當時間誤差超過允許值時,對正常用戶的登錄往往造成身份認證失敗;耗電量大,使用壽命短;應用模式單一,很難支持雙向認證及「數字簽名」等應用需求。一般用於軟體令牌。

(2)挑戰/應答機制:由於挑戰數是由認證系統提出,客戶端設備將挑戰數輸入後產生應答數,因此應用模式可設計的較豐富,支持不同的應用需求,如:雙向認證、數字簽名等;但由於需要運算,因此客戶端需要特殊硬體(挑戰/應答令牌)的支持,設備必須具備運算功能,增加了該方式的實現成本;同時,用戶需多次手工輸入數據,易造成較多的輸入失誤;認證步驟複雜,對應用系統的改造工作量大;用戶的身份ID直接在網路上明文傳輸,攻擊者可很容易地截獲它,留下了安全隱患;沒有實現用戶和伺服器間的相互認證,不能抵抗來自伺服器端的假冒攻擊;挑戰數據每次都由伺服器隨機生成,造成了伺服器開銷過大。

(3)事件同步機制,由於這一機制與應用邏輯相吻合(都是以次數為計算單位),因此客戶端設備設計要求簡單,甚至可不使用運算設備。但其安全性依賴於單向散列函數F,不宜在分散式的網路環境下使用。此外,使用事件同步方式進行身份認證用戶,需要進行多次散列運算。而且由於迭代數是有限的,每隔一段時間還需要重新初始化系統,伺服器的額外開銷比較大。現在設計可為客戶印製動態口令表,預先完成散列運算,降低成本;還可結合客戶端設備的設計特點,可支持豐富的應用需求。

硬體令牌技術設計

1、演算法描述

動態口令生成演算法[1]借鑒了對稱密碼加密的方式。將令牌的序列號經系統密鑰加密後寫入用戶令牌中,通過對計數器值的加密得到二進位一次性口令.再將其轉化為十進位一次性口令OTP。計數器值c隨機生成,為4個位元組。令牌密鑰可用固定的系統密鑰對令牌序列號用AES加密後得到。系統密鑰和令牌序列號均為16位元組的字元串。令牌密鑰生成後是固定的。每個令牌密鑰uk既是隨機數,在整個系統中又是唯一的,這樣確保非法用戶難以獲得用戶的uk。即使獲得某個或少數令牌的密鑰,對獲得系統中其它用戶的密鑰毫無幫助。

圖7-2 一次性口令生成演算法示意圖

一次性口令演算法示意圖(見圖7-2),該演算法有兩個基本功能模塊:(1)利用RC5演算法,對計數器值用令牌密鑰加密,輸出為4位元組的二進位串。RC5演算法非常適合於硬體實現,加密速度非常快,實時性好,且對不同字長的處理器具有較好的適應性;(2)OTP_Conv()函數的作用時將二進位串轉換為十進位串。

2、硬體令牌實現

圖7-3 硬體令牌實現邏輯

硬體令牌的邏輯結構(見圖7-3),晶元經過驅動介面與液晶屏、鍵盤、外部存儲電路以及外接電源相連。基本工作過程簡單描述如下:(1)按下電源開關按鍵,電源燈亮,硬體令牌開始工作;(2)按下口令生成按鈕,在液晶屏上顯示出一次性口令;(3)用戶用這個一次性口令來登錄;(4)按下電源開關按鍵,電源燈滅。硬體令牌結束工作。主函數程序首先調用sys_init()函數,用來初始化晶元的中斷、埠、UART口和串列匯流排。接著在一個循環中,等待口令生成按鈕被按下,如按鍵,調用OTP_result()函數,它完成主要的業務功能,得到一次性口令並顯示在液晶屏上。

硬體協議設計

圖7-4 硬體令牌認證協議描述

認證協議具體包括3個階段:初始化階段、口令生成階段和認證階段。硬體令牌認證協議描述(見圖7-4),uk為令牌密鑰,k為系統密鑰,seq為令牌序列號。c為計數器值。

(1)認證伺服器和令牌的初始化。認證伺服器的初始化:計數器值和令牌序列號存入資料庫。認證伺服器在初始化的時候。生成一個伺服器的主密鑰,主密鑰保存在智能卡中,由系統管理員使用。每次在啟動認證伺服器的時候,從智能卡中讀入該主密鑰,確保主密鑰的安全。令牌的初始化:計數器值、令牌密鑰及一次性口令生成及轉換演算法寫入令牌中。

(2)令牌中一次性口令的生成。生成一次性口令:利用RC5演算法對4位元組計數器值c用令牌密鑰uk進行加密,加密出的結果仍為4位元組的二進位串。一次性口令的轉換:將4位元組的二進位串轉換為用戶可以接受長度的十進位數,作為一次性口令OTP。

(3)認證過程的實現。識別令牌所有者:用戶提交用戶名、PIN碼和一次性口令,傳輸到認證伺服器以後,認證伺服器根據用戶名從資料庫中查到PIN碼,與接收到的數據進行對比。如果一致,則證明令牌所有者是本人。如果不一致,則拒絕登錄。0TP的比較:認證伺服器首先將接收到的一次性口令進行轉換,然後用AES演算法對系統密鑰和令牌序列號進行運算得到令牌密鑰。再用令牌密鑰對一次性口令進行解密。將解密得到的結果c1和認證伺服器中的計數器值c進行比較。此時考慮以下3種情況:

(1)如果用戶發送的計數器值大於認證伺服器中的計數器值且小於一個偏移量,即c

(2)如果計數器值在硬體令牌中已經循環過一次,即c1

(3)如果用戶觸發事件的次數大於偏移量。即c1>c+offset,則系統記錄當前的c1值,提示客戶再次輸入口令,對第二次提交的一次性口令按同樣的方式進行解密後得到結果c2,將c2與c1進行比較,此時如果(c2=c1+1)或者c2=0同時c1=232-1,則二次認證通過,否則認證不通過。認證通過後,將c的值用c1更新;如果是二次認證通過,則將c的值用c2更新。以上3個條件都不符合的話,認證不通過。

結束:隨著互聯網的發展,賬號密碼體系的身份認證逐漸走進人們的生活,人們開始習慣於,每使用一個平台即需要註冊一套賬號密碼,賬號密碼體系為身份認證體系中最簡單便捷的一種身份認證方式,為了增強互聯網身份認證的安全性,基於PKI體系以硬體/軟體為載體的身份認證方式逐漸被人們所熟知,如:智能卡、硬體令牌、身份認證SDK/APP等。除了這裡提到的這些身份認證方式外,U盾也是基於PKI體系以硬體為載體的身份認證方式,U盾是用於網上銀行電子簽名和數字認證的工具,它內置微型智能卡處理器,採用1024位非對稱密鑰演算法對網上數據進行加密、解密和數字簽名,確保網上交易的保密性、真實性、完整性和不可否認性。在下篇文章中將帶大家了解U盾的發展歷史及相關技術原理,敬請期待!

the end

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 德嘉說 的精彩文章:

CA證書何以成為網路世界中的「身份證」?
賬密設置需謹慎!弱口令揭示人們在賬號密碼方面的使用困境

TAG:德嘉說 |