国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

商用密碼算法在PLC固件完整性校驗中的應(yīng)用

2021-07-07 06:30:04金先濤李丹鐘晶譚淑慧
關(guān)鍵詞:國密編輯器固件

金先濤,李丹,鐘晶,譚淑慧

(工業(yè)和信息化部電子第五研究所,廣東 廣州 511370)

0 引言

可編程邏輯控制器(PLC:Programing Logic Controller)是一種很常見的工業(yè)控制系統(tǒng)(ICS:Industrial Control System)設(shè)備,用于接收和處理輸入設(shè)備的數(shù)據(jù),以及對輸出設(shè)備進(jìn)行控制。用戶通過通用操作系統(tǒng)(如Windows、Linux等),使用編輯器編寫梯形圖程序、ST程序等,然后將程序通過通訊接口、Web接口或移動存儲設(shè)備裝載到PLC設(shè)備內(nèi)部運(yùn)行。由于PLC和編輯器平臺分離,若將不可信的PLC程序裝載進(jìn)PLC運(yùn)行,必然引發(fā)不可預(yù)知的后果。密碼技術(shù)是保障網(wǎng)絡(luò)安全的核心技術(shù),是構(gòu)建網(wǎng)絡(luò)信任的基石。利用密碼在安全認(rèn)證、加密保護(hù)和信任傳遞等方面的作用,能夠確保PLC裝載的是可信任的固件,避免發(fā)生安全問題。

1 商用密碼算法

商用密碼,是指采用特定變換的方法對不屬于國家秘密的信息等進(jìn)行加密保護(hù)、安全認(rèn)證的技術(shù)、產(chǎn)品和服務(wù)。商用密碼技術(shù)是商用密碼的核心,國家將商用密碼技術(shù)列入國家秘密,任何單位和個人都有責(zé)任和義務(wù)保護(hù)商用密碼技術(shù)的秘密。商用密碼的應(yīng)用領(lǐng)域十分廣泛,主要用于對不涉及國家秘密內(nèi)容但又具有敏感性的內(nèi)部信息、行政事務(wù)信息和經(jīng)濟(jì)信息等進(jìn)行加密保護(hù)。比如:各種安全認(rèn)證、網(wǎng)上銀行和數(shù)字簽名等。但在PLC固件完整性保護(hù)方面,其研究和實踐并不多見。

為了保障商用密碼安全,國家密碼管理局制定了一系列的密碼標(biāo)準(zhǔn),包括SSF33、SM1(SCB2)、SM2、SM3、SM4、SM7、SM9和祖沖之密碼算法等等。其中,SSF33、SM1、SM4、SM7和祖沖之密碼是對稱算法;SM2、SM9是非對稱算法;SM3是哈希算法。

目前已經(jīng)公布了算法文本的包括SM2橢圓曲線公鑰密碼算法、SM3密碼雜湊算法、SM4分組密碼算法和SM9標(biāo)識密碼算法等。

2 PLC固件完整性校驗研究

本文選取的PLC對象為OpenPLC,OpenPLC作為第一個全功能標(biāo)準(zhǔn)化的開源PLC,其作用是為自動化研究提供低成本的工業(yè)解決方案[3]。OpenPLC項目是根據(jù)IEC-61131-3標(biāo)準(zhǔn)創(chuàng)建的,該標(biāo)準(zhǔn)支持5種編程語言。

2.1 OpenPLC運(yùn)行過程

OpenPLC項目包括3個部分:運(yùn)行系統(tǒng)(Run time)、編輯器(Editor)和HMIBuilder(ScadaBR)。運(yùn)行系統(tǒng)應(yīng)安裝在設(shè)備上,并負(fù)責(zé)執(zhí)行PLC程序。編輯器是在計算機(jī)上運(yùn)行的軟件,用于創(chuàng)建PLC程序。最后,ScadaBR是HMI Builder。使用ScadaBR可以創(chuàng)建漂亮的基于Web的動畫,以反映對象的過程狀態(tài)。ScadaBR通過Modbus/TCP與OpenPLC Runtime通信[4]。

2.1.1 編輯器運(yùn)行過程

PLC程序的創(chuàng)建和編譯過程如圖1所示。在將st文件翻譯為C語言文件的過程中,使用到了MATIEC開源軟件,這是一款開源的IEC 61131-3編譯器,能夠?qū)t文本翻譯為C程序文件[1-2],最后通過平臺編譯器生成共享庫。

圖1 Editor編輯器運(yùn)行過程

2.1.2 Runtime運(yùn)行過程

Openplc Runtime對外提供的管理交互接口是http,基于flask框架開發(fā)。

在Web界面中,用戶可以上傳PLC程序、配置擴(kuò)展從設(shè)備(如modbus、dnp3協(xié)議設(shè)備)、監(jiān)控PLC運(yùn)行狀態(tài)等。由于用戶上傳的是st文件,Runtime需要編譯鏈接為可執(zhí)行文件openplc.elf,并保存在core/目錄下,這點與Editor仿真時的編譯目標(biāo)不同,如圖2所示。

圖2 Runtime運(yùn)行過程

2.2 PLC固件完整性實現(xiàn)設(shè)計

OpenPLC固件的生命周期為:梯形圖程序->ST程序->C語言程序->目標(biāo)二進(jìn)制代碼(固件)->向PLC刷入固件。 根據(jù)OpenPLC固件的生命周期,選取目標(biāo)二進(jìn)制代碼(固件)為完整性計算起點,通過國密算法,對固件做hash計算和SM2私鑰簽名;在OpenPLC端,對帶簽名的PLC程序進(jìn)行驗簽,驗簽通過則存入數(shù)據(jù)庫,否則拒絕該P(yáng)LC程序的上傳[5]。如圖3所示。

圖3 Runtime運(yùn)行過程

3 驗證

為了驗證固件的完整性,選取GMSSL國密算法庫作為簽名和驗簽工具。GmSSL是一個開源的密碼工具箱,支持SM2/SM3/SM4/SM9/ZUC等國密(國家商用密碼)算法、SM2國密數(shù)字證書及基于SM2證書的SSL/TLS安全通信協(xié)議,支持國密硬件密碼設(shè)備,提供符合國密規(guī)范的編程接口與命令行工具,可以用于構(gòu)建PKI/CA、安全通信和數(shù)據(jù)加密等符合國密標(biāo)準(zhǔn)的安全應(yīng)用。

在本次驗證中,首先使用GMSSL庫生成SM2公私鑰對,其中私鑰命名為skey.pem,公鑰命名為vkey.pem。在Editor編輯器中,利用私鑰對st文件簽名,合成簽名文件signed_file.st;Runtime運(yùn)行系統(tǒng)通過http接口收到signed_file.st后,首先調(diào)用公鑰vkey.pem對簽名文件進(jìn)行驗簽,驗簽通過才將st文件保存,否則報錯返回。

3.1 signed_file.st文件格式設(shè)計

signed_file.st文件里不僅包含原st內(nèi)容,還包含簽名數(shù)據(jù),為了保證驗簽準(zhǔn)確性,為signed_file.st文件設(shè)計了文件格式,如圖4所示。

圖4 簽名文件格式

3.2 驗簽驗證

3.2.1 驗證系統(tǒng)的網(wǎng)絡(luò)架構(gòu)

OpenPLC通過Modbus/TCP協(xié)議接口,擴(kuò)展遠(yuǎn)程IO從站,其網(wǎng)絡(luò)架構(gòu)如圖5所示。

圖5 OpenPLC網(wǎng)絡(luò)架構(gòu)

針對該網(wǎng)絡(luò)架構(gòu),通過編輯器,編寫了梯形圖程序,用于控制線圈Q100.0,同時帶有自鎖功能,如圖6所示。

圖6 梯形圖程序

按鈕I100.0為啟動開關(guān),按鈕I100.1為停止開關(guān)。IQ100地址映射到Modbus/TCP從站,如圖7所示。

圖7 Modbus從站設(shè)備配置

3.2.2 驗證過程

通過Editor,對以上程序進(jìn)行編譯,生成帶簽名的st文件;在OpenPLC runtime端,通過http接口接收st文件,并對st文件進(jìn)行驗簽,只有驗簽通過,才能保存st文件,并編譯為可執(zhí)行代碼,如圖8所示。

圖8 驗簽成功與編譯過程

加載非法簽名的st文件時,將被OpenPLCruntime拒絕提交。

圖9 驗簽失敗

4 結(jié)束語

本文通過對OpenPLC的源碼分析,選取了合適的簽名與驗簽的時機(jī),并應(yīng)用GMSSL國密算法庫,對PLC的固件進(jìn)行了簽名和驗簽,保證了PLC固件的完整性。經(jīng)過實際測試,驗證了國密算法在PLC固件完整性應(yīng)用上的可行性。

猜你喜歡
國密編輯器固件
國密技術(shù)在智能燃?xì)獗硐到y(tǒng)的應(yīng)用與分析
煤氣與熱力(2021年7期)2021-08-23 01:11:14
Hyperledger Fabric平臺的國密算法嵌入研究
你距離微信創(chuàng)作達(dá)人還有多遠(yuǎn)?
自助終端設(shè)備國密改造方法探究
車輛段收發(fā)車運(yùn)行圖編輯器的設(shè)計與實現(xiàn)
基于國密算法的銀行移動營銷終端安全系統(tǒng)研究
電子測試(2018年9期)2018-06-26 06:45:40
基于固件的遠(yuǎn)程身份認(rèn)證
提取ROM固件中的APP
電腦愛好者(2015年7期)2015-04-09 08:54:02
基于VLIW目標(biāo)機(jī)的ELF二進(jìn)制編輯器設(shè)計與實現(xiàn)
一種通過USB接口的可靠固件升級技術(shù)
景泰县| 海盐县| 咸宁市| 兰州市| 博罗县| 读书| 盐边县| 龙泉市| 桃园县| 拜泉县| 博爱县| 阿合奇县| 峨眉山市| 门头沟区| 临沭县| 高陵县| 普兰县| 巴彦淖尔市| 石屏县| 福清市| 南通市| 沁源县| 玉树县| 大英县| 射洪县| 民勤县| 湖南省| 临邑县| 双辽市| 芒康县| 颍上县| 翁源县| 三河市| 孟津县| 精河县| 绥化市| 华宁县| 中西区| 五寨县| 绍兴县| 乌兰浩特市|