專利名稱:一種實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全技術(shù)領(lǐng)域,具體的涉及數(shù)據(jù)加密與解密技術(shù)。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的發(fā)展,全球人類都享受到信息網(wǎng)絡(luò)化帶來的方便。而信息技術(shù)的發(fā)展,其先決條件就是要有完善的安全保密技術(shù)。而缺乏保密性可能會(huì)導(dǎo)致嚴(yán)重的后果,個(gè)人和企業(yè)都會(huì)受到嚴(yán)重影響。而無論是網(wǎng)絡(luò)信息還是本地資料的安全保密技術(shù),都是建立在數(shù)據(jù)加密技術(shù)上面。
市場上的加密設(shè)備一般采用的是軟件方式實(shí)現(xiàn)的文件夾或文件加密技術(shù),很容易被破解,使用時(shí)要插入加密鎖,操作加密文件時(shí)還要輸入密碼,使用文件前要解密,使用后還要記得加密,操作復(fù)雜,很不方便。這種在計(jì)算機(jī)中加密數(shù)據(jù)的一般的做法是,加密算法運(yùn)行在用戶模式下,以API(應(yīng)用程序開發(fā)接口)形式公開給應(yīng)用程序,應(yīng)用程序使用這些API加密文件或文件夾,在需要使用這些文件或文件夾時(shí),使用這些API將其解密。但是這些現(xiàn)有的加密解密技術(shù)都有缺陷所在。
例如一種常用的現(xiàn)有技術(shù),它是一種數(shù)據(jù)加密卡。用戶訪問它的時(shí)候需要輸入口令,也就是基于“what you know”的驗(yàn)證手段。這方法,除了具有口令容易泄漏的缺陷之外,即便口令不被泄漏,由于應(yīng)用程序是運(yùn)行在操作系統(tǒng)的用戶模式(user mode),在這種模式下口令很容易被駐留在計(jì)算機(jī)內(nèi)存中的木馬程序或網(wǎng)絡(luò)中的監(jiān)聽設(shè)備截獲??梢哉f,這樣的加密手段,安全性是非常低的。
現(xiàn)有技術(shù)中常用的另一款數(shù)據(jù)加密卡,這種卡通常使用PCI接口,它連接在計(jì)算機(jī)主板和硬盤之間,相當(dāng)于在主板和硬盤之間增加一個(gè)黑匣子的設(shè)計(jì),數(shù)據(jù)經(jīng)過它的時(shí)候自動(dòng)被加解密。雖然不再經(jīng)過用戶模式,但是這種技術(shù)的缺陷還是體現(xiàn)在安全性的不足上,尤其是算法和密鑰不分開的設(shè)計(jì),因?yàn)閷?duì)于這類產(chǎn)品,密鑰實(shí)質(zhì)上經(jīng)過串口連接到加密卡上。因此這款產(chǎn)品不適合應(yīng)用于高機(jī)密級(jí)別的場合。
還有,例如深圳亞碩科技的一款硬盤加密裝置D-LOCK TP-3218內(nèi)置式硬盤加密鎖,它是一種安全性較高的數(shù)據(jù)保密裝置??墒沁@個(gè)裝置的使用有很多不便之處,最明顯的一點(diǎn)在于,它無法適用于新增的磁盤。一個(gè)新的磁盤如果要使用這個(gè)裝置,必須先經(jīng)過格式化。這種不便對(duì)于已經(jīng)存儲(chǔ)了數(shù)據(jù)的磁盤,顯然是難以克服的。而且,對(duì)于將分區(qū)表單獨(dú)存儲(chǔ)的做法,一旦因?yàn)樾钜馄茐亩鴣G失硬盤分區(qū)表,將會(huì)對(duì)磁盤數(shù)據(jù)帶來難以恢復(fù)的破壞。
可見,現(xiàn)有技術(shù)中的大多數(shù)數(shù)據(jù)保護(hù)技術(shù)都有其缺陷所在,這表現(xiàn)在(1)大多數(shù)技術(shù)中,算法和密鑰不是分開的。由于算法和密鑰是數(shù)據(jù)保密技術(shù)中的關(guān)鍵所在,不分開的算法和密鑰一定程度上降低了數(shù)據(jù)保護(hù)的安全性。
(2)幾乎所有的現(xiàn)有技術(shù)中,無論是軟件加密技術(shù)還是硬件加密技術(shù),算法的固有的,不具備擴(kuò)展性。用戶無法根據(jù)需要增加算法。這對(duì)于特殊場合的應(yīng)用顯然是無法適應(yīng)的,例如高機(jī)密級(jí)別的應(yīng)用,如軍事組織。
(3)大多數(shù)加密技術(shù),用戶端的操作復(fù)雜。每次需要使用加密數(shù)據(jù)的時(shí)候,都需要經(jīng)過加密和解密。當(dāng)所需數(shù)據(jù)是常用數(shù)據(jù)時(shí),這種設(shè)計(jì)是有待改進(jìn)的。
另一方面,對(duì)于操作系統(tǒng),Windows NT系列操作系統(tǒng)包括用戶模式(User mode)和核心模式(Kernel mode)。其中,在用戶模式中,軟件在沒有特權(quán)的狀態(tài)下運(yùn)行,對(duì)系統(tǒng)資源只有有限的訪問權(quán)限,例如,軟件不能直接訪問硬件。Windows NT中基礎(chǔ)的應(yīng)用程序和被保護(hù)的子系統(tǒng)都運(yùn)行在用戶模式下。而在核心模式中,軟件可以訪問所有的系統(tǒng)資源,例如計(jì)算機(jī)硬件和敏感的系統(tǒng)數(shù)據(jù)。核心模式下的程序與用戶模式程序有著嚴(yán)格的隔離。核心模式中的軟件構(gòu)成了操作系統(tǒng)的核心,它們可以分為(1)執(zhí)行體(Executive),包括為環(huán)境子系統(tǒng)和其他執(zhí)行體組件提供系統(tǒng)服務(wù)的系統(tǒng)組件。它們執(zhí)行的系統(tǒng)任務(wù)包括I/O(輸入/輸出),文件管理,虛擬內(nèi)存管理,資源管理,以及進(jìn)程內(nèi)部通信等等。
(2)設(shè)備驅(qū)動(dòng)程序(Device drivers),負(fù)責(zé)將組件的調(diào)用(例如,請(qǐng)求打印機(jī))翻譯為硬件操作。設(shè)備驅(qū)動(dòng)程序是核心模式代碼,它將操作系統(tǒng)和硬件聯(lián)系到一起。為了使系統(tǒng)的性能達(dá)到最大,核心模式代碼沒有應(yīng)用程序那樣的內(nèi)存保護(hù)機(jī)制。相反,操作系統(tǒng)充分信任核心模式代碼沒有錯(cuò)誤。由于為了與其他的驅(qū)動(dòng)程序和操作系統(tǒng)組件安全的協(xié)調(diào)工作,因此這些驅(qū)動(dòng)程序和核心模式代碼必須遵循復(fù)雜的規(guī)則的原因。
另一方面在驅(qū)動(dòng)程序的通訊方面,現(xiàn)有技術(shù)通常采用IO方式完成,具體的說,首先,請(qǐng)求方驅(qū)動(dòng)程序?qū)?shù)據(jù)連同請(qǐng)求封包成IRP(即I/O請(qǐng)求包),然后將此IRP傳送給被請(qǐng)求方驅(qū)動(dòng)程序;被請(qǐng)求方分析請(qǐng)求類型,調(diào)用自己的處理函數(shù),再將處理結(jié)果封包返回;請(qǐng)求方釋放IRP,完成調(diào)用。
這種處理方式對(duì)資源的占用大,而且效率低下,無法適應(yīng)磁盤數(shù)據(jù)處理這種海量計(jì)算。
(3)硬件抽象層(HAL,Hardware abstraction layer),負(fù)責(zé)將執(zhí)行體的其它部分與特定的硬件分離開來,使操作系統(tǒng)與多處理器平臺(tái)相兼容。
(4)微內(nèi)核(Microkernel),管理微處理器。它執(zhí)行一些重要的功能,例如調(diào)度,中斷,以及多處理器同步等。
由于核心模式的高安全性,因此,克服現(xiàn)有技術(shù)的不足,開發(fā)一種算法和密鑰都運(yùn)行在操作系統(tǒng)核心模式下數(shù)據(jù)加解密裝置,由此獲得比現(xiàn)有的加解密技術(shù)更安全的體系,并當(dāng)涉及高機(jī)密級(jí)別的應(yīng)用場合時(shí)允許用戶按照一定的規(guī)則自行開發(fā)算法并添加到該系統(tǒng),是有可能實(shí)現(xiàn)的。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問題本發(fā)明的目的是要克服目前現(xiàn)有技術(shù)的缺陷,提出一種安全性更高的、算法具有可擴(kuò)展性、操作上更方便的數(shù)據(jù)安全保護(hù)的系統(tǒng)。
(二)技術(shù)方案本發(fā)明提出一種實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),它包括以下部分(1)消費(fèi)者部分,用于使用算法和密鑰對(duì)數(shù)據(jù)進(jìn)行加解密處理;(2)算法提供者,用于接收來自消費(fèi)者部分的算法連接請(qǐng)求,從密鑰提供者處獲得密鑰并返回給消費(fèi)者部分;算法提供者包括至少一個(gè)算法集設(shè)備;(3)密鑰提供者,負(fù)責(zé)處理來自算法提供者的密鑰連接請(qǐng)求,向算法提供者提供密鑰,它包括至少一個(gè)物理密鑰設(shè)備;(4)管理程序部分,用于在用戶模式下實(shí)現(xiàn)對(duì)各個(gè)設(shè)備的管理,并保證程序不能訪問到密鑰。
上述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其中,算法提供者包括算法設(shè)備管理器驅(qū)動(dòng)程序和算法集設(shè)備;其中算法設(shè)備管理器驅(qū)動(dòng)程序負(fù)責(zé)驅(qū)動(dòng)和管理算法集設(shè)備,將算法連接請(qǐng)求轉(zhuǎn)發(fā)到算法集設(shè)備;算法集設(shè)備接收算法連接請(qǐng)求并返回算法;一個(gè)算法集設(shè)備實(shí)現(xiàn)至少一個(gè)加密算法。
上述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其中,密鑰提供者包括物理密鑰設(shè)備和通用密鑰設(shè)備驅(qū)動(dòng)程序;其中,通用密鑰設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)驅(qū)動(dòng)物理密鑰設(shè)備;物理密鑰設(shè)備解析通用密鑰設(shè)備驅(qū)動(dòng)程序的請(qǐng)求,并返回密鑰。
上述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其中,消費(fèi)者部分所處理的數(shù)據(jù)可以是本地的,也可以是遠(yuǎn)程的。
上述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其中,消費(fèi)者部分、算法設(shè)備管理器驅(qū)動(dòng)程序、通用密鑰設(shè)備驅(qū)動(dòng)程序處于操作系統(tǒng)的核心模式,對(duì)操作系統(tǒng)表現(xiàn)為設(shè)備驅(qū)動(dòng)程序的形式;算法集設(shè)備和物理密鑰設(shè)備對(duì)操作系統(tǒng)表現(xiàn)為設(shè)備。
上述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其中,算法集設(shè)備可以設(shè)備化,它可以是軟件形式的加解密驅(qū)動(dòng)程序,也可以用硬件實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)操作,并允許用戶開發(fā)符合標(biāo)準(zhǔn)的算法設(shè)備,并通過接口將這些設(shè)備添加到算法集中。
上述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其中,物理密鑰設(shè)備可以設(shè)備化,它可以使用各種接口形式,它可以使用USB接口、PCI接口、紅外接口、藍(lán)牙接口等。
上述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其中,驅(qū)動(dòng)程序之間的數(shù)據(jù)傳輸由包傳輸協(xié)議定義統(tǒng)一的數(shù)據(jù)傳輸格式。
(三)有益效果采用本發(fā)明的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),具有以下優(yōu)點(diǎn)
(1)更高的安全性。在本系統(tǒng)中,除了管理程序部分運(yùn)行在用戶模式之外,其余的3部分都運(yùn)行在核心模式。由于操作系統(tǒng)對(duì)用戶模式和核心模式的程序有著嚴(yán)格的隔離,因此保證了本系統(tǒng)的安全性。入侵者難以通過用戶模式的操作竊取數(shù)據(jù)。
(2)允許算法和密鑰的設(shè)備化。由于本系統(tǒng)的3個(gè)部分在操作系統(tǒng)的核心模式都表現(xiàn)為設(shè)備驅(qū)動(dòng)程序,而且各個(gè)設(shè)備之間定義了包傳輸協(xié)議,因此,這3部分具有統(tǒng)一的表現(xiàn)形式。這樣的設(shè)計(jì)實(shí)現(xiàn)了算法和密鑰的接口化設(shè)計(jì),允許算法集設(shè)備和物理密鑰根據(jù)用戶的需要采用不同的形式,例如軟件、硬件、或各種接口的設(shè)備。這樣的設(shè)計(jì)也使得用戶可以根據(jù)自己的需要,開發(fā)符合要求的算法,并通過管理程序注冊、添加到本系統(tǒng)中。這樣的設(shè)計(jì),使得本發(fā)明可以滿足高機(jī)密級(jí)別的應(yīng)用,例如軍隊(duì)設(shè)施等。
(3)由于驅(qū)動(dòng)程序之間的通訊采用非IO的形式,直接請(qǐng)求功能函數(shù)指針,而不是現(xiàn)有技術(shù)中將相關(guān)數(shù)據(jù)和請(qǐng)求封包成IRP的方式。本發(fā)明的通訊方式資源占用更少、速率更高,而且適合海量數(shù)據(jù)的處理。
圖1為本發(fā)明的系統(tǒng)各部分的關(guān)系圖;圖2為采用本發(fā)明的系統(tǒng)引導(dǎo)開始一次數(shù)據(jù)操作的流程圖。
具體實(shí)施例方式
本發(fā)明提出提供數(shù)據(jù)安全保護(hù)的實(shí)現(xiàn)方法,結(jié)合附圖和實(shí)施例說明如下。以下實(shí)施方式僅用于說明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由各權(quán)利要求限定。
實(shí)施例一根據(jù)本發(fā)明,4個(gè)組成部分的關(guān)系如圖1所示。其中,管理控制臺(tái)是管理程序,它運(yùn)行在操作系統(tǒng)的用戶模式(user mode);通用密鑰設(shè)備驅(qū)動(dòng)程序和物理密鑰設(shè)備屬于密鑰提供者;算法設(shè)備管理器驅(qū)動(dòng)程序部分和多個(gè)算法集設(shè)備屬于算法提供者部分,這部分與密鑰是分開獨(dú)立的;消費(fèi)者部分是使用算法和密鑰,對(duì)數(shù)據(jù)進(jìn)行加解密處理的部分,在本實(shí)施例中,它表現(xiàn)為一個(gè)虛擬磁盤總線驅(qū)動(dòng)程序驅(qū)動(dòng)的虛擬磁盤。
為了保證安全性,在本發(fā)明中,算法提供者、密鑰提供者和消費(fèi)者部分這3部分工作在操作系統(tǒng)的核心模式(Kernel mode)。其中,算法設(shè)備管理器驅(qū)動(dòng)程序、通用密鑰設(shè)備驅(qū)動(dòng)程序和消費(fèi)者部分,無論具體實(shí)現(xiàn)形式如何,對(duì)操作系統(tǒng)都表現(xiàn)為核心模式下的設(shè)備驅(qū)動(dòng)程序(Device drivers);算法集設(shè)備、物理密鑰設(shè)備表現(xiàn)為設(shè)備(Device)。
由于操作系統(tǒng)對(duì)用戶模式和核心模式有著嚴(yán)格的隔離,因此,保證用戶不能直接訪問到這些部分,只能通過管理程序訪問到被加解密的數(shù)據(jù),或通過管理者對(duì)算法提供者進(jìn)行擴(kuò)展操作。
下文中將逐一解釋這4個(gè)部分。
(1)算法提供者包括算法設(shè)備管理器驅(qū)動(dòng)程序和算法集設(shè)備,算法集設(shè)備置少有一個(gè)。在本實(shí)施例中,算法集設(shè)備有多個(gè)。
算法設(shè)備管理器驅(qū)動(dòng)程序用于驅(qū)動(dòng)算法集設(shè)備。算法設(shè)備管理器還維護(hù)一個(gè)算法列表,當(dāng)應(yīng)用程序需要時(shí),它根據(jù)算法列表,向這些上層程序提供枚舉服務(wù)。例如,當(dāng)加密盤配置向?qū)С绦蛞笥脩暨x擇算法時(shí),算法管理器會(huì)枚舉出所有算法集設(shè)備內(nèi)的所有算法供用戶選擇。
在操作系統(tǒng)的核心模式中,算法驅(qū)動(dòng)管理器設(shè)備程序可以用C++語言這樣描述
Class AlgoMngr{//連接算法和數(shù)據(jù),處理來自消費(fèi)者部分的連接請(qǐng)求,將請(qǐng)求轉(zhuǎn)達(dá)給算法集設(shè)備。
Connect(AlgoContext* pContext);//斷開連接算法和數(shù)據(jù),處理來自消費(fèi)者部分的斷開請(qǐng)求,將請(qǐng)求轉(zhuǎn)達(dá)給算法集設(shè)備。
Disconnect(AlgoContext* pContext);//查詢算法,即維護(hù)算法列表,使得用戶模式下的管理程序可調(diào)用這個(gè)方法枚舉已經(jīng)安裝的算法。
Query(AlgoDescBlockList* pDescList);//注冊,使得算法集設(shè)備在系統(tǒng)初始化時(shí)(Init),將自己注冊到算法管理器中。
Register(AlgoDescBlock* pDesc);//注銷,使得算法集設(shè)備在系統(tǒng)析構(gòu)時(shí),將自己從算法管理器注銷。
UnRegister(AlgoDescBlock* pDesc);}算法集設(shè)備是各種算法的宿主,也就是說,算法存儲(chǔ)在算法集設(shè)備中。由于算法集設(shè)備與本系統(tǒng)中的其他部分的連接都必須通過算法設(shè)備管理器驅(qū)動(dòng)程序來驅(qū)動(dòng),因此,算法集設(shè)備無論表現(xiàn)為軟件形式還是以硬件形式,對(duì)操作系統(tǒng)都是一致的。也就是說,算法集設(shè)備可以是磁盤數(shù)據(jù)的一部分以軟件的形式存在,也可以是已經(jīng)設(shè)備化的硬件。例如在本實(shí)施例中,算法集設(shè)備以軟件的形式存在,它們都可以這樣描述Class AlgoDevice{Connect(AlgoContext* pContext); //連接算法和數(shù)據(jù)Disconnect(AlgoContext* pContext);//斷開連接算法和數(shù)據(jù)Init(); //初始化算法設(shè)備}這種驅(qū)動(dòng)程序形式的設(shè)計(jì),實(shí)現(xiàn)了算法的接口化設(shè)計(jì),它允許用戶自行開發(fā)算法并添加到本發(fā)明的系統(tǒng)中。只要用戶所開發(fā)的算法符合本發(fā)明的要求(例如根據(jù)本實(shí)施例,使用256位密鑰的對(duì)稱性算法,因?yàn)楸緦?shí)施例的密鑰使用對(duì)稱性密鑰,支持64位的整數(shù)倍長度,最大支持1024位),并且表現(xiàn)為一個(gè)設(shè)備、可以被算法設(shè)備管理器驅(qū)動(dòng)程序所驅(qū)動(dòng)。因此,用戶所開發(fā)的算法也可以有多種形式。例如,它可以是軟件形式的,也可以做成設(shè)備,例如USB設(shè)備,只要這個(gè)設(shè)備可以被算法設(shè)備管理器驅(qū)動(dòng)程序所驅(qū)動(dòng),在系統(tǒng)請(qǐng)求連接這個(gè)設(shè)備時(shí),處理相關(guān)請(qǐng)求。
一個(gè)算法集設(shè)備可以包括一個(gè)或多個(gè)的加密算法。例如在本實(shí)施例中,算法設(shè)備以軟件的形式被安裝到計(jì)算機(jī)中,具體使用對(duì)稱性算法。加密算法方面,本實(shí)施例中使用了IDEA、RIJNDEAL、RC5、RC6等高級(jí)加密算法,這些算法都是國際上公開的、公認(rèn)的、安全的算法。一個(gè)安全的公開算法的一般標(biāo)準(zhǔn)是,攻擊者即使知道大量的明文/密文對(duì),并且十分清楚算法的機(jī)理,還是無法推算出密鑰。
(2)密鑰提供者包括通用密鑰設(shè)備驅(qū)動(dòng)程序和物理密鑰設(shè)備,物理密鑰設(shè)備可以是一個(gè)或多個(gè)。
其中,通用密鑰設(shè)備驅(qū)動(dòng)程序用于驅(qū)動(dòng)物理密鑰設(shè)備,它表現(xiàn)為核心模式下的設(shè)備驅(qū)動(dòng)程序。它處理密鑰的連接請(qǐng)求、斷開連接請(qǐng)求等。
物理密鑰設(shè)備受通用密鑰設(shè)備驅(qū)動(dòng)程序的驅(qū)動(dòng),于物理密鑰設(shè)備與本系統(tǒng)中的其他部分的連接都必須通過通用密鑰設(shè)備驅(qū)動(dòng)程序來驅(qū)動(dòng),因此,物理密鑰設(shè)備無論表現(xiàn)為軟件形式還是以硬件形式,對(duì)操作系統(tǒng)都是一致的。例如在本實(shí)施例中,密鑰設(shè)備是一套具有RF(無線電)傳輸?shù)难b置,它分為2部分,一部分是信號(hào)接收器,這個(gè)接收器通過USB接口與通用計(jì)算機(jī)連接;另一部分是發(fā)射裝置,供用戶隨身攜帶。用戶隨身攜帶的發(fā)射裝置會(huì)每隔一段時(shí)間發(fā)送密鑰到接收器上。接收器將密鑰傳輸給算法設(shè)備,經(jīng)驗(yàn)證后算法設(shè)備使用該密鑰對(duì)數(shù)據(jù)進(jìn)行加解密操作。當(dāng)用戶離開計(jì)算機(jī)一定距離,例如在本實(shí)施例中是3米左右,接收器不再接收到密鑰,算法設(shè)備在缺少密鑰的情況下,數(shù)據(jù)自然不能被合法的操作。本實(shí)施例中的算法設(shè)備使用256位密鑰的對(duì)稱性密鑰,它支持64位的整數(shù)倍的密鑰,最大支持可1024位的密鑰。
當(dāng)系統(tǒng)啟動(dòng)完畢后,通用密鑰設(shè)備驅(qū)動(dòng)程序也相應(yīng)的啟動(dòng),并時(shí)刻等待任何物理密鑰設(shè)備的接入。當(dāng)算法設(shè)備管理器驅(qū)動(dòng)程序請(qǐng)求連接密鑰時(shí),請(qǐng)求會(huì)被傳遞給通用密鑰設(shè)備驅(qū)動(dòng)程序。對(duì)不同的算法接入相應(yīng)的物理密鑰設(shè)備,通用密鑰設(shè)備驅(qū)動(dòng)程序?qū)脑O(shè)備中存儲(chǔ)的主密鑰派生出子密鑰,分發(fā)給算法連接。當(dāng)算法結(jié)束。密鑰設(shè)備移出后,通用密鑰設(shè)備驅(qū)動(dòng)程序會(huì)清除所有算法集設(shè)備中的和消費(fèi)者部分中的密鑰,保證系統(tǒng)的安全性。
為了實(shí)現(xiàn)密鑰設(shè)備的接口化設(shè)計(jì),在本實(shí)施例中還確定了密鑰傳輸時(shí)的數(shù)據(jù)結(jié)構(gòu),即定義了密鑰設(shè)備的包傳輸協(xié)議。這樣,對(duì)于不同接口形態(tài)(例如,USB、PCI)的物理密鑰設(shè)備,由于數(shù)據(jù)傳輸時(shí)都使用包傳輸協(xié)議,因此它們具有相同的表現(xiàn)形態(tài)。包傳輸協(xié)議的定義如下typedef struct cwkdPacket{struct Head{union{ULONG ulLeader; //長整數(shù)型前導(dǎo)碼UCHAR uchLeader[4]; //字符形式前導(dǎo)碼};UCHAR uchLength;//報(bào)文長度(不包括頭尾)UCHAR uchFlag; //標(biāo)記UCHAR reserver[2]; //保留}head;UCHAR Data[head.uchLength];struct Tail{USHORT usChecksumData; //數(shù)據(jù)校驗(yàn)和USHORT usChecksumTotal; //全校驗(yàn)和ULONG ulTail; //尾碼}tail;}cwkdPacketHead;可見,由于密鑰設(shè)備和算法設(shè)備無論是相互之間的連接、還是遇系統(tǒng)中其他部分的連接,都必須通過驅(qū)動(dòng)程序的驅(qū)動(dòng),因此,對(duì)操作系統(tǒng)都表現(xiàn)為設(shè)備;又由于定義了數(shù)據(jù)傳輸?shù)陌鼌f(xié)議,這種包協(xié)議使得密鑰設(shè)備和算法設(shè)備之間的數(shù)據(jù)通信都具有相同的表現(xiàn),因此,使得算法和密鑰都實(shí)現(xiàn)了接口化,也就是說可以設(shè)備化。這樣,無論算法設(shè)備還是密鑰設(shè)備,不管使用怎樣的實(shí)施形式,例如在本實(shí)施例中,算法集設(shè)備是軟件形式而密鑰設(shè)備是硬件形式,它們之間的任何數(shù)據(jù)交換或連接對(duì)操作系統(tǒng)而言都是一致的,都受各自的驅(qū)動(dòng)程序所驅(qū)動(dòng)。因此,用戶可以自行開發(fā)符合要求的算法,添加到本發(fā)明的系統(tǒng)中。
(3)消費(fèi)者部分是在本系統(tǒng)中使用算法和密鑰對(duì)數(shù)據(jù)進(jìn)行加解密處理的部分,它同樣運(yùn)行在操作系統(tǒng)的核心模式。它對(duì)操作系統(tǒng)同樣表現(xiàn)為驅(qū)動(dòng)程序的形式。所以同樣的,根據(jù)本發(fā)明,它可以有多種形式,例如本地磁盤中的虛擬磁盤總線驅(qū)動(dòng)程序,或作為USB設(shè)備、PCI設(shè)備等。本實(shí)施例中,以本地磁盤中的虛擬磁盤總線驅(qū)動(dòng)程序?yàn)槔?qū)動(dòng)一個(gè)虛擬磁盤,使用算法和密鑰處理相關(guān)數(shù)據(jù),這部分技術(shù)屬于本領(lǐng)域技術(shù)人員都知道的現(xiàn)有技術(shù),因此不再贅述。
(4)管理程序部分是一個(gè)運(yùn)行在用戶模式的應(yīng)用程序。它用于提示用戶系統(tǒng)的工作狀態(tài),設(shè)置各設(shè)備的選項(xiàng),例如,用戶可以在虛擬磁盤建立時(shí),通過這個(gè)管理程序,指定該磁盤的其中一個(gè)屬性,定義這個(gè)磁盤是否“自動(dòng)激活的”,如果是,當(dāng)系統(tǒng)獲得正確的驗(yàn)證信息并且密鑰有效時(shí),這個(gè)虛擬磁盤會(huì)自動(dòng)探出;如果不是,則用戶必須通過管理程序手動(dòng)打開這部分?jǐn)?shù)據(jù)。用戶要對(duì)相關(guān)數(shù)據(jù)進(jìn)行讀寫操作時(shí)實(shí)際上是經(jīng)過管理程序,但是數(shù)據(jù)在加解密的過程中,算法和密鑰之間的連接、數(shù)據(jù)的傳遞都與這個(gè)用戶模式程序無關(guān),因此保障了系統(tǒng)的安全性。因此,這部分內(nèi)容也屬于本領(lǐng)域技術(shù)人員所熟知的技術(shù),在此不再贅述。
本發(fā)明的工作流程如圖2所示。在此之前,用戶可以通過管理控制臺(tái)建立虛擬磁盤,這時(shí)虛擬磁盤總線驅(qū)動(dòng)程序根據(jù)用戶的虛擬盤配置信息(這些信息包括指定的路徑、算法和磁盤大小),在一個(gè)本地磁盤的普通分區(qū)上創(chuàng)建一個(gè)宿主文件,宿主文件的空間大小就是該虛擬盤的大小。創(chuàng)建完畢后,虛擬磁盤總線驅(qū)動(dòng)程序?qū)⒃撎摂M磁盤的配置信息保存到操作系統(tǒng)的注冊表。用戶可以創(chuàng)建多個(gè)虛擬磁盤。作為一個(gè)選項(xiàng),用戶可以指定虛擬盤是“可自動(dòng)激活”的。這些虛擬磁盤具有“系統(tǒng)文件”屬性,一般情況下是隱藏的,也就是說,當(dāng)用戶不通過管理控制器,是不會(huì)知道有這部分磁盤空間的。
在操作系統(tǒng)啟動(dòng)時(shí)(登錄之前),虛擬磁盤總線驅(qū)動(dòng)程序啟動(dòng),枚舉所有的虛擬盤配置信息,打開所有的宿主文件以防止用戶或其它應(yīng)用程序誤刪除宿主文件。
系統(tǒng)啟動(dòng)時(shí),算法管理器設(shè)備驅(qū)動(dòng)程序向操作系統(tǒng)加載運(yùn)行。操作系統(tǒng)啟動(dòng)后,算法集設(shè)備向算法管理設(shè)備驅(qū)動(dòng)程序注冊(由Register(AlgoDescBlock* pDesc)程序段完成),注冊的算法集設(shè)備信息內(nèi)包括算法的個(gè)數(shù)、名稱、分組長度、支持密鑰長度、作者等。
算法管理器設(shè)備驅(qū)動(dòng)程序還維護(hù)一個(gè)算法列表(由Query(AlgoDescBlockList* pDescList)程序段完成),用戶可以從算法列表中指定使用特點(diǎn)算法,也可以由系統(tǒng)從算法集設(shè)備中指派算法。然后當(dāng)需要進(jìn)行數(shù)據(jù)加解密處理時(shí),系統(tǒng)會(huì)請(qǐng)求算法連接,算法管理器設(shè)備驅(qū)動(dòng)程序向算法集設(shè)備請(qǐng)求連接算法(由Connect(AlgoContext* pContext)程序段完成);算法集設(shè)備收到連接請(qǐng)求后會(huì)分配一個(gè)算法的實(shí)例。值得一提的是,對(duì)于同一個(gè)算法分配的不同實(shí)例,由于其代碼的運(yùn)行是獨(dú)立的、不受干擾的,因此不會(huì)存在安全隱患。
成功連接算法后,算法設(shè)備管理器驅(qū)動(dòng)程序向通用密鑰設(shè)備驅(qū)動(dòng)程序請(qǐng)求連接密鑰。這時(shí),如果用戶攜帶隨身的RF發(fā)射器接近計(jì)算機(jī)3米范圍內(nèi),接收器會(huì)接收到發(fā)射器發(fā)出的密鑰。這些密鑰信息會(huì)通過USB接口傳輸?shù)剿惴ㄔO(shè)備管理器驅(qū)動(dòng)程序。密鑰連接請(qǐng)求成功后,進(jìn)入數(shù)據(jù)加解密操作。
值得一提的是,在本實(shí)施例中,密鑰的生成是硬隨機(jī)的,它是發(fā)射器中的芯片生成的硬隨機(jī)數(shù),保證了密鑰的安全性。另一方面,使用密鑰的各種加密算法程序都在Windows的核心模式下運(yùn)行,它們的表現(xiàn)形式一定是一個(gè)驅(qū)動(dòng)程序。由于驅(qū)動(dòng)程序使用未分頁的內(nèi)存,可以避免密鑰數(shù)據(jù)交換到磁盤上,因此密鑰能有效的與用戶模式隔離,防止被攻擊者獲取。
數(shù)據(jù)加解密處理前會(huì)先驗(yàn)證密鑰的正確性。如果密鑰有效,密鑰和待處理的數(shù)據(jù)都提交到算法集設(shè)備進(jìn)行加解密處理。如果當(dāng)中發(fā)生差錯(cuò),相關(guān)信息會(huì)返回管理程序,友好的等待用戶響應(yīng)(例如重新使用正確的密鑰)。驗(yàn)證密鑰的有效性和數(shù)據(jù)加解密技術(shù)都屬于本領(lǐng)域技術(shù)人員的常用技術(shù),在此不作贅述。
這樣,在用戶模式上,虛擬磁盤將正常工作,對(duì)用戶表現(xiàn)成為一個(gè)普通的磁盤。當(dāng)用戶向虛擬盤寫入數(shù)據(jù)時(shí),例如存儲(chǔ)數(shù)據(jù),數(shù)據(jù)的所有部分都將用前一過程中的子密鑰和加密算法在核心模式下進(jìn)行加密,然后再寫入到宿主文件。反之,從虛擬盤讀取數(shù)據(jù)時(shí),例如打開一個(gè)文件,虛擬磁盤總線驅(qū)動(dòng)程序自動(dòng)從宿主文件讀出并解密數(shù)據(jù)。
在系統(tǒng)析構(gòu)時(shí)(例如注銷用戶),算法設(shè)備管理器驅(qū)動(dòng)程序斷開算法集設(shè)備的連接(Disconnect(AlgoContext* pContext)),并向操作系統(tǒng)注銷自己(UnRegister(AlgoDescBlock* pDesc))。
另外在本發(fā)明中,由于各個(gè)驅(qū)動(dòng)程序(包括算法設(shè)備管理器驅(qū)動(dòng)程序、通用密鑰設(shè)備驅(qū)動(dòng)程序和消費(fèi)者部分)處于核心模式下,在核心模式中,所有程序共享一個(gè)內(nèi)存空間,因此,允許函數(shù)指針可以通用。因此,本發(fā)明的各個(gè)驅(qū)動(dòng)程序之間的通訊可以采用非IO(輸入輸出)的通信方式,它具體的實(shí)現(xiàn)步驟是
(1)初始時(shí),請(qǐng)求方使用IRP(I/O請(qǐng)求包)封送一個(gè)請(qǐng)求,請(qǐng)求獲取一個(gè)功能函數(shù)的指針列表。
(2)被請(qǐng)求方將自己的功能函數(shù)指針返回給請(qǐng)求方。
(3)在需要進(jìn)行處理時(shí),請(qǐng)求者直接按需調(diào)用被請(qǐng)求者的函數(shù)即可。(類似于用戶模式下的API調(diào)用)(4)直至請(qǐng)求者不再需要相應(yīng)服務(wù),請(qǐng)求者斷開連接。
這樣的通訊方式能節(jié)省系統(tǒng)資源,效率較現(xiàn)有技術(shù)中常用的IO方式高,尤其適合對(duì)海量數(shù)據(jù)的存儲(chǔ)和處理。
實(shí)施例二本實(shí)施例用于說明不同接口形式的消費(fèi)者部分對(duì)于本系統(tǒng)具有統(tǒng)一的表現(xiàn)。
本實(shí)施例中,消費(fèi)者部分表現(xiàn)為PCI接口的網(wǎng)絡(luò)數(shù)據(jù)卡。這個(gè)數(shù)據(jù)卡安裝在信道(例如網(wǎng)線)和硬盤之間,網(wǎng)絡(luò)數(shù)據(jù)包的數(shù)據(jù)經(jīng)過這個(gè)網(wǎng)卡的時(shí)候自動(dòng)被加解密。
這樣的PCI接口卡的形式,實(shí)際上對(duì)于操作系統(tǒng),同樣是由運(yùn)行在核心模式下的一個(gè)設(shè)備驅(qū)動(dòng)程序所驅(qū)動(dòng)。當(dāng)其他部分與它有數(shù)據(jù)交換或連接時(shí),都通過驅(qū)動(dòng)程序,可見數(shù)據(jù)的加解密運(yùn)算實(shí)際上還是運(yùn)行在操作系統(tǒng)的核心模式下。
密鑰設(shè)備方面,采用軟件形式的安裝到本地磁盤中,同樣受通用密鑰驅(qū)動(dòng)程序所驅(qū)動(dòng),對(duì)操作系統(tǒng)表現(xiàn)為核心模式下的一個(gè)驅(qū)動(dòng)程序。由于同樣采用包傳輸協(xié)議,因此,和實(shí)施例一的情況是統(tǒng)一的。
算法設(shè)備方面,實(shí)施細(xì)節(jié)同實(shí)施例一,在此不再贅述。
可見,由于本系統(tǒng)除了管理程序部分運(yùn)行在用戶模式之外,其余的3部分都運(yùn)行在核心模式,并且對(duì)操作系統(tǒng)都表現(xiàn)為設(shè)備驅(qū)動(dòng)程序,而且各個(gè)設(shè)備之間定義了包傳輸協(xié)議,因此,實(shí)現(xiàn)了算法和密鑰的接口化設(shè)計(jì),允許算法集設(shè)備和物理密鑰根據(jù)用戶的需要采用不同的形式,例如軟件、硬件、或各種接口的設(shè)備。這樣的設(shè)計(jì)也使得用戶可以根據(jù)自己的需要,開發(fā)自己的、符合要求的算法,使得本發(fā)明適用于高機(jī)密級(jí)別的應(yīng)用場合,例如軍隊(duì)設(shè)施。
另外,由于驅(qū)動(dòng)程序之間的通訊采用非IO的形式,直接請(qǐng)求功能函數(shù)指針,而不是現(xiàn)有技術(shù)中將相關(guān)數(shù)據(jù)和請(qǐng)求封包成IRP的方式。本發(fā)明的通訊方式資源占用更少、速率更高,而且適合海量數(shù)據(jù)的處理。
權(quán)利要求
1.一種實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其特征在于,它包括以下部分(1)消費(fèi)者部分,用于使用算法和密鑰對(duì)數(shù)據(jù)進(jìn)行加解密處理;(2)算法提供者,用于接收來自消費(fèi)者部分的算法連接請(qǐng)求,從密鑰提供者處獲得密鑰并返回給消費(fèi)者部分;算法提供者包括至少一個(gè)算法集設(shè)備;(3)密鑰提供者,負(fù)責(zé)處理來自算法提供者的密鑰連接請(qǐng)求,向算法提供者提供密鑰,它包括至少一個(gè)物理密鑰設(shè)備;(4)管理程序部分,用于在用戶模式下實(shí)現(xiàn)對(duì)各個(gè)設(shè)備的管理,并保證程序不能訪問到密鑰。
2.如權(quán)利要求1所述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其特征在于,算法提供者包括算法設(shè)備管理器驅(qū)動(dòng)程序和算法集設(shè)備;其中算法設(shè)備管理器驅(qū)動(dòng)程序負(fù)責(zé)驅(qū)動(dòng)和管理算法集設(shè)備,將算法連接請(qǐng)求轉(zhuǎn)發(fā)到算法集設(shè)備;算法集設(shè)備接收算法連接請(qǐng)求并返回算法;一個(gè)算法集設(shè)備實(shí)現(xiàn)至少一個(gè)加密算法。
3.如權(quán)利要求1所述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其特征在于,密鑰提供者包括物理密鑰設(shè)備和通用密鑰設(shè)備驅(qū)動(dòng)程序;其中,通用密鑰設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)驅(qū)動(dòng)物理密鑰設(shè)備;物理密鑰設(shè)備解析通用密鑰設(shè)備驅(qū)動(dòng)程序的請(qǐng)求,并返回密鑰。
4.如權(quán)利要求1所述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其特征在于消費(fèi)者部分所處理的數(shù)據(jù)可以是本地的,也可以是遠(yuǎn)程的。
5.如權(quán)利要求1-3之一所述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其特征在于消費(fèi)者部分、算法設(shè)備管理器驅(qū)動(dòng)程序、通用密鑰設(shè)備驅(qū)動(dòng)程序處于操作系統(tǒng)的核心模式,對(duì)操作系統(tǒng)表現(xiàn)為設(shè)備驅(qū)動(dòng)程序的形式;算法集設(shè)備和物理密鑰設(shè)備對(duì)操作系統(tǒng)表現(xiàn)為設(shè)備。
6.如權(quán)利要求1所述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其特征在于,算法集設(shè)備可以設(shè)備化,它可以是軟件形式的加解密驅(qū)動(dòng)程序,也可以用硬件實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)操作,并允許用戶開發(fā)符合標(biāo)準(zhǔn)的算法設(shè)備,并通過接口將這些設(shè)備添加到算法集中。
7.如權(quán)利要求1所述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其特征在于物理密鑰設(shè)備可以設(shè)備化,它可以使用各種接口形式。
8.如權(quán)利要求1所述的實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),其特征在于驅(qū)動(dòng)程序之間的數(shù)據(jù)傳輸由包傳輸協(xié)議定義統(tǒng)一的數(shù)據(jù)傳輸格式。
全文摘要
本發(fā)明提出一種實(shí)現(xiàn)數(shù)據(jù)安全保護(hù)的系統(tǒng),它包括算法設(shè)備、密鑰設(shè)備、消費(fèi)者部分,以及管理程序部分。其中,算法、密鑰和使用算法密鑰對(duì)數(shù)據(jù)進(jìn)行加解密的部分都以設(shè)備驅(qū)動(dòng)程序的形式實(shí)現(xiàn),運(yùn)行在操作系統(tǒng)的核心模式。本發(fā)明的系統(tǒng)具有更高的安全性,而且可以實(shí)現(xiàn)算法、密鑰設(shè)備的接口化、設(shè)備化,允許用戶自行開發(fā)符合標(biāo)準(zhǔn)的算法,并把這些算法添加到算法集設(shè)備中去。這使得本系統(tǒng)可以應(yīng)用于高機(jī)密級(jí)別的情況。
文檔編號(hào)G06F21/00GK1967551SQ20051008691
公開日2007年5月23日 申請(qǐng)日期2005年11月17日 優(yōu)先權(quán)日2005年11月17日
發(fā)明者張正新 申請(qǐng)人:北京兆維電子(集團(tuán))有限責(zé)任公司