|
摘 要 本文在研究身份認(rèn)證技術(shù)、uKey技術(shù)及Windows系統(tǒng)登錄原理基礎(chǔ)上,提出了基于數(shù)字證書的uKey身份認(rèn)證與安全登錄方案,設(shè)計(jì)了自定義登錄模塊,從而實(shí)現(xiàn)了使用uKey進(jìn)行主機(jī)安全登錄的功能。
關(guān)鍵詞 uKey;安全登錄;身份認(rèn)證
1 引言
用戶在訪問(wèn)安全系統(tǒng)之前,首先經(jīng)過(guò)身份認(rèn)證系統(tǒng)識(shí)別身份,然后訪問(wèn)監(jiān)控模塊,系統(tǒng)根據(jù)用戶身份和授權(quán)情況決定用戶是否能夠訪問(wèn)某個(gè)資源。因此系統(tǒng)安全登錄與身份認(rèn)證是安全系統(tǒng)中的第一道關(guān)卡,也是實(shí)施訪問(wèn)控制的基礎(chǔ),在系統(tǒng)安全領(lǐng)域具有十分重要的作用。本文提出了基于數(shù)字證書的uKey安全登錄與身份認(rèn)證方案,采用將第三方開發(fā)的uKey與用戶身份信息相結(jié)合的認(rèn)證方式,保證每個(gè)用戶在登錄時(shí)具有證明其身份的唯一標(biāo)志,從而使系統(tǒng)通過(guò)這個(gè)惟一標(biāo)志驗(yàn)證用戶身份合法性。
2 身份認(rèn)證技術(shù)
身份認(rèn)證是網(wǎng)絡(luò)安全技術(shù)的一個(gè)重要方面。用戶在訪問(wèn)安全系統(tǒng)之前,首先經(jīng)過(guò)身份認(rèn)證系統(tǒng)識(shí)別身份,然后訪問(wèn)監(jiān)控模塊,系統(tǒng)根據(jù)用戶身份和授權(quán)情況決定用戶是否能夠訪問(wèn)某個(gè)資源,常用的口令認(rèn)證方式有以下幾種:
1)基于口令的認(rèn)證方式
基于口令的認(rèn)證方式是目前在互聯(lián)網(wǎng)和計(jì)算機(jī)領(lǐng)域中最簡(jiǎn)單、最容易實(shí)現(xiàn)的一種身份認(rèn)證技術(shù),也是目前應(yīng)用最廣泛的認(rèn)證方法。例如:操作系統(tǒng)及諸如郵件系統(tǒng)等一些應(yīng)用系統(tǒng)的登錄和權(quán)限管理都基于口令[1],當(dāng)用戶登錄計(jì)算機(jī)網(wǎng)絡(luò)時(shí),需要輸入口令。計(jì)算機(jī)系統(tǒng)將其認(rèn)證機(jī)制建立在用戶名和口令的基礎(chǔ)上,如果用戶將用戶名和口令告訴其它人,則計(jì)算機(jī)也將給予那個(gè)人以訪問(wèn)權(quán)限[2]。
2)基于智能卡的認(rèn)證方式
智能卡(Smart Card)是法國(guó)人Roland Moreno于1970年發(fā)明的[3]。法國(guó)BULL公司首創(chuàng)智能卡產(chǎn)品,并將這項(xiàng)技術(shù)應(yīng)用到金融、交通、醫(yī)療、身份認(rèn)證等多個(gè)方面?;谥悄芸ǖ纳矸菡J(rèn)證屬于通過(guò)物理設(shè)備進(jìn)行身份認(rèn)證的機(jī)制,該機(jī)制結(jié)合電子技術(shù)和現(xiàn)代密碼學(xué)知識(shí),大大提高了基于物理設(shè)備機(jī)制的安全性。每個(gè)用戶持有一張智能卡,智能卡存儲(chǔ)用戶秘密信息,同時(shí)在驗(yàn)證服務(wù)器中也存放該秘密信息。進(jìn)行認(rèn)證時(shí),用戶輸入PIN碼(個(gè)人身份認(rèn)證碼),服務(wù)器認(rèn)證PIN碼,成功后即可讀出智能卡中的秘密信息,進(jìn)而利用該秘密信息與主機(jī)之間進(jìn)行認(rèn)證?;谥悄芸ǖ恼J(rèn)證方式是一種雙因素認(rèn)證方式(PIN+智能卡),即使PIN碼或智能卡單獨(dú)被竊取,合法用戶的身份仍不會(huì)被冒充(即不能獲得訪問(wèn)權(quán))。
3)基于生物特征的認(rèn)證方式
生物特征識(shí)別是一種根據(jù)人體自身所固有的生理特征和行為特征來(lái)識(shí)別身份的技術(shù),即通過(guò)計(jì)算機(jī)與光學(xué)、聲學(xué)、生物傳感器和生物統(tǒng)計(jì)學(xué)原理等高科技手段的密切結(jié)合,利用人體固有生理特征(如手形、指紋、面部特征、虹膜、視網(wǎng)膜等)和行為特征(如筆跡、聲音、步態(tài)等)來(lái)進(jìn)行個(gè)人身份鑒定[4]。
生物特征認(rèn)證技術(shù)的主要應(yīng)用有辨識(shí)和驗(yàn)證兩種。辨識(shí)(Identification)指的是確定用戶身份,通常是在生物特征模版庫(kù)中進(jìn)行一對(duì)多匹配(One-to-Many Matching)或基于知識(shí)判別;驗(yàn)證(Verification)指的是驗(yàn)證用戶是否為他所聲明的身份,通常是用單模板進(jìn)行一對(duì)一匹配[5](One-to-One)。
4) 基于數(shù)字證書的認(rèn)證方式
數(shù)字證書(Digital Certificate)是標(biāo)志一個(gè)用戶身份的一系列特征數(shù)據(jù),其作用類似于現(xiàn)實(shí)生活中的身份證[6]。國(guó)際電信聯(lián)盟的X.509建議定義了一種提供認(rèn)證服務(wù)的框架。采用基于X.509證書的認(rèn)證技術(shù)依賴于共同信賴的第三方來(lái)實(shí)現(xiàn)認(rèn)證,所不同的是其采用非對(duì)稱密碼體制,實(shí)現(xiàn)上更加簡(jiǎn)單明了。這里的第三方是指稱為CA(Certificate Authority)的認(rèn)證機(jī)構(gòu),該認(rèn)證機(jī)構(gòu)負(fù)責(zé)認(rèn)證用戶身份并向用戶簽發(fā)數(shù)字證書。數(shù)字證書遵循X.509標(biāo)準(zhǔn)所規(guī)定的格式,因此稱為X.509證書。持有此證書的用戶就可以憑此證書訪問(wèn)那些信任的CA服務(wù)器,通過(guò)CA服務(wù)器實(shí)現(xiàn)用戶身份的驗(yàn)證。
3 基于數(shù)字證書的uKey安全登錄與身份認(rèn)證
Windows 2000操作系統(tǒng)以及微軟后續(xù)的操作系統(tǒng),如Windows XP都內(nèi)置了對(duì)智能卡用戶認(rèn)證的支持,計(jì)算機(jī)用戶可以選擇使用傳統(tǒng)的用戶名、口令驗(yàn)證方式進(jìn)行域內(nèi)用戶身份驗(yàn)證,也可使用智能卡來(lái)自動(dòng)完成用戶身份驗(yàn)證。
3.1 uKey技術(shù)
uKey又名智能電子密碼鑰匙,既完全繼承了已有智能卡技術(shù)的安全性,又結(jié)合了新型USB接口的數(shù)據(jù)傳輸能力。
1)uKey簡(jiǎn)介
uKey是集智能卡與讀卡器于一體的USB設(shè)備,支持熱插熱拔和即插即用,體積小、重量輕、便于攜帶[7]。uKey本身作為密鑰存儲(chǔ)器,自身硬件結(jié)構(gòu)決定了用戶只能通過(guò)廠商編程接口訪問(wèn)數(shù)據(jù),這就保證了保存在uKey中的數(shù)字證書無(wú)法被復(fù)制,并且每一個(gè)uKey都帶有PIN碼保護(hù),這樣uKey的硬件與PIN碼就構(gòu)成了使用uKey進(jìn)行身份認(rèn)證的雙因子。如果用戶uKey丟失,獲得者由于不知道該硬件的PIN碼,就無(wú)法冒充合法用戶身份;如果用戶PIN碼泄露,只要保存好uKey硬件就可以保證自己的身份不被冒充。
安全性是眾多應(yīng)用(特別是網(wǎng)絡(luò)應(yīng)用)的基礎(chǔ),而實(shí)現(xiàn)安全性的手段一般都是通過(guò)加密算法來(lái)達(dá)到,因?yàn)榧用芩惴梢愿玫貙?shí)現(xiàn)數(shù)據(jù)保密性、數(shù)據(jù)完整性、身份可鑒別性以及交易不可抵賴性。加密算法安全性主要取決于密鑰的秘密性,而不必對(duì)算法保密。智能卡作為一種有效的安全保障設(shè)備,是保存密鑰信息的最可靠手段。傳統(tǒng)智能卡的封裝形式需要額外的讀卡器設(shè)備,因?yàn)樵O(shè)備體積較大且不便于攜帶,所以使用很不方便,另外讀卡器設(shè)備也增加了整體的成本[8]。如表1所示:uKey系列產(chǎn)品在完全繼承智能卡優(yōu)點(diǎn)的同時(shí)很好地解決了傳統(tǒng)封裝形式的諸多不足。
表1 uKey與傳統(tǒng)智能卡的比較
| 比較項(xiàng)目 |
uKey |
讀卡器+PK卡 |
| 成本 |
遠(yuǎn)低于讀片器+PK卡的成本之和。 |
雖然PK卡成本較低,但讀卡器成本通常很高。 |
| 移動(dòng)辦公 |
體積小、重量輕,方便隨身攜帶,非常適用于移動(dòng)辦公。 |
讀卡器體積大,也比較重,不便隨身攜帶。 |
| 通訊速率 |
連接電腦主機(jī)的USB 口,通訊速率為12M bps,是高速設(shè)備。 |
通訊速率一般在9600bps~115200bps之間。 |
| 多用戶 |
USB設(shè)備,共享方式,支持多用戶訪問(wèn)。USB級(jí)聯(lián)設(shè)備,通過(guò)級(jí)聯(lián)方式,一臺(tái)電腦可以接多個(gè)uKey。 |
對(duì)于串口讀寫器,串口資源是獨(dú)占的且主機(jī)串口數(shù)量有限,如果串口已經(jīng)被其它設(shè)備占用,將不能使用讀卡器。USB接口讀寫器可支持多用戶。 |
| 操作方便性 |
直接插在電腦主機(jī)的USB口或延長(zhǎng)線接口上,操作極為簡(jiǎn)單。熱插拔設(shè)備,可以隨時(shí)插/拔uKey而不必?fù)?dān)心損壞。 |
對(duì)于串口讀寫器,電腦主機(jī)串口不支持熱插拔,經(jīng)常插拔、操作不當(dāng)時(shí)容易燒壞主機(jī)串口。USB讀寫器操作方便性同uKey。 |
2) uKey特點(diǎn)
(1)高安全性。uKey通過(guò)了國(guó)家安全管理權(quán)威部門—國(guó)密辦的技術(shù)鑒定和認(rèn)可,支持國(guó)密辦認(rèn)證的分組算法SSF33,也是國(guó)內(nèi)唯一能同時(shí)支持ECC、RSA密碼算法的同類產(chǎn)品。使用基于硬件RSA算法的uKey比單純軟件實(shí)現(xiàn)RSA的應(yīng)用更加安全可靠。敏感數(shù)據(jù)都被保存在uKey的安全存儲(chǔ)區(qū)域中,未授權(quán)用戶將無(wú)法接觸到這些信息。uKey的安全性還在于uKey所使用的加密算法都是被廣泛公開、業(yè)界公認(rèn)并經(jīng)受了多年考驗(yàn)的算法。
(2)靈活易用。使用uKey無(wú)需任何附加外部設(shè)備。用戶只需簡(jiǎn)單地將uKey插入任何帶有USB接口的設(shè)備就可以使用uKey,使用完畢后直接拔下uKey就可以了。
(3)造價(jià)低廉。uKey比任何傳統(tǒng)基于硬件的安全系統(tǒng)都節(jié)省開支。由于使用uKey無(wú)需任何附加設(shè)備,因此很適合大范圍發(fā)行。uKey能夠?qū)崿F(xiàn)智能卡提供的所有功能,但是不需要智能卡讀卡器。
(4)攜帶方便。uKey體積小,重量輕,精美時(shí)尚,可以隨身攜帶。
(5)無(wú)縫集成。uKey提供符合業(yè)界廣泛認(rèn)可的PKCS#11和Microsoft CryptoAPI兩種標(biāo)準(zhǔn)接口。任何兼容這兩種接口的應(yīng)用程序,都可以立即集成uKey進(jìn)行使用。uKey內(nèi)置大容量智能卡安全芯片,可以同時(shí)存儲(chǔ)多個(gè)數(shù)字證書和用戶私鑰及其它數(shù)據(jù)。也就是說(shuō),多個(gè)PKI應(yīng)用程序可以共用同一個(gè)uKey。
(6)高可靠性。uKey使用嚴(yán)格工藝制造,可長(zhǎng)期安全的保存用戶數(shù)據(jù)。
3.2 Windows登錄原理
Windows 2000的登錄方式分為兩種:一種是交互式登錄(Interactive Logon),另一種是遠(yuǎn)程登錄[9] (Remote Logon)。交互式登錄是最典型的登錄方式,并且由大部分訪問(wèn)域的用戶所使用。當(dāng)用戶第一次登錄到某臺(tái)計(jì)算機(jī)時(shí)將發(fā)生交互式登錄,該過(guò)程使用登錄用戶的用戶名和密碼來(lái)確切驗(yàn)證用戶真實(shí)身份。
Windows操作系統(tǒng)的身份認(rèn)證機(jī)制可以用Windows登錄模塊體系圖來(lái)說(shuō)明。如圖1所示,Winlogon進(jìn)程是Windows 2000及以上版本提供的一個(gè)支持交互式操作的組件,用于負(fù)責(zé)管理與承擔(dān)登錄相關(guān)的安全工作,包括處理用戶的登錄與注銷、啟動(dòng)用戶SHELL、輸入密碼、更改密碼、鎖定與解鎖計(jì)算機(jī)等。GINA(Graphical Identification and Authentication)是一個(gè)圖形動(dòng)態(tài)鏈接庫(kù),在Winlogon進(jìn)程中運(yùn)行,用于提供可定制的登錄界面并對(duì)用戶進(jìn)行身份驗(yàn)證。LSA(Local
Security Authority,本地安全認(rèn)證)是在用戶模式下運(yùn)行/Winnt/ System32/Lsass.exe映像的進(jìn)程,負(fù)責(zé)本地系統(tǒng)安全策略。
圖1 Windows登錄模塊體系結(jié)構(gòu)圖
在Windows登錄過(guò)程中,如果用戶在Windows系統(tǒng)啟動(dòng)后按下“Ctrl+Alt+Del”組合鍵,則會(huì)引起硬件中斷,該中斷信息被系統(tǒng)捕獲后,操作系統(tǒng)立即激活Winlogon進(jìn)程。Winlogon進(jìn)程通過(guò)調(diào)用GINA.DLL將登錄窗口(賬戶名和口令登錄提示符)展示在用戶面前。GINA.DLL在收集好用戶登錄信息后,就調(diào)用LSA的LsaLogonUser命令,將用戶登錄信息傳遞給LSA。實(shí)際上認(rèn)證部分的功能是通過(guò)LSA來(lái)實(shí)現(xiàn)的,這三部分相互協(xié)作實(shí)現(xiàn)了Windows的登錄認(rèn)證功能。
缺省狀態(tài)下,Windows系統(tǒng)提供微軟公司自己實(shí)現(xiàn)的GINA.DLL—msgina.dll供Winlogon進(jìn)程調(diào)用。用戶登錄前后計(jì)算機(jī)的狀態(tài)有3個(gè),分別是LOGGED_OFF(未登錄)、LOGGED_ON(已登錄)、LOCKED(鎖定)。
3.3 msgina.dll的狀態(tài)流程
msgina.dll的狀態(tài)流程如圖2所示,圖中部分英文是調(diào)用的函數(shù)名稱。
圖2 msgina.dll狀態(tài)流程圖
(1)系統(tǒng)啟動(dòng)后,首先調(diào)用WlxNegotiate函數(shù)確認(rèn)該DLL是否支持當(dāng)前版本的Winlogon.exe,接著調(diào)用函數(shù)WlxInitialize進(jìn)行相關(guān)函數(shù)初始化。完成初始化工作后,Winlogon進(jìn)程調(diào)用函數(shù)WlxDisplaySASNotice顯示歡迎用戶登錄界面,該函數(shù)還會(huì)檢測(cè)是否有自定義的SAS(Secure Attention Sequence,安全提示碼序列)出現(xiàn)。如果出現(xiàn)則通知Winlogon進(jìn)程有登錄請(qǐng)求發(fā)出。SAS在Windows
2000下缺省為“Ctrl+Alt+Del”,用戶也可以定義自己的SAS。
(2)當(dāng)發(fā)現(xiàn)有SAS事件發(fā)生時(shí),Winlogon進(jìn)程調(diào)用WlxLoggedOutSAS函數(shù),并向下調(diào)用WlxDialogBoxParam顯示用戶登錄對(duì)話框,然后調(diào)用LSA進(jìn)行驗(yàn)證,如果驗(yàn)證通過(guò),Winlogon進(jìn)程調(diào)用函數(shù)WlxActivateUserShell啟動(dòng)用戶外殼程序。
(3)當(dāng)系統(tǒng)處于登錄成功且沒(méi)有鎖定狀態(tài)(LOGGED_ ON state)時(shí),Winlogon進(jìn)程接收到SAS事件時(shí),就調(diào)用函數(shù)WlxLoggedOnSAS。
(4)當(dāng)系統(tǒng)處于鎖定的狀態(tài)(LOCKED state)時(shí),Winlogon進(jìn)程則調(diào)用函數(shù)WlxDisplayLockedNotice顯示一些信息,如鎖定者、鎖定時(shí)間等。當(dāng)其接收到SAS事件時(shí)就調(diào)用函數(shù)WlxWkstaLockedSAS,該函數(shù)的返回值將確定工作站的狀態(tài):仍然鎖定、解鎖或用戶注銷。
(5)當(dāng)用戶注銷時(shí),Winlogon進(jìn)程調(diào)用函數(shù)WlxLogoff,通知msgina.dll用戶的注銷操作,msgina.dll做出相應(yīng)處理。當(dāng)用戶需要關(guān)閉計(jì)算機(jī)時(shí),Winlogon進(jìn)程調(diào)用函數(shù)WlxShutdown,允許msgina.dll進(jìn)行系統(tǒng)關(guān)閉前的處理。
(6)缺省狀態(tài)下,Winlogon進(jìn)程在注冊(cè)表中查找鍵值HKEY_LOCAL_MACHINE /Software/ Microsoft/Windows NT/CurrentVersion/Winlogon,如果存在GINA.DLL鍵,則Winlogon使用該鍵;如果不存在GINA.DLL鍵,則Winlogon就使用默認(rèn)值msgina.dll。由于GINA動(dòng)態(tài)鏈接庫(kù)可以替換,因此只要通過(guò)一個(gè)自定義GINA來(lái)替換GINA.DLL,即可實(shí)現(xiàn)用其它認(rèn)證方式代替Windows所默認(rèn)的登錄方式,例如:eKey、指紋識(shí)別等[10]。
3.4 安全登錄實(shí)現(xiàn)原理
利用uKey提供的安全機(jī)制,將數(shù)字證書存儲(chǔ)在uKey中,以實(shí)現(xiàn)用戶登錄及身份認(rèn)證。由Windows系統(tǒng)登錄原理可知,要實(shí)現(xiàn)基于數(shù)字證書的uKey安全登錄及身份驗(yàn)證,需要完成兩項(xiàng)工作:一是編寫自定義GINA,二是與uKey進(jìn)行交互。
1) 自定義GINA—Ginamy.dll的實(shí)現(xiàn)
在GINA中,由Winlogon進(jìn)程進(jìn)行函數(shù)調(diào)用,通過(guò)自定義SAS可以實(shí)現(xiàn)對(duì)uKey設(shè)備的登錄支持。GINA中有兩個(gè)地方需要驗(yàn)證用戶身份:一是系統(tǒng)啟動(dòng)時(shí)需要驗(yàn)證用戶身份;二是系統(tǒng)鎖定后解除鎖定時(shí)需要驗(yàn)證用戶身份,其對(duì)應(yīng)函數(shù)分別是WlxLoggedOutSAS和WlxWkstaLocked SAS。
系統(tǒng)在沒(méi)有用戶登錄之前,Winlogon進(jìn)程接收到SAS事件時(shí)調(diào)用函數(shù)WlxLoggedOutSAS,因此可在該函數(shù)中對(duì)uKey的存在與否進(jìn)行判斷。
當(dāng)插入uKey時(shí),uKey檢測(cè)窗口發(fā)現(xiàn)后向Winlogon進(jìn)程發(fā)出登錄SAS事件,調(diào)用LogonUser函數(shù)登錄系統(tǒng)。在返回幾個(gè)必要的參數(shù)后,Winlogon進(jìn)程調(diào)用WlxActivateUserShell函數(shù)激活用戶桌面,這樣用戶就可成功登錄到Windows系統(tǒng)中進(jìn)行正常操作。
在Windows使用過(guò)程中,如果用戶有事需要離開現(xiàn)場(chǎng)而拔下uKey,則應(yīng)用系統(tǒng)獲得uKey斷開的消息,通過(guò)調(diào)用WlxSasNotify函數(shù)發(fā)送一個(gè)自定義的SAS事件;隨后Winlogon進(jìn)程就調(diào)用WlxLoggedOnSAS函數(shù)進(jìn)行相應(yīng)的處理,通過(guò)發(fā)送返回值:WLX_SAS_ACTION_LOCK_ WKSTA實(shí)現(xiàn)對(duì)Windows系統(tǒng)桌面的鎖定。
系統(tǒng)鎖定后,如果用戶重新插入uKey時(shí),則系統(tǒng)通過(guò)調(diào)用WlxSasNotify函數(shù)發(fā)出一個(gè)自定義解除鎖定的SAS事件;Winlogon進(jìn)程調(diào)用WlxWkstaLockedSAS函數(shù),在驗(yàn)證PIN正確后通過(guò)發(fā)送返回參數(shù):WLX_SAS_ACTION_UNLOCK_ WKSTA即可對(duì)Windows系統(tǒng)桌面解鎖,允許用戶重新登錄。
2) 與uKey進(jìn)行交互
如圖3所示,在辦公局域網(wǎng)中可以采用集中式的管理方案,集中配置一個(gè)身份驗(yàn)證服務(wù)器,客戶端所有登錄請(qǐng)求都將被發(fā)送到驗(yàn)證服務(wù)器進(jìn)行驗(yàn)證。
圖3 身份驗(yàn)證的集中式管理方案
使用uKey進(jìn)行身份認(rèn)證與安全登錄主要包括以下步驟:
1)初始化uKey
當(dāng)新用戶提出登錄申請(qǐng)時(shí),管理員根據(jù)用戶需求生成數(shù)字證書,同時(shí)將數(shù)字證書和對(duì)應(yīng)的密鑰對(duì)寫入一個(gè)全新的uKey中,然后將此uKey發(fā)放給用戶。密鑰存儲(chǔ)在uKey中特殊的文件分區(qū)里,不能向外讀出,以保證其私密性,但可以使用該私鑰進(jìn)行加密或簽名。用戶獲得自己的uKey后就可以登錄指定的機(jī)器。
2)用戶注冊(cè)
當(dāng)客戶端第一次使用uKey進(jìn)行登錄時(shí),需要向身份認(rèn)證服務(wù)器進(jìn)行注冊(cè)??蛻舳俗x出uKey中的數(shù)字證書,同時(shí)在本地創(chuàng)建本地賬戶名(機(jī)器名+硬盤序列號(hào))和密碼,經(jīng)過(guò)私鑰加密后一起發(fā)送給身份驗(yàn)證服務(wù)器。服務(wù)器接收到后,驗(yàn)證證書的合法性,如果合法,就認(rèn)為此用戶是合法用戶,然后檢查身份信息數(shù)據(jù)庫(kù)。如果沒(méi)有此賬戶名,服務(wù)器則認(rèn)為這臺(tái)機(jī)器是第一次被登錄,需要進(jìn)行注冊(cè),就把此賬戶名和密碼加入身份信息數(shù)據(jù)庫(kù),接著服務(wù)器向客戶端發(fā)回確認(rèn)信息,客戶端收到后則認(rèn)為注冊(cè)成功。
3)安全登錄
用戶登錄客戶端時(shí),首先插入uKey并將用戶信息提交到身份驗(yàn)證服務(wù)器,服務(wù)器生成隨機(jī)數(shù)發(fā)回到客戶端;然后客戶端利用uKey對(duì)隨機(jī)數(shù)進(jìn)行簽名并發(fā)回服務(wù)器端;最后服務(wù)器利用對(duì)應(yīng)的用戶公鑰進(jìn)行驗(yàn)證,如果有效就認(rèn)為是合法用戶,否則拒絕登錄。具體登錄驗(yàn)證流程如圖4所示。
圖4 基于uKey的安全登錄與身份認(rèn)證流程
a.用戶登錄客戶端,開啟計(jì)算機(jī)。
b.Winlogon進(jìn)程調(diào)用自定義的Ginamy.dll替換默認(rèn)的msgina.dll,實(shí)現(xiàn)自己的身份驗(yàn)證過(guò)程。
c.Ginamy.dll通過(guò)調(diào)用uKey的API函數(shù)來(lái)檢測(cè)uKey是否插上,如未發(fā)現(xiàn)uKey,則提示用戶插入uKey,并拒絕登錄。
d.一旦檢測(cè)到uKey,則彈出自定義對(duì)話框,要求用戶輸入個(gè)人PIN碼,這一過(guò)程是對(duì)持卡人身份的確認(rèn)。
e.如果驗(yàn)證PIN碼正確,則可啟動(dòng)認(rèn)證過(guò)程(如圖4中虛線框中的認(rèn)證算法)。
f.自定義的Ginamy.dll模塊將根據(jù)認(rèn)證結(jié)果返回允許或禁止用戶登錄系統(tǒng)。
g.若用戶有事暫時(shí)離開而拔下uKey,則計(jì)算機(jī)被鎖定,直到用戶重新插入合法的uKey,輸入正確PIN碼,經(jīng)過(guò)驗(yàn)證成功后就可以重新登錄系統(tǒng)。
3.5 安全性分析
安全系統(tǒng)自身的安全性是首先要考慮的問(wèn)題,以下從四個(gè)方面對(duì)采用uKey實(shí)現(xiàn)身份認(rèn)證的安全性進(jìn)行分析:
1)用戶私鑰的雙重保護(hù)
用戶數(shù)字證書及個(gè)人密鑰保存在uKey中。身份驗(yàn)證時(shí),使用對(duì)稱加密算法對(duì)用戶私鑰進(jìn)行加密處理。由于私鑰不通過(guò)網(wǎng)絡(luò)傳輸,因此攻擊者不可能從截獲的數(shù)據(jù)中獲得用戶私鑰。此外,uKey的訪問(wèn)密碼只在客戶端出現(xiàn),也不通過(guò)網(wǎng)絡(luò)傳輸。
2)認(rèn)證過(guò)程的安全性
由于對(duì)隨機(jī)數(shù)進(jìn)行簽名在uKey內(nèi)部完成,用于簽名的私鑰保存在卡內(nèi)固定區(qū)域,并且在簽名過(guò)程中私鑰不會(huì)被讀出到內(nèi)存,任何人都無(wú)法獲得uKey私鑰,因此保證了認(rèn)證過(guò)程的安全性。
3)能抵抗重放攻擊
由于每次身份驗(yàn)證時(shí),服務(wù)器都要發(fā)送不同的隨機(jī)數(shù)給客戶端,因此,如果攻擊者將以前截獲的簽名信息重放,則不可能認(rèn)證成功;如果服務(wù)器發(fā)送的隨機(jī)數(shù)被截獲,由于攻擊者不能得到用戶私鑰也不可能將隨機(jī)數(shù)正確簽名,因此也不可能認(rèn)證成功。
4)能抵抗假冒攻擊
由于攻擊者無(wú)法獲取用戶私鑰以及用戶uKey的PIN碼,因此無(wú)法向服務(wù)器端發(fā)送驗(yàn)證請(qǐng)求,從而無(wú)法通過(guò)服務(wù)器的認(rèn)證。
4 小結(jié)
本文論述了身份認(rèn)證技術(shù),在研究uKey技術(shù)及Windows系統(tǒng)登錄原理的基礎(chǔ)上,提出了一種基于數(shù)字證書的uKey安全登錄與身份認(rèn)證方案,完成了自定義GINA的開發(fā),實(shí)現(xiàn)了基于uKey的身份認(rèn)證與系統(tǒng)安全登錄功能。經(jīng)調(diào)試運(yùn)行,系統(tǒng)達(dá)到了對(duì)安全登錄與身份認(rèn)證的目標(biāo)要求。
|