基于GSM的無線抄表系統(tǒng)安全性的設計
1.4 關于微控制器的考慮
系統(tǒng)的所有模塊的工作方式為“長時間休眠,短時間工作”。經過斟酌,選擇NXP公司的ARM7內核的LPC2132作為主控器。原因如下:集成了實時時鐘功能(RTC),能在CPU休眠時保持計時的功能,并能在設定的時刻通過中斷喚醒CPU;功耗甚小,休眠時電流僅10μA左右;工作電流僅在1 mA/MIPS以下;含有足夠控制GSM模塊和存儲歷史數據所需的RAM。本文引用地址:http://butianyuan.cn/article/156594.htm
2 系統(tǒng)加密算法和分析
2.1 數據加密算法
GSM通信網絡的安全保障離不開加密理論的支持。從應用角度看,信息的安全需要保密、防篡改、防偽造等保障目標。而對應到數據加密理論,這些目標可由對稱加密、非對稱加密、散列等算法結合應用來實現。
對稱加密算法的加密和解密使用同一個密鑰,相對非對稱加密算法密碼長度較短(56 b,64 b或128 b)、加密速度快。最為普及和典型的是DES算法;非對稱加密算法有兩個密鑰,一個公開,一個保密,因此一個做公鑰,一個做密鑰,該算法運算量大,與對稱加密算法相比,加解密速度慢,不適合大量數據加解密,只適合小量數據加解密。典型的算法有RSA算法、橢圓函數加密算法等;散列函數是對明文運算后,可以生成一個定長的摘要,明文發(fā)生改變后摘要值變化很大,該函數是一個單向函數,從明文計算出摘要是很容易的,但從摘要計算出明文是不可能的。典型的算法有MD5,SHA等。
2.2 系統(tǒng)加密分析
上面提到的幾種算法已經得到了廣泛應用,但是在以微控制器為處理器的系統(tǒng)中,他們就顯得很復雜,CPU運算速度不能滿足其要求,占用ROM和RAM的資源較多,影響系統(tǒng)的響應速度。因此,針對以ARM7為控制器,數據發(fā)送時間短,安全性要求不是很高的系統(tǒng),很有必要設計一種簡單適用的加密方法提高系統(tǒng)的安全性。根據系統(tǒng)要求,考慮用對稱加密的方法來實現對數據短信的加密。它的兩個基本要素為加密算法和加密密鑰。加密算法主要由插入隨機數、字符置換、字符映射和異或等組成。加密密鑰由計算機終控端生成,而且密鑰可以隨時改變,通過GSM模塊發(fā)送。
3 系統(tǒng)加密過程
該設計對短信加密的思路為:首先根據短信原始內容計算出16位CRC校驗碼,16位校驗碼用其十六進制值對應的四字節(jié)ASCII表示,放在原始內容末尾,然后對包含原始內容和校驗碼的字符串再進行加密,根據生成的密文再次生成CRC校驗碼,置于密文末尾,最后發(fā)送出去。主要包括插人隨機數、字節(jié)置換、異或和字節(jié)映射四個過程。
3.1 密鑰
該系統(tǒng)使用對稱加密的方法,加密算法和密鑰只需保密其一即可使密文無法解讀。但由于加密算法需要精心設計并經過大量分析驗證,因此實際應用中優(yōu)秀的算法并不多,而且越是大量應用且公開的加密算法,越能表明更高的安全性。因此只要妥善保密好有限長度的密鑰,就能使無限長度的通信數據得到保密。對稱加密雙方使用同一個密鑰加密解密,此密鑰由計算機終端通過GSM模塊發(fā)送。對于本來就存在安全隱患的GSM網絡來說,最好的方法就是隨時改變密鑰。因此考慮用32 B隨機數作為密鑰,此密鑰可以由計算機管理員隨機輸入或者用PC機采用隨機數生成算法生成。
3.2 加密算法
(1)CRC校驗碼
CRC循環(huán)校驗碼主要用來校驗發(fā)送的數據是否可靠,如果不可靠就丟棄重發(fā)或修復。CRC校驗碼主要由信息碼和校驗碼組成。如果CRC校驗碼長度為nb,信息碼長為kb,就稱(n,k)碼。它的編碼規(guī)則為:首先將信息碼左移(n-k)位,然后用一個生成多項式g(x)(二進制數)用模2除移位后的式子,余數就作為校驗碼。該設計中GSM模塊的一條短信最長為160個ASCII字符,加上短信明文的長度,考慮到長度太長延時較為嚴重,因此選擇標準CRC生成算法CRC-CCITT,其多項式為:CRC-CCITT=X16+X12+X5+1。
(2)插入隨機數
從原始明文中依次取出一個字節(jié),若該字節(jié)的ASCII值模3余0,則在該字節(jié)后插入3個隨機數;若該字節(jié)的ASCII值模3余2,則在該字節(jié)后插入2個隨機數;若該字節(jié)的ASCII值模3余1,則在該字節(jié)后插入1個隨機數,隨機數種子選取各種與當前系統(tǒng)狀態(tài)相關的數值。插入的隨機數對應的ASCII的平均值應盡量與原明文內容的平均值相近,以增加破解的難度。根據系統(tǒng)短信的格式,如前綴、讀表數據、讀表時間、CRC校驗碼等,長度為20 B,那么經過這一步操作之后,字符串最短長度為40 B,最長為80 B,這樣字符串的長度在40~80 B之間,不確定性大大增加。
(3)字節(jié)置換
將上一步生成的字符串第一個字節(jié)的高四位和最后一個字節(jié)的低四位交換,第二字節(jié)高四位和倒數第二字節(jié)低四位交換,依次類推,生成字符串;此時,若字符串長度為偶數,將相鄰兩字節(jié)高四位與高四位交換,低四位與低四位交換,生成新字符串。若字符串為奇數,將第一個字節(jié)的高四位、低四位和最后一個字節(jié)高四位,低四位對應交換,將第二個字節(jié)的高四位、低四位和倒數第二個高四位、低四位對應交換,依次類推,最中間一個高四位與低四位交換,生成字符串,此時字符串長度不變。
(4)異或
先將32 b密鑰與12 b硬件ID號循環(huán)異或,即密鑰的第n個字節(jié)與ID號的第n%12個字節(jié)異或,得到長度為32 b的字符串密鑰。然后再將上一步產生的字符串與這個32 b的字符串密鑰再做同樣的循環(huán)異或,即字符串的第n個字節(jié)與32 b字符串的第n%32個字節(jié)異或。經過兩次雙層循環(huán)異或,生成更加混亂的字符串,此時字符串長度仍然不變。
(5)字節(jié)映射
依次取出上步生成字符串的一個字節(jié),若該字節(jié)對應的ASCII值小于32或者大于95,例如0x1A,則將該字節(jié)拆分為兩字節(jié),兩字節(jié)的低四位分別為該字節(jié)的高四位和低四位,兩字節(jié)的高四位分別為0110,0111,即生成0x61,0x7A;這里的兩個字節(jié)的高四位取值要盡量接近,但應滿足與低四位組合后他們的ASCII值與不拆分字節(jié)對應的值不在一個范圍之內;若該字節(jié)值在32~95B之間,則保留不變,經過此種映射后,字符串長度范圍由原來的40~80 B變?yōu)?0~160 B,字符長度的不確定性進一步增加,系統(tǒng)的安全性進一步提高。
最后根據生成的字符串計算16位校驗碼,置于字符串末尾,生成最終的密文發(fā)送出去。以上所有加密的過程均可逆,所以解密過程為上述過程的逆過程,首先根據CRC校驗碼判斷密文傳輸是否有誤,然后解密,根據解密后的明文獲得水表數據。
4 安全性分析
由于加解密使用的密鑰在不停地改變,本來密鑰的保密性就很強,使得一些統(tǒng)計工具就無法發(fā)揮作用。密文的字符串由0~9和A~F共16個字符組成,假如采用暴力窮舉法進行破解,若計算機的主頻為3.0 GHz,取字符串長度為15,用1臺計算機進行破解,時間T=1615/(24×3 600×365×3×109)≈12年,若采用100臺計算機聯(lián)網同時破解,字符長度僅增加2位,T=12×162/100≈30年,恐怕沒有誰具有如此的耐心去進行此項工作。而密文字節(jié)長度在40~160 B之間,那么破解的時間將會更長。
由此可見,此種簡單實用的加密方案將系統(tǒng)的安全性大大提高。
5 結語
采用GSM無線技術進行遠程水表抄表,節(jié)省了大量的人力財力,提高了抄表的簡易性、實時性和可靠性;然而由于GSM通信網絡存在安全隱患,在以MCU為處理器的嵌入式系統(tǒng)中,已有復雜的加密算法卻無法使用,使得系統(tǒng)的安全性大大降低。不過對于這種特殊的系統(tǒng),采用本文提及的短信加密的方法,提高了系統(tǒng)的安全性,且方法簡單實用,占用資源少,加解密速度快,適合推廣。
評論