駱 靜,馬瀟瀟
(南京工業(yè)職業(yè)技術(shù)學(xué)院 能源與電氣工程學(xué)院,江蘇 南京 210023)
隨著辦公自動(dòng)化(Office Antomation,OA)系統(tǒng)使用量的增大,識(shí)別使用者的身份就被提升到更加重要的位置,它是確保OA系統(tǒng)安全的基礎(chǔ)和關(guān)鍵。在實(shí)際應(yīng)用中,許多網(wǎng)絡(luò)信息系統(tǒng)都會(huì)要求使用者在使用系統(tǒng)之前,提供一些相關(guān)信息用以實(shí)現(xiàn)對(duì)使用者的身份認(rèn)證。用戶(hù)身份認(rèn)證最常見(jiàn)的是靜態(tài)口令,方便、簡(jiǎn)潔,但存在很多缺點(diǎn),不能有效抵抗口令竊取、偽造主機(jī)攻擊[1]、重放攻擊[2]和字典攻擊。
本文提出了在OA系統(tǒng)中使用一種基于USBKEY的身份認(rèn)證技術(shù)[3],著重介紹這種技術(shù)的實(shí)現(xiàn)過(guò)程。
USBKey是一種USB接口的硬件設(shè)備,內(nèi)置USB控制器、微處理器CPU、存儲(chǔ)器和時(shí)鐘[4]。
USB控制器負(fù)責(zé)識(shí)別PIN碼(個(gè)人識(shí)別碼),以及整個(gè)USBKey的驅(qū)動(dòng),其中PIN碼用于保證用戶(hù)的使用權(quán),用戶(hù)只有同時(shí)取得了USBKey和用戶(hù)PIN碼,才可以登錄系統(tǒng),因此,基于USBKey的身份認(rèn)證實(shí)際構(gòu)成了“PIN碼+USBKey”的雙因素認(rèn)證。
存儲(chǔ)器中存放著用戶(hù)的認(rèn)證信息,例如用戶(hù)的私鑰以及數(shù)字證書(shū)。USBKey硬件內(nèi)部生成公私鑰對(duì),實(shí)現(xiàn)數(shù)字簽名,私鑰永不導(dǎo)出,利用USBKey內(nèi)置的公鑰算法實(shí)現(xiàn)對(duì)用戶(hù)身份的認(rèn)證。由于用戶(hù)私鑰保存在密碼鎖中,理論上使用任何方式都無(wú)法讀取,因此保證了用戶(hù)認(rèn)證的安全性[5]。
時(shí)鐘用于對(duì)連接狀態(tài)進(jìn)行監(jiān)測(cè)。
微處理器CPU負(fù)責(zé)處理HASH函數(shù)等的計(jì)算和控制,可以實(shí)現(xiàn)加解密和簽名的各種算法,加解密運(yùn)算在USBKey內(nèi)進(jìn)行,保證了密鑰不會(huì)出現(xiàn)在計(jì)算機(jī)內(nèi)存中,從而杜絕了用戶(hù)密鑰被黑客截取的可能性。
在使用時(shí),USBKey是通過(guò)USB接口和計(jì)算機(jī)連接,然后將認(rèn)證信息發(fā)給認(rèn)證方。
本文設(shè)計(jì)的OA系統(tǒng)的身份認(rèn)證使用USBKey,實(shí)現(xiàn)了統(tǒng)一身份認(rèn)證管理。圖1為身份認(rèn)證方案的系統(tǒng)結(jié)構(gòu)圖,整個(gè)體系共分為三個(gè)層次。
第一層為服務(wù)層,通過(guò)存儲(chǔ)在USBKey中的用戶(hù)信息實(shí)現(xiàn),為需要高安全等級(jí)的用戶(hù)提供更為可靠的認(rèn)證手段以及對(duì)存儲(chǔ)本機(jī)的重要信息進(jìn)行加密處理。用戶(hù)將私鑰的重要信息存儲(chǔ)在USBKey中,使用該USBKey來(lái)表征其合法身份。
第二層為中間層,任意一個(gè)USBKey都是唯一的,它與用戶(hù)的身份綁定,代表唯一的用戶(hù)。用戶(hù)使用USBKey中所包含的數(shù)字證書(shū),通過(guò)認(rèn)證網(wǎng)關(guān)與證書(shū)(CA)服務(wù)器進(jìn)行通信。以實(shí)現(xiàn)用戶(hù)身份的鑒別。這樣,可以使非法用戶(hù)無(wú)權(quán)訪(fǎng)問(wèn)網(wǎng)絡(luò),而合法用戶(hù)只能查看相應(yīng)權(quán)限的信息。
第三層為OA系統(tǒng)應(yīng)用層,主要包括CA服務(wù)器和證書(shū)管理終端兩個(gè)部分,這是整個(gè)系統(tǒng)實(shí)現(xiàn)的基礎(chǔ)。CA服務(wù)器主要實(shí)現(xiàn)用戶(hù)證書(shū)信息的生成、存儲(chǔ)、備份等。證書(shū)管理終端實(shí)現(xiàn)用戶(hù)信息的注冊(cè)以及將用戶(hù)證書(shū)信息寫(xiě)入U(xiǎn)SBKey中,提供給用戶(hù)使用,并實(shí)現(xiàn)用戶(hù)證書(shū)的更新、注銷(xiāo)、恢復(fù)以及相關(guān)信息的維護(hù)等。
圖1 身份認(rèn)證系統(tǒng)結(jié)構(gòu)圖
USBKey運(yùn)用協(xié)同的“非對(duì)稱(chēng)挑戰(zhàn)響應(yīng)”機(jī)制,于服務(wù)器端和客戶(hù)端嵌入U(xiǎn)SBKey的接口規(guī)范功能,動(dòng)態(tài)生成隨機(jī)數(shù)及施行簽名驗(yàn)證,再利用USBKey的軟件和硬件配合操作,實(shí)現(xiàn)自動(dòng)的“非對(duì)稱(chēng)挑戰(zhàn)響應(yīng)”的認(rèn)證方案,從而形成安全認(rèn)證機(jī)制,挫敗一系列的攻擊行為。
USBKey在PC上工作時(shí),其應(yīng)用模式如表1所示可以分為五層,其中:
1.USBKey終端程序。
既是一個(gè)信息安防應(yīng)用的操作程序,也是USBKey硬件的設(shè)備驅(qū)動(dòng)程序和功能驅(qū)動(dòng)程序。
2.編程接口(API)庫(kù)。
以動(dòng)態(tài)鏈接庫(kù)的形式,為應(yīng)用程序提供應(yīng)用編程接口。同一種編碼版本的庫(kù)文件既適用于A(yíng)NSI(多字節(jié))編碼,也適用于UNICODE(寬字符)編碼。
3.功能測(cè)試程序。
對(duì)USBKey的API接口函數(shù),直觀(guān)地進(jìn)行測(cè)試驗(yàn)證。
表1 USBKey在PC機(jī)上的應(yīng)用模式
該身份認(rèn)證方案的設(shè)計(jì)思想如下:
一方面,于目標(biāo)應(yīng)用系統(tǒng)的服務(wù)器端,嵌入U(xiǎn)SBKEY的接口規(guī)范功能。預(yù)先在USBKey和服務(wù)器中存儲(chǔ)一個(gè)證明用戶(hù)身份的密鑰,當(dāng)需要在網(wǎng)絡(luò)上驗(yàn)證用戶(hù)身份時(shí),先由客戶(hù)端向服務(wù)器發(fā)出一個(gè)驗(yàn)證請(qǐng)求。服務(wù)器接到此請(qǐng)求后生成一個(gè)隨機(jī)數(shù)回傳給客戶(hù)端的USBKey,以供加密簽名,此為“挑戰(zhàn)”;USBKey使用該隨機(jī)數(shù)與存儲(chǔ)在USBKey中的密鑰進(jìn)行單向散列(HASH)運(yùn)算得到一個(gè)字符串長(zhǎng)256的運(yùn)算結(jié)果作為認(rèn)證證據(jù)傳送給服務(wù)器,此為“響應(yīng)”。另一方面,目標(biāo)應(yīng)用系統(tǒng)的服務(wù)器端,則調(diào)用所嵌入的USBKEY接口規(guī)范功能。服務(wù)器使用該隨機(jī)數(shù)與存儲(chǔ)在服務(wù)器數(shù)據(jù)庫(kù)中的該客戶(hù)密鑰進(jìn)行單向散列運(yùn)算,由于單向散列運(yùn)算具有不可逆性,如果服務(wù)器的運(yùn)算結(jié)果與客戶(hù)端傳回的響應(yīng)結(jié)果相同,則認(rèn)為客戶(hù)端是一個(gè)合法用戶(hù)。具體的認(rèn)證方案流程如圖2所示。
圖2 “非對(duì)稱(chēng)挑戰(zhàn)響應(yīng)”認(rèn)證執(zhí)行圖
基于USBKey身份認(rèn)證模塊的函數(shù)實(shí)現(xiàn)分三部分。首先是初始化函數(shù),如Initialize、CheckStatus、SetEnvironment、GetLastErrorDescription、Driver-Window、RegWindowMessage和 UnregWindowMessage等函數(shù),分別完成對(duì)USBKey的設(shè)備初始化、狀態(tài)查詢(xún)和環(huán)境設(shè)置等操作;第二部分為密碼和加密密鑰的操作類(lèi)函數(shù),如 EncryptKey、SetPIN、CheckPIN和SetSysPassword等;第三部分是數(shù)據(jù)的輸入輸出操作函數(shù),如 EncryptData、EncryptText、DecryptData、DecryptText、EncryptStreamFile 和 DecryptStreamFile等。
由于文章篇幅所限,此處對(duì)關(guān)鍵函數(shù)Check-PIN的調(diào)用進(jìn)行函數(shù)的實(shí)現(xiàn)與分析,函數(shù)代碼如下所示:
此函數(shù)功能對(duì)客戶(hù)端發(fā)送給服務(wù)器端的個(gè)人識(shí)別號(hào)(PIN)進(jìn)行檢驗(yàn),參數(shù)dwPIN為外部輸入的PIN值,取值范圍0到0xFFFFFFFF(4字節(jié)位全1),返回值1表示正確,小于0表示失敗,-1表示USBKey未接入,-2表示USBKey無(wú)效,-3表示USBKey驅(qū)動(dòng)程序未啟動(dòng),-5表示存取出錯(cuò),-6表示PIN錯(cuò)誤。
在OA系統(tǒng)的檢驗(yàn)界面,用戶(hù)可以輸入PIN值提交服務(wù)器系統(tǒng)檢驗(yàn),調(diào)用此函數(shù)接口以決定是否授予使用權(quán)。從函數(shù)注釋中可以看出個(gè)人識(shí)別號(hào)的檢驗(yàn)過(guò)程是調(diào)用驅(qū)動(dòng)函數(shù)MK_CheckPIN傳入的,有硬件進(jìn)行直接檢驗(yàn),已完成關(guān)鍵的身份驗(yàn)證功能。
基于USBKey身份認(rèn)證技術(shù)為辦公自動(dòng)化系統(tǒng)的安全登錄提供了良好的解決方法。其優(yōu)點(diǎn)是:
一方面,從研發(fā)角度,提供了一整套USBKey接口A(yíng)PI,為OA系統(tǒng)以及其他應(yīng)用系統(tǒng)提供了應(yīng)用編程接口,并可以直觀(guān)地進(jìn)行功能測(cè)試驗(yàn)證;
另一方面,從安全角度,USBKey具有物理安全性,首先由于加密簽名過(guò)程是在USBKEY硬件內(nèi)部封閉進(jìn)行,USBKEY硬件的固有私密鑰足夠長(zhǎng),又不可讀取、不會(huì)泄露,而只輸出加密簽名后的結(jié)果數(shù)據(jù),因此,木馬程序既無(wú)從盜取私密鑰,又無(wú)法從加密簽名數(shù)據(jù)反向推演出私密鑰;其次,沒(méi)有該USBKey,則不能訪(fǎng)問(wèn)系統(tǒng)資源,從而使得OA系統(tǒng)在訪(fǎng)問(wèn)控制方面有了雙重的安全保障。
OA系統(tǒng)的安全性問(wèn)題是目前信息技術(shù)領(lǐng)域研究的一個(gè)熱門(mén)問(wèn)題,這個(gè)問(wèn)題解決的成功與否,直接關(guān)系到各種應(yīng)用服務(wù)能否順利開(kāi)展,關(guān)系到計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)能否安全、可靠的運(yùn)行。本文在對(duì)目前OA系統(tǒng)進(jìn)行身份認(rèn)證常見(jiàn)技術(shù)進(jìn)行了介紹和分析后,提出了一種基于USBKey的身份認(rèn)證技術(shù),并對(duì)該技術(shù)進(jìn)行了較為詳盡的描述。
[1] 王崇霞,朱艷琴.一種動(dòng)態(tài)口令身份認(rèn)證協(xié)議的設(shè)計(jì)與研究[J].計(jì)算機(jī)工程與應(yīng)用,2010,46(18):71-73.
[2] 曹喆.基于USBKEY的身份認(rèn)證機(jī)制的研究與實(shí)現(xiàn)[D].上海:東華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,2010.
[3] 徐遠(yuǎn)航.USB Key身份認(rèn)證產(chǎn)品的產(chǎn)生與發(fā)展[J].計(jì)算機(jī)安全,2004(8):44-45.
[4] 徐寧,趙彬.基于 USBKEY的 BIOS系統(tǒng)安全解決方案[J].計(jì)算機(jī)工程與應(yīng)用,2006,36(8):28-31.
[5] MAX密碼金凱用戶(hù)使用手冊(cè)[J].深圳金瀾漢源科技有限公司,2006.