劉文滔,陳以
(桂林電子科技大學(xué)計算機與控制學(xué)院,廣西桂林541004)
通訊協(xié)議,即通訊規(guī)程,也叫鏈路控制規(guī)程[1],是指通訊雙方對數(shù)據(jù)傳送控制的一種約定。約定中包括對數(shù)據(jù)格式、同步方式、傳送速度、傳送步驟、檢糾錯方式以及控制字符定義等問題作出統(tǒng)一規(guī)定,通訊雙方必須共同遵守?;谶@個協(xié)議,不同廠商生產(chǎn)的設(shè)備才能正確、高效運行,另外可以使平臺具備良好的開放性,而良好的開放性可以有效降低成本,且使得系統(tǒng)具備良好的可移植性。常規(guī)芯片的通訊接口一般都是既定的協(xié)議,如SPI(serial peripheral interface)、IIC(inter-integrated circuit)、UART(universal asynchronous receiver/transmitter)、Microwire(SPI的精簡接口)、CAN(controller area network)、MOST(media oriented systems transport)、USB(universal serial bus)等。這種出于統(tǒng)一性和開放性考慮的設(shè)計,的確加速了電子技術(shù)的發(fā)展,但同樣帶來了一個關(guān)于數(shù)據(jù)本身安全性的問題。由于采用了標(biāo)準(zhǔn)的通訊接口,在兩個模塊之外的解析者如果試圖獲取它們之間傳輸?shù)臄?shù)據(jù)及數(shù)據(jù)的意義,只要知道它們的標(biāo)準(zhǔn)既定協(xié)議,采用并聯(lián)接入的方式采集數(shù)據(jù),再根據(jù)動作和響應(yīng)就能逆向分析出數(shù)據(jù)意義[2-4]。
事實上,這種解析數(shù)據(jù)的情況已經(jīng)司空見慣,尤其在汽車電子領(lǐng)域。一些廠商需要在原有一些設(shè)備上進行改裝和升級,這就需要獲取原來兩個或者多個設(shè)備間的通訊數(shù)據(jù),通過逆向分析,最終解析出一系列操作指令?;谶@些指令,就可做到取代原來的某個模塊或者加入一些模塊。與此同時,一些基于這些既定協(xié)議的數(shù)據(jù)采集工具應(yīng)運而生,如SPI、IIC、USB協(xié)議的Totalphase、UART協(xié)議的FilterTerminal、CAN協(xié)議的Vehicle Spy 3、MOST協(xié)議的OptoLyzer。即使沒有對應(yīng)工具的Microwire協(xié)議,也可通過示波器測量時鐘線、數(shù)據(jù)線的波形,再根據(jù)Microwire協(xié)議解析出數(shù)據(jù)[5-6]。
為保護通訊的安全使其不被解析,其中一種方法是設(shè)計者在原來數(shù)據(jù)的基礎(chǔ)上故意增加一些無效數(shù)據(jù),一起發(fā)送出去。由于設(shè)計者設(shè)計的模塊預(yù)先定義了協(xié)議,就可以對有效數(shù)據(jù)進行響應(yīng),對無效數(shù)據(jù)進行過濾[7]。然而解析者通過工具獲取到的數(shù)據(jù)會比真實有效的數(shù)據(jù)多,難以分辨有效的數(shù)據(jù),不易對數(shù)據(jù)進行正確解析。
這些通訊保護方法幾乎都是從數(shù)據(jù)本身出發(fā),沒有對通訊協(xié)議進行改變。解析者根據(jù)協(xié)議,只要能獲取到數(shù)據(jù)本身,就有可能成功解析出數(shù)據(jù)及其意義。
給定系統(tǒng)控制誤差e>0,總存在著b>a>0,使得當(dāng)采樣周期Ti∈[a,b]時總有成立,即由輸出采樣值{ysi}(i=1,2,…n,)作指定的曲線擬合所得曲線ys*(t)能夠在規(guī)定的誤差范圍內(nèi)復(fù)現(xiàn)實際系統(tǒng)的輸出ys(t),則稱區(qū)間[a,b]為采樣周期所允許的閾值范圍。其中a受執(zhí)行機構(gòu)響應(yīng)速度、計算機計算處理時間和速度極限的限制,而b由采樣定理和對系統(tǒng)的控制精度要求決定[8]。當(dāng)前的通行做法是大部分?jǐn)?shù)據(jù)通信加密通過改變數(shù)據(jù)本身的方式而實現(xiàn),與此不同,筆者提出了一種新的通訊加密模式(圖1)。
圖1 通訊模型Fig.1 Communication model
該模式定義了一個可變的時間T作為bit數(shù)據(jù)的傳輸時間,稱為時基T,模塊間對T始終保持同步,模塊A發(fā)送數(shù)據(jù)到模塊B,B以T作為采樣時間間隔對數(shù)據(jù)進行采樣。如當(dāng)T為20 μs時,傳輸速率可以達(dá)到50 kbit/s,可以滿足低速數(shù)據(jù)的傳輸。圖2所示為T取不同數(shù)值情況下,發(fā)送相同數(shù)據(jù)的不同波形。
圖2 不同T時發(fā)送相同數(shù)據(jù)的不同波形Fig.2 Waveforms of different T to transmit the same data
可以看出,雖然發(fā)送的數(shù)據(jù)是完全一樣,但由于T的不同,數(shù)據(jù)的波形截然不同。如果再加上T在采樣周期所允許的閾值范圍隨機變化,即使解析者在獲取到數(shù)據(jù)波形后,也無法正確解析出真實的數(shù)據(jù)。
1.1.1 A和B模塊通訊的建立在A中通過一個隨機函數(shù)f(x)生成一個隨機數(shù)T0,A以A/B雙方預(yù)先指定的時基T將數(shù)據(jù)T0傳輸給B。下一幀的數(shù)據(jù)交換以T0作為時基。
1.1.2 A和B模塊通訊過程當(dāng)B成功接收到A中的隨機數(shù)T0后,第2幀數(shù)據(jù)的時基T就是T0,第3幀數(shù)據(jù)的T變?yōu)閒(T0),第4幀的T為f(f(T0)),依次類推第n幀為f…f(f(T0))。其過程如圖3所示。
圖3 模塊間通訊過程Fig.3 Communication process between modules
由于A和B中運行同一套隨機函數(shù)f(x),因此A/B雙方時基T可以保證得到同步。其中f(x)是一個隨機數(shù)生成函數(shù),為了保證通訊效率,一般需要f(x)生成的隨機數(shù)是在設(shè)計者指定的范圍內(nèi)。為了避免隨機函數(shù)運算過于復(fù)雜和產(chǎn)生的隨機數(shù)過大,以及確保數(shù)據(jù)的實時性,設(shè)計者可以根據(jù)處理芯片的能力作適當(dāng)?shù)淖杂稍O(shè)計。
1.2.1 ACK(Acknowledgement)機制為了預(yù)防發(fā)送方或者接收方由于其他原因?qū)е聰?shù)據(jù)發(fā)送或者接收不成功,以至于通訊無法正確進行下去,在通訊上增加ACK機制(圖4)。
圖4 回饋機制Fig.4 Feedback mechanism
ACK機制:發(fā)送方在發(fā)送完數(shù)據(jù)之后規(guī)定時間內(nèi)需要接收到ACK響應(yīng)幀;接收方在正確接收完數(shù)據(jù)之后需要發(fā)送ACK響應(yīng)幀。只有發(fā)送方正確接收到接收方返回的ACK響應(yīng)幀后才認(rèn)為該幀通訊成功。如果發(fā)送方在發(fā)送完數(shù)據(jù)后規(guī)定的時間內(nèi)沒有正確收到ACK響應(yīng)幀就認(rèn)為本次通訊失敗,需要發(fā)送方重新發(fā)送數(shù)據(jù),如果重發(fā)次數(shù)達(dá)到最大規(guī)定次數(shù),將認(rèn)為通訊失敗,需要重新初始化并建立通訊。只有在一個完整的幀通訊成功后,通訊雙方才能使用f(x)重新生成新的時基。
1.2.2數(shù)據(jù)緩沖為了有效保證通訊數(shù)據(jù)的低丟失率,引入數(shù)據(jù)緩沖技術(shù)(圖5)。
圖5 通訊數(shù)據(jù)緩沖Fig.5 Buffer of communication data
數(shù)據(jù)緩沖區(qū)需要根據(jù)通訊數(shù)據(jù)量來劃分具體大小,當(dāng)模塊A發(fā)送數(shù)據(jù)時,將數(shù)據(jù)存入A的發(fā)送數(shù)據(jù)緩沖區(qū),然后觸發(fā)發(fā)送函數(shù),將發(fā)送緩沖區(qū)里的幀數(shù)據(jù)發(fā)送出去。模塊B接收到數(shù)據(jù)后,先將數(shù)據(jù)存入B的接收緩沖區(qū),然后再從接收緩沖區(qū)中以幀為單位取出數(shù)據(jù)進行處理。當(dāng)模塊B發(fā)送數(shù)據(jù)時,將數(shù)據(jù)存入B的發(fā)送數(shù)據(jù)緩沖區(qū),然后觸發(fā)發(fā)送函數(shù),將發(fā)送緩沖區(qū)里的幀數(shù)據(jù)發(fā)送出去,模塊A接收到數(shù)據(jù),先將數(shù)據(jù)存入A的接收緩沖區(qū),然后再從接收緩沖區(qū)中以幀為單位取出數(shù)據(jù)進行處理。
筆者提出的硬件加密方法,區(qū)別于傳統(tǒng)軟件對數(shù)據(jù)進行加密的方法,其安全性更可靠。硬件加密時加密運算都在硬件內(nèi)部實現(xiàn),是難以被破解的;而軟件加密通常采用的方法是軟件編程和加密算法變換,容易受到各種攻擊,且容易被破解。
現(xiàn)在將此加密方法與常規(guī)的加密方法進行比較——對1 Byte數(shù)據(jù)進行加密,然后通過高精準(zhǔn)的示波器(LECROY)截取其在硬件底層傳輸時的波形圖作簡單的對比。如將隨機采用1 Byte的數(shù)據(jù)0x56,對其進行加密,然后通過標(biāo)準(zhǔn)通訊協(xié)議UART把數(shù)據(jù)傳輸給接收模塊。
正常情況下,通過UART(配置數(shù)據(jù)發(fā)送模式為低位先發(fā)送)發(fā)送0x56時此1 Byte數(shù)據(jù)的硬件波形如圖6所示。
可以清晰地截取分析出此1 Byte數(shù)據(jù)是0x56。下面將采用常用的數(shù)據(jù)加密方法,即對數(shù)據(jù)本身進行一定變化的加密方式來進行分析。如采用簡單取反的方式對數(shù)據(jù)進行加密,即對0x56進行取反得0xA9,通過UART發(fā)送此加密數(shù)據(jù),在硬件上截取到的波形見圖7。
常用的數(shù)據(jù)加密方法還有在通訊中特意引入一些有規(guī)律的無效數(shù)據(jù)去混淆有效數(shù)據(jù)的方法。采用這種方法,在需要加密的數(shù)據(jù)前后混進2 Byte的無效數(shù)據(jù)0xFF,使之變成0xFFA9FF,通過UART發(fā)送出去,截取的硬件波形見圖8。
采用常用的加密方法對數(shù)據(jù)進行加密后,從底層硬件處截取到的相應(yīng)加密數(shù)據(jù)中可見,此數(shù)據(jù)是一串符合標(biāo)準(zhǔn)串口協(xié)議、能被解析的數(shù)據(jù),解密者將其翻譯成二進制數(shù)據(jù),結(jié)合標(biāo)準(zhǔn)通訊協(xié)議很清晰地得知此數(shù)據(jù)是0xA9和0xFFA9FF,同時解密者通過對設(shè)備的規(guī)律操作很快能摸索出數(shù)據(jù)的規(guī)律及代表的意義,甚至很快能推斷出其原始數(shù)據(jù)。
圖6 通過UART正常發(fā)送數(shù)據(jù)0x56Fig.6 0x56 sent by UART
圖7 對數(shù)據(jù)0x56取反的加密方式傳輸時的波形Fig.7 Waveform of the anti data 0x56
圖8 對加密數(shù)據(jù)混進無效數(shù)據(jù)的傳輸波形Fig.8 Waveform of the mixed invalid data
圖9 采用可變時基的非標(biāo)準(zhǔn)通訊加密方法波形Fig.9 Waveform of the nonstandard communication encryption method of timebase
圖10 接收模塊解析數(shù)據(jù)Fig.1 0Analytical data of receiving module
采用可變時基的非標(biāo)準(zhǔn)通訊加密方法,本例采用非標(biāo)準(zhǔn)通訊協(xié)議,設(shè)置其采樣周期所允許的閾值范圍為[1,6]時傳輸0x56的數(shù)據(jù)波形圖如圖9所示。
采用非標(biāo)準(zhǔn)通訊協(xié)議傳輸時,從底層截取到的波形中解析出來的數(shù)據(jù)是一個變長的比特流,同時每次傳輸相同數(shù)據(jù)的時候底層硬件波形圖是不一樣的,解密者根本無法得知截取到的數(shù)據(jù)的真正含義和意義。接收模塊解析出此加密數(shù)據(jù)的原文為0x56,如圖10所示。
基于本文可變時基的非標(biāo)準(zhǔn)通訊加密方法的通訊,即使第三方獲取到了數(shù)據(jù),如果采樣周期的閾值范圍允許,同時隨機函數(shù)設(shè)計合理,第三方是無法成功解析出其中數(shù)據(jù)的含義的。區(qū)別于對數(shù)據(jù)本身進行一定的變化或者在通訊中特意引入一些無效數(shù)據(jù)而去混淆有效數(shù)據(jù)的方法,本文方法能使數(shù)據(jù)通訊保密性大大提高、不容易被破解,并且應(yīng)用比較簡單,更適合需要對通訊內(nèi)容進行保密的通訊場合。
[1]李紅,孫長新.淺談數(shù)據(jù)通訊加密技術(shù)[J].山東通信技術(shù),2001(1):23-27.
[2]王鋒.加密技術(shù)在網(wǎng)絡(luò)通訊中的應(yīng)用[J].中國高新技術(shù)企業(yè),2014(21):33-34.
[3]吉明鵬,陳英革,王小英.非標(biāo)準(zhǔn)通訊協(xié)議儀表與工業(yè)組態(tài)軟件的通訊[J].安徽工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2005,22(1):43-47.
[4]羅宏浩,劉少克.MICROWIRE總線與SPI總線的接口設(shè)計與應(yīng)用[J].計算機測量與控制,2004,12(3):278-279.
[5]程序.電磁攪拌器自適應(yīng)模型預(yù)測控制系統(tǒng)的設(shè)計與實現(xiàn)[D].武漢:華中科技大學(xué),2010.
[6]楊富國.淺析加密技術(shù)在通訊安全中的應(yīng)用[J].信息系統(tǒng)工程,2013(10):88.
[7]蔡自興,鄒琳翔.三種通訊安全的實現(xiàn)方法[J].信息安全與通信保密,2006(1):80-81,85.
[8]曹斌,陳龍.基于采樣周期可變的控制策略[J].自動化學(xué)報,1992,18(4):482-486.