Windows操作系統的密碼解決方案
摘 要 本文從密碼學(xué)的角度對Windows操作系統進(jìn)行了分析,指出了Windows操作系統是如何通過(guò)程序來(lái)實(shí)現密碼安全功能的,并描述了Windows操作系統的安全特征及實(shí)現用戶(hù)認證的技術(shù)細節。
本文引用地址:http://dyxdggzs.com/article/202142.htm關(guān)鍵詞 CSP;MS-CAPI;數字證書(shū);ActiveX控件;COM組件;NTLM;域控制器
1 引言 在安全方面,微軟開(kāi)發(fā)并免費提供一套密碼接口A(yíng)PI(MS-CAPI),使用這套API能夠解決Windows操作系統中的密碼安全問(wèn)題。 像JAVA中的JCA/JCE一樣,MS-CAPI隱藏了密碼算法本身的一些繁瑣內容,而僅體現出功能上的要求。MS-CAPI同樣使用了引擎和類(lèi)的方式,但它有自己的術(shù)語(yǔ)描述方法。
在MS-CAPI中,提供者類(lèi)等同于我們常說(shuō)的CSP(Cryptographic Service Providers)。不同的廠(chǎng)家提供的CSP在內部實(shí)現代碼上可能不盡相同,但是在對外接口上按照微軟的定義都是完全一樣的。MS-CAPI提供一套通用的但需要CSP支持的外包接口,應用程序開(kāi)發(fā)者通過(guò)使用這套接口來(lái)實(shí)現密碼安全功能。CSP的內部?jì)热輰τ趹贸绦虻拈_(kāi)發(fā)者來(lái)說(shuō)是透明的。MS-CAPI自帶默認的微軟CSP,這個(gè)CSP也可被其它第三方的CSP所替代。
CSP實(shí)際上就是一個(gè)DLL文件,這個(gè)文件必須經(jīng)過(guò)微軟的簽名才能保證它在Windows操作系統中的可用性,目前,微軟免費對第三方的CSP進(jìn)行簽名。在應用過(guò)程中,Windows操作系統首先要驗證簽名合法性后才能正常使用。
2 MS-CAPI 我們來(lái)看一段用VB寫(xiě)的小程序,這是運用MS-CAPI來(lái)生成數字簽名的例子。//給需要簽名的明文分配一個(gè)變量strPlainText strPlainText = ”明文數據” //通過(guò)CAPICOM數字簽名類(lèi)創(chuàng )建一個(gè)對象,給對象命名oDigSig set oDigSig = CreateObject(“CAPICOM.SignedData”) //在數字簽名對象和明文建立關(guān)聯(lián) oDigSig.Content = strPlainText //設置輸出數據僅為簽名結果而不包含明文 fDetached = TRUE //生成明文。
通過(guò)調用數字簽名對象的Sign方法,同時(shí)傳遞相應參數到方法中,變量signature包含簽名結果 signature = oDigSig.Sign(Nothing,fDetached) 和JCA/JCE類(lèi)似,MS-CAPI的最大優(yōu)點(diǎn)就在于它是完全公開(kāi)的,用戶(hù)可以自由的使用。而且,它已經(jīng)成為了IE和Windows2000以上操作系統的一部分。在未來(lái)的日子里,依靠微軟的品牌效應再加上Windows操作系統龐大的用戶(hù)群,很可能使得MS-CAPI成為相當流行的密碼安全類(lèi)軟件。 MS-CAPI另一大優(yōu)點(diǎn)在于CAPICOM。CAPICOM是一個(gè)COM客戶(hù)端,可以通過(guò)ActiveX控件或COM組件的形式進(jìn)行密碼函數的自動(dòng)調用,CAPICOM用于處理基本的密碼操作,如簽名驗證,數字信封,解密數字信封,加解密數據,檢查數字證書(shū)的有效性等。CAPICOM可以用VB或VC 進(jìn)行調用。
3 安全與Windows操作系統
3.1 安全特征
(1)安全登錄與反欺騙措施:安全登錄要求管理員為所有用戶(hù)設置一個(gè)口令用于登錄。黑客會(huì )開(kāi)發(fā)一個(gè)能夠給用戶(hù)顯示登錄界面的程序,然后通過(guò)某種方式在用戶(hù)終端上運行,而不加懷疑的用戶(hù)往往會(huì )認為這個(gè)登錄界面就是系統的登錄界面,并在其中輸入自己的用戶(hù)ID和口令,攻擊者以此方式輕易地就能夠截獲用戶(hù)ID和密碼,并顯示一個(gè)登錄失敗的錯誤信息給用戶(hù)。
Windows2000以上操作系統通過(guò)要求用戶(hù)使用CTRL-ALT-DEL結合的方式進(jìn)行登錄來(lái)防止上述攻擊。鍵盤(pán)驅動(dòng)程序在捕捉到CTRL-ALT-DEL的序列以后,會(huì )通知系統調用正確的登錄顯示界面。在Windows中,是沒(méi)有辦法屏蔽CTRL- ALT-DEL三鍵組合消息的,因此,使得黑客欺騙變得無(wú)機可乘。
(2)任意訪(fǎng)問(wèn)控制:這種機制允許資源如文件的擁有者能夠決定誰(shuí)并且能夠以哪種方式來(lái)訪(fǎng)問(wèn)資源。
(3)權限訪(fǎng)問(wèn)控制:這種機制允許系統管理員在出現問(wèn)題的情況下,超越任意訪(fǎng)問(wèn)控制的范圍。
(4)地址空間保護:Windows2000以上操作系統給每個(gè)進(jìn)程提供獨立的受保護的虛擬地址空間,這樣就有效地防止了惡意的進(jìn)程攻擊。
(5)新頁(yè)歸零:這種機制保證了任何新頁(yè)都是從內存地址二進(jìn)制0開(kāi)始的,這樣一來(lái),一個(gè)進(jìn)程就無(wú)法知道它前面的那個(gè)進(jìn)程到底做了些什么。
(6)安全審計:利用這個(gè)機制,系統管理員能夠通過(guò)查詢(xún)系統產(chǎn)生的日志了解系統的相關(guān)安全事件。 每個(gè)Windows2000的用戶(hù)和用戶(hù)組會(huì )被分配一個(gè)惟一的SID,這個(gè)SID由一個(gè)隨機數和一個(gè)短的二進(jìn)制的頭標志組成。每個(gè)SID在全世界惟一。進(jìn)程和線(xiàn)程只有在用戶(hù)的SID下才能運行。每個(gè)進(jìn)程在Windows2000下都有一個(gè)包含SID和其它信息的可訪(fǎng)問(wèn)令牌。系統中的每個(gè)資源(如文件)又都有一個(gè)對應的安全描述符,該描述符描述了哪個(gè)SID允許做哪些操作。
3.2 用戶(hù)認證 Windows 2000使用Kerberos協(xié)議來(lái)完成用戶(hù)身份認證。同時(shí)系統也支持Windows NT的挑戰/響應機制,這種機制又被稱(chēng)之為NTLM。NTLM以挑戰/響應機制為基礎,同時(shí)避免明文口令的簡(jiǎn)單傳遞。NTLM的工作原理如下:
(1)用戶(hù)在登錄界面上輸入用戶(hù)ID和口令。用戶(hù)的計算機計算出口令的摘要值,同時(shí)在內存中銷(xiāo)毀用戶(hù)輸入的口令。
(2)客戶(hù)端將用戶(hù)ID的明文傳遞到服務(wù)端。
(3)服務(wù)器傳送16字節的隨機數到客戶(hù)端。
(4)客戶(hù)端用口令計算出的摘要加密隨機數,客戶(hù)端將加密結果(客戶(hù)端響應值)傳送到服務(wù)器端。
(5)服務(wù)器將用戶(hù)ID、傳給客戶(hù)端的隨機數、客戶(hù)端響應值(即客戶(hù)端加密結果)傳遞給一臺特殊的機器,我們稱(chēng)之為域控制器。在域控制器上保留著(zhù)所有的用戶(hù)ID和口令的消息摘要值。
(6)域控制器接收到從服務(wù)器端傳來(lái)的上述數據以后,從數據庫(SAM)中可以得到當前用戶(hù)對應的口令消息摘要值,并且用它來(lái)加密從服務(wù)器端傳來(lái)的隨機數。
(7)域控制器通過(guò)比較從服務(wù)器端傳來(lái)隨機數加密結果(第5步)和自身計算得到的結果(第6步)的一致性,來(lái)判斷用戶(hù)的身份是否合法。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論