本發(fā)明涉及一種文件加密中的應(yīng)用程序動(dòng)態(tài)授權(quán)方法,屬于信息安全技術(shù)領(lǐng)域。
背景技術(shù):
文件加密技術(shù)是很多用戶用來保護(hù)自己敏感數(shù)據(jù)的常用技術(shù),一般情況下,文件在存儲(chǔ)介質(zhì)上保持加密的狀態(tài),這些加密文件使用時(shí)因當(dāng)前的使用環(huán)境而呈現(xiàn)不同的效果。授信程序可以正常訪問、修改這些文件,非授信程序則無法訪問或只能訪問到加密后的數(shù)據(jù)。授信程序一般包括專用的繪圖、編程、設(shè)計(jì)等類別的程序,其他所有程序尤其是郵件客戶端、IM客戶端、壓縮工具等用于傳播、外發(fā)方面的程序都屬于非授信程序。通過這種方式,可以將所有的訪問程序劃分為兩類來區(qū)別對(duì)待,達(dá)到防泄密的效果。
由于繪圖、編程、設(shè)計(jì)等類別的程序種類繁多,有已知也有未知的,如果不能夠正確的區(qū)分的話,就會(huì)給正常的工作帶來不便,或者造成泄密事故。這就產(chǎn)生了動(dòng)態(tài)對(duì)應(yīng)用程序授信的需求。
現(xiàn)有的解決方案一般都是通過人為的、詳盡的對(duì)涉密程序進(jìn)行配置,以期得到正常的加密效果。一般的,其工作流程如附圖1所示,傳統(tǒng)方式的策略配置工作量巨大,且容易出錯(cuò)。針對(duì)傳統(tǒng)的、常用的軟件通過實(shí)踐的積累還能夠達(dá)到比較好的效果,但是遇到新軟件,就會(huì)難以配置。就算一時(shí)配置好,但是如果某一天軟件中的某個(gè)冷門功能被使用到,可能仍舊會(huì)產(chǎn)生問題。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的缺陷,本發(fā)明提供一種文件加密中的應(yīng)用程序動(dòng)態(tài)授信方法,其可以對(duì)應(yīng)用程序動(dòng)態(tài)授信,策略配置工作量小,不易出錯(cuò)。
為了解決所述技術(shù)問題,本發(fā)明采用的技術(shù)方案是:一種文件加密中的應(yīng)用程序動(dòng)態(tài)授信方法,包括以下步驟:S01)、探測(cè)文件訪問行為;S02)、判斷文件訪問是夠應(yīng)當(dāng)授信,當(dāng)未知進(jìn)程訪問涉密類型文件時(shí),進(jìn)入動(dòng)態(tài)授信,動(dòng)態(tài)授信包括以下步驟:a)、判斷進(jìn)程是否是涉密進(jìn)程,如果是涉密進(jìn)程,則授信;b)、如果進(jìn)程本身不是涉密進(jìn)程,那么判斷它的父進(jìn)程和更上級(jí)進(jìn)程是否是涉密進(jìn)程,如果不是,則不授信;c)、如果進(jìn)程屬于涉密進(jìn)程的子孫進(jìn)程,則進(jìn)入安全判定環(huán)節(jié),根據(jù)安全判定結(jié)果確認(rèn)是否授信;S03)、將授信結(jié)果反饋給應(yīng)用程序,進(jìn)入應(yīng)用程序自身邏輯。
本發(fā)明所述文件加密中的應(yīng)用程序動(dòng)態(tài)授信方法,安全判定環(huán)節(jié)包括聯(lián)網(wǎng)能力判定、出品廠家判定、數(shù)字簽名判定、進(jìn)程所在位置和依賴項(xiàng)判定以及黑名單規(guī)定判定,當(dāng)該子進(jìn)程不具備聯(lián)網(wǎng)能力、出品廠家和數(shù)字簽名都和已授信的父進(jìn)程保持一致、所在位置和父進(jìn)程在相同或相近文件夾內(nèi)、與父進(jìn)程具備相似的庫(kù)依賴關(guān)系以及不處于黑名單之內(nèi)時(shí),動(dòng)態(tài)的自動(dòng)授信。
本發(fā)明所述文件加密中的應(yīng)用程序動(dòng)態(tài)授信方法,探測(cè)文件訪問行為時(shí),通過在操作系統(tǒng)底層的文件過濾驅(qū)動(dòng)做到監(jiān)視文件的訪問,通過進(jìn)程創(chuàng)建和銷毀通知得到進(jìn)程的生存周期,兩者結(jié)合探測(cè)到每個(gè)進(jìn)程對(duì)所有文件的訪問請(qǐng)求。
本發(fā)明所述文件加密中的應(yīng)用程序動(dòng)態(tài)授信方法,步驟2中某進(jìn)程被動(dòng)態(tài)授信,將該進(jìn)程的資料保存起來。
本發(fā)明的有益效果:本發(fā)明使用動(dòng)態(tài)授信的方式使不完全配置的策略能夠發(fā)揮完全的作用,配置簡(jiǎn)便,且具備一定的智能特性,只要配置了主程序和主文件類型,再選擇性的配置動(dòng)態(tài)授信的規(guī)則,即可實(shí)現(xiàn)良好效果;預(yù)后性好,由于規(guī)則的存在,基本策略外的文件訪問也能自動(dòng)處理。
附圖說明
圖1為現(xiàn)有加密文件的工作流程圖;
圖2為本發(fā)明所述文件加密中的應(yīng)用程序動(dòng)態(tài)授信方法的流程圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說明。
首先對(duì)本實(shí)施例中出現(xiàn)的縮略語和關(guān)鍵術(shù)語進(jìn)行說明。
文件加密:是一種根據(jù)要求在操作系統(tǒng)層自動(dòng)地對(duì)寫入存儲(chǔ)介質(zhì)的數(shù)據(jù)進(jìn)行加密的技術(shù),目前主流的兩種方式分別是磁盤加密和文件內(nèi)容加密。磁盤加密的主要做法是將整個(gè)磁盤介質(zhì)加密,內(nèi)部的所有數(shù)據(jù)無論是否對(duì)應(yīng)具體文件都加密,例如微軟的Bitlocker技術(shù)。文件內(nèi)容加密是依照具體文件的不同而選擇性的加密,不同的文件可能具有不同的加密狀態(tài),例如NTFS文件系統(tǒng)中含有的文件加密技術(shù)。
透明加密:透明加密技術(shù)是近年來針對(duì)企業(yè)文件保密需求應(yīng)運(yùn)而生的一種文件加密技術(shù)。它是指對(duì)使用者來說是無感知的。當(dāng)使用者在打開或編輯指定文件時(shí),系統(tǒng)將自動(dòng)對(duì)未加密的文件進(jìn)行加密,對(duì)已加密的文件自動(dòng)解密。文件在硬盤上是密文,在內(nèi)存中是明文。一旦離開使用環(huán)境,由于應(yīng)用程序無法得到自動(dòng)解密的服務(wù)而無法打開,從而起來保護(hù)文件內(nèi)容的效果。
進(jìn)程:是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。在早期面向進(jìn)程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是程序的基本執(zhí)行實(shí)體;在當(dāng)代面向線程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是線程的容器。程序是指令、數(shù)據(jù)及其組織形式的描述,進(jìn)程是程序的實(shí)體。
IDE(集成開發(fā)環(huán)境):是用于提供程序開發(fā)環(huán)境的應(yīng)用程序,一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面等工具。集成了代碼編寫功能、分析功能、編譯功能、調(diào)試功能等一體化的開發(fā)軟件服務(wù)套。
授信訪問:當(dāng)進(jìn)程訪問磁盤上的加密數(shù)據(jù)的時(shí)候,依照進(jìn)程的不同,對(duì)磁盤數(shù)據(jù)讀取、更改的權(quán)限也不同。賦予一個(gè)進(jìn)程訪問加密數(shù)據(jù)的能力的過程就是授信訪問過程。與之對(duì)應(yīng)的是非授信訪問,它具體表現(xiàn)為拒絕訪問或只能訪問到密文。
現(xiàn)在對(duì)程序的授信是通過人為的、詳盡的對(duì)涉密程序進(jìn)行配置,以期得到正常的加密效果。如圖1所示,其工作流程為:未知程序訪問涉密類型文件,如果程序未授信,則拒絕訪問或者密文訪問;如果程序已授信,則明文訪問?,F(xiàn)有方式的策略配置工作量巨大,且容易出錯(cuò)。針對(duì)傳統(tǒng)的、常用的軟件通過實(shí)踐的積累還能夠達(dá)到比較好的效果,但是遇到新軟件,就會(huì)難以配置。就算一時(shí)配置好,但是如果某一天軟件中的某個(gè)冷門功能被使用到,可能仍舊會(huì)產(chǎn)生問題。
本實(shí)施例所述文件加密中的應(yīng)用程序動(dòng)態(tài)授信方法使用動(dòng)態(tài)授信的方式使不完全配置的策略能夠發(fā)揮完全的作用,策略配置工作量較小,且具備一定的智能特性,只要配置了主程序和主文件類型,再選擇性的配置一定的規(guī)則,即可實(shí)現(xiàn)良好效果。
本方法有兩個(gè)關(guān)鍵點(diǎn),一是未知進(jìn)程的動(dòng)態(tài)授信,二是未知類型文檔的動(dòng)態(tài)授信。其中對(duì)未知進(jìn)程的動(dòng)態(tài)授信本質(zhì)上是在未知的軟件進(jìn)程試圖訪問涉密類型文件時(shí)給予或拒絕訪問權(quán)限。對(duì)未知類型文檔的動(dòng)態(tài)授信本質(zhì)上是對(duì)未知類型文檔被訪問時(shí)的訪問程序給予或拒絕訪問權(quán)限。這兩個(gè)關(guān)鍵點(diǎn)體現(xiàn)在本方法的流程圖中,如圖2所示,該過程本質(zhì)是在未知的軟件進(jìn)程試圖訪問涉密類型文件時(shí)給予或拒絕訪問權(quán)限,具體為:
S01)、探測(cè)文件訪問行為。通過在操作系統(tǒng)底層的文件過濾驅(qū)動(dòng)可以做到監(jiān)視文件的訪問,通過進(jìn)程創(chuàng)建和銷毀通知可以得到進(jìn)程的生存周期,兩者結(jié)合可以探測(cè)到每個(gè)進(jìn)程針對(duì)所有的文件的訪問請(qǐng)求,包括新建、讀取、修改、刪除等操作。
S02)、判斷文件訪問是否應(yīng)當(dāng)授信。這里主要根據(jù)策略配置來運(yùn)算處理結(jié)果,當(dāng)當(dāng)進(jìn)程試圖訪問涉密類型文件時(shí)按以下步驟依次處理:
a)、判斷進(jìn)程是否是涉密進(jìn)程,如果是涉密進(jìn)程,則授信;
b)、如果進(jìn)程本身不是涉密進(jìn)程,那么判斷它的父進(jìn)程和更上級(jí)進(jìn)程是否是涉密進(jìn)程,如果不是,則不授信;
c)、如果進(jìn)程屬于涉密進(jìn)程的子孫進(jìn)程,則進(jìn)入安全判定環(huán)節(jié);
d)、安全判定中要判斷該進(jìn)程是否是安全的子進(jìn)程,主要通過如下幾點(diǎn)來做判斷:
聯(lián)網(wǎng)能力,如果進(jìn)程具備聯(lián)網(wǎng)能力,則可能導(dǎo)致文件的外發(fā),則不予以自動(dòng)授信;
出品廠家,看進(jìn)程對(duì)應(yīng)可執(zhí)行文件中的廠家信息,看是否同已授信的父進(jìn)程屬于同一廠家;
數(shù)字簽名,看進(jìn)程對(duì)應(yīng)可執(zhí)行文件中的數(shù)字簽名信息,看是否同已授信的父進(jìn)程屬于同一證書鏈簽名的;
進(jìn)程所在位置和依賴項(xiàng),看進(jìn)程是否和父進(jìn)程在相同或相近文件夾內(nèi),是否具備相似的庫(kù)依賴關(guān)系;
黑名單規(guī)則,看該進(jìn)程是否在策略中已經(jīng)明確歸屬于不可授信進(jìn)程;
如果該子進(jìn)程不具備聯(lián)網(wǎng)能力、出品廠家和數(shù)字簽名都和已授信的父進(jìn)程保持一致、所在位置和父進(jìn)程在相同或相近文件夾內(nèi)、與父進(jìn)程具備相似的庫(kù)依賴關(guān)系以及不處于黑名單之內(nèi)時(shí),則動(dòng)態(tài)的自動(dòng)授信。
e)、如果進(jìn)程被動(dòng)態(tài)授信,則將該進(jìn)程的資料保存起來,這樣下次再觸發(fā)訪問檢測(cè)時(shí),不必重復(fù)整個(gè)驗(yàn)證過程。
S03)、將授信結(jié)果反饋給應(yīng)用程序,進(jìn)入應(yīng)用程序自身邏輯。應(yīng)用程序?qū)ξ募脑L問請(qǐng)求被允許或拒絕,進(jìn)入自身程序邏輯繼續(xù)運(yùn)行。如果是授信訪問,那么它將能夠訪問到明文的文件內(nèi)容。
下面以兩個(gè)實(shí)際應(yīng)用場(chǎng)景為例說下該方法能達(dá)到的效果:
有一款著名的PCB設(shè)計(jì)軟件Altium designer,它所處理的文件類型是PcbDoc、SchDoc、PrjPcb,但是,在一些使用場(chǎng)景中,此軟件會(huì)調(diào)用子程序來處理這些文件類型。而這些子程序是插件式的,往往不可預(yù)知。此時(shí),我們配置上允許Altium designer主程序訪問這些文件類型,并且開啟動(dòng)態(tài)授信,則Altium designer的子進(jìn)程也能夠處理這些文件類型,達(dá)到正常使用的效果。
著名的程序設(shè)計(jì)軟件Visual Studio是Windows平臺(tái)上使用C#、C++等程序設(shè)計(jì)語言開發(fā)軟件的首選IDE,是Microsoft在生成C++軟件的時(shí)候,Visual Studio會(huì)將所有生成任務(wù)做成一個(gè)任務(wù)委托給MSBuild這個(gè)程序來執(zhí)行,MSBuild又針對(duì)各個(gè)源代碼文件執(zhí)行cl、mt、link等軟件來具體完成編譯、鏈接等任務(wù)。這時(shí),可以開啟針對(duì)Visual Studio開啟動(dòng)態(tài)授信,自動(dòng)授信這一族構(gòu)建軟件。由于動(dòng)態(tài)授信規(guī)則的存在,Visual Studio在使用C#、F#、Visual Basic等程序設(shè)計(jì)語言的時(shí)候也能夠自動(dòng)授信。
本方法的關(guān)鍵點(diǎn)在于使用動(dòng)態(tài)授信的方式使不完全配置的策略能夠發(fā)揮完全的作用,使配置簡(jiǎn)便,只需要配置主程序、主類型和一定的規(guī)則就能對(duì)程序動(dòng)態(tài)授權(quán),并且預(yù)后性好,由于規(guī)則的存在,基本策略外的文件訪問也能自動(dòng)處理。
以上描述的僅是本發(fā)明的基本原理和優(yōu)選實(shí)施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明做出的改進(jìn)和替換,屬于本發(fā)明的保護(hù)范圍。