短消息服务,简称SMS(Short Message Service)。由于其方便、快捷、收费低廉,使得其应用越来越广泛,一些成功的短信服务已经形成大规模的创收业务。在利用短消息技术实现手机银行、手机炒股时,需要一定的信息安全技术来保护短消息所传输的敏感数据的安全。一种常用的技术就是短消息加密技术,即将所传数据加密之后进行传播。
加密短消息的通信技术有多种,常用的方法有三种。一种是利用计算机实现,在发送端,通过运行在计算机中的软件对短消息进行加密,然后通过发送装置发送,而在接收端,接收装置接收到加密的短消息后,传送给计算机,再通过相应的软件进行解密。这种方式实际是将短消息作为数据通信的载体使用,只能实现计算机与计算机之间的加密短消息通信,而只拥有手机的个人用户很难使用此方式。另一种是将手机现有的SIM卡升级成STK卡,然后通过STK的编程实现加密短消息的通信。通过STK卡的编程,在手机菜单目录中增加了使用加密短消息通信的相应增了使用加密密短消息通信的相应增值服务项目,用记使用这些项目就可以实现加密短消息的收发。这种方式需要手机用户将SIM卡升级成STK卡,而且只能使用相应的增值服务项目。第三种方法是通过基于手机操作系统的软件开来来实现,针对相应的手机操作系统,编程实现加密短消息通信软件模块,然后下载到手机中,用户使用此模块实现加密短消息通信。此种方式个人用户使用最方便,但是对手机有相应要求,例如Silicov Village公司的Fortress SMS加密短消息通信系统,就需要基于SymbianV6手机操作系统的手机,如Nokia 7650手机。
本文介绍一种基于单片机的加密短消息通信系统。系统的核心是一个运行RTX51 TINY嵌入实时操作系统的单片机,与手机的控制端口进行通信,控制手机的短消息操作,实现了手机与手机、手机与计算机以及计算机之间的加密短消息通信。
1 系统组成
实现手机与手机、手机与计算机以及计算机之间的加密短消息通信,既方便个人用户也方便企业用户的使用。系统的组成分为手机端与计算机端。手机端所完成的主要功能是对发送短消息的加密以及接收短消息的解密。手机端并不需要对短消息进行编程,相应的编辑工作通过手机来完成,这就减少了单片机系统的硬件电路,使得单片机系统不需要设计键盘和显示部分,也就保证了手机端设备小型化设计的要求。
手机端操作分成短消息的加密发送与接收解密两部分:
(1) 送加密短消息
用户在使用手机端设备发送加密短消息时,首先用手机编辑一条短消息,此条短消息 是未加密的明文短消息,用户不将其发送出去,而是存入发件箱;然后,手机端设备运行加密操作,将存在发件箱中未发出的明文短消息进行加密,加密之后再发送,完成发送操作。
(2)接收加密短消息
当手机接收到加密的短消息后,用户如果直接读取,则在收件箱中会有一条不可识别的密文短消息。此时,运行手机端设备进行解密操作,手机端设备从手机收件上箱中读取密文件短消息进行解密。解密之后将明文短消息存入手机的发件箱中,用户从发件箱中就可以读取到解密之后的明文短消息。
计算机端的核心是运行在计算机中的短消息加解密软件,通过VC编程实现。由于不受系统资源的限制,计算机端软件功能较强大,不仅可以实现短消息的加密发送、接收解密,还可以对手机收件箱、发件箱、已发件箱内的短消息进行管理。在计算机本地还可以建立通信录、短信数据库,实现短消息的群发。
2 加密短消息实现原理
单片机系统控制手机进行短消息收发的原理实际上是利用手机的控制端口向手机发出一系列的AT命令,达到控制手机收发短消息的目的。单片机所连接的控制端口一般为串行异步接口,可以是红外连接方式也可以是电缆连接方式,本系统采用电缆方式进行连接,通信速率与所选用手机的型号相关。
所用的AT指令是GSM07.05中所规定的AT指令。该指令集由欧洲通信技术秀员会ETSI(European Telecommunieations Standards Institute)发布,其中包含了收发SMS的相应指令。其主要指令如表1所示。
在发送短消息前,首先通信AT+CMGF命令选择短消息的格式。短消息的格式一般有TEXT与PDU两种,PDU格式应用最为广泛,基本上全国所有的电信局都支持PDU格式的短消息业务。PDU格式相当于一个数据包,也方便实现短消息的加解密。本系统采用PDU格式收录短消息。
PDU格式的短消息数据包分为两种,一种为SMSSUBMIT,一种为SMS-DELIVER。SMS-SUBMIT为手机发送的PDU数据包格式,SMS-DELIVER为手机接收的PDU数据包格式。
其中SMSC为短消息中心号码,F0为首位,MR为信息类型,DA为被叫号码,PID为协议标识,DCS为编码方案,VP为有效期,OA为发送号码,SCTS为发送时间,UDL为用户数据长度,UD为用户数据。详细内容请参见GSM03.40。
进行加密短消息通信时,需要对SMS-SUBMIT格式由PDU数据包进行加密,对接收的SMS-DELIVER格式的PDU数据包进行解密。整个加密与解密操作只能对UD,也就是对用户数据进行操作,不能对PDU数据包中的其他数据进行操作,以免造成数据格式不正确,无法进行短消息的收发。
短信加密算法可以采用用户自定义的加密算法,也可以用DES、Rijndael等标准算法。但特别需要强调的是,用户数据需要进行十六进制编码后才能正确传输。无论选用何种加密算法,当完成对用户数据的加密操作后,需要将加密后的数据进行十六进制编码,然后发送。解密前,需要先进行十六进制的解码,然后再解密。
3 基于RTX51 TINY的单片机系统设计
RTX51是德国KEIL公司开发的一种应用于8051系列单片机上的实时多任务嵌入式操作系统。采用它可以简化复杂的软件设计。缩短项目开发时间。短消息加密通信系统的手机端设备,需要处理的数据量大,还要实现较复杂的加解密算法,但对系统的实时性要求不强,适合选用RTX51进行软件的开发。
RTX51有两个版本:RTX51 FULL与RTX51 TINY。RTX51 TINY是RTX51 FULL的一个子集,通过时间片轮询方式,可以支持多达16个任务,任务之间可以进行信号传递,已经满足手端设备的需要。
3.1 系统硬件组成
由于一条短消息需要占用几十到一百多字节的存贮空间,所以需要单片机系统对进行外部存贮器的扩展。为了与手机接口的电平匹配,还需要加电平转换电路。整个单片机系统以AT89C52为核心,外接6264(8KRAM)进行数据存贮器扩展,以74HC04进行电平转换,组成框图如图2所示。
3.2 系统软件设计
软件的核心为串行数据通信处理与加解密算法。为了保证串行数据通信的可靠性,采用中断方式而不采用查询方式处理串行口,并编写了相应的处理函数。加解密算法与计算机端软件保持一致,也通过相应的子函数实现。复位后,首先进行系统初始化,然后启动相尖的处理任务,连接手机并监视按键与串行口,对命令进行实时处理。
系统任务分配如下:
(1) 任务0:TASK_INT,系统初始化并启动其他全部任务;
(2) 任务1:TASK_CONECTPHONE,连接手机,判断手机是否正确,并对手机进行初始化;
(3) 任务2:TASK_SEND_AT,SMS短消息控制命令发送任务,向串行口发送AT命令;
(4) 任务3:TASK_GET_DATA,从串行口接收数据,存入缓冲区,当监测到特片字符后,调用数据处理任务对数据进行处理;
(5) 任务4:TASK_PROCESS_DATA,对接收到的数据进行处理,并调用加解密函数实现SMS的加密与解密;
(6) 任务5:TASK_KEY,输入按键处理;
(7) 任务6:TASK_ERROR,错误处理。
在程序调试阶段,发现由于串行口数据接收的实时性要求高,而RTX51 TINY不支持任务的优先级,如果在一个任务中完成数据的接收与处理,则会由于处理速度慢造成缓冲区的溢出。所以将数据的接收与处理分在两个任务中实现,数据接收任务负责数据的接收,并将接收数据存入缓冲区,只有当监测到特征字符后,才调用数据处理任务对数据进行处理。
为了对PDU数据包进行处理,并且完成加密解密操作,系统主要编写了以下函数:
(1) CHAR XDATA *FIND_PDU(CHAR XDATA *P):从接收数据缓冲区查找PDU数据包;
(2) CHAR XDATA *PROCESS_SMS_SUBMIF(CHAR XDATA *P):处理SMS_SUBMIT格式的PDU数据包;
(3) CHAR XDATA *PROCESS_SMS_DELIVER(CHAR XDATA *P):处理SMS_DELIVER格式的PDU数据包;
(4) VOID ENCODE (CHAR XDATA *P,INT LEN):加密函数;
(5) VOID DECODE (CHAR XDATA *P,INT LEN):解密函数;
(6) VOID CHAR2HEX(CHAR XDATA *P,INT LEN):十六进制编码;
(7) VOID HEX2CHAR(CHAR XDATA *P,INT LEN):十六进制解码;
(8) SERIAL()INTERRUPT 4:串行口中断处理函数。
加密短消息通信系统的应用广泛,在金融、股票、电子商务、医疗、数据库安全、用户认证以及其他需要保证短消息安全的应用中,都需要加密短消息通信系统。本文介绍的加密短消息通信系统,由于是通过手机的控制端口控制手机进行加密短消息的收发,对手机的硬件没有具体的要求。也就是说即不需要将SIM卡进行升级,也不要求一定是采用某种手机操作系统的手机。这方便了已经拥有手机的用户的使用,便于系统的推广。