其中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所示。
[!--empirenews.page--]
3.2 系统软件设计
软件的核心为串行数据通信处理与加解密算法。为了保证串行数据通信的可靠性,采用中断方式而不采用查询方式处理串行口,并编写了相应的处理函数。加解密算法与计算机端软件保持一致,也通过相应的子函数实现。复位后,首先进行系统初始化,然后启动相尖的处理任务,连接手机并监视按键与串行口,对命令进行实时处理。系统软件结构如图3所示。
系统任务分配如下:
(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卡进行升级,也不要求一定是采用某种手机操作系统的手机。这方便了已经拥有手机的用户的使用,便于系统的推广。