基于ANDROID的SMS加密设计与实现
2013-04-29张雷彭健
张雷 彭健
摘要:为了保护安卓手机用户的个人隐私,提高短信传输的可靠性及安全性,提出了基于安卓系统的短信加解密方案的设计方法,首先对安卓的信息安全及短信运行机制进行分析,指出短信加解密所需要的关键技术及方法,在此基础上对安卓的三个版本进行比较分析,通过将几种常用算法应用于短信加解密程序中,验证了短信加解密的可行性和有效性。
关键词: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) 要在应用程序中发送文本消息,需要在清单文件中添加权限
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)读取收件箱中的短信需要在清单文件中添加读短信的权限