为了保护安卓手机用户的个人隐私,提高短信传输的可靠性及安全性,提出了基于安卓系统的短信加解密方案的设计方法。

一、ANDROID的短信加密应用背景

1、SMS安全

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

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

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

2、加解密技术

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

3、国内外的研究情况

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

二、短信运行机制

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

1、发送SMS消息

1)要在应用程序中发送文本消息,需要在清单文件中添加权限

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

1

3)调用StringCryptor类,将短信加密,EncryptedMessage;StringCryptor.encrypt( new String(passWord).SmsMessage),将加密过的短信通过SmsManager类发送,smsManage r.sendTextMessage(mobile Number, null, EncryptedMessage,nuU,null);

2、接收SMS消息

1)读取收件箱中的短信需要在清单文件中添加读短信的权限,接收短信的类是SmsReceiver。

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

1

3)调用StringCryptor类,将短信解密Decryp tedMessage;SU'ingCryptor.decrypt( new String(SmsReceiver.p assward), EncryptedMes-sage).用Toast类显示短信明文,Toast.rnakeText( this,Decrypted Message,ToasLLENGTH_SIIORrr ).show0,

3、加解密方法

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

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

Cipher cipher=Cipher.getlnstance(C IPHER_AL(;ORITHM);

用密匙初始化Cipher对象,

用密匙初始化Cipher对象,

cipher.init( Cipher,ENCRYPT_MODE, secre tKeySpec);

进行Base64编码,

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

4、与短信相关的类

1

三、SMS加密性能分析

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

1、实验过程

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

1

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

1

2、数据比较

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

1

3、分析

通过对比分析可知:

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

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

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

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

4、应用实现

启动两部模拟器,emulator-5554只安装解密部分,界面如图3所示,手机号为另外一部模拟器15555215556,点击发送短信,将内容“大江东去,浪淘尽,千占风流人物。故垒西边,人道是三网周郎赤壁”进行加密后发送给emulalor-5556,并显示短信发送成功口此时接收短信的emulator-5556,查看短信内容为加密的信息鼻“Yps9gi8hbIJSr4/jiJ CN RntNJOhXiXHFplzQy990mjU9QziQI'jE+N/eOpb23i/pORkWYnXRghWqzcp3usedpMl)+ixj DWxxVldq61M C,kNd4a13kjaH4Q13Gv12854BeVM umXK380i'I'UCtFXbDJ6cFJ sjg==”,emvla-tor-55156点击“解密短信”,从短信数据库中调取短信内容,此时仍为密文,点击加密的信息后,才显示加密明文信息,如图4所示。

小知识之sms

sms是一种存储和转发服务。也就是说,短消息并不是直接从发送人发送到接收人,而始终通过短信服务中心进行转发。如果接收人处于未连接状态(可能电话已关闭),则消息将在接收人再次连接时发送。