Android终端全盘加密数据的还原方法及装置与流程

文档序号:17750835发布日期:2019-05-24 20:57阅读:796来源:国知局
本发明涉及数据还原
技术领域
:,尤其涉及一种Android终端全盘加密数据的还原方法及装置。
背景技术
::随着电子取证技术的发展,手机取证产品形态也越来越多样化。其中手机芯片取证产品近来发展迅速,主要是它经常可以解决其他手机取证产品无法解决的问题,例如,因被摔、被浸泡、被烧毁等导致硬件损坏的手机,或系统存在问题无法开机的手机等,在这些情况下芯片取证是重要的可行方案之一。同时随着Android系统安全技术的快速发展,Android手机等终端取证面临的问题是越来越难于绕过Android系统的安全措施获取Android手机的数据,这时手机芯片取证也是一个可行的方案。手机芯片取证产品一般由芯片镜像提取终端,芯片适配器及对应的提取系统组成,由其提取出的数据生成镜像文件,最后再用手机取证软件对该镜像文件进行取证。然而由于从Android6.0开始,谷歌已经强制要求手机进行全盘加密,从存储芯片读取的镜像文件是加密的,手机取证软件无法对这个镜像文件直接取证,未来芯片取证必然会面临越来越多的全盘加密问题。对Android早期加密算法可以通过暴力的方式进行破解,如公开号为CN104598830A的中国专利就公开了一种破解手机加密文件的破解还原系统,包括用于对手机内部的文件进行逻辑显示的GUI处理单元;查看所述GUI处理单元调用的加密文件,对该加密文件进行解密处理的密码破解单元;查看所述密码破解单元破解文件的进度,在密码破解单元破解文件的同时对破解的文件进行数据更新的数据更新单元;对更新的数据信息进行逻辑处理的控制单元以及对数据进行显示的显示单元;工作状态下:GUI处理单元调用手机内部被加密的文件并对文件进行逻辑排序,密码破解单元对上述文件进行依次密码破解,在破解密码的同时,所述数据更新单元对破解的文件数据进行不断更新,并通过控制单元进行数据存储,通过显示单元进行数据显示。该方法通过对加密文件一个一个进行暴力破解,实现数据还原。但经过多次改进之后的Android加密算法,已经很难通过暴力方式破解。即使已知全盘加密密码,也需要构建一套解密流程程序,并花较长时间来对全盘加密镜像文件进行解密,特别随着手机存储空间越来越大,对全盘加密镜像文件进行解密所需要花费时间也就越长。技术实现要素:本发明所要解决的技术问题是:提供一种Android终端全盘加密数据的还原方法及装置,能够快速还原全盘加密镜像文件。为了解决上述技术问题,本发明采用的技术方案为:一种Android终端全盘加密数据的还原方法,包括:构建用于启动Android内核的Android虚拟机程序;启动Android虚拟机程序;Android虚拟机程序初始化Android内核;加载所述Android根文件系统镜像文件;运行所述Android根文件系统镜像文件中的程序;依据所述Android根文件系统镜像文件中的配置脚本加载待解密的分区镜像文件;启动对应的系统基础服务;依据所述系统基础服务读取所述待解密的分区镜像文件;Android内核依据所述待解密的分区镜像文件对应的用户加密秘钥产生一中间秘钥;依据所述中间秘钥对读取到的待解密的分区镜像文件进行解密。本发明提供的另一个技术方案为:一种Android终端全盘加密数据的还原装置,包括:Android虚拟机程序、Android内核、Android根文件系统镜像文件和待解密的分区镜像文件;所述Android虚拟机程序用于初始化Android内核;所述Android内核用于加载所述Android根文件系统镜像文件;运行所述Android根文件系统镜像文件中的程序;依据所述Android根文件系统镜像文件中的配置脚本加载待解密的分区镜像文件;启动对应的系统基础服务;依据所述系统基础服务读取所述待解密的分区镜像文件;依据所述待解密的分区镜像文件对应的用户加密秘钥产生一中间秘钥;依据所述中间秘钥对读取到的待解密的分区镜像文件进行解密。本发明的有益效果在于:利用仿真技术,通过Android虚拟机以只读方式加载需要解密的全盘镜像文件,即上述待解密的分区镜像文件;之后就可以直接对被加载镜像文件进行取证。同时在Android虚拟机加载全盘镜像文件过程中利用已有的Android密钥加解密算法框架和Android内核的dm-crypt模块,实现快速加载,因为这种方法不并需要对全盘镜像文件完全解密之后才可以访问其文件系统,相比现有的暴力破解全盘加密数据的方式,具有操作简单、解密效率高的优点,使用本发明的方案对全盘加密数据还原,具有极高的应用前景。附图说明图1为本发明实施例的Android终端全盘加密数据的还原方法的流程图;图2为本发明实施例的Android终端全盘加密数据的还原装置的结构示意图。标号说明:1、Android虚拟机程序;2、Android内核;3、Android根文件系统镜像文件;4、待解密的分区镜像文件。具体实施方式为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。本发明最关键的构思在于:采用Android虚拟机加载待解密的分区镜像文件;Android内核对加载的待解密的分区镜像文件进行解密。请参照图1,本发明提供:一种Android终端全盘加密数据的还原方法,包括:构建用于启动Android内核的Android虚拟机程序;启动Android虚拟机程序;Android虚拟机程序初始化Android内核;加载所述Android根文件系统镜像文件;运行所述Android根文件系统镜像文件中的程序;依据所述Android根文件系统镜像文件中的配置脚本加载待解密的分区镜像文件;启动对应的系统基础服务;依据所述系统基础服务读取所述待解密的分区镜像文件;Android内核依据所述待解密的分区镜像文件对应的用户加密秘钥产生一中间秘钥;依据所述中间秘钥对读取到的待解密的分区镜像文件进行解密。从上述描述可知,本发明的Android终端全盘加密数据的还原方法的有益效果在于,利用仿真技术读取待解密的分区镜像文件,并利用Android内核对加载的分区镜像文件进行解密。上述Android根文件系统镜像文件中的期初服务基本上是native服务,具体为哪些服务可以根据脚本进行定制,其中与本发明最相关的服务是adbd服务,通过adbd服务能够提供外部程序访问Android虚拟机中所有分区数据。进一步的,所述Android根文件系统镜像文件中的配置脚本包括第一参数和第二参数,所述第一参数用于表示需要加载的分区;所述第二参数用于表示加密的分区。从上述描述可知,Android根文件系统镜像文件中的init.goldfish.rc脚本包含"mount_all/fstab.goldfish"命令,它指定了Android虚拟机需要加载哪些分区;fstab.goldfish中的每个加载命令中包含加载不同参数,其中“-encryptable”为指示该分区为加密的标识,如果是“-encryptable=footer”表明加密分区元信息存放在加密分区的头部,否则需要通过“-encryptable”指明加密分区元信息存放在哪个专门分区。Android根文件系统镜像文件中的脚本不仅限于init.goldfish.rc脚本,还包括init.rc,init.goldfish.rc等脚本。进一步的,启动对应的系统基础服务;依据所述系统基础服务读取所述待解密的分区镜像文件,具体为:若待解密的分区对应的配置脚本包含所述第二参数,则启动对应的系统基础服务读取待解密的分区元信息。从上述描述可知,由于分区的不同位置存储有不同的信息,而还原数据要读取的是分区元信息,通过从第二参数得知分区元信息的位置,进而读取分区元信息。进一步的,Android内核依据所述待解密的分区镜像文件对应的用户加密秘钥产生一中间秘钥,依据所述中间秘钥对读取到的待解密的分区镜像文件进行解密,进一步包括:Android内核依据读取到的待解密的分区元信息及用户加密秘钥,调用对应的解密算法产生一中间秘钥;使用所述中间秘钥创建所述待解密的分区对应的设备文件。从上述描述可知,Android内核的dm-crypt模块,根据用户加密秘钥,调用一系列解密算法操作产生一个中间秘钥,再由这个中间秘钥通过“/dev/device-mapper”创建加密分区对应设备文件“/dev/block/dm-xxx”,则从这个设备文件读取的数据已为解密数据;其中解密算法引用Android标准解密算法框架,该框架必要时可根据需要进行修改。进一步的,所述待解密的分区镜像文件用于存储系统数据。从上述描述可知,本发明的待解密分区镜像文件即对应Android系统的用户数据分区(userdata分区),用于存储用系统数据。请参照图2,本发明的另一个技术方案为:一种Android终端全盘加密数据的还原装置,包括:Android虚拟机程序1、Android内核2、Android根文件系统镜像文件3和待解密的分区镜像文件4;所述Android虚拟机程序1用于初始化Android内核2;所述Android内核2用于加载所述Android根文件系统镜像文件3;运行所述Android根文件系统镜像文件3中的程序;依据所述Android根文件系统镜像文件3中的配置脚本加载待解密的分区镜像文件4;启动对应的系统基础服务;依据所述系统基础服务读取所述待解密的分区镜像文件4;依据所述待解密的分区镜像文件4对应的用户加密秘钥产生一中间秘钥;依据所述中间秘钥对读取到的待解密的分区镜像文件4进行解密。进一步的,所述Android根文件系统镜像文件3中的配置脚本包括第一参数和第二参数,所述第一参数用于表示需要加载的分区;所述第二参数用于表示加密的分区。进一步的,启动对应的系统基础服务;依据所述系统基础服务读取所述待解密的分区镜像文件,具体为:若待解密的分区对应的配置脚本包含所述第二参数,则启动对应的系统基础服务读取待解密的分区元信息。进一步的,Android内核2依据所述待解密的分区镜像文件4对应的用户加密秘钥产生一中间秘钥,依据所述中间秘钥对读取到的待解密的分区镜像文件4进行解密,进一步包括:Android内核2依据读取到的待解密的分区元信息及用户加密秘钥,调用对应的解密算法产生一中间秘钥;使用所述中间秘钥创建所述待解密的分区对应的设备文件。进一步的,所述待解密的分区镜像文件4用于存储系统数据。本发明的实施例一为:一种Android终端全盘加密数据的还原装置,包括:Android虚拟机程序、Android内核、Android根文件系统镜像文件和待解密的分区镜像文件;Android虚拟机程序是主机启动Android虚拟机入口,提供丰富参数来控制Android虚拟机启动及运行,由于本实施例主要是针对待解密的分区,所以通过一系列参数优化虚拟机启动,如:"-no-boot-anim"、"-no-audio"、"-no-skin"和"-no-window";其中"-no-window"将使Android虚拟机不启动Android系统应用层相关服务和程序,以加速该发明方案解密分区加载过程;本实施例涉及到其他镜像文件也是通过参数形式为Android虚拟机指定具体文件,具体主要涉及以下参数:"-kernel"指定Android内核镜像文件,“-ramdisk”指定Android根文件系统镜像文件,“-data”指定待解密的全盘镜像文件,即上述待解密的分区镜像文件;Android系统内核镜像文件是Android虚拟机的内核程序,它是连接虚拟机与Android应用层最为关键的部分,为了使Android应用能够像运行在手机一样运行,除提供基本内核功能之外,也为Android虚拟机提供一些特定虚拟设备,这些特殊性使其内核有个特别称名“goldfish”;内核程序所包含的“dm-crypt”模块是本实施例的关键模块,由它来具体执行分区数据解密操作,其解密前置操作是根据密钥通过内核来创建已解密的块设备文件;Android根文件系统镜像文件是Android系统中boot分区镜像文件中一部分,它由内核来负责加载其到根目录-"/"的内存文件系统,此根文件系统中包含最重要的初始化程序-init和各种配置脚本文件,它们负责系统初始化和各种服务的启动,其中与本实施例最为相关是这些脚本包含指定加载哪些分区以及其加载方法;待解密的镜像文件,在本领域也叫待解密的全盘镜像文件,该镜像文件是指Android系统的userdata分区,用于保存用户数据,分区文件系统类型目前主要是ext4;Android虚拟机程序、Android内核、Android根文件系统镜像文件和待解密的分区镜像文件工作如下:所述Android虚拟机程序用于初始化Android内核;所述Android内核用于加载所述Android根文件系统镜像文件;运行所述Android根文件系统镜像文件中的程序;依据所述Android根文件系统镜像文件中的配置脚本加载待解密的分区镜像文件;所述Android根文件系统镜像文件中的配置脚本包括第一参数和第二参数,所述第一参数用于表示Android虚拟机需要加载的分区;所述第二参数用于表示加密的分区;若待解密的分区对应的配置脚本包含所述第二参数,则启动对应的系统基础服务读取待解密的分区元信息;Android内核依据读取到的待解密的分区元信息及用户加密秘钥,调用对应的解密算法产生一中间秘钥;使用所述中间秘钥创建所述待解密的分区对应的设备文件。本发明的实施例二为:一种与上述实施例一的Android终端全盘加密数据的还原系统对应的方法,包括:构建用于启动Android内核的Android虚拟机程序;启动Android虚拟机程序;设置Android虚拟机程序的相关参数优化Android虚拟机的请以及为Android虚拟机指定具体文件,如:"-no-boot-anim"、"-no-audio"、"-no-skin"和"-no-window";其中"-no-window"将使Android虚拟机不启动Android系统应用层相关服务和程序,以加速该发明方案解密分区加载过程;"-kernel"指定Android内核镜像文件,“-ramdisk”指定Android根文件系统镜像文件,“-data”指定待解密的全盘镜像文件;Android虚拟机程序初始化Android内核;具体的,Android虚拟机程序根据Android内核镜像文件,启动Android内核来初始化各虚拟设备并为用户空间程序运行做好准备;加载所述Android根文件系统镜像文件;运行所述Android根文件系统镜像文件中的程序;具体的,Android内核初始完成之后,加载Android根文件系统镜像文件,并从中找到用户空间的第一个初始化程序-init,从内核空间切换到用户空间并运行init程序;依据所述Android根文件系统镜像文件中的配置脚本加载待解密的分区镜像文件;所述Android根文件系统镜像文件中的配置脚本包括第一参数和第二参数,所述第一参数用于表示需要加载的分区;所述第二参数用于表示加密的分区;具体的,在init.goldfish.rc脚本本包含"mount_all/fstab.goldfish"命令,fstab.goldfish文件是包含在Android根文件系统镜像中,它指定了Android虚拟系统需要加载哪些分区;fstab.goldfish中的每个加载命令中包含加载不同参数,其中“-encryptable”指示该分区为加密的标识,如果是“-encryptable=footer”表明加密分区元信息存放在加密分区的头部,否则需要通过“-encryptable”指明加密分区元信息存放在哪个专门分区;若待解密的分区对应的配置脚本包含所述第二参数,则启动对应的系统基础服务,依据所述系统基础服务读取待解密的分区元信息;如:在待解密的分区加载过程中如果有发现包含“-encryptable”标识,则启动相关服务读取待解密的分区元信息;Android内核依据读取到的待解密的分区元信息及用户加密秘钥,调用对应的解密算法产生一中间秘钥;使用所述中间秘钥创建所述待解密的分区对应的设备文件;如:根据读取到的加密分区元信息及用户加密密钥(如没有则使用缺省密钥),调用一系列解密算法操作(引用Android标准解密算法框架,必要时根据需要做修改)产生一个中间密钥,再由这个中间密钥通过“/dev/device-mapper”创建加密分区对应设备文件“/dev/block/dm-xxx”,从这个设备文件读取的数据已为解密数据;外部程序通过adb程序即可访问已经解密的userdata分区;继续Android虚拟机启动流程,可以实现对其他分区的数据还原。综上所述,本发明提供的Android终端全盘加密数据的还原方法及系统,使Android虚拟机可以以只读方式加载待解密的全盘镜像文件,之后就可以直接对被加载全盘镜像进行取证。同时Android虚拟机加载在全盘镜像过程中利用Android密钥加解密算法框架和Android内核dm-crypt模块,使得加载过程快速,因为这种方法不并需要对全盘镜像文件完全解密之后才可以访问其文件系统;进一步来讲,也可根据特定手机解密流程修改Android虚拟机解密流程以快速增加其支持率。以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的
技术领域
:,均同理包括在本发明的专利保护范围内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1