楊東升,高珊珊,尹震宇,李明時,柴安穎,廉夢佳
1(中國科學院大學,北京 100049)
2(中國科學院 沈陽計算技術研究所,沈陽 110168)
隨著“工業4.0”及“中國制造2025”的推進,智能制造成為當下工業的發展趨勢,而工業物聯網智能化生產線作為智能制造的重要一環,更是如今的研究熱點.5G 通訊時代的到來,為工業控制由現場轉為遠程提供了更好的通信基礎,平板電腦、手機等的高速發展也為工業物聯網的許多控制軟件在移動端的部署上奠定了基礎.在工業物聯網智能生產線的課題研究中,為實現產線狀態的實時可視化與遠程操作的便攜性,將智能產線的客戶端部署到移動端上.針對產線的數據采集以及數據集成問題,本課題采用OPC UA 架構,具體的課題環境如圖1所示.OPC UA 作為由OPC 基金會提出的最新一代數據集成標準,在工業物聯網中發揮著越來越大的價值.在國內,近幾年隨著工業物聯網的不斷推進,關于OPC UA 的研究也越來越多.文獻[1]設計實現了OPC UA 客戶端的搭建,通過客戶端與OPC UA 服務器進行通信,實現了OPC UA 規范中的數據讀、寫、訂閱等服務.文獻[2]針對目前制造企業信息系統與物理系統嚴重分離所產生的信息孤島問題,搭建了一套基于OPC UA 的質量數據監測系統,完成了OPC UA 客戶端和服務器的設計與開發.而這些應用軟件都是面向資源限制較少的PC 端進行實現的[1,2].

圖1 智能產線系統架構
OPC UA 架構為保證會話的安全性和可靠性,定義了一個分層的安全架構.最上層是應用層,用來以會話的方式在客戶端與服務器之間傳遞信息.會話服務中提供了用戶認證和授權,也可以用于對某個產品進行認證和授權;而OPC UA 的會話機制需要運行在安全通道上,通道的安全由通信層來保證,主要通過數字證書簽名和加密傳輸信息的方式來進行客戶端與服務器端的雙向認證;底層的傳輸層利用socket 來進行大量信息傳輸[3,4].該安全架構如圖2所示.

圖2 OPC UA 安全架構
OPC UA 在建立安全通道時,為保證通信層的安全,其安全模型是基于公鑰基礎設施(PKI)進行數字證書的管理,數字證書中記錄了客戶端和服務器的公鑰信息、簽名信息等,通過權威的第三方機構,即認證中心進行簽發[7].而在OPC UA 中利用數字證書進行加密通信目前普遍是利用了RSA 公鑰密碼體制,在安全通道的創建過程中,利用RSA 算法的公鑰和私鑰進行加密和解密從而實現客戶端和服務器端的雙向身份認證,并在身份認證通過即安全通道建立之后派生對稱密鑰來代替更消耗CPU 非對稱密鑰,用于加密和簽名后續信息.應用層的會話必須建立在通信層安全建立的基礎上,以此來保證所傳輸的用戶口令信息的安全性.安全通道的創建如圖3所示.

圖3 OPC UA 安全通道創建過程
本文所提出的面向智能產線移動終端的R-ECC身份認證方法,是在符合OPC UA 安全架構的基礎上,基于橢圓曲線密碼體制進行密鑰協商創建安全通道,并在安全通道的基礎上創建會話,實現一次一密,保證客戶端和服務器的安全通信.面向智能產線移動終端的R-ECC 身份認證方法的邏輯圖見圖4.
智能產線移動終端與OPC UA 服務器建立連接過程如下:
先做出一系列假設:E為系統選定的橢圓曲線,G為基點,n為橢圓曲線的階;h為具有單向性和可碰撞性的哈希函數,f是橢圓曲線上的點到定長二進制的映射函數;移動端標識IDc,私鑰dc,公鑰Qc=dcG;OPC UA 服務器端標識IDs,私鑰ds,公鑰Qs=dsG.移動端和服務器都擁有由認證中心頒發的證書,但都還沒有獲得對方的證書.移動端輸入的用戶憑證設為用戶名id,密碼pwd.R-ECC 身份認證方法的認證過程見圖5.

圖4 面向智能產線移動終端的R-ECC 身份認證方法

圖5 R-ECC 身份認證方法的執行過程
(1) 驗證OPC UA 服務器應用實例證書.移動端將其客戶端標識IDc發送給OPC UA 服務器,獲得服務器的響應,該響應中包含了服務器標識IDs以及公鑰證書,移動端驗證該證書,包括檢查證書是否在有效期、驗證CA 簽名等.
(2) 密鑰生成.若服務器證書值得信賴,移動端使用其私鑰dc,并從服務器證書中提取服務器公鑰Qs,計算得到Q=dcQs=dcdsG,k=f(Q).移動端生成隨機數r1,并將IDs⊕r1,移動端應用實例證書發送給服務器;服務器收到移動端的消息,首先驗證移動端的證書,若證書可信則通過IDs⊕r1⊕IDs得到r1的值,利用服務器端私鑰ds,移動端公鑰Qc,計算Q=dsQc=dsdcG,k=f(Q) .服務器選擇隨機數r2,計算hs=h(k||r1),并且把IDc⊕r2,hs發送給移動端.
(3) 密鑰協商.移動端收到服務器的消息,計算h(k||r1)的 值,將其與hs進行比較,若相等,則驗證通過,反之不通過.驗證通過后,移動端計算hc=h(k||r2),并將hc發送給服務器;服務器收到移動端的消息后,計算h(k||r2)的 值,并將其與hc比較,然后將比較的結果發回給移動端.
沒有規范化的程序就難以形成科學的社會福利政策質量評價,嚴格按法定程序辦事可以大大減少決策的隨意性和人為因素的干擾,保證政策評價的客觀、公正和科學。保證評價程序的規范化,首先,構建程序化的評價體系。根據科學評價的要求嚴格規范政策評價過程,構建從預測評價、執行評價到結果評價的完整社會福利政策的評價體系;其次,實現政策質量評價的程序化。既要對整個過程的步驟和環節做出相互銜接的制度性規定,同時,也要對每個基本的環節在經驗積累的基礎上做出具體的操作性規定,特別是對于那些復雜的、涉及全局的政策質量評價,更要每個環節做到細致入微⑤。
(4) 生成會話密鑰.若(3)中的比較結果相同,則移動端和服務器均計算K=h(k||r1||r2),作為其以后傳輸大量信息所使用的的會話密鑰.
(5) 加密口令.用戶與移動端進行交互,從登陸頁面輸入用戶名和密碼,移動端將輸入的信息以EK(id,pwd)(EK表示通過會話密鑰K進行加密),id⊕h(pwd)的形式發送給服務器.
(6) 驗證口令.服務器收到消息后,首先利用會話密鑰K對消息進行解密,得到id,pwd的值,查看數據庫表中是否有該id,若存在,則利用哈希函數計算h(pwd)的 值,再通過id⊕h(pwd)⊕id計算得到h(pwd),最后再從數據庫中取出相應id對應存儲的h(pwd)的值,三者進行對比.
(7) 若(6)中三者對比的結果是相同的,則表示驗證成功,移動端和服務器建立連接,服務器中的過程信息就可以被移動端成功訪問到.
上述認證過程在利用橢圓曲線進行密鑰生成時,其理論基礎就是橢圓曲線上的點乘運算.而點乘運算在橢圓曲線上面定義為重復相加,即mP=P+P+···+P(m個P),遵循橢圓曲線的加法法則,故點乘運算的結果依然是橢圓曲線上的點[8].如果設G是橢圓曲線上的一個點,則選擇一個正整數n與其相乘,則T=nG仍在橢圓曲線上.在已知T和G的情況下,是很難算出正整數n的值的.這就是著名的橢圓曲線離散對數問題.該問題在多項式時間內無法被破解,也就是說即使公鑰在消息傳遞過程中被截獲,其計算私鑰的時間復雜度也是指數級別的,就算是借助超算資源,也無法在短時間內完成密鑰破解.
對應于上述認證過程,此處n就相當于私鑰dc或ds,T就相當于公鑰Qc或Qs,在圖5中智能產線移動端與服務器通信過程中,箭頭上的信息即在通信過程中暴露在網絡中的信息.可見,在消息傳遞的過程中,即便公鑰被截獲,也很難算出私鑰的值,再加上異或運算以及哈希函數的驗證,這就保證了密鑰協商過程中消息傳遞的安全性.另一方面,在上述認證過程中,由于隨機數的加入,使得每次密鑰協商得出的會話密鑰均不相同,保證用戶口令在傳輸過程中的安全性,且用戶口令在存儲過程中使用哈希函數進行加密,保證了其存儲的安全性.
在Android 系統上進行所提出的身份認證機制的可行性驗證.使用開發工具是Android Studio3.0.1,模擬器版本為Nexus 5X API 27 (Android 8.1.0).所用橢圓曲線為elliptic curve 25519,使用SecureRabdom 來獲取隨機數.通過密鑰協商獲取到會話密鑰以后,使用AES CBC 256 位元加密/解密,使用PKCS5 填充方式,哈希函數h舍棄常用的MD5 而選用SHA-256,因為對于MD5 算法,網上已經有很多可以查詢的字典庫,安全性不高.如圖6給出基于R-ECC 的智能產線移動終端身份認證方法在Android 客戶端上的實驗結果.
實驗結果表明,本文所提出的面向智能產線移動終端的R-ECC 身份認證方法可以Android 上應用,實現智能產線Android 客戶端與服務器的安全通信.
3.2.1 安全性分析
(1) 實現雙向認證.實驗利用所提出的R-ECC 身份認證方法,實現了智能產線移動端和服務器的雙向認證,并且通過密鑰協商,計算出共享密鑰作為OPC UA 會話創建過程中的會話密鑰.
(2) 抵抗中間人攻擊.本文所提出的R-ECC 身份認證方法是基于ECC 算法,相比于RSA 算法,它的破譯難度非常高[9],抗攻擊性更強,只截取到中間傳輸的信息,幾乎不可能算出私鑰或共享密鑰,安全性更高.
(3) 抵抗重放攻擊.在密鑰協商以及用戶認證的過程中,都加入了隨機數,使得即使知道了以前的密鑰也無法重新使用,有效防止了重放攻擊.
(4) 密鑰前向安全.由于隨機數的加入,使得每一次會話密鑰均不相同,如果移動端或者服務器的私鑰甚至某次會話密鑰被竊取,也無法推斷出之前會話的密鑰,所以密鑰具有前向安全性.
(5) 安全的數據庫存儲.在用戶口令的傳輸過程中,對用戶密碼直接進行了加密,并且在數據庫中存儲的也是用戶密碼經過哈希運算的值,保證了用戶口令的安全性.

圖6 可行性實驗測試結果
3.2.2 效率分析
(1)移動設備的加解密計算能力有限,內存和聯網帶寬都受到一定限制,故所提出的面向智能產線移動終端的R-ECC 身份認證方法不再采用OPC UA SDK包中普遍采用的RSA 公鑰體制,而是采用基于橢圓曲線的R-ECC 密碼體制,不僅提高了系統的安全性,并且在同等安全強度下,其密鑰長度要更短,對存儲空間的要求更低[10].具體數據見表1.

表1 ECC 和RSA 安全模長(公鑰長度)的比較(Bit)
利用Android Studio3.0.1 自帶的Android Profiler工具分別對在OPC UA 架構中,基于R-ECC 進行智能產線身份認證以及基于RSA 進行智能產線身份認證兩種方案的認證過程中硬件資源消耗做對比.對比方法是兩種方案分別進行3 次身份認證連接,記錄認證過程中每種資源消耗的增長量,并對每種資源3 次消耗量做均值計算.對比結果表明,基于R-ECC 的智能產線身份認證方法在CPU 資源、內存資源以及網絡資源的消耗上都具有一定的優越性.對比結果見表2.

表2 R-ECC 和RSA 兩種方案資源消耗對比
(2)在Android Studio3.0.1 中,基于同一安全級別128,同一用戶,對所提出基于R-ECC 的智能產線移動終端身份認證方法和OPC UA SDK 包中所采用的基于RSA 的身份認證方法的認證成功時間作對比.通過系統運行日志獲取用戶認證開始和結束時間,反復進行3 次實驗,計算得出認證所需時間,具體數據見表3.

表3 用戶認證成功時間測試(ms)
實驗結果表明,所提出的基于R-ECC 的智能產線身份認證方法在智能產線Android 客戶端中的認證效率較快,適用于移動端.從理論上分析,一方面,ECC 在解密、簽名、私鑰的處理以及密鑰生成速度上,都比RSA 快得多;另一方面,在認證過程中,基于R-ECC的OPC UA 身份認證方法在用戶認證過程中除了證書驗證,只涉及到兩次橢圓曲線上的點乘運算,其他運算都是運算量較小的哈希函數、隨機數生成和異或運算,所以基于R-ECC 的面向智能產線移動終端的OPC UA 身份認證方法在移動端上的認證效率是很高的.
本文在智能產線移動終端的設計與實現中,應用OPC UA 架構,研究實現了一種面向智能產線移動終端的R-ECC 身份認證方法.該方案在身份認證過程中運用橢圓曲線密碼學,并在密鑰協商在過程中引入隨機數、哈希函數等,不僅降低了OPC UA 架構應用于智能產線時在無線通信中的資源損耗,而且提高了認證的安全性和認證速度.通過實驗驗證表明,所提出方案在工業物聯網智能產線移動終端的課題研究中,適用于Android 客戶端與智能產線OPC UA 服務器通信過程的身份認證,實現了移動端與服務器之間的雙向認證,安全的消息交換,安全的本地存儲,滿足移動端輕量級、低功耗以及安全性要求高的特點.本文所提出的R-ECC 身份認證方法也為OPC UA 安全通信的改進提供了新的思路.