王俊人,龔樂中
(成都衛(wèi)士通信息產(chǎn)業(yè)股份有限公司,四川 成都 610041)
針對國外通用密碼算法存在安全漏洞和安全強(qiáng)度不可控的現(xiàn)狀[1],以及當(dāng)前跨操作系統(tǒng)和多種應(yīng)用的個(gè)性化安全需求,迫切需要基于國密標(biāo)準(zhǔn)的密碼中間件提供一種普適性的、標(biāo)準(zhǔn)化的解決方案。
從當(dāng)前應(yīng)用安全加固時(shí)所遇到情況分析看,安全廠家需要針對每款應(yīng)用以單獨(dú)的加密軟件包以及安全API接口形式提供給應(yīng)用開發(fā)團(tuán)隊(duì)。各應(yīng)用由于其自身業(yè)務(wù)特點(diǎn)或安全需求,所需的安全API接口形態(tài)各異,往往應(yīng)用的需求會導(dǎo)致加密軟件包和安全API接口發(fā)生變化[2]。此外,應(yīng)用開發(fā)團(tuán)隊(duì)必須具備淵博的密碼學(xué)知識,才能靈活調(diào)用安全API接口提供的各種密碼功能。這樣接口調(diào)用雜亂無章,各加密軟件包適用性也較差?;趪軜?biāo)準(zhǔn)的密碼服務(wù)中間件是以國產(chǎn)密碼技術(shù)和密碼功能為基礎(chǔ),以密碼設(shè)備為載體,以密碼服務(wù)為核心,向系統(tǒng)和應(yīng)用提供加密、解密、簽名、認(rèn)證以及相應(yīng)密鑰管理、安全協(xié)議等密碼服務(wù)支持的工程應(yīng)用系統(tǒng)。從接口設(shè)計(jì)來講,既要傾向應(yīng)用的適用性,也要考慮密碼設(shè)備的支持性和升級更新的兼容性。
本文擬提出的密碼服務(wù)的定義為:密碼服務(wù)是安全服務(wù)中具備密碼功能的服務(wù),向應(yīng)用或系統(tǒng)提供加密、解密、簽名、認(rèn)證等密碼函數(shù)支持,以實(shí)現(xiàn)對信息數(shù)據(jù)的保護(hù)、簽名以及訪問實(shí)體身份認(rèn)證等。
中間件是介于操作系統(tǒng)和應(yīng)用程序之間的模塊,面向信息系統(tǒng)交互,集成過程中的通用部分的集合,屏蔽了底層的通訊、交互、連接等復(fù)雜又通用化的功能,以相對獨(dú)立的形式存在并向應(yīng)用程序提供調(diào)用接口。應(yīng)用程序直接采用中間件提供的接口進(jìn)行連接和交互即可,避免了大量的重復(fù)代碼開發(fā),節(jié)約了人工成本。
中間件通常具有以下特點(diǎn):
(1)通用性;
(2)可移植性;
(3)兼容性;
(4)易用性;
(5)標(biāo)準(zhǔn)化。
密碼服務(wù)中間件是將中間件技術(shù)與密碼服務(wù)相結(jié)合,實(shí)現(xiàn)密碼資源共享,并為應(yīng)用開發(fā)者提供標(biāo)準(zhǔn)和靈活的調(diào)用接口。密碼服務(wù)中間件可降低應(yīng)用程序使用密碼服務(wù)和集成密碼設(shè)備的難度,同時(shí)提高靈活性。一方面,解決應(yīng)用程序?qū)γ艽a設(shè)備的獨(dú)占性,密碼設(shè)備可為多個(gè)應(yīng)用提供密碼服務(wù);另一方面,應(yīng)用程序與密碼設(shè)備、密碼設(shè)備的軟件包之間成為一種松耦合關(guān)系,提高了軟硬件設(shè)備和操作系統(tǒng)的兼容性。
密碼服務(wù)中間件試圖屏蔽各平臺(含硬件平臺和操作系統(tǒng))的差異性,從而提供一種通用連接技術(shù)。密碼設(shè)備在各平臺上對應(yīng)用程序達(dá)到真正的即插即用,從而使應(yīng)用程序可以更便捷地使用密碼服務(wù)。
密碼服務(wù)中間件的特點(diǎn):
(1)內(nèi)部實(shí)現(xiàn)細(xì)節(jié)不對外呈現(xiàn),僅開放調(diào)用接口為應(yīng)用程序提供通用密碼服務(wù);
(2)使用鑒權(quán)手段對各應(yīng)用的服務(wù)請求進(jìn)行訪問控制。
目前,密碼服務(wù)的規(guī)范和標(biāo)準(zhǔn)已經(jīng)基于成熟。采用基于X.509證書的公鑰基礎(chǔ)設(shè)施(PKI)提供安全服務(wù)的方案具有普適性,但目前密碼服務(wù)中間件尚無統(tǒng)一的國際標(biāo)準(zhǔn)。大部分密碼服務(wù)中間件都是基于某操作系統(tǒng)或某公司產(chǎn)品的擴(kuò)展,并在其產(chǎn)品應(yīng)用框架內(nèi)提供PKI服務(wù)。當(dāng)前,業(yè)界比較流行的有由 RSA、IETF、Microsoft、Intel、Entrust、等提出的一些解決方案。
目前,國際處于領(lǐng)先地位的是RSA的PKCS#11[3]、Microsoft的 CryptoAPI( 含 CSP) 以 及 Intel的 公 用數(shù)據(jù)安全框架CDSA。國內(nèi)較為領(lǐng)先的有衛(wèi)士通的WestoneCSP和東方通科技的TongSEC。
此外,國內(nèi)也提出了很多密碼服務(wù)的相關(guān)標(biāo)準(zhǔn)。例如,智能密碼鑰匙密碼應(yīng)用接口規(guī)范(SKF)、密碼設(shè)備應(yīng)用接口規(guī)范(SDF)、通用密碼服務(wù)接口規(guī)范(SAF)和證書應(yīng)用綜合服務(wù)接口規(guī)范(SOF)等。
密碼服務(wù)體系架構(gòu)就是構(gòu)成密碼服務(wù)系統(tǒng)的密碼設(shè)備、密碼服務(wù)中間件(密碼服務(wù)接口)以及運(yùn)行環(huán)境相關(guān)的配置、調(diào)用和相互服務(wù)的依賴關(guān)系[4]??梢岳斫鉃槭菑囊粋€(gè)或多個(gè)必須執(zhí)行某些密碼操作的應(yīng)用程序開始,到一個(gè)或多個(gè)密碼設(shè)備結(jié)束的完整運(yùn)行過程。
密碼服務(wù)體系架構(gòu)是基于國密標(biāo)準(zhǔn)的公鑰密碼基礎(chǔ)設(shè)施應(yīng)用技術(shù)體系框架。其中,和密碼服務(wù)中間件強(qiáng)相關(guān)的兩個(gè)接口如下。
(1)密碼設(shè)備應(yīng)用接口
在公鑰密碼基礎(chǔ)設(shè)施應(yīng)用技術(shù)體系框架中,密碼設(shè)備服務(wù)層包含密碼機(jī)、密碼卡、智能密碼終端等密碼設(shè)備,并通過國密標(biāo)準(zhǔn)規(guī)定的密碼設(shè)備應(yīng)用接口向通用密碼服務(wù)層提供與密碼設(shè)備相關(guān)的基礎(chǔ)密碼服務(wù)。
基礎(chǔ)密碼服務(wù)包括密鑰生產(chǎn)、單一的密碼運(yùn)輸、文件管理等服務(wù)。
(2)通用密碼服務(wù)接口
通用密碼服務(wù)通過統(tǒng)一的密碼服務(wù)接口,向典型密碼服務(wù)層和應(yīng)用層提供證書解析、證書認(rèn)證、信息的機(jī)密性、完整性和不可否認(rèn)性等通用密碼服務(wù),將上層應(yīng)用的密碼服務(wù)請求轉(zhuǎn)化為具體的基礎(chǔ)密碼操作請求,通過統(tǒng)一的密碼設(shè)備應(yīng)用接口調(diào)用相應(yīng)的密碼設(shè)備實(shí)現(xiàn)具體的密碼運(yùn)輸和密鑰操作。
從密碼服務(wù)的分層關(guān)系看,可分為典型密碼服務(wù)層、通用密碼服務(wù)層和密碼設(shè)備服務(wù)層。以上3層構(gòu)成了密碼服務(wù)的服務(wù)端,而應(yīng)用層構(gòu)成了應(yīng)用程序的客戶端。
公鑰密碼基礎(chǔ)設(shè)施應(yīng)用技術(shù)體系框架圖,如圖1所示。
圖1 公鑰密碼基礎(chǔ)設(shè)施應(yīng)用技術(shù)體系框架
應(yīng)用由管理員個(gè)人識別密碼(PIN)、用戶個(gè)人識別密碼(PIN)、文件和容器組成,可以存在多個(gè)文件和多個(gè)容器。各應(yīng)用維護(hù)對應(yīng)的與管理員個(gè)人識別密碼(PIN)和用戶個(gè)人識別密碼(PIN)相關(guān)的權(quán)限狀態(tài)。密碼設(shè)備中一個(gè)應(yīng)用的邏輯結(jié)構(gòu)圖,如圖2所示。
圖2 密碼設(shè)備中一個(gè)應(yīng)用的邏輯結(jié)構(gòu)
多應(yīng)用調(diào)用邏輯關(guān)系示意圖,如圖3所示。
密碼服務(wù)中間件是處于服務(wù)接口層和密碼設(shè)備層之間的中間層軟件,主要功能有兩點(diǎn)。
(1)向上提供符合密碼服務(wù)接口規(guī)范的標(biāo)準(zhǔn)接口,滿足密碼服務(wù)接口的應(yīng)用功能;
(2)向下屏蔽密碼設(shè)備的接口特征和使用細(xì)節(jié),實(shí)現(xiàn)信息的可靠交換。
這樣對應(yīng)用開發(fā)者來說,簡化了調(diào)用訪問底層系統(tǒng)資源和操縱有關(guān)軟硬件資源的難度和復(fù)雜度,并提高了系統(tǒng)的安全性和穩(wěn)定性。
密碼服務(wù)功能設(shè)計(jì)如圖4所示。
圖4 密碼服務(wù)功能設(shè)計(jì)
密碼服務(wù)中間件包括以下三類接口:
(1)通用服務(wù)類接口。提供密碼服務(wù)中間件的管理功能,提供初始化、會話的創(chuàng)建、用戶的登錄,向終端操作系統(tǒng)提供設(shè)備信息、設(shè)備句柄、安全存取控制等功能。
(2)密鑰管理類接口。對密鑰進(jìn)行統(tǒng)一管理,提供密鑰產(chǎn)生、配置、導(dǎo)入/導(dǎo)出、銷毀等功能。
(3)密碼功能類接口。向上對應(yīng)用系統(tǒng)提供標(biāo)準(zhǔn)的接口,完成加密、解密、簽名/驗(yàn)證等各類密碼操作服務(wù)。
密碼服務(wù)中間件以應(yīng)用為單位,每個(gè)應(yīng)用分配固定的應(yīng)用Handle,每個(gè)應(yīng)用使用應(yīng)用Handle創(chuàng)建自己的容器,而容器的屬性可以設(shè)置為公開或私有。私有容器只有本應(yīng)用可以訪問,公有容器可以為其他應(yīng)用訪問。
應(yīng)用在私有容器中創(chuàng)建自己的私有秘密數(shù)據(jù)、密鑰、證書、資源配置等信息。
應(yīng)用和容器的管理示意圖,如圖5所示。
密碼服務(wù)接口層的設(shè)計(jì),目前的標(biāo)準(zhǔn)有CSP、PKCS#11、SKF等。目前,CSP可以調(diào)用PKCS#11,所以目前密碼服務(wù)接口層的設(shè)計(jì)參考CSP的接口設(shè)計(jì)。
圖5 應(yīng)用和容器的管理
密碼設(shè)備是密碼服務(wù)的基礎(chǔ)和載體,基礎(chǔ)功能是能夠存儲秘密信息和執(zhí)行密碼運(yùn)算?,F(xiàn)有的密碼設(shè)備分為軟件密碼設(shè)備和硬件密碼設(shè)備。
軟件密碼設(shè)備有OpenSSL、衛(wèi)士通研發(fā)的軟卡。
硬件密碼設(shè)備有嘉微和華大的加密TF卡和海思的麒麟SoC片載inSE。其中,硬件密碼設(shè)備的識別和啟用方式又分為有專用驅(qū)動或無專用驅(qū)動兩類。
密碼服務(wù)中間件要支撐密碼設(shè)備的3種使用場景:
(1)由軟件密碼設(shè)備實(shí)現(xiàn)全部的數(shù)據(jù)存儲和密碼運(yùn)算;
(2)由硬件密碼設(shè)備實(shí)現(xiàn)全部的數(shù)據(jù)存儲和密碼運(yùn)算;
(3)由軟件密碼設(shè)備和硬件密碼設(shè)備協(xié)同完成數(shù)據(jù)存儲和密碼運(yùn)算。
OpenSSL使用Engine技術(shù)集成第二、三方提供的軟件密碼算法庫或者硬件密碼算法設(shè)備。使得上層功能模塊可以透明調(diào)用密碼算法進(jìn)行加解密或簽名驗(yàn)簽。OpenSSL提供了一個(gè)通用的加解密、簽名驗(yàn)簽接口,能夠調(diào)用絕大部分密碼算法庫或者硬件密碼算法設(shè)備。OpenSSL為每種密碼算法定義一個(gè)引擎容器Engine,每個(gè)引擎容器中包含一個(gè)引擎列表和一個(gè)默認(rèn)引擎,還有一些控制信息。引擎為密碼算法提供服務(wù),OpenSSL增加3個(gè)引擎容器,支持國密算法SM2/3/4。以SM2為例,OpenSSL與國密算法集成技術(shù)原理[5]如圖6所示。
圖6 OpenSSL與國密算法集成技術(shù)
通用密碼服務(wù)接口在公鑰密碼基礎(chǔ)設(shè)施支撐的前提下,向應(yīng)用系統(tǒng)和典型密碼服務(wù)層提供各類通用的密碼服務(wù)。遵循國密標(biāo)準(zhǔn)有利于密碼服務(wù)接口產(chǎn)品的開發(fā),有利于應(yīng)用系統(tǒng)在密碼服務(wù)過程中的集成和實(shí)施,有利于實(shí)現(xiàn)各應(yīng)用系統(tǒng)的互聯(lián)互通。
(1)對多進(jìn)程的支持
具體表現(xiàn)為:同一時(shí)刻,密碼服務(wù)中間件可以支持上層多個(gè)應(yīng)用的密碼服務(wù)請求,或一個(gè)應(yīng)用中的多線程密碼服務(wù)請求[6]。
(2)隊(duì)列調(diào)度
密碼服務(wù)中間件支持隊(duì)列的優(yōu)先級調(diào)度。優(yōu)先級可以基于應(yīng)用的搶占式或業(yè)務(wù)的優(yōu)先級。
內(nèi)外主流中間件產(chǎn)品的安全功能無論是傳輸層安全還是數(shù)據(jù)層安全,都是使用國外通用密碼算法實(shí)現(xiàn)的。由于國外通用密碼算法存在安全后門,安全性不可控,且國外密碼算法的密鑰長度受出口限制,所以安全強(qiáng)度不可控?;趪軜?biāo)準(zhǔn)安全中件的安全功能設(shè)計(jì)在使用國密標(biāo)準(zhǔn)的基礎(chǔ)上,實(shí)行傳輸層安全和應(yīng)用數(shù)據(jù)安全,能很好地解決目前中間件產(chǎn)品的安全不可控問題和安全功能欠缺問題。
參考文獻(xiàn):
[1] 李琪林,周明天.可信中間件——技術(shù)現(xiàn)狀和發(fā)展[J].計(jì)算機(jī)科學(xué),2008,35(06):15-19.LI Qi-lin,ZHOU Min-tian.Dependable Middleware:Survey and Further Evolution[J].Computer Science,2008,35(06):15-19.
[2] 徐文拴,辛運(yùn)幃,盧桂章.普適計(jì)算中間件技術(shù)的研究與進(jìn)展[J].計(jì)算機(jī)科學(xué),2007,34(11):1-5.XU Wen-shuan,XIN Yun-wei,LU Gui-zhang.Research and Development of Pervasive Computing Middleware Technology[J].Computer Science,2007,34(11):1-5.
[3] 劉剛,李崢,司漸美.兩種密碼中間件模塊PKCS#11與CSP的對比分析[J].信息安全與通信保密,2007(04):87-88.LIU Gang,LI Zheng,SI Jian-mei.The Contrast Analysis of Two Kinds of Cryptography Middleware Module PKCS#11 and CSP[J].Information Security and Communications Privacy,2007(04):87-88.
[4] 陶建平,曹光宇,張永福.可信密碼系統(tǒng)中間件開發(fā)框架研究與實(shí)現(xiàn)[J].信息工程大學(xué)學(xué)報(bào),2010,11(02):243-247.TAO Jian-ping,CAO Guang-yu,ZHANG Yongfu.Research and Implementation of Middleware Development Framework of Dependable Cryptographic Systems[J].Journal of Information Engineering University,2010,11(02):243-247.
[5] 劉迪,牟鵬,董愛強(qiáng).基于國密算法安全中間件的安全功能研究與設(shè)計(jì)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2017(04):74-78.LIU Di,MOU Peng,Dong Ai-qiang.Research and Design of Security Function Based on GM Algorithm Security Middleware[J].Network Security Technology &Application,2017(04):74-78.
[6] 李林,楊先文,鄭斌.多任務(wù)密碼服務(wù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].信息工程大學(xué)學(xué)報(bào),2013,14(01):96-102.LI Lin,YANG Xian-wen,ZHENG Bin.Design and Implementation of Multi-Tasking Cryptography Service System[J].Journal of Information Engineering University,2013,14(01):96-102.