保护可信应用与普通应用的交互完整性和保密性的方法技术

技术编号:20763586 阅读:19 留言:0更新日期:2019-04-03 14:13
本发明专利技术涉及一种保护可信应用与普通应用的交互完整性和保密性的方法,包括:用虚拟化技术在富执行环境的内核与应用之间建立内存隔离;利用虚拟机监控器及硬件虚拟化支持实现在不修改内核与应用代码的情况下透明地处理系统调用、中断、内存页换入换出的操作;以及建立与原有系统兼容的、脱离内核驱动支持的可信应用和普通应用交互库。与现有技术相比,本发明专利技术具有支持硬件多线程、不需要修改富执行环境内核、能够为普通应用提供更完整保护等优点。

【技术实现步骤摘要】
保护可信应用与普通应用的交互完整性和保密性的方法
本专利技术涉及移动平台安全
,尤其是涉及一种保护可信应用与普通应用的交互完整性和保密性的方法。
技术介绍
可信执行环境,尤其是基于TrustZone技术的可信执行环境在移动终端、IntelSGX技术在服务器和桌面电脑上逐渐普及,人们通常关注于可信执行环境内的安全性,而忽视了可信应用与普通应用交互过程中富执行环境一端可能存在的安全问题。正常的交互过程依赖于富执行环境中的内核软件,正确实现的内核可以保证交互的安全性及多个普通应用之间的隔离性,故富执行环境中可能存在的安全问题主要是恶意内核可能直接发起攻击或不安全的内核受到其他应用的攻击与控制后向目标应用发起攻击。现有的解决方案依赖可信执行环境的内核在必要时向目标应用的内存中放入交互密钥,并在执行流脱离目标应用范围(如被中断、请求系统调用)时擦除密钥。该方案要求可信执行环境能够监控富执行环境中的上下文切换,而且没有考虑在硬件多线程环境下可能同时存在目标应用的执行流与内核的执行流。由于TrustZone等隔离技术没有提供足够的硬件支持,监控上下文切换需要复杂的软件流程,并且涉及对富执行环境内核的修改。该方案也没有考虑富执行环境内核对目标应用的其他数据直接发起攻击,而只保护了交互密钥。
技术实现思路
本专利技术的目的就是为了克服上述现有技术存在的缺陷而提供一种保护可信应用与普通应用的交互完整性和保密性的方法,可支持硬件多线程、不需要修改富执行环境内核、能够为普通应用提供更完整保护。本专利技术的目的可以通过以下技术方案来实现:一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,包括:用虚拟化技术在富执行环境的内核与应用之间建立内存隔离;利用虚拟机监控器及硬件虚拟化支持实现在不修改内核与应用代码的情况下透明地处理系统调用、中断、内存页换入换出的操作;以及建立与原有系统兼容的、脱离内核驱动支持的可信应用和普通应用交互库。优选地,所述的用虚拟化技术在富执行环境的内核与应用之间建立内存隔离具体为:将内核与应用放置在不同虚拟机中,利用虚拟化技术完全隔离两者的物理内存空间,在多数情况下,所有虚拟机的页表第二阶段翻译使用平行映射,即虚拟机物理地址等于真实物理地址,任何时刻,某一物理页只能属于某个虚拟机;当需要时,在某一虚拟机的第二阶段翻译页表中将目标内存区域相关的页表项填充为0,即无效值,用于阻止该虚拟机以任何方式访问该物理页,下文称“在该虚拟机中取消该页的权限”;当需要时,在某一虚拟机的第二阶段翻译页表中将目标内存区域相关的页表项填充为平行映射,即令虚拟机物理地址等于真实物理地址,并开放读写执行权限,以允许内核利用第一阶段翻译页表管理该物理页,但是阻止其他虚拟机访问该物理页,下文称“在该虚拟机增加该页的权限”,当新的普通应用请求被保护时,应用通过不依赖内核支持的方式(如操作特殊寄存器,访问可以触发虚拟化保护的内存、外设等由硬件直接将上下文切换至虚拟机监控器的方式)直接下陷到虚拟机监控器中,由监控器创建新的应用虚拟机,并对新的应用虚拟机进行初始化。优选地,所述的监控器对新的应用虚拟机进行初始化具体为:将下陷时的寄存器上下文复制到初始线程的寄存器上下文结构体中;将第二阶段翻译页表初始化为空,通过核心模块的遍历功能探测所有属于应用的虚拟机物理内存页,在内核虚拟机中取消其所有权限,并在新的应用虚拟机中增加该页的所有权限;在虚拟机列表中增加该新的应用虚拟机,并以进程的第一阶段地址翻译页表地址作为进程标识,建立进程标识到应用虚拟机的映射;初始化成功后,设置新应用虚拟机虚拟核的某一通用寄存器(可以为r0寄存器)为0以指示初始化成功,同时切换到新应用虚拟机中继续执行应用逻辑;初始化失败时,设置内核虚拟机虚拟核的某一通用寄存器(可以为r0寄存器)为1以指示初始化失败,回收所有资源,并返回内核虚拟机中继续执行应用逻辑。优选地,当新的普通应用请求被保护时,为了避免正常情况下内核及其他应用可能对应用物理页的访问,需要阻止内核在相关物理页上进行写时复制、内存合并的优化技术;用户态库将遍历应用的所有虚拟地址空间区域、为其增加可写权限并向其写入内容以触发写时复制机制,此时内核将为该应用单独分配一物理页以防止写入的内容对其他共享者产生影响,由于写入的内容与原内容相同,该操作不影响应用的正常运行;同时,关闭内核KSM机制以阻止内核周期性扫描所有物理页内容。优选地,当应用虚拟机运行过程中发生中断或异常时,虚拟核将试图执行内核中对应的处理函数,由于应用虚拟机中存放内核代码的物理页没有可执行权限,处理器核将下陷至虚拟机监控器中;虚拟机监控器将必要的异常信息从应用虚拟机的上下文结构体及内存中复制到内核虚拟机中,其中包括异常原因、异常目标地址;尤其是,虚拟机监控器需将内核虚拟中保存的异常返回地址设置为产生初始化请求的指令地址以隐藏应用线程的运行信息;将下陷时的应用虚拟核上下文保存到对应应用线程的上下文结构体中,供异常返回时加载;将异常信息记录在应用线程的结构体中供其他安全检查机制参考;依据内核及硬件规范调整内核虚拟核的进/线程标志寄存器以隐藏实际的线程信息,同时使得内核异常处理函数返回时虚拟机监控器可以有效识别需调度的应用线程,上述状态同步结束后,虚拟机监控器切换至内核虚拟核并恢复执行。优选地,当内核试图调度应用线程在某一处理器核上执行时,由于内核虚拟机中存放应用代码的物理页没有可执行权限,处理器核将下陷至虚拟机监控器中,虚拟机监控器读取进程标识并查询虚拟机列表以确定目标应用及目标虚拟机,虚拟机监控器检查堆栈寄存器中的应用线程标识是否在应用线程列表中以确定其是否有效,若无效则拒绝恢复该线程的执行并死循环挂起,若线程标识有效,则根据虚拟机监控器内保存的线程上下文恢复所有硬件寄存器,并调度应用虚拟机虚拟核继续执行,由于线程上下文保存在虚拟机监控器的内存中,内核无法随意读取或修改应用运行时寄存器中的值。优选地,当应用请求系统调用时,除了执行中断或异常中的所有操作外,虚拟机监控器还将从下陷时的寄存器值中获得系统调用号,并依据不同的系统调用需求将必要的寄存器信息、应用内存区域暴露给内核虚拟机,并切换到内核虚拟机中完成系统调用,当系统调用完成后,除了触发内核调度线程的所有操作外,虚拟机监控器还将重新保护之前所有暴露的内存区域,以防止应用重新将这些区域用作他用时可能导致的数据泄露或破坏;当内核试图对属于应用的物理页进行换出时,由于内核虚拟机中存放应用代码与数据的物理页没有可读权限,内核虚拟机下陷至虚拟机监控器,虚拟机监控器通过异常为读异常来判定内核试图读取应用的内存,并认为这是一个换出操作,虚拟机监控器随后使用一个对目标物理页进行加密,并在自身内存中保留一消息认证码以保证完整性,加密完成后,虚拟机监控器在内核虚拟机中增加该页的权限,并在应用虚拟机中取消该页的权限,随后返回内核虚拟机中继续执行,此时内核将成功读取加密后的数据并将其换出。优选地,所述的虚拟机监控器的核心模块包括:提供虚拟机的创建功能,虚拟机监控器能够按上层模块要求动态地创建新的虚拟机并初始化其第二阶段地址翻译页表、虚拟核、虚拟核的寄存器与中断状态的信息;提供虚拟核的切换功能,上层模块根据需要在同一或不同本文档来自技高网...

【技术保护点】
1.一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,包括:用虚拟化技术在富执行环境的内核与应用之间建立内存隔离;利用虚拟机监控器及硬件虚拟化支持实现在不修改内核与应用代码的情况下透明地处理系统调用、中断、内存页换入换出的操作;以及建立与原有系统兼容的、脱离内核驱动支持的可信应用和普通应用交互库。

【技术特征摘要】
1.一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,包括:用虚拟化技术在富执行环境的内核与应用之间建立内存隔离;利用虚拟机监控器及硬件虚拟化支持实现在不修改内核与应用代码的情况下透明地处理系统调用、中断、内存页换入换出的操作;以及建立与原有系统兼容的、脱离内核驱动支持的可信应用和普通应用交互库。2.根据权利要求1所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,所述的用虚拟化技术在富执行环境的内核与应用之间建立内存隔离具体为:将内核与应用放置在不同虚拟机中,利用虚拟化技术完全隔离两者的物理内存空间,在多数情况下,所有虚拟机的页表第二阶段翻译使用平行映射,即虚拟机物理地址等于真实物理地址,任何时刻,某一物理页只能属于某个虚拟机;当需要时,在某一虚拟机的第二阶段翻译页表中将目标内存区域相关的页表项填充为0,即无效值,用于阻止该虚拟机以任何方式访问该物理页,下文称“在该虚拟机中取消该页的权限”;当需要时,在某一虚拟机的第二阶段翻译页表中将目标内存区域相关的页表项填充为平行映射,即令虚拟机物理地址等于真实物理地址,并开放读写执行权限,以允许内核利用第一阶段翻译页表管理该物理页,但是阻止其他虚拟机访问该物理页,下文称“在该虚拟机增加该页的权限”,当新的普通应用请求被保护时,应用通过不依赖内核支持的方式直接下陷到虚拟机监控器中,由监控器创建新的应用虚拟机,并对新的应用虚拟机进行初始化。3.根据权利要求2所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,所述的监控器对新的应用虚拟机进行初始化具体为:将下陷时的寄存器上下文复制到初始线程的寄存器上下文结构体中;将第二阶段翻译页表初始化为空,通过核心模块的遍历功能探测所有属于应用的虚拟机物理内存页,在内核虚拟机中取消其所有权限,并在新的应用虚拟机中增加该页的所有权限;在虚拟机列表中增加该新的应用虚拟机,并以进程的第一阶段地址翻译页表地址作为进程标识,建立进程标识到应用虚拟机的映射;初始化成功后,设置新应用虚拟机虚拟核的某一通用寄存器为0以指示初始化成功,同时切换到新应用虚拟机中继续执行应用逻辑;初始化失败时,设置内核虚拟机虚拟核的某一通用寄存器为1以指示初始化失败,回收所有资源,并返回内核虚拟机中继续执行应用逻辑。4.根据权利要求2所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,当新的普通应用请求被保护时,为了避免正常情况下内核及其他应用可能对应用物理页的访问,需要阻止内核在相关物理页上进行写时复制、内存合并的优化技术;用户态库将遍历应用的所有虚拟地址空间区域、为其增加可写权限并向其写入内容以触发写时复制机制,此时内核将为该应用单独分配一物理页以防止写入的内容对其他共享者产生影响,由于写入的内容与原内容相同,该操作不影响应用的正常运行;同时,关闭内核KSM机制以阻止内核周期性扫描所有物理页内容。5.根据权利要求2所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,当应用虚拟机运行过程中发生中断或异常时,虚拟核将试图执行内核中对应的处理函数,由于应用虚拟机中存放内核代码的物理页没有可执行权限,处理器核将下陷至虚拟机监控器中;虚拟机监控器将必要的异常信息从应用虚拟机的上下文结构体及内存中复制到内核虚拟机中,其中包括异常原因、异常目标地址;尤其是,虚拟机监控器需将内核虚拟中保存的异常返回地址设置为产生初始化请求的指令地址以隐藏应用线程的运行信息;将下陷时的应用虚拟核上下文保存到对应应用线程的上下文结构体中,供异常返回时加载;将异常信息记录在应用线程的结构体中供其他安全检查机制参考;依据内核及硬件规范调整内核虚拟核的进/线程标志寄存器以隐藏实际的线程信息,同时使得内核异常处理函数返回时虚拟机监控器可以有效识别需调度的应用线程,上述状态同步结束后,虚拟机监控器切换至内核虚拟核并恢复执行。6.根据权利要求2所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,当内核试图调度应用线程在某一处理器核上执行时,由于内核虚拟机中存放应用代码的物理页没有可执行权限,处理器核将下陷至虚拟机监控器中,虚拟机监控器读取进程标识并查询虚拟机列表以确定目标应用及目标虚拟机,虚拟机监控器检查堆栈寄存器中的应用线程标识是否在应用线程列表中以确定其是否有效,若无效则拒绝恢复该线程的执行并死循环挂起,若线程标识有效,则根据虚拟机监控器内保存的线程上下文恢复所有硬件寄存器,并调度应用虚拟机虚拟核继续执行,由于线程上下文保存在虚拟机监控器的内存中,内核无法随意读取或修改应用运行时寄存器中的值。7.根据权利要求2所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,当应用请求系统调用时,除了执行中断或异常中的所有操作外,虚拟机监控器还将从下陷时的寄存器值中获得系统调用号,并依据不同的系统调用需求将必要的寄存器信息、应用内存区域暴露给内核虚拟机,并切换到内核虚拟机中完成系统调用,当系统调用完成后,除了触发内核调度线程的所有操作外,虚拟机监控器还将重新保护之前所有暴露的内存区域,以防止应用重新将这些区域用作他用时可能导致的数据泄露或破坏;当内核试图对属于应用的物理页进行换出时,由于内核虚拟机中存放应用代码与数据的物理页没有可读权限,内核虚拟机下陷至虚拟机监控器,虚拟机监控器通过异常为读异常来判定内核试图读取应用的内存,并认为这是一个换出操作,虚拟机监控器随后使用一个对目标物理页进行加密,并在自身内存中保留一消息认证码以保证完整性,加密完成后,虚拟机监控器在内核虚拟机中增加该页的权限,并在应用虚拟机中取消该页的权限,随后返回内核虚拟...

【专利技术属性】
技术研发人员:李子男夏虞斌利文浩梁凉
申请(专利权)人:上海瓶钵信息科技有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1