張秦雪,周建偉,安志遠,李國洪,金永濤,魏艷娜
(1.北華航天工業(yè)學院,河北 廊坊 065000;2.河北省航天遙感信息處理與應用協(xié)同創(chuàng)新中心,河北 廊坊 065000)
隨著網(wǎng)絡技術(shù)的不斷發(fā)展,對于數(shù)據(jù)安全的要求也不斷提升,數(shù)字水印技術(shù)在不影響數(shù)據(jù)使用價值的情況下通過將標識信息直接嵌入數(shù)字載體實現(xiàn)了對信息的隱匿,達到了數(shù)據(jù)安全的要求,但是由于工作環(huán)境及網(wǎng)絡環(huán)境的復雜性,帶有隱匿信息的文件在獲取、訪問、傳播、分發(fā)、應用等階段都有可能丟失、擴散或泄漏[1-5],因此對于數(shù)字水印的質(zhì)量監(jiān)控需要貫穿整個處理流程。在傳統(tǒng)web開發(fā)的模式中,一般采用Socket實現(xiàn)協(xié)議溝通和數(shù)據(jù)請求,其基于TCP/IP傳輸協(xié)議,傳輸數(shù)據(jù)時間短,適用于高性能數(shù)據(jù)的傳輸,是開發(fā)者常使用的網(wǎng)絡數(shù)據(jù)傳輸方法。但是,Socket不支持面向?qū)ο?,傳輸?shù)臄?shù)據(jù)需手動處理,其構(gòu)建了水印嵌入庫。而WebService是基于http協(xié)議傳輸數(shù)據(jù),應用層級的接口方便了開發(fā)者的快速開發(fā),且使用soap協(xié)議進行通信,不需專門針對數(shù)據(jù)流的發(fā)送和接收進行處理,支持面向?qū)ο蠛涂缙脚_開發(fā)[6-11]。
遙感數(shù)據(jù)流監(jiān)控系統(tǒng)是由中心服務器和節(jié)點機構(gòu)建的,其地理空間分布離散,網(wǎng)絡環(huán)境和開發(fā)環(huán)境相對復雜,在B/S架構(gòu)下,采用WebService提供面向?qū)ο蟮目缙脚_應用層服務接口,使用JQuery框架下的Ajax技術(shù)實現(xiàn)前端界面的實時顯示,用戶通過瀏覽器可以對數(shù)字水印的嵌入及提取情況進行獲取,在遇到安全事故時可以及時響應并做出輿情分析,顯示追蹤到的可疑水印文件的流轉(zhuǎn)過程,找到安全問題源頭,幫助管理用戶實現(xiàn)及時、準確、高效的應急反應。
WebService是一種基于http協(xié)議的、跨平臺的、低耦合的web應用程序。實現(xiàn)WebService分布式應用程序的創(chuàng)建需要結(jié)構(gòu)化的數(shù)據(jù)格式、協(xié)議及傳輸方式等規(guī)則,這些規(guī)則有:
XML(extensible markup language)是一種獨立的結(jié)構(gòu)化數(shù)據(jù)描述方式。WebService是基于http協(xié)議進行數(shù)據(jù)傳輸?shù)模浒l(fā)送的請求和結(jié)果都是需要用結(jié)構(gòu)化數(shù)據(jù)XML語言來進行封裝的[12]。XML支持多種平臺的調(diào)用,是實現(xiàn)WebService跨平臺訪問服務的基礎(chǔ)。
SOAP(simple object access protocol)是一種基于http協(xié)議和XML數(shù)據(jù)格式的簡單對象存取協(xié)議,其本質(zhì)是http使用XML在進行請求和接收結(jié)果時在http頭部加入的一些特定的http消息頭,SOAP規(guī)范了調(diào)用方式[13],使XML可以在不同平臺、不同軟件之間傳遞。
WSDL(WebService description language)是基于XML的網(wǎng)絡服務描述語言,實現(xiàn)WebService服務器端和客戶端之間的溝通。WebService通過WSDL將自己提供的服務中的方法、參數(shù)、返回值、地址等信息暴露給客戶端,客戶端根據(jù)自己需要的服務進行請求及訪問。
WebService支持跨平臺的服務訪問,不同操作系統(tǒng)、不同軟件、不同語言、不同通信協(xié)議都可以使用WebService來進行服務的提供及訪問[14]。WebService可以異地調(diào)用[15],在分布式的環(huán)境中通過SOAP協(xié)議可以實現(xiàn)不同地點、不同項目調(diào)用應用程序。WebService可以實現(xiàn)跨防火墻的通信,通常服務器和客戶端之間會通過防火墻和代理服務器關(guān)閉80端口以外的其他端口。WebService基于http協(xié)議,可以通過80端口進行通信,使服務可以更自由地被調(diào)用。
2.1.1 系統(tǒng)結(jié)構(gòu)
該系統(tǒng)主要包括水印操作情況統(tǒng)計模塊、數(shù)字水印實時監(jiān)控模塊及叛逆者追溯模塊,實現(xiàn)了對數(shù)字水印的嵌入、提取、分發(fā)過程的實時監(jiān)控、動態(tài)刷新、可疑文件追蹤等功能。系統(tǒng)采用B/S三層架構(gòu)設計,由Web網(wǎng)頁界面體現(xiàn)整體實現(xiàn)效果,具體服務功能由WebService接口提供。WebService技術(shù)在整個系統(tǒng)中處于核心樞紐的位置,對于上層應用層而言,將WebService服務部署在Web應用服務器上,使Web瀏覽器可以通過http協(xié)議向服務器進行功能服務請求;同時,WebService服務接口訪問底層服務器可以實現(xiàn)對水印指紋庫的操作。遙感數(shù)據(jù)流監(jiān)控系統(tǒng)總體結(jié)構(gòu)如圖1所示。
圖1 遙感數(shù)據(jù)流監(jiān)控系統(tǒng)總體結(jié)構(gòu)
2.1.2 數(shù)據(jù)庫結(jié)構(gòu)
對用戶需求進行客觀分析,設計出系統(tǒng)中的實體及關(guān)聯(lián),能夠更清晰地構(gòu)建系統(tǒng)邏輯結(jié)構(gòu)。該系統(tǒng)針對數(shù)字水印加密監(jiān)控過程建立了水印指紋庫,包含遙感數(shù)據(jù)指紋、水印指紋兩個實體,其中實體的屬性及關(guān)聯(lián)由E-R圖關(guān)系轉(zhuǎn)化得到。遙感數(shù)據(jù)指紋實體及水印指紋實體的E-R圖如圖2所示。
遙感數(shù)據(jù)指紋實體的屬性包括數(shù)據(jù)名稱、數(shù)據(jù)入庫時間、節(jié)點、用戶、數(shù)據(jù)類型、文件大小。遙感數(shù)據(jù)指紋實體可以進行添加、刪除、查詢操作,用戶根據(jù)GUID可以獲取實體信息及流轉(zhuǎn)過程信息,從而實現(xiàn)對數(shù)據(jù)流轉(zhuǎn)的監(jiān)控。水印指紋實體的屬性包括GUID、水印文件名、嵌入及提取時間、狀態(tài)。水印指紋實體可以進行添加、刪除、查詢操作,用戶可以根據(jù)水印文件的唯一標識GUID對水印實體進行查詢,從而獲取水印信息,實現(xiàn)對數(shù)字水印操作的監(jiān)控。水印指紋可以引用得到遙感數(shù)據(jù)指紋的各項信息,實現(xiàn)對被嵌入或提取數(shù)字水印的遙感數(shù)據(jù)的監(jiān)控。
圖2 遙感數(shù)據(jù)指紋實體及水印指紋實體E-R圖
2.2.1 異步調(diào)用
該系統(tǒng)在請求服務時采用WebService中的異步調(diào)用方式,在不影響下一進程的前提下對服務調(diào)用進行輪訓,大大提高了系統(tǒng)的運行效率,提高了資源利用率。Axis2框架下的異步調(diào)用在服務器端無需多余配置,在客戶端使用RPCServiceClient類提供的invokeNonBlocking方法實現(xiàn)客戶端異步訪問WebService。
2.2.2 跨平臺性
面對復雜的語言環(huán)境,不同對等體之間的編譯語言可能不同,將WebService發(fā)布到服務器,在客戶機在服務請求時通過WSDL語言打破編譯語言的屏障,保證了服務的可用率。在Java客戶端使用Axis2提供的wsdl2java.bat腳本命令可以根據(jù)服務上的Axis2服務的WSDL文件自動產(chǎn)生ServiceStub.java類,Java客戶端通過調(diào)用ServiceStub.java類來訪問服務。在C#客戶端可根據(jù)服務器中的WSDL文件地址添加Web引用,從而使客戶端可以訪問到WebService服務。
2.2.3 快速開發(fā)
遙感數(shù)據(jù)流監(jiān)控系統(tǒng)分為服務器和節(jié)點機,其功能需要實時地向水印庫進行數(shù)據(jù)請求,復雜的網(wǎng)絡環(huán)境及不同的開發(fā)語言使得服務的提供成為了困難。該系統(tǒng)使用WebService的axis2框架,在解決開發(fā)語言異構(gòu)性問題的前提下,提高了開發(fā)的效率。Axis2提供了類似于J2EE的部署機制,可以方便地對相關(guān)的依賴文件和屬性文件進行打包,提高了部署效率。使用Axis2 Service Archiver控件,通過簡單地對服務接口進行選擇,將所需發(fā)布的getFileSize、getTime、getnode、getzFilename、Insert、retrospect等方法進行發(fā)布,并設置服務發(fā)布地址,生成war文件,最后將war文件部署進tomcat服務器實現(xiàn)對WebService的簡單部署。通過Axis2框架提供的administration管理頁面,可以更為便捷地對發(fā)布的服務進行管理。
2.2.4 熱部署及熱更新
該系統(tǒng)對于穩(wěn)定運行要求較高,短時間的重啟關(guān)機更新或維護會帶來極大的損失,而Axis2框架提供了熱部署及熱更新的機制,可以保證在系統(tǒng)正常運行的同時進行部署和更新。使用Axis2對WebService進行部署時會產(chǎn)生一個全局配置文件Axis2.xml,在此配置文件中加入“
2.2.5 hash算法生成GUID
GUID為水印指紋的唯一標識,在水印操作統(tǒng)計模塊、水印實時監(jiān)控模塊及叛逆者追溯模塊中起著重要的作用。針對GUID的全局唯一性,在Java中使用hash算法自動生成了GUID。GUID的生成代碼如下:
2.2.6 實時性
遙感數(shù)據(jù)流監(jiān)控系統(tǒng)的前端監(jiān)控界面中使用ajax技術(shù)實現(xiàn)數(shù)據(jù)的實時動態(tài)更新。Jquery框架下的ajax()方法利用HTTP請求服務器數(shù)據(jù),通過$.ajax()實時返回創(chuàng)建的XMLHttpRequest對象列表,使用highchart和qunee中的節(jié)點添加方法繪制出動態(tài)曲線圖及動態(tài)拓撲圖。由于客戶的需求,系統(tǒng)需要每天對數(shù)據(jù)庫進行大量的操作,因此,Java后臺在對數(shù)據(jù)庫訪問時采用Dbutils框架提供的連接池對數(shù)據(jù)庫的連接進行優(yōu)化,避免因為數(shù)據(jù)庫初始化和釋放過程的時間開銷對系統(tǒng)實時性產(chǎn)生影響。
遙感數(shù)據(jù)流監(jiān)控系統(tǒng)采用模塊化編程,根據(jù)數(shù)字水印的可監(jiān)控性和可追溯性,主要分為水印操作情況統(tǒng)計模塊、數(shù)字水印實時監(jiān)控模塊、叛逆者追溯模塊。
水印操作情況統(tǒng)計功能實現(xiàn)了對數(shù)字水印每次嵌入提取記錄的統(tǒng)計與可視化。用戶通過節(jié)點機向服務器進行數(shù)據(jù)請求,在獲取數(shù)據(jù)的同時進行水印的提取,對文件的再次傳輸則要進行水印嵌入,在水印嵌入或提取時通過WebService所提供的getFileSize、getTime、getnode、getzFilename等網(wǎng)絡服務接口獲取各個分支節(jié)點機的水印的GUID、嵌入時間、用戶、狀態(tài)、文件大小等信息,并執(zhí)行相應的統(tǒng)計核算功能,使用戶可以更為直觀地檢測水印嵌入及提取情況。
數(shù)字水印實時監(jiān)控功能用于量化數(shù)據(jù)的存儲和轉(zhuǎn)發(fā)以及水印的嵌入和提取操作,并將結(jié)果進行可視化展示。通過Jquery框架下的ajax()方法使Web頁面可以通過http協(xié)議實時請求到服務器后臺數(shù)據(jù),從而以無刷新動態(tài)更新的拓撲圖、柱狀圖、折線圖、餅圖等方式統(tǒng)計展示出數(shù)字水印嵌入提取量、同比增長量活躍節(jié)點數(shù)量、節(jié)點流轉(zhuǎn)、嵌入提取狀態(tài)占比。采用兼容性、動態(tài)交互性強的highchart圖表庫對Web頁面中圖表的UI進行優(yōu)化,提高可視化效果及用戶體驗。
叛逆者追溯模塊功能基于hash算法生成的水印指紋唯一標識對數(shù)字水印的嵌入提取記錄進行動態(tài)提取,通過基于html5的qunee圖形組件技術(shù)構(gòu)建水印流轉(zhuǎn)圖進行可視化展示,使用戶可以直觀檢測數(shù)字水印的流轉(zhuǎn)情況,針對可疑文件及時彈出警告,明顯標注其可疑問題節(jié)點信息,以便用戶能及時發(fā)現(xiàn)問題并提供問題排查思路。這樣通過水印的流轉(zhuǎn)信息獲取、動態(tài)監(jiān)控及可疑文件的追蹤,在保證遙感數(shù)據(jù)的安全性的前提下,提高了安全工作效率。叛逆者追溯功能如圖3所示。
圖3 叛逆者追溯功能
文中提出了一種基于WebService的遙感數(shù)據(jù)流監(jiān)控系統(tǒng),通過使用WebService技術(shù)打破了平臺和地域的限制,在復雜的網(wǎng)絡環(huán)境中實現(xiàn)了對數(shù)字水印文件嵌入及提取的監(jiān)控功能及叛逆者文件的追溯功能。節(jié)點機作為客戶端通過WebService向服務器請求和獲取服務,通過Ajax技術(shù)用戶可以使用瀏覽器界面直觀地對數(shù)字水印的流轉(zhuǎn)及嵌入提取情況進行實時監(jiān)控。系統(tǒng)具有較高的穩(wěn)定性及可擴展性。