透明加密系统设计及实现-透明加密的关键技术
在第一章已經(jīng)詳細(xì)地介紹了透明解密系統(tǒng)的主要發(fā)展?fàn)顩r,目前市面上的透明加密系統(tǒng),大多存在兼容性差和移植麻煩的情況。最為主要的是目前的透明加密系統(tǒng),缺乏有效的身份認(rèn)證機(jī)制,導(dǎo)致透明加密系統(tǒng)的安全性受到了極大的影響。本章結(jié)合Minifilter和LayerBSD設(shè)計(jì)思想,詳細(xì)地分析了透明加密系統(tǒng)的基本結(jié)構(gòu)和原理,給出了有效的關(guān)鍵信息標(biāo)識(shí)的方法。研究了內(nèi)核模式與用戶模式便捷的通信模型,詳細(xì)給出了多種透明加密系統(tǒng)核心部分的結(jié)構(gòu)并分析它們之間的優(yōu)缺點(diǎn),最后綜合透明加密系統(tǒng)的整個(gè)架構(gòu),給出了一套高度可信的身份驗(yàn)證機(jī)制。
1 文件透明加密系統(tǒng)的基本原理
文件透明加密是指用戶在操作的時(shí)候,雖然后臺(tái)在自動(dòng)的進(jìn)行加解密,但是用戶根本不知道加密及解密的存在,就像中間的隔了一層屏幕輻射過(guò)濾膜一樣,用戶感覺到不到它的存在。如圖1,在布置了透明加密的系統(tǒng)中,在進(jìn)行文件I/O操作時(shí),文件透明加密系統(tǒng)進(jìn)行透明加解密,上層的已經(jīng)授權(quán)的進(jìn)程能夠獲取到文件的明文,非授權(quán)的進(jìn)程仍然無(wú)法獲取到文件的明文,故而防止了通過(guò)其它的進(jìn)程獲取文件明文并將其通過(guò)網(wǎng)絡(luò)將文件傳遞到系統(tǒng)之外。在文件I/O過(guò)程中,文件透明加密及解密驅(qū)動(dòng)會(huì)進(jìn)行文件I/O進(jìn)行過(guò)濾,攔截滿足策略的I/O 進(jìn)行文件的加密及解密等相關(guān)的操作。
???????????????圖1 透明加密系統(tǒng)的工作原理圖
透明加密不會(huì)影響到用戶的使用習(xí)慣,也不需要改變已有的應(yīng)用程序,就能夠達(dá)到透明加密的效果。透明加密是一種被動(dòng)的加密方式,文件的是否加密不以用戶的意愿控制,而是自動(dòng)根據(jù)透明加密系統(tǒng)的配置策略進(jìn)行文件進(jìn)行加密和解密。故而文件透明加密在企業(yè),特別是機(jī)密機(jī)構(gòu)和核心部門,已經(jīng)成為了文件保護(hù)的最后的最堅(jiān)固的防護(hù)盾。
2 透明加密系統(tǒng)的結(jié)構(gòu)的研究
文件透明加密系統(tǒng)的核心部件工作在內(nèi)核模式下,第二章我們?cè)敿?xì)地給出了文件過(guò)濾驅(qū)動(dòng)程序及文件小過(guò)濾驅(qū)動(dòng)的在操作系統(tǒng)的位置結(jié)構(gòu),文件透明加密系統(tǒng)中透明加密模塊其實(shí)是文件過(guò)濾驅(qū)動(dòng)或者是文件小過(guò)濾驅(qū)動(dòng)程序,在驅(qū)動(dòng)設(shè)備棧中位于文件系統(tǒng)驅(qū)動(dòng)程序之上,主要負(fù)責(zé)文件訪問(wèn)的控制、進(jìn)程及文件關(guān)系的控制、用戶識(shí)別和控制以及核心的透明加密。但僅僅有透明加密驅(qū)動(dòng)程序是無(wú)法滿足需求的,因?yàn)橥该骷用艽罅康牟呗孕畔⒕哂泻艽蟮撵`活性,不同的用戶對(duì)透明加密的需求存在存在著差異,因此,必須要一個(gè)靈活多變且功能強(qiáng)大的透明加密的策略配置端,保證用戶的身份的可靠性并進(jìn)行透明加密的策略配置。
在透明加密系統(tǒng)的總體結(jié)構(gòu)設(shè)計(jì)時(shí),出于性能、安全、靈活性及實(shí)用等多方面的考慮,將透明加密系統(tǒng)分為兩個(gè)重要部分,分別位于操作系統(tǒng)的的內(nèi)核模式和用戶模式。具體的結(jié)構(gòu)如圖?2 所示。
圖 2 透明加密系統(tǒng)的總體結(jié)構(gòu)?
透明加密系統(tǒng)被分為兩個(gè)組成部分,一個(gè)是位于內(nèi)核模式的透明加密驅(qū)動(dòng),由于其承當(dāng)著透明加密等核心的功能,由于其除了完成透明加解密的功能外,還負(fù)責(zé)其它的許多文件控制的功能,將其命名為文件控制器。另一個(gè)是位于用戶模式的客戶配置端,客戶端以應(yīng)用程序的形式存在于系統(tǒng)中,承擔(dān)著用戶身份認(rèn)證及文件保護(hù)策略配置的任務(wù),作為文件控制器的輔助,提高了整個(gè)系統(tǒng)的靈活性和實(shí)用性。由于在系統(tǒng)設(shè)計(jì)中的兩個(gè)主要組成部分分別位于不同的操作系統(tǒng)模式下,各個(gè)模塊都必須提供相應(yīng)的通信模塊以提供信息的交換的橋梁。
采用用戶模式及內(nèi)核模式雙模塊組成的設(shè)計(jì)模式,減輕了內(nèi)核模式模塊的開發(fā)難度,提高了系統(tǒng)的穩(wěn)定性,將配置策略端放置在客戶端,提高系統(tǒng)的靈活性,但是對(duì)用戶身份的認(rèn)證以及系統(tǒng)的完整保護(hù)提出了新的要求,簡(jiǎn)單的基于用戶模式的驗(yàn)證是無(wú)法達(dá)到系統(tǒng)的要求的,需要設(shè)計(jì)更加嚴(yán)格的身份驗(yàn)證機(jī)制,保證系統(tǒng)的完整性和用戶身份驗(yàn)證的可靠性。
3 關(guān)鍵對(duì)象的有效標(biāo)識(shí)的研究
在進(jìn)行相關(guān)的文件I/O的控制時(shí),進(jìn)行關(guān)鍵信息的有效標(biāo)識(shí)是透明加密系統(tǒng)可靠性的保障。在內(nèi)核模式獲取相關(guān)的信息要比用戶模式下要復(fù)雜得多,因?yàn)楣ぷ髟趦?nèi)核模式下的驅(qū)動(dòng)進(jìn)程無(wú)法直接訪問(wèn)當(dāng)前用戶會(huì)話空間的有效的信息。而且工作于內(nèi)核模式下的驅(qū)動(dòng)程序,特別是文件系統(tǒng)驅(qū)動(dòng)程序,將會(huì)處理成百上千的進(jìn)程發(fā)起的I/O請(qǐng)求,怎樣對(duì)這些I/O進(jìn)行有效的標(biāo)示以完成I/O的控制是一個(gè)值得思考的問(wèn)題。在透明加密及文件訪問(wèn)的控制中,相關(guān)的主要的信息包括進(jìn)程的有效標(biāo)識(shí),發(fā)起I/O的用戶的有效標(biāo)識(shí),加密文件的有效標(biāo)識(shí)以及磁盤卷的有效標(biāo)識(shí),下面分別討論以上信息在文件透明加密系統(tǒng)的標(biāo)識(shí)方法。
3.1 進(jìn)程的有效標(biāo)識(shí)
在透明加密系統(tǒng)中,為了進(jìn)行授權(quán)進(jìn)程及非授權(quán)進(jìn)程的區(qū)分,進(jìn)程的標(biāo)識(shí)是十分必要的。在操作系統(tǒng)中通常區(qū)分進(jìn)程的方法采用的是通過(guò)進(jìn)程ID號(hào)的方法,但是這在透明加密系統(tǒng)中是不可行的,因?yàn)橐粋€(gè)進(jìn)程的ID是變動(dòng)的,不能作為有效的標(biāo)識(shí)。本文給出了三種有效的進(jìn)程標(biāo)識(shí)方法,具體如下:
1.可執(zhí)行文件名稱標(biāo)識(shí)
在進(jìn)程的創(chuàng)建是,需要指定其具體只想文件的路徑及名稱,通過(guò)進(jìn)程的ID號(hào)可以驅(qū)動(dòng)進(jìn)程的進(jìn)程描述符地址,取得該文件名,該方法能有效地識(shí)別進(jìn)程,但是不能防止進(jìn)程欺騙,如果運(yùn)行程序采用更換名稱的方式欺騙系統(tǒng),系統(tǒng)將無(wú)法處理。
2.可執(zhí)行文件內(nèi)容摘要標(biāo)識(shí)
直接采用可執(zhí)行文件名稱標(biāo)識(shí)進(jìn)程存在進(jìn)程欺騙的問(wèn)題,為了解決進(jìn)程欺騙的問(wèn)題,在配置策略時(shí),先根據(jù)可執(zhí)行文件的內(nèi)容采用有效的摘要算法生成摘要。在進(jìn)行進(jìn)程識(shí)別時(shí),不單單采取文件名識(shí)別的方式,還根據(jù)根據(jù)可執(zhí)行文件的內(nèi)容生成相關(guān)的摘要與原本的摘要進(jìn)行對(duì)比用于區(qū)分進(jìn)程,這樣便可以有效地解決進(jìn)程欺騙的問(wèn)題。采用動(dòng)態(tài)及靜態(tài)相結(jié)合的方法(進(jìn)程開始執(zhí)行時(shí)通過(guò)提取摘要進(jìn)行區(qū)分,保留進(jìn)程ID及名稱作為后續(xù)標(biāo)識(shí)使用,只需要進(jìn)程開始執(zhí)行時(shí)校驗(yàn)一次即可),該方案可以實(shí)現(xiàn)可靠且高效的進(jìn)程區(qū)分,是比較理想的解決方案。
3.進(jìn)程運(yùn)行時(shí)環(huán)境摘要標(biāo)識(shí)
解決進(jìn)程欺騙是一個(gè)比較麻煩的問(wèn)題,不是無(wú)法實(shí)現(xiàn),而是相關(guān)的方法是否具有實(shí)用性。考慮到操作系統(tǒng)性能的要求,采集進(jìn)程的系統(tǒng)運(yùn)行時(shí)環(huán)境信息,根據(jù)運(yùn)行時(shí)環(huán)境信息(進(jìn)程加載的動(dòng)態(tài)鏈接庫(kù)及進(jìn)程的代碼段的信息)生成摘要,然后進(jìn)行比較識(shí)別進(jìn)程。采用運(yùn)行時(shí)環(huán)境摘要標(biāo)識(shí),實(shí)現(xiàn)難度較大。
3.2 加密文件的有效標(biāo)識(shí)
在透明加密系統(tǒng)中,進(jìn)行加密文件與非加密文件的準(zhǔn)確區(qū)分決定著透明加密系統(tǒng)的工作是否有效,簡(jiǎn)單的字節(jié)碼標(biāo)識(shí)雖然能夠區(qū)分加密與非加密文件,但是由于其包含的信息量少,遠(yuǎn)遠(yuǎn)無(wú)法滿足透明加密系統(tǒng)的需要。在進(jìn)行文件標(biāo)識(shí)時(shí)常用的文件標(biāo)識(shí)方法有后綴名標(biāo)識(shí)、配置文件標(biāo)識(shí)(通過(guò)配置文件指定機(jī)密文件)、文件內(nèi)容標(biāo)識(shí)。三種方法中,后綴名標(biāo)識(shí)和配置文件標(biāo)識(shí)在靈活性和使用性上都存在很大的缺陷。后綴名標(biāo)識(shí)其提供的信息有限,遠(yuǎn)遠(yuǎn)不同滿足需要,同時(shí)后綴存在很大的變動(dòng)性,改變后綴名稱,標(biāo)識(shí)就會(huì)失效,穩(wěn)定性極差。采用配置文件進(jìn)行標(biāo)識(shí)由于文件的識(shí)別依靠具體的配置文件,當(dāng)文件在系統(tǒng)間遷移時(shí)或者配置文件丟失后就會(huì)導(dǎo)致標(biāo)識(shí)失效。采用文件內(nèi)容內(nèi)容進(jìn)行文件的標(biāo)識(shí)是最可靠也是最安全的方法,不存在上述的問(wèn)題,是目前廣泛采用的方式。
將文件的標(biāo)識(shí)放入文件中是一種可靠且可行的解決方案,而將文件標(biāo)識(shí)存放在文件中,也有多種不同的選擇方案,一種是將文件的標(biāo)識(shí)放在文件的頭部,一種是將文件的標(biāo)識(shí)放在文件的尾部,還有一種是將文件標(biāo)識(shí)放在數(shù)據(jù)流中。
將文件標(biāo)識(shí)放在文件頭部,文件的整體內(nèi)容就會(huì)向后偏移,在實(shí)現(xiàn)的過(guò)程中需要對(duì)上層的應(yīng)用程序隱藏文件頭,這是一件十分麻煩的事情,實(shí)現(xiàn)難度特別大。但是將文件標(biāo)識(shí)放在頭部有許多優(yōu)點(diǎn),首先文件位于文件頭部,不會(huì)輕易遭到損壞,將文件放在文件頭部時(shí),當(dāng)文件的內(nèi)容改變時(shí),不需要修改文件頭的內(nèi)容,從使用角度來(lái)講,是最好的標(biāo)識(shí)方案。
將文件放在文件的尾部,將文件放在文件的尾部,沒有將其放在頭部的難度大,不用為上層應(yīng)用程序隱去文件頭,只需要將文件的大小修改即可,但是將文件標(biāo)識(shí)放在尾部,有一個(gè)十分麻煩且不穩(wěn)定的問(wèn)題,當(dāng)文件的大小改變時(shí),文件的尾部必須進(jìn)行移動(dòng),耗費(fèi)資源且不如放在頭部穩(wěn)定。但是實(shí)現(xiàn)起來(lái)較為簡(jiǎn)單,也是常用的方案之一。
將文件的標(biāo)識(shí)信息放在輸入流中,是最近幾年才出現(xiàn)的設(shè)計(jì)方法,主要針對(duì)NTFS文件系統(tǒng),在FAT文件系統(tǒng)無(wú)法實(shí)現(xiàn)該方式,故而采用該方式的使用范圍有限,僅僅支持NTFS文件系統(tǒng)。但是在文件內(nèi)容放在文件流中,不需要做任何的文件處理,簡(jiǎn)單方便穩(wěn)定度高,在未來(lái)應(yīng)該會(huì)成為最主流的設(shè)計(jì)方案。
3.3 用戶及卷的有效標(biāo)識(shí)
在目前的透明加密系統(tǒng)中,進(jìn)行身份認(rèn)證都是針對(duì)整個(gè)操作系統(tǒng)的,只要用戶認(rèn)證成功,整個(gè)透明加密系統(tǒng)就沒有其它的身份認(rèn)證措施,靈活性及控制的程度還有提高的空間。為了實(shí)現(xiàn)更加嚴(yán)格身份控制,本文將認(rèn)證的粒度細(xì)化到用戶級(jí)別。經(jīng)過(guò)研究分析,為了實(shí)現(xiàn)用戶級(jí)別的控制,必須對(duì)每一個(gè)文件I/O請(qǐng)求,明確地知道發(fā)起該請(qǐng)求的用戶到底是系統(tǒng)中的那個(gè)成員,在內(nèi)核中,由于Windows操作系統(tǒng)本身是不開放源代碼的,且在內(nèi)核驅(qū)動(dòng)開發(fā)文檔中,未提供根據(jù)相應(yīng)I/O請(qǐng)求獲取到用戶的標(biāo)識(shí)的接口。通過(guò)仔細(xì)的分析,發(fā)現(xiàn)了在操作系統(tǒng)中有一個(gè)和用戶是一一對(duì)應(yīng)的概念,被稱為會(huì)話,在操作系統(tǒng)中,每一個(gè)用戶登陸時(shí)都對(duì)用了一個(gè)唯一的會(huì)話,在會(huì)話的環(huán)境下運(yùn)行著屬于當(dāng)前用戶的一系列進(jìn)程,操作系統(tǒng)通過(guò)會(huì)話管理器來(lái)進(jìn)行用戶登陸的管理。在內(nèi)核部分,我們可以獲取到當(dāng)前發(fā)起I/O請(qǐng)求的進(jìn)程ID,進(jìn)一步通過(guò)進(jìn)程號(hào)便可以得到用戶登陸所在的會(huì)話ID。使用會(huì)話ID就可以作為用戶的有效標(biāo)識(shí),從而完成用戶級(jí)別的控制。
為了防止非法用戶隨意將文件通過(guò)移動(dòng)設(shè)備將操作系統(tǒng)中的內(nèi)容拷貝帶走,必須實(shí)現(xiàn)針對(duì)磁盤設(shè)備的控制。如何完成對(duì)磁盤等存儲(chǔ)設(shè)備的控制,關(guān)鍵在于如何對(duì)磁盤等設(shè)備進(jìn)行有效的標(biāo)識(shí),采用簡(jiǎn)單的盤符標(biāo)識(shí)是遠(yuǎn)遠(yuǎn)達(dá)不到要求的,進(jìn)過(guò)研究分析,有兩種可行的方案,一種是直接采用磁盤的序列號(hào)作為作為標(biāo)識(shí),另一種是采用GUID編號(hào)作為有效的標(biāo)識(shí)。采用磁盤序列號(hào)雖然能夠準(zhǔn)確的達(dá)到標(biāo)識(shí)磁盤的要求,但當(dāng)存儲(chǔ)設(shè)備不是磁盤時(shí),就不能滿足要求了。而采用GUID編號(hào)這完全沒有這個(gè)問(wèn)題,GUID編號(hào)是微軟管理設(shè)備的一套管理規(guī)范,他為每一個(gè)設(shè)備生成了一個(gè)唯一的GUID號(hào),采用GUID號(hào)不僅唯一標(biāo)識(shí)存儲(chǔ)設(shè)備,也能唯一地標(biāo)識(shí)系統(tǒng)中的其它設(shè)備。
4?用戶模式與內(nèi)核模式數(shù)據(jù)通信的研究
在進(jìn)程間通信時(shí),一般采用的方式為管道通信和內(nèi)存共享以及消息機(jī)制等等,這些方法在進(jìn)行用戶模式下是是完全沒有問(wèn)題的,但是在內(nèi)核模式和用戶模式之間進(jìn)行信息的交互方式就不實(shí)用。
1.普通的通信方式的分析
普通的進(jìn)程采用管道及內(nèi)存共享進(jìn)行數(shù)據(jù)的交換是最為常用的方法,主要表現(xiàn)在操作簡(jiǎn)單,且效率高。但是在內(nèi)核模式下與用戶模式下的進(jìn)程通過(guò)這些方式進(jìn)行數(shù)據(jù)的交換,達(dá)不到要求,因?yàn)槎咴诓煌南到y(tǒng)模式下,采用普通的管道技術(shù)無(wú)法滿足安全性的保障,而采用內(nèi)存共享的方式,必須引入信號(hào)量及互斥體才能勉強(qiáng)滿足通信的安全及的要求,但僅僅能支持簡(jiǎn)單的數(shù)據(jù)通信,對(duì)于交互頻繁的環(huán)境遠(yuǎn)遠(yuǎn)達(dá)不到要求。
2.采用Minifilter的端口通信機(jī)制
為了滿足用戶模式和內(nèi)核模式的通信要求,微軟在Minifilter的框架中引入了與網(wǎng)絡(luò)通信機(jī)制中的TCP通信類似的端口通信機(jī)制。采用Minifilter的端口通信機(jī)制完全不存在普通的進(jìn)程間通信的問(wèn)題,而且采用端口通信機(jī)制后,由于不同的用戶向系統(tǒng)發(fā)起的連接請(qǐng)求可以進(jìn)行有效的標(biāo)識(shí),給用戶的身份認(rèn)證提供了有效的依據(jù),使更加可靠的基于用戶粒度的身份的驗(yàn)證成為了可能,本章將在此基礎(chǔ)上進(jìn)行高可信度的身份認(rèn)證的算法研究。
5?透明加密的關(guān)鍵技術(shù)的研究
透明加密系統(tǒng)的核心部分是以文件系統(tǒng)過(guò)濾驅(qū)動(dòng)的方式進(jìn)行設(shè)計(jì)的,文件過(guò)濾驅(qū)動(dòng)在文件系統(tǒng)設(shè)備棧中位于文件系統(tǒng)驅(qū)動(dòng)程序之上,處于文件系統(tǒng)過(guò)濾驅(qū)動(dòng)和I/O管理器之間。必須對(duì)文件I/O的流程進(jìn)行詳細(xì)的分析才能夠了解文件I/O操作的具體流程及相關(guān)的細(xì)節(jié)。要想設(shè)計(jì)出高效率的文件系統(tǒng)過(guò)濾驅(qū)動(dòng)程序。必須充分考慮操作系統(tǒng)中文件緩存的作用,同時(shí)文件緩存也給文件的透明加密及解密帶來(lái)很多困擾。在設(shè)計(jì)透明加密驅(qū)動(dòng)程序時(shí),不僅僅要考慮如何攔截I/O,攔截那些I/O,還要考慮該怎樣處理這些I/O,以及緩存帶來(lái)的各種困擾問(wèn)題。
5.1?文件I/O的詳細(xì)分析
在當(dāng)一個(gè)文件以非緩存的形式打開的時(shí)候,對(duì)文件的讀寫都是非緩存的形式進(jìn)行的,在操作系統(tǒng)中,將這種文件I/O的方式稱為NonCached IO,采用非緩存的形式進(jìn)行文件的讀寫是不會(huì)涉及到文件緩存問(wèn)題,處理相對(duì)簡(jiǎn)單,文件I/O的請(qǐng)求會(huì)直接通過(guò)文件系統(tǒng)驅(qū)動(dòng)下發(fā)到相關(guān)的設(shè)備。當(dāng)文件以緩存的方式進(jìn)行文件的I/O操作是,情況就要復(fù)雜得多,不僅要考慮到緩存的問(wèn)題,還要充分考慮到操作系統(tǒng)中內(nèi)存管理的頁(yè)錯(cuò)誤,為了更好地分析帶緩存文件I/O的具體情況,下面將針對(duì)讀、寫文件兩種操作進(jìn)行詳細(xì)的分析。
圖3詳細(xì)地分析了帶緩存的文件I/O的具體流程,當(dāng)對(duì)帶緩存的文件進(jìn)行讀操作時(shí),當(dāng)請(qǐng)求達(dá)到文件系統(tǒng)驅(qū)動(dòng)時(shí),如果是首次進(jìn)行讀操作,文件系統(tǒng)驅(qū)動(dòng)將會(huì)調(diào)用緩存管理器的接口為文件進(jìn)行緩存環(huán)境的創(chuàng)建,如果緩存已經(jīng)創(chuàng)建完成則向緩存管理器發(fā)起讀請(qǐng)求,如果文件讀寫的位置對(duì)應(yīng)的段視圖不存在,緩存管理器為創(chuàng)建相關(guān)的段視圖。當(dāng)段視圖存在后,文件緩存管理器將會(huì)從段視圖中復(fù)制數(shù)據(jù)到用戶緩沖區(qū)。這時(shí)如果視圖對(duì)應(yīng)的文件內(nèi)容并未讀入,緩存管理器將向內(nèi)存管理器發(fā)起頁(yè)錯(cuò)誤,內(nèi)存管理器向文件系統(tǒng)驅(qū)動(dòng)發(fā)起分頁(yè)I/O讀請(qǐng)求,文件系統(tǒng)驅(qū)動(dòng)在接到分頁(yè)I/O的請(qǐng)求時(shí),將會(huì)直接下發(fā)請(qǐng)求給下層驅(qū)動(dòng)設(shè)備并等待請(qǐng)求返回,文件系統(tǒng)驅(qū)動(dòng)將分頁(yè)I/O的結(jié)果返回給內(nèi)存管理器,內(nèi)存管理器完成頁(yè)面錯(cuò)誤的處理,將文件內(nèi)容加載到段視圖中。緩存管理器從段視圖中得到文件內(nèi)容,復(fù)制到用戶緩沖區(qū)中,將請(qǐng)求結(jié)果返回給文件系統(tǒng)驅(qū)動(dòng),文件系統(tǒng)驅(qū)動(dòng)返回給I/O管理器,I/O管理器將結(jié)果返回給應(yīng)用程序便完成了整個(gè)讀請(qǐng)求。
圖3帶緩存的文件讀的詳細(xì)流程
當(dāng)進(jìn)行帶緩存的文件寫操作時(shí),其它的流程基本相識(shí),只有部分區(qū)別。如圖4,在文件寫操作時(shí),對(duì)段視圖的操作與讀請(qǐng)求時(shí)相反,是將用戶緩沖區(qū)中的內(nèi)容復(fù)制到段視圖中。在處理頁(yè)面錯(cuò)誤時(shí),內(nèi)存管理器并不發(fā)起寫請(qǐng)求,而是釋放部分的物理頁(yè)面,為指定的段視圖對(duì)應(yīng)的虛擬地址分配物理頁(yè)面,緩沖管理器完成數(shù)據(jù)的復(fù)制后直接返回。整個(gè)寫操作中并未直接將數(shù)據(jù)寫到磁盤外存中,而是操作系統(tǒng)閑暇或者需要時(shí),在段視圖中的內(nèi)容寫入外設(shè)存儲(chǔ)中。
圖4 帶緩存的文件寫操作的詳細(xì)流程
5.2?文件緩存的處理
在文件的讀寫操作中,文件的緩存有著巨大的作用,大幅度地提高了操作系統(tǒng)的效率。涉及文件緩存的I/O處理極其復(fù)雜,任何的弊漏都可能會(huì)導(dǎo)致整個(gè)操作系統(tǒng)崩潰,造成不可估量的后果,在進(jìn)行相關(guān)處理時(shí),必須小心謹(jǐn)慎。在透明加密的過(guò)程中,如果關(guān)閉文件的緩存,雖然能夠解決緩存帶來(lái)的各種困擾問(wèn)題,但是會(huì)對(duì)操作系統(tǒng)的性能造成巨大的負(fù)面影響。在設(shè)計(jì)中這種設(shè)計(jì)思路已被淘汰。
在以往透明加密系統(tǒng)的設(shè)計(jì)時(shí),有三種主流的設(shè)計(jì)思路。分別是緩存存放密文,緩存存放明文,雙緩存的設(shè)計(jì)模式。下面本章將結(jié)合Miniflter文件小過(guò)濾驅(qū)動(dòng)的特點(diǎn),充分考慮文件的緩存作用,針對(duì)三種設(shè)計(jì)思路給出相應(yīng)的透明加密的設(shè)計(jì)模型,并分析其優(yōu)缺點(diǎn)。
1、文件緩存密文設(shè)計(jì)方式
前文已經(jīng)講到,Minifilter文件過(guò)濾驅(qū)動(dòng)程序可以完成文件I/O的攔截,可以攔截FAST_IO,NONCACHED_IO,PAGEING_IO等I/O請(qǐng)求。這些I/O中有帶緩存的文件I/O,也有不帶緩存的文件I/O。其中FAST_IO是帶緩存的I/O,其它的都是不帶緩存的I/O,在設(shè)計(jì)時(shí)必須區(qū)分處理。圖5簡(jiǎn)要地闡述了基于密文的緩存的設(shè)計(jì)思想,當(dāng)授權(quán)進(jìn)程直接讀取磁盤文件時(shí),采用NOCACHE_IO進(jìn)行文件的讀寫時(shí),直接進(jìn)行加解密。當(dāng)授權(quán)進(jìn)程以緩存的方式讀取文件時(shí),文件讀到緩存中不進(jìn)行處理,緩存中便存放密文,在進(jìn)程通過(guò)FAST_IO讀寫緩存中的內(nèi)容時(shí),進(jìn)行解密或加密,這樣授權(quán)進(jìn)程便可得到明文。而非授權(quán)進(jìn)程讀取文件時(shí)不進(jìn)行任何的處理,因此無(wú)法得到文件的明文。但是,采用該種設(shè)計(jì)方式存在一個(gè)很大的問(wèn)題,當(dāng)授權(quán)的進(jìn)程以文件內(nèi)存映射的方式打開文件時(shí),其操作流程和緩存類似,采用PAGEING_IO從文件中讀取內(nèi)容到內(nèi)存中,由于透明加密驅(qū)動(dòng)未對(duì)PAGEING_IO做任何的處理,因此內(nèi)存中的內(nèi)容是密文,當(dāng)授權(quán)進(jìn)程文件以內(nèi)存映射的方式打開時(shí)也無(wú)法得到明文。
圖5 密文緩存的設(shè)計(jì)方式
2、文件緩存明文的設(shè)計(jì)方式
如圖6 ,文件緩存為明文的方式與文件緩存為密文的情況十分相似,不同的是,在進(jìn)行PAGEING_IO時(shí)進(jìn)行加密或解密,緩存中存放明文,進(jìn)行FAST_IO時(shí),對(duì)授權(quán)的進(jìn)程不進(jìn)行處理,而對(duì)非授權(quán)的進(jìn)程進(jìn)行讀加密,禁止寫的限制防止數(shù)據(jù)的泄漏。該種設(shè)計(jì)方式與方式1也存在相同的問(wèn)題,當(dāng)未授權(quán)的進(jìn)程以內(nèi)存文件映射的方式打開文件時(shí),由于采用PAGEING_IO進(jìn)行了加密和解密,故而其能夠得到文件的具體明文,造成了數(shù)據(jù)的泄密。為了防止泄密,可以在PAGEING_IO時(shí)進(jìn)行區(qū)分進(jìn)程的處理,這樣便造成了文件緩存中可能是密文也可能是明文,當(dāng)多個(gè)進(jìn)程同時(shí)打開文件時(shí),容易造成數(shù)據(jù)的混亂,需要進(jìn)行互斥處理并刷新緩存內(nèi)容,對(duì)操作系統(tǒng)的性能有一定影響。
圖 6 明文緩存的設(shè)計(jì)方式
3、雙緩存的設(shè)計(jì)方式
由于采用密文緩存存在文件映射導(dǎo)致授權(quán)進(jìn)程以內(nèi)存文件映射的方式打開文件無(wú)法取得明文,而明文緩存設(shè)計(jì)模式需要反復(fù)的刷新緩存來(lái)保證數(shù)據(jù)的一致性。可以采用雙緩存的方式來(lái)解決緩存帶來(lái)的各種困擾。
圖 7 雙緩存的設(shè)計(jì)方式
如圖7,雙緩存的設(shè)計(jì)模式,引入雙緩存的概念,在系統(tǒng)中存在兩份緩存,一份是明文緩存,另一份是密文緩存,當(dāng)向密文緩存中通過(guò)PAGEING_IO操作文件時(shí)不進(jìn)行任何處理,其中存在的是密文,而向明文緩存中操作文件時(shí)進(jìn)行加密和解密,緩存中存放的時(shí)明文,當(dāng)授權(quán)進(jìn)程采用FAST_IO進(jìn)行文件的讀寫時(shí),操作的是明文緩存,不需要任何的處理,同樣當(dāng)非授權(quán)的進(jìn)程讀寫文件時(shí)操作的是密文緩存,也不要任何的處理,采用雙緩存的方式完全不存在密文緩存和明文緩存設(shè)計(jì)方式的問(wèn)題,但是采用雙緩存也存在問(wèn)題,需要維護(hù)兩個(gè)緩存,需要保證二者內(nèi)容的一致性,額外維護(hù)緩存增大了內(nèi)存耗費(fèi),而且難度大,不易實(shí)現(xiàn)。
5.3?文件I/O請(qǐng)求緩沖區(qū)的替換
要進(jìn)行文件加密及解密,驅(qū)動(dòng)讀寫的數(shù)據(jù)是問(wèn)題的關(guān)鍵,如何獲取讀取或?qū)懭氲膬?nèi)容,關(guān)鍵在與根據(jù)I/O的方式得到文件I/O操作的緩沖區(qū)。文件I/O的方式主要有三種方式,包括緩沖方式、直寫方式、及其它方式。
圖8 緩沖方式和直寫方式的使用
其它方式直接將用戶空間的指針傳遞到用戶空間,不做任何處理。下面主要分析緩沖方式和直接寫方式。如圖8,圖中顯示了兩種I/O在驅(qū)動(dòng)中的使用方式。
(1)緩沖方式在文件的讀寫請(qǐng)求中基本不出現(xiàn),從發(fā)起文件I/O請(qǐng)求的進(jìn)程的用戶空間拷貝一份數(shù)據(jù)到內(nèi)核空間,不同進(jìn)程空間的內(nèi)存各自獨(dú)立,互不干涉。但是需要進(jìn)行拷貝,效率較低。
(2)直寫方式采用MDL來(lái)傳遞緩沖區(qū),直接修改頁(yè)表屬性將用戶空間的緩沖區(qū)的地址范圍映射到內(nèi)核空間,不需要拷貝數(shù)據(jù),效率較高。
5.4??結(jié)合透明加密驅(qū)動(dòng)后的I/O流程分析
在加入透明加密驅(qū)動(dòng)程序后,FAST_IO和IRP_IO請(qǐng)求都會(huì)被文件過(guò)濾驅(qū)動(dòng)攔截處理,進(jìn)行相關(guān)的過(guò)濾工作。文件過(guò)濾驅(qū)動(dòng)位于文件系統(tǒng)驅(qū)動(dòng)之上,可以完成緩存及文件讀寫的內(nèi)容的控制。
圖 9 結(jié)合透明加密過(guò)濾驅(qū)動(dòng)的I/O流程
6?高度可信的身份驗(yàn)證的研究
目前的透明加密系統(tǒng)其控制粒度較大,控制力度受到了很大的限制。為了實(shí)現(xiàn)更為精確的控制,進(jìn)一步細(xì)化控制的粒度是有必要的。上文已經(jīng)給出了基于用戶程度的控制思路,采用會(huì)話ID 作為I/O請(qǐng)求的有效的標(biāo)識(shí)來(lái)進(jìn)行基于用戶的I/O控制。為了保證系統(tǒng)的安全性,采用多重的驗(yàn)證機(jī)制來(lái)進(jìn)行用戶的身份認(rèn)證是有必要的,在分析各種驗(yàn)證機(jī)制的基礎(chǔ)上,本章給出了一套多重的身份驗(yàn)證機(jī)制。
如圖10所示,為了更好的進(jìn)行驗(yàn)證過(guò)程的說(shuō)明,將用戶的狀態(tài)分成了7種,分別是客戶端啟動(dòng)、用戶注冊(cè)情況、密碼驗(yàn)證、USB Key插入狀態(tài)、內(nèi)核模式驗(yàn)證、驗(yàn)證成功以及驗(yàn)證注銷。具體的相互變換方式圖中給出了詳細(xì)的說(shuō)明。
圖 10 高可信度的身份驗(yàn)證的狀態(tài)轉(zhuǎn)換圖
可以看出,該方法有如下特點(diǎn):
(1)采用了三重驗(yàn)證機(jī)制,包括密碼驗(yàn)證、USB_Key驗(yàn)證及內(nèi)核模式驗(yàn)證,保障驗(yàn)證的可靠性,增加了破解的難度。
(2)采用了軟件和硬件相結(jié)合的方式,避免了通過(guò)單一的軟驗(yàn)證密碼泄漏的問(wèn)題。
(3)采用了內(nèi)核模式及用戶相互結(jié)合思想,身份的驗(yàn)證將用戶模式及內(nèi)核模式集合起來(lái),保證了系統(tǒng)的完整性,任何模塊的破環(huán)都會(huì)導(dǎo)致驗(yàn)證的失效。
(4)采用動(dòng)態(tài)實(shí)時(shí)監(jiān)測(cè),系統(tǒng)時(shí)刻監(jiān)測(cè)用戶USB Key的情況,只要用戶的USB 失效,用戶就會(huì)被強(qiáng)制下線,防止非法用戶通過(guò)非法手段入侵系統(tǒng)。
7本章小結(jié)
本章主要進(jìn)行透明加密系統(tǒng)的主要技術(shù)的研究,從透明加密系統(tǒng)結(jié)構(gòu)的研究到關(guān)鍵對(duì)象的標(biāo)識(shí),內(nèi)核模式及用戶模式的通信、透明加解密的關(guān)鍵技術(shù)及高可信度的用戶身份驗(yàn)證,本章在經(jīng)過(guò)詳細(xì)的分析之后給出了相應(yīng)的合理研究方案,為透明加密系統(tǒng)的整體設(shè)計(jì)和實(shí)現(xiàn)奠定了堅(jiān)實(shí)的基礎(chǔ)。
?
?
轉(zhuǎn)載于:https://my.oschina.net/zengxiaangwei/blog/1930176
總結(jié)
以上是生活随笔為你收集整理的透明加密系统设计及实现-透明加密的关键技术的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网线的排放顺序
- 下一篇: 有赞百亿级日志系统架构设计