顧震凱,張紹華,李超,戴炳榮
(1上海海洋大學(xué)信息學(xué)院,上海 201306;2上海計算機軟件技術(shù)開發(fā)中心,上海 201112)
海洋浮標(biāo)是海洋觀測中的重要手段,具有連續(xù)、長期、全天候、全天時、穩(wěn)定可靠等特點[1],能夠?qū)崿F(xiàn)數(shù)據(jù)的自動采集、自動發(fā)送,其通信方式較為多樣[2-3]。近海浮標(biāo)一般采用移動網(wǎng)絡(luò)通信,遠(yuǎn)海浮標(biāo)通常采用衛(wèi)星通信、北斗短報文等方式[4-5]。
漁業(yè)捕撈中,由于魚類資源時空變化大[6],需要快速尋找中心漁場以提高捕撈效率[7-8]。近年來,海洋浮標(biāo)通過攜帶魚探設(shè)備,成為探測漁場的重要手段[9-10],但是由于海洋浮標(biāo)數(shù)據(jù)容易受到黑客的攻擊竊取,導(dǎo)致漁業(yè)公司花費時間與金錢成本投放的海洋浮標(biāo)沒有得到應(yīng)有的收益[11-13]。目前的研究中,已經(jīng)有不少研究人員對海洋浮標(biāo)的數(shù)據(jù)管理系統(tǒng)給出了研究方案:任鵬等[14]基于R語言與相關(guān)Web框架Shiny構(gòu)建了一個海洋浮標(biāo)大數(shù)據(jù)處理平臺;朱明壘[15]提出了海洋資料浮標(biāo)的數(shù)據(jù)接收系統(tǒng),但以上方案只是針對海洋浮標(biāo)數(shù)據(jù)存儲與管理的需求,未考慮數(shù)據(jù)傳輸過程中的安全性;張新文等[16]采用對稱加密與非對稱加密結(jié)合的方式設(shè)計了海洋浮標(biāo)數(shù)據(jù)的管理系統(tǒng),通過加密來保護數(shù)據(jù)傳輸?shù)陌踩?,但其?shù)據(jù)的共享缺乏靈活性,為實現(xiàn)數(shù)據(jù)的細(xì)粒度共享,本研究引入了屬性基加密。
屬性基加密(ABE)最初由Sahai等[17]提出,根據(jù)訪問策略的嵌入位置不同,可分為兩種[18]:一種是將訪問策略嵌入密鑰的密鑰策略屬性基加密(KP-ABE);另一種是將訪問策略嵌入密文的密文策略屬性基加密(CP-ABE),將訪問策略嵌入密文這意味著數(shù)據(jù)的擁有者可以通過設(shè)定不同的訪問策略來決定誰可以訪問這份數(shù)據(jù)密文,可以對數(shù)據(jù)實現(xiàn)細(xì)化到用戶屬性的訪問控制。因此,CP-ABE在數(shù)據(jù)的細(xì)粒度共享方面有著廣闊的應(yīng)用前景。
本研究首先對北斗海洋浮標(biāo)系統(tǒng)的工作模式進行了分析,根據(jù)海洋浮標(biāo)系統(tǒng)的實際工作情況設(shè)計了海洋浮標(biāo)數(shù)據(jù)安全管理系統(tǒng)的各層架構(gòu)與功能模塊,并基于對稱加密與屬性基加密設(shè)計了數(shù)據(jù)存儲與數(shù)據(jù)請求的業(yè)務(wù)流程。最后對系統(tǒng)進行實現(xiàn),并將多種加密方案進行了對比測試。
北斗海洋浮標(biāo)是一種基于北斗衛(wèi)星的定位與短報文傳輸進行通信的浮標(biāo),除了可以監(jiān)測洋流的速度以及方向外,還可通過搭載多種傳感器為航海、漁業(yè)、港工以及海洋開發(fā)提供服務(wù)[19-20]。北斗海洋浮標(biāo)以浮球作為浮標(biāo)體,浮標(biāo)體上搭載太陽能電池板為整個浮標(biāo)系統(tǒng)進行供電[21-22],浮標(biāo)上的數(shù)據(jù)采集系統(tǒng)將各傳感器采集到的數(shù)據(jù)通過通信系統(tǒng)發(fā)送到北斗衛(wèi)星。岸上的數(shù)據(jù)中心從北斗衛(wèi)星接收數(shù)據(jù),對數(shù)據(jù)進行轉(zhuǎn)碼[23]和預(yù)處理后將數(shù)據(jù)存儲在數(shù)據(jù)庫中,并對數(shù)據(jù)進行管理。
圖1 海洋浮標(biāo)與岸基數(shù)據(jù)接收系統(tǒng)結(jié)構(gòu)Fig.1 The structure of ocean buoy and shore-based data receiving system
基于可操作性、安全性、可擴展性的原則設(shè)計了3個子系統(tǒng),分別為數(shù)據(jù)加解密子系統(tǒng)、數(shù)據(jù)管理子系統(tǒng)和密鑰管理子系統(tǒng),具體的功能模塊如圖2所示。其中,數(shù)據(jù)加解密子系統(tǒng)包括AES加解密的實現(xiàn),CP-ABE加解密的實現(xiàn)和訪問策略的構(gòu)建等;數(shù)據(jù)管理子系統(tǒng)包括海洋浮標(biāo)數(shù)據(jù)管理,海洋水文數(shù)據(jù)管理,漁業(yè)信息數(shù)據(jù)管理等;密鑰管理子系統(tǒng)負(fù)責(zé)管理系統(tǒng)中使用的密鑰,如AES對稱密鑰,CP-ABE加解密中的系統(tǒng)公鑰δPK,系統(tǒng)主密鑰δMK以及用戶的私鑰δSK等。
圖2 海洋浮標(biāo)數(shù)據(jù)安全管理系統(tǒng)模塊Fig.2 The modules of ocean buoy data security management system
根據(jù)浮標(biāo)數(shù)據(jù)管理系統(tǒng)運行的實際需求[24],本系統(tǒng)采用多層分布式框架結(jié)構(gòu)[25]。系統(tǒng)的具體架構(gòu)如圖3所示。
圖3 系統(tǒng)總體架構(gòu)Fig.3 The overall architecture of system
其中,數(shù)據(jù)層是整個系統(tǒng)的基石,使用MySQL數(shù)據(jù)庫對各類海洋浮標(biāo)數(shù)據(jù)進行維護管理,使用Redis數(shù)據(jù)庫對用戶的登錄憑證進行有時間限制的存儲;邏輯層為系統(tǒng)的具體功能實現(xiàn),其中數(shù)據(jù)加解密子系統(tǒng)是對AES加解密和屬性基加解密以及訪問策略的實現(xiàn),密鑰管理子系統(tǒng)是對系統(tǒng)中生成與使用的密鑰,如AES密鑰,屬性基加密中的系統(tǒng)公鑰δPK和系統(tǒng)主密鑰δMK以及用戶私鑰δSK等的安全保存與管理;表現(xiàn)層為本系統(tǒng)的用戶操作界面以及數(shù)據(jù)呈現(xiàn)界面的實現(xiàn);用戶層為系統(tǒng)的具體使用者,大致可分為漁業(yè)的從業(yè)人員、漁業(yè)領(lǐng)域科研人員和本系統(tǒng)的管理人員等。本研究中使用的相關(guān)符號的含義如表1所示。
表1 相關(guān)符號的定義Tab.1 Definition of related symbols
密文策略的屬性基加密(CP-ABE)是將密文與訪問策略相關(guān)聯(lián),用戶私鑰與屬性相關(guān)聯(lián),不需要知道用戶的身份,當(dāng)用戶的屬性與密文的訪問策略相匹配時,便能使用其私鑰解密密文。CP-ABE的工作流程分為4個步驟[26]:
(1)初始化階段:(δPK,δMK)=ABE.SetUp(λ),輸入安全參數(shù)λ,生成系統(tǒng)公鑰δPK和系統(tǒng)主密鑰δMK。
(2)數(shù)據(jù)加密階段:Tenc=ABE.Encrypt(δPK,Tplain,δAP),使用系統(tǒng)公鑰δPK與數(shù)據(jù)擁有者設(shè)置的訪問策略δAP對數(shù)據(jù)明文Tplain進行加密,得到密文Tenc。
(3)密鑰生成階段:δSK=ABE.KeyGen(δMK,A),使用用戶的屬性集A,系統(tǒng)主密鑰δMK,生成用戶私鑰δSK。
(4)密文解密階段:Tplain=ABE.Decrypt(Tenc,δSK),使用用戶私鑰δSK對數(shù)據(jù)密文Tenc進行解密,如果用戶的屬性集A滿足設(shè)置的訪問策略δAP,則解密成功,得到數(shù)據(jù)明文Tplain。
海洋浮標(biāo)數(shù)據(jù)的安全主要體現(xiàn)在存儲與分享過程中數(shù)據(jù)的可靠性、機密性等[27-28]。實現(xiàn)數(shù)據(jù)安全的核心是加密算法與訪問控制[29]。根據(jù)海洋浮標(biāo)數(shù)據(jù)安全性的實際需求,本系統(tǒng)采用AES對稱加密與CP-ABE加密結(jié)合的方法,設(shè)計了安全的數(shù)據(jù)加密與存儲的方案。
數(shù)據(jù)加密并存儲的過程如圖4所示,主要步驟如下。
首先是浮標(biāo)數(shù)據(jù)的采集與解碼。海洋浮標(biāo)的各類傳感器收集數(shù)據(jù),通過北斗衛(wèi)星短報文的通信形式傳輸?shù)桨痘臄?shù)據(jù)中心。根據(jù)海洋實時數(shù)據(jù)處理規(guī)范,岸基數(shù)據(jù)中心將接收到的數(shù)據(jù)進行解碼,解碼后獲得浮標(biāo)數(shù)據(jù)Tplain。
其次在浮標(biāo)數(shù)據(jù)管理中心接收到數(shù)據(jù)Tplain后,系統(tǒng)進行初始化工作,密鑰管理子系統(tǒng)隨機生成一個AES密鑰αKEY,長度固定為128位,并根據(jù)預(yù)先設(shè)定的安全參數(shù)λ生成系統(tǒng)公鑰δPK,系統(tǒng)主密鑰δMK。接著使用AES密鑰對Tplain進行加密,加密后的密文為Tenc,根據(jù)所加密的浮標(biāo)數(shù)據(jù)的類型設(shè)置相應(yīng)的訪問策略δAP,使用系統(tǒng)公鑰δPK與訪問策略δAP對αKEY進行CP-ABE加密,生成密鑰密文αCK。
最后是數(shù)據(jù)存儲。系統(tǒng)將加密后的浮標(biāo)數(shù)據(jù)Tenc和密鑰密文αCK存儲到數(shù)據(jù)庫中。
在浮標(biāo)數(shù)據(jù)存儲的過程中,通過AES密鑰對浮標(biāo)數(shù)據(jù)進行加密,再使用CP-ABE對AES密鑰進行加密,數(shù)據(jù)與密鑰在傳輸?shù)倪^程中均為密文狀態(tài),保障了數(shù)據(jù)的機密性。數(shù)據(jù)的獲取依賴于AES密鑰的獲取,而AES密鑰則通過CP-ABE進行加密,只有屬性滿足設(shè)定訪問策略的用戶才能夠?qū)ES密鑰進行CP-ABE解密,實現(xiàn)了數(shù)據(jù)的細(xì)粒度的訪問控制。
根據(jù)海洋浮標(biāo)數(shù)據(jù)安全性的要求,本系統(tǒng)設(shè)計了浮標(biāo)數(shù)據(jù)請求的方案,支持基于用戶屬性的細(xì)粒度的數(shù)據(jù)訪問控制。
用戶請求浮標(biāo)數(shù)據(jù)的過程如圖5所示。
圖5 海洋浮標(biāo)數(shù)據(jù)請求的過程Fig.5 The process of ocean buoy data request
主要步驟如下:
首先客戶端用戶發(fā)起海洋浮標(biāo)數(shù)據(jù)的請求。用戶在海洋浮標(biāo)數(shù)據(jù)管理系統(tǒng)中注冊,并登錄后,將其請求海洋浮標(biāo)的編號和自身屬性集A發(fā)送給海洋浮標(biāo)數(shù)據(jù)管理系統(tǒng)的服務(wù)端。
其次服務(wù)端通過接收到的海洋浮標(biāo)編號在數(shù)據(jù)庫中檢索相應(yīng)浮標(biāo)的加密數(shù)據(jù)Tenc以及相關(guān)AES密鑰的密文αCK。服務(wù)端中密鑰子系統(tǒng)給出系統(tǒng)主密鑰δMK、系統(tǒng)公鑰δPK。
服務(wù)端使用系統(tǒng)主密鑰δMK和用戶屬性集A生成用戶私鑰δSK,并使用私鑰δSK對接收到的AES密鑰的密文αCK進行CP-ABE解密,如果用戶的屬性集A符合預(yù)先設(shè)定的訪問策略δAP,則可成功解密,否則無法解密。CP-ABE解密完成后得到AES密鑰αKEY,對接收到的浮標(biāo)數(shù)據(jù)密文Tenc進行AES解密,解密后可得到請求的海洋浮標(biāo)數(shù)據(jù)的明文Tplain。
最后服務(wù)端將浮標(biāo)數(shù)據(jù)Tplain回送給用戶,用戶退出系統(tǒng),斷開連接。至此數(shù)據(jù)請求的工作完成。
本系統(tǒng)的實現(xiàn)中,使用Java基于SpringBoot框架來進行服務(wù)端業(yè)務(wù)模塊的開發(fā),Java版本使用JDK8,數(shù)據(jù)庫采用MySQL數(shù)據(jù)庫與Redis數(shù)據(jù)庫,操作系統(tǒng)為Windows10,PC機硬件為AMD Ryzen5 5600U處理器,16 GB RAM。后臺在阿里云服務(wù)器進行部署,服務(wù)器系統(tǒng)為CentOS。系統(tǒng)架構(gòu)采用客戶端/服務(wù)端(C/S)架構(gòu),具體的雙端實現(xiàn)如下。
在系統(tǒng)的服務(wù)端的實現(xiàn)上,本研究基于JPBC密碼庫使用Java實現(xiàn)了加解密模塊,包括AES密鑰的生成,AES加解密功能的實現(xiàn),CP-ABE中訪問策略的構(gòu)造,CP-ABE加解密功能的實現(xiàn),其中AES密鑰固定為128位,大小為16 B。在數(shù)據(jù)庫方面,本研究通過MyBatis框架實現(xiàn)對MySQL數(shù)據(jù)庫中數(shù)據(jù)的維護管理,通過Redis數(shù)據(jù)來實現(xiàn)用戶登錄憑證的有過期機制的存儲。浮標(biāo)數(shù)據(jù)在系統(tǒng)開發(fā)中均以Json形式傳輸與顯示。
在系統(tǒng)的客戶端的實現(xiàn)上,本研究基于Vue.js框架設(shè)計了系統(tǒng)的操作與管理頁面,通過TCP協(xié)議與服務(wù)端建立連接,并進行數(shù)據(jù)的傳輸。
本系統(tǒng)采用AES對稱密鑰加密浮標(biāo)數(shù)據(jù),采用CP-ABE加密AES密鑰,浮標(biāo)數(shù)據(jù)與密鑰均以密文的形式傳遞,保障了數(shù)據(jù)的機密性與安全性,但在系統(tǒng)工作的過程中,對數(shù)據(jù)的處理操作將增加系統(tǒng)的性能開銷。本研究從加密效率、安全性等方面對多種加解密方案進行了對比,并對屬性個數(shù)不同的情況下,CP-ABE加解密所需要的時間進行了測試對比。
(1)不同加解密方案的對比
基于海洋浮標(biāo)數(shù)據(jù)管理[30-31]的實際需求,本系統(tǒng)在選擇加密算法時對比了多種加密算法,其中有中國國家密碼局發(fā)布的對稱加密SM4算法,開源的對稱加密AES算法和基于密文策略的屬性基加密CP-ABE,表2是多種加密算法在加密效率、密鑰安全、數(shù)據(jù)共享等方面的對比結(jié)果。從表中可以看出,在加解密效率方面,AES算法相比于SM4算法稍有優(yōu)勢,同時CP-ABE相比于SM4和AES算法在密鑰管理安全與數(shù)據(jù)的細(xì)粒度共享方面有著顯著的優(yōu)勢,但是CP-ABE的加解密效率相比于SM4和AES較低,因此本研究采用了先對海洋浮標(biāo)數(shù)據(jù)使用AES加密再對AES密鑰使用CP-ABE加密的方案,由于AES密鑰長度較短,大小在本系統(tǒng)中固定為16 B,使用CP-ABE對其加密會比較迅速,可以有效地解決CP-ABE加解密效率略低的問題,同時對AES密鑰加密也解決了對稱加密中存在的密鑰泄漏問題,因此,本研究采用的加密方案在加密效率、密鑰安全、細(xì)粒度數(shù)據(jù)共享等方面均具有一定的優(yōu)越性。
表2 多種加密算法的對比Tab.2 Comparison of different encryption algorithms
(2)不同屬性個數(shù)CP-ABE加解密所需時間對比
固定浮標(biāo)數(shù)據(jù)大小為500 KB,通過改變屬性的個數(shù),計算CP-ABE加解密所需的時間。圖6表示CP-ABE在不同屬性個數(shù)下加解密所需時間的變化,由圖6可以看出,隨著屬性個數(shù)的增加,CP-ABE加解密所需的時間也呈線性增長的趨勢。因此,CP-ABE中訪問策略設(shè)置的越復(fù)雜,屬性設(shè)置越多,細(xì)粒度訪問控制的程度越高,則消耗的計算資源也會越多。
圖6 在不同屬性個數(shù)下CP-ABE加解密所需時間變化Fig.6 The time spent for CP-ABE with different attributes
本節(jié)中,將任鵬[14]與朱明壘[15]提出的傳統(tǒng)海洋浮標(biāo)數(shù)據(jù)管理系統(tǒng),以及張新文等[16]提出的基于混合加密的浮標(biāo)數(shù)據(jù)管理系統(tǒng)與本文方案分別從數(shù)據(jù)的加密方式,是否支持內(nèi)容加密密鑰的安全保管,是否支持訪問控制等3個方面進行對比分析。對比的結(jié)果如表3所示,任鵬等[14]與朱明壘[15]提出的傳統(tǒng)海洋浮標(biāo)數(shù)據(jù)管理系統(tǒng),未考慮浮標(biāo)數(shù)據(jù)的安全問題,僅實現(xiàn)了浮標(biāo)數(shù)據(jù)的采集存儲與查詢等;張新文等[16]提出的基于混合加密的浮標(biāo)數(shù)據(jù)管理系統(tǒng),采用了對稱加密與非對稱加密混合的方式對浮標(biāo)數(shù)據(jù)進行加密保護,其通過非對稱加密解決了對稱加密的密鑰保管安全問題,但其數(shù)據(jù)的共享依賴于非對稱加密的公鑰與私鑰,公鑰與私鑰一一對應(yīng),在多個用戶訪問數(shù)據(jù)的情況下,需要使用每位用戶的公鑰分別為對稱密鑰進行加密,增加計算資源的消耗,不利于數(shù)據(jù)的共享;本研究為解決以上的問題,實現(xiàn)浮標(biāo)數(shù)據(jù)的安全管理,首先使用AES算法加密浮標(biāo)數(shù)據(jù),解決浮標(biāo)數(shù)據(jù)的安全問題,其次為解決AES密鑰的安全管理問題,使用CP-ABE對AES密鑰進行加密,在CP-ABE加密的過程中將訪問策略嵌入了AES密鑰的密文中,用戶在請求數(shù)據(jù)的時候只需提交其屬性集,系統(tǒng)為其生成私鑰,并進行CP-ABE解密,如果用戶屬性符合訪問策略,則解密成功。在多用戶訪問數(shù)據(jù)的情況下,此方案中只需要對AES密鑰加密一次,便可實現(xiàn)細(xì)化到用戶屬性的訪問控制,大大減少了計算資源的消耗,有利于數(shù)據(jù)的共享。綜上所述,本研究方案在浮標(biāo)數(shù)據(jù)安全,密鑰安全,數(shù)據(jù)共享等領(lǐng)域具有顯著優(yōu)勢。
表3 多種海洋浮標(biāo)數(shù)據(jù)關(guān)系系統(tǒng)的對比分析Tab.3 Comparison of different ocean buoy data management schemes
本研究將對稱加密與屬性基加密結(jié)合,構(gòu)建了海洋浮標(biāo)數(shù)據(jù)的安全管理系統(tǒng)。系統(tǒng)的測試結(jié)果表明,系統(tǒng)運行穩(wěn)定,能夠以較低的時間開銷實現(xiàn)數(shù)據(jù)的安全存儲以及細(xì)粒度訪問控制,對浮標(biāo)數(shù)據(jù)被攻擊竊取問題的解決有著突出優(yōu)勢。本研究是加密技術(shù)的延伸,屬性基加密的引入使得浮標(biāo)數(shù)據(jù)的管理更具有靈活性,有助于傳統(tǒng)的數(shù)據(jù)請求流程的優(yōu)化,省去煩瑣的權(quán)限申請,對于提高海洋浮標(biāo)數(shù)據(jù)管理的安全性與靈活性的理論研究與實用價值明顯,但在數(shù)據(jù)的加解密效率方面仍然存在一定的不足,下一步的研究中,會在對稱加密的加解密效率與系統(tǒng)內(nèi)通信的網(wǎng)絡(luò)性能等方面進一步研究優(yōu)化。
□