APP下载

移动智能终端的个人隐私保护系统的开发设计

2017-07-10李春杰史正乐高慧敏颜智润

计算机应用与软件 2017年6期
关键词:加解密管理器调用

李春杰 史正乐 高慧敏 颜智润

(中国科学技术大学苏州研究院 江苏 苏州 215000)

移动智能终端的个人隐私保护系统的开发设计

李春杰 史正乐 高慧敏 颜智润

(中国科学技术大学苏州研究院 江苏 苏州 215000)

Android系统是最热门的移动智能终端之一,保护Android用户的隐私非常重要。该终端加解密隐私保护系统,利用hook技术来捕捉并劫持用户进程对文件的读写操作,通过添加具有加解密功能的函数模块,替换用户动态链接库中原有的读写函数,从而达到加解密的目的。系统的核心加解密模块采用具有易于实现且运行速度快的RC4算法,保证了运行效率。另外,在加解密过程中,用户不需要额外操作,降低了系统的使用难度。

Android 隐私保护 hook技术 加解密功能 RC4

0 引 言

2007年11月5日,Google宣布推出了基于Linux、开放源码的智能手机操作系统Android[1]。短短几年间,Android已经成为了最热门的智能终端开发平台之一[2]。

智能手机成了新时代生活的必须品,用户通过手机来进行正常的社交、工作与学习的现象很普遍。与此同时,手机涉及到了大量的商业秘密和个人信息等隐私数据。这些数据的形式包括图片、视频、短信和通讯录等。对于移动手机终端的隐私保护,是基于现在的市场需求而存在的。

在Android移动手机平台,安全防护是一个重要的研究方向。隐私保护属于安全防护的一部分,目前市场上已经出现了大量优秀的软件产品,比如QQ手机管家的隐私保护软件,智能锁等软件。这些软件主要是通过输入密码进入软件,并通过选择短信,照片,通讯录等应用程序,再对软件进行上锁操作。用户可以通过程序对需要加锁的程序进行设定并修改。但是这些软件并没有从根本上实现对数据的加密保护。

目前国内外对与Android平台的关于隐私保护的研究主要可以分为静态分析和动态控制[3]。静态分析主要是在对软件进行扫描,判断是否有恶意行为,类似于常见在电脑端的利用杀毒软件对电脑进行扫描的方式[4]。动态控制是对软件进行实时的监控,但是需要root权限[5]。

本文实现的隐私保护属于动态控制,需要手机取得root权限。整个系统的工作模式如图1所示。

图1 终端加解密系统工作模式图

该终端加解密系统的工作流程如图2所示。用户打开终端保护系统后,若已注册则进行登录操作,若未注册则进行注册操作,设置用户名,密码和安全问题答案。用户设置的安全问题可用于用户丢失密码后重置账户密码。用户登录后,判断用户是否合法,当用户合法时,设置需要绑定的用户进程和第三方APP。绑定完成后,判断用户对文件的操作是否为打开和关闭操作。若用户关闭文件,则对文件进行加密。此时已经被加密后的文件不能被其他未被绑定的用户进程或第三方APP打开,以密文存在系统中。如果用户需要查看被加密的数据,则需在被绑定的进程或第三方APP中再次打开该文件,此时完成文件的解密操作。

图2 终端加解密系统的工作流程图

1 相关工作

Android是基于Linux内核的开源系统,架构分为四个层,分别为应用程序层,应用程序框架层,系统运行库层和Linux核心层[6]。

应用程序代码由Java实现,由于其安全机制和设计特点,无法直接对系统硬件和底层设备进行操作,能够实现功能相对简单。对于Linux核心层,如果进行hook劫持进程操作,需要重新编译源码,移植性较差[7]。因此本系统选择在系统运行库层通过JNI(Java Native Interface)开发,并使用Linux提供的函数实现透明加解密功能[8]。

本文提出的终端加解密系统是基于系统运行库层的开发,在应用程序层完成界面设计等工作。本文运用的钩子透明加密解密的本质是劫持函数调用。在Linux的用户态,每个进程都有独立的进程空间。

为了在终端系统上实现透明加解密,先要找到被绑定的用户进程和第三方APP中调用open和close函数所在的动态链接库,然后通过底层hook代码劫持该动态链接库。通过找到被绑定的用户进程和第三方APP的open和close函数的地址,利用终端加密系统的new_open函数和new_close函数对原有的函数进行替换,实现对文件的加解密功能。原有的open函数完成文件的打开操作,close函数完成文件的关闭操作。在new_open函数中,先完成文件的打开操作,再判断文件是否被加密,若被加密,则进行解密操作。在 new_close函数中,先完成文件的关闭操作,再判断文件是否处于加密状态,若为非加密状态,则对文件进行加密。当用户通过被劫持的用户进程或第三方APP打开文件,触发new_open函数,对文件进行解密,文件以明文显示;关闭文件时,触发new_close函数,对文件进行加密,文件以密文存储,除被劫持的用户进程或第三方APP外的其它进程将无法打开该文件。

通过上文描述,本文提出的终端加解密系统的核心功能是通过进程拦截,对被劫持的用户进程或第三方APP用具有解密功能的new_open函数和具有加密功能的new_close函数对原函数open和close进行替换,从而实现对私密数据的保护。

2 关键技术实现

2.1 进程拦截

在终端隐私保护系统中,程序的整体流程如图3所示。进程拦截的主要函数是inject_remote_process函数[9]。inject_remote_process函数的主要参数有:

1) library_path,被拦截的进程的动态链接库文件的绝对路径。在本终端隐私保护系统中,是open和close函数存在的动态链接库。

2) function_name,想要执行的函数名,该函数为动态链接库中的函数。在本终端隐私保护系统中,是open函数和close函数。

inject_remote_process函数的主要流程是:

1) 使用ptrace_attach函数指定目标进程,通过ptrace_getregs函数获取目标进程的寄存器,保存现场。

由get_remote_add函数获取目标进程mmap函数地址。

2) 调用ptrace_call_wrapper函数为所注入的具有加解密功能的new_open和new_close函数所在的动态链接库文件分配内存,根据ptrace_retval函数从寄存器中获取mmap函数返回申请的内存首地址,把要注入的动态链接库文件拷贝到目标进程中。

3) 调用ptrace_retval函数从寄存器中获取mmap函数返回申请的内存首地址。

4) 通过get_remote_addr函数依次获取Linker中dlopen dlsym dlclose dlerror函数的地址, 将mmap函数返回申请到的内存首地址等为参数,调用dlopen得到返回值存放在sohandle中。通过sohandle和注入的函数名hook_entry调用dlsym函数返回注入函数hook_entry的地址。

5) 修改PC等相关寄存器,使其指向functionaddr,调用function即调用hook_entry。再次修改PC等相关寄存器,使其指向dlclose,调用dlclose(sohandle)关闭lib文件。

6) 调用ptrace_setregs恢复寄存器调用ptrace_detach退出ptrace。

图3 程序的整体流程图

在执行inject_remote_process函数主要流程中的第5步中,调用了hook_entry函数,在该函数中,完成了对open函数和close函数的替换。Hook_entry函数的主要流程如图4所示。

图4 hook_entry函数的流程图

为了避免文件在加解密的过程中出现混乱,新建了一个名为hook的文件夹,存放new_open和new_close的临时文件。该文件为open函数中根据参数path对应到的文件。为避免占用过多内存,可以删除临时文件。

由于一个APP会调用多个线程,在对应用程序进程进行绑定时,需要hook一个用户组的进程。

通过find_pid_of函数根据所给的进程名返回对应的进程号后,hookAll_appProcess函数根据所给的进程号把属于此进程的用户组所用的进程号存入processID_group中。GetProcess_ui函数返回此进程的用户组id。通过上述四个函数,完成hook一个用户组的进程。

2.2 加密与解密

在终端隐私保护系统中,new_close函数中对文件执行加密操作,new_open函数中对文件进行解密操作,new_open和new_close函数的流程如图5所示。

图5 new_open和new_close函数流程图

RC4是一种对称加密算法,使用的密钥为单钥[10]。RC4通过字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密[11]。在终端隐私保护系统中,调用RC4算法,主要函数为RC4(unsigned char plaintext[],unsigned char key[],int keylength,unsigned char keystream[],unsigned char ciphertext[],int size),需要的参数分别为plaintext[]:需要加密的明文,key:初始密钥,keylength:密钥长度,keystream[]为扩展后的256位密钥流,ciphertext[]为加密后的密文[12]。

3 测 试

进程注入需要先获得root权限,所以测试时手机需要取得root权限。现通过对比测试终端隐私保护系统核心的加解密功能,测试机器是联想P700,系统是Android4.0.3。在终端隐私保护系统未对系统进行加密时,通过Re管理器和TXT阅读器打开手机内TXTDocument.txt文件可以正常显示明文信息。其中Re管理器和TXT阅读器均为第三方APP,可对系统中的文件进行操作。

启动终端隐私保护系统,通过inject命令对Re管理器进行劫持,(其中inject命令是调用终端隐私保护系统生成的可执行程序)此时Re管理器的文件操作函数被hook为具有加解密功能的文件操作函数。这时通过Re管理器打开TXTDocument.txt,文件为明文状态,如图6所示,文件可读。通过Re管理器关闭TXTDocument.txt,对文件进行加密操作,文件转为密文。此时通过TXT阅读器(非被劫持进程)打开TXTDocument.txt如图7所示,文件已经处于密文状态,打开的文件内容为乱码(说明隐私终端保护系统的加密功能正常)。再次通过Re管理器(被劫持进程)打开上述加密文件如图6所示,文件为明文状态,文件可读(说明隐私终端保护系统的解密功能正常)。

图6 Re管理器打开TXTDocument.txt

图7 TXT管理器打开TXTDocument.txt

上述测试结果表明该终端隐私保护系统可以顺利完成对隐私数据的保护,让被绑定的进程对文件的操作具有透明加解密功能。

4 结 语

Android系统已经成为主流的手机操作系统之一,本文针对android手机用户的隐私保护提出并实现了一种保护方法。该方法通过劫持open和close函数,调用new_open和new_close函数,对文件进行了加密和解密,从根本上实现了对文件的保护。通过在手机上的测试,验证了该方法是有效的。下一步的重点是实现监控系统的权限,从而达到对短信的监控。

[1] 彭国军,邵玉如,王泰格.基于Android的手机隐私保护技术及实现[J].信息网络安全,2012(4):54-57.

[2] 张玉清,王凯,杨欢,等.Android安全综述[J].计算机研究与发展,2014,51(7):1385-1396.

[3] 宋杰,党李成,郭振朝,等.AndroidOS手机平台的安全机制分析和应用研究[J].计算机技术与发展,2010,20(6):152-155.

[4] 杨欢,张玉清,胡予濮,等.基于多类特征的Android应用恶意行为检测系统[J].计算机学报,2014,37(1):15-27.

[5] 王伟,张之栋,雷雨诗,等.基于策略的Android应用检测系统[J].信息网络安全,2013(2):30-34.

[6] 乜聚虎,周学海,余艳玮,等.Android安全加固技术[J].计算机系统应用,2011,20(10):74-77.

[7] 温敏,艾丽蓉,王志国.Android智能手机系统中文件实时监控的研究与实现[J].科学技术与工程,2009(7):1716-1719.

[8] 詹成国,朱伟,徐敏.基于Android的测控装置人机界面的设计与开发[J].电力自动化设备,2012,32(1):119-122.

[9]Android下通过hook技术实现透明加解密保障数据安全[J/OL].http://netsecurity.51cto.com/art/201311/417542.htm.

[10] 蔡传安.RC4加密算法及其安全性研究[J].中国水运:下半月,2012(8):33-35.

[11] 李琴,曾凡平.RC4密码的改进方法及其性能分析[J].计算机工程,2008,34(18):181-183.

[12] 常亚勤.对流密码RC4的区分攻击[J].计算机工程,2011,37(3):119-120.

DEVELOPMENT AND DESIGN OF PERSONAL PRIVACY PROTECTION SYSTEM OF MOBILE INTELLIGENT TERMINAL

Li Chunjie Shi Zhengle Gao Huimin Yan Zhirun

(SuzhouInstituteforAdvancedStudy,UniversityofScienceandTechnologyofChina,Suzhou215000,Jiangsu,China)

Android is one of the most popular mobile intelligent terminal operating system, and it is very important to protect the privacy of Android users. The terminal encryption and decryption of the privacy protection system uses hook technology to capture and hijack the read-write operations of the user process to the documents. By adding a function with encryption and decryption function module, it replaces the original read-write function in user’s dynamic link library to achieve the purpose of encryption and decryption. The core encryption and decryption module of the system adopts the RC4 algorithm which is easy to implement and run fast, and ensures the running efficiency. Also in the encryption and decryption process, the user does not require additional operations, reducing the difficulty of using the system.

Android Privacy protection Hook technology Encrypt declassify RC4

2016-05-24。江苏省科技项目-基础研究计划(自然科学基金:BK20141209);苏州市应用基础研究项目(SYG201543)。李春杰,副研究员,主研领域:嵌入式系统设计与信息安全。史正乐,硕士。高慧敏,硕士。颜智润,硕士。

TP3

A

10.3969/j.issn.1000-386x.2017.06.039

猜你喜欢

加解密管理器调用
应急状态启动磁盘管理器
核电项目物项调用管理的应用研究
Windows文件缓冲处理技术概述
LabWindows/CVI下基于ActiveX技术的Excel调用
基于系统调用的恶意软件检测技术研究
电子取证中常见数据加解密理论与方法研究
基于FPGA的LFSR异步加解密系统
高集成度2.5A备份电源管理器简化锂离子电池备份系统
网络数据传输的加解密系统研究
快速导出QQ群消息