Android手机系统中的短消息加密研究与实现

2016-11-20 07:49申晋祥鲍美英
关键词:短消息加密算法密钥

申晋祥,鲍美英,张 琦

(山西大同大学数学与计算机科学学院,山西大同037009)

Android手机系统中的短消息加密研究与实现

申晋祥,鲍美英,张 琦

(山西大同大学数学与计算机科学学院,山西大同037009)

智能手机的日益普及,给人们的生活带来了极大的便捷。人们通过手机可以轻松地发送各种短消息,但是由于Android系统的开源性以及无线网络具有空中开放性,使得手机短消息在传输过程中可能被黑客非法窃取。针对这一问题本文提出对短消息进行加密并且采用端到端的传输方法,可以有效地解决此问题。

智能手机;加密算法;短消息

2015年全球智能手机用户数量已达19.1亿,据最新数据统计显示,2016年该数量将增长到25亿,其中智能手机使用Android操作系统的已经达到89.8%。但是由于无线通信网络的空中开放性,使得通信内容(语音数据和短消息)具有安全隐患[1]。为了保证个人的隐私安全,最好的办法是采用端到端的通信安全机制,短消息在传输前用加密算法进行加密,通过网络传输到达目的手机后,进行解密读取操作。

1 Android无线电话系统结构

Android无线移动电话系统结构[2]如图1,从下到上共分为四层:Linux内核层、Linux用户层、Java应用框架和Java应用层。其中Java应用框架中的无线层接口(RIL)[3]是该系统的核心,它实现了Android电话服务和和无线通信硬件通信。

图1 Android无线电话系统结构

2 手机普通短消息收发流程

2.1 手机短消息的发送

短消息编辑完成后点击发送,会调用sendMessage函数[4],使用WorkingMessage类中的send方法,对短消息中的内容和联系人进行提取,然后做出发送判断,确认该短消息可以发送后,再通过send-Message方法将短消息发送出去。如果是一条比较长的短消息,SmsManager会对短消息进行分割,然后调用sendMultipartTextMessage把短消息发送到Java框架层进行处理。

2.2 手机短消息的接收

当接收到一条新短消息时,framework会发送广播,PrivilegedSmsReceiver接收此条广播,调用on-ReceiveWithPrivilege()方法,在该方法中获取一个唤醒时钟,该唤醒时钟保证系统在接收短消息时不会进入待机状态,然后启动SmsReceiverService服务。调用onStartCommand方法,该方法构造一个Message,sendMessage把 Message发送出去,handleMessage方法接收Message。

在insertMessage中判断该条短消息是否是一条新短消息,如果是新短消息则调用storeMessage存储该条短消息,插入成功后,insertMessage方法返回插入该条短消息的资源标志符(Uri),若Uri不为Null,说明已经插入到数据库mmssms.db中,这时手机发出提示音,通知用户收到一条新短消息。

3 AES加密算法

AES[5](Advanced Encryption Standard)是1997年NIST征集的数据加密标准,Rijindael是AES的加密算法。该算法是迭代分组对称加密算法,它的数据块长度和分组密钥长度都可以发生变化,数据块和密钥长度可以为128位、192位或256位[6]。

AES将数据分成4*4的方阵,每个单元一个字节,采用多轮迭代和重复加密算法,每轮都需要与分组长度相同的扩展密钥参与。根据密钥长度不同,重复的次数也不相同。

AES算法的主要操作步骤如下:1)根据现有的密钥推导出迭代时使用的密钥;2)每一轮迭代之前,需要根据前一轮的状态推导出此轮需要使用的密钥;3)每一轮迭代都要对单元中的数据进行字节替换、行位移变换、列混合变换和本轮密钥的添加变换;4)最后一轮迭代进行字节替换、行位移变换和密钥的添加变换。

4 短消息的数字加密处理

采用AES加密算法对短消息进行加密处理。并非所有的短消息都要进行加密,用户在发送短消息前,可以根据短消息内容进行选择,不需要保密的短消息,可以直接发送,内容机密的短消息,则选择加密发送。

4.1 短消息的数字加密

在WorkingMessage类中的send方法中对短消息进行加密,由于运营商对短消息的长度有限制,所以对于一条比较长的短消息在发送之前要进行分割,然后再发送。而对短消息进行加密之后,会使消息长度变大,所以要在分割长的短消息之前进行加密,然后用SmsManager进行分割再发送。

具体做法是:在send中增加布尔变量encrypt,用于控制此条短消息是否加密。加密的核心代码如下:

接收短消息后,通过判断,若为加密短消息,直接把它存入数据库,在查看短消息时,再通过输入验证码后,进行动态的解密。不能在短消息存入数据库之前进行解密,因为Android应用的数据若获得root权限就可以查看此短消息的内容。

4.2 加密短消息的传输

Base64是网络中用于传输8位字节代码的编码方法,它可以将非ASCII字符数据转换成ASCII字符,使之适合在网络中传输。

短消息在加密之后数据会变大,而且会产生非ASCII字符,所以使用Base64打包传输,可以保证加密文本不会发生改变。并且可以直接使用Android原来的接口,不会涉及Android的框架层,加密之后由Base64进行编码,被逆向解码的危险就大大减小了,即使Base64编码被解,解码出来的仍是加密后的数据,不容易被黑客所利用。

4.3 加密短消息的存储与查阅

4.3.1 加密短消息的存储

Android系统中有一个嵌入式的轻量型关系数据库系统SQLite,用户信息就保存在SQLite数据库中的mmssms.db中,mmssms.db中有13张表,其中的sms表中保存了用户的短消息,为了区分加密短消息和普通短消息,在sms表中增加标志位。

sms表中有短消息的主题、内容、接收方、主键、是否可见、短信中心、是否已读、收发日期等相关信息。本研究中,在sms表的最后一行加入encrypt标志位,1表示加密,0表示未加密,缺省状态为0。storeMessage是存储短消息的方法,该方法对收到的短消息进行判断,若发现是加密短消息,则把数据库表sms中的encrypt标志置为1。

在sendMessage方法中,通过addMessage

ToUri把短消息存入数据库中。存储短消息的核心操作如下:

判断发送的短消息是否要加密发送,如果加密发送,则把数据库中sms表中的encrypt位置1。

4.3.2 加密短消息的查阅

为了防止手机丢失造成加密短消息泄密或人为故意偷看加密短消息,对于加密短消息的查看要输入验证密码,验证用户身份后,方可查看该短消息,退出短消息后自动注销登录痕迹。

为了更加容易区分普通短消息和加密短消息,要对加密短消息进行格式上的设置,把它设置成和普通短消息不同的颜色。

查看短消息的代码在ConversationList中:

在formatMessage方法中判断是否是加密短消息,如果是加密短消息,需要对它进行解密的处理。

5 结语

本文使用对称加密算法AES实现了手机普通短消息的加密处理,用户可以有选择地对发送的短消息进行加密,很好地保护了用户的隐私。

[1]樊郁徽,徐宁.Andriod平台的恶意软件行为分析[J].重庆文理学院学报:社会科学版,2014(5):144-147.

[2]吴想想.基于Android平台软件开发方法的研究与应用[D].北京:北京邮电大学,2011.

[3]吕少伟.Andriod平台下的文件共享及其安全技术研究与实现[D].镇江:江苏科技大学,2014.

[4]曾健平,邵艳洁.Android系统架构及应用程序开发研究[J].微计算机信息,2011(9):1-3.

[5]王小伟.AES加密算法的研究与IP核设计实现[D].哈尔滨:哈尔滨工业大学,2013.

[6]王哲.分组密码AES分析方法研究[D].济南:山东师范大学,2012.

〔责任编辑 高海〕

Research and Implementation of Message Encryption Based on Android Phone

SHEN Jin-xiang,BAO Mei-ying,ZHANG Qi
(School of Mathmatics and Computer Science,Shanxi Datong University,Datong Shanxi,037009)

At present,intelligent mobile phone has brought great convenience to people's lives.People can easily send message through the mobile phone,but the message was stolen by hackers because the open-source Android system and wireless network with open air.As to this problem,this paper proposed encrypted message and the end to end transmission method.It can solve this problem effectively.

intelligent mobile phone;encryption algorithm;message

TP301

A

1674-0874(2016)03-0005-03

2015-12-16

山西省高等学校大学生创新创业训练项目[2013268];山西大同大学大学生创新创业训练重点项目[XDC2073110]

申晋祥(1977-),男,山西古县人,硕士,讲师,研究方向:计算机网络。

猜你喜欢
短消息加密算法密钥
密码系统中密钥的状态与保护*
试论电视新闻短消息的采写策略
TPM 2.0密钥迁移协议研究
浅谈广播短消息的采写
一种对称密钥的密钥管理方法及系统
HES:一种更小公钥的同态加密算法
基于小波变换和混沌映射的图像加密算法
对称加密算法RC5的架构设计与电路实现
基于Arnold变换和Lorenz混沌系统的彩色图像加密算法
短消息业务评估体系的研究与实现