摘 要: 介紹一種基于RTX51 TINY的加密短消息" title="短消息">短消息通信系統(tǒng)" title="通信系統(tǒng)">通信系統(tǒng),,可以實現(xiàn)手機與手機以及手機與計算機之間的加密短消息通信,。
關鍵詞: 嵌入式操作系統(tǒng) RTX51 TINY 加密短消息
短消息服務,,簡稱SMS(Short Message Service)。由于其方便,、快捷,、收費低廉,使得其應用越來越廣泛,,一些成功的短信服務已經形成大規(guī)模的創(chuàng)收業(yè)務,。在利用短消息技術實現(xiàn)手機銀行、手機炒股時,,需要一定的信息安全技術來保護短消息所傳輸?shù)拿舾袛?shù)據(jù)的安全,。一種常用的技術就是短消息加密技術,即將所傳數(shù)據(jù)加密之后進行傳輸,。
加密短消息的通信技術有多種,,常用的方法有三種。一種是利用計算機實現(xiàn),,在發(fā)送端,,通過運行在計算機中的軟件對短消息進行加密,然后通過發(fā)送裝置發(fā)送,,而在接收端,,接收裝置接收到加密的短消息后,傳送給計算機,,再通過相應的軟件進行解密,。這種方式實際是將短消息作為數(shù)據(jù)通信的載體使用,只能實現(xiàn)計算機與計算機之間的加密短消息通信,,而只擁有手機的個人用戶很難使用此方式,。另一種是將手機現(xiàn)有的SIM卡升級成STK卡,然后通過STK的編程實現(xiàn)加密短消息的通信,。通過STK卡的編程,,在手機菜單目錄中增加了使用加密短消息通信的相應增值服務項目,用戶使用這些項目就可以實現(xiàn)加密短消息的收發(fā),。這種方式需要手機用戶將SIM卡升級成STK卡,,而且只能使用相應的增值服務項目。第三種方式是通過基于手機操作系統(tǒng)" title="手機操作系統(tǒng)">手機操作系統(tǒng)的軟件開發(fā)來實現(xiàn),,針對相應的手機操作系統(tǒng),,編程實現(xiàn)加密短消息通信軟件模塊,然后下載到手機中,,用戶使用此模塊實現(xiàn)加密短消息通信,。此種方式個人用戶使用最方便,但是對手機有相應要求,,例如Silicon Village公司的Fortress SMS加密短消息通信系統(tǒng),,就需要基于Symbian V6手機操作系統(tǒng)的手機,如Nokia 7650手機,。
本文介紹一種基于單片機的加密短消息通信系統(tǒng),。系統(tǒng)的核心是一個運行RTX51 TINY嵌入式實時操作系統(tǒng)的單片機,與手機的控制端口進行通信,,控制手機的短消息操作,,實現(xiàn)了手機與手機、手機與計算機以及計算機之間的加密短消息通信,。
1 系統(tǒng)組成
實現(xiàn)手機與手機,、手機與計算機以及計算機之間的加密短消息通信,既方便個人用戶也方便企業(yè)用戶的使用,。系統(tǒng)的組成分為手機端與計算機端,。手機端所完成的主要功能是對發(fā)送短消息的加密以及接收短消息的解密。手機端并不需要對短消息進行編輯,,相應的編輯工作通過手機來完成,,這就減少了單片機系統(tǒng)" title="單片機系統(tǒng)">單片機系統(tǒng)的硬件電路,使得單片機系統(tǒng)不需要設計鍵盤和顯示部分,,也就保證了手機端設備小型化設計的要求,。
手機端操作分成短消息的加密發(fā)送與接收解密兩部分:
(1)發(fā)送加密短消息
用戶在使用手機端設備發(fā)送加密短消息時,,首先用手機編輯一條短消息,此條短消息是未加密的明文短消息,,用戶不將其發(fā)送出去,,而是存入發(fā)件箱;然后,,手機端設備運行加密操作,,將存在發(fā)件箱中未發(fā)出的明文短消息進行加密,加密之后再發(fā)送,,完成發(fā)送操作,。
(2)接收加密短消息
當手機接收到加密的短消息后,用戶如果直接讀取,,則在收件箱中會有一條不可識別的密文短消息,。此時,運行手機端設備進行解密操作,,手機端設備從手機收件箱中讀取密文短消息進行解密,。解密之后將明文短消息存入手機的發(fā)件箱中,用戶從發(fā)件箱中就可以讀取到解密之后的明文短消息,。
計算機端的核心是運行在計算機中的短消息加解密" title="加解密">加解密軟件,通過VC編程實現(xiàn),。由于不受系統(tǒng)資源的限制,計算機端軟件功能較強大,,不僅可以實現(xiàn)短消息的加密發(fā)送,、接收解密,還可以對手機收件箱,、發(fā)件箱,、已發(fā)件箱內的短消息進行管理。在計算機本地還可以建立通信錄,、短信數(shù)據(jù)庫,,實現(xiàn)短消息的群發(fā)。
2 加密短消息實現(xiàn)原理
單片機系統(tǒng)控制手機進行短消息收發(fā)的原理實際上是利用手機的控制端口向手機發(fā)出一系列的AT命令,,達到控制手機收發(fā)短消息的目的,。單片機所連接的控制端口一般為串行異步接口,可以是紅外連接方式也可以是電纜連接方式,,本系統(tǒng)采用電纜方式進行連接,,通信速率與所選用手機的型號相關。
所用的AT指令是GSM07.05[1]中所規(guī)定的AT指令,。該指令集由歐洲通信技術秀員會ETSI(European Telecommunications Standards Institute)發(fā)布,,其中包含了收發(fā)SMS的相應指令。其主要指令如表1所示,。
在發(fā)送短消息前,,首先通過AT+CMGF命令選擇短消息的格式,。短消息的格式一般有TEXT與PDU兩種,PDU格式應用最為廣泛,,基本上全國所有的電信局都支持PDU格式的短消息業(yè)務,。PDU格式相當于一個數(shù)據(jù)包,也方便實現(xiàn)短消息的加解密,。本系統(tǒng)采用PDU格式收發(fā)短消息,。
PDU格式的短消息數(shù)據(jù)包分為兩種,,一種為SMS-SUBMIT,一種為SMS-DELIVER,。SMS-SUBMIT為手機發(fā)送的PDU數(shù)據(jù)包格式,SMS-DELIVER為手機接收的PDU數(shù)據(jù)包格式,。如圖1所示,。
其中SMSC為短消息中心號碼,F(xiàn)O為首位,,MR為信息類型,,DA為被叫號碼,PID為協(xié)議標識,,DCS為編碼方案,,VP為有效期,OA為發(fā)送號碼,,SCTS為發(fā)送時間,,UDL為用戶數(shù)據(jù)長度,UD為用戶數(shù)據(jù),。詳細內容請參見GSM03.40[2],。
進行加密短消息通信時,需要對SMS-SUBMIT格式的PDU數(shù)據(jù)包進行加密,,對接收的SMS-DELIVER格式的PDU數(shù)據(jù)包進行解密,。整個加密與解密操作只能對UD,也就是對用戶數(shù)據(jù)進行操作,,不能對PDU數(shù)據(jù)包中的其他數(shù)據(jù)進行操作,,以免造成數(shù)據(jù)格式不正確,無法進行短消息的收發(fā),。
短信加密算法可以采用用戶自定義的加密算法,,也可以用DES、Rijndael等標準算法,。但特別需要強調的是,,用戶數(shù)據(jù)需要進行十六進制編碼后才能正確傳輸。無論選用何種加密算法,,當完成對用戶數(shù)據(jù)的加密操作后,,需要將加密后的數(shù)據(jù)進行十六進制編碼,,然后發(fā)送。解密前,,需要先進行十六進制的解碼,,然后再解密。
3 基于RTX51 TINY的單片機系統(tǒng)設計
RTX51是德國KEIL公司開發(fā)的一種應用于8051系列單片機上的實時多任務嵌入式操作系統(tǒng),。采用它可以簡化復雜的軟件設計,,縮短項目開發(fā)時間。短消息加密通信系統(tǒng)的手機端設備,,需要處理的數(shù)據(jù)量大,,還要實現(xiàn)較復雜的加解密算法,但對系統(tǒng)的實時性要求不強,,適合選用RTX51進行軟件的開發(fā),。
RTX51有兩個版本:RTX51 FULL與RTX51 TINY。RTX51 TINY是RTX51 FULL的一個子集,,通過時間片輪詢方式,,可以支持多達16個任務,任務之間可以進行信號傳遞,,已經滿足手機端設備的需要,。
3.1 系統(tǒng)硬件組成
由于一條短消息需要占用幾十到一百多字節(jié)的存貯空間,所以需要單片機系統(tǒng)對進行外部存貯器的擴展,。為了與手機接口的電平匹配,,還需要加電平轉換電路。整個單片機系統(tǒng)以AT89C52為核心,,外接6264(8K RAM)進行數(shù)據(jù)存貯器擴展,,以74HC04進行電平轉換,組成框圖如圖2所示,。
3.2 系統(tǒng)軟件設計
軟件的核心為串行數(shù)據(jù)通信處理與加解密算法,。為了保證串行數(shù)據(jù)通信的可靠性,采用中斷方式而不采用查詢方式處理串行口,,并編寫了相應的處理函數(shù),。加解密算法與計算機端軟件保持一致,也通過相應的子函數(shù)實現(xiàn),。復位后,,首先進行系統(tǒng)初始化,然后啟動相應的處理任務,,連接手機并監(jiān)視按鍵與串行口,,對命令進行實時處理。系統(tǒng)軟件結構如圖3所示,。
系統(tǒng)任務分配如下:
(1)任務0:TASK_INI,,系統(tǒng)初始化并啟動其他全部任務,;
(2)任務1:TASK_CONECTPHONE,連接手機,,判斷手機是否正確,,并對手機進行初始化;
(3)任務2:TASK_SEND_AT,,SMS短消息控制命令發(fā)送任務,,向串行口發(fā)送AT命令;
(4)任務3:TASK_GET_DATA,,從串行口接收數(shù)據(jù),,存入緩沖區(qū),當監(jiān)測到特征字符后,,調用數(shù)據(jù)處理任務對數(shù)據(jù)進行處理,;
(5)任務4:TASK_PROCESS_DATA,,對接收到的數(shù)據(jù)進行處理,,并調用加解密函數(shù)實現(xiàn)SMS的加密與解密;
(6)任務5:TASK_KEY,,輸入按鍵處理,;
(7)任務6:TASK_ERROR,錯誤處理,。
在程序調試階段,,發(fā)現(xiàn)由于串行口數(shù)據(jù)接收的實時性要求高,而RTX51 TINY不支持任務的優(yōu)先級,,如果在一個任務中完成數(shù)據(jù)的接收與處理,,則會由于處理速度慢造成接收緩沖區(qū)的溢出。所以將數(shù)據(jù)的接收與處理分在兩個任務中完成,,數(shù)據(jù)接收任務負責數(shù)據(jù)的接收,,并將接收數(shù)據(jù)存入緩沖區(qū),只有當監(jiān)測到特征字符后,,才調用數(shù)據(jù)處理任務對數(shù)據(jù)進行處理,。
為了對PDU數(shù)據(jù)包進行處理,并且完成加密解密操作,,系統(tǒng)主要編寫了以下函數(shù):
(1)CHAR XDATA *FIND_PDU(CHAR XDATA *P):從接收數(shù)據(jù)緩沖區(qū)中查找PDU數(shù)據(jù)包,;
(2)CHAR XDATA *PROCESS_SMS_SUBMIT(CHAR XDATA *P):處理SMS-SUBMIT格式的PDU數(shù)據(jù)包;
(3)CHAR XDATA *PROCESS_SMS_DELIVER(CHAR XDATA *P):處理SMS-DELIVER格式的PDU數(shù)據(jù)包,;
(4)VOID ENCODE(CHAR XDATA *P,INT LEN):加密函數(shù),;
(5)VOID DECODE(CHAR XDATA *P,INT LEN):解密函數(shù);
(6)VOID CHAR2HEX(CHAR XDATA *P,INT LEN):十六進制編碼,;
(7)VOID HEX2CHAR(CHAR XDATA *P,INT LEN):十六進制解碼,;
(8)SERIAL( ) INTERRUPT 4:串行口中斷處理函數(shù),。
加密短消息通信系統(tǒng)的應用廣泛,在金融,、股票,、電子商務、醫(yī)療,、數(shù)據(jù)庫安全,、用戶認證以及其他需要保證短消息安全的應用中,都需要加密短消息通信系統(tǒng),。本文介紹的加密短消息通信系統(tǒng),,由于是通過手機的控制端口控制手機進行加密短消息的收發(fā),對手機的硬件沒有具體的要求,。也就是說即不需要將SIM卡進行升級,,也不要求一定是采用某種手機操作系統(tǒng)的手機。這方便了已經擁有手機的用戶的使用,,便于系統(tǒng)的推廣,。
參考文獻
1 GSM07.05. Digital cellular telecommunication system(Phase 2);Use of Data Terminal Equipment-Data Circuit terminating Equipment (DTE-DCE) interface for Short Message Service (SMS) and Cell Broadcast Service (CBS). [EB/OL]
2 GSM 03.40. Digital cellular telecommunications system(Phase 2+);Technical realization of the Short Message Service(SMS)Point-to-Point(PP). [EB/OL]
3 劉明路,王亮生.基于RTX51的單片機軟件設計[J].單片機與嵌入式系統(tǒng)應用, 2002;(12)
4 劉玉宏.KEIL RTX51 TINY內核的分析與應用[J].單片機與嵌入式系統(tǒng)應用, 2004;(1)
5 徐愛鈞,,彭秀華.單片機高級語言C51 Windows環(huán)境編程與應用[M]. 北京:電子工業(yè)出版社,,2001