发明内容
本发明的目的是提供一种有效的途径对移动Android智能终端上运行的应用进行远程监控,及时的掌握移动Android智能终端运行的应用程序,并能够有效地阻止不安全应用的执行。
为了达到上述目的,本发明提出一种基于地理位置的Android智能终端运行环境可信控制方法及系统。本发明包括的基于地理位置的Android智能终端运行环境可信控制系统架构可以划分为两个子系统,分别为监控中心子系统和Android终端运行状态度量与报告子系统。
本发明Android智能终端运行环境可信控制方法,其步骤为:
1)对Android智能终端采用Android OS安全启动,所述Android OS安全启动过程触发状态度量服务;
2)所述状态度量服务对该Android智能终端上的Android初始化代码进行度量并验证,完成Android OS安全启动;
3)所述Android OS安全启动完成后,在所述Android智能终端中启动Android dalvik应用;
4)若所述Android智能终端存在于设定敏感区域内,则发送所述Android dalvik应用完整性信息到监控中心进行安全信息验证;
5)所述监控中心根据安全策略验证所述Android dalvik应用完整性信息,并返回验证结果到所述Android智能终端;
6)所述Android智能终端在设定的时间周期内再次发送所述Android dalvik完整性信息到监控中心验证,所述监控中心切断未通过验证的Android智能终端网络信号,对通过验证的Android智能终端保持可信连接;
7)当所述Android智能终端离开敏感区域,结束可信控制。
发送所述Android dalvik应用完整性信息到监控中心进行安全信息验证的方法如下:
2-1)若初次检测在敏感区域内,终端向监控中心发送用户名,同时终端存储用户输入的服务器预分配口令于内存中;
2-2)所述监控中心返回随机数至终端,该终端若持续未接收到监控中心数据则锁定终端操作;
2-3)度量值上传模块对随机数及用户预分配口令进行Sha-1运算,生成Android dalvik应用完整性信息的加密密钥;
2-4)终端通过度量值上传模块主动报告加密后的Android dalvik应用完整性信息至监控中心进行验证。
所述监控中心根据安全策略验证所述Android dalvik应用完整性信息的方法如下:
3-1)Android终端完整性信息收集模块收集终端Android dalvik应用完整性信息,同时把安全策略管理模块中包含不安全dalvik应用的度量值存入黑名单中并进行实时更新;
3-2)Android终端完整性信息收集模块使用用户名对应的随机数及用户口令生成解密密钥;
3-3)Android终端完整性信息收集模块对Android dalvik应用完整性信息进行解密;
3-4)使用Android终端完整性验证模块依次验证Android dalvik应用完整性信息中的完整性度量值流是否符合安全策略;
3-5)所述Android终端完整性验证模块记录PID-Unsecure不安全应用进程ID并发送不安全应用进程名及ID至Android终端完整性信息收集模块;
3-6)所述Android终端完整性信息收集模块将返回不安全应用进程ID及对应的进程名至终端的度量值上传模块。
在设定的时间周期内再次发送所述Android dalvik完整性信息到监控中心验证的方法如下:
4-1)度量值上传模块直接关闭由监控中心返回的不安全应用进程ID的对应进程;
4-2)用户确认后,度量值上传模块再次上传所述Android dalvik应用完整性信息至监控中心;
4-3)所述Android终端完整性验证模块再次验证收到的Android dalvik应用完整性信息中的完整性度量值流是否符合安全策略,同时验证新上传的Android dalvik应用完整性信息中是否包含PID-Unsecure;
4-4)若不符合安全策略或新上传的Android dalvik应用完整性信息中包含PID-Unsecure则发送切断终端网络信号指令至网络连接控制模块;
4-5)所述网络连接控制模块切断终端对其安全域内网络服务的访问能力。
判断所述Android智能终端存在于设定敏感区域内的方法如下:
5-1)在所述终端地理位置监控模块中设置敏感的GPS区域位置范围;
5-2)该终端实时判断目前地理位置是否位于敏感域范围内;
5-3)若所述终端位于敏感区域则向监控中心发送验证信息。
所述Android OS安全启动方法如下:
6-1)采用所述终端的OTP存储引导程序,引导程序度量Android Linux内核并根据存储于内存中的度量值进行验证;
6-2)若验证通过Android内核正常启动,使用所述Android内核态的完整性度量模块度量Android初始化代码;
6-3)初始完整性验证模块验证输入的Android初始化代码度量值并输出验证结果;
6-4)将验证结果返回至完整性度量模块,该模块根据验证结果确定Android操作系统初始化决策。
对所述Android初始化代码进行度量内容包括:度量的Android OS内核模块和Android初始化配置文件;度量守护进程和度量Dalvik虚拟机初始化进程;度量应用层的状态报告服务。
对所述Android初始化代码进行验证内容包括:验证Android OS内核模块的度量值并返回验证结果;验证Android初始化配置文件度量值并返回验证结果;验证守护进程的度量值并返回结果;验证dalvik虚拟机初始化进程的度量值并返回验证结果;验证应用层的状态报告服务的度量值并返回验证结果。
所述度量应用层的状态报告服务的流程是:
9-1)操作系统Android OS启动完成后自启动状态报告服务;并通过MMAP映射状态报告服务Apk包中的.dex文件至dalvik虚拟机内存空间;
9-2)所述操作系统调用内核态的完整性度量模块对内存中的.dex文件进行度量生成度量值。
本发明还提出一种Android智能终端运行环境可信控制系统,包括监控中心子系统和Android终端运行状态度量与报告子系统,其特征在于,
所述监控中心子系统包括:
Android终端完整性信息收集模块,用于收集Android终端发送的Android dalvik应用完整性信息,同时返回不安全应用程序ID及对应进程名至Android终端;
Android终端完整性验证模块,对输入Android dalvik应用完整性信息进行验证和记录不安全进程ID,
还用于发送不安全应用进程ID、进程名至Android终端完整性信息终端模块及对再次输入的完整性信息进行验证;
安全策略管理模块,将包含不安全dalvik应用的度量值存入黑名单中,并更新黑名单中的dalvik应用度量值;
网络连接控制模块,用于控制基站/热点与终端之间的信号连接,切断终端运行不安全dalvik应用与热点/基站间的通信连接;
所述Android终端运行状态度量与报告子系统分为Android终端状态报告服务系统和Android终端状态度量服务系统;
所述Android终端状态报告服务系统包括:
终端地理位置监控模块,验证终端位置是否位于敏感区域内,若位于敏感域内则通过度量值上传模块,将生成的Android dalvik应用完整性信息发送到监控中心子系统进行验证;
度量值上传模块,将由内核完整性度量模块度量生成的Android终端完整性度量值及对应的Android dalvik应用进程名和当前正在运行进程ID发送至监控中心的完整性信息收集模块;
所述Android终端状态度量服务系统包括:
安全引导模块,保证Android智能终端启动时装载的Linux内核文件可信;
内核层的完整性度量模块,负责对Android智能终端中装载的内核模块、可执行代码和Android dalvik应用进行度量;
初始完整性验证模块,负责保证智能终端在启动过程中,Android初始化代码包括装载的Android OS内核模块、Android初始化配置文件、守护进程、dalvik虚拟机初始化进程、应用层状态报告服务均属于可信状态,从而形成完整的终端启动信任链。
本发明的有益效果:
本发明使用的Android dalvik应用的完整性度量值来准确的标识应用,通过报告Androiddalvik应用的完整性度量值至监控中心进行验证的方式使进入到敏感域内的移动Android智能终端上运行的应用程序得到了有效的远程控制和管理,及时的掌握移动Android智能终端运行的应用程序,并通过切断智能终端对其安全域内网络服务的访问能力来防止机密信息的窃取扩散,保证了敏感区域内敏感信息的机密性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,可以理解的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示是本发明基于地理位置的Android智能终端运行环境可信控制方法系统示意图,监控中心子系统包括了Android终端完整性信息收集模块、Android终端完整性验证模块、安全策略管理模块及网络连接控制模块。监控中心主要提供对敏感域地理范围内的Android智能终端的完整性度量值(具体可参见Reiner Sailer,Xiaolan Zhang,TrentJaeger,Leendert Van Doorn,Design and Implementation of a TCG-Based IntegrityMeasurement Architecture Thomas J.Watson Research Center.Yorktown Heights,NY10598)进程验证,必要时切断终端对其安全域内网络服务的访问能力,及时的防止安全敏感信息的窃取或扩散。所述的敏感域地理范围在这个环境内的很多会议音频,图片,等都是保密的,所以我们就会远程监控这个区域内的用户的手机摄像头或收音机等是否开启,开启的话则要求强制关闭,防止用户拍摄机密的照片带出保密区域外。
Android终端运行状态度量与报告子系统则包含了状态度量服务和状态报告服务。状态度量服务由处于智能终端一次性编程区OTP(One Time Programmable)的安全引导模块、处于内核层的完整性度量模块和初始完整性验证模块共同组成。安全引导模块保证Android智能终端启动时装载的Linux内核文件可信。完整性度量模块负责对Android智能终端中装载的内核模块、可执行代码和Android的dalvik应用进行度量。最开始的完整性度量是基于linux的,本发明中把完整性度量搬移到了Android操作系统上,从而可以度量一些Android的应用,因为Android应用的运行首先都会复制Zygote进程创建一个dalvik虚拟机,故称为Android dalvik应用,dalvik应用的度量值和传统度量值长度是一样的,都是32位hash值。
初始完整性验证模块负责保证智能终端在启动过程中,所有Android初始化代码包括装载的Android OS内核模块、Android初始化配置文件、守护进程、dalvik虚拟机初始化进程、应用层状态报告服务均属于可信状态。位于应用层的状态报告服务包含了终端地理位置监控模块和度量值上传模块。终端地理位置监控模块会实时监控终端的地理位置,验证终端位置是否位于敏感区域内,基站与手机之间的通信是不需要控制和保证可信的,只是在发现终端有不安全应用在执行时最后需要切断基站与终端的信号连接,防止把机密信息发送出去。
若位于敏感域内则通过度量值上传模块,将生成的Android Dalvik应用完整性信息发送到监控中心子系统进行验证。
下面对在该体系架构中,基于地理位置的Android智能终端运行环境可信控制方法进行说明,包括如下步骤:
Android终端运行状态度量与报告子系统是在用户端Android智能终端上的运用,监控中心子系统在服务器上,在进行可信控制时,手机Android终端先打开应用程序(可信或不可信),即对输入的Android dalvik应用可信进行判断;然后监控系统根据可信与否,关闭或者对应用程序保持监控,监控系统会对信息进行重新的安全验证(由内核中的系统定时进行验证)。本发明中Android dalvik应用的完整性度量涉及到内核中的完整性度量模块。只需要在内核中嵌入我们的完整性度量模块,就可以实现对Android应用度量。由于Android应用启动时会把代码导入到dalvik虚拟机,而虚拟机会将代码使用MMAP函数映射到内存区域,我们的完整度量模块通过复写linux的安全增强框架就能截获MMAP的映射活动,从而可以对内存区域的dalvik应用代码做度量,这里的度量其实就是对代码做sha-1运算。
本系统中的不安全应用不一定就是病毒或者恶意软件,有些如摄像机,录音机这样的应用对本系统来讲也是不安全的,因为这些应用会在敏感区域偷拍机密信息。
子监控系统:
Android终端完整性信息收集模块,收集Android终端发送的Android dalvik应用完整性信息,返回不安全应用程序ID及对应进程名至Android终端。
Android终端完整性验证模块,1)输入Android dalvik应用完整性信息进行验证,2)记录不安全进程ID,3)发送不安全应用进程ID、进程名至Android终端完整性信息手机模块;4)对再次输入的完整性信息进行验证;
安全策略管理模块,将包含不安全dalvik应用的度量值存入黑名单中,及时更新黑名单中的dalvik应用度量值。
网络连接控制模块,用来控制基站/热点与终端之间的信号连接,一旦发现终端运行着不安全dalvik应用则切断热点/基站与终端之间的通信连接。
Android终端状态报告服务:
终端地理位置监控模块,会实时监控终端的地理位置,验证终端位置是否位于敏感区域内,若位于敏感域内则通过度量值上传模块,将生成的Android dalvik应用完整性信息发送到监控中心子系统进行验证。
度量值上传模块,将由内核完整性度量模块度量生成的Android终端完整性度量值及对应的Android dalvik应用进程名和当前正在运行进程ID发送至监控中心的完整性信息收集模块。
Android终端状态度量服务:
安全引导模块,保证Android智能终端启动时装载的Linux内核文件可信;
内核层的完整性度量模块,负责对Android智能终端中装载的内核模块、可执行代码和Android dalvik应用进行度量;
初始完整性验证模块,负责保证智能终端在启动过程中,所有Android初始化代码包括装载的Android OS内核模块、Android初始化配置文件、守护进程、dalvik虚拟机初始化进程、应用层状态报告服务均属于可信状态,从而形成完整的终端启动信任链。
如图2所示是本发明基于地理位置的Android智能终端运行环境可信控制方法流程示意图,基于上述系统,本发明提出了基于地理位置的Android智能终端运行环境控制方法如下:
1)通过位于智能终端OTP中的安全引导模块安全启动Android OS,在Android OS安全启动过程中会启用状态度量服务。状态度量服务将对Android的初始化代码进行度量并验证。所述状态度量服务相当于在内核中添加了一些安全模块,手机出厂时就内嵌于linux内核当中的,也就是说手机启动时状态度量服务就会启动,同时,状态报告服务也会启动,状态度量服务我们已经可以实现。
2)Android OS安全启动完毕后,Android dalvik应用将进行可信启动,Android终端实时监测终端所处地理位置是否位于预设定的敏感区域内。
3)Android终端报告Android dalvik应用完整性信息至监控中心,监控中心依据安全策略管理模块的安全策略依次验证Android dalvik应用完整性信息,并通过Android终端完整性信息收集模块返回验证结果至终端。终端依据验证结果实施相应操作后再次验证Androiddalvik应用完整性信息是否安全。
如图3是本发Android智能终端运行环境可信控制方法一实施例中安全启动方法示意图。
其所述安全启动的流程是:
A、采用OTP存储引导程序,该区域作为系统的度量信任根的存储区域;
B、引导程序度量Android Linux内核,根据存储于内存中的度量值进行验证
C、验证通过,Android内核正常启动;
D、使用内核态的完整性度量模块度量Android初始化代码;
E、使用初始完整性验证模块验证输入的Android初始化代码度量值并输出验证结果;
F、将验证结果返回至完整性度量模块,该模块根据验证结果确定系统初始化决策。
其所述的度量Android初始化代码,在开机就会完成是嵌入到Android linux内核中,具体的流程是:
A、度量的Android OS内核模块;
B、度量Android初始化配置文件;
C、度量守护进程;
D、度量dalvik虚拟机初始化进程;
E、度量应用层的状态报告服务。
其所述度量应用层的状态报告服务的流程是:
a、操作系统启动完成后,自启动状态报告服务;
b、操作系统通过MMAP映射状态报告服务Apk包中的.dex文件至dalvik虚拟机内存空间;
c、操作系统调用内核态的完整性度量模块对内存中的.dex文件进行度量。
d、操作系统生成度量值。
其所述验证输入的Android初始化代码度量值流程是:
a、验证Android OS内核模块的度量值并返回验证结果;
b、验证Android初始化配置文件度量值并返回验证结果;
c、验证守护进程的度量值并返回结果;
d、验证dalvik虚拟机初始化进程的度量值并返回验证结果;
e、验证应用层的状态报告服务的度量值并返回验证结果;
其所述验证结果特征是:分为验证通过、验证不通过、初始完整性验证通过三种。
其所述系统初始化决策的特征是:分为继续执行Android初始化代码度量、禁止系统启动两种。
其所述实时监测终端所处地理位置是否位于预设定的敏感区域内流程在于:
A、在终端地理位置监控模块中设置敏感的GPS区域位置范围;
B、终端实时判断目前地理位置是否位于敏感域范围内;
C、位于敏感区域则向监控中心发送挑战信息。
其所述可信启动的流程是:
A、智能终端上的内核中操作系统通过MMAP映射Android Apk包中的.dex文件至dalvik虚拟机内存空间;
B、内核态完整性度量模块对内存中的.dex文件进行度量。
C、生成度量值。
其所述报告Android dalvik完整性信息的流程是:
A、若初次检测在敏感区域内,终端向监控中心发送用户名,同时终端存储用户输入的服务器预分配口令于内存中;
B、监控中心返回随机数至终端;
C、终端若持续未接收到监控中心数据则锁定终端操作;
D、度量值上传模块对随机数及用户预分配口令进行Sha-1运算,生成Android dalvik应用完整性信息的加密密钥;
E、客户端通过度量值上传模块主动报告加密后的Android dalvik应用完整性信息至监控中心进行验证;
F、报告内容包括Android dalvik应用完整性度量值、Android dalvik应用进程名及当前正在运行进程ID三种属性。
其所述验证Android dalvik应用完整性信息的流程是:
A、及时更新安全策略管理模块中的安全策略;
B、Android终端完整性信息收集模块收集终端Android dalvik应用完整性信息;
C、Android终端完整性信息收集模块使用用户名对应的随机数及用户口令生成解密密钥;
D、Android终端完整性信息收集模块对Android dalvik应用完整性信息进行解密;
E、使用Android终端完整性验证模块依次验证Android dalvik应用完整性信息中的完整性度量值流是否符合安全策略;
F、Android终端完整性验证模块记录不安全应用进程ID(PID-Unsecure);
G、Android终端完整性验证模块发送不安全应用进程名及ID至Android终端完整性信息收集模块;
H、Android终端完整性信息收集模块将返回不安全应用进程ID及对应的进程名至终端的度量值上传模块;
其所述再次验证Android dalvik应用完整性信息是否安全的流程是:
A、度量值上传模块直接关闭由监控中心返回的不安全应用进程ID的对应进程;
B、用户确认后,度量值上传模块再次上传Android dalvik应用完整性信息至监控中心;
C、Android终端完整性验证模块再次验证收到的Android dalvik应用完整性信息中的完整性度量值流是否符合安全策略,同时验证新上传的Android dalvik应用完整性信息中是否包含PID-Unsecure;
D、若不符合安全策略或新上传的Android dalvik应用完整性信息中包含PID-Unsecure则发送切断终端网络信号指令至网络连接控制模块;
E、网络连接控制模块切断终端对其安全域内网络服务的访问能力;
其所述切断终端对其安全域内网络服务的访问能力的特征是:屏蔽敏感域内的其他干扰信号。
本发明的方法是由终端平台上的Android完整性度量子系统和监控中心子系统架构组成。本方法采用信任链的构建传递来防止恶意软件对本系统进行旁路、欺骗及篡改。终端中的安全引导模块保证Android智能终端启动时装载的Linux内核文件可信,它构成了终端安全启动的信任根。在智能终端在启动过程中,初始完整性验证模块会验证所有装载的Android初始化配置文件、Android操作系统内核模块、dalvik虚拟机初始化进程、应用层状态报告服务所生成的度量值,保证操作系统以及本方法中的应用层服务安全启动。在系统安全启动后,系统将进入可信启动状态,完成对系统运行过程中所有被运行应用的度量。位于应用层的状态报告服务的终端地理位置监控模块会实时对终端的地理位置进程监控,验证终端位置是否位于安全敏感区域内,若位于敏感域内则通过度量值上传模块,将生成的Android dalvik应用完整性信息发送到监控中心子系统进行验证。
如图4所示是本发Android智能终端运行环境可信控制方法一实施例中Android dalvik不安全应用远程控制方法示意图。
本发明的基于地理位置的Android智能终端运行环境可信控制方法包括如下步骤:
1)通过位于智能终端OTP中的安全引导模块安全启动Android OS,在Android OS安全启动过程中会启用状态度量服务。状态度量服务将对Android的初始化代码进行度量并验证。
A、安全引导Android Linux内核,加载内核中的完整性度量模块;
B、Android操作系统内核模块调用完整性度量模块生成度量值并输出;
C、将输出的Android操作系统内核模块度量值输入初始完整性验证模块中进行验证;
D、返回验证结果给完整性度量模块;
E、完整性度量模块根据返回的验证结果不同选择相应的系统初始化决策;
a)验证通过:系统继续执行Android操作系统内核;
b)验证不通过:禁止系统启动;
c)初始完整性验证成功:继续执行状态报告服务。
F、验证通过后继续执行Android操作系统内核,启动Android初始化配置文件;
G、Android初始化配置文件调用完整性度量模块生成度量值并输出;
H、将输出度量值输入初始完整性验证模块中进行验证并返回验证结果给完整性度量模块;
I、验证结果通过则继续执行Android初始化配置,并调用守护进程及dalvik虚拟机初始化模块;
J、守护进程及dalvik虚拟机初始化进程调用完整性度量模块生成度量值,并将度量值输入初始完整性验证模块进行验证,返回验证结果给完整性度量模块;
K、验证通过则继续执行守护进程及dalvik虚拟机初始化进程,并最终启动应用层状态报告服务;
L、应用层状态报告服务启动并调用完整性度量模块生成度量值,具体的度量流程是:
a)操作系统通过MMAP映射状态报告服务Apk包中的.dex文件至dalvik虚拟机内存空间;
b)操作系统调用完整性度量模块对内存中的.dex文件进行度量;
c)生成度量值。
M、将输出度量值输入初始完整性验证模块中进行验证,并返回验证结果给完整性度量模块;
N、初始完整性验证成功,继续启动应用层状态报告服务;
O、Android系统安全启动完毕。
2)Android OS安全启动完毕后,Android dalvik应用将进行可信启动,终端实时监测终端所处地理位置是否位于预设定的敏感区域内。
A、在终端地理位置监控模块中设置敏感的GPS区域位置范围;
B、终端实时判断目前地理位置是否位于敏感域范围内;
C、地理位置监控模块检测到终端位于敏感区域;
D、若初次检测在敏感区域内,终端向监控中心发送用户名,同时终端存储用户输入的服务器预分配口令于内存中;
E、监控中心返回随机数至终端;
F、终端若持续未接收到监控中心数据则锁定终端操作;
G、终端对用户预设定口令及随机数做Sha-1运算生成加密密钥;
H、启动的Android dalvik应用通过MMAP映射其Apk包中的.dex文件至dalvik虚拟机内存空间;
I、内核层完整性度量模块对内存中的.dex文件进行度量。
J、获取Android dalvik应用完整性信息:包括:
a)Android dalvik应用完整性度量值;
b)Android dalvik应用进程名;
c)当前正在运行进程ID。
K、使用内存中的加密密钥对Android dalvik应用完整性信息进行加密。
3)终端报告Android dalvik应用完整性信息至监控中心,监控中心依据安全策略管理模块的安全策略依次验证Android dalvik应用完整性信息,并通过Android终端完整性信息收集模块返回提示操作至终端。终端操作完成后再次验证Android dalvik应用完整性信息是否安全。
A、Android终端完整性信息收集模块存储收集到的终端Android dalvik应用完整性信息;
B、使用用户名对应的用户口令及随机数做运算生成解密密钥;
C、解密Android dalvik应用完整性信息;
D、将Android dalvik应用完整性度量值发送到Android终端完整性验证模块,根据安全策略管理模块中的安全策略对度量值进行验证;
E、记录不安全应用进程ID(PIDs-Unsecure);
F、发送不安全应用进程ID、进程名至Android终端完整性信息收集模块;
G、Android终端完整性信息收集模块将返回不安全应用进程ID及对应的进程名至终端的度量值上传模块;
H、度量值上传模块直接关闭由监控中心返回的不安全应用进程;
I、用户确认后度量值上传模块再次上传Android dalvik应用完整性信息至监控中心进行验证;
J、Android终端完整性验证模块再次验证收到的Android dalvik应用完整性信息中的完整性度量值流是否符合安全策略,同时验证新上传的Android dalvik应用完整性信息中是否包含PID-Unsecure;
K、若不符合安全策略或新上传的Android dalvik应用完整性信息中包含PID-Unsecure则发送切断终端网络信号指令至网络连接控制模块;
L、网络连接控制模块切断终端对其安全域内网络服务的访问能力。