楊東升,高珊珊,尹震宇,李明時(shí),柴安穎,廉夢佳
1(中國科學(xué)院大學(xué),北京 100049)
2(中國科學(xué)院 沈陽計(jì)算技術(shù)研究所,沈陽 110168)
隨著“工業(yè)4.0”及“中國制造2025”的推進(jìn),智能制造成為當(dāng)下工業(yè)的發(fā)展趨勢,而工業(yè)物聯(lián)網(wǎng)智能化生產(chǎn)線作為智能制造的重要一環(huán),更是如今的研究熱點(diǎn).5G 通訊時(shí)代的到來,為工業(yè)控制由現(xiàn)場轉(zhuǎn)為遠(yuǎn)程提供了更好的通信基礎(chǔ),平板電腦、手機(jī)等的高速發(fā)展也為工業(yè)物聯(lián)網(wǎng)的許多控制軟件在移動端的部署上奠定了基礎(chǔ).在工業(yè)物聯(lián)網(wǎng)智能生產(chǎn)線的課題研究中,為實(shí)現(xiàn)產(chǎn)線狀態(tài)的實(shí)時(shí)可視化與遠(yuǎn)程操作的便攜性,將智能產(chǎn)線的客戶端部署到移動端上.針對產(chǎn)線的數(shù)據(jù)采集以及數(shù)據(jù)集成問題,本課題采用OPC UA 架構(gòu),具體的課題環(huán)境如圖1所示.OPC UA 作為由OPC 基金會提出的最新一代數(shù)據(jù)集成標(biāo)準(zhǔn),在工業(yè)物聯(lián)網(wǎng)中發(fā)揮著越來越大的價(jià)值.在國內(nèi),近幾年隨著工業(yè)物聯(lián)網(wǎng)的不斷推進(jìn),關(guān)于OPC UA 的研究也越來越多.文獻(xiàn)[1]設(shè)計(jì)實(shí)現(xiàn)了OPC UA 客戶端的搭建,通過客戶端與OPC UA 服務(wù)器進(jìn)行通信,實(shí)現(xiàn)了OPC UA 規(guī)范中的數(shù)據(jù)讀、寫、訂閱等服務(wù).文獻(xiàn)[2]針對目前制造企業(yè)信息系統(tǒng)與物理系統(tǒng)嚴(yán)重分離所產(chǎn)生的信息孤島問題,搭建了一套基于OPC UA 的質(zhì)量數(shù)據(jù)監(jiān)測系統(tǒng),完成了OPC UA 客戶端和服務(wù)器的設(shè)計(jì)與開發(fā).而這些應(yīng)用軟件都是面向資源限制較少的PC 端進(jìn)行實(shí)現(xiàn)的[1,2].
圖1 智能產(chǎn)線系統(tǒng)架構(gòu)
OPC UA 架構(gòu)為保證會話的安全性和可靠性,定義了一個(gè)分層的安全架構(gòu).最上層是應(yīng)用層,用來以會話的方式在客戶端與服務(wù)器之間傳遞信息.會話服務(wù)中提供了用戶認(rèn)證和授權(quán),也可以用于對某個(gè)產(chǎn)品進(jìn)行認(rèn)證和授權(quán);而OPC UA 的會話機(jī)制需要運(yùn)行在安全通道上,通道的安全由通信層來保證,主要通過數(shù)字證書簽名和加密傳輸信息的方式來進(jìn)行客戶端與服務(wù)器端的雙向認(rèn)證;底層的傳輸層利用socket 來進(jìn)行大量信息傳輸[3,4].該安全架構(gòu)如圖2所示.
圖2 OPC UA 安全架構(gòu)
OPC UA 在建立安全通道時(shí),為保證通信層的安全,其安全模型是基于公鑰基礎(chǔ)設(shè)施(PKI)進(jìn)行數(shù)字證書的管理,數(shù)字證書中記錄了客戶端和服務(wù)器的公鑰信息、簽名信息等,通過權(quán)威的第三方機(jī)構(gòu),即認(rèn)證中心進(jìn)行簽發(fā)[7].而在OPC UA 中利用數(shù)字證書進(jìn)行加密通信目前普遍是利用了RSA 公鑰密碼體制,在安全通道的創(chuàng)建過程中,利用RSA 算法的公鑰和私鑰進(jìn)行加密和解密從而實(shí)現(xiàn)客戶端和服務(wù)器端的雙向身份認(rèn)證,并在身份認(rèn)證通過即安全通道建立之后派生對稱密鑰來代替更消耗CPU 非對稱密鑰,用于加密和簽名后續(xù)信息.應(yīng)用層的會話必須建立在通信層安全建立的基礎(chǔ)上,以此來保證所傳輸?shù)挠脩艨诹钚畔⒌陌踩?安全通道的創(chuàng)建如圖3所示.
圖3 OPC UA 安全通道創(chuàng)建過程
本文所提出的面向智能產(chǎn)線移動終端的R-ECC身份認(rèn)證方法,是在符合OPC UA 安全架構(gòu)的基礎(chǔ)上,基于橢圓曲線密碼體制進(jìn)行密鑰協(xié)商創(chuàng)建安全通道,并在安全通道的基礎(chǔ)上創(chuàng)建會話,實(shí)現(xiàn)一次一密,保證客戶端和服務(wù)器的安全通信.面向智能產(chǎn)線移動終端的R-ECC 身份認(rèn)證方法的邏輯圖見圖4.
智能產(chǎn)線移動終端與OPC UA 服務(wù)器建立連接過程如下:
先做出一系列假設(shè):E為系統(tǒng)選定的橢圓曲線,G為基點(diǎn),n為橢圓曲線的階;h為具有單向性和可碰撞性的哈希函數(shù),f是橢圓曲線上的點(diǎn)到定長二進(jìn)制的映射函數(shù);移動端標(biāo)識IDc,私鑰dc,公鑰Qc=dcG;OPC UA 服務(wù)器端標(biāo)識IDs,私鑰ds,公鑰Qs=dsG.移動端和服務(wù)器都擁有由認(rèn)證中心頒發(fā)的證書,但都還沒有獲得對方的證書.移動端輸入的用戶憑證設(shè)為用戶名id,密碼pwd.R-ECC 身份認(rèn)證方法的認(rèn)證過程見圖5.
圖4 面向智能產(chǎn)線移動終端的R-ECC 身份認(rèn)證方法
圖5 R-ECC 身份認(rèn)證方法的執(zhí)行過程
(1) 驗(yàn)證OPC UA 服務(wù)器應(yīng)用實(shí)例證書.移動端將其客戶端標(biāo)識IDc發(fā)送給OPC UA 服務(wù)器,獲得服務(wù)器的響應(yīng),該響應(yīng)中包含了服務(wù)器標(biāo)識IDs以及公鑰證書,移動端驗(yàn)證該證書,包括檢查證書是否在有效期、驗(yàn)證CA 簽名等.
(2) 密鑰生成.若服務(wù)器證書值得信賴,移動端使用其私鑰dc,并從服務(wù)器證書中提取服務(wù)器公鑰Qs,計(jì)算得到Q=dcQs=dcdsG,k=f(Q).移動端生成隨機(jī)數(shù)r1,并將IDs⊕r1,移動端應(yīng)用實(shí)例證書發(fā)送給服務(wù)器;服務(wù)器收到移動端的消息,首先驗(yàn)證移動端的證書,若證書可信則通過IDs⊕r1⊕IDs得到r1的值,利用服務(wù)器端私鑰ds,移動端公鑰Qc,計(jì)算Q=dsQc=dsdcG,k=f(Q) .服務(wù)器選擇隨機(jī)數(shù)r2,計(jì)算hs=h(k||r1),并且把IDc⊕r2,hs發(fā)送給移動端.
(3) 密鑰協(xié)商.移動端收到服務(wù)器的消息,計(jì)算h(k||r1)的 值,將其與hs進(jìn)行比較,若相等,則驗(yàn)證通過,反之不通過.驗(yàn)證通過后,移動端計(jì)算hc=h(k||r2),并將hc發(fā)送給服務(wù)器;服務(wù)器收到移動端的消息后,計(jì)算h(k||r2)的 值,并將其與hc比較,然后將比較的結(jié)果發(fā)回給移動端.
沒有規(guī)范化的程序就難以形成科學(xué)的社會福利政策質(zhì)量評價(jià),嚴(yán)格按法定程序辦事可以大大減少決策的隨意性和人為因素的干擾,保證政策評價(jià)的客觀、公正和科學(xué)。保證評價(jià)程序的規(guī)范化,首先,構(gòu)建程序化的評價(jià)體系。根據(jù)科學(xué)評價(jià)的要求嚴(yán)格規(guī)范政策評價(jià)過程,構(gòu)建從預(yù)測評價(jià)、執(zhí)行評價(jià)到結(jié)果評價(jià)的完整社會福利政策的評價(jià)體系;其次,實(shí)現(xiàn)政策質(zhì)量評價(jià)的程序化。既要對整個(gè)過程的步驟和環(huán)節(jié)做出相互銜接的制度性規(guī)定,同時(shí),也要對每個(gè)基本的環(huán)節(jié)在經(jīng)驗(yàn)積累的基礎(chǔ)上做出具體的操作性規(guī)定,特別是對于那些復(fù)雜的、涉及全局的政策質(zhì)量評價(jià),更要每個(gè)環(huán)節(jié)做到細(xì)致入微⑤。
(4) 生成會話密鑰.若(3)中的比較結(jié)果相同,則移動端和服務(wù)器均計(jì)算K=h(k||r1||r2),作為其以后傳輸大量信息所使用的的會話密鑰.
(5) 加密口令.用戶與移動端進(jìn)行交互,從登陸頁面輸入用戶名和密碼,移動端將輸入的信息以EK(id,pwd)(EK表示通過會話密鑰K進(jìn)行加密),id⊕h(pwd)的形式發(fā)送給服務(wù)器.
(6) 驗(yàn)證口令.服務(wù)器收到消息后,首先利用會話密鑰K對消息進(jìn)行解密,得到id,pwd的值,查看數(shù)據(jù)庫表中是否有該id,若存在,則利用哈希函數(shù)計(jì)算h(pwd)的 值,再通過id⊕h(pwd)⊕id計(jì)算得到h(pwd),最后再從數(shù)據(jù)庫中取出相應(yīng)id對應(yīng)存儲的h(pwd)的值,三者進(jìn)行對比.
(7) 若(6)中三者對比的結(jié)果是相同的,則表示驗(yàn)證成功,移動端和服務(wù)器建立連接,服務(wù)器中的過程信息就可以被移動端成功訪問到.
上述認(rèn)證過程在利用橢圓曲線進(jìn)行密鑰生成時(shí),其理論基礎(chǔ)就是橢圓曲線上的點(diǎn)乘運(yùn)算.而點(diǎn)乘運(yùn)算在橢圓曲線上面定義為重復(fù)相加,即mP=P+P+···+P(m個(gè)P),遵循橢圓曲線的加法法則,故點(diǎn)乘運(yùn)算的結(jié)果依然是橢圓曲線上的點(diǎn)[8].如果設(shè)G是橢圓曲線上的一個(gè)點(diǎn),則選擇一個(gè)正整數(shù)n與其相乘,則T=nG仍在橢圓曲線上.在已知T和G的情況下,是很難算出正整數(shù)n的值的.這就是著名的橢圓曲線離散對數(shù)問題.該問題在多項(xiàng)式時(shí)間內(nèi)無法被破解,也就是說即使公鑰在消息傳遞過程中被截獲,其計(jì)算私鑰的時(shí)間復(fù)雜度也是指數(shù)級別的,就算是借助超算資源,也無法在短時(shí)間內(nèi)完成密鑰破解.
對應(yīng)于上述認(rèn)證過程,此處n就相當(dāng)于私鑰dc或ds,T就相當(dāng)于公鑰Qc或Qs,在圖5中智能產(chǎn)線移動端與服務(wù)器通信過程中,箭頭上的信息即在通信過程中暴露在網(wǎng)絡(luò)中的信息.可見,在消息傳遞的過程中,即便公鑰被截獲,也很難算出私鑰的值,再加上異或運(yùn)算以及哈希函數(shù)的驗(yàn)證,這就保證了密鑰協(xié)商過程中消息傳遞的安全性.另一方面,在上述認(rèn)證過程中,由于隨機(jī)數(shù)的加入,使得每次密鑰協(xié)商得出的會話密鑰均不相同,保證用戶口令在傳輸過程中的安全性,且用戶口令在存儲過程中使用哈希函數(shù)進(jìn)行加密,保證了其存儲的安全性.
在Android 系統(tǒng)上進(jìn)行所提出的身份認(rèn)證機(jī)制的可行性驗(yàn)證.使用開發(fā)工具是Android Studio3.0.1,模擬器版本為Nexus 5X API 27 (Android 8.1.0).所用橢圓曲線為elliptic curve 25519,使用SecureRabdom 來獲取隨機(jī)數(shù).通過密鑰協(xié)商獲取到會話密鑰以后,使用AES CBC 256 位元加密/解密,使用PKCS5 填充方式,哈希函數(shù)h舍棄常用的MD5 而選用SHA-256,因?yàn)閷τ贛D5 算法,網(wǎng)上已經(jīng)有很多可以查詢的字典庫,安全性不高.如圖6給出基于R-ECC 的智能產(chǎn)線移動終端身份認(rèn)證方法在Android 客戶端上的實(shí)驗(yàn)結(jié)果.
實(shí)驗(yàn)結(jié)果表明,本文所提出的面向智能產(chǎn)線移動終端的R-ECC 身份認(rèn)證方法可以Android 上應(yīng)用,實(shí)現(xiàn)智能產(chǎn)線Android 客戶端與服務(wù)器的安全通信.
3.2.1 安全性分析
(1) 實(shí)現(xiàn)雙向認(rèn)證.實(shí)驗(yàn)利用所提出的R-ECC 身份認(rèn)證方法,實(shí)現(xiàn)了智能產(chǎn)線移動端和服務(wù)器的雙向認(rèn)證,并且通過密鑰協(xié)商,計(jì)算出共享密鑰作為OPC UA 會話創(chuàng)建過程中的會話密鑰.
(2) 抵抗中間人攻擊.本文所提出的R-ECC 身份認(rèn)證方法是基于ECC 算法,相比于RSA 算法,它的破譯難度非常高[9],抗攻擊性更強(qiáng),只截取到中間傳輸?shù)男畔?幾乎不可能算出私鑰或共享密鑰,安全性更高.
(3) 抵抗重放攻擊.在密鑰協(xié)商以及用戶認(rèn)證的過程中,都加入了隨機(jī)數(shù),使得即使知道了以前的密鑰也無法重新使用,有效防止了重放攻擊.
(4) 密鑰前向安全.由于隨機(jī)數(shù)的加入,使得每一次會話密鑰均不相同,如果移動端或者服務(wù)器的私鑰甚至某次會話密鑰被竊取,也無法推斷出之前會話的密鑰,所以密鑰具有前向安全性.
(5) 安全的數(shù)據(jù)庫存儲.在用戶口令的傳輸過程中,對用戶密碼直接進(jìn)行了加密,并且在數(shù)據(jù)庫中存儲的也是用戶密碼經(jīng)過哈希運(yùn)算的值,保證了用戶口令的安全性.
圖6 可行性實(shí)驗(yàn)測試結(jié)果
3.2.2 效率分析
(1)移動設(shè)備的加解密計(jì)算能力有限,內(nèi)存和聯(lián)網(wǎng)帶寬都受到一定限制,故所提出的面向智能產(chǎn)線移動終端的R-ECC 身份認(rèn)證方法不再采用OPC UA SDK包中普遍采用的RSA 公鑰體制,而是采用基于橢圓曲線的R-ECC 密碼體制,不僅提高了系統(tǒng)的安全性,并且在同等安全強(qiáng)度下,其密鑰長度要更短,對存儲空間的要求更低[10].具體數(shù)據(jù)見表1.
表1 ECC 和RSA 安全模長(公鑰長度)的比較(Bit)
利用Android Studio3.0.1 自帶的Android Profiler工具分別對在OPC UA 架構(gòu)中,基于R-ECC 進(jìn)行智能產(chǎn)線身份認(rèn)證以及基于RSA 進(jìn)行智能產(chǎn)線身份認(rèn)證兩種方案的認(rèn)證過程中硬件資源消耗做對比.對比方法是兩種方案分別進(jìn)行3 次身份認(rèn)證連接,記錄認(rèn)證過程中每種資源消耗的增長量,并對每種資源3 次消耗量做均值計(jì)算.對比結(jié)果表明,基于R-ECC 的智能產(chǎn)線身份認(rèn)證方法在CPU 資源、內(nèi)存資源以及網(wǎng)絡(luò)資源的消耗上都具有一定的優(yōu)越性.對比結(jié)果見表2.
表2 R-ECC 和RSA 兩種方案資源消耗對比
(2)在Android Studio3.0.1 中,基于同一安全級別128,同一用戶,對所提出基于R-ECC 的智能產(chǎn)線移動終端身份認(rèn)證方法和OPC UA SDK 包中所采用的基于RSA 的身份認(rèn)證方法的認(rèn)證成功時(shí)間作對比.通過系統(tǒng)運(yùn)行日志獲取用戶認(rèn)證開始和結(jié)束時(shí)間,反復(fù)進(jìn)行3 次實(shí)驗(yàn),計(jì)算得出認(rèn)證所需時(shí)間,具體數(shù)據(jù)見表3.
表3 用戶認(rèn)證成功時(shí)間測試(ms)
實(shí)驗(yàn)結(jié)果表明,所提出的基于R-ECC 的智能產(chǎn)線身份認(rèn)證方法在智能產(chǎn)線Android 客戶端中的認(rèn)證效率較快,適用于移動端.從理論上分析,一方面,ECC 在解密、簽名、私鑰的處理以及密鑰生成速度上,都比RSA 快得多;另一方面,在認(rèn)證過程中,基于R-ECC的OPC UA 身份認(rèn)證方法在用戶認(rèn)證過程中除了證書驗(yàn)證,只涉及到兩次橢圓曲線上的點(diǎn)乘運(yùn)算,其他運(yùn)算都是運(yùn)算量較小的哈希函數(shù)、隨機(jī)數(shù)生成和異或運(yùn)算,所以基于R-ECC 的面向智能產(chǎn)線移動終端的OPC UA 身份認(rèn)證方法在移動端上的認(rèn)證效率是很高的.
本文在智能產(chǎn)線移動終端的設(shè)計(jì)與實(shí)現(xiàn)中,應(yīng)用OPC UA 架構(gòu),研究實(shí)現(xiàn)了一種面向智能產(chǎn)線移動終端的R-ECC 身份認(rèn)證方法.該方案在身份認(rèn)證過程中運(yùn)用橢圓曲線密碼學(xué),并在密鑰協(xié)商在過程中引入隨機(jī)數(shù)、哈希函數(shù)等,不僅降低了OPC UA 架構(gòu)應(yīng)用于智能產(chǎn)線時(shí)在無線通信中的資源損耗,而且提高了認(rèn)證的安全性和認(rèn)證速度.通過實(shí)驗(yàn)驗(yàn)證表明,所提出方案在工業(yè)物聯(lián)網(wǎng)智能產(chǎn)線移動終端的課題研究中,適用于Android 客戶端與智能產(chǎn)線OPC UA 服務(wù)器通信過程的身份認(rèn)證,實(shí)現(xiàn)了移動端與服務(wù)器之間的雙向認(rèn)證,安全的消息交換,安全的本地存儲,滿足移動端輕量級、低功耗以及安全性要求高的特點(diǎn).本文所提出的R-ECC 身份認(rèn)證方法也為OPC UA 安全通信的改進(jìn)提供了新的思路.