- 1 -
基于公开密钥加密算法的端到端短信加密系统
王静,刘会,漆涛
北京邮电大学计算机科学与技术学院,北京(100876)
摘 要:随着短信息业务向移动支付、移动证券交易等金融领域的扩展,对短信息的安全性
提出了新的要求。本文给出一种基于RSA公开密钥加密算法和DSA签名标准算法的混合签名
加密算法,针对短信传输的安全问题,实现了一种端到端短信加密系统。
关键词:短信息,加密,DSA算法,RSA算法
中图分类号:
1. 引言
手机的普及给人们的工作和生活带来了极大的便利和机会,尤其是短信息凭借其方便、
快捷、个性化、低成本等特点逐渐成为人们日常交流的新渠道。基于短信息的业务从现有的
娱乐应用已进入到商务应用、电子政务和社会服务等领域。然而在美好景象的背后,存在着
不可小视的安全问题。虚假与不良短信息的传播;侵犯个人隐私;手机病毒的传播以及垃圾
短信的泛滥等,这都涉及到信息的加密与解密,通信双方身份的相互认证,信息的完整性鉴
别等安全方面的问题[5]。
传统的点到点短信从一部手机发出后,传送到运营商的短信中心,再发送给相应的手机,
其信号就暴露在空中,存在着一定的安全隐患。由于短信息通信有着自己独特的特点,本文
基于RSA加密算法和DSA签名算法构造了一种新的签名加密算法,将数字签名和加密技术融
为一体,对发出的文本短信加密,使包括运营商在内的任何第三方都无法看到短信的内容,
而通信双方不仅能够识别发送信息者的身份和对短信息的保密,还能有效地抵抗“生日攻
击”。该系统提供了一个传递机密信息的安全通道[6]。
2. 短信息及其网关协议 SMPP的介绍
短消息业务(SMS)提供了向GSM移动电话发送有限容量信息的方法。短消息业务又可分
为包括移动台起始和移动台终止的点对点的短消息业务和点对多点的小区广播短消息业务。
移动台起始的短消息业务能使GSM客户发送短消息给其它GSM点对点客户;点对点移动台
终止的短消息业务,则可使GSM客户接收由其它GSM客户发送的短消息。点对点的短消息
业务是由短消息业务中心完成存储和前转功能的。短消息业务中心是在功能上与GSM网完
全分离的实体,不仅可服务于GSM客户,亦可服务于具备接收短消息业务功能的固定网客
户。点对点的信息发送或接收即可在MS处于呼叫状态(话音或数据)时进行,也可在空闲状
态下进行。当其在控制信道内传送时,信息量限制为l40个8位组(7比特编码,l60个字符)。
SMPP(Short Message Peer to Peer)协议,是短信息服务中心(SMSC)与非公用陆地移动网
短消息实体(non-PLMNSME)之间的通信接口的定义,如该协议定义了SMSC与文本邮件或语
音邮件系统之间的接口协议。该协议可以运行在多种网络协议下,如或者TCP/IP协议。
通过该协议,扩展短信息实体(ESME),如文本邮件或语音邮件系统可以向短信息服务中心
提交、查询、置换和取消短消息,短消息服务中心同时可以向扩展短消息实体发送响应和短
消息。SMPP协议作为SMSC与ESME之间的接口协议,以TCP/IP协议为基础,定义了SMSC
与ESME之间消息的格式,每一条消息由两部分组成:消息头和消息体[4]。
- 2 -
3. 公钥加密体制及加密算法介绍
3. 1 公钥加密体制
公开密钥也称非对称密钥。使用公开密钥的每一个用户都分别N有两个密钥:加密密钥和
解密密钥,它们二者并不相同,并且通过加密密钥得到解密密钥在计算上是不可行的。每一
个用户的加密密钥都是公开的,可以被所有用户访问,这样,每一个用户都可以得到其他所
有用户的公开密钥。同时每一个用户的解密密钥将由用户保存并严格保密。
图1为一般公开密钥加密体制的示意图:
图1 公开密钥加密体制示意图[3]
其中,E(m,Ke)表示发方使用收方的公开密钥Ke,对明文m进行加密;D(C,Kd)表示收方
使用自己保存的秘密密钥Kd,对密文C进行解密。
公开密钥加密的加密变换E(m,Ke)与解密变换D(C,Kd)应满足下列要求:
(1) D(C,Kd)是E(m,Ke)的逆变换,即对于任意明文m,均有D(C,Kd) =D (Kd, E(m,Ke))=m;
(2) 在已知加密密钥Ke时,E(m,Ke)的计算不难;在己知解密密钥Kd时,D(C,Kd)的计算也不
难;
(3) 如果不知道Kd,那么即使知道Ke、具体的加密和解密算法过程以及密文C,确定明文的
计算是不可行的。
上述要求指出:在公开密钥加密中,对任意明文进行加密变换是容易计算的(加密密钥可
以为所有用户得到);如果知道解密密钥,那么对密文进行解密也将是容易计算的,但是,
如果不知道解密密钥,对密文进行逆变换以得到正确的明文在计算上将是不可行的。
这种类似性质的函数被称为单向陷门函数,单向陷门函数为如下函数了:
(1) 给出f的定义域的任意元素f, f(x)的计算是容易的;
(2) 当给出y=f(x)中的y,要计算x=f-1(y)时,若知道设计函数f时结合进去的某种信息,则容
易计算;若不知道该信息,则难以计算(即数学上难的问题,通常是NP问题或NPG问题)。
目前己经出现并且仍然具有较高安全性的公开密钥加密算法所基于的困难问题有:
(1) 大整数分解问题(基于大整数分解的公开密钥加密体制);
(2) Z p上的离散对数问题(基于离散对数的公开密钥加密体制);
(3) 椭圆曲线上的离散对数问题(基于椭圆曲线的公开密钥加密体制);
(4) 线性编码的解码问题(基于代数编码的公开密钥加密体制);
(5) 构造非线性弱可逆有限自动机的弱逆命题(基于有限自动机的公开密钥加密体制)等等;
与对称密钥加密算法相比,公开密钥加密算法具有以下几个特点:
(1) 密钥分发简单。加密密钥可以做成密钥本公开,解密密钥由各个用户自行掌握;
(2) 每个用户秘密保存的密钥量减少。网络中每个用户只需要秘密保存自己的解密密钥,与
其他用户通讯所用的加密密钥可以由密钥本得到;
(3) 适应于网络的,能够满足互不相识的用户之间进行保密通讯的要求;
- 3 -
(4) 能够完成数字签名和认证。发信者用只有自己才知道的密钥进行签名,收信者利用公钥
进行检查,并且第三者不能对签名进行篡改和伪造,既方便又安全[3]。
3. 2 RSA算法介绍
1978年就出现了RSA算法,它是第一个既能用于数据加密也能用于数字签名的算法。它
易于理解和操作,也很流行。算法的名字以发明者的名字命名:RonRivest, AdiShamir和
Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。
RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数(大于100个十进制位)的
函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。
算法描述
1. 参数的构成
(1) 选取两个大素数 p,q;
(2) 计算 n=pq;
(3) 随机选取加密密钥 e,满足 1<e<φ (n),gcd (e,φ (n) )=1。那么公钥就是(e, n);
(4) 计算 d:满足 ed=1(mod φ (n) )。
最后销毁 p,q,φ (n );自己保存好私钥(d, n);公开公钥(e, n)。其中 φ是 Euler函数:
φ(n)=(p-1)(q-1)(注:n=pq)。其实还可以证明 gcd (d ,φ (n) )=1。
RSA算法不论用于加密解密,还是用于数字签名,其明文和密文空间就是 0到 n-1之间
的整数值。
2. 加密
加密信息 m(二进制表示)时,按照如下步骤进行:
(1) 首先把信息 m分成等长数据分组 mi,i=1,2,……,分组长度为 s,其中 2^s <= n,s 尽可
能的大;
(2) 加密每一个分组 mi:ci=mi^e (mod n);
(3) 密文 c就是 ci的连接。
显然明文分组和密文分组的比特长度,一般可以用正面关系来表达:|mi|=|ci|=|n|-1。其
中| |表示求比特长度。
3. 解密
密文 c的解密步骤如下:
(1) 把 c分组为 ci, i=1,2,……,ci的比特长度刚好小于 n的比特长度;
(2) 解密每一个分组 ci:mi= ci^d (mod n);
(3) 明文 m就是 mi的连接,i=1,2,……;
从上面介绍可以知道,加密解密的区别仅仅在于第(2)步,加密使用的指数为 e,解密使
用的指数为 d。加解密的算法是一致的,仅仅是所采用的参数不同;其算法的思想也非常简
单明了[1]。
RSA算法的安全性分析
RSA公钥体制是第一个将安全性基于分解因数的系统。很明显,在公开密钥(e, n)中,若
n能被分解因数,则p和q被泄漏,解密密钥d也就不再是秘密,进而整个RSA系统不安全。因
此,在使用RSA系统时,对于n的选择是很重要的,必须使得公开n后,任何人无法从n得到p
和q。提高n的位数无疑将大大提高RSA的安全性,另外还有一些参数选择上的注意事项。在
- 4 -
不知道门限信息d的情况下,想要从公开秘钥n,e算出d,只有分解大整数n的因子,但是大
数分解是一个十分困难的问题。Rivest、Shamir和Adleman用已知的最好算法估计了分解n的
时间与n的位数的关系,用运算速度为100万次/秒的计算机分解500bits的n,计算机分解操作
数是*10^39,分解时间是*10^25年。因此,一般认为RSA公钥体制保密性性能良好。
但是,人们无法从数学上证明一定需要分解n才能从c中计算出m,可能会发现一种完全
不同的方法来对RSA进行密码分析。因而,如果这种新方法能让密码分析者推算出d,它也
可作为分解大数的一种新方法。也可猜测(p-1)(q-1)的值来攻击RSA,但是,这种攻击没有分
解n容易。
有一些RSA的变形已被证明和大数分解同样困难,从RSA加密的密文中恢复某一比特与
恢复出整个文本同样困难。
有些攻击是针对RSA的实现。他们并不是攻击基本的算法,而是攻击协议。仅会使用
RSA而不重视它的实现是不够的[3]。
RSA算法的缺点
第一,RSA算法产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
第二,由于进行的都是大数计算,且分组长度太大,为保证安全性,n的选取至少在600bits
以上,这使得运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数
分解技术的发展,这个长度还在增加,不利于数据格式的标准化。
无论是软件还是硬件实现,速度一直是RSA的缺陷。一般来说RSA只用于少量数据加密。
目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实
体使用1024比特的密钥。
3. 3 DSA算法介绍
DSA(Digital Signature Algorithm,数字签名算法),是 Schnorr和 ElGamal签名算法的
变种, 被美国 NIST作为 DSS(Digital Signature Standard,数字签名标准)的一部分。该算法是
另一种公开密钥算法,它不能用作加密,只用作数字签名。DSA使用公开密钥,为接受者
验证数据的完整性和数据发送者的身份。它也可用于由第三方去确定签名和所签数据的真实
性。DSA算法的安全性基于解离散对数的困难性,这类签字标准具有较大的兼容性和适用
性,成为网络安全体系的基本构件之一[2]。
算法中应用了下述参数:
p:L bits长的素数。L是 64的倍数,范围是 512到 1024;
q:p - 1的 160bits的素因子;
g:g = h ^ ( (p-1) / q ) mod p,h满足 h < p - 1, h ^ ( (p-1) / q ) mod p > 1;
x:x < q,x为私人密钥;
y:y = g ^ x mod p ,( p, q, g, y )为公开密钥;
H(x):One-Way Hash函数。DSS标准中选用 SHA( Secure Hash Algorithm)安全散列算法。
p, q, g三个参数是公开的,可由一组用户共享,但在实际应用中,使用公共模数可能会
带来一定的威胁。
签名及验证协议如下:
(1) 发送者 P产生随机数 k,k < q;
(2) P计算 r = ( g ^ k mod p ) mod q;
- 5 -
s = ( k ^ (-1) (H(m) + x r) ) mod q;
签名结果是( m, r, s )。
(3) 验证时计算 w = s ^ (-1)mod q ;
u1 = ( H( m ) * w ) mod q ;
u2 = ( r * w ) mod q ;
v = ( ( g ^ u1 * y ^ u2 ) mod p ) mod q ;
若 v = r,则认为签名有效。
DSA是基于整数有限域离散对数难题的,其安全性与 RSA相比差不多。DSA的一个重
要特点是两个素数公开,这样,当使用别人的 p和 q时,即使不知道私钥,你也能确认它们
是否是随机产生的,还是作了手脚。RSA算法却作不到。
4. 系统实现原理与构架
本系统实现了短信的端到端加密,短信传输过程中,包括运营商在内的任何第三方都无
法看到短信内容。短信内容以公钥加密体制实现加解密过程,加密算法采用DSA和RSA混合
签名加密算法。
在手机端完成以下功能:
(1) 生成针对短信加密特定情况的RSA密钥对(1024bits)和DSA密钥对(512bits);
(2) 公开密钥以自定义证书格式,通过短信形式颁发;
(3) 短信发送端:使用DSA基本算法对短信明文签名,再使用RSA基本算法加密短信明文和
签名,发送短信;
(4) 短信接收端:接收短信,使用RSA基本算法解密短信密文,再验证解密后明文的签名。
图2 短信加(解)密流程图
4. 1 RSA与 DSA密钥对的产生与存储
本系统在手机终端初始安装时,透明的产生本机RSA密钥对(加密公钥、解密私钥)与
DSA密钥对(签名私钥、验证签名公钥),并将其保存在本机数据库中。为保证RSA解密私钥
的安全性,以防手机中数据库信息被盗取,RSA解密私钥在数据库中通过对称加密算法
AES(高级加密标准Advanced Encryption Standard)加密存储。
明文短信 密文短信 明文短信
D
SA
私钥
R
SA
公钥
R
SA
私钥
D
SA
公钥
长度换算,签名,加密
生成密钥
生成密钥
长度换算,解密,验证
R
SA 加密私钥
用密码加密,解密和验证
证书 证书摘要
Hash运算
- 6 -
数据库的设置包括本机的证书库、联系人的证书库、加密短信表和系统配置表。本机
证书库存储本机加(解)密密钥、签名(验证签名)密钥;联系人证书库存储通信方的加密公钥
和验证签名公钥;加密短信表存储互通的加密短信,以密文形式保存,短信在阅读时解密;
系统配置表存储手机IMEI号码、IMSI号码以及软件使用期限等配置信息。
4. 2 通信双方证书的交换
本机的加密与签名公钥以证书格式,通过短信的方式发送给通信方。由于证书是
对外公开发布的,不包含需要保密的信息,所以发布证书的短信以明文传送。证书格式如下:
表1 证书格式
偏移(字节) 长度(字节) 说明
0 2 加密短信系统标识(例如:'A',0x00)
2 1 加密短信系统版本(当前版本固定为 0x01)
3 1 加密短信系统信息类型(例如:证书发布为 0x01)
4 1 证书标志(字母'C',即 0x43,表示证书)
5 1 证书格式版本(当前版本固定为 0x01)
6 2 证书序列号(从 1开始递增,unsigned short二进制小端)
8 4 证书启用年月日(如 ,表示为 20060915,小端)
12 4 证书停用年月日(如 ,表示为 20101201,小端)
16 128 RSA公钥(RSA_PUBKEY),二进制格式
144 208 DSA公钥(DSA_PUBKEY),二进制格式
352 32 证书签名数据(签名的范围是以上 348字节),不用时全置 0
384 18 保留未用(应全置 0)
注:3条短信共计 402字节空间(长短信中每条短信会被系统占用 6字节,作为短信合并的标志)。
通信方收到证书后解析各个字段内容,并将其存储在本机的证书库中。获得证书后,接收
方可以向对方发送加密短信。若要实现双向加密互通,则需要通信双方互相发送证书并在
本机保存对方证书。
4. 3 混合签名加密算法
本系统采用一种混合的签名加密算法,对明文短信加密,算法描述如下:
(1) 将明文短信内容分成若干分组,每分组明文包括120字节数据(其中第一分组明文前端包
括32字节签名数据),并在每120字节的后面添加1字节表示该分组不包括随机填充的明文长
度值(1~120)和7字节随机数,其中最后1字节的高2位置0。
(2) 每分组用RSA公钥独立加密每128字节的数据。总长度为1/2/3个分组最多可容纳
88/208/328字节明文信息,即44/104/164个汉字(Unicode)的容量。
(3) 每条加密短信由短信头(12bytes)和n个RSA加密分组数据组成。其中,短信头包括系统标
识、系统短信类型、加解密分别使用的证书序列号以及明文字节长度等。
(4) 算法公式:
加密短信:c = Head + RSAEncrypt ( DSASign(m) + m );
解密短信:m = RSADecrypt ( c - Head ) – DSAVerify ( RSADecrypt ( c - Head ));
参数构成:
- 7 -
(a) m是明文信息,c是密文信息;
(b) Head为短信头;
(c) DSASign():采用DSA私钥对明文签名的算法;
(d) RSAEncrypt():采用RSA公钥对签名数据和明文信息加密的算法;
(e) RSADecrypt():采用RSA私钥对密文信息解密的算法;
(f) DSAVerify():采用DSA公钥验证签名的算法。
5. 安全性及有效性分析
本系统采用的签名加密算法满足第三代移动通信的安全要求,应用公钥加密,提高了短
信发送的安全性,同时双方通过使用数字签名,可提供短信的不可否认性;虽然使用了公钥
加密,但计算量并不太大,可满足移动通信终端的要求。
系统通信协议的效率较高。协议的执行不涉及第三方:身份认证和会话密钥的建立由通
信双方完成,不需要密钥生成中心或其他第三方的协助,因而协议结构简单,通信次数少。
用户端计算量少:用户端涉及的公钥密码体制的算法简单,运算量少,达到了协议设计所要
求的目标,适合移动通信终端。
6. 结束语
本文基于公钥密码体制设计并实现了一个有效的适用于移动通信系统的身份认证和端
到端短信加密方案,该方案能够满足通信双方进行相互身份认证的要求,也能为通信双方提
供一个足够安全的通信交互通道,而且可以提供业务的不可抵赖性。同时该系统方案计算复
杂程度低,简单而又足够安全,高效实用,可以为未来移动通信中的诸多业务需要不同水平
的安全考虑提供技术支持。
参考文献
[1] 毛文博.现代密码学:理论与实践.北京:电子工业出版社,2004.
[2] 卢开澄.计算机密码学.北京:清华大学出版社,1998.
[3] 杨义先,钮心忻.应用密码学.北京:北京邮电大学出版社,2005.
[4] 徐智德.基于公开密钥加密算法的短信息加密方案[J].计算机工程,2004,第三十卷(第二期):146-147.
[5] 杨小东.基于签名加密算法的短信息加密方案[J].计算机工程与应用,2006,第三十三期:129-131.
[6] 杨建强.基于Java ME的点到点短信加密应用[J].计算机应用,2006,第二十六卷(第八期):1813-1820.
- 8 -
Short Message Point-to-Point Encryption System Based on
Public Key Encryption Algorithm
Wang Jing,Liu Hui,Qi Tao
School of Computer Science and Technology,Beijing University of Posts and
Telecommunications,Beijing(100876)
Abstract
The new demand for the security of SMS (short message service) has been requested while the
application of the SMS shifts to the financial area such as mobile payment and mobile securities. Based
on the signcryption algorithm combined with RSA encryption algorithm and DSA signature algorithm,
and to keep SMS from interception in transmission, this paper puts forward a novel scheme for SMS
point to point encryption.
Keywords:Short message,Encryption,DSA algorithm,RSA algorithm