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