APP下载

Android平台加密算法及系统实现

2017-05-31苏莹蔡芳

软件导刊 2017年5期
关键词:Android系统加密算法

苏莹 蔡芳

摘要摘要:为满足人们对Android手机私密信息的保护,针对Android系统的特点,阐释对称加密算法和非对称加密算法的基本原理,并着重分析3种常用加密算法的加密过程。针对Android手机隐私泄露问题,提供一套可行的基于AES加密算法的手机隐私保护解决方案。分析用户需求,总结用户对Android加密软件的需求,进行系统设计和详细设计,实现一款集文件加密和管理于一身的Android软件,并对软件进行测试。

关键词关键词:加密算法;Android系统;加密性能;算法安全;文件加密

DOIDOI:10.11907/rjdk.171086

中图分类号:TP309.7

文献标识码:A文章编号文章编号:16727800(2017)005017103

0引言

智能手機的出现极大改变了人们的生活方式,当人们已经习惯和依赖手机时,也更加注重手机个人信息的安全性。在数据信息的安全保障措施中,信息加密技术是最主要和最基本的方法,信息加密是由加密算法具体实现的,利用密钥确保信息安全[1]。以Android平台为代表的智能手机操作系统在当前最为流行,然而Android的开放性也使得其安全性大为降低,以致出现了很多使用Android操作系统的用户隐私被泄露的现象[2]。鉴于此,对Android平台下的数据安全进行研究迫在眉睫。

本文针对目前几种较为成熟的加密算法,对算法加密过程、安全性及Android平台的适用性等进行研究,根据Android平台的特点选定一种加密算法设计出一款功能强大的加密软件。加密软件可以对本地的文本文件和图片进行加密和解密,并实现文件的基本可视化界面操作。

1加密算法特性分析

对于RSA算法,其安全性很大程度上依赖于大素数分解,但没有任何理论证明其安全性等同于大数分解的难度[3]。就目前而言,分解n是最有效的破解方法。当前计算机已经能分解多个十进制的大素数,因此n必须足够大。然而当n过大时会降低加密效率。RSA最大的缺点在于其计算量太大,会耗费大量系统资源。由于计算量太大,RSA算法多用于传递密钥、签名等少量信息的加密,因而对于文件加密不合适。RSA算法在运算性能不是很强大的Android系统应用上,显然不太合适。

DES算法具有很高的安全性,目前除了用穷举搜索法对抗DES算法攻击外,还未发现更有效的方法[34]。在DES算法中只用到了64位密钥中的其中56位,第8、16、24、…、64位这8个位没有参与DES运算,由此可以看出,DES的安全性是基于除第8、16、24、…、64位以外的56位的组合变化才使得256得以保证,因此在实际应用中,应该避开使用第8、16、24、…、64位作为有效的数据位,即使用其它的56位作为有效数据位,才能保证DES算法安全可靠地发挥作用。另外,DES算法中S盒8个选择函数矩阵的设计原理至今未公布,因此严格地讲,DES算法并不是真正的公开加密算法。如果S盒中存在陷门,那么DES算法就没有安全性可言了,这显然不符合本课题对算法的要求。

AES算法是一个分组迭代密码,分组长度和密钥长度设计灵活。与DES算法相比,AES算法支持可变分组长度,分组长度可设定为32bit的任意倍数,最小为128bit,最大为256bit。另外AES算法遵循宽轨迹策略,因此它可以有效对抗差分密码分析和线性密码分析[56]。目前,AES算法被列为是比现今任何其它加密算法都要安全的一种算法,在理论和实际应用中,它被认为是“安全的”,因为要破解AES算法,唯一有效的方法就是生成所有密钥,并精确地测量出加密线程所需的时间。

3种算法的性能对比分析如表1所示。RSA算法在保证安全的前提下计算量太大,不适合Android系统;DES算法安全性得不到保证,也不适合本次课题的要求;而AES算法由于其安全性高、运算速度快和资源消耗低的特点非常适合用于Android下的加密设计。

2功能需求与设计

2.1功能需求

一款功能齐全的基于Android系统的加密软件,软件系统功能主要分为文件加密、文件解密、文件浏览、文件操作和设置密码五大块。软件功能如图1所示。

(1)文件加密。系统可以对文本文件和图片进行加密,对文件加密后,在原文件的目录中创建密文文件,并删除原文件。对于不支持加密的文件要给予提示,以免误删。因此,要求加密算法为安全性和效率较高的AES算法。

(2) 文件解密。文件解密是将密文文件还原成明文,要能够完全还原成加密前的内容,解密后删除密文文件。

(3)密码设置。分为软件启动密码和文件加密密码。软件启动时要求用户输入密码,随后对文件进行操作。软件启动密码指软件启动时的初始密码,在设置选项里可以更改软件启动密码。文件加密密码是用于加密文件的密码,当用户选择对文件解密后要求输入文件的加密密码,当密码验证通过后再将文件解密。文件的加密密码也有一个初始值,可以在设置里更改。

(4)文件浏览。文件浏览要显示当前所在路径,以列表形式显示存储卡里的文件和文件夹,列表的每一项都由文件图标和文件名组成。用户能上下滑动屏幕以浏览文件,当点击一个目录时就进入目录。

(5)文件操作。在文件列表长按某个文件时,弹出功能选择框,功能选项和目标有:删除、打开、复制、粘贴、重命名。

2.2总体设计

程序首次启动要求用户输入默认的软件启动密码,正确输入密码后进入主界面,主界面是手机sd卡根目录的文件列表展示,用户可以选择“手机”、“SD卡”、“日志”和“设置”选项,或者直接进行SD卡的文件浏览。程序流程如图2所示。

当用户点击目录时直接进入目录,当点击文件时则调用系统的程序来打开文件。当长按某个文件或文件夹时弹出列表选择框让用户选择操作方式,操作方式有打开、删除、复制、粘贴、重命名、加密和解密,选择操作,程序执行各自对应的方法,然后关闭列表选择框。

在选择加密操作后,即调用加密方法,判断:如果在sd卡根目录下存在日志文件,则将此密文文件的日志信息写入日志文件中;如果日志文件不存在,则在sd卡根目录下创建日志文件,再写入日志信息。选择解密文件后,弹出对话框让用户输入密码,密码验证正确后执行解密方法。

当用户选择查看日志时,出现列表对话框,对话框每一项都是密文的日志信息。对话框每次将日志文件的内容按行读出信息,然后在在每个选项中展示。

当用户选择设置密码时,出现密码对话框,对话框包括两个单选按钮和一个文本输入框,单选按钮是选择设置软件启动密码和文件加密密码,输入框接收用户输入的密码。

3关键技术及实现

设置密码包括软件启动密码和文件加密密码,两个密码都采用SharedPreferences方式存储。加密完某个文件时,将文件的绝对路径名和当前系统时间一并写入日志文件中,其中日志文件内容不能被覆盖,只允许将新内容加入原内容之后。当要显示日志信息时,弹出列表对话框。列表对话框的读取日志文件,对话框每一项显示文件的绝对路径名和被加密时的时间。

被加密的文件不能被读取或者读取的是乱码,文件被解密后要求能被正确读取,而且没有乱码现象或者质量损失的情况,文件加密后要求将此日志信息正确写入日志文件中。在进行文件浏览时要求能正确显示各目录下的文件名和子目录名,对文件的各种操作能够正确执行。在显示日志时能够正确显示日志文件的内容,没有乱码或显示格式混乱的情况。设置密码要求将用户设置的密码成功保存,在密码不被修改的情况下,密码不被改变。

由于程序涉及读文件的操作,要提防用户操作系统的重要文件或目录,这就要求在显示文件时将系统重要文件或目录过滤掉。

对于加密算法所需密钥则是用由用户提供的密码,程序根据密码生成密钥,密码保存在SharedPreferred(操作模式为Context.MODE_PRIVATE)中。对文件加密先用FileInputStream获得明文的输入流形成字符串,再将字符串加密,密文字符串用输出流FileInputStream将密文写入新文件,然后将源文件删除。解密过程与加密过程相同,只不过加密与解密的方法不同。加密解密所需的密钥根据SharedPreferred中的密码经过转换得到。

软件启动密码的实现,则可以设计一个登录流程,当输入正确密码时进入主界面。对文件类型的判断用getName()获得文件的名字,根据文件后缀名设置不同的图标,用isFile()判断文件是标准文件还是目录,如果是目录则进入继续反复判断,直到文件夹没有子文件夹为止。

文件的浏览则用File类的list()方法获得根目录下所文件和文件夹的字符串列表,将列表放入中间容器BaseAdapter中,再将BaseAdapter的内容显示在Listview中。

當用户选择退出时,程序调用MainActivity.this.finish()方法退出程序。

4系统测试

4.1系统测试目的及环境

原始问题的复杂性和开发各个阶段的多样性,使得程序开发在各个阶段都可能出现错误。为了更好地提高程序的效率和各种平台的兼容性,需对软件进行各种测试。在本程序中,对文件的操作较多,对文件的读写操作可能出现输入输出流错误的情况,这样的错误会导致文件损坏,并且,在对文件的读写操作上可能出现编码不一致的问题。在对密码的保存问题上,应测试是否出现其它程序访问SharedPreferences的情况。

4.2测试结果

本程序的开发环境是Android 4.2,因此选择在4.2以上版本上测试。测试结果如图3所示。

5结语

在本次加密算法研究与实现过程中,主要完成了如下工作:①研究和总结了常用加密算法RSA、DES和AES的实现过程,针对这3种算法,从算法安全性、运行速度、资源消耗和密钥管理等角度分析并选择适合Android平台的加密算法;②选择适合的加密算法后,实现了基于AES算法集文件操作和加密于一身的的加密软件,在此过程中确定了软件的设计目标、需求分析、系统功能模块设计和程序流程设计;③根据系统流程对各个子功能模块进行编码设计,最后针对软件功能和当前开发环境进行了系统测试。

参考文献参考文献:

[1]丰生强.Android软件安全与逆向分析[M].北京:人民邮电出版社,2013.

[2]蒋绍林,王金双,张涛.Android 安全研究综述[J].计算机应用与软件,2012(10):205210.

[3]JONATHAN KATZ,YEHUDA LINDELL.Introduction to modern cryptography[M].London:Chapman and Hall,2007.

[4]吴明航.DES和RSA混合加密算法的研究[D].哈尔滨:哈尔滨工业大学,2013.

[5]姚培娟,张志利.Android智能手机安全问题和防护策略研究[J].现代计算机:专业版,2015(1):6972.

[6]MODEL JISOO OH,MINWOO PARK,TAIMYOUNG CHUNG.Enhancing security of the android platform via multilevel security[J].Applications and Techniques in Information Security Communications in Computer and Information Science,2014.

责任编辑(责任编辑:孙娟)

猜你喜欢

Android系统加密算法
Android系统上的移动互联网集成平台开发机制
HES:一种更小公钥的同态加密算法
基于小波变换和混沌映射的图像加密算法
Hill加密算法的改进
对称加密算法RC5的架构设计与电路实现
基于混沌映射和DNA编码的图像加密算法
基于Arnold变换和Lorenz混沌系统的彩色图像加密算法