欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法

文檔序號(hào):6548707閱讀:227來源:國(guó)知局
基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法
【專利摘要】本發(fā)明公開了一種基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法,其實(shí)施步驟如下:構(gòu)建包括跨Ring0~Ring3級(jí)別的API層、密碼服務(wù)交換開關(guān)、MPI層和密碼模塊層的密碼服務(wù)框架;當(dāng)應(yīng)用程序發(fā)出密碼服務(wù)請(qǐng)求時(shí),初始化密碼服務(wù)框架實(shí)例,查詢已注冊(cè)的密碼模塊并進(jìn)行完整性驗(yàn)證,將驗(yàn)證通過的密碼模塊掛接關(guān)聯(lián)到密碼服務(wù)框架,應(yīng)用程序通過密碼服務(wù)框架和密碼模塊建立會(huì)話并獲取密碼服務(wù),并在使用完密碼服務(wù)后關(guān)閉會(huì)話及密碼服務(wù)框架。本發(fā)明能夠使得密碼服務(wù)提供者可以很方便地進(jìn)行密碼模塊的擴(kuò)展、替換以及刪除等操作,實(shí)現(xiàn)現(xiàn)有密碼服務(wù)和新型密碼服務(wù)的即插即用,既能很好地保護(hù)密碼資源又能靈活動(dòng)態(tài)擴(kuò)展密碼服務(wù)框架。
【專利說明】基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)操作系統(tǒng)的密碼【技術(shù)領(lǐng)域】,具體涉及一種基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法。
【背景技術(shù)】
[0002]密碼技術(shù)目前被廣泛應(yīng)用于各類信息系統(tǒng),其對(duì)于信息安全而言至關(guān)重要。在應(yīng)用密碼技術(shù)時(shí),許多安全應(yīng)用直接集成密碼算法,一些操作系統(tǒng)內(nèi)核也嵌入各種密碼算法,還有許多硬件產(chǎn)商推出了繁雜多樣的密碼硬件加速設(shè)備,跨越PCI卡級(jí)、芯片組級(jí)、CPU級(jí)以及集成密碼處理的設(shè)備。這種各自為政的局面使安全應(yīng)用開發(fā)效率偏低,妨礙了安全互操作,導(dǎo)致密碼服務(wù)層次混亂。密碼服務(wù)框架力圖統(tǒng)一各類密碼處理資源,包括軟件算法和硬件密碼加速設(shè)備,密碼服務(wù)框架是應(yīng)用和密碼服務(wù)之間的橋梁,它向上為用戶提供統(tǒng)一的密碼服務(wù)調(diào)用接口,向下則為密碼服務(wù)供應(yīng)商提供統(tǒng)一的密碼算法開發(fā)接口。
[0003]然而,現(xiàn)有的密碼服務(wù)框架的各個(gè)層次通常位于同一個(gè)特權(quán)級(jí),甚至與應(yīng)用位于同一空間,對(duì)密碼資源缺乏保護(hù),使密碼資源與應(yīng)用一樣暴露在攻擊者的面前。并且在傳統(tǒng)操作系統(tǒng)設(shè)計(jì)中,密碼機(jī)制和操作系統(tǒng)的內(nèi)核安全功能是分離設(shè)計(jì)的,內(nèi)核安全得不到密碼機(jī)制的有效支撐,而密碼算法等資源也得不到操作系統(tǒng)的有效保護(hù)。這種設(shè)計(jì)上的脫節(jié),使得攻擊者既能夠繞開內(nèi)核安全功能獲取密碼等敏感資源,也能夠繞開密碼服務(wù)對(duì)操作系統(tǒng)實(shí)施攻擊。另外,現(xiàn)有的密碼服務(wù)框架在支持新型密碼算法或新型密碼服務(wù)方面還有不足,難以做到透明擴(kuò)展,即在擴(kuò)展新型密碼服務(wù)時(shí),以前的應(yīng)用也可以調(diào)用而不用修改代碼。比如,一個(gè)應(yīng)用當(dāng)前調(diào)用指紋識(shí)別技術(shù)來進(jìn)行身份鑒別,而當(dāng)虹膜技術(shù)加入到密碼服務(wù)框架時(shí),該應(yīng)用能夠無縫支持虹膜身份鑒別,而無需修改代碼。

【發(fā)明內(nèi)容】

[0004]針對(duì)前述的現(xiàn)有技術(shù)的密碼服務(wù)框架對(duì)密碼資源(算法、密鑰等)保護(hù)不夠,接口不夠靈活,難以動(dòng)態(tài)掛載新的密碼模塊,不支持直接掛載新型密碼服務(wù)等不足,本發(fā)明要解決的技術(shù)問題是提供一種使得密碼服務(wù)提供者可以很方便地進(jìn)行密碼模塊的擴(kuò)展、替換以及刪除等操作,實(shí)現(xiàn)現(xiàn)有密碼服務(wù)和新型密碼服務(wù)的即插即用,既能很好地保護(hù)密碼資源又能靈活動(dòng)態(tài)擴(kuò)展密碼服務(wù)框架的基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法。
[0005]為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:
一種基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法,其實(shí)施步驟如下:
O預(yù)先在操作系統(tǒng)中構(gòu)建可供調(diào)用的密碼服務(wù)框架;所述密碼服務(wù)框架包括API層、密碼服務(wù)交換開關(guān)、MPI層和密碼模塊層,所述API層面向密碼服務(wù)使用者提供密碼服務(wù)API,所述MPI層面向密碼服務(wù)提供者提供密碼模塊MPI,所述密碼服務(wù)交換開關(guān)用于控制密碼服務(wù)AP1、密碼模塊MPI之間的映射以及密碼服務(wù)框架中注冊(cè)的密碼模塊管理;所述API層位于CPU特權(quán)級(jí)最低的Ring3級(jí),所述MPI層和密碼模塊層則共同位于CPU特權(quán)級(jí)最高的RingO級(jí),所述密碼服務(wù)交換開關(guān)位于CPU特權(quán)級(jí)次高級(jí)的Ringl級(jí),所述密碼模塊層則包括用于作為提供密碼服務(wù)實(shí)體的密碼模塊;
2)當(dāng)作為密碼服務(wù)使用者的應(yīng)用程序發(fā)出密碼服務(wù)請(qǐng)求時(shí),首先初始化一個(gè)密碼服務(wù)框架實(shí)例,查詢密碼服務(wù)框架中所有已注冊(cè)的密碼模塊,并對(duì)已注冊(cè)的密碼模塊進(jìn)行完整性驗(yàn)證,將驗(yàn)證通過的密碼模塊掛接關(guān)聯(lián)到密碼服務(wù)框架;
3)應(yīng)用程序通過密碼服務(wù)框架和密碼模塊建立會(huì)話,應(yīng)用程序通過密碼服務(wù)框架向密碼模塊請(qǐng)求密碼服務(wù),并在使用完密碼服務(wù)后跳轉(zhuǎn)執(zhí)行下一步;
4)應(yīng)用程序通過密碼服務(wù)框架關(guān)閉和密碼模塊之間的會(huì)話,將密碼服務(wù)框架的各個(gè)密碼模塊卸載取消關(guān)聯(lián),通過清除密 碼服務(wù)框架的實(shí)例關(guān)閉密碼服務(wù)框架,本次密碼服務(wù)結(jié)束。
[0006]優(yōu)選地,所述步驟I)預(yù)先構(gòu)建的密碼服務(wù)框架中,所述密碼服務(wù)API包括加解密服務(wù)AP1、證書服務(wù)AP1、數(shù)據(jù)存儲(chǔ)服務(wù)API和擴(kuò)展服務(wù)API,所述密碼模塊MPI包括加解密模塊MP1、證書模塊MP1、數(shù)據(jù)存儲(chǔ)模塊MPI和擴(kuò)展模塊MPI,所述密碼模塊包括加解密模塊、證書模塊、數(shù)據(jù)存儲(chǔ)模塊和擴(kuò)展模塊,所述密碼模塊、密碼模塊MP1、密碼服務(wù)API三者之間
--對(duì)應(yīng)。
[0007]優(yōu)選地,所述步驟I)中預(yù)先創(chuàng)建的密碼服務(wù)框架中,所述密碼服務(wù)AP1、密碼服務(wù)交換開關(guān)之間通過系統(tǒng)調(diào)用syscall進(jìn)行交互,所述密碼服務(wù)交換開關(guān)、密碼模塊MPI之間通過超級(jí)調(diào)用hypercall進(jìn)行交互。
[0008]優(yōu)選地,所述密碼服務(wù)交換開關(guān)包括加解密服務(wù)管理器、證書服務(wù)管理器、數(shù)據(jù)存儲(chǔ)服務(wù)管理器、擴(kuò)展服務(wù)管理器、模塊目錄管理子模塊、模塊管理子模塊、會(huì)話管理子模塊、回調(diào)子模塊和完整性認(rèn)證子模塊,所述加解密服務(wù)管理器用于將加解密服務(wù)API映射至加解密模塊MPI,所述證書服務(wù)管理器用于將證書服務(wù)API映射至證書模塊MPI,所述數(shù)據(jù)存儲(chǔ)服務(wù)管理器用于將數(shù)據(jù)存儲(chǔ)服務(wù)API映射至數(shù)據(jù)存儲(chǔ)模塊MPI,所述擴(kuò)展服務(wù)管理器用于將擴(kuò)展服務(wù)API映射至擴(kuò)展模塊MPI,所述模塊目錄管理子模塊用于管理密碼模塊的注冊(cè)信息,所述模塊管理子模塊用于為作為密碼服務(wù)使用者的應(yīng)用程序定位、加載、卸載所需的密碼模塊,所述會(huì)話管理子模塊用于在作為密碼服務(wù)使用者的應(yīng)用程序和作為密碼服務(wù)提供者的密碼模塊之間建立一個(gè)邏輯連接以提供上下文服務(wù)以及保障線程安全,所述回調(diào)子模塊用于為密碼模塊層下不同服務(wù)類的密碼模塊之間的相互調(diào)用提供渠道以降低不同類型密碼模塊間的依賴性,所述完整性認(rèn)證子模塊用于驗(yàn)證已注冊(cè)密碼模塊的完整性。
[0009]優(yōu)選地,所述步驟I)中的模塊目錄管理子模塊通過多條key-value形式的記錄存儲(chǔ)密碼模塊的注冊(cè)信息,所述key值為密碼模塊為全局唯一無符號(hào)長(zhǎng)整型ID值轉(zhuǎn)換成的字符串,且所述密碼模塊層中加解密模塊、證書模塊和數(shù)據(jù)存儲(chǔ)模塊、擴(kuò)展模塊四類密碼模塊的全局唯一無符號(hào)長(zhǎng)整型ID值的取值范圍各不相同;所述value值記載密碼模塊注冊(cè)信息為密碼模塊的基本信息、類型信息、令牌信息、擴(kuò)展令牌信息、擴(kuò)展密鑰信息、擴(kuò)展機(jī)制信息中的一種。
[0010]優(yōu)選地,所述步驟2)中對(duì)每一個(gè)注冊(cè)的密碼模塊進(jìn)行完整性驗(yàn)證的詳細(xì)步驟如下:
2.1)預(yù)先在將每一個(gè)密碼模塊注冊(cè)到密碼服務(wù)框架時(shí),采用指定的摘要提取算法提取所述密碼模塊的原始摘要信息,并將所述原始摘要信息和所述密碼模塊在操作系統(tǒng)中的安裝路徑信息存儲(chǔ)到預(yù)設(shè)的數(shù)據(jù)庫中;在需要對(duì)每一個(gè)注冊(cè)的密碼模塊進(jìn)行完整性驗(yàn)證時(shí),從密碼服務(wù)框架中取出一個(gè)尚未進(jìn)行完整性驗(yàn)證的密碼模塊作為當(dāng)前密碼模塊,跳轉(zhuǎn)執(zhí)行步驟2.2);
2.2)從所述數(shù)據(jù)庫中取出當(dāng)前密碼模塊的原始摘要信息及所述安裝路徑信息;
2.3)根據(jù)所述安裝路徑信息,采用所述摘要提取算法提取當(dāng)前密碼模塊的當(dāng)前摘要信
息;
2.4)判定當(dāng)前密碼模塊的原始摘要信息、當(dāng)前摘要信息是否相等,如果相等,則表示當(dāng)前密碼模塊沒有被篡改,判定驗(yàn)證通過;如果不相等,則表示當(dāng)前密碼模塊已經(jīng)被篡改,判定驗(yàn)證不通過。
[0011]優(yōu)選地,所述步驟3)的詳細(xì)步驟如下:
3.1)應(yīng)用程序通過密碼服務(wù)框架和密碼模塊建立會(huì)話,通過所述會(huì)話在應(yīng)用程序和密碼模塊之間建立一個(gè)用于提供上下文服務(wù)以及保障線程安全的邏輯連接,同時(shí)應(yīng)用程序創(chuàng)建一個(gè)臨時(shí)會(huì)話對(duì)象,所述臨時(shí)會(huì)話對(duì)象中包含本次密碼服務(wù)相關(guān)的上下文環(huán)境,應(yīng)用程序不能直接操作所述臨時(shí)會(huì)話對(duì)象,而只能通過會(huì)話標(biāo)識(shí)符索引臨時(shí)會(huì)話對(duì)象來請(qǐng)求密碼服務(wù);
3.2)應(yīng)用程序通過會(huì)話標(biāo)識(shí)符索引臨時(shí)會(huì)話對(duì)象來請(qǐng)求密碼服務(wù),在請(qǐng)求密碼服務(wù)過程中,如果不同類型的密碼模塊之間存在依賴性,則通過調(diào)用密碼服務(wù)交換開關(guān)的回調(diào)子模塊來完成應(yīng)用程序所需的密碼服務(wù),并在使用完密碼服務(wù)后跳轉(zhuǎn)執(zhí)行步驟4)。
[0012]優(yōu)選地,所述步驟I)中預(yù)先創(chuàng)建的密碼服務(wù)框架還包括位于CPU特權(quán)級(jí)最低的Ring3級(jí)安裝配置工具,所述安裝配置工具用于安裝新的密碼模塊并對(duì)其進(jìn)行配置或者卸載某個(gè)密碼模塊;所述安裝配置工具設(shè)置口令保護(hù)機(jī)制,所述口令保護(hù)機(jī)制要求用戶操作安裝配置工具需要輸入正確的用戶口令字,只有輸入正確的用戶口令字后,安裝配置工具才進(jìn)入工作狀態(tài);所述安裝配置工具在工作狀態(tài)下,當(dāng)使用安裝配置工具注冊(cè)新的密碼模塊,基于密碼服務(wù)框架中的CA根證書和新的密碼模塊簽發(fā)者的證書來進(jìn)行合法性驗(yàn)證,如果驗(yàn)證合法則采用步驟2)中相同的完整性驗(yàn)證方法對(duì)新的密碼模塊進(jìn)行完整性驗(yàn)證,如果完整性驗(yàn)證通過,則允許注冊(cè)新的密碼模塊,否則如果合法性驗(yàn)證或者完整性驗(yàn)證不通過,則拒絕注冊(cè)新的密碼模塊。
[0013]本發(fā)明基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法具有下述技術(shù)效果:
1、本發(fā)明緊密結(jié)合CPU的特權(quán)級(jí)設(shè)計(jì),將密碼服務(wù)框架的API層位于CPU特權(quán)級(jí)最低的Ring3級(jí),所述MPI層和密碼模塊層則共同位于CPU特權(quán)級(jí)最高的RingO級(jí),所述密碼服務(wù)交換開關(guān)位于CPU特權(quán)級(jí)次高級(jí)的Ringl級(jí),所述密碼模塊層則包括用于作為提供密碼服務(wù)實(shí)體的密碼模塊,使操作系統(tǒng)能夠很好地保護(hù)密碼服務(wù)框架,特別是保護(hù)密碼資源免受破壞。在此框架下,密碼模塊和密碼模塊MPI運(yùn)行在CPU的RingO級(jí),攻擊者若想竊取或破壞密碼算法或密鑰等資源,必須從CPU的Ring3穿越到Ringl,再穿越到RingO,難度非常大,從而能夠最大程度保護(hù)密碼資源。并且,密碼服務(wù)交換開關(guān)位于CPU的Ringl,它也得到了較好的防護(hù),因?yàn)楣粽呷粝肫茐?,也必須從Ring3跨越到Ringl。
[0014]2、本發(fā)明的密碼服務(wù)框架包括API層、密碼服務(wù)交換開關(guān)、MPI層和密碼模塊層,所述API層面向密碼服務(wù)使用者提供密碼服務(wù)API,所述MPI層面向密碼服務(wù)提供者提供密碼模塊MPI,所述密碼服務(wù)交換開關(guān)用于控制密碼服務(wù)AP1、密碼模塊MPI之間的映射以及密碼服務(wù)框架中注冊(cè)的密碼模塊管理,因此通過密碼服務(wù)交換開關(guān)控制密碼服務(wù)AP1、密碼模塊MPI之間的映射,能夠更為靈活地進(jìn)行擴(kuò)展。一是,針對(duì)每一類密碼服務(wù),通過各自服務(wù)管理器能夠同時(shí)掛載多個(gè)密碼模塊,可以是硬件,也可以是軟件,且每個(gè)密碼模塊的功能集合不必完全相同;二是,可以擴(kuò)展新型密碼服務(wù)。利用密碼服務(wù)交換開關(guān),特別是擴(kuò)展服務(wù)支持,能夠把將來的新型密碼服務(wù)融入到密碼服務(wù)框架之下,而不需要修改密碼服務(wù)框架;三是,無論哪種擴(kuò)展,對(duì)應(yīng)用都是透明的,即應(yīng)用開發(fā)者無需關(guān)心密碼機(jī)制的細(xì)節(jié),密碼模塊開發(fā)者也無需關(guān)心上層應(yīng)用的設(shè)計(jì),方便地實(shí)現(xiàn)了密碼服務(wù)開發(fā)與應(yīng)用程序開發(fā)的分離。
【專利附圖】

【附圖說明】
[0015]圖1是本發(fā)明實(shí)施例的總體流程示意圖。
[0016]圖2是本發(fā)明實(shí)施例中可擴(kuò)展密碼服務(wù)框架的框架結(jié)構(gòu)示意圖。
[0017]圖3是本發(fā)明實(shí)施例中密碼服務(wù)交換開關(guān)的框架結(jié)構(gòu)示意圖。
[0018]圖4是本發(fā)明實(shí)施例中模塊目錄管理子模塊的框架結(jié)構(gòu)示意圖。
[0019]圖5是本發(fā)明實(shí)施例中完整性認(rèn)證子模塊的框架結(jié)構(gòu)示意圖。
[0020]圖6是本發(fā)明實(shí)施例中密碼模塊的組成框架結(jié)構(gòu)示意圖。
[0021]圖7是本發(fā)明實(shí)施例中密碼模塊的注冊(cè)與注銷流程圖。
【具體實(shí)施方式】
[0022]如圖1所示,本實(shí)施例基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法的實(shí)施步驟如下:
O預(yù)先在操作系統(tǒng)中構(gòu)建可供調(diào)用的密碼服務(wù)框架;密碼服務(wù)框架包括API層、密碼服務(wù)交換開關(guān)、MPI層和密碼模塊層,API層面向密碼服務(wù)使用者提供密碼服務(wù)API,MPI層面向密碼服務(wù)提供者提供密碼模塊MPI,密碼服務(wù)交換開關(guān)用于控制密碼服務(wù)AP1、密碼模塊MPI之間的映射以及密碼服務(wù)框架中注冊(cè)的密碼模塊管理;API層位于CPU特權(quán)級(jí)最低的Ring3級(jí),MPI層和密碼模塊層則共同位于CPU特權(quán)級(jí)最高的RingO級(jí),密碼服務(wù)交換開關(guān)位于CPU特權(quán)級(jí)次高級(jí)的Ringl級(jí),密碼模塊層則包括用于作為提供密碼服務(wù)實(shí)體的密碼模塊;
2)當(dāng)作為密碼服務(wù)使用者的應(yīng)用程序發(fā)出密碼服務(wù)請(qǐng)求時(shí),首先初始化一個(gè)密碼服務(wù)框架實(shí)例,查詢密碼服務(wù)框架中所有已注冊(cè)的密碼模塊,并對(duì)已注冊(cè)的密碼模塊進(jìn)行完整性驗(yàn)證,將驗(yàn)證通過的密碼模塊掛接關(guān)聯(lián)到密碼服務(wù)框架;
3)應(yīng)用程序通過密碼服務(wù)框架和密碼模塊建立會(huì)話,應(yīng)用程序通過密碼服務(wù)框架向密碼模塊請(qǐng)求密碼服務(wù),并在使用完密碼服務(wù)后跳轉(zhuǎn)執(zhí)行下一步;
4)應(yīng)用程序通過密碼服務(wù)框架關(guān)閉和密碼模塊之間的會(huì)話,將密碼服務(wù)框架的各個(gè)密碼模塊卸載取消關(guān)聯(lián),通過清除密碼服務(wù)框架的實(shí)例關(guān)閉密碼服務(wù)框架,本次密碼服務(wù)結(jié)束。
[0023]本實(shí)施例中將密碼服務(wù)框架的接口分為兩層,面向密碼應(yīng)用開發(fā)的密碼服務(wù)API和面向密碼模塊開發(fā)的密碼模塊MPI。密碼應(yīng)用開發(fā)者僅需關(guān)心密碼服務(wù)API,不必了解密碼模塊的細(xì)節(jié)實(shí)現(xiàn);同樣,密碼模塊開發(fā)者只要遵循密碼模塊MPI編寫代碼,不需要投入精力了解應(yīng)用是如何調(diào)用密碼服務(wù)的問題。密碼服務(wù)API包括密碼服務(wù)框架的加解密服務(wù)接口、證書服務(wù)接口、數(shù)據(jù)存儲(chǔ)服務(wù)接口和擴(kuò)展服務(wù)接口,提供基于密碼設(shè)備和證書的各項(xiàng)功能,允許用戶通過密碼設(shè)備和數(shù)字證書進(jìn)行各種操作,適用于安全應(yīng)用開發(fā)者基于密碼服務(wù)框架來設(shè)計(jì)和處理各類密碼服務(wù)和數(shù)字證書服務(wù)。密碼模塊MPI為各類密碼模塊定義了服務(wù)接口規(guī)范。每一類密碼模塊MPI都由其對(duì)應(yīng)的密碼模塊實(shí)現(xiàn),并由上層應(yīng)用調(diào)用。密碼模塊MPI包括證書模塊MP1、加解密模塊MP1、數(shù)據(jù)存儲(chǔ)模塊MP1、擴(kuò)展模塊MPI。需要說明的是,本實(shí)施例的應(yīng)用程序可以重復(fù)步驟3)再次調(diào)用密碼服務(wù),只有應(yīng)用程序使用完密碼服務(wù)后才跳轉(zhuǎn)執(zhí)行步驟4)。步驟4)應(yīng)用程序通過密碼服務(wù)框架關(guān)閉和密碼模塊之間的會(huì)話,即調(diào)用關(guān)閉會(huì)話接口釋放會(huì)話對(duì)象,從而釋放系統(tǒng)資源,確保不會(huì)導(dǎo)致系統(tǒng)資源消耗殆盡,如果應(yīng)用程序需要再次調(diào)用密碼服務(wù),需要重新從步驟2)開始。
[0024]如圖2所示,本實(shí)施例步驟I)中預(yù)先創(chuàng)建的密碼服務(wù)框架中,密碼服務(wù)AP1、密碼服務(wù)交換開關(guān)之間通過系統(tǒng)調(diào)用syscall進(jìn)行交互,密碼服務(wù)交換開關(guān)、密碼模塊MPI之間通過超級(jí)調(diào)用hypercall進(jìn)行交互。
[0025]如圖2所示,本實(shí)施例步驟I)預(yù)先構(gòu)建的密碼服務(wù)框架中,密碼服務(wù)API包括加解密服務(wù)AP1、證書服務(wù)AP1、數(shù)據(jù)存儲(chǔ)服務(wù)API和擴(kuò)展服務(wù)API,密碼模塊MPI包括加解密模塊MP1、證書模塊MP1、數(shù)據(jù)存儲(chǔ)模塊MPI和擴(kuò)展模塊MPI,密碼模塊包括加解密模塊、證書模塊、數(shù)據(jù)存儲(chǔ)模塊和擴(kuò)展模塊,密碼模塊、密碼模塊MP1、密碼服務(wù)API三者之間一一對(duì)應(yīng)。
[0026]本實(shí)施例中,MPI層和密碼模塊層則共同位于CPU特權(quán)級(jí)最高的RingO級(jí),即加解密模塊MP1、證書模塊MP1、數(shù)據(jù)存儲(chǔ)模塊MPI和擴(kuò)展模塊MPI和密碼模塊層則共同位于CPU特權(quán)級(jí)最高的RingO級(jí),結(jié)合CPU的特權(quán)級(jí),構(gòu)建一個(gè)安全的密碼服務(wù)框架,將核心密碼資源置于最高特權(quán)級(jí)保護(hù)之下,從而能夠最大限度保護(hù)密碼資源;密碼服務(wù)交換開關(guān)位于CPU特權(quán)級(jí)次高級(jí)Ringl,在得到較好保護(hù)的同時(shí),還能為位于Ringl的部件靈活提供密碼服務(wù);密碼服務(wù)API (包括加解密服務(wù)AP1、證書服務(wù)AP1、數(shù)據(jù)存儲(chǔ)服務(wù)API和擴(kuò)展服務(wù)API)位于CPU特權(quán)級(jí)最低級(jí)Ring3,也就是應(yīng)用層,這樣密碼服務(wù)框架暴露在外面的攻擊面是最小的。密碼服務(wù)框架提供基本服務(wù)和擴(kuò)展服務(wù),基本服務(wù)包括加解密服務(wù)、證書服務(wù)、數(shù)據(jù)存儲(chǔ)服務(wù),擴(kuò)展服務(wù)則可支持未來新型的密碼服務(wù),使得密碼服務(wù)框架更加易于擴(kuò)展。
[0027]如圖2所示,本實(shí)施例的密碼服務(wù)交換開關(guān)包括加解密服務(wù)管理器、證書服務(wù)管理器、數(shù)據(jù)存儲(chǔ)服務(wù)管理器、擴(kuò)展服務(wù)管理器、模塊目錄管理子模塊、模塊管理子模塊、會(huì)話管理子模塊、回調(diào)子模塊和完整性認(rèn)證子模塊,加解密服務(wù)管理器用于將加解密服務(wù)API映射至加解密模塊MPI,證書服務(wù)管理器用于將證書服務(wù)API映射至證書模塊MPI,數(shù)據(jù)存儲(chǔ)服務(wù)管理器用于將數(shù)據(jù)存儲(chǔ)服務(wù)API映射至數(shù)據(jù)存儲(chǔ)模塊MPI,擴(kuò)展服務(wù)管理器用于將擴(kuò)展服務(wù)API映射至擴(kuò)展模塊MPI,模塊目錄管理子模塊用于管理密碼模塊的注冊(cè)信息,模塊管理子模塊用于為作為密碼服務(wù)使用者的應(yīng)用程序定位、加載、卸載所需的密碼模塊,會(huì)話管理子模塊用于在作為密碼服務(wù)使用者的應(yīng)用程序和作為密碼服務(wù)提供者的密碼模塊之間建立一個(gè)邏輯連接以提供上下文服務(wù)以及保障線程安全,回調(diào)子模塊用于為密碼模塊層下不同服務(wù)類的密碼模塊之間的相互調(diào)用提供渠道以降低不同類型密碼模塊間的依賴性,完整性認(rèn)證子模塊用于驗(yàn)證已注冊(cè)密碼模塊的完整性。
[0028]為了支持同一類服務(wù)同時(shí)掛載多個(gè)密碼模塊,本實(shí)施例中的密碼服務(wù)交換開關(guān)為每一類密碼服務(wù)設(shè)置一個(gè)服務(wù)管理器,因此針對(duì)四類密碼服務(wù)分別設(shè)有加解密服務(wù)管理器、證書服務(wù)管理器、數(shù)據(jù)存儲(chǔ)服務(wù)管理器、擴(kuò)展服務(wù)管理器。其中,加解密服務(wù)管理器提供加解密服務(wù)API到指定的加解密模塊MPI的轉(zhuǎn)發(fā)功能;證書服務(wù)管理器提供證書服務(wù)API到指定的證書模塊MPI的轉(zhuǎn)發(fā)功能;數(shù)據(jù)存儲(chǔ)服務(wù)管理器提供數(shù)據(jù)存儲(chǔ)服務(wù)API到指定的數(shù)據(jù)存儲(chǔ)模塊MPI的轉(zhuǎn)發(fā)功能;擴(kuò)展服務(wù)管理器負(fù)責(zé)提供獲取下層擴(kuò)展服務(wù)模塊中的接口函數(shù)地址的功能。會(huì)話管理子模塊負(fù)責(zé)在應(yīng)用程序程序和密碼模塊之間建立一個(gè)邏輯連接,從而提供上下文服務(wù)以及保障線程安全。會(huì)話操作包括打開、關(guān)閉會(huì)話。應(yīng)用程序只有首先調(diào)用打開會(huì)話接口并成功返回之后,才能正確使用密碼服務(wù),否則無法獲得密碼服務(wù)。打開會(huì)話時(shí),會(huì)動(dòng)態(tài)創(chuàng)建一個(gè)臨時(shí)會(huì)話對(duì)象,其中包含此次密碼服務(wù)相關(guān)的上下文環(huán)境,應(yīng)用程序不能直接操作會(huì)話對(duì)象,它通過會(huì)話標(biāo)識(shí)符(類似于文件描述符)索引會(huì)話對(duì)象,從而請(qǐng)求密碼服務(wù)。應(yīng)用程序在使用完密碼服務(wù)之后,必須關(guān)閉會(huì)話,即調(diào)用關(guān)閉會(huì)話接口釋放會(huì)話對(duì)象,從而釋放系統(tǒng)資源,確保不會(huì)導(dǎo)致系統(tǒng)資源消耗殆盡。由于基于各個(gè)密碼模塊提供的各類密碼服務(wù)并不是相互獨(dú)立的,一類密碼服務(wù)可能調(diào)用另一類密碼服務(wù)來完成某一功能,如證書服務(wù)會(huì)調(diào)用加解密服務(wù)來完成證書的驗(yàn)證功能。本實(shí)施例通過回調(diào)子模塊來實(shí)現(xiàn)了回調(diào)機(jī)制,從而負(fù)責(zé)為不同服務(wù)類的密碼模塊之間的相互調(diào)用提供渠道,降低不同類型模塊間的依賴性?;卣{(diào)機(jī)制提供GetFunctionList來獲取基本服務(wù)API函數(shù)的入口地址。通過這些入口地址,某一服務(wù)就可以調(diào)用另一服務(wù)的功能。GetFunctionList返回一個(gè)函數(shù)指針數(shù)組,其中的每一個(gè)成員指向一個(gè)具體的API函數(shù)?;卣{(diào)機(jī)制僅支持調(diào)用基本密碼服務(wù),即基本密碼服務(wù)可以調(diào)用基本密碼服務(wù),擴(kuò)展密碼服務(wù)也可以調(diào)用基本密碼服務(wù),但基本密碼服務(wù)或擴(kuò)展密碼服務(wù)卻不能調(diào)用擴(kuò)展密碼服務(wù)。
[0029]如圖2所示,本實(shí)施例與通常的密碼服務(wù)框架不同,本實(shí)施例中的密碼服務(wù)框架跨越CPU的多個(gè)特權(quán)級(jí),其中API層位于CPU特權(quán)級(jí)最低的Ring3級(jí)(應(yīng)用層),MPI層和密碼模塊層則共同位于CPU特權(quán)級(jí)最高的RingO級(jí),密碼服務(wù)交換開關(guān)位于CPU特權(quán)級(jí)次高級(jí)的Ringl級(jí)。這樣,不僅從體系結(jié)構(gòu)上最大限度保護(hù)密碼資源,而且對(duì)密碼服務(wù)交換開關(guān)也起到了較好的保護(hù)作用。從Ring3到Ringl通過系統(tǒng)調(diào)用進(jìn)行交互,從Ringl到RingO則采用Hypercall。密碼服務(wù)框架缺省提供三類基本服務(wù):加解密服務(wù)、證書服務(wù)、數(shù)據(jù)存儲(chǔ)服務(wù),并通過擴(kuò)展服務(wù)來支持未來新型的密碼服務(wù)。密碼服務(wù)交換開關(guān)是密碼服務(wù)框架的中心樞紐,負(fù)責(zé)將密碼服務(wù)API映射到密碼模塊MPI,從而調(diào)用密碼模塊中的實(shí)體功能。應(yīng)用程序在調(diào)用密碼服務(wù)框架服務(wù)時(shí),首先必須初始化一個(gè)密碼服務(wù)框架實(shí)例,并建立相應(yīng)的數(shù)據(jù)結(jié)構(gòu);在結(jié)束密碼服務(wù)框架服務(wù)之后,應(yīng)用需要清除該密碼服務(wù)框架實(shí)例。密碼服務(wù)框架實(shí)例被清除后,應(yīng)用不能再調(diào)用任何密碼服務(wù)框架的服務(wù)。
[0030]如圖2所示,本實(shí)施例的密碼模塊MPI與密碼服務(wù)API上下呼應(yīng),只要符合MPI規(guī)范的密碼模塊可以靈活地嵌入到密碼服務(wù)框架,并通過相應(yīng)的API為上層應(yīng)用提供具體的服務(wù)。在密碼服務(wù)框架中,加解密模塊MPI對(duì)應(yīng)加解密服務(wù)API,證書模塊MPI對(duì)應(yīng)證書服務(wù)API,數(shù)據(jù)存儲(chǔ)模塊MPI則對(duì)應(yīng)數(shù)據(jù)存儲(chǔ)服務(wù)API。本實(shí)施例中,密碼服務(wù)框架最底層缺省掛接三類密碼模塊,分別是加解密模塊、證書模塊和數(shù)據(jù)存儲(chǔ)模塊,加解密模塊、證書模塊和數(shù)據(jù)存儲(chǔ)模塊三種基本密碼模塊的接口遵循密碼MPI規(guī)范。此外,本實(shí)施例還可以根據(jù)需求掛接相應(yīng)的擴(kuò)展模塊,密碼模塊的替換對(duì)上層應(yīng)用透明。加解密模塊為上層提供密碼服務(wù)支持。加解密服務(wù)模塊主要通過對(duì)密碼設(shè)備的控制管理完成加解密服務(wù)功能,包括密碼設(shè)備注冊(cè)管理、會(huì)話管理、對(duì)象管理、加解密服務(wù)管理、多進(jìn)程多線程管理等;證書模塊為上層提供證書服務(wù)支持。證書服務(wù)模塊主要包括證書解析服務(wù)、在線查詢證書狀態(tài)(OCSP)服務(wù)、證書撤銷列表(CRL)服務(wù)、查詢目錄服務(wù)器(LDAP)服務(wù)等;數(shù)據(jù)存儲(chǔ)模塊為上層提供數(shù)據(jù)存儲(chǔ)服務(wù)支持。數(shù)據(jù)存儲(chǔ)服務(wù)模塊主要包括存儲(chǔ)對(duì)象的創(chuàng)建、修改、查詢和刪除等;擴(kuò)展模塊為上層提供擴(kuò)展服務(wù)支持。擴(kuò)展服務(wù)模塊主要是為了解決以上三種密碼模塊不能提供的密碼服務(wù),一般是指由應(yīng)用系統(tǒng)定制的密碼服務(wù)。
[0031]如圖3所示,本實(shí)施例密碼服務(wù)框架的2層接口(密碼模塊MPI與密碼服務(wù)API)之間設(shè)置一個(gè)密碼服務(wù)交換開關(guān),負(fù)責(zé)為應(yīng)用調(diào)用密碼算法建立從密碼服務(wù)API到密碼模塊MPI之間的通道,除了對(duì)應(yīng)基本的密碼模塊的基本服務(wù)管理器(加解密服務(wù)管理器、證書服務(wù)管理器、數(shù)據(jù)存儲(chǔ)服務(wù)管理器、擴(kuò)展服務(wù)管理器)以外,還包括模塊目錄管理子模塊、模塊管理子模塊、會(huì)話管理子模塊、回調(diào)子模塊和完整性認(rèn)證子模塊,通過模塊目錄管理子模塊、模塊管理子模塊、會(huì)話管理子模塊、回調(diào)子模塊和完整性認(rèn)證子模塊來分別實(shí)現(xiàn)模塊目錄管理、模塊的加載與卸載、會(huì)話管理、回調(diào)和完整性認(rèn)證的功能。會(huì)話管理負(fù)責(zé)在應(yīng)用程序和服務(wù)提供者(密碼模塊)之間建立一個(gè)邏輯連接,從而提供上下文服務(wù)以及保障線程安全。密碼模塊管理負(fù)責(zé)為應(yīng)用定位、加載、卸載所需的密碼模塊?;卣{(diào)機(jī)制負(fù)責(zé)為不同服務(wù)類的密碼模塊之間的相互調(diào)用提供渠道,降低了不同類型模塊間的依賴性。密碼服務(wù)交換開關(guān)API包括會(huì)話管理函數(shù)、模塊初始化和終止函數(shù)、函數(shù)入口定位函數(shù)等,這些函數(shù)是面向所有服務(wù)的,不需要密碼模塊進(jìn)行具體實(shí)現(xiàn),因此沒有對(duì)應(yīng)的密碼模塊MPI。
[0032]本實(shí)施例中,本實(shí)施例步驟I)中的模塊目錄管理子模塊通過多條key-value形式的記錄存儲(chǔ)密碼模塊的注冊(cè)信息,key值為密碼模塊為全局唯一無符號(hào)長(zhǎng)整型ID值轉(zhuǎn)換成的字符串,且密碼模塊層中加解密模塊、證書模塊和數(shù)據(jù)存儲(chǔ)模塊、擴(kuò)展模塊四類密碼模塊的全局唯一無符號(hào)長(zhǎng)整型ID值的取值范圍各不相同;valUe值記載密碼模塊注冊(cè)信息為密碼模塊的基本信息、類型信息、令牌信息、擴(kuò)展令牌信息、擴(kuò)展密鑰信息、擴(kuò)展機(jī)制信息中的一種。
[0033]本實(shí)施例中,本實(shí)施例步驟2)中當(dāng)作為密碼服務(wù)使用者的應(yīng)用程序發(fā)出密碼服務(wù)請(qǐng)求時(shí),首先初始化一個(gè)密碼服務(wù)框架實(shí)例,具體是通過模塊目錄管理子模塊查詢密碼服務(wù)框架中所有已注冊(cè)的密碼模塊,獲取密碼模塊信息以及密碼模塊所支持的各種密碼服務(wù)功能,并根據(jù)得到的結(jié)果定位所需要的服務(wù)可以由哪個(gè)密碼模塊提供。如圖4所示,模塊目錄管理子模塊提供密碼服務(wù)框架自身配置信息、密碼模塊信息的存取功能,供密碼服務(wù)交換開關(guān)及其完整性認(rèn)證子模塊、安裝配置工具使用。模塊目錄管理子模塊以key-value形式存儲(chǔ)目錄數(shù)據(jù),目錄中的每條記錄都分配一個(gè)全局唯一的key值。模塊目錄管理子模塊為每條記錄分配一個(gè)全局唯一的無符號(hào)長(zhǎng)整型ID值,將其轉(zhuǎn)換成字符串后作為本條記錄的key值。模塊目錄管理子模塊支持4類服務(wù),分別是模塊定位、模塊注銷、模塊注冊(cè)和配置管理。
[0034]本實(shí)施例中,本實(shí)施例步驟2 )中對(duì)每一個(gè)注冊(cè)的密碼模塊進(jìn)行完整性驗(yàn)證用于校驗(yàn)密碼模塊的完整性,防止加載被篡改的惡意密碼模塊造成服務(wù)異常甚至泄漏機(jī)密。如圖5所示,密碼服務(wù)交換開關(guān)在關(guān)聯(lián)密碼模塊時(shí),需要調(diào)用完整性認(rèn)證子模塊的完整性認(rèn)證API,然后通過完整性認(rèn)證子模塊執(zhí)行下述步驟2.1)?2.4)所示的完整性驗(yàn)證算法以驗(yàn)證其完整性;同時(shí)在執(zhí)行完整性驗(yàn)證算法時(shí),完整性認(rèn)證子模塊需要調(diào)用模塊目錄管理子模塊訪問預(yù)設(shè)的數(shù)據(jù)庫(MDS數(shù)據(jù)庫),通過預(yù)設(shè)的數(shù)據(jù)庫(MDS數(shù)據(jù)庫)存儲(chǔ)密碼模塊的原始摘要信息olddigest和密碼模塊在操作系統(tǒng)中的安裝路徑信息path。
[0035]本實(shí)施例中,步驟2)中對(duì)每一個(gè)注冊(cè)的密碼模塊進(jìn)行完整性驗(yàn)證的詳細(xì)步驟如下:
2.1)預(yù)先在將每一個(gè)密碼模塊注冊(cè)到密碼服務(wù)框架時(shí),采用指定的摘要提取算法提取密碼模塊的原始摘要信息olddigest,并將原始摘要信息olddigest和密碼模塊在操作系統(tǒng)中的安裝路徑信息path存儲(chǔ)到預(yù)設(shè)的數(shù)據(jù)庫(MDS數(shù)據(jù)庫)中;在需要對(duì)每一個(gè)注冊(cè)的密碼模塊進(jìn)行完整性驗(yàn)證時(shí),從密碼服務(wù)框架中取出一個(gè)尚未進(jìn)行完整性驗(yàn)證的密碼模塊作為當(dāng)前密碼模塊,跳轉(zhuǎn)執(zhí)行步驟2.2);
2.2)從數(shù)據(jù)庫中取出當(dāng)前密碼模塊的原始摘要信息olddigest及安裝路徑信息path ;
2.3)根據(jù)安裝路徑信息path,采用前述的摘要提取算法提取當(dāng)前密碼模塊的當(dāng)前摘要信息 newdigest ;
2.4)判定當(dāng)前密碼模塊的原始摘要信息olddigest、當(dāng)前摘要信息newdigest是否相等,如果相等,則表示當(dāng)前密碼模塊沒有被篡改,判定驗(yàn)證通過;如果不相等,則表示當(dāng)前密碼模塊已經(jīng)被篡改,判定驗(yàn)證不通過。
[0036]本實(shí)施例中,步驟3)的詳細(xì)步驟如下:
3.1)應(yīng)用程序通過密碼服務(wù)框架和密碼模塊建立會(huì)話,通過會(huì)話在應(yīng)用程序和密碼模塊之間建立一個(gè)用于提供上下文服務(wù)以及保障線程安全的邏輯連接,同時(shí)應(yīng)用程序創(chuàng)建一個(gè)臨時(shí)會(huì)話對(duì)象,臨時(shí)會(huì)話對(duì)象中包含本次密碼服務(wù)相關(guān)的上下文環(huán)境,應(yīng)用程序不能直接操作臨時(shí)會(huì)話對(duì)象,而只能通過會(huì)話標(biāo)識(shí)符索弓I臨時(shí)會(huì)話對(duì)象來請(qǐng)求密碼服務(wù);
3.2)應(yīng)用程序通過會(huì)話標(biāo)識(shí)符索引臨時(shí)會(huì)話對(duì)象來請(qǐng)求密碼服務(wù),在請(qǐng)求密碼服務(wù)過程中,如果不同類型的密碼模塊之間存在依賴性,則通過調(diào)用密碼服務(wù)交換開關(guān)的回調(diào)子模塊來完成應(yīng)用程序所需的密碼服務(wù),并在使用完密碼服務(wù)后跳轉(zhuǎn)執(zhí)行步驟4)。
[0037]本實(shí)施例中,會(huì)話管理子模塊負(fù)責(zé)在應(yīng)用程序和密碼模塊之間建立一個(gè)邏輯連接,從而提供上下文服務(wù)以及保障線程安全,本實(shí)施例中應(yīng)用程序通過密碼服務(wù)框架和密碼模塊建立會(huì)話時(shí),具體是把密碼模塊相關(guān)的信息作為參數(shù)、調(diào)用會(huì)話管理子模塊的會(huì)話函數(shù)打開一個(gè)會(huì)話,如果成功,則返回一個(gè)會(huì)話標(biāo)識(shí)符(類似于文件描述符)。應(yīng)用程序只有首先調(diào)用打開會(huì)話接口并成功返回之后,才能正確使用密碼服務(wù),否則無法獲得密碼服務(wù)。應(yīng)用程序打開會(huì)話時(shí),會(huì)動(dòng)態(tài)創(chuàng)建一個(gè)臨時(shí)會(huì)話對(duì)象,其中包含此次密碼服務(wù)相關(guān)的上下文環(huán)境,應(yīng)用不能直接操作會(huì)話對(duì)象,它通過會(huì)話標(biāo)識(shí)符索引會(huì)話對(duì)象,從而請(qǐng)求密碼服務(wù)。之后可以調(diào)用各種密碼服務(wù)API執(zhí)行相應(yīng)的密碼算法,當(dāng)不再需要密碼服務(wù)時(shí),即可以關(guān)閉會(huì)話。
[0038]本實(shí)施例中,應(yīng)用程序按照需求調(diào)用API層的密碼服務(wù)API以執(zhí)行相應(yīng)的密碼算法。此時(shí),執(zhí)行流程將通過syscall從Ring3層陷入到Ringl層。API層的密碼服務(wù)API包括加解密服務(wù)AP1、證書服務(wù)AP1、數(shù)據(jù)存儲(chǔ)服務(wù)API和擴(kuò)展服務(wù)API,用于提供基于密碼設(shè)備和證書的各項(xiàng)功能,允許用戶通過密碼設(shè)備和數(shù)字證書進(jìn)行各種操作,適用于安全應(yīng)用開發(fā)者基于密碼服務(wù)框架來設(shè)計(jì)和處理各類密碼服務(wù)和數(shù)字證書服務(wù)。參見圖1,本實(shí)施例中步驟3.2)應(yīng)用程序通過會(huì)話標(biāo)識(shí)符索引臨時(shí)會(huì)話對(duì)象來請(qǐng)求密碼服務(wù)時(shí),其具體涉四種基本密碼服務(wù)類型的具體執(zhí)行方式如下:
3.2.1)如果調(diào)用加解密服務(wù)API,則加解密服務(wù)管理器將加解密服務(wù)API映射到對(duì)應(yīng)的加解密模塊MPI,然后調(diào)用加解密模塊MPI。此時(shí)執(zhí)行流就會(huì)通過hypercall從Ringl層進(jìn)入RingO層,從而執(zhí)行位于RingO層的加解密模塊中的加解密算法。加解密模塊主要通過對(duì)密碼設(shè)備的控制管理完成加解密服務(wù)功能,包括密碼設(shè)備注冊(cè)管理、會(huì)話管理、對(duì)象管理、加解密服務(wù)管理、多進(jìn)程多線程管理等;
3.2.2)如果調(diào)用證書服務(wù)API,則證書服務(wù)管理器將證書服務(wù)API映射到對(duì)應(yīng)的證書模塊MPI,然后調(diào)用證書模塊MPI。此時(shí)執(zhí)行流就會(huì)通過hypercall從Ringl層進(jìn)入RingO層,從而執(zhí)行位于RingO層的證書模塊中的證書相關(guān)操作。證書模塊主要包括證書解析服務(wù)、在線查詢證書狀態(tài)(OCSP)服務(wù)、證書撤銷列表(CRL)服務(wù)、查詢目錄服務(wù)器(LDAP)服務(wù)等;
3.2.3)如果調(diào)用數(shù)據(jù)存儲(chǔ)服務(wù)API,則數(shù)據(jù)存儲(chǔ)服務(wù)管理器將數(shù)據(jù)存儲(chǔ)服務(wù)API映射到對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)模塊MPI,然后調(diào)用數(shù)據(jù)存儲(chǔ)模塊MPI。此時(shí)執(zhí)行流就會(huì)通過hypercall從Ringl層進(jìn)入RingO層,從而執(zhí)行位于RingO層的數(shù)據(jù)存儲(chǔ)模塊中的操作。數(shù)據(jù)存儲(chǔ)模塊為上層提供數(shù)據(jù)存儲(chǔ)服務(wù)支持,主要包括存儲(chǔ)對(duì)象的創(chuàng)建、修改、查詢和刪除等;
3.2.4)如果調(diào)用擴(kuò)展服務(wù)API,則擴(kuò)展服務(wù)管理器將擴(kuò)展服務(wù)API映射到對(duì)應(yīng)的擴(kuò)展模塊MPI,然后調(diào)用擴(kuò)展模塊MPI。此時(shí)執(zhí)行流就會(huì)通過hypercal I從Ringl層進(jìn)入RingO層,從而執(zhí)行位于RingO層的擴(kuò)展模塊中的操作。擴(kuò)展模塊主要是為了解決以上三種密碼模塊不能提供的密碼服務(wù),一般是指由應(yīng)用系統(tǒng)定制的密碼服務(wù);
需要說明的是針對(duì)應(yīng)用程序而言,四種基本密碼服務(wù)類型僅僅是其所請(qǐng)求密碼服務(wù)的基本服務(wù)組成,應(yīng)用程序在請(qǐng)求密碼服務(wù)時(shí),可以根據(jù)需要設(shè)置一類密碼模塊通過回調(diào)機(jī)制調(diào)用另一類密碼模塊,如加解密操作和證書操作都可以調(diào)用數(shù)據(jù)存儲(chǔ)服務(wù),回調(diào)機(jī)制僅支持調(diào)用基本服務(wù),即基本服務(wù)可以調(diào)用基本服務(wù),擴(kuò)展服務(wù)也可以調(diào)用基本服務(wù),但基本服務(wù)或擴(kuò)展服務(wù)卻不能調(diào)用擴(kuò)展服務(wù),從而實(shí)現(xiàn)本實(shí)施例密碼服務(wù)功能的靈活組合。
[0039]如圖6所示,密碼模塊是密碼服務(wù)框架提供密碼服務(wù)的實(shí)體,負(fù)責(zé)為密碼服務(wù)框架提供所有密碼服務(wù),且通過密碼模塊MPI提供相應(yīng)的密碼服務(wù)支持,密碼模塊分為四類:密碼模塊包括加解密模塊、證書模塊、數(shù)據(jù)存儲(chǔ)模塊和擴(kuò)展模塊。a)加解密模塊,用于為上層提供密碼服務(wù)支持,主要通過對(duì)密碼設(shè)備的控制管理完成加解密密碼服務(wù)功能,包括密碼設(shè)備注冊(cè)管理、會(huì)話管理、對(duì)象管理、密碼服務(wù)管理、多進(jìn)程多線程管理等。b)證書模塊,用于為上層提供證書服務(wù)支持,主要包括證書解析服務(wù)、在線查詢證書狀態(tài)(OCSP)服務(wù)、證書撤銷列表(CRL)服務(wù)、查詢目錄服務(wù)器(LDAP)服務(wù)等。c)數(shù)據(jù)存儲(chǔ)模塊,用于數(shù)據(jù)存儲(chǔ)模塊主要包括存儲(chǔ)對(duì)象的創(chuàng)建、修改、查詢和刪除等。d)擴(kuò)展模塊,用于為上層提供擴(kuò)展服務(wù)支持,主要是為了解決以上三種密碼模塊不能提供的密碼服務(wù),一般是指由應(yīng)用系統(tǒng)定制的密碼服務(wù)。此外,本實(shí)施例還提供完整性認(rèn)證模塊和完整性驗(yàn)證碼生成工具,完整性認(rèn)證模塊基于完整性認(rèn)證接口與密碼服務(wù)交換開關(guān)進(jìn)行交互,其中完整性認(rèn)證模塊用于在模塊注冊(cè)和加載時(shí)驗(yàn)證密碼模塊的完整性驗(yàn)證碼,完整性驗(yàn)證碼生成工具用于產(chǎn)生密碼模塊的完整性驗(yàn)證碼并提供給完整性認(rèn)證模塊使用。
[0040]本實(shí)施例中,步驟I)中預(yù)先創(chuàng)建的密碼服務(wù)框架還包括位于CPU特權(quán)級(jí)最低的Ring3級(jí)安裝配置工具,安裝配置工具用于安裝新的密碼模塊并對(duì)其進(jìn)行配置或者卸載某個(gè)密碼模塊;安裝配置工具設(shè)置口令保護(hù)機(jī)制,口令保護(hù)機(jī)制要求用戶操作安裝配置工具需要輸入正確的用戶口令字,只有輸入正確的用戶口令字后,安裝配置工具才進(jìn)入工作狀態(tài);安裝配置工具在工作狀態(tài)下,當(dāng)使用安裝配置工具注冊(cè)新的密碼模塊,基于密碼服務(wù)框架中的CA根證書和新的密碼模塊簽發(fā)者的證書來進(jìn)行合法性驗(yàn)證,如果驗(yàn)證合法則采用步驟2)中相同的完整性驗(yàn)證方法對(duì)新的密碼模塊進(jìn)行完整性驗(yàn)證,如果完整性驗(yàn)證通過,則允許注冊(cè)新的密碼模塊,否則如果合法性驗(yàn)證或者完整性驗(yàn)證不通過,則拒絕注冊(cè)新的密碼模塊。由于在實(shí)際使用中,密碼服務(wù)框架無可避免地也需要在操作系統(tǒng)環(huán)境下,本實(shí)施例在步驟2)中對(duì)每一個(gè)注冊(cè)的密碼模塊進(jìn)行完整性驗(yàn)證的基礎(chǔ)上,進(jìn)一步使用位于CPU特權(quán)級(jí)最低的Ring3級(jí)的安裝配置工具來安裝新的密碼模塊并對(duì)其進(jìn)行配置或者卸載某個(gè)密碼模塊,使用安裝配置工具人為地對(duì)之進(jìn)行管理、對(duì)應(yīng)用和密碼模塊進(jìn)行注冊(cè),同時(shí)對(duì)進(jìn)行配置或者卸載密碼模塊進(jìn)行合法性驗(yàn)證,安裝配置工具采取完整性驗(yàn)證和口令驗(yàn)證機(jī)制雙重安全機(jī)制,能夠確保安裝、加載的是合法的密碼模塊,并有效防止密碼模塊被非法注銷,保障密碼服務(wù)框架為上層應(yīng)用程序提供服務(wù)的安全性、可用性,從而能夠利用操作系統(tǒng)的安全機(jī)制最大限度保證密碼模塊操作的合法性。如圖1和圖7所示,安裝配置工具位于應(yīng)用層,主要負(fù)責(zé)安裝新的密碼模塊并對(duì)其進(jìn)行配置或者卸載某個(gè)密碼模塊。在密碼模塊的注冊(cè)和注銷時(shí),安裝配置工具采取口令驗(yàn)證、合法性驗(yàn)證和完整性驗(yàn)證機(jī)制,確保安裝、加載的是合法的密碼模塊,并有效防止密碼模塊被非法注銷,保障密碼服務(wù)框架為上層應(yīng)用程序提供服務(wù)的安全性、可用性。安裝配置工具設(shè)置口令保護(hù)機(jī)制,即允許用戶設(shè)置、更新進(jìn)入安裝配置工具的口令字。只有輸入正確的用戶口令字后,安裝配置工具才進(jìn)入工作狀態(tài)。在注冊(cè)密碼模塊以前,先以離線方式將CA根證書和模塊簽發(fā)者的證書導(dǎo)入模塊目錄服務(wù)中(可以導(dǎo)入多個(gè)模塊簽發(fā)者的證書),這些模塊簽發(fā)者被認(rèn)為是合法的簽發(fā)者。在注冊(cè)密碼模塊進(jìn)行完整性驗(yàn)證前,先驗(yàn)證密碼模塊的合法性,即是否合法的模塊簽發(fā)者簽發(fā)的密碼模塊。密碼模塊注冊(cè)到密碼服務(wù)框架時(shí),安裝配置工具驗(yàn)證該模塊的完整性,只有通過完整性驗(yàn)證,才能進(jìn)行密碼模塊的注冊(cè)操作。另外,密碼服務(wù)框架還提供日志與錯(cuò)誤處理功能,可以對(duì)密碼服務(wù)框架中各種操作的時(shí)間、流程、錯(cuò)誤信息等進(jìn)行記錄,可供管理員查詢。本實(shí)施例中針對(duì)密碼模塊的操作共包含三種安全機(jī)制:a) 口令驗(yàn)證。安裝配置工具設(shè)置口令保護(hù)機(jī)制,即允許用戶設(shè)置、更新進(jìn)入安裝配置工具的口令字。只有輸入正確的用戶口令字后,安裝配置工具才進(jìn)入工作狀態(tài)。b)合法性驗(yàn)證。密碼服務(wù)框架在注冊(cè)密碼模塊以前,先以線外的方式將CA根證書和模塊簽發(fā)者的證書導(dǎo)入模塊目錄服務(wù)中(可以導(dǎo)入多個(gè)模塊簽發(fā)者的證書),這些模塊簽發(fā)者被認(rèn)為是合法的簽發(fā)者。在注冊(cè)密碼模塊進(jìn)行完整性驗(yàn)證前,先驗(yàn)證密碼模塊的合法性,即是否合法的模塊簽發(fā)者簽發(fā)的密碼模塊。c)完整性驗(yàn)證。密碼模塊在安裝和加載運(yùn)行時(shí),應(yīng)進(jìn)行完整性驗(yàn)證。密碼模塊注冊(cè)到密碼服務(wù)框架時(shí),密碼服務(wù)框架驗(yàn)證該模塊的完整性,只有通過完整性驗(yàn)證,才能進(jìn)行密碼模塊的注冊(cè)操作。上層應(yīng)用在加載密碼模塊時(shí),必須進(jìn)行完整性驗(yàn)證,只有通過完整性驗(yàn)證,該模塊才能提供相應(yīng)的機(jī)要服務(wù)。另外,密碼服務(wù)框架無可避免地也需要在操作系統(tǒng)環(huán)境下,使用工具人為地對(duì)之進(jìn)行管理、對(duì)應(yīng)用和密碼模塊進(jìn)行注冊(cè),可以利用操作系統(tǒng)的安全機(jī)制最大限度保證操作的合法性。
[0041]本實(shí)施例具體是基于國(guó)產(chǎn)Kylin操作系統(tǒng)實(shí)現(xiàn)作為示范并取得了良好的效果。但是需要說明的是,本實(shí)施例的思路與具體操作系統(tǒng)平臺(tái)無關(guān)。
[0042]以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法,其特征在于實(shí)施步驟如下: O預(yù)先在操作系統(tǒng)中構(gòu)建可供調(diào)用的密碼服務(wù)框架;所述密碼服務(wù)框架包括API層、密碼服務(wù)交換開關(guān)、MPI層和密碼模塊層,所述API層面向密碼服務(wù)使用者提供密碼服務(wù)API,所述MPI層面向密碼服務(wù)提供者提供密碼模塊MPI,所述密碼服務(wù)交換開關(guān)用于控制密碼服務(wù)AP1、密碼模塊MPI之間的映射以及密碼服務(wù)框架中注冊(cè)的密碼模塊管理;所述API層位于CPU特權(quán)級(jí)最低的Ring3級(jí),所述MPI層和密碼模塊層則共同位于CPU特權(quán)級(jí)最高的RingO級(jí),所述密碼服務(wù)交換開關(guān)位于CPU特權(quán)級(jí)次高級(jí)的Ringl級(jí),所述密碼模塊層則包括用于作為提供密碼服務(wù)實(shí)體的密碼模塊; 2)當(dāng)作為密碼服務(wù)使用者的應(yīng)用程序發(fā)出密碼服務(wù)請(qǐng)求時(shí),首先初始化一個(gè)密碼服務(wù)框架實(shí)例,查詢密碼服務(wù)框架中所有已注冊(cè)的密碼模塊,并對(duì)已注冊(cè)的密碼模塊進(jìn)行完整性驗(yàn)證,將驗(yàn)證通過的密碼模塊掛接關(guān)聯(lián)到密碼服務(wù)框架; 3)應(yīng)用程序通過密碼服務(wù)框架和密碼模塊建立會(huì)話,應(yīng)用程序通過密碼服務(wù)框架向密碼模塊請(qǐng)求密碼服務(wù),并在使用完密碼服務(wù)后跳轉(zhuǎn)執(zhí)行下一步; 4)應(yīng)用程序通過密碼服務(wù)框架關(guān)閉和密碼模塊之間的會(huì)話,將密碼服務(wù)框架的各個(gè)密碼模塊卸載取消關(guān)聯(lián),通過清除密碼服務(wù)框架的實(shí)例關(guān)閉密碼服務(wù)框架,本次密碼服務(wù)結(jié)束。
2.根據(jù)權(quán)利要求1所述的基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法,其特征在于:所述步驟I)預(yù)先構(gòu)建的密碼服務(wù)框架中,所述密碼服務(wù)API包括加解密服務(wù)AP1、證書服務(wù)AP1、數(shù)據(jù)存儲(chǔ)服務(wù)AP I和擴(kuò)展服務(wù)API,所述密碼模塊MPI包括加解密模塊MP1、證書模塊MP1、數(shù)據(jù)存儲(chǔ)模塊MPI和擴(kuò)展模塊MPI,所述密碼模塊包括加解密模塊、證書模塊、數(shù)據(jù)存儲(chǔ)模塊和擴(kuò)展模塊,所述密碼模塊、密碼模塊MP1、密碼服務(wù)API三者之間一一對(duì)應(yīng)。
3.根據(jù)權(quán)利要求2所述的基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法,其特征在于:所述步驟I)中預(yù)先創(chuàng)建的密碼服務(wù)框架中,所述密碼服務(wù)AP1、密碼服務(wù)交換開關(guān)之間通過系統(tǒng)調(diào)用syscall進(jìn)行交互,所述密碼服務(wù)交換開關(guān)、密碼模塊MPI之間通過超級(jí)調(diào)用hypercall進(jìn)行交互。
4.根據(jù)權(quán)利要求3所述的基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法,其特征在于:所述密碼服務(wù)交換開關(guān)包括加解密服務(wù)管理器、證書服務(wù)管理器、數(shù)據(jù)存儲(chǔ)服務(wù)管理器、擴(kuò)展服務(wù)管理器、模塊目錄管理子模塊、模塊管理子模塊、會(huì)話管理子模塊、回調(diào)子模塊和完整性認(rèn)證子模塊,所述加解密服務(wù)管理器用于將加解密服務(wù)API映射至加解密模塊MPI,所述證書服務(wù)管理器用于將證書服務(wù)API映射至證書模塊MPI,所述數(shù)據(jù)存儲(chǔ)服務(wù)管理器用于將數(shù)據(jù)存儲(chǔ)服務(wù)API映射至數(shù)據(jù)存儲(chǔ)模塊MPI,所述擴(kuò)展服務(wù)管理器用于將擴(kuò)展服務(wù)API映射至擴(kuò)展模塊MPI,所述模塊目錄管理子模塊用于管理密碼模塊的注冊(cè)信息,所述模塊管理子模塊用于為作為密碼服務(wù)使用者的應(yīng)用程序定位、加載、卸載所需的密碼模塊,所述會(huì)話管理子模塊用于在作為密碼服務(wù)使用者的應(yīng)用程序和作為密碼服務(wù)提供者的密碼模塊之間建立一個(gè)邏輯連接以提供上下文服務(wù)以及保障線程安全,所述回調(diào)子模塊用于為密碼模塊層下不同服務(wù)類的密碼模塊之間的相互調(diào)用提供渠道以降低不同類型密碼模塊間的依賴性,所述完整性認(rèn)證子模塊用于驗(yàn)證已注冊(cè)密碼模塊的完整性。
5.根據(jù)權(quán)利要求4所述的基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法,其特征在于:所述步驟I)中的模塊目錄管理子模塊通過多條key-value形式的記錄存儲(chǔ)密碼模塊的注冊(cè)信息,所述key值為密碼模塊為全局唯一無符號(hào)長(zhǎng)整型ID值轉(zhuǎn)換成的字符串,且所述密碼模塊層中加解密模塊、證書模塊和數(shù)據(jù)存儲(chǔ)模塊、擴(kuò)展模塊四類密碼模塊的全局唯一無符號(hào)長(zhǎng)整型ID值的取值范圍各不相同;所述value值記載密碼模塊注冊(cè)信息為密碼模塊的基本信息、類型信息、令牌信息、擴(kuò)展令牌信息、擴(kuò)展密鑰信息、擴(kuò)展機(jī)制信息中的一種。
6.根據(jù)權(quán)利要求5所述的基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法,其特征在于:所述步驟2)中對(duì)每一個(gè)注冊(cè)的密碼模塊進(jìn)行完整性驗(yàn)證的詳細(xì)步驟如下: 2.1)預(yù)先在將每一個(gè)密碼模塊注冊(cè)到密碼服務(wù)框架時(shí),采用指定的摘要提取算法提取所述密碼模塊的原始摘要信息,并將所述原始摘要信息和所述密碼模塊在操作系統(tǒng)中的安裝路徑信息存儲(chǔ)到預(yù)設(shè)的數(shù)據(jù)庫中;在需要對(duì)每一個(gè)注冊(cè)的密碼模塊進(jìn)行完整性驗(yàn)證時(shí),從密碼服務(wù)框架中取出一個(gè)尚未進(jìn)行完整性驗(yàn)證的密碼模塊作為當(dāng)前密碼模塊,跳轉(zhuǎn)執(zhí)行步驟2.2); 2.2)從所述數(shù)據(jù)庫中取出當(dāng)前密碼模塊的原始摘要信息及所述安裝路徑信息; 2.3)根據(jù)所述安裝路徑信息,采用所述摘要提取算法提取當(dāng)前密碼模塊的當(dāng)前摘要信息; 2.4)判定當(dāng)前密碼模塊的原始摘要信息、當(dāng)前摘要信息是否相等,如果相等,則表示當(dāng)前密碼模塊沒有被篡改,判定驗(yàn)證通過;如果不相等,則表示當(dāng)前密碼模塊已經(jīng)被篡改,判定驗(yàn)證不通過。
7.根據(jù)權(quán)利要求6所述的基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法,其特征在于,所述步驟3)的詳細(xì)步驟如下 : 3.1)應(yīng)用程序通過密碼服務(wù)框架和密碼模塊建立會(huì)話,通過所述會(huì)話在應(yīng)用程序和密碼模塊之間建立一個(gè)用于提供上下文服務(wù)以及保障線程安全的邏輯連接,同時(shí)應(yīng)用程序創(chuàng)建一個(gè)臨時(shí)會(huì)話對(duì)象,所述臨時(shí)會(huì)話對(duì)象中包含本次密碼服務(wù)相關(guān)的上下文環(huán)境,應(yīng)用程序不能直接操作所述臨時(shí)會(huì)話對(duì)象,而只能通過會(huì)話標(biāo)識(shí)符索引臨時(shí)會(huì)話對(duì)象來請(qǐng)求密碼服務(wù); 3.2)應(yīng)用程序通過會(huì)話標(biāo)識(shí)符索引臨時(shí)會(huì)話對(duì)象來請(qǐng)求密碼服務(wù),在請(qǐng)求密碼服務(wù)過程中,如果不同類型的密碼模塊之間存在依賴性,則通過調(diào)用密碼服務(wù)交換開關(guān)的回調(diào)子模塊來完成應(yīng)用程序所需的密碼服務(wù),并在使用完密碼服務(wù)后跳轉(zhuǎn)執(zhí)行步驟4)。
8.根據(jù)權(quán)利要求7所述的基于可擴(kuò)展密碼服務(wù)框架的密碼服務(wù)方法,其特征在于,所述步驟I)中預(yù)先創(chuàng)建的密碼服務(wù)框架還包括位于CPU特權(quán)級(jí)最低的Ring3級(jí)安裝配置工具,所述安裝配置工具用于安裝新的密碼模塊并對(duì)其進(jìn)行配置或者卸載某個(gè)密碼模塊;所述安裝配置工具設(shè)置口令保護(hù)機(jī)制,所述口令保護(hù)機(jī)制要求用戶操作安裝配置工具需要輸入正確的用戶口令字,只有輸入正確的用戶口令字后,安裝配置工具才進(jìn)入工作狀態(tài);所述安裝配置工具在工作狀態(tài)下,當(dāng)使用安裝配置工具注冊(cè)新的密碼模塊,基于密碼服務(wù)框架中的CA根證書和新的密碼模塊簽發(fā)者的證書來進(jìn)行合法性驗(yàn)證,如果驗(yàn)證合法則采用步驟2)中相同的完整性驗(yàn)證方法對(duì)新的密碼模塊進(jìn)行完整性驗(yàn)證,如果完整性驗(yàn)證通過,則允許注冊(cè)新的密碼模塊,否則如果合法性驗(yàn)證或者完整性驗(yàn)證不通過,則拒絕注冊(cè)新的密碼模塊。
【文檔編號(hào)】G06F21/46GK104021335SQ201410246342
【公開日】2014年9月3日 申請(qǐng)日期:2014年6月5日 優(yōu)先權(quán)日:2014年6月5日
【發(fā)明者】戴華東, 廖湘科, 陳松政, 羅軍, 付松齡, 魏立峰, 董攀, 黃辰林, 丁滟 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
永和县| 竹北市| 吴江市| 望江县| 枣强县| 南平市| 曲沃县| 克拉玛依市| 阳信县| 徐水县| 大冶市| 丰宁| 新化县| 张掖市| 曲水县| 噶尔县| 宾阳县| 巴南区| 四会市| 津南区| 巩留县| 水富县| 岳西县| 澜沧| 长武县| 太谷县| 井陉县| 茂名市| 凌云县| 额济纳旗| 怀来县| 盐城市| 电白县| 古蔺县| 鲜城| 天峨县| 泽普县| 静海县| 波密县| 永宁县| 社会|