徐國棟,朱亮
Windows下文件過濾驅(qū)動(dòng)技術(shù)
徐國棟,朱亮
Windows文件過濾驅(qū)動(dòng)在不改變復(fù)雜的文件系統(tǒng)基礎(chǔ)上,可方便地?cái)U(kuò)展I/O子系統(tǒng)的功能。在深入研究了文件過濾驅(qū)動(dòng)技術(shù)基礎(chǔ)上,結(jié)合安全加密技術(shù)與權(quán)限控制技術(shù),實(shí)現(xiàn)了一個(gè)安全、易用、管理方便的安全文件系統(tǒng)。
文件過濾驅(qū)動(dòng);I/O請(qǐng)求包;基于角色的訪問控制
隨著企事業(yè)單位的快速發(fā)展,電子文檔為企事業(yè)單位承載了越來越多的重要信息。而由于電子文檔的容易散播性,導(dǎo)致企事業(yè)單位的重要資料很容易被非法獲取、篡改、乃至無序傳播等,這使得企事業(yè)單位所做的大量工作付之東流,嚴(yán)重危害了自身的利益。特別是棱鏡門事件后,文檔安全的重要性也日益受到重視。文件安全管理就是為了提高電子文檔數(shù)據(jù)的安全性和保密性、防止秘密數(shù)據(jù)被意外、或非法獲取所采用的技術(shù)手段。
密碼學(xué)是信息系統(tǒng)安全的核心,它是研究密碼系統(tǒng)和通信安全的一門學(xué)科[1]。密碼學(xué)的基本功能是提供保密性,使非授權(quán)者無法獲悉消息的內(nèi)容。
Windows的I/O管理器是一個(gè)可擴(kuò)展的結(jié)構(gòu),通過開發(fā)過濾驅(qū)動(dòng)程序可以擴(kuò)展I/O子系統(tǒng)的功能。 I/O管理器支持分層驅(qū)動(dòng)程序模型,每個(gè)I/O請(qǐng)求包(IRP,I/O request package)的處理分別經(jīng)過各層驅(qū)動(dòng)程序,直到某層驅(qū)動(dòng)程序完成這個(gè)請(qǐng)求[2]。
1.1 過濾驅(qū)動(dòng)程序
過濾驅(qū)動(dòng)工作在系統(tǒng)驅(qū)動(dòng)層和應(yīng)用層之間,透明地截取發(fā)往低級(jí)驅(qū)動(dòng)程序設(shè)備對(duì)象的請(qǐng)求,低級(jí)驅(qū)動(dòng)程序的用戶完全不知道它們的請(qǐng)求被過濾器驅(qū)動(dòng)程序預(yù)處理和截取了。使用過濾器驅(qū)動(dòng)程序可以實(shí)現(xiàn)以下幾種主要功能:
允許修改已有驅(qū)動(dòng)程序在某些方面的行為,而不必重寫整個(gè)驅(qū)動(dòng)程序。
可以更加容易地隱藏低級(jí)驅(qū)動(dòng)程序的限制。
允許把諸如壓縮、加密等新特征添加到設(shè)備上,而不必修改基本的設(shè)備驅(qū)動(dòng)程序或者使用設(shè)備的程序。
1.2 文件系統(tǒng)過濾驅(qū)動(dòng)
文件系統(tǒng)是負(fù)責(zé)為用戶建立、存入、讀出、修改、轉(zhuǎn)儲(chǔ)文件,控制文件的存取與撤銷。文件系統(tǒng)過濾驅(qū)動(dòng)工作模式如圖1所示:
圖1 文件過濾驅(qū)動(dòng)工作模型
作為一種內(nèi)核態(tài)中間層驅(qū)動(dòng),只需對(duì)下層的文件系統(tǒng)驅(qū)動(dòng)作相應(yīng)的功能擴(kuò)展,加密粒度靈活、可靠性強(qiáng)、效率高、易于擴(kuò)展。
借助于Windows的可安裝文件系統(tǒng)IFS,Installable File System設(shè)備驅(qū)動(dòng)程序開發(fā)工具DDK,Device Development Kit),即可以對(duì)Windows I/O 的子系統(tǒng)進(jìn)行方便的擴(kuò)展,實(shí)現(xiàn)一個(gè)文件加密過濾驅(qū)動(dòng)程序。此程序有如下特點(diǎn):
不改變現(xiàn)有Windows的操作習(xí)慣。
攔截所有用戶寫請(qǐng)求:在加密文檔寫入磁盤前加密數(shù)據(jù),保證存儲(chǔ)在磁盤的都是加密數(shù)據(jù)。
攔截所有用戶讀請(qǐng)求:在加密文檔數(shù)據(jù)返回給用戶前解密數(shù)據(jù),保證應(yīng)用程序看到的是明文數(shù)據(jù)。
2.1 Create例程中判斷是否需要加解密
Windows文件系統(tǒng)通過Create(IRP_MJ_CREATE)例程來創(chuàng)建或打開文件。文件創(chuàng)建/打開時(shí),Windows系統(tǒng)會(huì)創(chuàng)建一個(gè)FILE_OBJECT對(duì)象來表示此文件,根據(jù)此FILE_OBJECT來獲取文件相關(guān)的信息并判斷是否需要加密。
所有需要加/解密的文件都通過一個(gè)加密集合來維護(hù)[3],當(dāng)前打開的文件如果已在集合中,則肯定需要對(duì)其加/解密;否則:
新建的文件(打開標(biāo)記為FILE_CREATED、FILE_OVERWRITTEN或FILE_SUPERSEDED者,都認(rèn)定為新建),則根據(jù)設(shè)定的規(guī)則判斷是否需要對(duì)其加/解密。
打開的文件,則先獲取其加/解密標(biāo)志(與文件關(guān)聯(lián)的加/解密相關(guān)信息);如果有,則對(duì)其加/解密。
2.2 Write例程中加密
Windows的寫操作在Write(IRP_MJ_WRITE)例程中捕獲。當(dāng)寫請(qǐng)求(IRP)到達(dá)時(shí),先獲取FILE_OBJECT對(duì)象,來判斷是否為加密文件。非加密文件直接放行(Pass Through)即可;即使是加密文件,也不是所有的寫操作都需要加密,只有在真實(shí)數(shù)據(jù)要寫入到磁盤時(shí)(標(biāo)記位為IRP_NOCACHE,且數(shù)據(jù)長度大于零)才需要加密。
對(duì)于要加密數(shù)據(jù)的寫請(qǐng)求,在IRP傳遞到下一層前以及完成后,都需要進(jìn)行處理:
在IRP傳遞到下層前,需要對(duì)數(shù)據(jù)進(jìn)行加密:
申請(qǐng)非分頁內(nèi)存(設(shè)為緩沖區(qū)N),用于存放加密后的數(shù)據(jù)。
用緩沖區(qū)N來替換IRP中原來的UserBuff(設(shè)為緩沖區(qū)O)。
在IRP完成后,要做清理:
把IRP中的UserBuff設(shè)回為緩沖區(qū)O。
釋放前面申請(qǐng)的緩沖區(qū)N。
加密數(shù)據(jù)一定要存放在新申請(qǐng)的緩沖區(qū)中去,不能對(duì)原有緩沖區(qū)中的內(nèi)容進(jìn)行修改。
2.3 Read例程中解密
Windows的讀操作可在Read(IRP_MJ_READ)例程中捕獲。當(dāng)寫讀請(qǐng)求(IRP)到達(dá)時(shí),先獲取FILE_OBJECT對(duì)象,來判斷是否為加密文件。非加密文件直接放行(Pass Through)即可;即使是加密文件,也不是所有的讀操作都需要解密,只有在真實(shí)從磁盤中讀取數(shù)據(jù)時(shí)(標(biāo)記位為IRP_NOCACHE,且數(shù)據(jù)長度大于零)才需要解密。
對(duì)于要解密數(shù)據(jù)的讀請(qǐng)求,在IRP傳遞到下一層前以及完成后,都需要進(jìn)行處理:
在IRP傳遞到下層前,需要重設(shè)緩沖區(qū):
申請(qǐng)非分頁內(nèi)存(設(shè)為緩沖區(qū)N),用于存放讀取到的加密數(shù)據(jù)。
用緩沖區(qū)N來替換IRP中原來的UserBuff(設(shè)為緩沖區(qū)O)。
在IRP完成后,對(duì)數(shù)據(jù)進(jìn)行解密:
把讀取到的加密數(shù)據(jù)解密到緩沖區(qū)O中。
把IRP中的UserBuff設(shè)回為緩沖區(qū)O。
釋放前面申請(qǐng)的緩沖區(qū)N。
2.4 其他例程操作
除了上面與加解密直接相關(guān)的例程外,還有其他一些例程需要處理,本文就不詳述了:
在Close例程(IRP_MJ_CLOSE)處理與文件關(guān)閉相關(guān)操作。
在SetInformation例程(IRP_MJ_SET_INFORMA -TION)處理重命名、刪除等相關(guān)操作。
在QueryInformation例程(IRP_MJ_QUERY_IN -FORMATION)中處理各種與獲取文件信息相關(guān)的操作
2.5 文件密鑰管理
為保證安全并方便管理,筆者使用對(duì)稱算法來加密文件內(nèi)容,使用非對(duì)稱算法來保護(hù)對(duì)稱算法的密鑰[4],此方案有如下優(yōu)勢(shì):
使用對(duì)稱加密算法對(duì)文件內(nèi)容進(jìn)行加密,來提高效率與安全性。
每個(gè)文件使用獨(dú)立的密鑰,進(jìn)一步提升其安全性。
使用非對(duì)稱算法對(duì)文件密鑰進(jìn)行加密保護(hù),在保證安全的同時(shí)簡化了密鑰管理。
企業(yè)電子文檔數(shù)量巨大且有不同程度的信息敏感度每個(gè)用戶有不同的訪問需求,使得其安全管理非常復(fù)雜。
基于角色的訪問控制將權(quán)限與角色聯(lián)系起來,在系統(tǒng)中根據(jù)應(yīng)用的需要為不同的工作崗位創(chuàng)建相應(yīng)的角色同時(shí)根據(jù)用戶職責(zé)指派合適的角色,用戶通過所指派的角色獲得相應(yīng)的權(quán)限[5],實(shí)現(xiàn)對(duì)文件的訪問如圖2所示:
圖2 訪問控制模型
這樣,整個(gè)訪問控制過程就分成兩個(gè)部分,即訪問權(quán)限與角色相關(guān)聯(lián),角色再與用戶關(guān)聯(lián),從而實(shí)現(xiàn)了用戶與訪問權(quán)限的邏輯分離。
角色/權(quán)限之間的變化比角色/用戶關(guān)系之間的變化相對(duì)要少的多,但是也復(fù)雜的多。所以:分配權(quán)限到角色對(duì)技術(shù)要求較高,由專門的技術(shù)管理人員(文件安全管理人員)來承擔(dān)。
委派用戶到角色不需要很多技術(shù),由行政管理人員來執(zhí)行。
通過用戶與訪問權(quán)限的邏輯分離,基于角色的訪問控制極大的方便了權(quán)限管理,實(shí)現(xiàn)最少權(quán)限原則和職責(zé)分離的原則。
筆者應(yīng)用此方案已成功實(shí)現(xiàn)了多個(gè)系統(tǒng),并取得了良好的效果。要構(gòu)建一個(gè)完善的安全系統(tǒng),除了透明文件加密、權(quán)限管理外,還需要終端外設(shè)管理[6]、網(wǎng)絡(luò)安全管理等各種技術(shù)。只有融合多種技術(shù)才能實(shí)現(xiàn)一個(gè)安全、易用的安全系統(tǒng),來保護(hù)我們的數(shù)據(jù)。
[1] William Stallings著,王張宜, 楊敏, 杜瑞穎,等譯. 密碼編碼學(xué)與網(wǎng)絡(luò)安全——原理與實(shí)踐[M]. 電子工業(yè)出版社,2012.
[2] Rajeev Nagar. Windows NT File System Internals. O’REILLY. 1997.
[3] 徐國棟, 白英彩. 加密文件系統(tǒng)在Windows下的實(shí)現(xiàn)[J]. 微型電腦應(yīng)用, 2006, 22(5):56-58.
[4] Bruce Schneier著,吳世忠, 祝世雄, 張文政,等譯. 應(yīng)用密碼學(xué)——協(xié)議、算法與C源程序[M]. 機(jī)械工業(yè)出版社,2014.
[5] Xuan H L, Doll T, Barbosu M, et al. An enhancement of the Role-Based Access Control model to facilitate information access management in context of team collaboration and workflow. Journal of Biomedical Informatics, 2012, 45(6):1084-1107.
[6] Beckley K, Sikora P, Allos B. File transfer system and method for monitoring and management of remote devices, US8880653[P]. 2014.
File Filter Diver On Windows
Xu Guodong, Zhu Liang
(Shaanxi Defence Vocational and Technical College, Xi’An 710300, China)
Via file filter driver, the I/O subsystem can be extended easily without changing the complex file system. Combined with cryptography and access control technology, a security file system is realized.
File Filter Driver; I/O request package; Role-Based Access Control.
TP183
A
1007-757X(2016)07-0074-02
2016.01.20)
徐國棟(1981-),男,上海其祥電腦系統(tǒng)工程有限公司,工程師,碩士,研究方向:信息安全與網(wǎng)絡(luò)通訊,上海 200237
朱 亮(1983-),男,北京科瑞科技發(fā)展股份有限公司,碩士,研究方向:信息安全與系統(tǒng)應(yīng)用,上海,100097