沈 泳
[摘要]Windows Vista采用安全軟件開發(fā)方法開發(fā),在安全性方面得到較大的提高。重點(diǎn)分析Windows Vista用戶帳戶信息保密機(jī)制的模型。比較Windows98/2000/XP以及Linux操作系統(tǒng)和Windows Vista在用戶帳戶登錄保密機(jī)制上的區(qū)別。并且研究全卷加密技術(shù)的原理,同時提出利用BitLocker、全卷加密技術(shù)以及版權(quán)控制三種保護(hù)機(jī)制混合使用來提高數(shù)據(jù)的安全性。
[關(guān)鍵詞]Windows Vista 用戶賬戶控制 BitLocker 加密文件系統(tǒng)
中圖分類號:TP3 文獻(xiàn)標(biāo)識碼:A 文章編號:1671-7597(2009)0110064-03
一、引言
2006年11月30日,美國微軟公司正式發(fā)布了代號為Longhorn的下一代視窗操作系統(tǒng)Windows Vista。這是繼Windows XP和Windows Sever 2003之后的又一重量級操作系統(tǒng)。和以往的Windows客戶端操作操作系統(tǒng)相比,Windows Vista在底層技術(shù)方面得到了極大的提升,在網(wǎng)絡(luò)安全以及多媒體方面也體現(xiàn)出了全新的構(gòu)想。
系統(tǒng)安全一直是微軟各個版本的Windows操作系統(tǒng)關(guān)注的問題。微軟新推出的UAC(用戶賬戶控制)機(jī)制對授權(quán)進(jìn)程要求所有用戶以標(biāo)準(zhǔn)用戶模式進(jìn)行,并且限制管理員的權(quán)限,從而達(dá)到了限制惡意軟件對系統(tǒng)帶來的損害。同時,Windows Vista還提供了Windows防火墻、Windows Service Hardening、EFS(加密文件系統(tǒng))、BitLocker等功能,增加了系統(tǒng)防御能力。
本文主要針對Windows Vista操作系統(tǒng)中的文件數(shù)據(jù)保護(hù)機(jī)制進(jìn)行了必要的研究,希望為讀者打開了解Windows Vista的大門。
二、Windows Vista與其他操作系統(tǒng)身份驗(yàn)證比較分析
(一)Windows 9X系統(tǒng)
Windows 9X系統(tǒng)將用戶密碼默認(rèn)保存在擴(kuò)展名為pwl的緩存文件中。該文件包含了共享資源訪問密碼、撥號網(wǎng)絡(luò)密碼、用戶登錄密碼等信息,是一個用于訪問網(wǎng)絡(luò)資源的高速緩存的密碼清單。一般位于系統(tǒng)目錄(通常為C:Windows)下。不同的用戶使用不同的pwl文件,通過用戶名來命名文件名。只要獲取pwl文件,就可以獲得該用戶的各種密碼。
(二)Windows NT/2K/XP/Server 2003系統(tǒng)
Windows NT/2000系統(tǒng)中使用了安全賬號管理器(Security account manager)機(jī)制對用戶帳戶進(jìn)行安全管理。在賬號創(chuàng)建的同時,安全標(biāo)識就被創(chuàng)建。一旦帳號被刪除,安全標(biāo)識也被同時刪除。即使是相同的用戶名,在每次創(chuàng)建時獲得的安全標(biāo)識也是完全不同的,也不會保留原來的權(quán)限。故安全標(biāo)識是唯一的。安全賬號管理器的具體表現(xiàn)就是%SystemRoot%system32
configsam文件。
與Windows 9X系統(tǒng)相同的是Windows NT/2K/XP/Server 2003等系統(tǒng)同樣使用了文件對用戶密碼進(jìn)行保存sam文件。不同的是sam文件是用戶帳戶的數(shù)據(jù)庫,所有用戶的登錄名及密碼等信息都保存在這個文件中。系統(tǒng)在保存sam信息之前對sam文件進(jìn)行了壓縮,故而sam文件中的信息是不可讀取的。在系統(tǒng)運(yùn)行期間,sam文件被system賬號鎖定,即使是administrator賬號也不能打開sam文件。
(三)Linux身份驗(yàn)證
Unix系統(tǒng)使用passwd文件保存用戶信息,包括經(jīng)過DES加密的用戶密碼。如果采用shadow機(jī)制,則會將密碼保存在shadow文件中,在passwd文件中只顯示“x”。passwd文件對于所有用戶均是可讀的,只對root用戶可寫。而shadow文件則是不可讀的。兩個文件均位于/etc目錄下。
文件的每一行都代表一個用戶資料,每個賬號由七部分資料組成,不同資料中使用":"分割。格式如下:
賬號名稱:密碼:uid:gid:個人資料:用戶目錄:shell
除了密碼是加密的以外(這里的密碼部分已經(jīng)shadow了)其他項(xiàng)目非常清楚明了。
Unix系統(tǒng)采用最多的加密算法是DES,它使用56位的密鑰(8個7位的字符)加密64位的文本塊。傳統(tǒng)的UNIX系統(tǒng)中,crypt()函數(shù)將用戶密碼填充到8個字符,并用這8個ASCII字符組成的56位DES密鑰,然后對一個64位的零字符塊進(jìn)行DES加密,然后再次使用原有的密鑰對該結(jié)果進(jìn)行加密,該過程重復(fù)25次,最終生成一個11個字符的字串。在此基礎(chǔ)上,UNIX系統(tǒng)還是用摻雜其他數(shù)據(jù)的方法進(jìn)行加密。摻雜的數(shù)據(jù)又稱為Salt(鹽粒)。鹽粒一般為12位,基于系統(tǒng)時間來讀取數(shù)值,范圍為0~4095。使用鹽粒后,一個完整的加密口子字串由13個字符組成,其中前兩個字符為鹽粒,后11個字符為真正的加密密碼。
(四)BigLocker加強(qiáng)身份驗(yàn)證功能
Windows Vista中采用BitLocker加密來加強(qiáng)身份驗(yàn)證。BitLocker原名Secure Star up(安全啟動)。對于公司而言,存儲在計算機(jī)上的數(shù)據(jù)通常比計算機(jī)本身更有價值,這些數(shù)據(jù)的丟失或者泄漏可能會造成極具破壞性的后果。在Windows XP以及之前的操作系統(tǒng)中,非法用戶可以通過離線方式讀取操作系統(tǒng)中的文件和數(shù)據(jù)。BitLocker驅(qū)動器加密是Windows Vista中新增的一個系統(tǒng)級數(shù)據(jù)保護(hù)功能,目前僅在企業(yè)版和旗艦版中提供。它提供完整的驅(qū)動器加密功能,有效地避免因用戶對計算機(jī)保護(hù)不當(dāng)或者不當(dāng)?shù)奶蕴幚矶鴮?dǎo)致的數(shù)據(jù)丟失或者泄漏產(chǎn)生的威脅。即使非法用戶啟動另外一個系統(tǒng)或者運(yùn)行黑客工具軟件,以脫機(jī)方式瀏覽存儲在受保護(hù)驅(qū)動西里的數(shù)據(jù),也無法讀出加密信息,從而提高了數(shù)據(jù)的安全性。故而BitLocker技術(shù)也稱之為安全啟動。
根據(jù)不同的計算機(jī)系統(tǒng),Windows Vista提供以下選項(xiàng):
1.不帶有TPM芯片的計算機(jī),將啟動密鑰保存在USB閃存上。啟動系統(tǒng)時,閃存必須連接到計算機(jī)。
2.帶有TPM芯片的計算機(jī)。數(shù)據(jù)解密功能被限制為首先必須對系統(tǒng)組件進(jìn)行校驗(yàn),而校驗(yàn)信息保存在TPM新片中。
3.TPM和PIN。每次系統(tǒng)啟動后,都需要輸入長度在4到20位的PIN碼。
4.TPM和啟動密鑰。由啟動密鑰代替PIN碼,每次啟動系統(tǒng)時,只要插入保存了啟動密鑰的閃存,無需輸入PIN碼。
5.恢復(fù)密鑰。為了在數(shù)據(jù)校驗(yàn)失敗后訪問數(shù)據(jù)。用戶可以通過功能鍵手工輸入恢復(fù)PIN碼,或者從網(wǎng)絡(luò)驅(qū)動器或者USB閃存中讀入[1]。
(五)BitLocker加密原理
BitLocker基于Trusted Platform Module(TPM)1.2平臺,需要支持TPM的硬件芯片。TPM負(fù)責(zé)生成加密密鑰,同時存儲密鑰、密碼、數(shù)字證書以核心操作系統(tǒng)文件的測量值。BitLocker采用128位或者256位的AES(Advanced Encryption Standard高級加密標(biāo)準(zhǔn))加密,并且可以通過組策略進(jìn)行設(shè)置。[3]BitLocker采用全卷加密驅(qū)動程序(FVE)進(jìn)行全卷加密。FVE是一個篩選級驅(qū)動程序,該系統(tǒng)隨機(jī)產(chǎn)生一個密鑰,叫做FVEK(全卷加密密鑰)。FVE可以收到NTFS文件系統(tǒng)發(fā)送給卷的所有I/O請求,寫入的時候自動加密,讀取的時候自動解密。FVEK對Windows分區(qū)進(jìn)行加密,然后再由VMK(Volume Master Key卷主密鑰)對FVEK進(jìn)行加密。加密后的FVEK密鑰保存在卷的特殊元數(shù)據(jù)區(qū)域。當(dāng)系統(tǒng)有TPM1.2及以上版本的芯片時,將TPM加密VMK。既可以用TPM中的密鑰SRK和USB閃盤里的密鑰聯(lián)合對VMK加密;也可以用PM中的密鑰SRK和開機(jī)時輸入的PIN聯(lián)合對VMK加密。即使TPM出錯,也可以通過恢復(fù)模式重新生成密鑰。
若系統(tǒng)沒有TPM,還可以用USB閃盤中的密鑰對VMK加密。
若希望在BitLocker被撤銷后訪問加密的數(shù)據(jù),需要用到“Clear Key”密鑰。這個密鑰保存在硬盤上,使用VMK和FVEK可以在BitLocker被撤銷后繼續(xù)訪問加密的數(shù)據(jù)。如果隨后BitLocker再次被啟用,就不能繼續(xù)訪問Clear Key了。在啟用BitLocker的時候,生成一個恢復(fù)密碼是很重要的,這個48位的密碼分為八組,每組有六個數(shù)字。記錄這48位密碼對以后恢復(fù)很有用。
當(dāng)系統(tǒng)啟動時,會將自己的散列值和PCR加載代碼進(jìn)行比較,并把該散列值寫入到TPM芯片的第一個PCR寄存器中。然后計算出BIOS度量值,并將該度量值存放在合適的PCR寄存器中。BIOS會給啟動序列中的下一個組件計算散列值,持續(xù)該操作過程直至操作系統(tǒng)加載程序計算出度量值并與之進(jìn)行比較。然后運(yùn)行的每段代碼都需要負(fù)責(zé)對其加載的代碼計算度量值,并負(fù)責(zé)把度量值存儲到TPM芯片里相應(yīng)的PCR寄存器中。最后,當(dāng)用戶選擇引導(dǎo)的操作系統(tǒng),引導(dǎo)管理器會從該卷中讀取加密的VMK,并請求TPM對其進(jìn)行解密。只有當(dāng)所有的度量值和VMK封裝時相同時,包括可選的PIN等,TPM才能夠成功解密VMK。
三、Windows Vista文件加密機(jī)制
(一)EFS加密技術(shù)介紹
EFS(Encrypt File System加密文件系統(tǒng))是NTFS文件系統(tǒng)獨(dú)有的一種安全特性。BitLocker僅對Windows所在的驅(qū)動器加密,對非Windows所在的驅(qū)動器并不自動保護(hù)。也就是說,對于那些具有多個卷或者多個磁盤的系統(tǒng)來說,BitLocker并不能保護(hù)它們的數(shù)據(jù)。當(dāng)系統(tǒng)順利啟動后,BitLocker無法對數(shù)據(jù)提供保護(hù)。
EFS加密可以保證系統(tǒng)啟動后對用戶數(shù)據(jù)提供保護(hù)。其他任何未授權(quán)的用戶,包括管理員,都不能訪問加密的數(shù)據(jù)。
EFS將文件夾/文件以加密形式存儲在硬盤上,這樣,特定的文件/文件夾只能被具有正確證書通過私鑰認(rèn)證的用戶打開。和第三方工具不同,EFS加密并不需要用戶提供密碼,加密和解密過程由Windows在后臺自動進(jìn)行,對用戶透明。用戶按照正常方式使用文件,當(dāng)文件被關(guān)閉時,它會被解密。對于不具有操作權(quán)限的證書的用戶,即使重新安裝系統(tǒng),同樣無法存取該文件/文件夾。EFS是Windows Vista中對BitLocker較好的補(bǔ)充。但是EFS加密與NTFS的壓縮功能不能同時使用,即如果文件被壓縮,那么就無法對其實(shí)施加密功能。
加密文件/文件夾的方法如下[4]:
1.在資源管理器中找到待保護(hù)的文件/文件夾,右鍵選擇屬性。
2.在“常規(guī)”選項(xiàng)頁中選擇“高級”。
3.勾選高級屬性中的“加密內(nèi)容以便保護(hù)數(shù)據(jù)”項(xiàng),點(diǎn)擊“確定”。
4.在返回的常規(guī)選項(xiàng)頁中點(diǎn)擊“確定”。
(二)EFS加密原理
EFS加密過程如下,如圖3:
1.隨機(jī)生成一個加密密鑰,稱之為FEK(文件加密密鑰)m1。
2.用FEK對目標(biāo)文件m2進(jìn)行加密生成E1(m2)。
3.若第一次使用,系統(tǒng)自動為該用戶生成一對公鑰/私鑰pk/sk。
4.用該用戶的公鑰對FEK進(jìn)行加密E2(m1)。
5.刪除原始的FEK。將E2(m1)作為加密文件的一個屬性和加密文件保存在一起。
EFS解密過程如下,如圖4:
1.EFS系統(tǒng)用用戶的私鑰解密FEK即D2(E2(m1))得到m1。
2.用解密后的FEK m1將文件E1(m2)解密D(E1(m2))得到m2。
如果用戶持有已加密的NTFS文件的私鑰,那么用戶就能夠打開該文件,并且將該文件作為普通的文檔透明的使用,所有的加密、解密過程都在NTFS底層進(jìn)行。反之,文件將拒絕用戶的訪問。
(三)BitLocker和EFS比較
雖然EFS可以支持?jǐn)?shù)據(jù)加密,但是對于系統(tǒng)的某些敏感區(qū)域,如注冊表配置單元文件,EFS就無能為力了。例如,如果組策略允許用戶不在域環(huán)境時也能登錄到計算機(jī),驗(yàn)證所用的域憑據(jù)就會緩存在注冊表中,這樣攻擊者就可以使用工具來獲取域賬戶的散列值,并借助密碼破解工具來破解域賬戶的密碼,然后順利訪問賬戶。EFS通過NTFS文件系統(tǒng)驅(qū)動程序來實(shí)現(xiàn),并進(jìn)行文件級別操作。
BitLocker使用全卷加密驅(qū)動程序,并進(jìn)行卷級別加密。它可以加密頁面文件、休眠文件、SAM數(shù)據(jù)庫等重要的系統(tǒng)文件,這樣攻擊者就無法破解離線賬戶。BitLocker加密主要用于系統(tǒng)登錄之前,當(dāng)?shù)卿浀接脩舡h(huán)境后[5],系統(tǒng)所有文件都處于解密狀態(tài),這時候需要EFS加密實(shí)現(xiàn)基于用戶的文件保護(hù)。
四、版權(quán)保護(hù)
Windows Vista中提供了版權(quán)保護(hù),只有授權(quán)的用戶才能夠使用相應(yīng)的文件。電子郵件可以被指定的用戶群瀏覽,但是不能進(jìn)行打印或者轉(zhuǎn)發(fā)等操作。Windows Vista還提供了訪問版權(quán)保護(hù)Office文檔的客戶端(RMS client)[6],用戶無需再安裝/配置額外軟件。
五、總結(jié)
Windows Vista中提供三種數(shù)據(jù)保護(hù)技術(shù):BitLocker,加密文件系統(tǒng)(EFS)以及版權(quán)保護(hù)。在操作系統(tǒng)啟動之前和過程中,BitLocker保證非授權(quán)用戶無法登入系統(tǒng),但是BitLocker無法對操作系統(tǒng)以外的磁盤數(shù)據(jù)保護(hù)。加密文件系統(tǒng)無法對系統(tǒng)文件加密,例如頁面文件、休眠文件等,但是EFS可以在系統(tǒng)啟動后對非操作系統(tǒng)外的磁盤數(shù)據(jù)提供保護(hù),保證非授權(quán)用戶即使提升權(quán)限也無法讀取數(shù)據(jù)。BitLocker和EFS相輔相成,分別作用于不同階段。當(dāng)用戶需要對Office文檔進(jìn)行遠(yuǎn)程權(quán)限控制時,需要考慮使用版權(quán)保護(hù)。
根據(jù)不同的用戶場景,三種數(shù)據(jù)保護(hù)方式分別使用情況如表1所示。
參考文獻(xiàn):
[1]王旭,Vista的磁盤加密功能,個人電腦,2007.04.
[2]劉輝,揭密Vista的磁盤加密功能,http://www.pcpro.com.cn/pcpro/20
07/0509/435924.shtml.
[3]Vista BitLocker,給系統(tǒng)動態(tài)保護(hù),每周電腦報,2007.04.
[4]嘯天,Windows Vista中的文件和文件夾加密,網(wǎng)絡(luò)與信息,2007.07.
[5]深入理解Windows Vista內(nèi)核三:BitLocker,http://blogs.itecn.net/
blogs/winternals/archive/2007/03/22/insidevistakernel2.aspx.
[6]http://technet2.microsoft.com/WindowsVista/en/library/00d04415-2b2f-422c-b70e-b18ff918c2811033.mspx?mfr=true.