走進硬件時代的身份認證(二):賬戶安全需謹慎,動態口令勿泄露
動態口令通常通過一種稱為令牌的專用硬件來生成,即為硬件令牌。令牌的實現方式分為硬件令牌和軟件令牌。目前大部分采用硬件令牌,如中國銀行e-token、網易將軍令、盛大密寶、QQ令牌等。本文節選汪德嘉博士《身份危機》中硬件時代的硬件令牌章節,將為大家解析硬件令牌的安全性、發展現狀及相關技術原理。
編者按:動態口令通常通過一種稱為令牌的專用硬件來生成,即為硬件令牌。令牌的實現方式分為硬件令牌和軟件令牌。目前大部分采用硬件令牌,如中國銀行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、算法描述
動態口令生成算法借鑒了對稱密碼加密的方式。將令牌的序列號經系統密鑰加密后寫入用戶令牌中,通過對計數器值的加密得到二進制一次性口令.再將其轉化為十進制一次性口令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()函數,它完成主要的業務功能,得到一次性口令并顯示在液晶屏上。
l 硬件協議設計
圖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
結束:隨著互聯網的發展,賬號密碼體系的身份認證逐漸走進人們的生活,人們開始習慣于,每使用一個平臺即需要注冊一套賬號密碼,賬號密碼體系為身份認證體系中最簡單便捷的一種身份認證方式,為了增強互聯網身份認證的安全性,基于PKI體系以硬件/軟件為載體的身份認證方式逐漸被人們所熟知,如:智能卡、硬件令牌、身份認證SDK/APP等。除了這里提到的這些身份認證方式外,U盾也是基于PKI體系以硬件為載體的身份認證方式,U盾是用于網上銀行電子簽名和數字認證的工具,它內置微型智能卡處理器,采用1024位非對稱密鑰算法對網上數據進行加密、解密和數字簽名,確保網上交易的保密性、真實性、完整性和不可否認性。在下篇文章中將帶大家了解U盾的發展歷史及相關技術原理,敬請期待!
風險提示:
本網站內用戶發表的所有信息(包括但不限于文字、視頻、音頻、數據及圖表)僅代表個人觀點,僅供參考,與本網站立場無關,不構成任何投資建議,市場有風險,選擇需謹慎,據此操作風險自擔。
版權聲明:
此文為原作者或媒體授權發表于野馬財經網,且已標注作者及來源。如需轉載,請聯系原作者或媒體獲取授權。
本網站轉載的屬于第三方的信息,并不代表本網站觀點及對其真實性負責。如其他媒體、網站或個人擅自轉載使用,請自負相關法律責任。如對本文內容有異議,請聯系:contact@yemamedia.com