0 引言
随着电子技术,通信技术和传感技术的不断综合发展,远程自动抄表系统应运而生,尤其在近几年发展十分迅猛。但目前国内远程抄表系统一般采用有线方式,有线抄表系统供电困难,尤其在环境恶劣的水表窖井中更为不便。其功耗较大,检修困难,一旦组网,维护成本较高,这将对今后智能化、节约化小区的建设带来极大不便,影响用户正常生活。
针对上述问题,利用GSM通信网络进行远程抄表,将用户用水量以短信的形式发送到自来水公司,不但可以解决普通用户水表的抄表问题,还可以对用水大户进行实时监控,防止偷水和管道泄漏的发生。但是GSM网络并没有启用A5对语音数据和信令进行加密,现有的GSM网络无法保障端到端之间的应用层安全,在这种非定向的无线传输环境下传送明文信息,很容易被人监听、冒用和篡改。用水大户用水量较大,准确的水表数据对自来水公司和用户都非常重要,万一在数据传送过程中被人截获篡改,将会给双方造成很大的经济损失,因此很有必要对数据消息进行加密,提高系统的安全性,确保数据传送无误。
针对上述问题,设计了基于GSM网络的无线远程抄表系统,给出了一套针对该系统数据加密的方法,提高了数据消息的可靠性。该方法简单实用,占用CPU资源较少,适合在以MCU为核心的嵌入式系统中使用,对嵌入式在通信网络中的应用与普及具有参考意义。
1 无线抄表系统的基础和总体设计
整个无线抄表系统包括光电直读式水表表头,Meter-Bus总线接口电路,GSM模块,微控制器和自来水公司计算机终控端五大部分,如图1所示。为了降低功耗,本设计中所有的模块不是一直处于工作状态,各个模块应在微控制器的指挥下定时工作。即抄表系统的所有模块的工作方式为“长时间休眠,短时间工作”。其中,休眠周期(小时、天、周、月)和加密密码由管理员用计算机终控端通过GSM模块发布。微控制器接收GSM模块收的指令后,修改抄表周期和加密密码。同时根据设定的抄表周期通过Meter-Bus接口电路控制光电直读水表表头读取当前的水量值,然后再以短信的形式用GSM通信网络发给计算机终端,实现定时自动抄表。
1.1 Meter-Bus总线
目前大部分光电直读水表通过Meter-Bus通信协议(欧洲标准)实现组网。Meter-Bus是专为“三表”抄表系统设计的总线协议,采用一主多从的结构。所有的从机并联在总线上,通过总线实现主从间的通信,并获得工作的电能。总线仅由一对双绞线构成,工作电压为24 V,由Meter-Bus主机提供。下行通信采用电压调制方式,上行通信采用电流调制的方法。
1.2 光电直读表头
光电直读技术是水表自动抄表系统中的一项重要突破。基于该技术水表的水量计量仍由传统的流量计式测量装置构成,读数也仍然可以采用人工方式完成。但它在传统的阿拉伯数字读数装置之外,增加了用黑白条印制的格雷码。格雷码和阿拉伯数字被印制在同一个桶装字轮上,且具有一一对应关系,读出格雷码所表示的数量就相当于读出了阿拉伯数字的大小,也就是读出了水量计量装置输出的水量值。因此可以采用单片机通过光电技术来读取黑白条表示的格雷码,从而实现自动抄表。该设计采用了单片机,并具有Meter-Bus接口光电直读水表表头模块,将水表数据以ASCII码读出,给GSM模块对信息的传输和MCU对数据的加密提供方便。
1.3 GSM通信网络
GSM(Global System of Mobile Communication,全球移动通讯系统)网络覆盖范围广、不需建立新基站、通信质量高。采用GSM短信抄表不占用语音信道,费用低,投资小,简单可靠,且不受距离限制。因此,该设计使用内核为TC35i(Siemens)的GSM MODEM,微控制器通过AT指令与其通信,利用GSM短信进行收发数据,实现远程抄表。1.4 关于微控制器的考虑
系统的所有模块的工作方式为“长时间休眠,短时间工作”。经过斟酌,选择NXP公司的ARM7内核的LPC2132作为主控器。原因如下:集成了实时时钟功能(RTC),能在CPU休眠时保持计时的功能,并能在设定的时刻通过中断唤醒CPU;功耗甚小,休眠时电流仅10μA左右;工作电流仅在1 mA/MIPS以下;含有足够控制GSM模块和存储历史数据所需的RAM。
2 系统加密算法和分析
2.1 数据加密算法
GSM通信网络的安全保障离不开加密理论的支持。从应用角度看,信息的安全需要保密、防篡改、防伪造等保障目标。而对应到数据加密理论,这些目标可由对称加密、非对称加密、散列等算法结合应用来实现。
对称加密算法的加密和解密使用同一个密钥,相对非对称加密算法密码长度较短(56 b,64 b或128 b)、加密速度快。最为普及和典型的是DES算法;非对称加密算法有两个密钥,一个公开,一个保密,因此一个做公钥,一个做密钥,该算法运算量大,与对称加密算法相比,加解密速度慢,不适合大量数据加解密,只适合小量数据加解密。典型的算法有RSA算法、椭圆函数加密算法等;散列函数是对明文运算后,可以生成一个定长的摘要,明文发生改变后摘要值变化很大,该函数是一个单向函数,从明文计算出摘要是很容易的,但从摘要计算出明文是不可能的。典型的算法有MD5,SHA等。
2.2 系统加密分析
上面提到的几种算法已经得到了广泛应用,但是在以微控制器为处理器的系统中,他们就显得很复杂,CPU运算速度不能满足其要求,占用ROM和RAM的资源较多,影响系统的响应速度。因此,针对以ARM7为控制器,数据发送时间短,安全性要求不是很高的系统,很有必要设计一种简单适用的加密方法提高系统的安全性。根据系统要求,考虑用对称加密的方法来实现对数据短信的加密。它的两个基本要素为加密算法和加密密钥。加密算法主要由插入随机数、字符置换、字符映射和异或等组成。加密密钥由计算机终控端生成,而且密钥可以随时改变,通过GSM模块发送。
3 系统加密过程
该设计对短信加密的思路为:首先根据短信原始内容计算出16位CRC校验码,16位校验码用其十六进制值对应的四字节ASCII表示,放在原始内容末尾,然后对包含原始内容和校验码的字符串再进行加密,根据生成的密文再次生成CRC校验码,置于密文末尾,最后发送出去。主要包括插人随机数、字节置换、异或和字节映射四个过程。
3.1 密钥
该系统使用对称加密的方法,加密算法和密钥只需保密其一即可使密文无法解读。但由于加密算法需要精心设计并经过大量分析验证,因此实际应用中优秀的算法并不多,而且越是大量应用且公开的加密算法,越能表明更高的安全性。因此只要妥善保密好有限长度的密钥,就能使无限长度的通信数据得到保密。对称加密双方使用同一个密钥加密解密,此密钥由计算机终端通过GSM模块发送。对于本来就存在安全隐患的GSM网络来说,最好的方法就是随时改变密钥。因此考虑用32 B随机数作为密钥,此密钥可以由计算机管理员随机输入或者用PC机采用随机数生成算法生成。
3.2 加密算法
(1)CRC校验码
CRC循环校验码主要用来校验发送的数据是否可靠,如果不可靠就丢弃重发或修复。CRC校验码主要由信息码和校验码组成。如果CRC校验码长度为nb,信息码长为kb,就称(n,k)码。它的编码规则为:首先将信息码左移(n-k)位,然后用一个生成多项式g(x)(二进制数)用模2除移位后的式子,余数就作为校验码。该设计中GSM模块的一条短信最长为160个ASCII字符,加上短信明文的长度,考虑到长度太长延时较为严重,因此选择标准CRC生成算法CRC-CCITT,其多项式为:CRC-CCITT=X16+X12+X5+1。
(2)插入随机数
从原始明文中依次取出一个字节,若该字节的ASCII值模3余0,则在该字节后插入3个随机数;若该字节的ASCII值模3余2,则在该字节后插入2个随机数;若该字节的ASCII值模3余1,则在该字节后插入1个随机数,随机数种子选取各种与当前系统状态相关的数值。插入的随机数对应的ASCII的平均值应尽量与原明文内容的平均值相近,以增加破解的难度。根据系统短信的格式,如前缀、读表数据、读表时间、CRC校验码等,长度为20 B,那么经过这一步操作之后,字符串最短长度为40 B,最长为80 B,这样字符串的长度在40~80 B之间,不确定性大大增加。
(3)字节置换
将上一步生成的字符串第一个字节的高四位和最后一个字节的低四位交换,第二字节高四位和倒数第二字节低四位交换,依次类推,生成字符串;此时,若字符串长度为偶数,将相邻两字节高四位与高四位交换,低四位与低四位交换,生成新字符串。若字符串为奇数,将第一个字节的高四位、低四位和最后一个字节高四位,低四位对应交换,将第二个字节的高四位、低四位和倒数第二个高四位、低四位对应交换,依次类推,最中间一个高四位与低四位交换,生成字符串,此时字符串长度不变。
(4)异或
先将32 b密钥与12 b硬件ID号循环异或,即密钥的第n个字节与ID号的第n%12个字节异或,得到长度为32 b的字符串密钥。然后再将上一步产生的字符串与这个32 b的字符串密钥再做同样的循环异或,即字符串的第n个字节与32 b字符串的第n%32个字节异或。经过两次双层循环异或,生成更加混乱的字符串,此时字符串长度仍然不变。
(5)字节映射
依次取出上步生成字符串的一个字节,若该字节对应的ASCII值小于32或者大于95,例如0x1A,则将该字节拆分为两字节,两字节的低四位分别为该字节的高四位和低四位,两字节的高四位分别为0110,0111,即生成0x61,0x7A;这里的两个字节的高四位取值要尽量接近,但应满足与低四位组合后他们的ASCII值与不拆分字节对应的值不在一个范围之内;若该字节值在32~95B之间,则保留不变,经过此种映射后,字符串长度范围由原来的40~80 B变为40~160 B,字符长度的不确定性进一步增加,系统的安全性进一步提高。
最后根据生成的字符串计算16位校验码,置于字符串末尾,生成最终的密文发送出去。以上所有加密的过程均可逆,所以解密过程为上述过程的逆过程,首先根据CRC校验码判断密文传输是否有误,然后解密,根据解密后的明文获得水表数据。
4 安全性分析
由于加解密使用的密钥在不停地改变,本来密钥的保密性就很强,使得一些统计工具就无法发挥作用。密文的字符串由0~9和A~F共16个字符组成,假如采用暴力穷举法进行破解,若计算机的主频为3.0 GHz,取字符串长度为15,用1台计算机进行破解,时间T=1615/(24×3 600×365×3×109)≈12年,若采用100台计算机联网同时破解,字符长度仅增加2位,T=12×162/100≈30年,恐怕没有谁具有如此的耐心去进行此项工作。而密文字节长度在40~160 B之间,那么破解的时间将会更长。
由此可见,此种简单实用的加密方案将系统的安全性大大提高。
5 结语
采用GSM无线技术进行远程水表抄表,节省了大量的人力财力,提高了抄表的简易性、实时性和可靠性;然而由于GSM通信网络存在安全隐患,在以MCU为处理器的嵌入式系统中,已有复杂的加密算法却无法使用,使得系统的安全性大大降低。不过对于这种特殊的系统,采用本文提及的短信加密的方法,提高了系统的安全性,且方法简单实用,占用资源少,加解密速度快,适合推广。