基于ANDROID的SMS加密设计与实现

时间:2022-10-30 08:40:46

基于ANDROID的SMS加密设计与实现

摘要:为了保护安卓手机用户的个人隐私,提高短信传输的可靠性及安全性,提出了基于安卓系统的短信加解密方案的设计方法,首先对安卓的信息安全及短信运行机制进行分析,指出短信加解密所需要的关键技术及方法,在此基础上对安卓的三个版本进行比较分析,通过将几种常用算法应用于短信加解密程序中,验证了短信加解密的可行性和有效性。

关键词:ANDROID平台;加解密;短信息; 算法; 信息安全

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)07-1524-03

随着移动通讯和手机操作系统的发展,如何有效地解决智能手机短信的安全性成为人们日益关注的热点问题。近几年,社会上不断出现隐私信息被窃取的事件发生,说明手机通讯蕴涵了不少不安全因素。由于传统手机的信息安全只能通过硬件加密实现,无疑加大了成本,而伴随着智能手机的发展,信息的加密可以通过软件实现,使自己的信息不被别有用心的人窃取。

1 背景

1.1 SMS安全

在ETSI TS 03.485中已经明确列出了短信息的技术规范。技术规范的某些选项,比如安全参数索引(SPI),加密密钥标识符(KIC),和完整性校验值(RC / CC / DS),提供了可用的安全参数规格。冗余检查(RC),加密校验码(CC)或数字签名(DS)也可被用于验证数据的完整性[1]。

在实际使用中,手机短信默认情况下,不进行加密,当短信通过信令信道时,采用循环冗余校验 ,以确保不被损坏。采用传统加密的的误差转寄保护功能也包含在内,但短信中并没有提供保密性及完整性的加密算法。

由于短信在传送过程中并没有预先加密,所以信息在传送时有可能被截取和窃听。再者,在SMSC成功发送短信给收件人之前,短信是以明文的形式储存起的。而使用者能够轻易的通过短信系统看到及修改这些短信。很多恶意软件能够自动获取收件箱和发件箱中的短信,然后通过后台程序将其上传到远端服务器,隐私及机密就会因此泄露出去。

1.2 加解密技术

在智能手机出现之前,短信加密的实现大多通过硬件,使用双方都需要购买同一款加密手机才能实现短信加密,无疑加大了成本。而智能手机出现后,使用双方只需安装同一款软件就能实现短信加密功能。对称加密算法效率高,算法简单,系统开销小,加解密速度快,密钥较短,适合加密大量数据等特点,被广泛使用。

1.3 国内外的研究情况

目前,多数人对信息安全并不敏感,仅对通话安全和邮件安全有些了解,对短信安全缺乏足够的安全意识,很多所谓的短信加密软件仅仅对收件箱进行加密,需要输入密码才能查看短信,而对于短消息在传送过程中被拦截或运营商可能非法查看的情况没有采取预防措施,仅有少量的软件有相应的功能。因此相对于其他安全领域,ANDROID短信安全仍处于起步阶段。

2 短信运行机制

SMSManager实现短信发送以及与SIM卡短信相关的操作,通过ISms接口提供对应的实现。ISms的服务器端实现是SimSmsInterfaceManager(在GSM类下,如果是CDMA则使用RuimSmsInterfaceManager),SimSmsInterfaceManager中关于短信发送的重要部分主要由SMSDispatcher提供支持。SMSDispatcher是短信部分的核心,提供发送SMS等操作接口,同时也提供接收SMS和返回报告等接口,它同样被集成到GSMPhone中[2]。

2.1 发送SMS消息

1) 要在应用程序中发送文本消息,需要在清单文件中添加权限 然后使用android.telephony.SmsManager类

2) 在布局文件中设置两个可编辑文本框EditText用于输入收件人电话号码,一个用于编辑短信内容,和一个按钮Button,用于发送短信[3],此外还可以用Toast类提示短信是否发送成功,如图3所示。

3)调用StringCryptor类,将短信加密,EncryptedMessage = StringCryptor.encrypt( new String(password),SmsMessage )

将加密过的短信通过SmsManager类[4]发送,smsManager.sendTextMessage(mobileNumber, null, EncryptedMessage, null, null);

2.2 接收SMS消息

1)读取收件箱中的短信需要在清单文件中添加读短信的权限

接收短信的类是SmsReceiver。

2)读取短信息,需要查询收件箱的短信,在布局文件中设置一个按钮Button,读取收件箱中的短信和一个列表ListView显示收件箱内容。点击想要解密的短信,用Toast类显示短信明文,如图4所示。

3)调用StringCryptor类,将短信解密DecryptedMessage = StringCryptor.decrypt ( new String(SmsReceiver.passward), EncryptedMessage ); 用Toast类显示短信明文,Toast.makeText( this,DecryptedMessage,Toast.LENGTH_SHORT ).show();

2.3加解密方法

用Cipher类对短信进行加密,加密后的短信不能直接发送,需要进行编码转换[5],将字节码转换成为Base64形式的编码,然后才能发送。

Cipher对象实际完成加密操作,

Cipher cipher = Cipher.getInstance( CIPHER_ALGORITHM );

用密匙初始化Cipher对象,

cipher.init( Cipher.ENCRYPT_MODE, secretKeySpec );

进行Base64编码,

String codeString = Base64.encodeToString( encrypted, Base64.DEFAULT )

2.4 与短信相关的类

3 SMS加密性能分析

将短信加密软件用AES、DES、3DES三种算法应用于ANDROID平台,并选取三种2.2版、2.3.1版、2.3.3版模拟器,评估测试算法的性能指标。

3.1 实验过程

Android日志系统提供了记录和查看系统调试信息的功能[6]。计算加解密过程中所需要的时间,并输出显示在LogCat,如图1所示。

DDMS 的全称是Dalvik Debug Monitor Service,即Dalvik调试监控服务,是一个可视化的调试监控工具。它主要是对系统运行后台日志的监控,还可以查看进程分配内存情况。如下图2所示。

3.2 数据比较

将三种算法,分别进行加解密测试,记录加解密时间及内存使用情况,取平均值,测试次数为100次 。

3.3 分析

通过对比分析可知:

1)在android 2.2版本中,算法AES、DES、3EDS在加解密过程中,所需时间均随加解密字符数的增加而增加,且加密时间长于解密时间。算法AES、3EDS中加密过程比解密过程所占 内存少。而算法DES则相反。算法AES加解密时间最短,算法3DES加解密时间最长。三种算法所占内存的范围大致相同。

2)采用同样的程序应用于2.3.1版本,三种算法的加解密时间均明显高于2.2.版本,在android 2.3.1版本中,算法AES、DES、3EDS的加解密时间同样随着加解密字符数的增加而增加,算法AES加密时间最短,算法3DES加密时间最长。算法DES解密时间最短,AES解密时间最长,所占内存比2.2版本明显增加,达到980Kb左右。

3)可知android 2.3.3版本中,加密所需时间大幅增加,稳定在92sm左右, 加密时间随着加密字符增加而增加。三种算法加密时间差异不大,而解密时间却比较明显,AES最快,3DES最慢。所占内存也有所增加,为995Kb左右。

4)以上分析可知,ANDROID版本之间的差异直接影响不同算法对于程序的性能,3DES性能较差,其次DES,从目前来看,SMS加密应首选AES算法。

3.4 应用实现

启动两部模拟器,emulator-5554只安装解密部分,界面如图3所示,手机号为另外一部模拟器 15555215556,点击发送短信,将

内容“大江东去,浪淘尽,千古风流人物。故垒西边,人道是,三国周郎赤壁。”进行加密后发送给emulator-5556 ,并显示短信发送成功。此时接收短信的emulator-5556,查看短信内容为加密的信息,“Yps9gi8bbLSr4/jiJGNRntNJOhXiXHFp1zQy990mJU9QzjQfJE+N/eOpbZ3i/pORkWYnXRghWqzcp3usedpMb+ixjDWxxV1dq6IMGkNd4aBkjaH4QBGvl2B54BeVMumXK38OiTt/CtFXbDJ6cFJsjg==”,emulator-5556点击“解密短信”,从短信数据库中调取短信内容,此时仍为密文,点击加密的信息后,才显示加密明文信息,如图4所示。

4 结束语

本文重点介绍了ANDROID系统的SMS加解密的实现方法,并在android多个版本对常用算法的性能参数进行了实验数据分析,解决了手机通讯中短信加解密的安全问题,接下来还需要对加密算法进行改进,使其更加安全可靠。

参考文献:

[1] 舒明磊,谭成翔,俞定国.基于短消息的移动安全通信系统[J].计算机应用,2010,30(4):1053-1055.

[2] 韩超,梁泉.Android系统原理及开发要点详解[M].北京:电子工业出版社,2010:256-257.

[3] MarkL.Murphy.Beginning Android 2[M].美国:Apress,2010:38-41.

[4] Sayed Hashimi,Komatineni S,Dave MacLean.Pro Android 2[M].美国:Apress,2010:29-37.

[5] 朱哲明,赵泽茂,吕金鹏.基于Java语言实现手机短信加密[J].北京:保密科学技术,2012:52-56.

[6] Rayarikar R,Upadhyay S,Pimpale P. SMS Encryption using AES Algorithm on Android[J]. International Journal of Computer Applications,2012,50(19):12 .

上一篇:基于超高频RFID的实验仪器管理系统的开发 下一篇:基于邮件系统的智能DNS设计与实现