手機短信息預(yù)警中DSA加密算法的應(yīng)用

對手機或其他移動設(shè)備發(fā)送自然災(zāi)害或重大事故信息預(yù)警,已成為國內(nèi)外預(yù)警方式發(fā)展的重要趨勢。如何保證預(yù)誓信息的真實性和完整性,是確保有效預(yù)警的關(guān)犍問題。為此我們通過利用DSA數(shù)字簽名算法對預(yù)警信息進行加密,并對加密后的簽名進行處理,使簽名在手機短信息的編碼范圍之內(nèi)可見。此加密算法既保證預(yù)警信息在信道中的安全傳榆,又能實現(xiàn)接收端時發(fā)送端的安全認(rèn)證。

一、DSA數(shù)字簽名加密算法

一個完整的數(shù)字簽名算法,應(yīng)包括消息摘要算法和加密解密算法兩部分,DSA是根據(jù)數(shù)字簽名標(biāo)準(zhǔn)(DSS)使用安全Hash算法(SHA-I)得出的一種新的數(shù)字簽名方法,算法中主要用到以下參數(shù):

1)P是Lbits長的素數(shù),取值范同在512 ~1 024之間;

2)q是長度為160 bits的P-I的素因子;

3)g=h((P-l)/q) mod p.其中^為小于P-l且能使g>l的數(shù);

4)x為私鑰,取值為O<x<q;

5)y為簽字的公鑰.y=gxmod p;

6)H(x)為單向散列函數(shù),DSS標(biāo)準(zhǔn)選用SHA(Secure Hash Algorithm)。

P、q、g可由一組用戶共享,簽名及驗證協(xié)議如下:

1)隨機產(chǎn)生一個小于g的數(shù)k;

2)計算簽字:

1

簽名結(jié)果是(m,q,s)。

(3)消息驗證:

1

如果v=r,則認(rèn)為簽名有效。

二、SHA-1加密算法

安全散列算法SHA是目前計算消息摘要最好的算法,它是數(shù)字簽名標(biāo)準(zhǔn)(Digital SignatureStandard DSS)指定使用的安全Hash算法。對于長度小于2—64位的消息,經(jīng)過分組、移位、相加、非線性變換以及擴展變換后,產(chǎn)生一個長度為160位的消息摘要。消息摘要主要用來驗證數(shù)據(jù)的完整性。在信息傳輸中,原始消息一旦遭到篡改,消息摘要也會相應(yīng)發(fā)生變化。

三、基于SHA-1算法的DSA數(shù)字簽名

(l)簽名的產(chǎn)生

簽名的產(chǎn)生如圖l所示。

1

明文信息首先經(jīng)過SHA-I計算出其Hash值,即產(chǎn)生消息的摘要,最后用私有密鑰通過DSA算法對消息摘要進行加密,產(chǎn)生數(shù)字簽名。

(2)簽名的驗證

簽名的驗證流程如圖2所示。

1

接收到的消息先進行相應(yīng)的SHA-I計算Hash值,算出消息摘要,最后用公鑰通過DSA驗證算法對信息進行解密,比較計算出的數(shù)字簽名是否與接收的數(shù)字簽名相同,如果相同,則驗證成功;如果不村{同,則說明消息在傳輸過程被篡改,或者不足認(rèn)證的發(fā)送方發(fā)送的數(shù)據(jù)。

四、DSA加密算法在手機短信息預(yù)警中的應(yīng)用

1、手機短信息預(yù)警介紹

利用手機短信息群發(fā)進行預(yù)警,是目前把各種災(zāi)害信息或重大事故傳到相關(guān)人手中最及時、最便捷的方式,短消息服務(wù)需要借助公共通信網(wǎng)進行傳輸,為了防止非法信息進入預(yù)警信道,或者預(yù)警信息在通信線路上被篡改,就必須找到一種算法對短消息加密,使其既能保證數(shù)據(jù)的完整性,又能對發(fā)送方進行身份驗證。

2、改進的DSA數(shù)字簽名算法

鑒于手機短信息的長度約束和所采用unicode編碼方式的范闈,對DSA數(shù)字簽名進行了改進。經(jīng)過簽名的短信息格式如圖3所示,改進的簽名加明文組成要傳輸?shù)氖謾C短信息,簽名占用了短信息的一部分資源。由于手機短信息的長度不能超過140個字節(jié),即70個漢字,因此為保證有效短信息的長度,必須盡址縮短簽名的長度。

1

對簽名長度壓縮和優(yōu)化簽輯的思想為:似設(shè)漢字一個字節(jié)只有64種可能性,如果任意字節(jié)漢字來表示,即256進制轉(zhuǎn)64進制,結(jié)果是一個字節(jié)變成了兩個字節(jié),剛好一個漢字,即通過進制轉(zhuǎn)換,能夠保證任意一個字節(jié)變成一個可見的、正確的漢寧,但這還不能達到性能的最優(yōu),因為一條短倩的字符數(shù)是有限的,一個字節(jié)變兩個開銷太大,在轉(zhuǎn)換的兩個字節(jié)中,較高的5個字節(jié)達不到OxOF.也就是有半個字節(jié)始終足0000.所以再進一步優(yōu)化,兩對任意字節(jié)變成兩個“一個半”字節(jié),即兩對任意字節(jié)變成3個漢字。優(yōu)化后的簽名大大節(jié)省了短信息資源。

由于手機短信息采用US2編碼,所以優(yōu)化后的部分簽名可能在US2編碼范圍之外,文中采用了進制之M的轉(zhuǎn)換,把字節(jié)轉(zhuǎn)換成進制所需的字符種類數(shù)量小于等于漢字表示,即映射到漢字所表示UCS2編碼范同之內(nèi),使數(shù)字簽名的字節(jié)能用漢字的字節(jié)表示。改進的DSA加密算法流程如圖4所示。

1

小知識之Unicode

Unicode(統(tǒng)一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語言中的每個字符設(shè)定了統(tǒng)一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉(zhuǎn)換、處理的要求。