引言
目前,應(yīng)用在工業(yè)控制領(lǐng)域的加密算法多以CRC加密或者校驗和CHECKSUM加密算法為主,但是此類普通加密算法如果每次發(fā)送的控制指令相同,計算出的加密結(jié)果也是一樣的[1],具有控制數(shù)據(jù)被破解的風險,增加通信的不安全性,這在一些醫(yī)療、金融和汽車電子等特殊領(lǐng)域是不允許的。
1 動態(tài)加密系統(tǒng)原理
本文提出的動態(tài)加密系統(tǒng)包括上位機和下位機兩部分。圖1所示為動態(tài)加密算法原理,在工作過程中,首先由下位機周期性發(fā)送一包隨機種子數(shù)據(jù)(每次發(fā)送數(shù)據(jù)均變化),并按約定的加密算法進行計算加密,結(jié)果記為A,然后上位機接收到此隨機種子后按同樣的加密算法進行加密,然后將控制指令和加密結(jié)果記為B的數(shù)據(jù)整合為一幀數(shù)據(jù)后傳送給下位機,下位機接收到此控制指令后進行數(shù)據(jù)解析,若A=B,則執(zhí)行相應(yīng)控制指令功能,依此通信過程進行循環(huán)。
2 動態(tài)加密系統(tǒng)硬件設(shè)計
本設(shè)計中上下位機使用的主控芯片均為STM32F103RCT6,這是一款32位微控制器,最大系統(tǒng)時鐘速度可達72 MHz,為快速實時處理復雜加密算法提供了可能性,片內(nèi)集成FLASH 容量為256 KB,RAM容量為48 KB,具有 UART 及 CAN通信等模塊[2],STM32F103RCT6集成的豐富片上外設(shè)資源大大簡化了設(shè)計成本及開發(fā)周期。
2.2 STM32 最小系統(tǒng)電路設(shè)計
STM32 最小系統(tǒng)可以直觀地理解為讓單片機正常工作的最小電路,圖2所示為STM32最小系統(tǒng)構(gòu)成,包括電源電路、晶振電路、復位電路和啟動模式配置等[3]。電源電路經(jīng)穩(wěn)壓芯片 REF3133將5V電壓轉(zhuǎn)換為3.3V提供給 MCU。外部晶振電路類似于"心臟"的功能,為單片機提供精準的時鐘頻率以保證正常工作。復位電路為單片機提供上電復位功能,利用電容充電不能瞬間突變的特性,即可完成一次單片機上電復位。BOOTO 引腳配置為低電平,以使MCU從用戶FLASH存儲區(qū)啟動。
2.3 CAN通信電路設(shè)計
使用 Philips 半導體公司的 TJA1050 進行 CAN 通信電路設(shè)計,TJA1050是一款高速CAN收發(fā)集成芯片,可以提供差分傳輸總線和差分接收能力,并且全兼容ISO11898 標準[4]。CAN通信電路設(shè)計如圖3所示,其中控制引腳RS接為低電平以配置為正常高速模式。
3 動態(tài)加密系統(tǒng)軟件設(shè)計
3.1 動態(tài)加密算法數(shù)據(jù)包格式定義
出于通信穩(wěn)定性考慮,本設(shè)計采用CAN通信方式,CAN是Controller Area Network的縮寫,是ISO國際標準化的差分傳輸串口通信協(xié)議,具有通信速度快、通信距離遠和可靠性高等優(yōu)點[5],8字節(jié)下位機發(fā)送數(shù)據(jù)包格式定義如下:
上位機發(fā)送8字節(jié)數(shù)據(jù)包格式定義如下:
其中包頭和包尾數(shù)據(jù)分別定義為0xAA和0x55,Byte4~Bytel為應(yīng)用3DES加密算法計算結(jié)果(8字節(jié))的中間4位,并采用小端方式存儲,Byte5和Byte6為控制指令模式位,用于控制下位機的工作模式。
3.2 動態(tài)加密算法軟件設(shè)計
DES全稱為 Data Encryption Standard,即數(shù)據(jù)加密標準,是一種使密鑰加密的塊算法,屬于對稱加密算法的一種[6]。由于計算機的計算能力不斷增強,DES算法的密鑰變得較容易被破解,3DES即是在DES算法基礎(chǔ)上,通過增加密鑰長度對每個數(shù)據(jù)塊應(yīng)用三次DES加密算法,使得其安全性得到提高[7],若以EK()、DK()分別表示DES的加密和解密函數(shù),P代表明文,C代表密文,則3DES加密算法可以用以下公式表示:
C=EK3(DK2(EK1(P)))
式中,K1、K2、K3表示總密鑰(24字節(jié))中的8字節(jié)密鑰。
本系統(tǒng)為基于3DES算法的動態(tài)加密設(shè)計,上下位機共同約定的密鑰取為24字節(jié)的十六進制數(shù):0x2B201E00270401C491EFBD27047002236E710B513460A460。T位機傳送8字節(jié)隨機數(shù)種子,其中8字節(jié)隨機數(shù)由C語言自帶的srand和rand標準庫函數(shù)配合使用而產(chǎn)生[8]。上位機在接收到下位機傳送來的8字節(jié)數(shù)據(jù)后進行3DES加密算法加密,然后按照數(shù)據(jù)包的格式回傳數(shù)據(jù)至下位機,下位機接收到此數(shù)據(jù)后進行數(shù)據(jù)解析并執(zhí)行相關(guān)指令功能,具體軟件設(shè)計過程如下:
①對MCU系統(tǒng)初始化配置(包括配置系統(tǒng)時鐘等),并進行CAN通信正常收發(fā)模式和波特率等參數(shù)設(shè)置。
②由下位機周期性向上位機傳送字節(jié)隨機數(shù),并依據(jù)3DES加密算法在同一密鑰下計算8字節(jié)隨機數(shù)加密結(jié)果,取加密結(jié)果的中間4位存入數(shù)組中。
③上位機接收到8字節(jié)隨機數(shù)后,按照與下位機同樣的計算方法計算此隨機數(shù)加密結(jié)果,并按照數(shù)據(jù)格式整合數(shù)據(jù),然后將此數(shù)據(jù)發(fā)送給下位機。
④下位機接收到上位機傳送來的數(shù)據(jù)后,進行解析并對比上傳的加密數(shù)據(jù)是否與保存在本地的加密數(shù)據(jù)一致,一致則執(zhí)行相關(guān)控制指令,不一致則不執(zhí)行相關(guān)功能。
⑤按照步驟②~④周期循環(huán)執(zhí)行通信流程。
具體軟件設(shè)計流程圖如圖4所示。
結(jié)語
將此通信設(shè)計方案應(yīng)用在某汽車電子產(chǎn)品中,針對此應(yīng)用系統(tǒng),設(shè)定通信波特率為500 kbps,下位機CAN通信ID設(shè)為0x18FF 0107,上位機CAN通信ID設(shè)為0x18FF 0108。為了保證通信安全,避免通信內(nèi)容被破解,需要使下位機周期發(fā)送隨機數(shù)種子時間盡量短暫,本設(shè)計定為500 ms。圖5所示為上下位機通信過程中應(yīng)用通信監(jiān)控軟件監(jiān)控到的部分通信數(shù)據(jù)幀。
分析圖5可知,在足夠短的通信周期內(nèi),盡管控制模式固定不變,下發(fā)與上傳的通信數(shù)據(jù)每次都發(fā)生變化,這樣就提高了數(shù)據(jù)通信的安全性,減小了通信數(shù)據(jù)幀被第三方破解的概率,使得本設(shè)計方案具有一定的實用價值。
參考文獻
[1]王根義.CRC校驗算法的研究與實現(xiàn)[J].電子設(shè)計工程,2012(9):1674-6236.
[2]意法半導體公司.STM32F103xC芯片數(shù)據(jù)手冊,2015.
[3]李彬,王朝陽,卜濤,等.基于MSP430F149的最小系統(tǒng)設(shè)計[J].國外電子測量技術(shù),2009(12).
[4]郭寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計[M].北京:北京航空航天大學出版社,1996.
[5]徐爭穎.CAN總線及其網(wǎng)絡(luò)系統(tǒng)的實現(xiàn)[J].自動化與儀表,2005(5).
[6]李聯(lián).信息安全中的DES加密算法[J].現(xiàn)代電子技術(shù),2005(9).
[7]劉建華,趙小強,李晶.基于ARM的3DES加密算法實現(xiàn)
[J].現(xiàn)代電子技術(shù),2009,32(18):37-39.
[8]王瑞胡,計算機中偽隨機數(shù)生成及其在VISUAL C++中的實現(xiàn)[J].計算機與信息技術(shù),2005(9):79-80,84
(作者單位:南京先進激光技術(shù)研究院,南京210038)
審核編輯:黃飛
-
CAN
+關(guān)注
關(guān)注
57文章
2686瀏覽量
462938 -
STM32
+關(guān)注
關(guān)注
2263文章
10847瀏覽量
353809 -
加密算法
+關(guān)注
關(guān)注
0文章
210瀏覽量
25514 -
下位機
+關(guān)注
關(guān)注
0文章
93瀏覽量
18707
原文標題:3DES 算法的動態(tài)加密系統(tǒng)研究與應(yīng)用
文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論