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