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