对手机或其他移动设备发送自然灾害或重大事故信息预警,已成为国内外预警方式发展的重要趋势。如何保证预誓信息的真实性和完整性,是确保有效预警的关犍问题。为此我们通过利用DSA数字签名算法对预警信息进行加密,并对加密后的签名进行处理,使签名在手机短信息的编码范围之内可见。此加密算法既保证预警信息在信道中的安全传榆,又能实现接收端时发送端的安全认证。

一、DSA数字签名加密算法

一个完整的数字签名算法,应包括消息摘要算法和加密解密算法两部分,DSA是根据数字签名标准(DSS)使用安全Hash算法(SHA-I)得出的一种新的数字签名方法,算法中主要用到以下参数:

1)P是Lbits长的素数,取值范同在512 ~1 024之间;

2)q是长度为160 bits的P-I的素因子;

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

4)x为私钥,取值为O<x<q;

5)y为签字的公钥.y=gxmod p;

6)H(x)为单向散列函数,DSS标准选用SHA(Secure Hash Algorithm)。

P、q、g可由一组用户共享,签名及验证协议如下:

1)随机产生一个小于g的数k;

2)计算签字:

1

签名结果是(m,q,s)。

(3)消息验证:

1

如果v=r,则认为签名有效。

二、SHA-1加密算法

安全散列算法SHA是目前计算消息摘要最好的算法,它是数字签名标准(Digital SignatureStandard DSS)指定使用的安全Hash算法。对于长度小于2—64位的消息,经过分组、移位、相加、非线性变换以及扩展变换后,产生一个长度为160位的消息摘要。消息摘要主要用来验证数据的完整性。在信息传输中,原始消息一旦遭到篡改,消息摘要也会相应发生变化。

三、基于SHA-1算法的DSA数字签名

(l)签名的产生

签名的产生如图l所示。

1

明文信息首先经过SHA-I计算出其Hash值,即产生消息的摘要,最后用私有密钥通过DSA算法对消息摘要进行加密,产生数字签名。

(2)签名的验证

签名的验证流程如图2所示。

1

接收到的消息先进行相应的SHA-I计算Hash值,算出消息摘要,最后用公钥通过DSA验证算法对信息进行解密,比较计算出的数字签名是否与接收的数字签名相同,如果相同,则验证成功;如果不村{同,则说明消息在传输过程被篡改,或者不足认证的发送方发送的数据。

四、DSA加密算法在手机短信息预警中的应用

1、手机短信息预警介绍

利用手机短信息群发进行预警,是目前把各种灾害信息或重大事故传到相关人手中最及时、最便捷的方式,短消息服务需要借助公共通信网进行传输,为了防止非法信息进入预警信道,或者预警信息在通信线路上被篡改,就必须找到一种算法对短消息加密,使其既能保证数据的完整性,又能对发送方进行身份验证。

2、改进的DSA数字签名算法

鉴于手机短信息的长度约束和所采用unicode编码方式的范闱,对DSA数字签名进行了改进。经过签名的短信息格式如图3所示,改进的签名加明文组成要传输的手机短信息,签名占用了短信息的一部分资源。由于手机短信息的长度不能超过140个字节,即70个汉字,因此为保证有效短信息的长度,必须尽址缩短签名的长度。

1

对签名长度压缩和优化签辑的思想为:似设汉字一个字节只有64种可能性,如果任意字节汉字来表示,即256进制转64进制,结果是一个字节变成了两个字节,刚好一个汉字,即通过进制转换,能够保证任意一个字节变成一个可见的、正确的汉宁,但这还不能达到性能的最优,因为一条短倩的字符数是有限的,一个字节变两个开销太大,在转换的两个字节中,较高的5个字节达不到OxOF.也就是有半个字节始终足0000.所以再进一步优化,两对任意字节变成两个“一个半”字节,即两对任意字节变成3个汉字。优化后的签名大大节省了短信息资源。

由于手机短信息采用US2编码,所以优化后的部分签名可能在US2编码范围之外,文中采用了进制之M的转换,把字节转换成进制所需的字符种类数量小于等于汉字表示,即映射到汉字所表示UCS2编码范同之内,使数字签名的字节能用汉字的字节表示。改进的DSA加密算法流程如图4所示。

1

小知识之Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。