工業(yè)是一個國家的根本的經濟命脈,工業(yè)控制系統(tǒng)(Industrial Control Systems,,ICS)是工業(yè)自動化體系結構的重要組成部分。隨著工業(yè)4.0時代的到來,,工業(yè)網絡的安全性日益重要,。工業(yè)以太網EtherNet/IP協(xié)議使用原有的基于標準的以太網技術,,已經被大量使用在工業(yè)網絡控制系統(tǒng)中,其安全性一直備受關注,,國內對工業(yè)網絡協(xié)議安全性的研究很少。使用形式化分析工具Scyther在Delov-Yao模型和強安全模型下對EtherNet/IP協(xié)議核心成員通用工業(yè)協(xié)議(Control and Information Protocol,,CIP)所采用的加密認證TLS協(xié)議進行形式化分析,。對下一代CIP協(xié)議嵌入TLS1.3具有實踐價值,該方法對其他工業(yè)網絡協(xié)議進行有效的安全分析有理論指導意義,。
EtherNet/IP協(xié)議簡介和CIP介紹
EtherNet/IP協(xié)議結構和性能
EtherNet/IP(EtherNet/IP Industry Protocol)是由兩大組織ODVA(Open DeviceNet Vendors Association)和ControlNet International于2001年正式推出的新的協(xié)議成員,。使用通用工業(yè)協(xié)議(CIP)作為上層協(xié)議,結合傳統(tǒng)的以太網協(xié)議技術和標準的TCP/IP(Transmission Control Protocol/Internet Protocol)協(xié)議共同構成EtherNet/IP協(xié)議的體系結構,,該協(xié)議是基于CIP協(xié)議的工業(yè)網絡協(xié)議,。EtherNet/IP協(xié)議有較好的互操作性能,而且數據傳輸距離長,,傳輸速率高,。CIP協(xié)議獨立于物理層和數據鏈路層之上,與設備介質無關,,可以將其移植到高性能的網絡設施上,。CIP封裝協(xié)議的主要任務是定義和規(guī)范了如何封裝和傳輸上層協(xié)議的報文,以及如何管理和利用下層TCP/IP鏈接,,起到承上啟下的作用,。EtherNet/IP協(xié)議網絡遵循開放的OSI模型。圖1是EtherNet/IP協(xié)議結構圖,。
由于以太網數據傳輸速度的大幅度提升和工業(yè)網絡交換機技術的快速發(fā)展,,在網絡高負載通信時EtherNet/IP協(xié)議也能夠滿足工業(yè)網絡對實時性和確定性的要求。EtherNet/IP協(xié)議使用高效的數據傳輸模式——生產者/消費者模式(Producer/Consummer),。端點之間的聯(lián)系不是通過具體的源和目的地址關聯(lián)起來,,而是一個生產者可以對應多個消費者,使數據的傳輸達到了最優(yōu)化,。網絡源節(jié)點按照內容將數據進行標識,,采用組播的方式同時發(fā)送到多個節(jié)點,網絡上其他節(jié)點按照自己的需要通過標識符來確定要接收的數據,。避免了帶寬浪費,,節(jié)省了網絡資源,同時提高了系統(tǒng)的通信效率,。能夠很好地支持系統(tǒng)的控制,、組態(tài)和數據采集,,并且非實時性通信和實時性通信可以在同一子網中實現。但工業(yè)控制系統(tǒng)遭受越來越多的威脅,,主要是網絡協(xié)議自身的缺陷引起的,,EtherNet/IP協(xié)議也存在安全問題,需要進一步提高安全防護能力,。
CIP報文傳輸方式
CIP協(xié)議報文傳輸方式有顯式報文和隱式報文傳輸兩種方式,。當CIP協(xié)議嵌入UDP協(xié)議用于發(fā)送隱式報文(Implicit(I/O)Message)。而CIP協(xié)議嵌入TCP協(xié)議用于發(fā)送顯式報文(Explicit Message),。兩種報文使用的封裝協(xié)議不同,,傳輸的消息類型也不同。CIP將應用對象之間的通信關系抽象為連接,,并與之相應制定了對象邏輯規(guī)范,,使CIP協(xié)議可以不依賴于某一具體的網路硬件技術,用邏輯來定義連接的關系,,在通信之前先建立連接獲取唯一的標識符(Connection ID,,CID),如果連接涉及雙向的數據傳輸,,就要分配兩個CID,。
顯式報文針對組態(tài)信息、設備配置,、故障診斷等非實時性信息,,其優(yōu)先級較低(包含解讀該報文所需要的信息),通過點對點的報文在兩個對象之間以交互的方式進行傳輸,。報文本身攜帶有關地址,、數據類型和功能描述等相關內容,接收設備根據內容做出相應的處理,,采用源/目的地址傳送方式,。在通信之前通過TCP協(xié)議獲得標識符CID,之后進行數據報文傳輸,。使用通信端口0XAF12f,。圖2是CIP顯示報文連接。
隱式報文用于節(jié)點之間傳輸實時I/O數據,、實時互鎖,,優(yōu)先級較高(隱式報文中不包含傳送地址、數據類型標識和功能描述內容),,全部作為有效數據,,傳輸效率高,在報文頭部有數據標識符,,消費者根據標識符選擇自己需要的內容,,通過UDP協(xié)議將實時I/O消息傳送到總線上,。圖3是CIP隱式報文連接。
CIP通信安全
目前CIP協(xié)議仍然使用IETF標準TLS1.2(Transport Layer Security:RFC 5246)和DTLS1.2(Datagram Transport Layer Security:RFC 6347)協(xié)議版本保證顯示報文和隱式報文數據傳輸的安全性,。TLS協(xié)議安承擔著Internet上通信的安全,,造成越來越多的威脅,目前TLS1.2存在很多已被證明的安全隱患,,TLS1.3(Transport Layer Security:RFC:8846)協(xié)議是2018年3月更新的最新版本,,較之前的TLS1.2版本有較大的改變,修改了部分內容,,其安全性更高,,這為EtherNet/IP協(xié)議的安全帶來新的挑戰(zhàn)和利益,因為其應用層CIP協(xié)議的安全性取決于TLS和DTLS協(xié)議安全保障能力,。為了最大程度提高EtherNet/IP協(xié)議的安全性能,必須保證其應用層協(xié)議CIP的安全性,,所以最終在CIP協(xié)議中必須支持TLS1.3版本,。TLS1.3在CIP協(xié)議中的支持預計要3~6年才能實現,TLS協(xié)議在握手期間實現秘鑰建立和認證,,身份驗證和秘鑰的建立很大程度上來說對CIP層和EtherNet/IP是透明的,。TLS協(xié)議保證在不安全的傳輸通道上使用加密確保數據的安全傳輸。而DTLS協(xié)議是TLS轉換而來的,,采用同TLS相同的設計方法,,所以本文只對TLS協(xié)議進行形式化分析。
TLS協(xié)議保障在TCP傳輸安全性,,客戶端和服務端建立TCP連接之后,,建立TLS會話,實現TLS握手和TLS記錄協(xié)議,。TLS協(xié)議由很多子協(xié)議組成,,其中核心協(xié)議是記錄協(xié)議和握手協(xié)議,TLS握手協(xié)議負責身份驗證和秘鑰建立(包括TLS版本確定和秘鑰交換以及后續(xù)使用的秘鑰算法),,記錄協(xié)議通過使用客戶端和服務器協(xié)商后的秘鑰進行數據加密,,TLS記錄協(xié)議主要用來識別TLS中的消息類型(通過“Content Type”字段的數據來識別握手、警告或數據),,以及每個消息的完整性保護和驗證,。圖4是TLS協(xié)議實現客戶端和服務端建立會話的初始配置過程。
CIP報文傳輸分為隱式報文傳輸和顯式報文傳輸,,顯式報文使用TCP傳輸,,在TCP之上的應用可以使用TLS來保證傳輸信息的安全性。但是TLS并不能保證UDP的傳輸安全,,DTLS是在TLS協(xié)議框架上擴展出來的,。其協(xié)議結構基本上同TLS相同,,在隱式報文傳輸中使用UDP協(xié)議,對使用UDP協(xié)議通信的傳輸使用DTLS協(xié)議進行加密處理,。TLS和DTLS層次結構如圖5所示,。
TLS協(xié)議形式化分析及實驗結果
Scyther性能簡介
Scyther軟件是由牛津大學教授CAS CREMERS使用Python語言開發(fā)的一款功能很強的用于驗證和表征安全協(xié)議的自動化協(xié)議形式化分析工具,由于Python語言可以快速生成用戶界面,,使用Python語言開發(fā)的軟件具有良好的人機交互界面,,因此Scyther軟件具有可以對協(xié)議分析攻擊軌跡的輸出功能,便于理解協(xié)議存在的漏洞,。Scyther軟件的協(xié)議分析采用Athena算法,,使用該算法使得Scyther軟件可以支持多協(xié)議并行分析,該工具是安全協(xié)議形式化分析的最新技術,,支持分析與時序相關的協(xié)議,,同時可以尋找協(xié)議的多種攻擊,輸出協(xié)議角色執(zhí)行軌跡和攻擊圖,。除此之外,,Scyther軟件對無限會話和無限狀態(tài)集合的協(xié)議給出明確的終止,其中實現多協(xié)議的并行分析解決了傳統(tǒng)分析工具的狀態(tài)空間爆炸問題,,Scyther形式化分析工具內置了Delov-Yao模型和強安全模型,,所以敵手的攻擊模式設置簡單。并且在攻擊漏洞和攻擊誤報等性能方面也表現較好,。
Scyther敵手模型和語義操作
強安全模型是通過敵手定義更強的攻擊能力,,決定了敵手能力在完全掌握了通信網絡的基礎上,具備腐蝕化長期私鑰和臨時秘鑰等能力,,Scythe可以通過敵手詢問組合的方式選擇安全模型,,設置方便,并且有明確的終止,。在強安全模型下可以同時添加會話秘鑰泄露,、隨機數泄露、狀態(tài)泄露等,。圖6是Scyther軟件敵手模型設置界面,。
Scyther定義安全協(xié)議結構模型如圖7所示。
Scyther使用SPDL語言規(guī)定了一系列的操作語義和操作原語,,基本的操作語義如表1所示,。
對TLS協(xié)議形式化安全分析
對TLS1.2協(xié)議進行形式化分析,本文采用Scyther- Compromise-0.9.2版本,,運行在Intel(R) Core(TM) i5-7400 CPU@ 3.00 GHz,、操作系統(tǒng)是Linux kali 4.19.0-kali3-amd64、8 GB RAM的電腦上(賦予至少4 GB以上的內存),具體的使用軟件及工具參見表2,。
TLS協(xié)議會話形式化分析過程
首先使用Scyther工具的SPDL語言對TLS握手協(xié)議交互的過程進行形式化的描述,,分別在Delov-Yao模型和強安全模型下對該協(xié)議進行形式化分析。SPDL語言對協(xié)議的描述是基于角色的,,在定義了協(xié)議交互使用的變量之后,,整個協(xié)議的交互過程通過參與協(xié)議每個主體發(fā)生的事件集合表示。其中send和recv事件表示該主體發(fā)送和接收消息的事件,,目標屬性的描述通過claim事件完成,,利用claim事件可以對角色的認證性、變量的機密性等進行描述,。Scyther-Compromise工具可以方便地更改協(xié)議分析的安全模型,,該工具的敵手的攻擊分析能力可以通過選項的形式供用戶選擇。
CIP協(xié)議嵌入到TCP報文傳輸的時候,,在實現客戶端和服務端身份認證的時候,,首先建立TLS會話,通過對協(xié)議版本,、密碼算法和認證方式以及公鑰加密技術的協(xié)商,,進入協(xié)議握手階段,圖8是TLS握手協(xié)議流程圖,。
?。?)客戶端首先發(fā)起請求,,交換hello協(xié)商算法,、
隨機數、協(xié)議版本等信息,。
?。?)交換必要的密碼學參數,客戶端和服務器生成預主秘鑰,。
?。?)雙方交換數字證書,客戶端驗證服務端證書通過后取出證書中的公鑰,。
?。?)通過預主秘鑰和交換的隨機數生成主秘鑰。
?。?)為之后的記錄層提供安全參數,。
(6)秘鑰確認,,進行通信,。
根據TLS握手協(xié)議分析涉及的2個實體(Client、Server),協(xié)議形式化定義2個角色a和b分別表示客戶端和服務器,。
實驗結果
Scyther采用黑盒驗證思想,,每個角色從自身的角度判斷是否滿足安全目標或者安全屬性,工業(yè)網絡最初與用戶應用網絡Internet是分開的,,像CIP,、EtherNet/IP沒有考慮傳輸安全類問題,缺乏固有的安全機制,。近些年研究人員公開報告了CIP和EtherNet/IP中許多漏洞,,因為EtherNet/IP協(xié)議使用基于CIP的以太網協(xié)議,固然也存在安全隱患,,圖9是Scyther-Compromise工具在Delov-Yao模型下對TLS握手協(xié)議的形式化分析輸出的攻擊路徑圖,,圖10是在該模型下驗證TLS握手協(xié)議秘鑰協(xié)商的機密性,結果顯示在該模型下不存在攻擊威脅,。
圖11是在Scyther-Compromise工具中通過添加選項長期私鑰泄露,、會話秘鑰泄露、隨機數泄露以及狀態(tài)泄露的強安全模式設置參數界面,。圖12是在強安全模型下對TLS握手協(xié)議機密性驗證,,結果顯示存在至少4個攻擊,證明在強安全模型下,,TLS握手協(xié)議不能保證秘鑰的機密性,。
結論
本文分析了EtherNet/IP協(xié)議的結構和性能,其核心組成成員應用層CIP協(xié)議的安全性取決于加密認證協(xié)議TLS的安全保證能力,,使用Scyther工具對TLS協(xié)議進行形式化分析,,設置敵手模型分別為Delov-Yao模型和強安全模型下進行驗證,從輸出的攻擊軌跡圖,,證明在強安全模型下TLS協(xié)議存在長期秘鑰泄露導致主體的長期私鑰泄露的危險,。由于秘鑰傳輸過程中傳輸的機密性取決于長期私鑰的安全性。實驗證明TLS握手協(xié)議在強安全模型下傳輸秘鑰不安全,,TLS協(xié)議無法保證CIP協(xié)議通信的安全,,導致了使用CIP作為EtherNet/IP協(xié)議的核心協(xié)議在應用層的傳輸不夠安全。未來在EtherNet/IP協(xié)議嵌入TLS1.3版本的時候不得不重新考慮整體安全性,。
內容節(jié)選自《信息技術與網絡安全》2019年第七期《工業(yè)以太網EtherNet/IP協(xié)議安全分析》一文,,作者田學成,徐英會)