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