基于GSM的無線抄表系統(tǒng)安全性的設(shè)計
摘要:將GSM移動通信技術(shù)和Meter-Bus總線協(xié)議用于遠(yuǎn)程無線水表抄表系統(tǒng),可以對用戶用水量進(jìn)行有效的實時監(jiān)控,減少人力物力,簡化布線,實現(xiàn)數(shù)據(jù)和能量共同傳輸。為了實現(xiàn)遠(yuǎn)程無線抄表,采用光電直讀技術(shù)計量水表數(shù)據(jù),Meter-Bus總線讀取水表數(shù)據(jù),GSM通信網(wǎng)絡(luò)發(fā)送水表數(shù)據(jù)三者結(jié)合的方法,通過微控制器的綜合管理,得到穩(wěn)定可靠的遠(yuǎn)程無線抄表系統(tǒng);對數(shù)據(jù)短信采用對稱加密算法,CRC校驗、插入隨機(jī)數(shù)、異或、字節(jié)置換和映射的方法實施加密操作,提高了系統(tǒng)安全性,適合以MCU為核心的遠(yuǎn)程抄表系統(tǒng)。
關(guān)鍵詞:無線抄表系統(tǒng);光電直讀技術(shù);GSM;Meter-Bus;對稱加密
0 引言
隨著電子技術(shù),通信技術(shù)和傳感技術(shù)的不斷綜合發(fā)展,遠(yuǎn)程自動抄表系統(tǒng)應(yīng)運而生,尤其在近幾年發(fā)展十分迅猛。但目前國內(nèi)遠(yuǎn)程抄表系統(tǒng)一般采用有線方式,有線抄表系統(tǒng)供電困難,尤其在環(huán)境惡劣的水表窖井中更為不便。其功耗較大,檢修困難,一旦組網(wǎng),維護(hù)成本較高,這將對今后智能化、節(jié)約化小區(qū)的建設(shè)帶來極大不便,影響用戶正常生活。
針對上述問題,利用GSM通信網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程抄表,將用戶用水量以短信的形式發(fā)送到自來水公司,不但可以解決普通用戶水表的抄表問題,還可以對用水大戶進(jìn)行實時監(jiān)控,防止偷水和管道泄漏的發(fā)生。但是GSM網(wǎng)絡(luò)并沒有啟用A5對語音數(shù)據(jù)和信令進(jìn)行加密,現(xiàn)有的GSM網(wǎng)絡(luò)無法保障端到端之間的應(yīng)用層安全,在這種非定向的無線傳輸環(huán)境下傳送明文信息,很容易被人監(jiān)聽、冒用和篡改。用水大戶用水量較大,準(zhǔn)確的水表數(shù)據(jù)對自來水公司和用戶都非常重要,萬一在數(shù)據(jù)傳送過程中被人截獲篡改,將會給雙方造成很大的經(jīng)濟(jì)損失,因此很有必要對數(shù)據(jù)消息進(jìn)行加密,提高系統(tǒng)的安全性,確保數(shù)據(jù)傳送無誤。
針對上述問題,設(shè)計了基于GSM網(wǎng)絡(luò)的無線遠(yuǎn)程抄表系統(tǒng),給出了一套針對該系統(tǒng)數(shù)據(jù)加密的方法,提高了數(shù)據(jù)消息的可靠性。該方法簡單實用,占用CPU資源較少,適合在以MCU為核心的嵌入式系統(tǒng)中使用,對嵌入式在通信網(wǎng)絡(luò)中的應(yīng)用與普及具有參考意義。
1 無線抄表系統(tǒng)的基礎(chǔ)和總體設(shè)計
整個無線抄表系統(tǒng)包括光電直讀式水表表頭,Meter-Bus總線接口電路,GSM模塊,微控制器和自來水公司計算機(jī)終控端五大部分,如圖1所示。為了降低功耗,本設(shè)計中所有的模塊不是一直處于工作狀態(tài),各個模塊應(yīng)在微控制器的指揮下定時工作。即抄表系統(tǒng)的所有模塊的工作方式為“長時間休眠,短時間工作”。其中,休眠周期(小時、天、周、月)和加密密碼由管理員用計算機(jī)終控端通過GSM模塊發(fā)布。微控制器接收GSM模塊收的指令后,修改抄表周期和加密密碼。同時根據(jù)設(shè)定的抄表周期通過Meter-Bus接口電路控制光電直讀水表表頭讀取當(dāng)前的水量值,然后再以短信的形式用GSM通信網(wǎng)絡(luò)發(fā)給計算機(jī)終端,實現(xiàn)定時自動抄表。
1.1 Meter-Bus總線
目前大部分光電直讀水表通過Meter-Bus通信協(xié)議(歐洲標(biāo)準(zhǔn))實現(xiàn)組網(wǎng)。Meter-Bus是專為“三表”抄表系統(tǒng)設(shè)計的總線協(xié)議,采用一主多從的結(jié)構(gòu)。所有的從機(jī)并聯(lián)在總線上,通過總線實現(xiàn)主從間的通信,并獲得工作的電能??偩€僅由一對雙絞線構(gòu)成,工作電壓為24 V,由Meter-Bus主機(jī)提供。下行通信采用電壓調(diào)制方式,上行通信采用電流調(diào)制的方法。
1.2 光電直讀表頭
光電直讀技術(shù)是水表自動抄表系統(tǒng)中的一項重要突破。基于該技術(shù)水表的水量計量仍由傳統(tǒng)的流量計式測量裝置構(gòu)成,讀數(shù)也仍然可以采用人工方式完成。但它在傳統(tǒng)的阿拉伯?dāng)?shù)字讀數(shù)裝置之外,增加了用黑白條印制的格雷碼。格雷碼和阿拉伯?dāng)?shù)字被印制在同一個桶裝字輪上,且具有一一對應(yīng)關(guān)系,讀出格雷碼所表示的數(shù)量就相當(dāng)于讀出了阿拉伯?dāng)?shù)字的大小,也就是讀出了水量計量裝置輸出的水量值。因此可以采用單片機(jī)通過光電技術(shù)來讀取黑白條表示的格雷碼,從而實現(xiàn)自動抄表。該設(shè)計采用了單片機(jī),并具有Meter-Bus接口光電直讀水表表頭模塊,將水表數(shù)據(jù)以ASCII碼讀出,給GSM模塊對信息的傳輸和MCU對數(shù)據(jù)的加密提供方便。
1.3 GSM通信網(wǎng)絡(luò)
GSM(Global System of Mobile Communication,全球移動通訊系統(tǒng))網(wǎng)絡(luò)覆蓋范圍廣、不需建立新基站、通信質(zhì)量高。采用GSM短信抄表不占用語音信道,費用低,投資小,簡單可靠,且不受距離限制。因此,該設(shè)計使用內(nèi)核為TC35i(Siemens)的GSM MODEM,微控制器通過AT指令與其通信,利用GSM短信進(jìn)行收發(fā)數(shù)據(jù),實現(xiàn)遠(yuǎn)程抄表。
1.4 關(guān)于微控制器的考慮
系統(tǒng)的所有模塊的工作方式為“長時間休眠,短時間工作”。經(jīng)過斟酌,選擇NXP公司的ARM7內(nèi)核的LPC2132作為主控器。原因如下:集成了實時時鐘功能(RTC),能在CPU休眠時保持計時的功能,并能在設(shè)定的時刻通過中斷喚醒CPU;功耗甚小,休眠時電流僅10μA左右;工作電流僅在1 mA/MIPS以下;含有足夠控制GSM模塊和存儲歷史數(shù)據(jù)所需的RAM。
2 系統(tǒng)加密算法和分析
2.1 數(shù)據(jù)加密算法
GSM通信網(wǎng)絡(luò)的安全保障離不開加密理論的支持。從應(yīng)用角度看,信息的安全需要保密、防篡改、防偽造等保障目標(biāo)。而對應(yīng)到數(shù)據(jù)加密理論,這些目標(biāo)可由對稱加密、非對稱加密、散列等算法結(jié)合應(yīng)用來實現(xiàn)。
對稱加密算法的加密和解密使用同一個密鑰,相對非對稱加密算法密碼長度較短(56 b,64 b或128 b)、加密速度快。最為普及和典型的是DES算法;非對稱加密算法有兩個密鑰,一個公開,一個保密,因此一個做公鑰,一個做密鑰,該算法運算量大,與對稱加密算法相比,加解密速度慢,不適合大量數(shù)據(jù)加解密,只適合小量數(shù)據(jù)加解密。典型的算法有RSA算法、橢圓函數(shù)加密算法等;散列函數(shù)是對明文運算后,可以生成一個定長的摘要,明文發(fā)生改變后摘要值變化很大,該函數(shù)是一個單向函數(shù),從明文計算出摘要是很容易的,但從摘要計算出明文是不可能的。典型的算法有MD5,SHA等。
2.2 系統(tǒng)加密分析
上面提到的幾種算法已經(jīng)得到了廣泛應(yīng)用,但是在以微控制器為處理器的系統(tǒng)中,他們就顯得很復(fù)雜,CPU運算速度不能滿足其要求,占用ROM和RAM的資源較多,影響系統(tǒng)的響應(yīng)速度。因此,針對以ARM7為控制器,數(shù)據(jù)發(fā)送時間短,安全性要求不是很高的系統(tǒng),很有必要設(shè)計一種簡單適用的加密方法提高系統(tǒng)的安全性。根據(jù)系統(tǒng)要求,考慮用對稱加密的方法來實現(xiàn)對數(shù)據(jù)短信的加密。它的兩個基本要素為加密算法和加密密鑰。加密算法主要由插入隨機(jī)數(shù)、字符置換、字符映射和異或等組成。加密密鑰由計算機(jī)終控端生成,而且密鑰可以隨時改變,通過GSM模塊發(fā)送。
3 系統(tǒng)加密過程
該設(shè)計對短信加密的思路為:首先根據(jù)短信原始內(nèi)容計算出16位CRC校驗碼,16位校驗碼用其十六進(jìn)制值對應(yīng)的四字節(jié)ASCII表示,放在原始內(nèi)容末尾,然后對包含原始內(nèi)容和校驗碼的字符串再進(jìn)行加密,根據(jù)生成的密文再次生成CRC校驗碼,置于密文末尾,最后發(fā)送出去。主要包括插人隨機(jī)數(shù)、字節(jié)置換、異或和字節(jié)映射四個過程。
3.1 密鑰
該系統(tǒng)使用對稱加密的方法,加密算法和密鑰只需保密其一即可使密文無法解讀。但由于加密算法需要精心設(shè)計并經(jīng)過大量分析驗證,因此實際應(yīng)用中優(yōu)秀的算法并不多,而且越是大量應(yīng)用且公開的加密算法,越能表明更高的安全性。因此只要妥善保密好有限長度的密鑰,就能使無限長度的通信數(shù)據(jù)得到保密。對稱加密雙方使用同一個密鑰加密解密,此密鑰由計算機(jī)終端通過GSM模塊發(fā)送。對于本來就存在安全隱患的GSM網(wǎng)絡(luò)來說,最好的方法就是隨時改變密鑰。因此考慮用32 B隨機(jī)數(shù)作為密鑰,此密鑰可以由計算機(jī)管理員隨機(jī)輸入或者用PC機(jī)采用隨機(jī)數(shù)生成算法生成。
3.2 加密算法
(1)CRC校驗碼
CRC循環(huán)校驗碼主要用來校驗發(fā)送的數(shù)據(jù)是否可靠,如果不可靠就丟棄重發(fā)或修復(fù)。CRC校驗碼主要由信息碼和校驗碼組成。如果CRC校驗碼長度為nb,信息碼長為kb,就稱(n,k)碼。它的編碼規(guī)則為:首先將信息碼左移(n-k)位,然后用一個生成多項式g(x)(二進(jìn)制數(shù))用模2除移位后的式子,余數(shù)就作為校驗碼。該設(shè)計中GSM模塊的一條短信最長為160個ASCII字符,加上短信明文的長度,考慮到長度太長延時較為嚴(yán)重,因此選擇標(biāo)準(zhǔn)CRC生成算法CRC-CCITT,其多項式為:CRC-CCITT=X16+X12+X5+1。
(2)插入隨機(jī)數(shù)
從原始明文中依次取出一個字節(jié),若該字節(jié)的ASCII值模3余0,則在該字節(jié)后插入3個隨機(jī)數(shù);若該字節(jié)的ASCII值模3余2,則在該字節(jié)后插入2個隨機(jī)數(shù);若該字節(jié)的ASCII值模3余1,則在該字節(jié)后插入1個隨機(jī)數(shù),隨機(jī)數(shù)種子選取各種與當(dāng)前系統(tǒng)狀態(tài)相關(guān)的數(shù)值。插入的隨機(jī)數(shù)對應(yīng)的ASCII的平均值應(yīng)盡量與原明文內(nèi)容的平均值相近,以增加破解的難度。根據(jù)系統(tǒng)短信的格式,如前綴、讀表數(shù)據(jù)、讀表時間、CRC校驗碼等,長度為20 B,那么經(jīng)過這一步操作之后,字符串最短長度為40 B,最長為80 B,這樣字符串的長度在40~80 B之間,不確定性大大增加。
(3)字節(jié)置換
將上一步生成的字符串第一個字節(jié)的高四位和最后一個字節(jié)的低四位交換,第二字節(jié)高四位和倒數(shù)第二字節(jié)低四位交換,依次類推,生成字符串;此時,若字符串長度為偶數(shù),將相鄰兩字節(jié)高四位與高四位交換,低四位與低四位交換,生成新字符串。若字符串為奇數(shù),將第一個字節(jié)的高四位、低四位和最后一個字節(jié)高四位,低四位對應(yīng)交換,將第二個字節(jié)的高四位、低四位和倒數(shù)第二個高四位、低四位對應(yīng)交換,依次類推,最中間一個高四位與低四位交換,生成字符串,此時字符串長度不變。
(4)異或
先將32 b密鑰與12 b硬件ID號循環(huán)異或,即密鑰的第n個字節(jié)與ID號的第n%12個字節(jié)異或,得到長度為32 b的字符串密鑰。然后再將上一步產(chǎn)生的字符串與這個32 b的字符串密鑰再做同樣的循環(huán)異或,即字符串的第n個字節(jié)與32 b字符串的第n%32個字節(jié)異或。經(jīng)過兩次雙層循環(huán)異或,生成更加混亂的字符串,此時字符串長度仍然不變。
(5)字節(jié)映射
依次取出上步生成字符串的一個字節(jié),若該字節(jié)對應(yīng)的ASCII值小于32或者大于95,例如0x1A,則將該字節(jié)拆分為兩字節(jié),兩字節(jié)的低四位分別為該字節(jié)的高四位和低四位,兩字節(jié)的高四位分別為0110,0111,即生成0x61,0x7A;這里的兩個字節(jié)的高四位取值要盡量接近,但應(yīng)滿足與低四位組合后他們的ASCII值與不拆分字節(jié)對應(yīng)的值不在一個范圍之內(nèi);若該字節(jié)值在32~95B之間,則保留不變,經(jīng)過此種映射后,字符串長度范圍由原來的40~80 B變?yōu)?0~160 B,字符長度的不確定性進(jìn)一步增加,系統(tǒng)的安全性進(jìn)一步提高。
最后根據(jù)生成的字符串計算16位校驗碼,置于字符串末尾,生成最終的密文發(fā)送出去。以上所有加密的過程均可逆,所以解密過程為上述過程的逆過程,首先根據(jù)CRC校驗碼判斷密文傳輸是否有誤,然后解密,根據(jù)解密后的明文獲得水表數(shù)據(jù)。
4 安全性分析
由于加解密使用的密鑰在不停地改變,本來密鑰的保密性就很強(qiáng),使得一些統(tǒng)計工具就無法發(fā)揮作用。密文的字符串由0~9和A~F共16個字符組成,假如采用暴力窮舉法進(jìn)行破解,若計算機(jī)的主頻為3.0 GHz,取字符串長度為15,用1臺計算機(jī)進(jìn)行破解,時間T=1615/(24×3 600×365×3×109)≈12年,若采用100臺計算機(jī)聯(lián)網(wǎng)同時破解,字符長度僅增加2位,T=12×162/100≈30年,恐怕沒有誰具有如此的耐心去進(jìn)行此項工作。而密文字節(jié)長度在40~160 B之間,那么破解的時間將會更長。
由此可見,此種簡單實用的加密方案將系統(tǒng)的安全性大大提高。
5 結(jié)語
采用GSM無線技術(shù)進(jìn)行遠(yuǎn)程水表抄表,節(jié)省了大量的人力財力,提高了抄表的簡易性、實時性和可靠性;然而由于GSM通信網(wǎng)絡(luò)存在安全隱患,在以MCU為處理器的嵌入式系統(tǒng)中,已有復(fù)雜的加密算法卻無法使用,使得系統(tǒng)的安全性大大降低。不過對于這種特殊的系統(tǒng),采用本文提及的短信加密的方法,提高了系統(tǒng)的安全性,且方法簡單實用,占用資源少,加解密速度快,適合推廣。