刘文滔,陈以
(桂林电子科技大学计算机与控制学院,广西桂林541004)
通讯协议,即通讯规程,也叫链路控制规程[1],是指通讯双方对数据传送控制的一种约定。约定中包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题作出统一规定,通讯双方必须共同遵守。基于这个协议,不同厂商生产的设备才能正确、高效运行,另外可以使平台具备良好的开放性,而良好的开放性可以有效降低成本,且使得系统具备良好的可移植性。常规芯片的通讯接口一般都是既定的协议,如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)等。这种出于统一性和开放性考虑的设计,的确加速了电子技术的发展,但同样带来了一个关于数据本身安全性的问题。由于采用了标准的通讯接口,在两个模块之外的解析者如果试图获取它们之间传输的数据及数据的意义,只要知道它们的标准既定协议,采用并联接入的方式采集数据,再根据动作和响应就能逆向分析出数据意义[2-4]。
事实上,这种解析数据的情况已经司空见惯,尤其在汽车电子领域。一些厂商需要在原有一些设备上进行改装和升级,这就需要获取原来两个或者多个设备间的通讯数据,通过逆向分析,最终解析出一系列操作指令。基于这些指令,就可做到取代原来的某个模块或者加入一些模块。与此同时,一些基于这些既定协议的数据采集工具应运而生,如SPI、IIC、USB协议的Totalphase、UART协议的FilterTerminal、CAN协议的Vehicle Spy 3、MOST协议的OptoLyzer。即使没有对应工具的Microwire协议,也可通过示波器测量时钟线、数据线的波形,再根据Microwire协议解析出数据[5-6]。
为保护通讯的安全使其不被解析,其中一种方法是设计者在原来数据的基础上故意增加一些无效数据,一起发送出去。由于设计者设计的模块预先定义了协议,就可以对有效数据进行响应,对无效数据进行过滤[7]。然而解析者通过工具获取到的数据会比真实有效的数据多,难以分辨有效的数据,不易对数据进行正确解析。
这些通讯保护方法几乎都是从数据本身出发,没有对通讯协议进行改变。解析者根据协议,只要能获取到数据本身,就有可能成功解析出数据及其意义。
给定系统控制误差e>0,总存在着b>a>0,使得当采样周期Ti∈[a,b]时总有成立,即由输出采样值{ysi}(i=1,2,…n,)作指定的曲线拟合所得曲线ys*(t)能够在规定的误差范围内复现实际系统的输出ys(t),则称区间[a,b]为采样周期所允许的阈值范围。其中a受执行机构响应速度、计算机计算处理时间和速度极限的限制,而b由采样定理和对系统的控制精度要求决定[8]。当前的通行做法是大部分数据通信加密通过改变数据本身的方式而实现,与此不同,笔者提出了一种新的通讯加密模式(图1)。
图1 通讯模型Fig.1 Communication model
该模式定义了一个可变的时间T作为bit数据的传输时间,称为时基T,模块间对T始终保持同步,模块A发送数据到模块B,B以T作为采样时间间隔对数据进行采样。如当T为20 μs时,传输速率可以达到50 kbit/s,可以满足低速数据的传输。图2所示为T取不同数值情况下,发送相同数据的不同波形。
图2 不同T时发送相同数据的不同波形Fig.2 Waveforms of different T to transmit the same data
可以看出,虽然发送的数据是完全一样,但由于T的不同,数据的波形截然不同。如果再加上T在采样周期所允许的阈值范围随机变化,即使解析者在获取到数据波形后,也无法正确解析出真实的数据。
1.1.1 A和B模块通讯的建立在A中通过一个随机函数f(x)生成一个随机数T0,A以A/B双方预先指定的时基T将数据T0传输给B。下一帧的数据交换以T0作为时基。
1.1.2 A和B模块通讯过程当B成功接收到A中的随机数T0后,第2帧数据的时基T就是T0,第3帧数据的T变为f(T0),第4帧的T为f(f(T0)),依次类推第n帧为f…f(f(T0))。其过程如图3所示。
图3 模块间通讯过程Fig.3 Communication process between modules
由于A和B中运行同一套随机函数f(x),因此A/B双方时基T可以保证得到同步。其中f(x)是一个随机数生成函数,为了保证通讯效率,一般需要f(x)生成的随机数是在设计者指定的范围内。为了避免随机函数运算过于复杂和产生的随机数过大,以及确保数据的实时性,设计者可以根据处理芯片的能力作适当的自由设计。
1.2.1 ACK(Acknowledgement)机制为了预防发送方或者接收方由于其他原因导致数据发送或者接收不成功,以至于通讯无法正确进行下去,在通讯上增加ACK机制(图4)。
图4 回馈机制Fig.4 Feedback mechanism
ACK机制:发送方在发送完数据之后规定时间内需要接收到ACK响应帧;接收方在正确接收完数据之后需要发送ACK响应帧。只有发送方正确接收到接收方返回的ACK响应帧后才认为该帧通讯成功。如果发送方在发送完数据后规定的时间内没有正确收到ACK响应帧就认为本次通讯失败,需要发送方重新发送数据,如果重发次数达到最大规定次数,将认为通讯失败,需要重新初始化并建立通讯。只有在一个完整的帧通讯成功后,通讯双方才能使用f(x)重新生成新的时基。
1.2.2数据缓冲为了有效保证通讯数据的低丢失率,引入数据缓冲技术(图5)。
图5 通讯数据缓冲Fig.5 Buffer of communication data
数据缓冲区需要根据通讯数据量来划分具体大小,当模块A发送数据时,将数据存入A的发送数据缓冲区,然后触发发送函数,将发送缓冲区里的帧数据发送出去。模块B接收到数据后,先将数据存入B的接收缓冲区,然后再从接收缓冲区中以帧为单位取出数据进行处理。当模块B发送数据时,将数据存入B的发送数据缓冲区,然后触发发送函数,将发送缓冲区里的帧数据发送出去,模块A接收到数据,先将数据存入A的接收缓冲区,然后再从接收缓冲区中以帧为单位取出数据进行处理。
笔者提出的硬件加密方法,区别于传统软件对数据进行加密的方法,其安全性更可靠。硬件加密时加密运算都在硬件内部实现,是难以被破解的;而软件加密通常采用的方法是软件编程和加密算法变换,容易受到各种攻击,且容易被破解。
现在将此加密方法与常规的加密方法进行比较——对1 Byte数据进行加密,然后通过高精准的示波器(LECROY)截取其在硬件底层传输时的波形图作简单的对比。如将随机采用1 Byte的数据0x56,对其进行加密,然后通过标准通讯协议UART把数据传输给接收模块。
正常情况下,通过UART(配置数据发送模式为低位先发送)发送0x56时此1 Byte数据的硬件波形如图6所示。
可以清晰地截取分析出此1 Byte数据是0x56。下面将采用常用的数据加密方法,即对数据本身进行一定变化的加密方式来进行分析。如采用简单取反的方式对数据进行加密,即对0x56进行取反得0xA9,通过UART发送此加密数据,在硬件上截取到的波形见图7。
常用的数据加密方法还有在通讯中特意引入一些有规律的无效数据去混淆有效数据的方法。采用这种方法,在需要加密的数据前后混进2 Byte的无效数据0xFF,使之变成0xFFA9FF,通过UART发送出去,截取的硬件波形见图8。
采用常用的加密方法对数据进行加密后,从底层硬件处截取到的相应加密数据中可见,此数据是一串符合标准串口协议、能被解析的数据,解密者将其翻译成二进制数据,结合标准通讯协议很清晰地得知此数据是0xA9和0xFFA9FF,同时解密者通过对设备的规律操作很快能摸索出数据的规律及代表的意义,甚至很快能推断出其原始数据。
图6 通过UART正常发送数据0x56Fig.6 0x56 sent by UART
图7 对数据0x56取反的加密方式传输时的波形Fig.7 Waveform of the anti data 0x56
图8 对加密数据混进无效数据的传输波形Fig.8 Waveform of the mixed invalid data
图9 采用可变时基的非标准通讯加密方法波形Fig.9 Waveform of the nonstandard communication encryption method of timebase
图10 接收模块解析数据Fig.1 0Analytical data of receiving module
采用可变时基的非标准通讯加密方法,本例采用非标准通讯协议,设置其采样周期所允许的阈值范围为[1,6]时传输0x56的数据波形图如图9所示。
采用非标准通讯协议传输时,从底层截取到的波形中解析出来的数据是一个变长的比特流,同时每次传输相同数据的时候底层硬件波形图是不一样的,解密者根本无法得知截取到的数据的真正含义和意义。接收模块解析出此加密数据的原文为0x56,如图10所示。
基于本文可变时基的非标准通讯加密方法的通讯,即使第三方获取到了数据,如果采样周期的阈值范围允许,同时随机函数设计合理,第三方是无法成功解析出其中数据的含义的。区别于对数据本身进行一定的变化或者在通讯中特意引入一些无效数据而去混淆有效数据的方法,本文方法能使数据通讯保密性大大提高、不容易被破解,并且应用比较简单,更适合需要对通讯内容进行保密的通讯场合。
[1]李红,孙长新.浅谈数据通讯加密技术[J].山东通信技术,2001(1):23-27.
[2]王锋.加密技术在网络通讯中的应用[J].中国高新技术企业,2014(21):33-34.
[3]吉明鹏,陈英革,王小英.非标准通讯协议仪表与工业组态软件的通讯[J].安徽工业大学学报:自然科学版,2005,22(1):43-47.
[4]罗宏浩,刘少克.MICROWIRE总线与SPI总线的接口设计与应用[J].计算机测量与控制,2004,12(3):278-279.
[5]程序.电磁搅拌器自适应模型预测控制系统的设计与实现[D].武汉:华中科技大学,2010.
[6]杨富国.浅析加密技术在通讯安全中的应用[J].信息系统工程,2013(10):88.
[7]蔡自兴,邹琳翔.三种通讯安全的实现方法[J].信息安全与通信保密,2006(1):80-81,85.
[8]曹斌,陈龙.基于采样周期可变的控制策略[J].自动化学报,1992,18(4):482-486.