劉 迪牟 鵬董愛強(qiáng)
(1.國網(wǎng)信息通信產(chǎn)業(yè)集團(tuán)研發(fā)中心 北京 100192;2.北京中電普華信息技術(shù)有限公司研發(fā)事業(yè)部 北京 100192)
基于國密算法安全中間件的安全功能研究與設(shè)計(jì)
劉 迪1牟 鵬2董愛強(qiáng)2
(1.國網(wǎng)信息通信產(chǎn)業(yè)集團(tuán)研發(fā)中心 北京 100192;2.北京中電普華信息技術(shù)有限公司研發(fā)事業(yè)部 北京 100192)
為了使應(yīng)用服務(wù)中間件軟件能滿足用戶網(wǎng)絡(luò)傳輸層安全、應(yīng)用數(shù)據(jù)層安全及安全管理的需求,基于國外通用密碼算法存在安全漏洞及安全強(qiáng)度不可控的現(xiàn)狀,在國密算法的基礎(chǔ)上為應(yīng)用服務(wù)中間件產(chǎn)品設(shè)計(jì)新的安全功能以滿足用戶對(duì)網(wǎng)絡(luò)傳輸層安全、應(yīng)用數(shù)據(jù)層安全以及安全管理的需求。網(wǎng)絡(luò)傳輸層安全通過基于國密算法的SSL/TLS協(xié)議實(shí)現(xiàn),應(yīng)用數(shù)據(jù)層安全通過國密算法的加解密、簽名驗(yàn)簽及摘要功能實(shí)現(xiàn),安全管理功能通過國密算法證書的認(rèn)證和角色授權(quán)實(shí)現(xiàn)。
應(yīng)用服務(wù)中間件;安全功能;國密算法;SSL/TLS
國家高度重視密碼算法國產(chǎn)化工作。2011年初,國家密碼管理局正式發(fā)布《關(guān)于做好公鑰密碼算法升級(jí)工作的通知》,要求對(duì)已建系統(tǒng)進(jìn)行密碼算法的國產(chǎn)化改造。 2012年,國家商用密碼管理局公開了一系列自主研發(fā)的密碼算法[1],包括SM2、SM3、SM4、SM9算法等。2013年工信部發(fā)文要求各行業(yè)原應(yīng)用國外密碼算法RSA1024的企業(yè)進(jìn)行國密SM2算法升級(jí)改造。其中,強(qiáng)制要求所有 CA證書認(rèn)證機(jī)構(gòu)簽發(fā)支持國密 SM2算法的數(shù)字證書。要求金融行業(yè)用國家商用密碼算法(以下簡稱:國密算法)替代國外密碼算法對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行安全保護(hù)。
國家電網(wǎng)公司也高度重視國密算法在國家電網(wǎng)公司信息化系統(tǒng)中的應(yīng)用與推廣。國家電網(wǎng)公司自主研發(fā)的企業(yè)級(jí)應(yīng)用服務(wù)器中間件軟件[2](以下簡稱:中間件)的安全功能是基于國外通用密碼算法實(shí)現(xiàn)的。為實(shí)現(xiàn)國家電網(wǎng)公司關(guān)于基礎(chǔ)軟硬件的“自主、安全、可控”目標(biāo),以及國密算法的應(yīng)用與推廣要求,將研究基于國密算法的應(yīng)用服務(wù)器安全中間件軟件。
1.1 研究背景
目前,中間件通常采用HTTP協(xié)議進(jìn)行訪問,而HTTP協(xié)議通常使用用戶名口令認(rèn)證+明文傳輸模式,這樣的安全機(jī)制容易遭受以下四類針對(duì)Web系統(tǒng)的攻擊:
第一類:針對(duì)客戶端的攻擊——用戶口令暴力破解。用戶/口令認(rèn)證方式不夠安全。在知名的網(wǎng)絡(luò)經(jīng)濟(jì)案例中,通過口令破解入侵的占了接近一半的比例。
第二類:針對(duì)服務(wù)端的攻擊——釣魚網(wǎng)站攻擊。Web系統(tǒng)服務(wù)端不向用戶端提供身份信息,用戶端也不認(rèn)證 Web系統(tǒng)服務(wù)端的合法性。因此,假冒的 Web系統(tǒng)(釣魚網(wǎng)站)可以欺騙用戶,獲得用戶提交的敏感信息。
第三類:針對(duì)通信鏈路的攻擊——網(wǎng)絡(luò)竊聽、篡改、偽造。Web系統(tǒng)用戶與服務(wù)端交互數(shù)據(jù)采用明文形式(HTTP協(xié)議),通信數(shù)據(jù)很容易在網(wǎng)絡(luò)上被捕獲、篡改、偽造。
第四類:針對(duì)應(yīng)用數(shù)據(jù)的攻擊——用戶信息或應(yīng)用程序被篡改、被偽造。Web系統(tǒng)服務(wù)端對(duì)用戶信息或應(yīng)用程序沒有認(rèn)證,也沒有完整性檢測(cè),導(dǎo)致用戶信息可以被篡改和偽造。
如果中間件使用基于SSL/TLS協(xié)議的HTTPS進(jìn)行訪問,則可以防御以上四類攻擊。但是,由于SSL/TLS協(xié)議使用的是國外通用密碼算法,所以仍然具有以下兩類安全風(fēng)險(xiǎn):
第一類:國外密碼算法存在安全后門,建立在國外密碼算法上的安全機(jī)制不能抵御國外攻擊。國際通用的 RSA密碼算法存在安全風(fēng)險(xiǎn),國際權(quán)威密碼機(jī)構(gòu)已確認(rèn)RSA算法不再安全。2013年12月份,新聞報(bào)道:美國國安局(NSA)曾與密碼算法RSA公司達(dá)成了一個(gè)價(jià)格高達(dá)1000萬美元的秘密協(xié)議,NSA要求RSA公司在被廣泛使用的密碼算法中安置后門。
第二類:中間件的安全強(qiáng)度取決于SSL/TLS協(xié)議的安全強(qiáng)度,而SSL/TLS協(xié)議的安全強(qiáng)度取決于密碼算法的安全強(qiáng)度。SSL/TLS默認(rèn)使用國外通用密碼算法,而國外通用密碼算法存在安全風(fēng)險(xiǎn),并且其安全強(qiáng)度也不受控制,因此基于國外通用密碼算法的中間件存在安全風(fēng)險(xiǎn),并且安全性不可控。
基于上述安全問題,提出研究基于國密算法的安全中間件。該中間件支持基于國密算法的SSL/TLS協(xié)議。
1.2 研究現(xiàn)狀
目前,國內(nèi)外主流的中間件產(chǎn)品[3]主要有以下三個(gè):美國Oracle公司的 WebLogic Server,美國 IBM 公司的 WebSphere Application Server,以及中國北京東方通公司的TongWeb應(yīng)用服務(wù)器。它們的安全功能如下:
Oracle WebLogic Server的安全功能包括兩個(gè)方面?zhèn)鬏攲影踩δ芎桶踩芾砉δ?。傳輸層安全功能包括:身份認(rèn)證(包含基于證書的身份認(rèn)證)、數(shù)據(jù)傳輸?shù)谋C苄院屯暾砸约安豢煞裾J(rèn)性。傳輸層安全通過SSL/TLS協(xié)議實(shí)現(xiàn)。安全管理功能包括證書管理、角色管理、授權(quán)管理、審計(jì)功能。
IBM WebSphere Application Server的安全功能包括:傳輸層安全功能和數(shù)據(jù)層安全功能,其中傳輸層安全功能類似WebLogic的傳輸層安全功能,主要通過SSL/TLS協(xié)議實(shí)現(xiàn);數(shù)據(jù)層安全功能,實(shí)現(xiàn)對(duì)數(shù)據(jù)的認(rèn)證、保密性、完整性和不可否認(rèn)性。
東方通TongWeb應(yīng)用服務(wù)器的安全功能包括:傳輸層的安全功能和安全管理功能。其中傳輸層安全功能類似WebLogic的傳輸層安全功能,主要通過SSL/TLS協(xié)議實(shí)現(xiàn);安全管理功能主要指基于角色的授權(quán)管理功能。
表1 中間件產(chǎn)品安全功能對(duì)照表
3 T o n g W e b 身份認(rèn)證;傳輸數(shù)據(jù)的保密性、完整性、不可否認(rèn)性無 角色管理、授權(quán)管理
1.3 問題分析
目前,國內(nèi)外主流中間件產(chǎn)品的安全功能無論是傳輸層安全還是數(shù)據(jù)層安全,都是使用國外通用密碼算法實(shí)現(xiàn)的。由于國外通用密碼算法存在安全后門[4],安全性不可控,并且國外密碼算法的密鑰長度受出口限制,所以安全強(qiáng)度不可控。
表2 中間件產(chǎn)品安全功能問題表
基于以上兩點(diǎn),提出設(shè)計(jì)一種基于國密算法[5]安全中間件的安全功能,以國家對(duì)信息安全“自主、安全、可控”的要求,同時(shí)也滿足國家電網(wǎng)公司對(duì)信息安全的要求。
2.1 組成架構(gòu)
基于國密算法安全中間件包括支持基于國密算法及國外通用密碼算法的SSL/TLS協(xié)議和數(shù)據(jù)加解密及簽名驗(yàn)簽接口的Web服務(wù)端和WebService服務(wù)端以及數(shù)據(jù)庫。用戶使用支持國密算法的瀏覽器發(fā)起HTTPS訪問請(qǐng)求,Web服務(wù)端和用戶端進(jìn)行基于SSL/TLS協(xié)議的證書認(rèn)證(雙向認(rèn)證可選)、加密傳輸訪問請(qǐng)求與響應(yīng)數(shù)據(jù)。Web服務(wù)端和WebService服務(wù)端也通過HTTPS訪問。其中,服務(wù)端可以對(duì)應(yīng)用數(shù)據(jù)進(jìn)行基于國密算法的加解密及簽名驗(yàn)簽。安全中間件中的SSL/TLS協(xié)議即支持國外通用密碼算法也支持國密算法。系統(tǒng)組成架構(gòu)如下圖所示:
圖1 基于國密算法安全中間件的組成架構(gòu)
2.2 業(yè)務(wù)架構(gòu)
基于國密算法安全中間件的安全業(yè)務(wù)架構(gòu)包括兩大類:安全管理和安全服務(wù)。安全管理包括:基于國密算法的證書管理、角色管理、授權(quán)管理、日志審計(jì)管理。安全服務(wù)包括:業(yè)務(wù)應(yīng)用數(shù)據(jù)的加密解密服務(wù)、簽名驗(yàn)簽服務(wù),以及業(yè)務(wù)應(yīng)用數(shù)據(jù)傳輸過程中的基于國密證書的身份認(rèn)證服務(wù)、傳輸數(shù)據(jù)的保密性、完整性服務(wù)。
圖2 安全功能業(yè)務(wù)架構(gòu)
2.3 功能架構(gòu)
安全功能架構(gòu)主要包括安全管理功能和安全服務(wù)功能。安全管理功能主要包括:國密證書管理功能,角色管理功能,授權(quán)管理功能,日志審計(jì)管理功能。安全服務(wù)功能主要包括:傳輸層安全服務(wù)功能的配置調(diào)用接口以及應(yīng)用數(shù)據(jù)安全服務(wù)功能的JAVA調(diào)用接口;傳輸層的國密證書認(rèn)證功能、國密算法的密鑰交換功能、傳輸數(shù)據(jù)的基于國密算法的加解密功能以及哈希摘要摘要功能、基于國密算法的SSL/TLS協(xié)議功能;應(yīng)用數(shù)據(jù)的基于國密算法的加解密功能以及簽名驗(yàn)簽功能;底層國密算法功能及第三方國密算法的調(diào)用引擎功能。
圖3 安全功能功能架構(gòu)
2.4 技術(shù)架構(gòu)
安全技術(shù)架構(gòu)主要包括安全管理技術(shù)架構(gòu)和安全服務(wù)技術(shù)架構(gòu)。安全管理技術(shù)架構(gòu)包括:KeyTool工具實(shí)現(xiàn)國密證書管理功能,Java SE的JAAS接口實(shí)現(xiàn) 認(rèn)證、授權(quán)管理功能,Java EE技術(shù)實(shí)現(xiàn)角色管理、日志審計(jì)管理功能。安全服務(wù)技術(shù)架構(gòu)主要通過Tomcat調(diào)用OpenSSL中的SSL/TLS模塊實(shí)現(xiàn)傳輸層安全,通過JNI技術(shù)調(diào)用OpenSSL中的加解密接口和簽名驗(yàn)簽接口實(shí)現(xiàn)應(yīng)用數(shù)據(jù)安全;OpenSSL中的SSL模塊和加解密、簽名驗(yàn)簽接口通過Engine技術(shù)可以調(diào)用第三方實(shí)現(xiàn)硬件或軟件國密算法,也可以直接調(diào)用自己實(shí)現(xiàn)的國密算法。
圖4 安全功能技術(shù)架構(gòu)
3.1 安全中間件與OpenSSL的集成技術(shù)
安全中間件使用APR通道與OpenSSL模塊集成,進(jìn)而使用OpenSSL提供的安全功能。安全中間件中包含一個(gè)web模塊專門用于處理web請(qǐng)求,在web模塊中內(nèi)嵌一個(gè)tomcat容器,由Tomcat提供http和https服務(wù)。在Tomcat的技術(shù)架構(gòu)中,基于socket的通信有兩種模式:BIO(基于Java實(shí)現(xiàn)的)和APR(基于Apache apr庫實(shí)現(xiàn),C語言實(shí)現(xiàn)),在安全中間件中同時(shí)支持以上兩種模式,可以通過系統(tǒng)配置文件進(jìn)行配置。如下圖所示:
圖5 中間件與OpenSSL集成技術(shù)
上圖為 tomcat支持的兩種通信模式,其中標(biāo)紅的是兩種對(duì)SSL/TLS的實(shí)現(xiàn)方式,在基于BIO的Socket通信模式中,通過JSSE(Java Secure Socket Extension )技術(shù)實(shí)現(xiàn)SSL/TLS功能;在基于APR的通信模式中,通過OpenSSL實(shí)現(xiàn)SSL/TLS功能。在BIO通道中,jdk包實(shí)現(xiàn)SSL功能(Tomcat、Weblogic等中間件并沒有實(shí)現(xiàn)SSL/TLS的功能),封裝在jsse.jar包和jce.jar中。在APR通道,基于OpenSSL開源項(xiàng)目(C語言實(shí)現(xiàn)),實(shí)現(xiàn)SSL/TLS的功能。通過tomcat-native實(shí)現(xiàn)了tomcat 和OpenSSL模塊的集成。
3.2 安全中間件對(duì)OpenSSL的調(diào)用技術(shù)
安全中間件的 Web容器中通過本地方法接口調(diào)用 APR和OpenSSL。Web容器中有一個(gè)native接口模塊,native接口模塊是一個(gè)銜接java語言和C語言的橋梁。native接口模塊調(diào)用OpenSSL庫提供通道安全(傳輸層安全)和應(yīng)用數(shù)據(jù)安全功能。Web容器中提供了多種處理 Socket的實(shí)現(xiàn):JIoEndpoint、AprEndpoint和NioEndpoint。其中AprEndpoint使用JNI的接口來獲得對(duì)Socket的訪問,功能實(shí)現(xiàn)比較復(fù)雜。使用native 接口模塊為Tomcat提供更好的伸縮性、更高的性能以及更強(qiáng)的集成能力。這些都可以使web容器變得更通用、更易擴(kuò)展。
3.3 OpenSSL與第三方國密算法的集成技術(shù)
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、SM3、SM4。如下圖(以SM2為例):
圖6 OpenSSL與第三方國密算法集成技術(shù)
4.1 安全管理
安全管理中的關(guān)鍵功能是客戶端證書認(rèn)證、角色管理與授權(quán)管理。其中,證書認(rèn)證包括證書有效性驗(yàn)證和身份驗(yàn)證。授權(quán)管理通過角色進(jìn)行權(quán)限分配。證書有效性驗(yàn)證有兩種方式,一種是在線實(shí)時(shí)驗(yàn)證。使用OCSP協(xié)議(Online Certificate Status Protocol, rfc2560)實(shí)時(shí)驗(yàn)證證書有效性。OCSP客戶端通過查詢OCSP服務(wù)來確定一個(gè)證書的狀態(tài)。OCSP可以通過HTTP協(xié)議來實(shí)現(xiàn)。rfc2560定義了OCSP客戶端和服務(wù)端的消息格式。另一種是離線驗(yàn)證。使用證書撤銷列表(CRL)檢查證書的有效性。CRL是證書撤銷狀態(tài)的公布形式,以一定的周期進(jìn)行更新?;谧C書的身份認(rèn)證和授權(quán)通過證書與角色關(guān)系表以及角色與權(quán)限關(guān)系表實(shí)現(xiàn)。證書與角色關(guān)系表存放客戶端證書主題信息與客戶端的角色信息對(duì)應(yīng)關(guān)系,角色與權(quán)限關(guān)系表存放角色與訪問權(quán)限的對(duì)應(yīng)關(guān)系。在客戶端建立 SSL/TLS握手[6]時(shí),服務(wù)端讀取客戶端證書主題信息,查找證書與角色關(guān)系表,取得客戶端的角色信息,再查找角色與權(quán)限關(guān)系表,取得客戶端的訪問權(quán)限,從而實(shí)現(xiàn)客戶端的身份認(rèn)證和基于角色的授權(quán)。
4.2 傳輸層安全
傳輸層安全主要通過調(diào)用 OpenSSL中 SSL/TLS模塊實(shí)現(xiàn)。SSL/TLS模塊通過調(diào)用國密算法中的SM2和SM3算法實(shí)現(xiàn)SSL握手(身份認(rèn)證和密鑰交換),通過調(diào)用SM4算法實(shí)現(xiàn)傳輸數(shù)據(jù)的加密。硬件國密算法的調(diào)用通過OpenSSL中的引擎Engine技術(shù)實(shí)現(xiàn)[7]。引擎技術(shù)通過引擎對(duì)象模型, 使上層模塊獲得對(duì)可變化的底層描述的引用, 此底層描述大部分是針對(duì)底層硬件的描述。大致過程是: 聲明一個(gè)引擎對(duì)象, 然后用希望使用的硬件的描述符來初始化這個(gè)引擎對(duì)象。流程框架如下所示:
圖7 OpenSSL Engine技術(shù)
4.3 應(yīng)用數(shù)據(jù)安全
應(yīng)用數(shù)據(jù)安全指Java應(yīng)用通過JNI技術(shù)調(diào)用OpenSSL中的基于國密算法的加解密功能和簽名驗(yàn)簽功能。OpenSSL為了方便上層應(yīng)用調(diào)用不同密碼算法的加解密和簽名驗(yàn)簽功能,統(tǒng)一封裝了密碼算法庫里的所有密碼算法,并將封裝接口定義為EVP。通過統(tǒng)一封裝,上層應(yīng)用只需要在初始化時(shí)設(shè)定相關(guān)參數(shù),就可以調(diào)用不同的密碼算法進(jìn)行加解密和簽名驗(yàn)簽。
用EVP技術(shù)[8]封裝國密算法:SM2、SM3、SM4[9]。EVP_SM2提供基于SM2的數(shù)據(jù)加密、解密接口,實(shí)現(xiàn)了電子信封的功能。同時(shí)提供數(shù)字簽名和驗(yàn)簽接口,實(shí)現(xiàn)防抵賴。EVP_SM4提供基于SM4的數(shù)據(jù)分組加解密接口,并提供緩沖功能。EVP_SM3提供基于SM3的信息摘要接口。調(diào)用過程如下圖:
圖8 Java 調(diào)用C 技術(shù)
5.1 測(cè)試環(huán)境
測(cè)試環(huán)境包括硬件環(huán)境、軟件環(huán)境、網(wǎng)絡(luò)環(huán)境、測(cè)試工具,具體如下表所示。
表6 測(cè)試環(huán)境
5.2 測(cè)試方案
客戶端使用支持國密算法證書的瀏覽器通過 https訪問測(cè)試系統(tǒng)。瀏覽器與安全中間件建立基于國密算法的SSL/TLS連接。SSL/TLS建立連接時(shí)客戶端和服務(wù)端相互驗(yàn)證對(duì)方身份:國密算法證書的有效性。安全中間件根據(jù)客戶端的證書信息確定客戶端的角色,測(cè)試系統(tǒng)根據(jù)客戶端的角色確定客戶端的訪問權(quán)限,返回角色測(cè)試頁面。角色測(cè)試頁面測(cè)試應(yīng)用數(shù)據(jù)的加密、解密功能和簽名驗(yàn)簽功能。角色測(cè)試頁面如下:
圖9 測(cè)試頁面設(shè)計(jì)
5.3 測(cè)試結(jié)果
客戶端通過基于國密算法的瀏覽器訪問安全中間件。通過HTTPS發(fā)起訪問,SSL/TLS握手過程使用的國密套件,測(cè)試數(shù)據(jù)如下:
圖10 測(cè)試結(jié)果:使用國密算法套件
應(yīng)用數(shù)據(jù)的加密、解密功能和簽名驗(yàn)簽功能。測(cè)試結(jié)果如下:
圖11 測(cè)試結(jié)果:應(yīng)用數(shù)據(jù)安全功能:源數(shù)據(jù)
圖12 測(cè)試結(jié)果:應(yīng)用數(shù)據(jù)安全功能:加密數(shù)據(jù)
圖13 測(cè)試結(jié)果:應(yīng)用數(shù)據(jù)安全功能:解密數(shù)據(jù)
圖14 測(cè)試結(jié)果:應(yīng)用數(shù)據(jù)安全功能:簽名數(shù)據(jù)
圖15 測(cè)試結(jié)果:應(yīng)用數(shù)據(jù)安全功能:數(shù)據(jù)驗(yàn)簽
安全中間件基于國密算法的安全功能即安全管理、傳輸層安全、應(yīng)用數(shù)據(jù)安全均可以實(shí)現(xiàn)。
國內(nèi)外主流中間件產(chǎn)品的安全功能無論是傳輸層安全還是數(shù)據(jù)層安全,都是使用國外通用密碼算法實(shí)現(xiàn)的。由于國外通用密碼算法存在安全后門,安全性不可控,并且國外密碼算法的密鑰長度受出口限制,所以安全強(qiáng)度不可控?;趪芩惴ò踩虚g件的安全功能設(shè)計(jì)在使用國密算法的基礎(chǔ)上實(shí)行傳輸層安全和應(yīng)用數(shù)據(jù)安全。能很好解決目前中間件產(chǎn)品的安全不可控問題和安全功能欠缺問題。
[1]GM/T 0024-2014SSL VPN技術(shù)規(guī)范[S].北京:中國標(biāo)準(zhǔn)出版社.
[2]馮揚(yáng).數(shù)據(jù)(災(zāi)備)中心中間件應(yīng)用服務(wù)器研究與設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2015.
[3]魏勇,張權(quán).中間件技術(shù)研究[J].電子技術(shù)應(yīng)用,2004.
[4]Acii?mez,W.Schindler.A vulnerability in RSA implementations due to instruction cache analysis and its demonstration on OpenSSL[R].Lecture Notes in Computer Science, 2008.
[5]張永建.RSA算法和SM2算法的研究[D].江西贛州:江西理工大學(xué),2015
[6]何福均.OpenSSL握手過程的測(cè)試與分析[D].湖北武漢:華中科技大學(xué),2008.
[7]殷杰.OpenSSL分析與測(cè)試[D].天津:天津大學(xué),2008.
[8]吳永強(qiáng).國密 SSL安全通信協(xié)議的研究與實(shí)現(xiàn)[D].陜西西安:西安電子科技大學(xué),2014.
[9]牛永川.SM2橢圓曲線公鑰密碼算法的快速實(shí)現(xiàn)研究[D].山東濟(jì)南:山東大學(xué),2013.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2017年4期