屠袁飛 楊庚 張成真
工業(yè)企業(yè)為了降低運營成本和相關費用,不斷尋求能夠提供穩(wěn)定性,容錯性和靈活性的工業(yè)系統(tǒng)解決方案.云端輔助的工業(yè)控制系統(tǒng)[1]隨之出現(xiàn),即將云計算服務、物聯(lián)網(wǎng)與傳統(tǒng)的數(shù)據(jù)采集與監(jiān)控(Supervisory control and data acquisition,SCADA)系統(tǒng)整合,以感知真實世界中不斷變化的狀態(tài),通過云計算、大數(shù)據(jù)分析,實現(xiàn)動態(tài)的優(yōu)化控制,甚至可以將其部署在實時閉環(huán)的控制回路中[2?5].在整合過程中,新舊技術重疊使用,除具有傳統(tǒng)SCADA系統(tǒng)存在的安全問題外,還面臨其他來源多樣的威脅,包括敵對政府,恐怖組織,內(nèi)部人士的惡意或意外行為,惡意入侵者,事故和自然災害等.依賴云通信使得SCADA 系統(tǒng)更加開放,但系統(tǒng)命令和信息也可能在通信過程中被修改,嗅探或丟失.即使一些工業(yè)云采用了傳統(tǒng)的用戶名密碼的訪問控制機制,進入云中的用戶面對系統(tǒng)全部的數(shù)據(jù),也可能破壞其他不可訪問資源的隱私.更重要的是,在工業(yè)系統(tǒng)中執(zhí)行的邏輯對物理世界有直接的影響,被惡意攻擊的系統(tǒng)會對人類的健康安全、環(huán)境、設備造成嚴重的破壞及損失,最知名的莫過于2010年伊朗核系統(tǒng)遭受的Stuxnet病毒事件[6].近年來,世界各國均提出了一些極具參考意義的指標和安全實踐指南[7],我國也頒布了《網(wǎng)絡安全法》,提出加強關鍵信息基礎設施安全防護,維護國家網(wǎng)絡安全.
對此有學者提出通過加密方法來阻止信息泄露,實現(xiàn)隱私保護[8].文獻[9]基于穩(wěn)定性判據(jù)設計了一種工業(yè)控制系統(tǒng)中加密傳輸機制的可行性評估模型.
文獻[10]對SCADA 網(wǎng)絡安全已有的標準規(guī)范進行了綜述,并使用縱深防御理論對其分別進行了評估.文獻[11]采用粒子濾波算法,建立工控系統(tǒng)網(wǎng)絡態(tài)勢感知模型,判斷系統(tǒng)是處于“安全態(tài)勢”還是“危險態(tài)勢”.文獻[12]針對SCADA系統(tǒng)使用的DNP3通信協(xié)議的安全問題,使用密碼學工具來防止數(shù)據(jù)在傳輸?shù)倪^程中被竊聽,保護數(shù)據(jù)通信的安全,并做了相關性能測試.文獻[13]針對工業(yè)無線傳感器網(wǎng)絡中無線介質(zhì)的開放特性,攻擊者可以容易地竊聽通信來收集關于傳感器的隱私信息這一問題,提出了一種能夠支持網(wǎng)絡身份驗證的假名通信方案.該方案利用代理服務器為每臺傳感器分配隨機ID的方法來匿名通信,但僅支持傳感器的一跳范圍之內(nèi)的隱私保護.文獻[14]將主流加密算法應用在PLC中,對其性能進行了仿真測試,并在PLC網(wǎng)絡中實測了網(wǎng)絡吞吐量,結果表明AES算法是目前最適合PLC的加密方法.然而作為一種對稱加密算法,如何管理其密鑰是必須考慮的問題.
通過上述安全控制措施的確能夠檢測惡意軟件的引入,減輕系統(tǒng)運行威脅,但并沒有將攻擊者拒之門外.文獻[15]表明通過APT攻擊,攻擊者能夠在不引起數(shù)據(jù)被破壞的情況下,長時間地潛伏在系統(tǒng)中竊取數(shù)據(jù).文獻[16]指出用戶的疏忽也是導致信息泄露的重要因素,因此需要設計一種覆蓋所有現(xiàn)場設備的細粒度訪問控制方案,防止任何未經(jīng)授權的訪問行為.文獻[17]提出應限制對打印機或共享磁盤等公共資源的訪問,訪問者應包含在網(wǎng)絡的已知用戶中,并通過認證方法來阻止隱蔽信道.文獻[18]針對關鍵基礎設施資產(chǎn)保護問題,采用可信計算方法來限制軟件平臺上的開放接口,達到保護資產(chǎn)的目的,但并不能提供細粒度的訪問控制.變電站安全標準IEC/TS62351-8[19]建議使用認證機制,尤其是基于角色的訪問控制(Role-based access control,RBAC)方法[20]來降低整個SCADA網(wǎng)絡的復雜性.文獻[21]則針對樓宇控制系統(tǒng)中各分布式子系統(tǒng)間的通信安全問題,為用戶分配預定訪問權限策略的角色,保護資源免受未經(jīng)授權的訪問.文章缺點在于當主體和客體屬性的數(shù)量變大時,角色的數(shù)量呈指數(shù)增長.
與RBAC不同,從分布式計算派生的基于屬性的訪問控制(Attribute-based access control,ABAC)方法為系統(tǒng)中的每個實體分配所謂的“屬性”.用屬性描述的策略可以表達基于屬性的邏輯語義,靈活地描述訪問控制策略[22].在基于密文策略(Ciphertext-policy attribute-based encryption,CP-ABE)的方案中[23],密文中嵌入了訪問控制結構,即加密之后就確定了哪些用戶能夠?qū)λM行解密而不需要借助可信服務器來實現(xiàn)這種控制.
本文利用基于屬性的加密(Attribute-based encryption,ABE)算法能夠有效實現(xiàn)細粒度非交互訪問控制[24]的特點,為云端輔助的工業(yè)控制系統(tǒng)提出了安全高效的訪問控制方案,有效地控制了用戶權限,保護了數(shù)據(jù)隱私.方案能夠?qū)υ浦写鎯?shù)據(jù)進行實時動態(tài)地驗證來識別損壞數(shù)據(jù)的行為,確保數(shù)據(jù)的完整性.并且為現(xiàn)場設備與用戶建立了安全的通信連接,通過對用戶的嚴格認證,保證現(xiàn)場控制器獲得可信的數(shù)據(jù).最后,文章分析了方案的安全性與性能開銷,并給出實驗結果.
1.1.1 雙線性映射
設G1和G2是兩個p階循環(huán)群,其中p為一大素數(shù)設p為G1的生成元,定義雙線性映射e:G1×G1→G2滿足如下條件:
1)雙線性性:對任意的P,Q∈G1,a,b∈Zp,滿足e(Pa,Qb)=e(P,Q)ab.
2)非退化性:e(P,P)=1.
3)可計算性:對任意P,Q∈G1,a,b∈Zp,存在一個有效的多項式時間算法計算出e(P,Q).
1.1.2 線性秘密共享方案
一個基于成員集P的秘密共享方案Π 在Zp上是線性的需要滿足一下兩個條件:
1)每個成員所分得秘密的一部分構成一個Zp上的矩陣.
2)Π 中存在一個l×(n+1)秘密共享矩陣M.對于i=1,···,l,M的第i行表示第i個成員xi∈P.設一個列向量v=(s,r2,···,rn),其中s∈Zp是待分享的秘密,是隨機的,則M·v把秘密s根據(jù)Π分成l個部分.(M ·v)i屬于成員xi.
如圖1所示,云端輔助的工業(yè)控制系統(tǒng)一般包含四個實體:SCADA 系統(tǒng)、私有云(Private cloud,PC)、公有云(Public clouds,PubC)以及數(shù)據(jù)用戶(Data consumers,DC).
1.2.1 SCADA系統(tǒng)
SCADA系統(tǒng)作為一個可以監(jiān)控及控制所有設備的集中式系統(tǒng),一般包括以下的子系統(tǒng):人機界面系統(tǒng),遠程終端控制系統(tǒng)(Remote terminal unit,RTU),可編程邏輯控制器(Programmable logic controller,PLC),分布式控制系統(tǒng)(Distributed control system,DCS)等.對現(xiàn)場設備的控制及數(shù)據(jù)采集功能由PLC等控制系統(tǒng)進行,包括啟停電機,讀發(fā)送設備的狀態(tài)報告等.SCADA系統(tǒng)將采集到的數(shù)據(jù)發(fā)送到企業(yè)私有云平臺,并接收來自私有云的指令.

圖1 系統(tǒng)模型Fig.1 System model
1.2.2 私有云
私有云是為一個企業(yè)單獨使用而構建的,能夠提供對數(shù)據(jù)、安全性和服務質(zhì)量的最有效控制.私有云具有相對安全的優(yōu)勢,但不適合大規(guī)模存儲.企業(yè)在私有云部署授權中心(Key generation center,KGC),根據(jù)基于屬性的加密方法,生成公鑰及主密鑰,管理系統(tǒng)中的屬性,構建訪問策略并以此加密數(shù)據(jù),之后再把密文發(fā)送到公有云存儲.
此外,為防止由于軟件錯誤或配置錯誤導致的數(shù)據(jù)損壞,私有云對外包存儲的數(shù)據(jù)進行完整性檢查,以確保數(shù)據(jù)是真實的,或未被未經(jīng)授權方修改過.
1.2.3 公有云
公有云由第三方提供商為企業(yè)提供,包括位置獨立的數(shù)據(jù)存儲,無處不在的數(shù)據(jù)訪問,按需的高質(zhì)量服務,成本低廉,動態(tài)擴展性等優(yōu)勢.企業(yè)在公有云上完成資源租用、應用托管和服務外包.
在本模型中,我們假設公有云是誠實但又好奇,且易受到攻擊的.因此由私有云對數(shù)據(jù)進行加密后再發(fā)送到公有云,用戶從公有云中獲取密文.由于訪問控制策略包含在密文中,只有具備相應屬性的用戶才能獲得訪問數(shù)據(jù)的權限,因此公有云只能對密文進行存儲、轉發(fā),其自身也沒有訪問原始數(shù)據(jù)的權限.此外,公有云接受來自私有云的審核,配合私有云完成存儲數(shù)據(jù)的完整性檢查.
1.2.4 數(shù)據(jù)用戶
數(shù)據(jù)用戶一般為企業(yè)管理人員、工藝員、操作工、監(jiān)管部門等.用戶向KGC聲明其所擁有的屬性,獲得屬性私鑰.如果數(shù)據(jù)用戶的屬性滿足密文中所定義的訪問策略,則用戶可通過該私鑰獲得訪問公有云中原始數(shù)據(jù)的權限,對數(shù)據(jù)進行分析診斷,再將優(yōu)化后的參數(shù)或指令經(jīng)私有云發(fā)送到底層PLC、RTU等設備.
本文首先在文獻[25]的加密算法基礎上,提出了一種面向云端輔助工業(yè)控制系統(tǒng)的保護用戶隱私的訪問控制方案.一個支持細粒度屬性撤銷的ABAC方案由6種多項式時間算法組成:Setup,KeyGen,Encrypt,Decrypt,ReEnc,ReKeyGen.Setup(1λ)→PK,PK,MK:KGC運行初始化算法,輸入安全參數(shù)1λ,輸出公鑰PK、PK和主密鑰MK.KeyGen(MK,S)→SK:KGC運行私鑰生成算法,輸入主密鑰MK和用戶屬性集合,輸出用戶屬性私鑰SK.Encrypt(PK,K,Λ)→CT:明文數(shù)據(jù)K的擁有者執(zhí)行加密算法.算法輸入公鑰PK,明文K和訪問結構Λ,輸出密文CT.Decrypt(SK,CT)→K:數(shù)據(jù)用戶執(zhí)行解密算法.算法輸入該用戶的屬性私鑰SK和密文CT,若用戶所持有的屬性私鑰SK滿足密文CT中包含的訪問結構Λ,算法能夠正確輸出明文K.ReKeyGen(SK,x)→KGC執(zhí)行私鑰更新算法,算法輸入私鑰SK的部分組件以及待撤銷屬性x,輸出更新后的用戶屬性私鑰ReEnc(CT,x)→明文數(shù)據(jù)K的擁有者執(zhí)行重加密算法.算法輸入密文CT的部分組件以及待撤銷屬性x,輸出更新后的密文
如圖2所示,某生產(chǎn)企業(yè)配方數(shù)據(jù)的訪問策略規(guī)定只有工藝部門的技術員、主任或管理部門經(jīng)理才可以看到其中的具體內(nèi)容,其邏輯表達式為:{[(工藝部門)AND(技術員OR 主任)]OR[(管理部門)AND(經(jīng)理)]}.由于配方數(shù)據(jù)已按上述訪問策略被加密,因此其他部門人員就無法對該密文進行解密,從而實現(xiàn)了靈活、細粒度的訪問控制.

圖2 訪問策略Fig.2 Access policy
隨著時間的推移,用戶屬性會發(fā)生變化,相應的訪問策略也要有變化,此時需通過ReKeyGen算法和ReEnc算法對用戶屬性私鑰及密文進行更新,令被撤銷屬性的用戶不能再訪問密文.
算法1.系統(tǒng)初始化Setup(1λ)
設G,GT是兩個階為大素數(shù)p的乘法循環(huán)群,g是G的一個生成元,在G中隨機選取輔助變量u,定義e:G×G →GT是一個雙線性映射.KGC隨機選取α,β,a∈Zp.哈希函數(shù)H:{0,1}?→G作為散列到群G一個隨機庫.
生成系統(tǒng)公鑰為:

主密鑰為:

算法2.私鑰生成算法KeyGen(MK,S)
算法輸入主密鑰的組件α,gα和用戶屬性集S,選取隨機數(shù)t∈Zp,計算輸出用戶私鑰為:

算法3.加密算法Encrypt(PK,K,(M,ρ))
算法輸入公共密鑰PK,對稱加密算法的密鑰K,以及LSSS訪問結構(M,ρ).令M為一個l×n階的矩陣,l為用戶屬性數(shù),n為訪問策略中的屬性數(shù),函數(shù)ρ將M中的每一行映射到一個用戶屬性.在Zp上隨機選擇一個矢量vv=(s,y2,···,yn)∈用于分享加密元素s,對i=1,2,···,l,計算λi=Miv,其中Mi為M的第i行,再隨機選取r1,···,rl∈Zp,得到密文如下:

算法4.解密算法Decrypt(SK,CT)
算法以屬性私鑰以及密文為輸入,擁有的解密者試圖解密,假設用戶的屬性列表滿足訪問結構,則存在使得,其中I={i:ρ(i)∈S}解密算法首先計算:

再計算輸出明文:

算法5.私鑰更新算法ReKeyGen(SK,x)
對任意待撤銷屬性x,KGC隨機選取Vx∈Zp作為其更新值再選取私鑰SK的部件Kx按如下公式與新的屬性值Vx進行計算:

用?Kx替代原私鑰部件中相對應的Kx算法輸出重定義的用戶私鑰為:

算法6.重加密算法ReEnc(CT,x)
算法選取密文CT的部件Di,及算法5中為待撤銷的屬性x選取的值Vx按如下公式計算:

此時重加密之后的密文為

ABE算法作為一種公鑰加密算法,本身較復雜,不適合對大型文件進行加密,而對稱加密算法又必須解決安全傳遞對稱密鑰的問題,因此本文采用混合加密的方式,首先私有云從密鑰空間中隨機選取一個對稱密鑰K,利用對稱加密算法AES(K,D)對現(xiàn)場采集數(shù)據(jù)D進行加密.之后根據(jù)ABE 算法,定義該文件的訪問結構,調(diào)用加密算法3加密上述對稱密鑰K,得到密鑰密文CT,再按照圖3的存儲格式發(fā)送至公有云.

其中PC →PubC表示由私有云至公有云的數(shù)據(jù)傳輸.

圖3 數(shù)據(jù)文件的密文格式Fig.3 Format of ciphertext
用戶向KGC聲明其所擁有的屬性,根據(jù)算法2獲得屬性私鑰.之后從公有云獲取加密數(shù)據(jù),利用算法4得到會話密鑰K.最后利用會話密鑰K解密AES(K,D)得到原始數(shù)據(jù)D.
用戶可以在將數(shù)據(jù)發(fā)送到云端之前對數(shù)據(jù)進行加密來保護數(shù)據(jù),但是它不能防止由于軟件錯誤或配置錯誤導致的數(shù)據(jù)損壞或惡意用戶的篡改.這就需要對云中存儲數(shù)據(jù)進行完整性檢查,以確保租戶存儲的數(shù)據(jù)是完整可獲取的.通過密碼學的挑戰(zhàn)應答方式,企業(yè)在私有云上部署完整性檢查服務,由其對公有云發(fā)送挑戰(zhàn)信息,通過對公有云響應的嚴格認證,獲得其政策合規(guī)性的技術保證.認證過程分為2個階段:初始化階段和挑戰(zhàn)階段,以下將詳細描述2階段的過程.
2.3.1 初始化階段
步驟1.私有云根據(jù)算法1生成密鑰對{gβ,β}.
步驟2.私有云對密文F進行分塊,將其分為F={b1,b2,···,bn},隨機選擇mi∈Zp,為上述每一數(shù)據(jù)塊生成認證元數(shù)據(jù)集合Φ={σ1,σ2,···,σn},這里σi=(H(i)·umi)β,H(i)為i對應的哈希運算.
步驟3.私有云將{mi}和{σi}附在密文之后發(fā)送到公有云中存儲.
2.3.2 挑戰(zhàn)階段
步驟1.私有云作為驗證者,周期性地發(fā)起完整性驗證.從文件F分塊中隨機選取t個索引編號,并為每一個編號選取一個隨機數(shù)vi∈Zp,將二者組合形成挑戰(zhàn)請求{i,vi}i∈[1,n],并將vi發(fā)送到公有云作為挑戰(zhàn).
步驟2.公有云利用其存儲的vi做以下運算

然后將{μ,σ}發(fā)送給私有云進行驗證.
步驟3.私有云接收到{μ,σ}后,判斷如下等式是否成立

若等式成立,則認為公有云中存儲的數(shù)據(jù)是完整的.
通過公有云的分析、優(yōu)化服務,用戶可以更好地掌控生產(chǎn)全局,提供個性化產(chǎn)品的關鍵參數(shù),優(yōu)化生產(chǎn)工藝.用戶將關鍵信息提交給私有云,私有云解析產(chǎn)品數(shù)據(jù)和關鍵參數(shù),再將數(shù)據(jù)傳輸給底層的工業(yè)機器人、PLC、RTU控制器開展生產(chǎn)流程.在這一過程中,私有云需對用戶進行身份認證,防止惡意用戶的攻擊,保證系統(tǒng)的安全運行.為此本文提出一種簡單且安全的數(shù)據(jù)通信方案,為Internet上傳輸?shù)臄?shù)據(jù)提供可互操作的、基于密碼學的安全保證,保護了傳輸數(shù)據(jù)的機密性、完整性.詳細步驟如下:
步驟1.系統(tǒng)根據(jù)算法1進行初始化,用戶獲得KGC發(fā)布的屬性私鑰.
步驟2.用戶向私有云提出更新參數(shù)Para的請求.私有云從密鑰空間中隨機選取一個密鑰K1,利用算法3加密KT date=K1||datetime,并將加密后的標記發(fā)送到用戶,并保存H(KT date)運算值.

H(·)表示發(fā)送端與接收端協(xié)議預先約定的哈希函數(shù),datetime為當前時間.
步驟3.用戶得(Encrypt(KT date))|PC→DC后,通過算法4解密密文,并做哈希運算,再發(fā)回私有云,供其讀取驗證:H=H(KT date)|DC→PC.
步驟4.私有云讀取用戶返回的信息后,比較H與H是否相等.如果相等,私有云和用戶便可將標記K1作為雙方直接通信的會話密鑰進行安全的加密通信.
步驟5.用戶按如下格式將參數(shù)Para、目標控制器編號IDs、用戶編號IDc,當前時間datetime串聯(lián)并按如下格式發(fā)送到私有云.

步驟6.私有云解密消息得到新的參數(shù)Para,然后比較(H=H(IDs||IDc||Para))是否與H相等,如果相等,則證明消息的真實性、完整性.
步驟7.私有云將新的參數(shù)Para傳送到目標控制器中,執(zhí)行指令.
作為一種非對稱加密算法,ABE的加解密時間長、速度慢,計算復雜度高.因此在第2.2節(jié)用戶讀取數(shù)據(jù)一節(jié)中,采用ABE算法加密對稱密鑰,再用對稱密鑰完成對現(xiàn)場采集數(shù)據(jù)的加密.由于訪問控制策略包含在密文中,只有具備相應屬性的用戶才能得到對稱密鑰,從而獲得現(xiàn)場數(shù)據(jù).在實際使用中,為保證通信的安全,對稱密鑰在使用一段時間后就應被撤銷.私有云可定時更新對稱密鑰,用戶需重新通過KGC的身份認證后才能獲得新密鑰.在此過程中,密鑰的有效期越短,系統(tǒng)的安全性越高,但是系統(tǒng)開銷也會增大.
在第2.4節(jié)用戶與私有云的直接通信一節(jié)中,也采用了上述的混合加密方法.在用戶發(fā)往私有云的參數(shù)密文中,包含了當前的傳送時間.因此通信雙方可約定用戶指令的有效時間,當私有云接收用戶指令達到約定時間后,即可撤銷用于該直接通信的密鑰K1.
以下對算法4解密過程的正確性進行驗證:在沒有屬性撤銷情況下:

當需對某用戶的屬性x進行撤銷時,算法4求解A的過程將分為如下兩部分:
若ρ(i)=x:

若ρ(i)=x:

此時:

然后求解下式:

以下對數(shù)據(jù)完整性驗證的式(11)進行證明:

3.2.1 數(shù)據(jù)的機密性
本方案中,數(shù)據(jù)文件的機密性取決于對稱加密算法(AES),而對稱加密算法的機密性則主要取決于對稱密鑰K的安全性.密鑰K的加密采用了ABE算法,該算法已被證明是安全的,未認證用戶(如攻擊者)的屬性集不滿足訪問策略,無法在解密過程中恢復e(g,g)ast的值,從而不能訪問數(shù)據(jù)文件.同理,撤銷屬性的用戶所擁有的屬性私鑰已無法與重加密密文中的組件進行匹配運算,因此也不能成功解密.
本方案利用公有云存儲密文數(shù)據(jù),一方面它對所存文件的內(nèi)容是好奇的,另一方面它也會誠實地執(zhí)行企業(yè)私有云安排的任務.公有云除存儲密文外,僅負責接受私有云的完整性檢查挑戰(zhàn),返回相應的密文數(shù)據(jù)塊,不參與任何與加密相關的行為,也不會獲得任何有效的屬性私鑰,因此其無法解密密文.
3.2.2 抗合謀攻擊
基于屬性的加密算法最大的挑戰(zhàn)是防止合謀用戶的攻擊.在CP-ABE中,秘密共享值s嵌入在密文中.為了解開密文,用戶或者合謀攻擊者需要將e(g,g)ast恢復出來.合謀攻擊者必須利用密文中的組件Cl,Dl和其他合謀用戶的私鑰組件L,Kρ(i)做相應的雙線性配對運算.但是,每一個用戶的私鑰都通過一個隨機數(shù)t唯一生成,每個用戶的t不同,因此即使用戶合謀,e(P,P)ast的值也不會被恢復.只有當該用戶具有的屬性滿足訪問策略時e(P,P)ast值才會被恢復.
3.2.3 數(shù)據(jù)的完整性
在云存儲環(huán)境中,由于用戶失去了對外包數(shù)據(jù)的本地控制,會擔心數(shù)據(jù)是否一直正確地存儲在云中.為了檢測甚至防止這種情況發(fā)生,需要定期審核云數(shù)據(jù)的完整性.因此用戶如何驗證云數(shù)據(jù)的完整性成為了云存儲中一個關鍵問題.
該方案通過數(shù)據(jù)分塊、分別編碼及抽查文件隨機子集技術來確保云服務系統(tǒng)中數(shù)據(jù)的持有性和可恢復性,能夠進行無限多次完整性驗證,同時有效地確保了數(shù)據(jù)的內(nèi)容不被驗證者察知,用戶甚至可以將繁瑣的數(shù)據(jù)審計任務交由可信的第三方管理者來完成.
3.2.4 通信認證
大多數(shù)SCADA元件不認證發(fā)給他們的命令,無論命令是否合法,它們?nèi)詫?zhí)行發(fā)送給他們的任何命令.本方案中,當用戶發(fā)送指令到現(xiàn)場控制器時,需先通過私有云的認證,才能完成指令更新.在這一過程中,考慮到密鑰K1可能會被用戶泄露或者被攻擊者離線破解來獲得,因此隨機選取了密鑰K1并加入失效時間來保證通信安全.
在SCADA 系統(tǒng)中,拒絕服務攻擊是最常見的攻擊方式.這種攻擊一般不能對系統(tǒng)進行控制,但會降低整個系統(tǒng)的性能,甚至令其故障.攻擊者利用大量合理的服務請求來占用過多的服務資源,或頻繁發(fā)送命令來限制各種SCADA 系統(tǒng)所需的資源,從而導致系統(tǒng)無法執(zhí)行預定的任務[26].本方案不用實時在線檢測用戶身份,且采用了隨機密鑰和失效時間的設置,如果攻擊者不能在規(guī)定的時間內(nèi)提交會話密鑰,則不能訪問系統(tǒng).對于頻繁提交認證請求的攻擊者,也可撤銷其屬性,拒絕訪問請求.
3.3.1 通信消息長度
用戶訪問公有云獲取數(shù)據(jù)時,需首先利用式(9)獲取對稱加密密鑰K,根據(jù)式(4)和式(9),可以計算出密鑰密文總長度為:

在實際應用場景中,為達到足夠的訪問屬性數(shù)目與較低的計算開銷,令訪問屬性數(shù)l=10.
式(14)中的每個參數(shù)長度是可變的,本方案的評估中,雙線性映射e采用基于橢圓曲線上的Tate對,橢圓曲線定義在有限域Fp上,G和GT的階p是一個20 Byte 的素數(shù).為了達到1 024-bit RSA的安全等級,p應為一個64 Byte的素數(shù),其中GT是一個定義在有限域上的乘法群的p階子群.設定p為有限域上長度為42.5 Byte的素數(shù),以及有限域上長度為20 Byte 的素數(shù).因此,式(14)計算出的總密文長度可表示為22|p|Byte,大小范圍為440 Byte到1 408 Byte.
信道建立后,在下次會話生成之間的通信,由于用戶擁有了對稱密鑰,其通信密文長度可表示為:

其長度為16 Byte.
當用戶需與私有云進行通信時,同理根據(jù)式(3)和式(11)可計算出私有云與用戶之間通信時的密文長度如下:

按照相同的分析方法,從式(16)以計算出總密文長度為22|p|+16 Byte,大小范圍為456 Byte 到1 424 Byte.
數(shù)據(jù)用戶成功建立鏈接之后,其發(fā)送到私有云的密文長度為:

此處將IDs和IDc的長度分別設為1 Byte,這已能滿足實際使用.從以上分析可見,在用戶與公有云建立鏈接完成認證這一過程中,通信的密文長度為22|p|Byte,建立安全鏈接后,二者之間通信的密文長度為16 Byte.而在用戶與私有云建立鏈接完成認證的過程中,通信的密文長度為22|p|+16 Byte,建立安全鏈接后,二者之間通信的密文長度為34 Byte.
各通信階段的消息長度如表1所示,為了建立安全的通信連接,本方案會形成一個較大的消息密文,但當連接建立之后,用戶和云之間通信的消息密文長度會大大縮短.

表1 密文長度Table 1 Length of ciphertext
密文長度與不同安全強度的關系如圖4所示,可以看出,在建立通信鏈接進行認證時,密文長度與安全強度成線性關系,安全強度越高,密文越長當用戶完成認證進行數(shù)據(jù)傳輸時,密文長度不依賴于安全強度.

圖4 密文長度與安全強度關系圖Fig.4 Relationship between the ciphertext size and the security level
該方案的通信消耗主要集中在用戶從公有云獲取密文的通信及用戶發(fā)送指令到私有云的通信,因此密文長度直接影響了通信消耗.
表1可以看出,為了建立安全的通信連接,本方案會形成一個較大的密文長度,但當連接建立之后,用戶和公有云之間的通信密文長度會大大縮短,由于密文長度直接決定了通信能量損耗與計算開銷,因此在通信相對頻繁時,本方案較短的密文長度能夠保證更低的能量損耗與更小的計算開銷.
3.3.3 計算開銷
該節(jié)將本方案與傳統(tǒng)的基于證書的認證、基于默克爾樹的認證和基于身份的認證方法進行比較,分析計算開銷.根據(jù)文獻[27],在主頻400 MHz的32位微處理器上計算Tate對大約需要62.04 ms,校驗一次ECDSA-160簽名需要耗時18.48 ms,由于哈希算法和對稱加密算法有著極低的計算開銷,此處忽略了哈希算法和對稱加密算法的開銷.
假設每個數(shù)據(jù)用戶進行N次數(shù)據(jù)交互,在基于證書的算法中,計算開銷主要由兩次ECDSA簽名認證產(chǎn)生,總開銷為2×18.48N=36.96Nms;在基于默克爾樹的認證方法中,計算開銷主要是一次ECDSA 簽名認證,因此開銷為18.48Nms;基于身份的認證方法中,計算開銷主要為兩次Tate對計算,總計算開銷為2×62.04N=124.08Nms.本文提出的算法中,數(shù)據(jù)用戶與公有云或私有云通信進行身份認證的計算開銷主要為22次Tate對,總開銷為22×62.04N=1 364.88Nms,認證完成后,在會話密鑰更新之前,用戶無需再計算Tate對表2展示了計算開銷對比.
從表2可以得出以下結論:在數(shù)據(jù)傳輸次數(shù)較少時,本方案由于注重安全性認證,因此產(chǎn)生較大的計算開銷,在認證完成后,無需再進行重復認證,因此隨著數(shù)據(jù)傳輸次數(shù)的增加(N >11),在相同傳輸次數(shù)條件下,本文方案計算開銷低的優(yōu)勢逐步體現(xiàn).

表2 計算開銷Table 2 Computation overhead
本節(jié)通過仿真實驗驗證算法整體的計算開銷.實驗采用斯坦福大學開發(fā)的基于JAVA的雙線性對密碼庫(PBC Library),橢圓曲線采用Type A:y2=x3+x.實驗環(huán)境為Inter (R)Core(TM)i5-3230M 2.60 GHz CPU,12.00 GB內(nèi)存,Windows7 64 bit操作系統(tǒng).實驗中對稱加密采用128 bit AES加密算法,不計實際應用中的數(shù)據(jù)傳輸延時.實驗對算法最關鍵的初始化、私鑰生成、加密、解密這4個步驟進行仿真,結果如圖5~8所示.算法在屬性個數(shù)不斷增加的情況下,消耗時間也隨之增加.這是因為隨著屬性個數(shù)增多,算法需生成的屬性值、密文組件及需解密的組件均隨之增多.

圖5 系統(tǒng)初始化時間Fig.5 Setup time

圖6 私鑰生成時間Fig.6 Private key generation time

圖7 加密時間Fig.7 Encryption time
從以上仿真可見,當屬性個數(shù)達到100,系統(tǒng)仍能夠保持一個較短的運行時間,在實際應用中,數(shù)據(jù)屬主可靈活設定訪問策略,實現(xiàn)細粒度的訪問控制.

圖8 解密時間Fig.8 Decryption time
本文為面向云端輔助的工業(yè)控制系統(tǒng)的數(shù)據(jù)傳輸、存儲、訪問設計了一種安全機制,利用基于屬性的訪問控制方法,對用戶進行身份授權及認證,為其與控制系統(tǒng)之間建立安全的通信連接,并對存儲數(shù)據(jù)進行完整性檢查,解決了數(shù)據(jù)的機密性、完整性保護問題.通過性能分析并與已有方案的比較,本方案的性能隨著數(shù)據(jù)傳輸次數(shù)的增加(N >11),其優(yōu)勢逐步體現(xiàn).