基於數字證書的UKEY安全登錄

        基於數字證書的windows安全登錄       
 
基於數字證書的UKEY安全登錄
與身份認證技術研究
    摘  要 本文在研究身份認證技術、uKey技術及Windows系統登錄原理基礎上,提出了基於數字證書的uKey身份認證與安全登錄方案,設計了自定義登錄模塊,從而實現了使用uKey進行主機安全登錄的功能。
    關鍵詞 uKey;安全登錄;身份認證

1  引言

    用戶在訪問安全系統之前,首先經過身份認證系統識別身份,然後訪問監控模塊,系統根據用戶身份和授權情況決定用戶是否能夠訪問某個資源。因此係統安全登錄與身份認證是安全系統中的第一道關卡,也是實施訪問控制的基礎,在系統安全領域具有十分重要的作用。本文提出了基於數字證書的uKey安全登錄與身份認證方案,採用將第三方開發的uKey與用戶身份信息相結合的認證方式,保證每個用戶在登錄時具有證明其身份的唯一標誌,從而使系統通過這個惟一標誌驗證用戶身份合法性。

2  身份認證技術

    身份認證是網絡安全技術的一個重要方面。用戶在訪問安全系統之前,首先經過身份認證系統識別身份,然後訪問監控模塊,系統根據用戶身份和授權情況決定用戶是否能夠訪問某個資源,常用的口令認證方式有以下幾種:
    1)基於口令的認證方式
    基於口令的認證方式是目前在互聯網和計算機領域中最簡單、最容易實現的一種身份認證技術,也是目前應用最廣泛的認證方法。例如:操作系統及諸如郵件系統等一些應用系統的登錄和權限管理都基於口令[1],當用戶登錄計算機網絡時,需要輸入口令。計算機系統將其認證機制建立在用戶名和口令的基礎上,如果用戶將用戶名和口令告訴其它人,則計算機也將給予那個人以訪問權限[2]
    2)基於智能卡的認證方式
    智能卡(Smart Card)是法國人Roland Moreno於1970年發明的[3]。法國BULL公司首創智能卡產品,並將這項技術應用到金融、交通、醫療、身份認證等多個方面。基於智能卡的身份認證屬於通過物理設備進行身份認證的機制,該機制結合電子技術和現代密碼學知識,大大提高了基於物理設備機制的安全性。每個用戶持有一張智能卡,智能卡存儲用戶祕密信息,同時在驗證服務器中也存放該祕密信息。進行認證時,用戶輸入PIN碼(個人身份認證碼),服務器認證PIN碼,成功後即可讀出智能卡中的祕密信息,進而利用該祕密信息與主機之間進行認證。基於智能卡的認證方式是一種雙因素認證方式(PIN+智能卡),即使PIN碼或智能卡單獨被竊取,合法用戶的身份仍不會被冒充(即不能獲得訪問權)。
    3)基於生物特徵的認證方式
    生物特徵識別是一種根據人體自身所固有的生理特徵和行爲特徵來識別身份的技術,即通過計算機與光學、聲學、生物傳感器和生物統計學原理等高科技手段的密切結合,利用人體固有生理特徵(如手形、指紋、面部特徵、虹膜、視網膜等)和行爲特徵(如筆跡、聲音、步態等)來進行個人身份鑑定[4]
    生物特徵認證技術的主要應用有辨識和驗證兩種。辨識(Identification)指的是確定用戶身份,通常是在生物特徵模版庫中進行一對多匹配(One-to-Many Matching)或基於知識判別;驗證(Verification)指的是驗證用戶是否爲他所聲明的身份,通常是用單模板進行一對一匹配[5](One-to-One)。
    4) 基於數字證書的認證方式
    數字證書(Digital Certificate)是標誌一個用戶身份的一系列特徵數據,其作用類似於現實生活中的身份證[6]。國際電信聯盟的X.509建議定義了一種提供認證服務的框架。採用基於X.509證書的認證技術依賴於共同信賴的第三方來實現認證,所不同的是其採用非對稱密碼體制,實現上更加簡單明瞭。這裏的第三方是指稱爲CA(Certificate Authority)的認證機構,該認證機構負責認證用戶身份並向用戶簽發數字證書。數字證書遵循X.509標準所規定的格式,因此稱爲X.509證書。持有此證書的用戶就可以憑此證書訪問那些信任的CA服務器,通過CA服務器實現用戶身份的驗證。

3  基於數字證書的uKey安全登錄與身份認證

    Windows 2000操作系統以及微軟後續的操作系統,如Windows XP都內置了對智能卡用戶認證的支持,計算機用戶可以選擇使用傳統的用戶名、口令驗證方式進行域內用戶身份驗證,也可使用智能卡來自動完成用戶身份驗證。

3.1  uKey技術

    uKey又名智能電子密碼鑰匙,既完全繼承了已有智能卡技術的安全性,又結合了新型USB接口的數據傳輸能力。
    1)uKey簡介
    uKey是集智能卡與讀卡器於一體的USB設備,支持熱插熱拔和即插即用,體積小、重量輕、便於攜帶[7]。uKey本身作爲密鑰存儲器,自身硬件結構決定了用戶只能通過廠商編程接口訪問數據,這就保證了保存在uKey中的數字證書無法被複制,並且每一個uKey都帶有PIN碼保護,這樣uKey的硬件與PIN碼就構成了使用uKey進行身份認證的雙因子。如果用戶uKey丟失,獲得者由於不知道該硬件的PIN碼,就無法冒充合法用戶身份;如果用戶PIN碼泄露,只要保存好uKey硬件就可以保證自己的身份不被冒充。
    安全性是衆多應用(特別是網絡應用)的基礎,而實現安全性的手段一般都是通過加密算法來達到,因爲加密算法可以更好地實現數據保密性、數據完整性、身份可鑑別性以及交易不可抵賴性。加密算法安全性主要取決於密鑰的祕密性,而不必對算法保密。智能卡作爲一種有效的安全保障設備,是保存密鑰信息的最可靠手段。傳統智能卡的封裝形式需要額外的讀卡器設備,因爲設備體積較大且不便於攜帶,所以使用很不方便,另外讀卡器設備也增加了整體的成本[8]。如表1所示:uKey系列產品在完全繼承智能卡優點的同時很好地解決了傳統封裝形式的諸多不足。

表1  uKey與傳統智能卡的比較
比較項目
uKey
讀卡器+PK卡
成本
遠低於讀片器+PK卡的成本之和。
雖然PK卡成本較低,但讀卡器成本通常很高。
移動辦公
體積小、重量輕,方便隨身攜帶,非常適用於移動辦公。
讀卡器體積大,也比較重,不便隨身攜帶。
通訊速率
連接電腦主機的USB 口,通訊速率爲12M bps,是高速設備。
通訊速率一般在9600bps~115200bps之間。
多用戶
USB設備,共享方式,支持多用戶訪問。USB級聯設備,通過級聯方式,一臺電腦可以接多個uKey。
對於串口讀寫器,串口資源是獨佔的且主機串口數量有限,如果串口已經被其它設備佔用,將不能使用讀卡器。USB接口讀寫器可支持多用戶。
操作方便性
直接插在電腦主機的USB口或延長線接口上,操作極爲簡單。熱插拔設備,可以隨時插/拔uKey而不必擔心損壞。
對於串口讀寫器,電腦主機串口不支持熱插拔,經常插拔、操作不當時容易燒壞主機串口。USB讀寫器操作方便性同uKey。

    2) uKey特點
    (1)高安全性。uKey通過了國家安全管理權威部門—國密辦的技術鑑定和認可,支持國密辦認證的分組算法SSF33,也是國內唯一能同時支持ECC、RSA密碼算法的同類產品。使用基於硬件RSA算法的uKey比單純軟件實現RSA的應用更加安全可靠。敏感數據都被保存在uKey的安全存儲區域中,未授權用戶將無法接觸到這些信息。uKey的安全性還在於uKey所使用的加密算法都是被廣泛公開、業界公認並經受了多年考驗的算法。
    (2)靈活易用。使用uKey無需任何附加外部設備。用戶只需簡單地將uKey插入任何帶有USB接口的設備就可以使用uKey,使用完畢後直接拔下uKey就可以了。
    (3)造價低廉。uKey比任何傳統基於硬件的安全系統都節省開支。由於使用uKey無需任何附加設備,因此很適合大範圍發行。uKey能夠實現智能卡提供的所有功能,但是不需要智能卡讀卡器。
    (4)攜帶方便。uKey體積小,重量輕,精美時尚,可以隨身攜帶。
    (5)無縫集成。uKey提供符合業界廣泛認可的PKCS#11和Microsoft CryptoAPI兩種標準接口。任何兼容這兩種接口的應用程序,都可以立即集成uKey進行使用。uKey內置大容量智能卡安全芯片,可以同時存儲多個數字證書和用戶私鑰及其它數據。也就是說,多個PKI應用程序可以共用同一個uKey。
    (6)高可靠性。uKey使用嚴格工藝製造,可長期安全的保存用戶數據。

3.2  Windows登錄原理

    Windows 2000的登錄方式分爲兩種:一種是交互式登錄(Interactive Logon),另一種是遠程登錄[9] (Remote Logon)。交互式登錄是最典型的登錄方式,並且由大部分訪問域的用戶所使用。當用戶第一次登錄到某臺計算機時將發生交互式登錄,該過程使用登錄用戶的用戶名和密碼來確切驗證用戶真實身份。
    Windows操作系統的身份認證機制可以用Windows登錄模塊體系圖來說明。如圖1所示,Winlogon進程是Windows 2000及以上版本提供的一個支持交互式操作的組件,用於負責管理與承擔登錄相關的安全工作,包括處理用戶的登錄與註銷、啓動用戶SHELL、輸入密碼、更改密碼、鎖定與解鎖計算機等。GINA(Graphical Identification and Authentication)是一個圖形動態鏈接庫,在Winlogon進程中運行,用於提供可定製的登錄界面並對用戶進行身份驗證。LSA(Local Security Authority,本地安全認證)是在用戶模式下運行/Winnt/ System32/Lsass.exe映像的進程,負責本地系統安全策略。
圖1  Windows登錄模塊體系結構圖
    在Windows登錄過程中,如果用戶在Windows系統啓動後按下“Ctrl+Alt+Del”組合鍵,則會引起硬件中斷,該中斷信息被系統捕獲後,操作系統立即激活Winlogon進程。Winlogon進程通過調用GINA.DLL將登錄窗口(賬戶名和口令登錄提示符)展示在用戶面前。GINA.DLL在收集好用戶登錄信息後,就調用LSA的LsaLogonUser命令,將用戶登錄信息傳遞給LSA。實際上認證部分的功能是通過LSA來實現的,這三部分相互協作實現了Windows的登錄認證功能。
    缺省狀態下,Windows系統提供微軟公司自己實現的GINA.DLL—msgina.dll供Winlogon進程調用。用戶登錄前後計算機的狀態有3個,分別是LOGGED_OFF(未登錄)、LOGGED_ON(已登錄)、LOCKED(鎖定)。

3.3  msgina.dll的狀態流程

    msgina.dll的狀態流程如圖2所示,圖中部分英文是調用的函數名稱。
圖2  msgina.dll狀態流程圖
    (1)系統啓動後,首先調用WlxNegotiate函數確認該DLL是否支持當前版本的Winlogon.exe,接着調用函數WlxInitialize進行相關函數初始化。完成初始化工作後,Winlogon進程調用函數WlxDisplaySASNotice顯示歡迎用戶登錄界面,該函數還會檢測是否有自定義的SAS(Secure Attention Sequence,安全提示碼序列)出現。如果出現則通知Winlogon進程有登錄請求發出。SAS在Windows 2000下缺省爲“Ctrl+Alt+Del”,用戶也可以定義自己的SAS。
    (2)當發現有SAS事件發生時,Winlogon進程調用WlxLoggedOutSAS函數,並向下調用WlxDialogBoxParam顯示用戶登錄對話框,然後調用LSA進行驗證,如果驗證通過,Winlogon進程調用函數WlxActivateUserShell啓動用戶外殼程序。
    (3)當系統處於登錄成功且沒有鎖定狀態(LOGGED_ ON state)時,Winlogon進程接收到SAS事件時,就調用函數WlxLoggedOnSAS。
    (4)當系統處於鎖定的狀態(LOCKED state)時,Winlogon進程則調用函數WlxDisplayLockedNotice顯示一些信息,如鎖定者、鎖定時間等。當其接收到SAS事件時就調用函數WlxWkstaLockedSAS,該函數的返回值將確定工作站的狀態:仍然鎖定、解鎖或用戶註銷。
    (5)當用戶註銷時,Winlogon進程調用函數WlxLogoff,通知msgina.dll用戶的註銷操作,msgina.dll做出相應處理。當用戶需要關閉計算機時,Winlogon進程調用函數WlxShutdown,允許msgina.dll進行系統關閉前的處理。
    (6)缺省狀態下,Winlogon進程在註冊表中查找鍵值HKEY_LOCAL_MACHINE /Software/ Microsoft/Windows NT/CurrentVersion/Winlogon,如果存在GINA.DLL鍵,則Winlogon使用該鍵;如果不存在GINA.DLL鍵,則Winlogon就使用默認值msgina.dll。由於GINA動態鏈接庫可以替換,因此只要通過一個自定義GINA來替換GINA.DLL,即可實現用其它認證方式代替Windows所默認的登錄方式,例如:eKey、指紋識別等[10]

3.4  安全登錄實現原理

    利用uKey提供的安全機制,將數字證書存儲在uKey中,以實現用戶登錄及身份認證。由Windows系統登錄原理可知,要實現基於數字證書的uKey安全登錄及身份驗證,需要完成兩項工作:一是編寫自定義GINA,二是與uKey進行交互。
    1) 自定義GINA—Ginamy.dll的實現
    在GINA中,由Winlogon進程進行函數調用,通過自定義SAS可以實現對uKey設備的登錄支持。GINA中有兩個地方需要驗證用戶身份:一是系統啓動時需要驗證用戶身份;二是系統鎖定後解除鎖定時需要驗證用戶身份,其對應函數分別是WlxLoggedOutSAS和WlxWkstaLocked SAS。
    系統在沒有用戶登錄之前,Winlogon進程接收到SAS事件時調用函數WlxLoggedOutSAS,因此可在該函數中對uKey的存在與否進行判斷。
    當插入uKey時,uKey檢測窗口發現後向Winlogon進程發出登錄SAS事件,調用LogonUser函數登錄系統。在返回幾個必要的參數後,Winlogon進程調用WlxActivateUserShell函數激活用戶桌面,這樣用戶就可成功登錄到Windows系統中進行正常操作。
    在Windows使用過程中,如果用戶有事需要離開現場而拔下uKey,則應用系統獲得uKey斷開的消息,通過調用WlxSasNotify函數發送一個自定義的SAS事件;隨後Winlogon進程就調用WlxLoggedOnSAS函數進行相應的處理,通過發送返回值:WLX_SAS_ACTION_LOCK_ WKSTA實現對Windows系統桌面的鎖定。
    系統鎖定後,如果用戶重新插入uKey時,則系統通過調用WlxSasNotify函數發出一個自定義解除鎖定的SAS事件;Winlogon進程調用WlxWkstaLockedSAS函數,在驗證PIN正確後通過發送返回參數:WLX_SAS_ACTION_UNLOCK_ WKSTA即可對Windows系統桌面解鎖,允許用戶重新登錄。
    2) 與uKey進行交互
    如圖3所示,在辦公局域網中可以採用集中式的管理方案,集中配置一個身份驗證服務器,客戶端所有登錄請求都將被髮送到驗證服務器進行驗證。
圖3  身份驗證的集中式管理方案
    使用uKey進行身份認證與安全登錄主要包括以下步驟:
    1)初始化uKey
    當新用戶提出登錄申請時,管理員根據用戶需求生成數字證書,同時將數字證書和對應的密鑰對寫入一個全新的uKey中,然後將此uKey發放給用戶。密鑰存儲在uKey中特殊的文件分區裏,不能向外讀出,以保證其私密性,但可以使用該私鑰進行加密或簽名。用戶獲得自己的uKey後就可以登錄指定的機器。
    2)用戶註冊
    當客戶端第一次使用uKey進行登錄時,需要向身份認證服務器進行註冊。客戶端讀出uKey中的數字證書,同時在本地創建本地賬戶名(機器名+硬盤序列號)和密碼,經過私鑰加密後一起發送給身份驗證服務器。服務器接收到後,驗證證書的合法性,如果合法,就認爲此用戶是合法用戶,然後檢查身份信息數據庫。如果沒有此賬戶名,服務器則認爲這臺機器是第一次被登錄,需要進行註冊,就把此賬戶名和密碼加入身份信息數據庫,接着服務器向客戶端發回確認信息,客戶端收到後則認爲註冊成功。
    3)安全登錄
    用戶登錄客戶端時,首先插入uKey並將用戶信息提交到身份驗證服務器,服務器生成隨機數發回到客戶端;然後客戶端利用uKey對隨機數進行簽名併發回服務器端;最後服務器利用對應的用戶公鑰進行驗證,如果有效就認爲是合法用戶,否則拒絕登錄。具體登錄驗證流程如圖4所示。
圖4  基於uKey的安全登錄與身份認證流程

    a.用戶登錄客戶端,開啓計算機。
    b.Winlogon進程調用自定義的Ginamy.dll替換默認的msgina.dll,實現自己的身份驗證過程。
    c.Ginamy.dll通過調用uKey的API函數來檢測uKey是否插上,如未發現uKey,則提示用戶插入uKey,並拒絕登錄。
    d.一旦檢測到uKey,則彈出自定義對話框,要求用戶輸入個人PIN碼,這一過程是對持卡人身份的確認。
    e.如果驗證PIN碼正確,則可啓動認證過程(如圖4中虛線框中的認證算法)。
    f.自定義的Ginamy.dll模塊將根據認證結果返回允許或禁止用戶登錄系統。
    g.若用戶有事暫時離開而拔下uKey,則計算機被鎖定,直到用戶重新插入合法的uKey,輸入正確PIN碼,經過驗證成功後就可以重新登錄系統。

3.5 安全性分析

    安全系統自身的安全性是首先要考慮的問題,以下從四個方面對採用uKey實現身份認證的安全性進行分析:
    1)用戶私鑰的雙重保護
    用戶數字證書及個人密鑰保存在uKey中。身份驗證時,使用對稱加密算法對用戶私鑰進行加密處理。由於私鑰不通過網絡傳輸,因此攻擊者不可能從截獲的數據中獲得用戶私鑰。此外,uKey的訪問密碼只在客戶端出現,也不通過網絡傳輸。
    2)認證過程的安全性
    由於對隨機數進行簽名在uKey內部完成,用於簽名的私鑰保存在卡內固定區域,並且在簽名過程中私鑰不會被讀出到內存,任何人都無法獲得uKey私鑰,因此保證了認證過程的安全性。
    3)能抵抗重放攻擊
    由於每次身份驗證時,服務器都要發送不同的隨機數給客戶端,因此,如果攻擊者將以前截獲的簽名信息重放,則不可能認證成功;如果服務器發送的隨機數被截獲,由於攻擊者不能得到用戶私鑰也不可能將隨機數正確簽名,因此也不可能認證成功。
    4)能抵抗假冒攻擊
    由於攻擊者無法獲取用戶私鑰以及用戶uKey的PIN碼,因此無法向服務器端發送驗證請求,從而無法通過服務器的認證。

4  小結

    本文論述了身份認證技術,在研究uKey技術及Windows系統登錄原理的基礎上,提出了一種基於數字證書的uKey安全登錄與身份認證方案,完成了自定義GINA的開發,實現了基於uKey的身份認證與系統安全登錄功能。經調試運行,系統達到了對安全登錄與身份認證的目標要求。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章