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