丁 明,周 林,韓京云,宋慶磊,宋轉(zhuǎn)玲,李新放,劉海行
(國家海洋局第一海洋研究所 海洋信息與計(jì)算中心,山東 青島 266061)
信息化提高了整個(gè)社會(huì)的運(yùn)行效率,信息網(wǎng)絡(luò)已成為社會(huì)發(fā)展的重要保證,隨著信息技術(shù)的發(fā)展,海洋信息化應(yīng)用日益普及,海洋信息化建設(shè)取得了顯著的進(jìn)展,為實(shí)現(xiàn)“數(shù)字海洋、生態(tài)海洋、安全海洋、和諧海洋”奠定了良好的基礎(chǔ)[1]。數(shù)字化網(wǎng)絡(luò)化已在海洋信息管理中普遍應(yīng)用,信息資源已經(jīng)成為重要的生產(chǎn)要素、無形資產(chǎn)和社會(huì)財(cái)富[2],而信息的核心是數(shù)據(jù),所以保護(hù)數(shù)據(jù)的安全是信息安全最重要的工作。
在海洋科研信息化的過程中,數(shù)字化的信息數(shù)據(jù)必然會(huì)吸引各種人為攻擊,數(shù)據(jù)安全已經(jīng)成為阻礙海洋信息化深度發(fā)展的重要原因之一。如何在盡可能不妨礙信息交流效率的前提下,保證信息的保密性、完整性與不可否認(rèn)性,已經(jīng)成為海洋信息管理與應(yīng)用網(wǎng)絡(luò)化過程面臨的主要問題[3]。
密碼學(xué)是信息安全的基礎(chǔ),公鑰密碼技術(shù)相對(duì)于傳統(tǒng)的對(duì)稱密碼學(xué)是一個(gè)重大的進(jìn)步,是信息安全技術(shù)中的革命性進(jìn)展,目前公鑰體制廣泛地應(yīng)用于數(shù)字證書認(rèn)證機(jī)構(gòu)(CA ,Certificate Authority)認(rèn)證、數(shù)字簽名和密鑰交換等領(lǐng)域[4]。CA是整個(gè)信息安全的基礎(chǔ),是PKI(Public Key Infrastructure,公鑰基礎(chǔ)設(shè)施)的核心執(zhí)行機(jī)構(gòu),負(fù)責(zé)數(shù)字證書的產(chǎn)生、簽發(fā)、廢除等工作[5]。基于公鑰密碼技術(shù)的CA系統(tǒng),在信息安全方面具有廣泛的用途,能起到數(shù)據(jù)保密、數(shù)據(jù)完整性確認(rèn)、身份認(rèn)證、訪問控制、行為不可否認(rèn)性等作用。Bouncy Castle是一個(gè)開源的加密包的API集合,實(shí)現(xiàn)了大量的加密算法。通過應(yīng)用數(shù)字證書結(jié)合加密技術(shù),能夠有效地保障海洋信息管理網(wǎng)絡(luò)化過程中的信息安全。
CA認(rèn)證系統(tǒng)在多個(gè)領(lǐng)域已經(jīng)得到了廣泛的應(yīng)用,網(wǎng)上銀行是典型的基于 CA認(rèn)證體系的電子商務(wù)應(yīng)用系統(tǒng);電子政務(wù)方面,國家電子政務(wù)外網(wǎng)的“政務(wù)電子認(rèn)證系統(tǒng)”已擁有最大容量為100萬張證書的數(shù)字證書中心CA。目前的中小型海洋信息管理系統(tǒng)在安全方面多側(cè)重于身份認(rèn)證與權(quán)限管理,缺乏信息傳輸與存儲(chǔ)的加密功能。由于海洋數(shù)據(jù)具有多元、多源性、時(shí)序性、海量性、異構(gòu)性、標(biāo)準(zhǔn)性與機(jī)密性等特點(diǎn)[6],在中小型海洋信息系統(tǒng)的開發(fā)與建設(shè)過程使用第三方的CA限制較多,購買與集成成本較高,所以構(gòu)建一個(gè)通用,易于集成與修改、擴(kuò)展的認(rèn)證中心是一個(gè)很好的選擇。
本文面向海洋信息管理的應(yīng)用需求,基于開源軟件體系,采用Bouncy Castle加密包、J2EE體系架構(gòu),對(duì)CA進(jìn)行設(shè)計(jì)和開發(fā),能為海洋信息管理系統(tǒng)提供更好的安全保障。
信息系統(tǒng)安全的目的是保證信息系統(tǒng)所支持的業(yè)務(wù)過程運(yùn)作的安全[7],本 CA用來保障海洋信息在服務(wù)器存儲(chǔ)和網(wǎng)絡(luò)傳輸過程中的安全性,對(duì)相關(guān)人員提供身份驗(yàn)證并保障其行為不可否認(rèn)性,同時(shí)具備通用性,輕量化的特點(diǎn),便于各中小型海洋信息管理系統(tǒng)集成?;谝陨夏繕?biāo),本CA將實(shí)現(xiàn)的功能見圖1。
圖1 面向海洋信息管理的輕量級(jí)CA功能結(jié)構(gòu)Fig.1 The functional architecture provided by lightweight CA for marine management information
證書生成與簽發(fā)是CA的核心部分,本CA具備生成證書和簽發(fā)各種不同用途的數(shù)字證書的功能。例如: X.509 V3標(biāo)準(zhǔn)格式的身份證書;具有加密功能的SSL證書;Web Server證書;S/MIME電子郵件證書等。
證書管理功能主要包括: 證書的申請(qǐng)、審核、查詢、撤銷功能。
具備CRL(Certificate Revocation List)的產(chǎn)生、發(fā)布、更新、在線查詢功能。CRL的范圍包括所有用戶的作廢證書以及 CA的作廢證書,能夠?qū)RL有效期進(jìn)行調(diào)整,管理CRL的更新周期。同時(shí)將CRL發(fā)布至Web頁面,供用戶下載。
用戶管理包括用戶的創(chuàng)建、刪除、更新、歸檔等功能。為證書使用者創(chuàng)建賬號(hào),從而可以對(duì)與用戶相關(guān)的證書、密鑰等操作進(jìn)行管理,在用戶注銷時(shí),從數(shù)據(jù)庫里刪除用戶以及相關(guān)的證書、密鑰等信息,將所有用戶歸檔,以便以后對(duì)用戶的行為進(jìn)行追查。
本系統(tǒng)采用模塊化結(jié)構(gòu)設(shè)計(jì),由證書注冊(cè)審批中心(RA ,Registration Authority)、CA控制認(rèn)證中心、CA服務(wù)中心幾部分構(gòu)成,系統(tǒng)結(jié)構(gòu)見圖2。
證書申請(qǐng)與發(fā)放的主要流程: 用戶使用 RA服務(wù),申請(qǐng)獲得證書。管理員收到請(qǐng)求后使用RA管理系統(tǒng),審查和批準(zhǔn)用戶的證書申請(qǐng),如果管理員批準(zhǔn)證書的申請(qǐng),CA控制中心將簽發(fā)用戶證書。最后用戶獲得自己的證書。
圖2 面向海洋信息管理的輕量級(jí)CA系統(tǒng)結(jié)構(gòu)Fig.2 Architecture of lightweight CA for marine management information
證書吊銷流程: 首先用戶提交證書吊銷申請(qǐng)。然后管理員使用CA管理系統(tǒng)審批用戶證書吊銷。最后CA處理系統(tǒng)根據(jù)管理員的請(qǐng)求,吊銷指定證書,并將吊銷的證書信息發(fā)布到證書吊銷列表(CRL)中,通過LDAP、OCSP等方式進(jìn)行發(fā)布,同時(shí)對(duì)數(shù)據(jù)庫中保存的用戶證書的信息進(jìn)行更新。
針對(duì)多數(shù)海洋信息管理系統(tǒng)對(duì)數(shù)據(jù)安全的需求,為確保系統(tǒng)具有較好的兼容性、安全性和可擴(kuò)展性,本系統(tǒng)采用 J2EE平臺(tái)進(jìn)行開發(fā),并采用 Bouncy Castle實(shí)現(xiàn)加密設(shè)計(jì)。
Java平臺(tái)具有高度的安全性,Java的安全平臺(tái)有兩部分組成: Java安全體系內(nèi)核與 Java密碼體系。Java安全體系,包括自動(dòng)內(nèi)存管理,字節(jié)代碼驗(yàn)證機(jī)制,安全類加載方式等。Java的密碼體系設(shè)計(jì)得很完善: Java Security提供相關(guān)類和接口,位于Java編程語言的核心API內(nèi)的java.security包,可供開發(fā)人員實(shí)現(xiàn)安全功能。Java的密碼體系依賴于JCA (Java Cryptography Architecture)和JCE(Java Cryptography Extension)。JCA 提供基本的加密框架,如證書、數(shù)字簽名、消息摘要和密鑰對(duì)產(chǎn)生器;JCE擴(kuò)展了JCA,提供了更豐富的API,包括對(duì)稱分組算法、對(duì)稱的流加密算法、非對(duì)稱加密算法和信息認(rèn)證碼等[8]。
加密包Bouncy Castle: 由于JCA/JCE并不執(zhí)行各種算法,它們只是連接應(yīng)用和實(shí)際算法實(shí)現(xiàn)程序的一組接口,所以我們同時(shí)需要使用Bouncy Castle加密包。Bouncy Castle是一個(gè)不受美國出口控制規(guī)定限制的開源的加密包。它功能強(qiáng)大,包括: JAVA和C#版本的輕量級(jí)加密API、JCE/JCA的provider以及對(duì)X.509,CRLs,PKCS12,S/MIME,OCSP等的支持。
基于CA系統(tǒng)的功能設(shè)計(jì)和J2EE開發(fā)平臺(tái),本文對(duì)CA系統(tǒng)進(jìn)行了設(shè)計(jì)和實(shí)現(xiàn),下面給出CA的核心實(shí)現(xiàn)代碼。
本文面向海洋信息管理的安全需求,對(duì)設(shè)計(jì)實(shí)現(xiàn)的 CA系統(tǒng)在數(shù)字簽名和信息加密等方面進(jìn)行了具體的應(yīng)用?,F(xiàn)以某區(qū)域海洋數(shù)據(jù)收集與信息共享系統(tǒng)為例,介紹本CA在海洋信息管理系統(tǒng)中的使用。
該系統(tǒng)通過互聯(lián)網(wǎng)實(shí)現(xiàn)異地?cái)?shù)據(jù)采集、傳遞與共享,對(duì)數(shù)據(jù)安全有較高的要求,現(xiàn)結(jié)合該系統(tǒng)需求對(duì)本CA的使用進(jìn)行簡要闡述。
異地?cái)?shù)據(jù)采集,實(shí)時(shí)發(fā)送數(shù)據(jù)到服務(wù)器,數(shù)據(jù)對(duì)采集者和處理者之外的人員保密。針對(duì)該需求,系統(tǒng)首先判斷所采集數(shù)據(jù)文件的大小,如果數(shù)據(jù)文件較小,就直接使用通過CA服務(wù)中心獲得的數(shù)據(jù)處理者的公鑰,采用 RSA加密算法對(duì)數(shù)據(jù)進(jìn)行加密,然后將加密后的數(shù)據(jù)上傳到服務(wù)器保存。對(duì)于較大的數(shù)據(jù)文件,采用數(shù)字信封(Digital Envelope)技術(shù),采用AES(Advanced Encryption Standard)加密算法生成一個(gè) 256位的密鑰,使用該密鑰對(duì)大數(shù)據(jù)文件進(jìn)行加密,并使用數(shù)據(jù)處理者的公鑰對(duì)該密鑰進(jìn)行加密,最后將加密后的密鑰和加密后的數(shù)據(jù)文件打包后通過網(wǎng)絡(luò)發(fā)送到服務(wù)器保存。
用戶需要隨時(shí)隨地獲取經(jīng)授權(quán)的數(shù)據(jù)。服務(wù)器收到用戶的數(shù)據(jù)使用申請(qǐng)后,首先判斷用戶是否有訪問該數(shù)據(jù)的權(quán)限,如果用戶有合法權(quán)限,系統(tǒng)將會(huì)解密指定數(shù)據(jù),然后再使用該用戶的公鑰將數(shù)據(jù)加密后發(fā)送給用戶,數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中處于加密狀態(tài),所以用戶可以隨時(shí)通過網(wǎng)絡(luò)下載數(shù)據(jù)而不必?fù)?dān)心安全問題,下載后使自己的CA證書私鑰解密即可使用。
為保證用戶發(fā)布結(jié)果數(shù)據(jù)的可靠性和不可否認(rèn)性,要求用戶對(duì)發(fā)布的數(shù)據(jù)進(jìn)行簽名。該需求采用數(shù)字簽名技術(shù)解決: 首先采用SHA1算法獲得要發(fā)布的數(shù)據(jù)的數(shù)字摘要值,然后用戶用自己的私鑰對(duì)包含數(shù)字摘要值與當(dāng)前時(shí)間等信息的文件進(jìn)行加密處理,實(shí)現(xiàn)了對(duì)數(shù)據(jù)的合法“簽名”,最后將要發(fā)布的數(shù)據(jù)和私鑰加密后的數(shù)據(jù)打包發(fā)布。數(shù)據(jù)使用者通過CA服務(wù)中心獲得數(shù)據(jù)發(fā)布用戶的公鑰來解讀收到的“數(shù)字簽名”,并將解讀結(jié)果與數(shù)據(jù)的SHA1值進(jìn)行對(duì)比,從而保障接收到的數(shù)據(jù)是可靠的和完整的。
通過以上設(shè)計(jì),使需要保密的數(shù)據(jù)在傳輸和服務(wù)器的存放過程中完全處于加密狀態(tài),只有指定CA證書私鑰的擁有人員才能使用。這樣保證了無論是通過網(wǎng)絡(luò)截取數(shù)據(jù),還是攻破服務(wù)器后獲得數(shù)據(jù)文件,得到的皆是無法讀取的加密后的數(shù)據(jù),從而保證了指定的海洋信息數(shù)據(jù)的安全。
通過以上所述的設(shè)計(jì)與實(shí)現(xiàn)細(xì)節(jié),可以看出本CA具有以下顯著特點(diǎn):
1)系統(tǒng)采用主流開源軟件、跨平臺(tái)語言實(shí)現(xiàn),具有較高的安全性、兼容性和可擴(kuò)展性,可以通過中間件技術(shù)方便地集成到已有的海洋信息管理系統(tǒng)當(dāng)中[9]。
2)系統(tǒng)與用戶交互采用 B/S模式,通過瀏覽器進(jìn)行,不受客戶端操作系統(tǒng)及運(yùn)行環(huán)境限制,易于部署和操作。
3)在多數(shù)海洋信息管理系統(tǒng)的使用環(huán)境下,沒有直接訪問CA注冊(cè)審批中心與控制中心的需求,可以對(duì)CA控制中心進(jìn)行物理隔離,從而在不影響正常功能使用的前提下確保系統(tǒng)安全。
4)本系統(tǒng)遵循國際化的X.509 V3標(biāo)準(zhǔn),以及國家 PKI標(biāo)準(zhǔn) GB/T19713-2005 GB/T 19714-2005,系統(tǒng)具有很好的開放性,能夠與各種應(yīng)用結(jié)合,成為具有實(shí)用價(jià)值的真正的安全基礎(chǔ)設(shè)施。
隨著海洋信息化、數(shù)字化的深入發(fā)展,數(shù)字化管理的海洋信息具有分布性、數(shù)據(jù)和信息類型格式的多樣性、數(shù)據(jù)的海量性特點(diǎn)[10],保護(hù)數(shù)字化海洋信息安全已經(jīng)成為海洋信息化過程中的重要任務(wù)。針對(duì)海洋信息管理快速發(fā)展過程中對(duì)信息安全的需求,結(jié)合當(dāng)前信息安全技術(shù)應(yīng)用的現(xiàn)狀,本文提出了用開源軟件開發(fā)構(gòu)建CA的一種方法,并給出了具體實(shí)現(xiàn),該CA有必備的功能和較好的安全性,便于不同系統(tǒng)集成,具有較高的應(yīng)用和理論價(jià)值。
[1]國家海洋局.國家海洋事業(yè)發(fā)展規(guī)劃綱要[R].北京:國家海洋局,2008.
[2]朱建明.基于博弈論的信息安全技術(shù)評(píng)價(jià)模型[J].計(jì)算機(jī)學(xué)報(bào),2009,32(4): 828.
[3]劉豐,韓偉.海洋信息系統(tǒng)的安全問題與對(duì)策研究[J].海洋開發(fā)與管理,2012,7: 60.
[4]張琳.基于PKI的電子商務(wù)安全研究[J].電子科技大學(xué)學(xué)報(bào),2009,38(增刊): 101.
[5]關(guān)震勝.公鑰基礎(chǔ)設(shè)施 PKI及其應(yīng)用[M].北京: 電子工業(yè)出版社,2008: 69-70.
[6]張明華,黃冬梅,熊中敏,等.多源異構(gòu)海量海洋數(shù)據(jù)綜合管理平臺(tái)構(gòu)建研究[J].海洋科學(xué),2012,36(02):110.
[7]余志偉,唐任仲,賈東澆,等.一種基于業(yè)務(wù)過程的信息系統(tǒng)安全需求分析方法[J].中國機(jī)械工程,2007,18(4): 457.
[8]馬臣云,王彥.精通PKI網(wǎng)絡(luò)安全認(rèn)證技術(shù)與編程實(shí)現(xiàn)[M].北京: 人民郵電出版社,2008: 279.
[9]肖天威,張世永,鐘亦平.基于 PKI/CA的中間件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2006,32(4): 190.
[10]何亞文,蘇奮鎮(zhèn),杜云艷,等.海洋信息網(wǎng)格服務(wù)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].地球信息科學(xué)學(xué)報(bào),2010,12(5): 681.