第一篇:基于USB_Key的PKI身份認證技術(shù)的分析與改進
基于USB Key的PKI身份認證技術(shù)的分析與改進
摘要:在當今數(shù)字世界中,身份認證技術(shù)是各種安全技術(shù)的基礎(chǔ)。USB Key技術(shù)是現(xiàn)在比較流行的基于PKI的強身份認證技術(shù),特別是在網(wǎng)上銀行等金融領(lǐng)域。研究了USB Key的典型使用流程,分析了這些流程中的安全威脅,最后著重提出了針對這些風險的安全解決方案,這些方案都是在具體項目得以實施應用,對目前的USB Key使用和開發(fā)具有很好的實用和借鑒意義。
關(guān)鍵詞:USB智能密碼鑰匙;公鑰密碼基礎(chǔ)設施;身份認證;數(shù)字簽名;網(wǎng)上銀行
中圖分類號:TP393.08 文獻標識碼:A
Analysis and improvement of PKI identity authentication technology based on USB Key Abstract: Now in digital world, all of security technologies are based on digital identity authentication technology.And the USB Key technology is one of the most popular technologies, which is a strong authentication technology and based on PKI, especially in Internet banking filed.The typical usage flows are researched, the security threats are analyzed.At the last, the solutions are proposed corresponding to these threats, which is applied in practical projects and have great practical and economic value.Key words: USB Key;PKI;Identity authentication;Digital signature;Internet banking 1引言
隨著互聯(lián)網(wǎng)和電子商務的發(fā)展,USB Key作為網(wǎng)絡用戶身份識別和數(shù)據(jù)保護的“電子鑰匙”,正在被越來越多的用戶所認識和使用。
USB Key[1,2,3]這個概念最早是由加密鎖廠家提出來的,加密鎖是用來防止軟件盜版的硬件產(chǎn)品,用于識別用戶身份。與此同時,隨著PKI[45,6]應用的興起,數(shù)字證書[45,6]作為確認用戶身份和保護用戶數(shù)據(jù)有效手段越來越被人們所接受。然而數(shù)字證書實質(zhì)上表現(xiàn)為帶有用戶信息和密鑰的一個數(shù)據(jù)文件,如何保護數(shù)字證書本身又成為PKI體系中最薄弱的環(huán)節(jié),專門用于存儲秘密信息的USB Key就很自然的成為數(shù)字證書的最佳載體。利用USB Key來保存數(shù)字證書和用戶私鑰。
每一個USB Key都帶有PIN碼保護,這樣USB Key的硬件和PIN碼構(gòu)成了可以使用證書的兩個必要因子,也就是所謂的雙因素認證[7]。
隨著智能卡[8]技術(shù)的發(fā)展,智能卡運算能力不斷提高,帶有智能卡芯片的USB Key可以通過內(nèi)置的智能卡芯片在Key內(nèi)部硬件實現(xiàn)DES/3DES、RSA加解密運算,并支持Key內(nèi)生成RSA密鑰對,杜絕了密鑰在客戶端內(nèi)存中出現(xiàn)的可能性,大大提高了安全性。
這樣,基于智能卡技術(shù)和PKI技術(shù)的發(fā)展形成了目前廣泛使用的USB Key身份認證產(chǎn)品。USB Key 基本功能包括:高質(zhì)量隨機數(shù)生成,公/私密鑰對產(chǎn)生,數(shù)字證書下載存儲,哈希運算,數(shù)字簽名/驗證,對稱加/解密,非對稱加/解密等功能。
USB Key是目前所有身份認證技術(shù)中認證強度最高的技術(shù),但是使用過程中的漏洞會大大削弱這種優(yōu)勢,其安全形勢也不用樂觀。USB Key的使用流程
網(wǎng)銀[9](Internet Banking,網(wǎng)上銀行)等金融領(lǐng)域是目前USB Key應用最廣泛最成熟的領(lǐng)域,下面主要以網(wǎng)銀案例來介紹USB Key的使用流程,以時序圖形式說明。2.1 首次登錄流程
用戶1.0 插入USB KeyUSB Key客戶端網(wǎng)銀服務器1.1 虛擬光盤自動運行1.2 客戶端啟動并進入登錄界面1.3 與服務器建立單向SSL安全通道1.4 與客戶端建立單向SSL安全通道1.5 提示用戶輸入相關(guān)信息進行用戶綁定1.6 用戶輸入身份證號和授權(quán)碼1.7 提取相關(guān)序號1.8 設備序號和數(shù)字證書序號1.9 發(fā)送用戶信息到服務器1.10 驗證用戶信息如果成功,則綁定用戶身份證號、USB Key序號及數(shù)字證書序號1.11 返回綁定結(jié)果1.12 提示用戶登錄成功或失敗
圖1 首次登錄流程圖
2.2 普通登錄流程
用戶2.0 插入USB KeyUSB Key客戶端網(wǎng)銀服務器2.1 虛擬光盤自動運行2.2 客戶端啟動并進入登錄界面2.3 與服務器建立單向SSL安全通道2.4 與客戶端建立單向SSL安全通道2.5 提示用戶輸入口令2.6 用戶輸入口令2.7 驗證用戶口令指令2.8 返回驗證結(jié)果2.10 提取相關(guān)序號2.11 設備序號和數(shù)字證書序號2.9 驗證失敗則提示用戶,否則繼續(xù)2.12 發(fā)送用戶信息到服務器2.13 驗證用戶信息2.14 返回驗證結(jié)果2.15 提示用戶登錄成功或失敗
圖2 普通登錄流程圖 2.3 客戶端認證和轉(zhuǎn)賬流程
用戶USB Key3.0 用戶登錄成功后,轉(zhuǎn)賬客戶端網(wǎng)銀服務器3.1 與服務器建立雙向SSL安全通道3.2 SSL簽名請求3.3 SSL簽名3.4 與客戶端建立雙向SSL安全通道3.5 建立失敗則提示用戶,否則繼續(xù)3.6 提示用戶輸入轉(zhuǎn)賬信息3.7 輸入轉(zhuǎn)入賬號和金額3.8 提交轉(zhuǎn)賬請求3.10 返回請求結(jié)果3.11 提示用戶輸入USB Key口令3.12 輸入用戶口令3.13 簽名請求3.14 簽名值3.15 提交交易簽名3.9 驗證表單3.16 驗證簽名3.17 返回驗證結(jié)果3.18 返回交易結(jié)果
圖3 客戶端認證和轉(zhuǎn)賬流程圖 USB Key安全性分析及改進方案
3.1 安全風險[10][11]
目前USB Key安全風險有:
USB Key 口令(密碼)明文傳輸,可能被USB監(jiān)聽工具截獲;
有的網(wǎng)銀系統(tǒng)USB Key只做身份認證,不進行交易簽名;或者USB Key簽名請求沒有校驗和客戶確認機制,客戶在使用網(wǎng)銀進行資金操作時,其用戶私鑰存在被他人遠程非法調(diào)用并進行交易的可能;
USB Key主控密鑰管理不善,存在泄露風險,不法分子可遠程調(diào)用USB Key進行非法交易簽名,進而盜取用戶資金。3.2 安全需求:
加強用戶交易授權(quán)認證。在使用USB Key進行交易授權(quán)認證時,應增加客戶交易確認手段,如增加向客戶發(fā)送含有待確認交易信息的短信等第二渠道認證方式,或使用帶有確認按鍵或顯示屏的USB Key。
嚴格USB Key密鑰安全管理。要采用加密手段保存和傳輸USB Key的口令(密碼),嚴格USB Key主控密鑰、傳輸密鑰等安全管理,防止不法分子獲取USB Key訪問控制權(quán),非法調(diào)用或修改用戶私鑰。
加強網(wǎng)上銀行客戶端的安全保護。在保護鍵盤輸入、防通信明文竊取、防黑客程序跟蹤、防內(nèi)存數(shù)據(jù)截獲、防截取屏幕信息、防“釣魚”欺騙、防交易數(shù)據(jù)篡改等多方面對網(wǎng)上銀行系統(tǒng)及客戶端采取技術(shù)加固措施。
3.3 安全改進措施 3.3.1 用戶口令安全
用戶口令的輸入主要有兩種:PC端輸入和USB Key端輸入。
PC端輸入包括使用PC鍵盤和虛擬軟鍵盤,PC鍵盤輸入相對比較容易攔截監(jiān)聽到,而軟鍵盤布局隨機排列且不易被攔截到。PC端輸入方式口令驗證過程的安全性主要靠動態(tài)密鑰加密用戶口令數(shù)據(jù)。
另外,USB Key配備數(shù)字全鍵盤或可以輸入數(shù)字的按鍵,用戶口令(包括修改)的輸入全部在設備上完成,用戶口令不會出現(xiàn)在USB通信中,所以從根本上防止口令被攔截或破解。同時,由于用戶口令在設備上輸入,外界無法直接向設備發(fā)送校驗口令指令,有效防止通過遠程惡意發(fā)送校驗口令指令導致設備鎖死。
3.3.2 密鑰對安全
用戶密鑰對是在申請證書時在設備內(nèi)部隨機產(chǎn)生的,而不是事先存在或?qū)氲摹?/p>
用戶私鑰存放于芯片特殊保護區(qū)域,外面無法對其直接操作,并且通過各種手段都無法讀出或替換,防止用戶私鑰被導出、讀出或替換,保證用戶私鑰數(shù)據(jù)的安全。
所有用戶私鑰的操作都由用戶口令來控制,需用戶口令驗證通過后才能進行數(shù)字簽名操作,在操作完成后重置驗證口令標志,防止私鑰操作被遠程劫持。同時,加密私鑰操作指令的會話密鑰都是一次一密,有效防止簽名指令重發(fā)攻擊。3.3.3 數(shù)據(jù)通信安全
設備和主機的通信數(shù)據(jù)很容易被USB監(jiān)控軟件(如:Bushound)獲取,保護通信數(shù)據(jù)的安全,防止敏感信息泄露就顯得至關(guān)重要。
基本思路:數(shù)據(jù)通信安全就是要保護主機和設備通信數(shù)據(jù),防止數(shù)據(jù)被截取或篡改。保護通信數(shù)據(jù)的密鑰是動態(tài)會話密鑰,而不是單純的靜態(tài)密鑰,這樣即使某一段數(shù)據(jù)被攔截并破解,只要及時協(xié)商一個新的會話密鑰,即可防止后面的通信被破解。并且,比如簽名等比較敏感的指令數(shù)據(jù)的會話密鑰都會用一次協(xié)商一次(一次一密)。協(xié)商基本流程,如圖4所示。
主機設備
1、在設備初始化/格式化時隨機產(chǎn)生一個專門用于協(xié)商會話密鑰RSA密鑰對(K)2.“發(fā)起協(xié)商”會話密鑰,并攜帶主機產(chǎn)生的8字節(jié)隨機數(shù)(Rh)3.返回設備隨機數(shù)(Rd)和RSA密鑰對公鑰(Kpub)4.組裝會話密鑰,并用公鑰(Kpub)加密會話密鑰5.“協(xié)商”會話密鑰指令,攜帶加密的會話密鑰6.用私鑰(Kpri)解密出會話密鑰7.返回協(xié)商結(jié)果8.加密通信數(shù)據(jù)
圖 4 安全通信的基本流程
1、會話密鑰對生成。專門用于協(xié)商會話密鑰的RSA密鑰對(以下簡稱會話密鑰對)在設備初始化/格式化時生成,這個密鑰對與用戶的密鑰對毫無關(guān)系,僅用于會話密鑰的協(xié)商,即使這個密鑰對被破解也不會影響到用戶的密鑰對。會話密鑰對隨機產(chǎn)生,每個設備都不相同,并且同一個設備每一次格式化的密鑰對也不相同。這些措施的目的就是要保障即使一個設備通信被破解也不會影響到別的設備,并且可以防止通信重放攻擊。
2、發(fā)起協(xié)商。協(xié)商會話密鑰的過程由主機(應用)發(fā)起。主機發(fā)送“發(fā)起協(xié)商” 指令,該指令同時攜帶主機隨機產(chǎn)生的8字節(jié)隨機數(shù)(Rh).指令形式如:發(fā)起協(xié)商指令頭+主機產(chǎn)生的8字節(jié)隨機數(shù)(Rh)。
3、返回設備隨機數(shù)和會話密鑰對公鑰。當設備收到發(fā)起協(xié)商指令后,設備首先保存主機產(chǎn)生的8字節(jié)隨機數(shù)(Rh),同時設備也產(chǎn)生8字節(jié)的隨機數(shù)(Rd)。最后設備返回隨機數(shù)(Rd)和會話密鑰對公鑰。指令響應形式:設備產(chǎn)生的8字節(jié)隨機數(shù)(Rd)+會話密鑰對公鑰(Kpub)。
4、組裝會話密鑰。當主機收到發(fā)起協(xié)商指令返回后,主機保存設備產(chǎn)生的8字節(jié)隨機數(shù)(Rd)和會話密鑰公鑰(Kpub)。接著,主機開始組裝會話密鑰,組裝完成后用會話密鑰公鑰(Kpub)加密會話密鑰。組裝過程,如圖 5 所示:
設備 8字節(jié)隨機數(shù)(Rd)主機 8 字節(jié)隨機數(shù)(Rh)設備右半 4 字節(jié)隨機數(shù)主機左半 4 字節(jié)隨機數(shù)設備左半4字節(jié)隨機數(shù)主機右半4字節(jié)隨機數(shù)RSA 公鑰加密會話密鑰公鑰(Kpub)會話密鑰密文
圖 5 組裝會話密鑰
5、協(xié)商。主機組裝完會話密鑰并加密后,通過“協(xié)商”指令發(fā)送到設備,指令形式如:協(xié)商指令頭+會話密鑰密文。
6、設備解密會話密鑰。當設備收到“協(xié)商指令” 發(fā)送過來的會話密鑰密文后,設備使用會話密鑰對的私鑰(Kpri)解密出會話密鑰(SK)。由于在“發(fā)起協(xié)商” 指令中設備已經(jīng)獲得了主機產(chǎn)生的隨機數(shù),所以設備也會自己組裝會話密鑰(SK’),然后設備比較(SK)和(SK’)是否一致。最后返回協(xié)商結(jié)果給主機,如圖6所示。會話密鑰密文8字節(jié)設備隨機數(shù)(Rd)8字節(jié)主機隨機數(shù)(Rh)會話密鑰對私鑰(Kpri)RSA私鑰解密會話密鑰(SK)設備右半4字節(jié)隨機數(shù)主機左半4字節(jié)隨機數(shù)設備左半4字節(jié)隨機數(shù)(Rd)主機右半4字節(jié)隨機數(shù)(Rd)比較返回失敗相同?更新當前會話密鑰返回成功圖 6 解密會話密鑰
7、返回協(xié)商結(jié)果,返回協(xié)商結(jié)果成功或失敗。
8、加密通信。會話密鑰協(xié)商成功后,主機和設備就可以使用剛剛協(xié)商的會話密鑰來加密通信。一些敏感指令(比如:簽名,驗證用戶口令)需要會話密鑰動態(tài)變化,一次一密。3.3.4 交易簽名安全
交易簽名是對敏感交易數(shù)據(jù)進行簽名。在簽名運算之前,交易數(shù)據(jù)(TLV格式)先送到USB Key設備上顯示,用戶確認后在設備內(nèi)部進行簽名,防止非法程序?qū)λ灁?shù)據(jù)進行篡改。同時,由于內(nèi)部數(shù)據(jù)簽名之前進行數(shù)據(jù)填充,有效防止利用非交易簽名來偽造交易簽名。
簽名數(shù)據(jù)數(shù)據(jù)檢查USB Key內(nèi)部符合交易數(shù)據(jù)格式(預定義TLV格式)是交易數(shù)據(jù)確認(設備LCD顯示)數(shù)據(jù)填充否對填充后數(shù)據(jù)做哈希運算從設備上驗證用戶口令對數(shù)據(jù)哈希值做簽名運算簽名值
圖 7 數(shù)據(jù)簽名流程
從圖 7 可以看到,明文數(shù)據(jù)進入設備后,設備首先檢查數(shù)據(jù)是否是預定義格式的簽名數(shù)據(jù),如果不是的話,將不在設備上顯示,驗證用戶口令后直接簽名,返回簽名值;如果符合交易數(shù)據(jù)格式化的話,首先在設備上顯示交易內(nèi)容,待用戶確認后,對交易數(shù)據(jù)進行特別的內(nèi)部填充,接著對填充后的數(shù)據(jù)進行哈希運算獲取哈希值,待在設備上驗證用戶口令后,對數(shù)據(jù)進行簽名并返回簽名值。整個流程數(shù)據(jù)從進入設備到簽名,從未出過設備。
由于交易簽名數(shù)據(jù)會在設備內(nèi)部填充,而非交易簽名數(shù)據(jù)(比如:SSL安全通道簽名)不會被填充,外界也無法模擬這個填充過程,所以利用非交易簽名來偽造交易簽名就無法實現(xiàn)。
同時可以發(fā)現(xiàn),圖中的除了數(shù)據(jù)填充外,其他過程都是標準處理流程,所以下面主要介紹一下數(shù)據(jù)填充。
數(shù)據(jù)填充的目的是防止交易簽名的偽造,交易數(shù)據(jù)的填充過程,在設備外面無法完成,因為填充的數(shù)據(jù)是保密的。數(shù)據(jù)的填充方式如:填充值+交易簽名數(shù)據(jù)。
填充的關(guān)鍵是填充的數(shù)據(jù)值。填充數(shù)據(jù)是在設備初始化/格式化時寫入設備的,根據(jù)設備序號來派生的,因而每個設備的填充值都不一樣;并且派生密鑰存在控制卡中,由銀行管理員來設置別人無法獲取,因而無法得到填充值。
填充值寫入設備安全機制,如圖8所示:
簽名填充值寫入及授權(quán)使用<
圖 8 填充值寫入設備機制
填充值是在設備格式化時寫入的,此時設備和控制卡之間經(jīng)過雙向認證(遵循 GP 2.1.1 SCP01規(guī)范)已建立安全通道,所以填充值明文不會出現(xiàn)在主機內(nèi)存中,格式化程序也無法獲取。結(jié)論
我們生活的現(xiàn)實世界是一個真實的物理世界,每個人都擁有獨一無二的物理身份。而今我們也生活在數(shù)字世界中,一切信息都是由一組特定的數(shù)據(jù)表示,當然也包括用戶的身份信息。而計算機只能識別用戶的數(shù)字身份,所以計算機給用戶的授權(quán)也是針對用戶數(shù)字身份進行的。保證訪問者的數(shù)字身份與物理身份相對應,就是身份認證管理系統(tǒng)所需要解決的問題。為了保護信息安全,現(xiàn)在有身份認證、授權(quán)管理控制、日志審計、防火墻等安全技術(shù)。其中身份認證是其他技術(shù)的基礎(chǔ)。如果用戶身份被非法冒用,那么用戶的權(quán)限也被非法使用,安全審計等就失去意義。本文通過研究當前最流行的基于PKI的USB Key身份認證技術(shù),總結(jié)出目前USB Key使用或部署中的一些安全威脅;最后針對這些安全威脅,對每個具體的安全點都提出了實用的安全解決方案,這些方案都在項目或產(chǎn)品中得到應用和檢驗,具體很好的使用價值和經(jīng)濟價值。
參考文獻:
[1]蘇正榮.簡析USB Key的工作原理及應用[J].中國金融電腦, 2009,(05)[2]楊帆.USB KEY體系研究與技術(shù)實現(xiàn)[D]武漢大學, 2004 [3]劉紅明.基于SSX45安全芯片的USB Key設計與實現(xiàn)[D]上海交通大學, 2009.[4]Carlisle Adams, Steve Lloyd, Understanding PKI: Concepts, Standards, and Deployment Considerations[M], Addison-Wesley Professional, 2 edition ,November 16, 2002 [5]Jianying Zhou, Meng-Chow Kang,Feng Bao, Hwee-Hwa Pang, Applied Public Key Infrastructure[M], 2005 [6]關(guān)振勝,公鑰基礎(chǔ)設施PKI與認證機構(gòu)CA[M], 2002 [7]吳永英,鄧路,肖道舉,陳曉蘇.一種基于USB Key的雙因子身份認證與密鑰交換協(xié)議[J]計算機工程與科學, 2007,(05)[8]張鑫,李方偉,潘春蘭.一種增強的基于智能卡的遠程身份鑒別方案[J]計算機應用, 2009,(04)[9]程宇賢.網(wǎng)上銀行身份認證系統(tǒng)的安全性研究[D]上海交通大學, 2010 [10]張軼輝,王昭順,USB密碼鑰匙漏洞分析及防御策略的研究 [J],航空計算技術(shù),2007 [11]張錕,顏學龍.USB KEY的體系結(jié)構(gòu)分析及安全策略研究[J]安防科技, 2009,(02)
第二篇:身份認證技術(shù)
身份認證技術(shù)百科名片
動態(tài)口令牌身份認證技術(shù)是在計算機網(wǎng)絡中確認操作者身份的過程而產(chǎn)生的解決方法。計算機網(wǎng)絡世界中一切信息包括用戶的身份信息都是用一組特定的數(shù)據(jù)來表示的,計算機只能識別用戶的數(shù)字身份,所有對用戶的授權(quán)也是針對用戶數(shù)字身份的授權(quán)。如何保證以數(shù)字身份進行操作的操作者就是這個數(shù)字身份合法擁有者,也就是說保證操作者的物理身份與數(shù)字身份相對應,身份認證技術(shù)就是為了解決這個問題,作為防護網(wǎng)絡資產(chǎn)的第一道關(guān)口,身份認證有著舉足輕重的作用。
身份認證方法
在真實世界,對用戶的身份認證基本方法可以分為這三種:(1)根據(jù)你所知道的信息來證明你的身份(what you know,你知道什么);(2)根據(jù)你所擁有的東西來證明你的身份(what you have,你有什么);(3)直接根據(jù)獨一無二的身體特征來證明你的身份(who you are,你是誰),比如指紋、面貌等。在網(wǎng)絡世界中手段與真實世界中一致,為了達到更高的身份認證安全性,某些場景會將上面3種挑選2中混合使用,即所謂的雙因素認證。
以下羅列幾種常見的認證形式:
靜態(tài)密碼
用戶的密碼是由用戶自己設定的。在網(wǎng)絡登錄時輸入正確的密碼,計算機就認為操作者就是合法用戶。實際上,由于許多用戶為了防止忘記密碼,經(jīng)常采用諸如生日、電話號碼等容易被猜測的字符串作為密碼,或者把密碼抄在紙上放在一個自認為安全的地方,這樣很容易造成密碼泄漏。如果密碼是靜態(tài)的數(shù)據(jù),在驗證過程中 需要在計算機內(nèi)存中和傳輸過程可能會被木馬程序或網(wǎng)絡中截獲。因此,靜態(tài)密碼機制如論是使用還是部署都非常簡單,但從安全性上講,用戶名/密碼方式一種是不安全的身份認證方式。它利用what you know方法。
智能卡(IC卡)
一種內(nèi)置集成電路的芯片,芯片中存有與用戶身份相關(guān)的數(shù)據(jù),智能卡由專門的廠商通過專門的設備生產(chǎn),是不可復制的硬件。智能卡由合法用戶隨身攜帶,登錄時必須將智能卡插入專用的讀卡器讀取其中的信息,以驗證用戶的身份。智能卡認證是通過智能卡硬件不可復制來保證用戶身份不會被仿冒。然而由于每次從智能卡中讀取的數(shù)據(jù)是靜態(tài)的,通過內(nèi)存掃描或網(wǎng)絡監(jiān)聽等技術(shù)還是很容易截取到用戶的身份驗證信息,因此還是存在安全隱患。它利用what you have方法。
短信密碼
短信密碼以手機短信形式請求包含6位隨機數(shù)的動態(tài)密碼,身份認證系統(tǒng)以短信形式發(fā)送隨機的6位密碼到客戶的手機上??蛻粼诘卿浕蛘呓灰渍J證時候輸入此動態(tài)密碼,從而確保系統(tǒng)身份認證的安全性。它利用what you have方法。具有以下優(yōu)點:(1)安全性由于手機與客戶綁定比較緊密,短信密碼生成與使用場景是物理隔絕的,因此密碼在通路上被截取幾率降至最低。(2)普及性只要會接收短信即可使用,大大降低短信密碼技術(shù)的使用門檻,學習成本幾乎為0,所以在市場接受度上面不會存在阻力。
(3)易收費由于移動互聯(lián)網(wǎng)用戶天然養(yǎng)成了付費的習慣,這和PC時代互聯(lián)網(wǎng)截然不同的理念,而且收費通道非常的發(fā)達,如果是網(wǎng)銀、第三方支付、電子商務可將短信密碼作為一項增值業(yè)務,每月通過SP收費不會有阻力,因此也可增加收益。(4)易維護 由于短信網(wǎng)關(guān)技術(shù)非常成熟,大大降低短信密碼系統(tǒng)上馬的復雜度和風險,短信密碼業(yè)務后期
客服成本低,穩(wěn)定的系統(tǒng)在提升安全同時也營造良好的口碑效應,這也是目前銀行也大量采納這項技術(shù)很重要的原因。
動態(tài)口令牌
目前最為安全的身份認證方式,也利用what you have方法,也是一種動態(tài)密碼。動態(tài)口令牌是客戶手持用來生成動態(tài)密碼的終端,主流的是基于時間同步方式的,每60秒變換一次動態(tài)口令,口令一次有效,它產(chǎn)生6位動態(tài)數(shù)字進行一次一密的方式認證。由于它使用起來非常便捷,85%以上的世界500強企業(yè)運用它保護登錄安全,廣泛應用在VPN、網(wǎng)上銀行、電子政務、電子商務等領(lǐng)域。
USB KEY
基于USB Key的身份認證方式是近幾年發(fā)展起來的一種方便、安全的身份認證技術(shù)。它采用軟硬件相結(jié)合、一次一密的強雙因子認證模式,很好地解決了安全性與易用性之間的矛盾。USB Key是一種USB接口的硬件設備,它內(nèi)置單片機或智能卡芯片,可以存儲用戶的密鑰或數(shù)字證書,利用USBKey內(nèi)置的密碼算法實現(xiàn)對用戶身份的認證?;赨SB Key身份認證系統(tǒng)主要有兩種應用模式:一是基于沖擊/響應的認證模式,二是基于PKI體系的認證模式,目前運用在電子政務、網(wǎng)上銀行。
OCL
OCL可以提供身份認證的數(shù)字簽名
數(shù)字簽名又稱電子加密,可以區(qū)分真實數(shù)據(jù)與偽造、被篡改過的數(shù)據(jù)。這對于網(wǎng)絡數(shù)據(jù)傳輸,特別是電子商務是極其重要的,一般要采用一種稱為摘要的技術(shù),摘要技術(shù)主要是采用 HASH 函數(shù)(HASH(哈希)函數(shù)提供了這樣一種計算過程:輸入一個長度不固定的字符串,返回一串定長度的字符串,又稱 HASH 值)將一段長的報文通過函數(shù)變換,轉(zhuǎn)換為一段定長的報文,即摘要。身份識別是指用戶向系統(tǒng)出示自己身份證明的過程,主要使用約定口令、智能卡和用戶指紋、視網(wǎng)膜和聲音等生理特征。數(shù)字證明機制提供利用公開密鑰進行驗證的方法。
生物識別技術(shù)
運用who you are方法,通過可測量的身體或行為等生物特征進行身份認證的一種技術(shù)。生物特征是指唯一的可以測量或可自動識別和驗證的生理特征或行為方式。生物特征分為身體特征和行為特征兩類。身體特征包括:指紋、視網(wǎng)膜、虹膜、掌型、臉型、人體氣味、手的血管和DNA等;行為特征包括:簽名、語音、行走步態(tài)等。目前部分學者將視網(wǎng)膜識別、虹膜識別和指紋識別等歸為高級生物識別技術(shù);將掌型識別、臉型識別、語音識別和簽名識別等歸為次級生物識別技術(shù);將血管紋理識別、人體氣味識別、DNA識別等歸為“深奧的”生物識別技術(shù),指紋識別技術(shù)目前應用廣泛的領(lǐng)域有門禁系統(tǒng)、微型支付等。Infogo身份認證
網(wǎng)絡安全準入設備制造商,聯(lián)合國內(nèi)專業(yè)網(wǎng)絡安全準入實驗室,推出安全身份認證準入控制系統(tǒng)。
雙因素身份認證
所謂雙因素就是將兩種認證方法結(jié)合起來,進一步加強認證的安全性,目前使用最為廣泛的雙因素有:動態(tài)口令牌 + 靜態(tài)密碼USB KEY + 靜態(tài)密碼二層靜態(tài)密碼 等等。
第三篇:SKEY認證方案的分析與改進
S/KEY認證方案的分析與改進
殷松瑜,徐煒民
(上海大學 計算機工程學院,上海 200072)
摘 要:本文提出的改進S/KEY身份認證協(xié)議,使用隨機數(shù)與機密信息進行異或運算,屏蔽重要信息防止機密泄露,實現(xiàn)了用戶和服務器間的相互認證,認證服務器的計算負載并沒有增加。本方案克服了傳統(tǒng)S/KEY一次性口令認證方案不能抵抗重放攻擊,小數(shù)攻擊,冒充攻擊,中間人攻擊安全漏洞,有效地防止了連接劫持、協(xié)議破壞攻擊等攻擊手段,顯著地增強了應用系統(tǒng)的安全性。關(guān)鍵詞:S/KEY身份認證; 一次性口令; 異或; 散列函數(shù) 中圖法分類號: TP393108
文獻標識碼: A
Analysis and Improvement of S/KEY Authentication Scheme
YIN Song-yu,XV Wei-min
(School of Engineering and Computer Science Shanghai University , Shanghai 200072)
Abstract:This paper proposes a new improved S/KEY protocol.As is described in my authentication scheme that the random number XORed by the confidential information prevents confidential information from disclosure, and a mutual authentication between the user and the server is effectively carried out , but which do not increase the overhead of authentication server.The new S/KEY solution can not only overcome the vulnerabilities of security that the traditional S/KEY one-time password protocol will not help the server to resist the replay attacks, small integer attacks, personate attacks and man-in–middle attacks, but also effectively prevent the server from connection hijacking, protocal–broken and other attacks, so the improved S/KEY protocol significantly enhances the security level of application system.Key words: S/KEY Authentication;One-Time Password;XOR;Hash fuction
是驗證通信雙方是否符合其所聲稱的身份, 防止非法用戶竊取合法用戶的身份,以得到不應有的授權(quán)進入系統(tǒng)獲得不正當利益或惡意破壞系統(tǒng)。
傳統(tǒng)的認證技術(shù)是輸入用戶名/口令的基本認證方式,這種認證最大的問題是用戶名和口令都以明文的方式在不安全的網(wǎng)絡中傳輸,很容易受到惡意的竊聽、篡改、重放或在線猜測和離線字典攻擊。安全的基于證書的數(shù)字簽名技術(shù)必須以完整的CA(Certification Authority,證書授權(quán)中心)體系為基礎(chǔ),但目前在國內(nèi)還沒有法律上所公認的可信的第0 引言
計算機通信技術(shù)和網(wǎng)絡的發(fā)展使得網(wǎng)絡成為信息交換的主要手段,越來越多的企業(yè)將電子商務作為重要的運營模式。當企業(yè)用戶在其業(yè)務活動中把自己完全展示給外部的用戶和商業(yè)合作者或當通過網(wǎng)絡獲取客戶的敏感數(shù)據(jù)時, 網(wǎng)絡的安全訪問控制就成了保護企業(yè)信息安全, 防止黑客惡意攻擊破壞的重要手段。身份認證是確保網(wǎng)絡系統(tǒng)中信息安全的門戶,網(wǎng)絡應用系統(tǒng)的第一道防線。身份認證的目的就三方證書授權(quán)中心。對于在不安全的網(wǎng)絡環(huán)境中的企業(yè)來說,采用實現(xiàn)不太復雜,又無需第三方認證的一次性口令(One Time Password,OTP)認證技術(shù)是一種很有吸引力的的解決方案,從理論上講,只使用一次的密碼(A Single Use Password)是永遠不會被破解,是最安全的密碼。
本文在分析研究S/KEY一次性口令認證技術(shù)的基礎(chǔ)上,針對S/KEY系統(tǒng)的缺陷[1][2][3]提出了一種新的改進方案。已有的一些改進方案[4][5][6][7]使用離散對數(shù)公鑰加密技術(shù),另外一些方案 [8]使用對稱加密方法,雖然改進方案宣稱無需第三方公證,但是如何管理分配加密密鑰,是否最后還是依靠公鑰基礎(chǔ)設施PKI,這些都是很難解決的問題。使用加密方法增加了系統(tǒng)開銷和實現(xiàn)的復雜度,這也就失去了口令認證的優(yōu)點:實現(xiàn)方案簡單,運行成本低等。而方案
[9][10][11]
雖然對S/KEY認證技術(shù)有所改進,卻并沒有完全解決S/KEY系統(tǒng)的安全問題。本文所提出的方案使用隨機數(shù)與機密信息進行異或運算,屏蔽重要信息內(nèi)容防止機密向外泄露,相比原來S/KEY方案認證服務器增加的運算量很小。改進方案克服了傳統(tǒng)S/KEY一次性口令不能抵抗小數(shù)攻擊,冒充攻擊等安全漏洞,實現(xiàn)了用戶和服務器間的相互認證,有效地防止了連接劫持、協(xié)議破壞攻擊等攻擊手段,顯著地增強了應用系統(tǒng)的安全性。一次性口令認證技術(shù)
竊取系統(tǒng)口令文件、通過偷聽網(wǎng)絡連接來獲取和合法用戶的口令以及重放是常見的攻擊方式。一次性口令系統(tǒng)設計的目的就是為了對付這種類型的攻擊, 使用戶在每次注冊時使用一個以前沒有使用過的口令。1.1 基本原理
OTP的主要思路是:在登錄過程中加入不確定因子,使每次登錄過程中生成的密碼都各不相同,以提高登錄過程的安全性。系統(tǒng)接收到登錄口令以后, 以同樣的算法做一個驗算即可驗證用戶的合法性。目前有許多方法可以實現(xiàn)一次性口令身份認證,常用的有如下3種:(1)Lamport方案[15]。即哈希鏈(Hash chains)算法。在初始化階段選取一個口令pw和一個次數(shù)n,及一個單向散列函數(shù)Hash,通過計算y= Hash n(pw),把y和n的值存到服務器上。用戶端計算y'= Hash n-1(pw)的值,服務器計算 z = Hash(y')的值同服務器上相應的值y進行比較。如果z=y,則驗證成功,然后用y'的值取代服務器上y的值,n的值減1。通過哈希鏈算法,用戶每次登錄到服務器端的口令都不相同。這種方案的優(yōu)點是易于實現(xiàn),且無須特殊硬件的支持。而缺點是用戶需要進行多次Hash運算,其安全性依賴于單向散列函數(shù)Hash,而且每隔一段時間還需要重新初始化系統(tǒng),服務器的額外開銷很大。
(2)時間同步方案(見圖1)[15]。每個系統(tǒng)用戶都持有相應的時間同步令牌(token)。令牌內(nèi)置時鐘,種子密鑰和加密算法。時間同步令牌根據(jù)當前時間和種子密鑰可以每分鐘動態(tài)生成一個一次性口令。動態(tài)口令傳送到認證服務器。服務器通過其種子密鑰副本和當前時間計算出所期望的輸出值,對用戶進行驗證。如果相匹配,則登錄通過。雖然該方法可以保證很高的安全性,然而技術(shù)上很難保證用戶的時間同步令牌在時間上和認證服務器嚴格同步,因為數(shù)據(jù)在網(wǎng)絡上傳輸和處理都存在一定的時間延遲,所以該方案實現(xiàn)時是在允許的時間誤差范圍內(nèi)(例如多少秒)都可以通過認證,但是當時間誤差超過允許值時,對正常用戶的登錄往往造成身份認證失敗,這是時間同步方案很大的缺點,另外該方案要求有時間同步令牌這類特殊硬件的支持。
(3)質(zhì)詢/應答方案(Challenge/Response)(見圖2)
[15]
。每個用戶都持有相應的質(zhì)詢/應答令牌。令牌內(nèi)置種子密鑰和加密算法。用戶需要訪問系統(tǒng)時,服務器隨機生成一個質(zhì)詢(Challenge),用戶將該質(zhì)詢手工輸入到質(zhì)詢/應答令牌中,質(zhì)詢/應答令牌利用內(nèi)置的種子密鑰和加密算法對其計算出相應的應答(Response)。用戶將該應答手工輸入到主機再上傳給服務器。服務器根據(jù)該用戶存儲的種子密鑰和加密算法計算出應答并和用戶上傳的應答進行比較,該方法可以保證很高的安全性。但該方案也有缺陷:需要特殊硬件(質(zhì)詢/應答令牌)的支持,增加了該方案的實現(xiàn)成本;用戶需多次手工輸入數(shù)據(jù),易造成較多的輸入失誤,使用起來十分不便;用戶的身份標識直接在網(wǎng)絡上明文傳輸,攻擊者可很容易地截獲它,留下了安全隱患;沒有實現(xiàn)用戶和服務器間的相互認證,不能抵抗來自服務器端的冒充攻擊;質(zhì)詢每次都由服務器隨機生成,造成了服務器開銷過大。
1.2 S/KEY一次性口令認證協(xié)議
目前在實際應用最廣泛的一次性口令是S/Key認證協(xié)議,它也是質(zhì)詢/應答方式的一種。
S/Key一次性口令的原理是: OTP為每個用戶分配一個賬號,每個賬號配有種子(Seed)、迭代值(Iteration)和秘密通行短語(Secret Pass Phrase,SPP)。在客戶端和服務器端各安裝一個OTP計算程序,用戶通過客戶機訪問服務器時,首先向服務器傳送自己的賬號,服務器應答一個由與該賬號對應的種子Seed和迭代值Seq組成的質(zhì)詢, 用戶在客戶端輸入只有自己知道的秘密通行密語給予應答,客戶機OTP計算程序使用該質(zhì)詢和秘密通行短語產(chǎn)生一個一次性口令,并以該一次性口令登錄,作為對質(zhì)詢的應答。服務器端OTP計算程序同時也產(chǎn)生一次性口令,然后與所收到的一次性口令進行對比,從而完成服務器對登錄用戶的鑒別。每次登錄成功后,迭代值遞減。
但是當?shù)颠f減為0或秘密通行短語泄密后,則用戶必須重新初始化系統(tǒng)。這也是S/KEY一次性口令最大的不足。1.3 單向散列函數(shù)
S/KEY認證是一種摘要認證, 主要利用了散列函數(shù)又稱為哈希函數(shù)(Hash), 就是把可變輸入長度申轉(zhuǎn)換成固定長度輸出串散列值的一種函數(shù)。S/KEY認證的安全性正是依賴于散列函數(shù)的單向、計算不可逆的特性:
(1)給定消息M很容易計算Hash(M),但是根據(jù)Hash(M)反向計算M卻很難,幾乎是不可能。
(2)給定M消息要找到另一消息M’, 并滿足Hash(M)= Hash(M’)也是幾乎不可能。
目前,著名的散列函數(shù)有MD4、MD5和SHA。SHA(Security Hash Arithmetic)是由美國國家標準和技術(shù)(NIST)提出的。SHA-1 算法允許的最大輸入報文的長度不超過26
4位,輸出160 比特的報文摘要。SHA-1 與MD5相似,都是從MD4 導出的,但它對強行攻擊具有更大的強度,且易于實現(xiàn)。傳統(tǒng)S/KEY認證系統(tǒng)[1] S/KEY認證系統(tǒng)分注冊階段和認證階段2個階段實現(xiàn)。本文使用的標志如下:U為客戶端;S為服務器端;ID為用戶身份標志;PW為用戶口令;→為信息發(fā)送標識;//為級聯(lián)運算符;⊕為異或運算符;H(x)為安全哈希函數(shù);Hi
(x)為對x進行i次哈希運算;N為口令序列的元素個數(shù);Seq為當前序列數(shù)(第i次認證序列數(shù),Seq=N-i)。2.1注冊過程
注冊工作由客戶端U與服務器端S共同參與完成,協(xié)商并保存在認證過程中將要用到的數(shù)據(jù),要求注冊工作必須在安全環(huán)境下進行。
(1)U輸入ID和PW,請求注冊;(2)S為U選擇種子值Seed發(fā)送給U;
(3)U設置一次性口令序列的最大元素個數(shù)N,并計算口令序列的第一個口令HN(PW//Seed)傳送給S;(4)S建立記錄,存儲ID,Seed,N,HN
(PW//Seed)。2.2認證過程
第i次認證過程如下:
步驟1 U→S:ID,認證請求;
步驟2 S→U:Seq=N-i,Seed;
步驟3 U→S:ID, HN-i(PW//Seed);
步驟4 S用收到的HN-i(PW//Seed)再做一次哈希運算
H(HN-i
(PW//Seed)),與上次認證成功后保留的H
N-(i-1)
(PW//Seed)比較,若相等,S就向U發(fā)送登
錄成功消息,并保留HN-(i-1)
(PW//Seed)作為下一
次認證的驗證值。
2.3 傳統(tǒng)S/KEY認證系統(tǒng)的安全缺陷分析
S/KEY系統(tǒng)雖能有效抵御重放攻擊,有一定的安全性,但是系統(tǒng)本身仍有很多缺陷。
S/KEY系統(tǒng)無法抵御冒充攻擊,即冒充服務器攻擊。傳 統(tǒng)S/KEY系統(tǒng)是一種簡單的認證協(xié)議,認證過程中只對用戶 進行認證而不對服務器進行認證,并且S/KEY方案并沒有提 供對傳輸數(shù)據(jù)的加密,Seed和Seq都是以明文形式在傳輸信道中傳輸,因此,攻擊者可以欺騙用戶去登錄攻擊者指定的假冒服務器,當用戶提交認證請求時,假冒服務器可以發(fā)送事先竊聽到的Seed,Seq給用戶從而欺騙用戶得到一次有效的登錄口令,再偽裝成合法用戶登錄服務器。
小數(shù)攻擊是特別針對于口令序列類型的OTP方案的攻 擊方式,S/KEY認證系統(tǒng)不能防御此種攻擊。攻擊者可以得 到系統(tǒng)使用的安全散列函數(shù)H(x),通過監(jiān)聽和篡改步驟(2)中的序列數(shù)Seq為一個小很多的數(shù)值m給用戶,這樣用戶就會計算出Hm
(PW//Seed)給攻擊者,攻擊者再將Hm
(PW//Seed)哈希Seq-m次,既H
seq-m
(Hm(PW//Seed))得到Hseq
(PW//Seed)也就
是正確的口令去登錄服務器,因為m< Seq,所以攻擊者在成功進行一次攻擊后仍可保留Hm
(PW//Seed)以后使用,只要服務器在認證時在步驟(2)中發(fā)送一個比m大的序列數(shù)攻擊者就可計算出正確的口令來登錄服務器。
S/KEY系統(tǒng)無法抵御協(xié)議破壞攻擊,如果在合法用戶和 服務器進行正常認證過程中攻擊者成功地進行了竊聽,并在 步驟(3)中,攻擊者竊取到了第i次有效的口令HN-i
(PW//Seed)后將認證過程破壞或服務器崩潰,那么在系統(tǒng)重啟后會直接恢復到認證破壞前的步驟(3),這時攻擊者就可以利用協(xié)議被破壞前竊取到的有效口令登錄服務器。
中間人攻擊是指攻擊者通過各種技術(shù)手段將自己控制的計算機非法連接到2臺正常通信計算機的通信信道之間,直接即時地讀取和篡改信道中的信息,而通信兩端的計算機卻認為彼此還在互相通信,無法察覺信息已經(jīng)被轉(zhuǎn)發(fā)過。這種隱蔽性攻擊是對網(wǎng)絡安全極具威脅和破壞性的一種攻擊方式。S/KEY系統(tǒng)對于中間人攻擊更顯得無能為力,只要攻擊者通過一定的技術(shù)手段成功建立好中間人攻擊環(huán)境,則U與S之間傳遞的一切信息都會經(jīng)過攻擊者控制的計算機進行轉(zhuǎn)發(fā),攻擊者只需在步驟(3)中獲得一次性口令后強迫合法用戶下線,再直接轉(zhuǎn)發(fā)口令給S冒充合法用戶登錄。
連接劫持攻擊最早由Bellovin[3]
提出,這種攻擊方法是非法用戶繞過身份確認這一關(guān),等到合法用戶通過認證成功與服務器建立連接后,設法劫取此連接先行搶入連接冒充合法用戶侵入系統(tǒng)。
S/KEY認證系統(tǒng)的改進
3.1 改進思路
1)在證明對方身份之前,不給出有關(guān)信息的鑒別,不泄露有關(guān)信息,2)盡量使用簡單而且安全的算法以減少認證服務器的運算量,提高效率,3)盡可能使傳送的消息簡短,減少相互傳遞的認證信息的個數(shù),減少網(wǎng)絡通信量,4)用戶和系統(tǒng)之間進行相互認證,5)提供安全通信防止連接劫持的功能。3.2注冊過程
注冊工作與傳統(tǒng)S/KEY方案大體相同,由U與S共同參與完成,協(xié)商并保存在認證過程中將要用到的數(shù)據(jù),由服務器端S建立記錄,存儲ID,Seed,N,HN(PW//Seed),所不同的是客戶端也要記住ID,Seed,并保證ID,Seed作為U和S共享秘密的安全。種子Seed的設置原本是為了客戶在不同的服務器上方便使用OTP[1],在不同的服務器使用不同的Seed,這樣即使客戶使用同一個秘密通行短語SPP在不同的服務器上也能生成不同的OTP。在本方案中客戶U記住Seed就能實現(xiàn)與服務器協(xié)商會話密鑰(一個客戶端生成的隨機數(shù)),并且Seed也不需要每一次認證都傳送給客戶端,以減少被竊聽的可能。
從安全角度考慮客戶端可以用USBkey存儲機密信息,而服務器端同樣要保證存放客戶信息的數(shù)據(jù)庫的安全,防止非法竊取機密信息,特別是內(nèi)部攻擊。3.3認證過程
服務器端保留有一張表,每條記錄包含:用戶名ID,種子Seed,當前序列號Seq=N-i,上次成功登錄密碼PN-(i-1)
i-1=H(PW//Seed);
第i次認證過程:
步驟1 U→S:認證請求,H(ID),H(ID//Seed)⊕Ri; 步驟2 S→U:Seq⊕Ri,Pi-1⊕Ri; 步驟3 U→S: Pi⊕Ri;
步驟4 S→U:認證成功消息,保留Pi。
步驟說明:
步驟1:客戶端U在每一次認證前都要產(chǎn)生一個隨機數(shù)Ri 作為下面認證過程的會話密鑰,用來屏蔽相關(guān)信息以防止泄密。為了保護客戶ID,Seed信息,不傳送明文,而改為發(fā)送他們的哈希函數(shù)值。
步驟2 :服務器端S在數(shù)據(jù)庫中查找到ID對應的Seed,計算H(ID//Seed)⊕Ri⊕H(ID//Seed)= Ri 就可以得到隨機數(shù)Ri,至此通過ID,Seed作為共享秘密由U和S協(xié)商了會話密鑰Ri。為了不泄露機密信息,S發(fā)送Seq和Pi-1的加密形式,以防止被惡意攻擊者竊聽。
步驟3:客戶端U通過計算Seq⊕Ri⊕Ri=Seq,和Pi-1⊕Ri⊕Ri= Pi-1,得到了當前序列號Seq=N-i和上次成功登錄密碼
PN-i
i-1以后,再計算第i次登錄密碼Pi=H(PW//Seed), 比較 H(Pi)和Pi-1,若相等則繼續(xù)向服務器端發(fā)送加密形式的Pi;否則就中斷認證過程。
步驟4: 服務器端S接受到客戶端發(fā)來的登錄密碼加密的Pi后,計算Pi⊕Ri⊕Ri=Pi得到第i次登錄密碼Pi,再次計算H(Pi)并把它和自己保存的上次成功登錄密碼Pi-1進行比較,若相等則S向U發(fā)送登錄成功消息,并用Pi替換Pi-1作為保留的值用于下一次認證,否則就中斷認證過程,拒絕用戶登錄。3.3 改進S/KEY方案的安全性討論
方案注冊階段在安全環(huán)境下進行,用戶用USBkey 保存機密信息ID,Seed,可有效防止共享秘密信息泄漏,從而保證了會話密鑰Ri的絕密性。共享秘密是確保本方案安全的基本條件之一。
在步驟(l)中,發(fā)送客戶ID,Seed信息的散列值也杜絕了相關(guān)秘密的外泄。U和S通過共享秘密ID,Seed相互協(xié)商交換隨機數(shù)Ri作為會話密鑰,而下面認證過程的相互傳遞信息的機密性,都是依靠隨機數(shù)Ri對傳遞的消息進行異或運算來防止非法竊聽和篡改。
本方案還有一個確保安全性的基本條件,那就是用異或運算加密的安全性, 雖然MD5,SHA函數(shù)已被證明是不安全的[13], 而新方案采用異或運算方法對散列值值進行加密,Hash函數(shù)長度(例如MD5為128位, SHA為160位)足以保證攻擊者不能通過窮舉法破解有關(guān)機密信息[14]
。這里建議使用長
度更長更安全的Hash函數(shù)如SHA-224, SHA-256, SHA-384 和
SHA-512。
在步驟(2)中,S通過共享秘密解密h(ID//Seed)⊕Ri得到會話密鑰Ri,使用Ri異或運算散列值Seq和Pi-1來加密,即使攻擊者有進行猜測、窮舉等攻擊的可能,但是異或運算加密的時間很短,并且每次認證隨機數(shù)都不同,因此,可以保證此過程中異或運算加密信息的安全性。
由于客戶端用戶用以產(chǎn)生OTP口令的秘密通行密語也就是真正的用戶口令既不在網(wǎng)上傳輸,也不存儲在服務器端及客戶端的任何地方,只有使用者本人知道,因此即便在不安全的網(wǎng)絡通信信道中秘密通行密語也不會被竊取,字典攻擊、口令字猜測等常用的攻擊手段對破解真正的用戶口令都無能為力。OTP口令只使用一次,即使在網(wǎng)絡傳輸過程中被捕獲下一次也被不能被重復使用。這樣一來攻擊者既不能非法竊取相關(guān)客戶的機密信息來構(gòu)造出正確的OTP口令,又不能重放已經(jīng)截獲的信息來通過服務器認證,所以對于客戶來說整個認證過程是安全的。
在步驟(3)中實現(xiàn)了客戶端對服務器端的認證,因為只 有服務器端才保存有上次成功登錄密碼Pi-1。在步驟(4)中實現(xiàn)了服務器端對客戶端的認證,只有客戶端才能正確生成第i次登錄密碼PN-i
i=H(PW//Seed),因為只有客戶端才知道秘密通行短語PW和種子Seed。本方案實現(xiàn)了客戶端和服務器端的雙向認證,可以抵抗來自客戶端的假冒攻擊和來自服務器端的假冒攻擊,卻不會使合法用戶的合理要求得不到滿足,也就是說本方案可以防止拒絕訪問攻擊和中間人攻擊。
由于在認證的過程中客戶端的機密信息:用戶名ID,種子Seed,當前序列號Seq=N-i都被加密,攻擊者無法竊聽,當然也就不能篡改Seq,冒充服務器向用戶發(fā)送一個小很多的數(shù)值m進行小數(shù)攻擊。另外攻擊者竊取不到第i次有效的口令HN-i(PW//Seed),即使認證過程被破壞或服務器崩潰,系統(tǒng)重啟后會直接恢復到認證破壞前的步驟(3),這時攻擊者就也不能利用協(xié)議被破壞前竊取到的有效口令登錄服務器,所以協(xié)議破壞攻擊對本方案不可行。步驟(4)結(jié)束后服務器端完成了對客戶端的身份認證。但是攻擊可能設法劫取此連接以冒充合法用戶訪問服務器。這樣攻擊者就成功地冒充用戶,達到了欺騙服務器的目的。所以在本方案中當合法用戶登錄完成后,服務器端會定期地向客戶端發(fā)出質(zhì)詢(Challenge),而客戶端必須作出相應的應答(Response)否則就會切斷該用戶的已有連接。服務端向客戶端發(fā)送的質(zhì)詢和客戶應答需要另外建立一條連接,不影響原連接的客戶端與服務器的正常通信,這對用戶而言是透明的[10]。
為了避免被動攻擊(Passive Attack)[16],每個用戶登錄時,只能建立一條連接,這樣就能防止其他用戶監(jiān)聽到部分口令后發(fā)動多條連接猜測后續(xù)的口令。3.4 改進S/KEY方案的實現(xiàn)問題
在運行效率方面,本方案主要的計算是散列函數(shù)和異或運算,而利用公私鑰加密算法實現(xiàn)OTP,或者在有限域上用離散對數(shù)實現(xiàn)OTP相比,無論是硬件資源需求還是在運算復雜度上都要簡單。另外生成隨機數(shù)Ri的工作移到客戶端上執(zhí)行,和質(zhì)詢/應答方案(Challenge/Response)相比減少了服務器的額外開銷。
通過網(wǎng)絡安全注冊可以實現(xiàn)如下:首先客戶下載服務器的公鑰用來加密一個對稱加密私鑰K發(fā)送給服務器,由服務器用于加密發(fā)往客戶端的機密信息如種子Seed等,而客戶也可以通過服務器的公鑰加密發(fā)往服務器的信息,當用戶重新初始化系統(tǒng)也可以通過網(wǎng)絡安全注冊。
S/KEY方案當?shù)颠f減為0或秘密通行短語泄密后, 用戶需要重新初始化系統(tǒng),這是S/KEY方案最大的缺點,但是從安全維護的角度來說初始化系統(tǒng),同時也是在檢查系統(tǒng)是否發(fā)生異常,是否受到攻擊,是否有機密信息泄露并做好防范措施,保證系統(tǒng)的安全。結(jié)束語
用戶身份認證是網(wǎng)絡中保證信息安全的重要前提,一次性口令協(xié)議是簡單認證中一種具有較高安全性的一類協(xié)議。本文提出了一種新的S/KEY認證方案,克服了傳統(tǒng)的S/KEY認證的安全缺陷,有效地保護了用戶身份機密信息,實現(xiàn)了客戶端和服務端雙向認證。改進協(xié)議能夠較好地抵御
小數(shù)攻擊、假冒攻擊、協(xié)議破壞攻擊等惡意破壞,實現(xiàn)了分布式系統(tǒng)的安全認證和持續(xù)用戶認證,提高了S/KEY系統(tǒng)的安全性,并且沒有增加認證服務器的計算負載。
改進S/KEY方案相對于強制認證的PKI等而言,具有實現(xiàn)簡單、使用方便的特點,所以在很多場合都有推廣意義,例如硬件資源少,運算能力有限的移動設備的遠程身份認證。本方案還可以集成到其他安全解決方案中,如智能卡,指紋識別等以提高應用系統(tǒng)的安全防護能力。
參考文獻
[1] Haller N.A one-time password system[S],(RFC2289),1998
[2] Mudge.Vulnerabilities in the S /KEY one time password system[EB/OL].http://004km.cn
第四篇:養(yǎng)老金身份認證
養(yǎng)老金身份認證怎樣進行操作 建模和認證前的注意事項建模和認證前的注意事項建模和認證前的注意事項建模和認證前的注意事項
1、請不要戴眼鏡進行建?;蛘哒J證;
2、請不要將頭發(fā)遮擋住眉毛或者眼睛;
3、請不要在機器上安裝虛擬攝像頭等軟件;
4、請在認證前,保證沒有任何其他程序正在使用攝像頭(比如正在使用QQ視頻聊天,請先關(guān)閉視頻);
5、無論是在家中,或者在其它任何地方進行認證時,請先確保光照均勻,沒有偏光,側(cè)光,背光的普通室內(nèi)環(huán)境光照條件。身后不能正對明亮的窗戶,或者臉旁兩側(cè)有很亮的燈光,避免圖像過亮,影響您的認證效果;
6、如果您的機器配置較低(比如單核cpu 1.5G以下,內(nèi)存在1GB以下),請您耐心等待,可能需要較長的等待時間,如果可能請更換一臺配置更高的機器進行認證;
7、盡量采用清晰的攝像頭進行認證,比如請盡量采用外接的攝像頭而避免用筆記本自帶的攝像頭;
8、如果您購買了智慧眼的雙目攝像頭,請保證兩個USB接口都插入了電腦的USB。建模和認證過程中的注意事項建模和認證過程中的注意事項建模和認證過程中的注意事項建模和認證過程中的注意事項
1、認證開始時,請保持雙眼平視攝像頭,并保持頭部不動。聽到“請眨眼”語音提示時,請先連續(xù)眨動多次,并稍稍小范圍上下左右5°以內(nèi)擺動一下頭部,確保認證快速通過;
2、認證開始時,請保持正面中性表情,不要大笑或者做其它劇烈的表情,否則,可能會造成認證失??;
3、請保持距離攝像頭在40-60cm的范圍內(nèi),保持臉部在視頻的橙色矩形框內(nèi),保持臉上各部分沒有被帽子墨鏡或者其它物體遮擋;
4、在進行認證時,請保持視頻中只有需要認證的一個人,其它人員請遠離攝像頭視頻范圍;
5、請不要試圖用照片代替真人進行認證,系統(tǒng)會自動判定并記錄下來,這會造成您無法完成認證并會受到處理;
6、建模模塊系統(tǒng)提示“認證成功,身份證號為多少”的對話框,才能算是建模成功;
7、認證模塊系統(tǒng)提示“認證成功,身份證號為多少”的對話框,才能算是認證成功。
第五篇:統(tǒng)一身份認證(CAS)簡單說明與設計方案
統(tǒng)一身份認證(CAS)簡單說明與設計方案(轉(zhuǎn))
1.單點登錄概述
所謂單點登錄(SSO),只當企業(yè)用戶同時訪問多個不同(類型的)應用時,他們只需要提供自身的用戶憑證信息(比如用戶名/密碼)一次,僅僅一次。SSO解決方案(比如,CAS)負責統(tǒng)一認證用戶,如果需要,SSO也可以完成用戶的授權(quán)處理。可以看出,當企業(yè)用戶在不同的應用間切換時,他們不用再重復地輸入自身的用戶憑證了。在實施SSO后,所用的認證操作都將交給SSO認證中心?,F(xiàn)有的SSO解決方案非常多,比如微軟的MSN Passport便是典型的SSO解決方案,各Java EE容器都提供了自身的專有SSO能力。
2.CAS的總體架構(gòu)
1.CAS簡介
CAS(中央認證服務)是建立在非常開放的協(xié)議之上的企業(yè)級SSO解決方案。誕生于2001年,在2002年發(fā)布了CAS2.0協(xié)議,這一新的協(xié)議提供了Proxy(代理)能力,此時的CAS2.0支持多層SSO能力。到2005年,CAS成為了JA-SIG旗下的重要子項目。由于CAS2.0版本的可擴展能力不是非常完美,而且他的架構(gòu)設計也不是很卓越,為了使得CAS能夠適用于更多場合,JA-SIG打算開發(fā)出同時遵循CAS1.0和CAS2.0協(xié)議的CAS3.X版本。
現(xiàn)在的CAS3全面擁抱Spring技術(shù),比如Spring DI容器和AOP技術(shù)、Spring Web MVC、Spring Web Flow、Spring Ldap Template等。
通常,CAS3由兩部分內(nèi)容構(gòu)成:CAS3服務器和CAS客戶端。由于CAS2.0協(xié)議借助于XML數(shù)據(jù)結(jié)構(gòu)與客戶進行交互,因此開發(fā)者可以使用各種語言編寫的CAS3客戶與服務器進行通信。CAS3服務器采用純Java開發(fā)而成,它要求目標運行環(huán)境實現(xiàn)了Servlet2.4+規(guī)范、提供Java SE 1.4+支持。如果宿主CAS3服務器的目標Java EE容器僅僅實現(xiàn)了Servlet2.3-規(guī)范,則在對CAS3服務器進行少量的改造后,CAS3也能運行其中。
運行時,CAS3服務器僅僅是一個簡單的Web應用,使用者只需要將cas.war直接丟到目標Java EE容器后,即完成了CAS3的部署。
2.CAS詞匯概念
TGC(ticket-granting cookie)---------受權(quán)的票據(jù)證明
KDC(Key Distribution Center)----------密鑰發(fā)放中心
Service ticket(ST)---------服務票據(jù),由 KDC 的 TGS 發(fā)放。任何一臺 Workstation 都需要擁有一張有效的 Service Ticket 才能訪問域內(nèi)部的應用(Applications)。如果能正確接收 Service Ticket,說明在 CASClient-CASServer 之間的信任關(guān)系已經(jīng)被正確建立起來,通常為一張數(shù)字加密的證書
Ticket Granting tieckt(TGT)---------票據(jù)授權(quán)票據(jù),由 KDC 的 AS 發(fā)放。即獲取這樣一張票據(jù)后,以后申請各種其他服務票據(jù)(ST)便不必再向 KDC 提交身份認證信息(準確術(shù)語是 Credentials)。
authentication service(AS)---------認證用服務,索取 Crendential,發(fā)放 TGT
ticket-granting service(TGS)---------票據(jù)授權(quán)服務,索取 TGT,發(fā)放 ST
3.CAS工作原理
CAS的單點登錄的認證過程,所用應用服務器受到應用請求后,檢查ST和TGT,如果沒有或不對,轉(zhuǎn)到CAS認證服務器登錄頁面,通過安全認證后得到ST和TGT,再重新定向到相關(guān)應用服務器,在回話生命周期之內(nèi)如果再定向到別的應用,將出示ST和TGT進行認證,注意,取得TGT的過程是通過SSL安全協(xié)議的。
如果通俗形象地說就是:相當于用戶要去游樂場,首先要在門口檢查用戶的身份(即 CHECK 用戶的 ID 和 PASS), 如果用戶通過驗證,游樂場的門衛(wèi)(AS)即提供給用戶一張門卡(TGT)。
這張卡片的用處就是告訴游樂場的各個場所,用戶是通過正門進來,而不是后門偷爬進來的,并且也是獲取進入場所一把鑰匙。
現(xiàn)在用戶有張卡,但是這對用戶來不重要,因為用戶來游樂場不是為了拿這張卡的而是為了游覽游樂項目,這時用戶摩天樓,并想游玩。
這時摩天輪的服務員(client)攔下用戶,向用戶要求摩天輪的(ST)票據(jù),用戶說用戶只有一個門卡(TGT), 那用戶只要把 TGT 放在一旁的票據(jù)授權(quán)機(TGS)上刷一下。
票據(jù)授權(quán)機(TGS)就根據(jù)用戶現(xiàn)在所在的摩天輪,給用戶一張摩天輪的票據(jù)(ST), 這樣用戶有了摩天輪的票據(jù),現(xiàn)在用戶可以暢通無阻的進入摩天輪里游玩了。
當然如果用戶玩完摩天輪后,想去游樂園的咖啡廳休息下,那用戶一樣只要帶著那張門卡(TGT).到相應的咖啡廳的票據(jù)授權(quán)機(TGS)刷一下,得到咖啡廳的票據(jù)(ST)就可以進入咖啡廳
當用戶離開游樂場后,想用這張 TGT 去刷打的回家的費用,對不起,用戶的 TGT 已經(jīng)過期了,在用戶離開游樂場那刻開始,用戶的 TGT 就已經(jīng)銷毀了。
3.CAS的實現(xiàn)原理
由于CAS是基于Cookie的服務,所以它使用了Spring CookieGenerator來生成相應Cookie,下面的代碼段摘自與CAS服務器的WEB-INF/中的cas-server.xml配置文件。
class=“org.springframework.web.util.CookieGenerator”>
一旦用戶登錄到CAS服務器后,可以借助于URL為/cas/logout的地址退出,并且這種logout結(jié)果將導致瀏覽器中已存儲的Cookie被銷毀掉,即銷毀CAS與當前用戶間已建立的信任關(guān)系(Web SSO會話)。
1.AuthenticationHandler認證處理器
瀏覽項目的web.xml,可以發(fā)現(xiàn)如下內(nèi)容:
contextConfigLocation
/WEB-INF/applicationContext.xml,/WEB-INF/deployerConfigContext-acegi.xml
org.jasig.cas.web.init.SafeContextLoaderListener
SafeContextLoaderListener實現(xiàn)了SafeContextListener,它借助于ContextLoader-Listener裝載Spring DI容器。這樣做的原因是因為Spring在通過
ContextLoaderLitener啟動時可能出現(xiàn)異常,造成整個CAS不能正常啟動,經(jīng)過SafeContextLoaderListener,則在異常發(fā)生時,CAS服務器也可以啟動。在deployerConfigContext.xml中,可以看到只定義了一個Bean:
class=“org.jasig.cas.authentication.AuthenticationManagerImpl”>
SimpleTestUsernamePasswordAuthenticationHandler的作用是如果用戶名與密碼輸入一樣,則通過系統(tǒng)認證。這個是開發(fā)過程中常用的一個handler,但是在開發(fā)完畢后應該除去。
AuthenticationManagerImpl負責認證用戶,比如一個admin/admin用戶是否合法就是它來驗證的。AuthenticationManagerImpl對象會借助于他引用的credentialsToPr-incipalResolvers和authenticationHandlers集合完成用戶的認證工作。Authentication-Handlers負責完成用戶認證,而
credentialsToPrincipalResolvers負責構(gòu)建認證結(jié)果。其中,并不是authenticationHandlers的全部集合都參與到用戶認證中,一旦某個AuthenticationHandler成功完成用戶的認證,則認證進程就到此為止,進而轉(zhuǎn)到credenti-alsToPrincipalResolvers來構(gòu)建認證結(jié)果。credentialsToPrincipalResolvers的過程也類似于此。
2.CAS的時序圖
來自: