基于RTX51 TINY的加密短消息通信系統 作者: 時(shí)間:2007-03-09 來(lái)源:網(wǎng)絡(luò ) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對面交流海量資料庫查詢(xún) 收藏 摘要:介紹一種基于RTX51 TINY的加密短消息通信系統,可以實(shí)現手機與手機以及手機與計算機之間的加密短消息通信。 關(guān)鍵詞:嵌入式操作系統 RTX51 TINY 加密短消息 短消息服務(wù),簡(jiǎn)稱(chēng)SMS(Short Message Service)。由于其方便、快捷、收費低廉,使得其應用越來(lái)越廣泛,一些成功的短信服務(wù)已經(jīng)形成大規模的創(chuàng )收業(yè)務(wù)。在利用短消息技術(shù)實(shí)現手機銀行、手機炒股時(shí),需要一定的信息安全技術(shù)來(lái)保護短消息所傳輸的敏感數據的安全。一種常用的技術(shù)就是短消息加密技術(shù),即將所傳數據加密之后進(jìn)行傳播。 加密短消息的通信技術(shù)有多種,常用的方法有三種。一種是利用計算機實(shí)現,在發(fā)送端,通過(guò)運行在計算機中的軟件對短消息進(jìn)行加密,然后通過(guò)發(fā)送裝置發(fā)送,而在接收端,接收裝置接收到加密的短消息后,傳送給計算機,再通過(guò)相應的軟件進(jìn)行解密。這種方式實(shí)際是將短消息作為數據通信的載體使用,只能實(shí)現計算機與計算機之間的加密短消息通信,而只擁有手機的個(gè)人用戶(hù)很難使用此方式。另一種是將手機現有的SIM卡升級成STK卡,然后通過(guò)STK的編程實(shí)現加密短消息的通信。通過(guò)STK卡的編程,在手機菜單目錄中增加了使用加密短消息通信的相應增了使用加密密短消息通信的相應增值服務(wù)項目,用記使用這些項目就可以實(shí)現加密短消息的收發(fā)。這種方式需要手機用戶(hù)將SIM卡升級成STK卡,而且只能使用相應的增值服務(wù)項目。第三種方法是通過(guò)基于手機操作系統的軟件開(kāi)來(lái)來(lái)實(shí)現,針對相應的手機操作系統,編程實(shí)現加密短消息通信軟件模塊,然后下載到手機中,用戶(hù)使用此模塊實(shí)現加密短消息通信。此種方式個(gè)人用戶(hù)使用最方便,但是對手機有相應要求,例如Silicov Village公司的Fortress SMS加密短消息通信系統,就需要基于SymbianV6手機操作系統的手機,如Nokia 7650手機。 本文介紹一種基于單片機的加密短消息通信系統。系統的核心是一個(gè)運行RTX51 TINY嵌入實(shí)時(shí)操作系統的單片機,與手機的控制端口進(jìn)行通信,控制手機的短消息操作,實(shí)現了手機與手機、手機與計算機以及計算機之間的加密短消息通信。 1 系統組成 實(shí)現手機與手機、手機與計算機以及計算機之間的加密短消息通信,既方便個(gè)人用戶(hù)也方便企業(yè)用戶(hù)的使用。系統的組成分為手機端與計算機端。手機端所完成的主要功能是對發(fā)送短消息的加密以及接收短消息的解密。手機端并不需要對短消息進(jìn)行編程,相應的編輯工作通過(guò)手機來(lái)完成,這就減少了單片機系統的硬件電路,使得單片機系統不需要設計鍵盤(pán)和顯示部分,也就保證了手機端設備小型化設計的要求。 手機端操作分成短消息的加密發(fā)送與接收解密兩部分: (1) 送加密短消息 用戶(hù)在使用手機端設備發(fā)送加密短消息時(shí),首先用手機編輯一條短消息,此條短消息 是未加密的明文短消息,用戶(hù)不將其發(fā)送出去,而是存入發(fā)件箱;然后,手機端設備運行加密操作,將存在發(fā)件箱中未發(fā)出的明文短消息進(jìn)行加密,加密之后再發(fā)送,完成發(fā)送操作。 (2)接收加密短消息 當手機接收到加密的短消息后,用戶(hù)如果直接讀取,則在收件箱中會(huì )有一條不可識別的密文短消息。此時(shí),運行手機端設備進(jìn)行解密操作,手機端設備從手機收件上箱中讀取密文件短消息進(jìn)行解密。解密之后將明文短消息存入手機的發(fā)件箱中,用戶(hù)從發(fā)件箱中就可以讀取到解密之后的明文短消息。 計算機端的核心是運行在計算機中的短消息加解密軟件,通過(guò)VC編程實(shí)現。由于不受系統資源的限制,計算機端軟件功能較強大,不僅可以實(shí)現短消息的加密發(fā)送、接收解密,還可以對手機收件箱、發(fā)件箱、已發(fā)件箱內的短消息進(jìn)行管理。在計算機本地還可以建立通信錄、短信數據庫,實(shí)現短消息的群發(fā)。 2 加密短消息實(shí)現原理 單片機系統控制手機進(jìn)行短消息收發(fā)的原理實(shí)際上是利用手機的控制端口向手機發(fā)出一系列的AT命令,達到控制手機收發(fā)短消息的目的。單片機所連接的控制端口一般為串行異步接口,可以是紅外連接方式也可以是電纜連接方式,本系統采用電纜方式進(jìn)行連接,通信速率與所選用手機的型號相關(guān)。 所用的AT指令是GSM07.05中所規定的AT指令。該指令集由歐洲通信技術(shù)秀員會(huì )ETSI(European Telecommunieations Standards Institute)發(fā)布,其中包含了收發(fā)SMS的相應指令。其主要指令如表1所示。 表1 主要的AT指令 AT+CMGF 選擇短消息信息格式“0”——PDU格式 AT+CMGS 發(fā)送短消息 AT+CMGW 向SIM卡內存中寫(xiě)入短消息 AT+CMGL 列出SIM卡內存中的短消息 AT+CMGR 讀短消息 AT+CMGD 刪除短消息 AT+CSCA 短消息服務(wù)中心地址 AT+CPMS 選擇短消息內存“SM”——SIM卡 AT+CNMI 顯示新收到的短消息 在發(fā)送短消息前,首先通信AT+CMGF命令選擇短消息的格式。短消息的格式一般有TEXT與PDU兩種,PDU格式應用最為廣泛,基本上全國所有的電信局都支持PDU格式的短消息業(yè)務(wù)。PDU格式相當于一個(gè)數據包,也方便實(shí)現短消息的加解密。本系統采用PDU格式收錄短消息。 PDU格式的短消息數據包分為兩種,一種為SMSSUBMIT,一種為SMS-DELIVER。SMS-SUBMIT為手機發(fā)送的PDU數據包格式,SMS-DELIVER為手機接收的PDU數據包格式。如圖1所示。其中SMSC為短消息中心號碼,F0為首位,MR為信息類(lèi)型,DA為被叫號碼,PID為協(xié)議標識,DCS為編碼方案,VP為有效期,OA為發(fā)送號碼,SCTS為發(fā)送時(shí)間,UDL為用戶(hù)數據長(cháng)度,UD為用戶(hù)數據。詳細內容請參見(jiàn)GSM03.40。 進(jìn)行加密短消息通信時(shí),需要對SMS-SUBMIT格式由PDU數據包進(jìn)行加密,對接收的SMS-DELIVER格式的PDU數據包進(jìn)行解密。整個(gè)加密與解密操作只能對UD,也就是對用戶(hù)數據進(jìn)行操作,不能對PDU數據包中的其他數據進(jìn)行操作,以免造成數據格式不正確,無(wú)法進(jìn)行短消息的收發(fā)。 短信加密算法可以采用用戶(hù)自定義的加密算法,也可以用DES、Rijndael等標準算法。但特別需要強調的是,用戶(hù)數據需要進(jìn)行十六進(jìn)制編碼后才能正確傳輸。無(wú)論選用何種加密算法,當完成對用戶(hù)數據的加密操作后,需要將加密后的數據進(jìn)行十六進(jìn)制編碼,然后發(fā)送。解密前,需要先進(jìn)行十六進(jìn)制的解碼,然后再解密。 3 基于RTX51 TINY的單片機系統設計 RTX51是德國KEIL公司開(kāi)發(fā)的一種應用于8051系列單片機上的實(shí)時(shí)多任務(wù)嵌入式操作系統。采用它可以簡(jiǎn)化復雜的軟件設計??s短項目開(kāi)發(fā)時(shí)間。短消息加密通信系統的手機端設備,需要處理的數據量大,還要實(shí)現較復雜的加解密算法,但對系統的實(shí)時(shí)性要求不強,適合選用RTX51進(jìn)行軟件的開(kāi)發(fā)。 RTX51有兩個(gè)版本:RTX51 FULL與RTX51 TINY。RTX51 TINY是RTX51 FULL的一個(gè)子集,通過(guò)時(shí)間片輪詢(xún)方式,可以支持多達16個(gè)任務(wù),任務(wù)之間可以進(jìn)行信號傳遞,已經(jīng)滿(mǎn)足手端設備的需要。 3.1 系統硬件組成 由于一條短消息需要占用幾十到一百多字節的存貯空間,所以需要單片機系統對進(jìn)行外部存貯器的擴展。為了與手機接口的電平匹配,還需要加電平轉換電路。整個(gè)單片機系統以AT89C52為核心,外接6264(8KRAM)進(jìn)行數據存貯器擴展,以74HC04進(jìn)行電平轉換,組成框圖如圖2所示。3.2 系統軟件設計 軟件的核心為串行數據通信處理與加解密算法。為了保證串行數據通信的可靠性,采用中斷方式而不采用查詢(xún)方式處理串行口,并編寫(xiě)了相應的處理函數。加解密算法與計算機端軟件保持一致,也通過(guò)相應的子函數實(shí)現。復位后,首先進(jìn)行系統初始化,然后啟動(dòng)相尖的處理任務(wù),連接手機并監視按鍵與串行口,對命令進(jìn)行實(shí)時(shí)處理。系統軟件結構如圖3所示。 系統任務(wù)分配如下: (1) 任務(wù)0:TASK_INT,系統初始化并啟動(dòng)其他全部任務(wù); (2) 任務(wù)1:TASK_CONECTPHONE,連接手機,判斷手機是否正確,并對手機進(jìn)行初始化; (3) 任務(wù)2:TASK_SEND_AT,SMS短消息控制命令發(fā)送任務(wù),向串行口發(fā)送AT命令; (4) 任務(wù)3:TASK_GET_DATA,從串行口接收數據,存入緩沖區,當監測到特片字符后,調用數據處理任務(wù)對數據進(jìn)行處理; (5) 任務(wù)4:TASK_PROCESS_DATA,對接收到的數據進(jìn)行處理,并調用加解密函數實(shí)現SMS的加密與解密;(6) 任務(wù)5:TASK_KEY,輸入按鍵處理; (7) 任務(wù)6:TASK_ERROR,錯誤處理。 在程序調試階段,發(fā)現由于串行口數據接收的實(shí)時(shí)性要求高,而RTX51 TINY不支持任務(wù)的優(yōu)先級,如果在一個(gè)任務(wù)中完成數據的接收與處理,則會(huì )由于處理速度慢造成緩沖區的溢出。所以將數據的接收與處理分在兩個(gè)任務(wù)中實(shí)現,數據接收任務(wù)負責數據的接收,并將接收數據存入緩沖區,只有當監測到特征字符后,才調用數據處理任務(wù)對數據進(jìn)行處理。 為了對PDU數據包進(jìn)行處理,并且完成加密解密操作,系統主要編寫(xiě)了以下函數: (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):十六進(jìn)制編碼; (7) VOID HEX2CHAR(CHAR XDATA *P,INT LEN):十六進(jìn)制解碼; (8) SERIAL()INTERRUPT 4:串行口中斷處理函數。 加密短消息通信系統的應用廣泛,在金融、股票、電子商務(wù)、醫療、數據庫安全、用戶(hù)認證以及其他需要保證短消息安全的應用中,都需要加密短消息通信系統。本文介紹的加密短消息通信系統,由于是通過(guò)手機的控制端口控制手機進(jìn)行加密短消息的收發(fā),對手機的硬件沒(méi)有具體的要求。也就是說(shuō)即不需要將SIM卡進(jìn)行升級,也不要求一定是采用某種手機操作系統的手機。這方便了已經(jīng)擁有手機的用戶(hù)的使用,便于系統的推廣。 linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論