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