首页 / 专利库 / 软件 / 虚拟机监控器 / 保护可信应用与普通应用的交互完整性和保密性的方法

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

阅读:46发布:2020-05-17

专利汇可以提供保护可信应用与普通应用的交互完整性和保密性的方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种保护可信应用与普通应用的交互完整性和 保密性 的方法,包括:用虚拟化技术在富 执行环境 的 内核 与应用之间建立内存隔离;利用 虚拟机 监控器及 硬件 虚拟化支持实现在不 修改 内核与应用代码的情况下透明地处理系统调用、中断、内存页换入换出的操作;以及建立与原有系统兼容的、脱离内核驱动支持的可信应用和普通应用交互库。与 现有技术 相比,本发明具有支持硬件多线程、不需要修改富执行环境内核、能够为普通应用提供更完整保护等优点。,下面是保护可信应用与普通应用的交互完整性和保密性的方法专利的具体信息内容。

1.一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,包括:
用虚拟化技术在富执行环境内核与应用之间建立内存隔离;
利用虚拟机监控器及硬件虚拟化支持实现在不修改内核与应用代码的情况下透明地处理系统调用、中断、内存页换入换出的操作;
以及建立与原有系统兼容的、脱离内核驱动支持的可信应用和普通应用交互库。
2.根据权利要求1所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,所述的用虚拟化技术在富执行环境的内核与应用之间建立内存隔离具体为:
将内核与应用放置在不同虚拟机中,利用虚拟化技术完全隔离两者的物理内存空间,在多数情况下,所有虚拟机的页表第二阶段翻译使用平行映射,即虚拟机物理地址等于真实物理地址,任何时刻,某一物理页只能属于某个虚拟机;
当需要时,在某一虚拟机的第二阶段翻译页表中将目标内存区域相关的页表项填充为
0,即无效值,用于阻止该虚拟机以任何方式访问该物理页,下文称“在该虚拟机中取消该页的权限”;
当需要时,在某一虚拟机的第二阶段翻译页表中将目标内存区域相关的页表项填充为平行映射,即令虚拟机物理地址等于真实物理地址,并开放读写执行权限,以允许内核利用第一阶段翻译页表管理该物理页,但是阻止其他虚拟机访问该物理页,下文称“在该虚拟机增加该页的权限”,
当新的普通应用请求被保护时,应用通过不依赖内核支持的方式直接下陷到虚拟机监控器中,由监控器创建新的应用虚拟机,并对新的应用虚拟机进行初始化。
3.根据权利要求2所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,所述的监控器对新的应用虚拟机进行初始化具体为:
将下陷时的寄存器上下文复制到初始线程的寄存器上下文结构体中;
将第二阶段翻译页表初始化为空,通过核心模的遍历功能探测所有属于应用的虚拟机物理内存页,在内核虚拟机中取消其所有权限,并在新的应用虚拟机中增加该页的所有权限;
在虚拟机列表中增加该新的应用虚拟机,并以进程的第一阶段地址翻译页表地址作为进程标识,建立进程标识到应用虚拟机的映射;
初始化成功后,设置新应用虚拟机虚拟核的某一通用寄存器为0以指示初始化成功,同时切换到新应用虚拟机中继续执行应用逻辑;
初始化失败时,设置内核虚拟机虚拟核的某一通用寄存器为1以指示初始化失败,回收所有资源,并返回内核虚拟机中继续执行应用逻辑。
4.根据权利要求2所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,当新的普通应用请求被保护时,为了避免正常情况下内核及其他应用可能对应用物理页的访问,需要阻止内核在相关物理页上进行写时复制、内存合并的优化技术;
用户态库将遍历应用的所有虚拟地址空间区域、为其增加可写权限并向其写入内容以触发写时复制机制,此时内核将为该应用单独分配一物理页以防止写入的内容对其他共享者产生影响,由于写入的内容与原内容相同,该操作不影响应用的正常运行;同时,关闭内核KSM机制以阻止内核周期性扫描所有物理页内容。
5.根据权利要求2所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,当应用虚拟机运行过程中发生中断或异常时,虚拟核将试图执行内核中对应的处理函数,由于应用虚拟机中存放内核代码的物理页没有可执行权限,处理器核将下陷至虚拟机监控器中;
虚拟机监控器将必要的异常信息从应用虚拟机的上下文结构体及内存中复制到内核虚拟机中,其中包括异常原因、异常目标地址;尤其是,虚拟机监控器需将内核虚拟中保存的异常返回地址设置为产生初始化请求的指令地址以隐藏应用线程的运行信息;将下陷时的应用虚拟核上下文保存到对应应用线程的上下文结构体中,供异常返回时加载;将异常信息记录在应用线程的结构体中供其他安全检查机制参考;依据内核及硬件规范调整内核虚拟核的进/线程标志寄存器以隐藏实际的线程信息,同时使得内核异常处理函数返回时虚拟机监控器可以有效识别需调度的应用线程,上述状态同步结束后,虚拟机监控器切换至内核虚拟核并恢复执行。
6.根据权利要求2所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,当内核试图调度应用线程在某一处理器核上执行时,由于内核虚拟机中存放应用代码的物理页没有可执行权限,处理器核将下陷至虚拟机监控器中,虚拟机监控器读取进程标识并查询虚拟机列表以确定目标应用及目标虚拟机,虚拟机监控器检查堆栈寄存器中的应用线程标识是否在应用线程列表中以确定其是否有效,若无效则拒绝恢复该线程的执行并死循环挂起,若线程标识有效,则根据虚拟机监控器内保存的线程上下文恢复所有硬件寄存器,并调度应用虚拟机虚拟核继续执行,由于线程上下文保存在虚拟机监控器的内存中,内核无法随意读取或修改应用运行时寄存器中的值。
7.根据权利要求2所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,
当应用请求系统调用时,除了执行中断或异常中的所有操作外,虚拟机监控器还将从下陷时的寄存器值中获得系统调用号,并依据不同的系统调用需求将必要的寄存器信息、应用内存区域暴露给内核虚拟机,并切换到内核虚拟机中完成系统调用,当系统调用完成后,除了触发内核调度线程的所有操作外,虚拟机监控器还将重新保护之前所有暴露的内存区域,以防止应用重新将这些区域用作他用时可能导致的数据泄露或破坏;
当内核试图对属于应用的物理页进行换出时,由于内核虚拟机中存放应用代码与数据的物理页没有可读权限,内核虚拟机下陷至虚拟机监控器,虚拟机监控器通过异常为读异常来判定内核试图读取应用的内存,并认为这是一个换出操作,虚拟机监控器随后使用一个对目标物理页进行加密,并在自身内存中保留一消息认证码以保证完整性,加密完成后,虚拟机监控器在内核虚拟机中增加该页的权限,并在应用虚拟机中取消该页的权限,随后返回内核虚拟机中继续执行,此时内核将成功读取加密后的数据并将其换出。
8.根据权利要求2所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,所述的虚拟机监控器的核心模块包括:
提供虚拟机的创建功能,虚拟机监控器能够按上层模块要求动态地创建新的虚拟机并初始化其第二阶段地址翻译页表、虚拟核、虚拟核的寄存器与中断状态的信息;
提供虚拟核的切换功能,上层模块根据需要在同一或不同虚拟机的不同虚拟核间进行切换,虚拟机监控器保证所有相关的硬件寄存器上下文的原子性,所有调度由上层模块完成;
提供对虚拟核上下文的访问功能,包括:读取、修改未在运行的虚拟核的通用硬件寄存器、系统硬件寄存器;依据虚拟核内的虚拟地址或物理地址访问内存,并保证虚拟核拥有对应的访问权限;
提供基本的异常处理功能,包括:拦截虚拟机内发生的中断与同步异常;向上层模块提供异常处理函数的注册接口,并实现链式处理,其中链式处理为依次调用处理函数,直到某个处理函数报告异常已被处理、处理过程发生错误或没有下一个处理函数;向上层模块提供异常信息访问接口,包括异常类型、异常发生时的寄存器上下文、数据/指令异常的目标地址;
提供第二阶段页表维护功能,包括:以某一设定虚拟机的物理地址空间中页对齐的内存区域为目标设置读、写、执行权限,并能够设置其与真实物理地址空间中的物理页的对应关系;
提供第一、第二阶段页表的遍历功能,核心模块向上层模块暴露一个接口,从指定的第一或第二阶段页表根表开始,对于每个有效存在的页或块映射,调用某一回调函数,以供上层模块方便地查询、复制、检查某一虚拟机的第一、第二阶段页表;
提供地址无关的启动方式,核心模块保证整个虚拟机监控器可以被加载至任意物理地址启动,启动后由核心模块引导逻辑完成初始页表的配置,保证引导逻辑结束后虚拟机监控器内存区域的虚拟地址始终为编译时的预设值。
9.根据权利要求1所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,脱离富执行环境内核支持的可信应用和普通应用交互机制,以及可信执行环境支撑机制,具体包括:
i.对可信执行环境及普通应用暴露的接口与原有交互机制相互兼容,具体的指:对可信执行环境而言,交互流程,交互使用的切换方式,参数传递寄存器及其顺序、语义,内存布局与数据结构的兼容性;对普通应用而言,库函数接口的代码兼容性及动态库的二进制兼容性;
ii.借助虚拟化技术的用户态与虚拟机监控器交互机制,由于在ARM平台上用户态不能直接执行hvc进入虚拟机监控器,采取应用执行系统调用的方式,由虚拟机监控器拦截所有系统调用,并根据系统调用号区分指向虚拟机监控器的系统调用和指向富执行环境内核的系统调用,前者使用了系统调用号中尚未被分配的部分;
iii.将可信执行环境依赖的等待队列操作从内核驱动移至虚拟机监控器中实现,等待队列操作包括等待与唤醒,前者要求执行流阻塞在某一队列中,等待其他执行流将其唤醒,阻塞过程中该处理器核可切换执行其他执行流,后者将指定队列中的第一个执行流唤醒,并在未来某时刻调度其至处理器核上运行,虚拟机监控器使用等底层操作实现这两种上层操作,当可信执行环境要求等待时,虚拟机监控器将等待对象通过映射转换为虚拟机监控器内存空间中的等待队列链表,获得该链表的锁,将等待线程加入到链表中,并释放链表锁,随后自旋判断当前线程是否被唤醒,若线程已被唤醒,虚拟机监控器返回可信执行环境中继续执行,若线程尚未被唤醒,则虚拟机监控器设置特定的寄存器指示调用调度操作并返回应用的用户态交互库中,用户态库通过判断寄存器的值识别虚拟机监控器请求调度操作,并执行sched_yield系统调用放弃CPU,借助富执行环境内核的调度器避免自旋等待导致的处理器资源浪费;
iv.将可信执行环境和富执行环境共享内存的管理移至虚拟机监控器中,由于不正确的内存分配结果可能导致应用将自身的关键数据被覆盖,所以内存管理也必须放到可信环境中进行,虚拟机监控器在启动时通过可信执行环境提供的调用接口获得共享内存的地址、大小的信息,并使用内置的内存资源管理器进行管理,修改后的用户态库将通过系统调用请求虚拟机监控器分配或释放共享内存;
v.将可信应用加载及文件读写的文件操作移至用户态库中实现,将该支持功能移至用户态库中,虚拟机监控器将可信执行环境的请求直接复制到应用内存中,由用户态库中的代码负责通过相关系统调用完成请求;
vi.由于用户态库无法得到共享内存的物理地址,与可信执行环境交互的数据结构中的指针全部填写虚拟地址,由虚拟机监控器在调用可信执行环境及从可信执行环境返回时通过查询第一、第二阶段翻译页表完成地址转换。
10.根据权利要求9所述的一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,由于虚拟机监控器不可直接管理应用的虚拟地址空间,采取如下步骤完成应用页表的配置:
用户态库使用mmap系统调用请求内核为其分配虚拟地址空间,其中应用虚拟地址记为地址A,内核将在相关数据结构中记录该信息,并直接返回用户态,不会为应用准备页表和物理页;
用户态库使用特殊系统调用请求虚拟机监控器为其分配共享内存,虚拟机监控器在共享内存区中为其分配内存,并记录共享内存地址与应用虚拟地址A的对应关系,其中真实物理地址记为地址B;
应用访问共享内存,此时触发第一阶段地址翻译异常,经上述其他机制处理后,内核将为应用分配物理页并配置页表,其中虚拟机物理地址记为地址C,当内核处理过程完成并返回应用时需经过虚拟机监控器,后者识别该异常的虚拟地址对应共享内存,并查询虚拟地址与共享内存的对应关系;在应用虚拟机的第二阶段翻译页表中将虚拟机物理地址C重定向至真实物理地址B;
恢复应用执行,
此时应用再次访问虚拟地址A,并经两次翻译后得到真实物理地址B,从而访问共享内存。

说明书全文

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

技术领域

[0001] 本发明涉及移动平台安全技术领域,尤其是涉及一种保护可信应用与普通应用的交互完整性和保密性的方法。

背景技术

[0002] 可信执行环境,尤其是基于TrustZone技术的可信执行环境在移动终端、IntelSGX技术在服务器和桌面电脑上逐渐普及,人们通常关注于可信执行环境内的安全性,而忽视了可信应用与普通应用交互过程中富执行环境一端可能存在的安全问题。
[0003] 正常的交互过程依赖于富执行环境中的内核软件,正确实现的内核可以保证交互的安全性及多个普通应用之间的隔离性,故富执行环境中可能存在的安全问题主要是恶意内核可能直接发起攻击或不安全的内核受到其他应用的攻击与控制后向目标应用发起攻击。
[0004] 现有的解决方案依赖可信执行环境的内核在必要时向目标应用的内存中放入交互密钥,并在执行流脱离目标应用范围(如被中断、请求系统调用)时擦除密钥。该方案要求可信执行环境能够监控富执行环境中的上下文切换,而且没有考虑在硬件多线程环境下可能同时存在目标应用的执行流与内核的执行流。由于TrustZone等隔离技术没有提供足够的硬件支持,监控上下文切换需要复杂的软件流程,并且涉及对富执行环境内核的修改。该方案也没有考虑富执行环境内核对目标应用的其他数据直接发起攻击,而只保护了交互密钥。

发明内容

[0005] 本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种保护可信应用与普通应用的交互完整性和保密性的方法,可支持硬件多线程、不需要修改富执行环境内核、能够为普通应用提供更完整保护。
[0006] 本发明的目的可以通过以下技术方案来实现:
[0007] 一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,包括:
[0008] 用虚拟化技术在富执行环境的内核与应用之间建立内存隔离;
[0009] 利用虚拟机监控器及硬件虚拟化支持实现在不修改内核与应用代码的情况下透明地处理系统调用、中断、内存页换入换出的操作;
[0010] 以及建立与原有系统兼容的、脱离内核驱动支持的可信应用和普通应用交互库。
[0011] 优选地,所述的用虚拟化技术在富执行环境的内核与应用之间建立内存隔离具体为:
[0012] 将内核与应用放置在不同虚拟机中,利用虚拟化技术完全隔离两者的物理内存空间,在多数情况下,所有虚拟机的页表第二阶段翻译使用平行映射,即虚拟机物理地址等于真实物理地址,任何时刻,某一物理页只能属于某个虚拟机;
[0013] 当需要时,在某一虚拟机的第二阶段翻译页表中将目标内存区域相关的页表项填充为0,即无效值,用于阻止该虚拟机以任何方式访问该物理页,下文称“在该虚拟机中取消该页的权限”;
[0014] 当需要时,在某一虚拟机的第二阶段翻译页表中将目标内存区域相关的页表项填充为平行映射,即令虚拟机物理地址等于真实物理地址,并开放读写执行权限,以允许内核利用第一阶段翻译页表管理该物理页,但是阻止其他虚拟机访问该物理页,下文称“在该虚拟机增加该页的权限”,
[0015] 当新的普通应用请求被保护时,应用通过不依赖内核支持的方式(如操作特殊寄存器,访问可以触发虚拟化保护的内存、外设等由硬件直接将上下文切换至虚拟机监控器的方式)直接下陷到虚拟机监控器中,由监控器创建新的应用虚拟机,并对新的应用虚拟机进行初始化。
[0016] 优选地,所述的监控器对新的应用虚拟机进行初始化具体为:
[0017] 将下陷时的寄存器上下文复制到初始线程的寄存器上下文结构体中;
[0018] 将第二阶段翻译页表初始化为空,通过核心模的遍历功能探测所有属于应用的虚拟机物理内存页,在内核虚拟机中取消其所有权限,并在新的应用虚拟机中增加该页的所有权限;
[0019] 在虚拟机列表中增加该新的应用虚拟机,并以进程的第一阶段地址翻译页表地址作为进程标识,建立进程标识到应用虚拟机的映射;
[0020] 初始化成功后,设置新应用虚拟机虚拟核的某一通用寄存器(可以为r0寄存器)为0以指示初始化成功,同时切换到新应用虚拟机中继续执行应用逻辑;
[0021] 初始化失败时,设置内核虚拟机虚拟核的某一通用寄存器(可以为r0寄存器)为1以指示初始化失败,回收所有资源,并返回内核虚拟机中继续执行应用逻辑。
[0022] 优选地,当新的普通应用请求被保护时,为了避免正常情况下内核及其他应用可能对应用物理页的访问,需要阻止内核在相关物理页上进行写时复制、内存合并的优化技术;
[0023] 用户态库将遍历应用的所有虚拟地址空间区域、为其增加可写权限并向其写入内容以触发写时复制机制,此时内核将为该应用单独分配一物理页以防止写入的内容对其他共享者产生影响,由于写入的内容与原内容相同,该操作不影响应用的正常运行;同时,关闭内核KSM机制以阻止内核周期性扫描所有物理页内容。
[0024] 优选地,当应用虚拟机运行过程中发生中断或异常时,虚拟核将试图执行内核中对应的处理函数,由于应用虚拟机中存放内核代码的物理页没有可执行权限,处理器核将下陷至虚拟机监控器中;
[0025] 虚拟机监控器将必要的异常信息从应用虚拟机的上下文结构体及内存中复制到内核虚拟机中,其中包括异常原因、异常目标地址;尤其是,虚拟机监控器需将内核虚拟中保存的异常返回地址设置为产生初始化请求的指令地址以隐藏应用线程的运行信息;将下陷时的应用虚拟核上下文保存到对应应用线程的上下文结构体中,供异常返回时加载;将异常信息记录在应用线程的结构体中供其他安全检查机制参考;依据内核及硬件规范调整内核虚拟核的进/线程标志寄存器以隐藏实际的线程信息,同时使得内核异常处理函数返回时虚拟机监控器可以有效识别需调度的应用线程,上述状态同步结束后,虚拟机监控器切换至内核虚拟核并恢复执行。
[0026] 优选地,当内核试图调度应用线程在某一处理器核上执行时,由于内核虚拟机中存放应用代码的物理页没有可执行权限,处理器核将下陷至虚拟机监控器中,虚拟机监控器读取进程标识并查询虚拟机列表以确定目标应用及目标虚拟机,虚拟机监控器检查堆栈寄存器中的应用线程标识是否在应用线程列表中以确定其是否有效,若无效则拒绝恢复该线程的执行并死循环挂起,若线程标识有效,则根据虚拟机监控器内保存的线程上下文恢复所有硬件寄存器,并调度应用虚拟机虚拟核继续执行,由于线程上下文保存在虚拟机监控器的内存中,内核无法随意读取或修改应用运行时寄存器中的值。
[0027] 优选地,当应用请求系统调用时,除了执行中断或异常中的所有操作外,虚拟机监控器还将从下陷时的寄存器值中获得系统调用号,并依据不同的系统调用需求将必要的寄存器信息、应用内存区域暴露给内核虚拟机,并切换到内核虚拟机中完成系统调用,当系统调用完成后,除了触发内核调度线程的所有操作外,虚拟机监控器还将重新保护之前所有暴露的内存区域,以防止应用重新将这些区域用作他用时可能导致的数据泄露或破坏;
[0028] 当内核试图对属于应用的物理页进行换出时,由于内核虚拟机中存放应用代码与数据的物理页没有可读权限,内核虚拟机下陷至虚拟机监控器,虚拟机监控器通过异常为读异常来判定内核试图读取应用的内存,并认为这是一个换出操作,虚拟机监控器随后使用一个对目标物理页进行加密,并在自身内存中保留一消息认证码以保证完整性,加密完成后,虚拟机监控器在内核虚拟机中增加该页的权限,并在应用虚拟机中取消该页的权限,随后返回内核虚拟机中继续执行,此时内核将成功读取加密后的数据并将其换出。
[0029] 优选地,所述的虚拟机监控器的核心模块包括:
[0030] 提供虚拟机的创建功能,虚拟机监控器能够按上层模块要求动态地创建新的虚拟机并初始化其第二阶段地址翻译页表、虚拟核、虚拟核的寄存器与中断状态的信息;
[0031] 提供虚拟核的切换功能,上层模块根据需要在同一或不同虚拟机的不同虚拟核间进行切换,虚拟机监控器保证所有相关的硬件寄存器上下文的原子性,所有调度由上层模块完成;
[0032] 提供对虚拟核上下文的访问功能,包括:读取、修改未在运行的虚拟核的通用硬件寄存器、系统硬件寄存器;依据虚拟核内的虚拟地址或物理地址访问内存,并保证虚拟核拥有对应的访问权限;
[0033] 提供基本的异常处理功能,包括:拦截虚拟机内发生的中断与同步异常;向上层模块提供异常处理函数的注册接口,并实现链式处理,其中链式处理为依次调用处理函数,直到某个处理函数报告异常已被处理、处理过程发生错误或没有下一个处理函数;向上层模块提供异常信息访问接口,包括异常类型、异常发生时的寄存器上下文、数据/指令异常的目标地址;
[0034] 提供第二阶段页表维护功能,包括:以某一设定虚拟机的物理地址空间中页对齐的内存区域为目标设置读、写、执行权限,并能够设置其与真实物理地址空间中的物理页的对应关系;
[0035] 提供第一、第二阶段页表的遍历功能,核心模块向上层模块暴露一个接口,从指定的第一或第二阶段页表根表开始,对于每个有效存在的页或块映射,调用某一回调函数,以供上层模块方便地查询、复制、检查某一虚拟机的第一、第二阶段页表;
[0036] 提供地址无关的启动方式,核心模块保证整个虚拟机监控器可以被加载至任意物理地址启动,启动后由核心模块引导逻辑完成初始页表的配置,保证引导逻辑结束后虚拟机监控器内存区域的虚拟地址始终为编译时的预设值。
[0037] 优选地,脱离富执行环境内核支持的可信应用和普通应用交互机制,以及可信执行环境支撑机制,具体包括:
[0038] i.对可信执行环境及普通应用暴露的接口与原有交互机制相互兼容,具体的指:对可信执行环境而言,交互流程,交互使用的切换方式,参数传递寄存器及其顺序、语义,内存布局与数据结构的兼容性;对普通应用而言,库函数接口的代码兼容性及动态库的二进制兼容性;
[0039] ii.借助虚拟化技术的用户态与虚拟机监控器交互机制,由于在ARM平台上用户态不能直接执行hvc进入虚拟机监控器,采取应用执行系统调用的方式,由虚拟机监控器拦截所有系统调用,并根据系统调用号区分指向虚拟机监控器的系统调用和指向富执行环境内核的系统调用,前者使用了系统调用号中尚未被分配的部分;
[0040] iii.将可信执行环境依赖的等待队列操作从内核驱动移至虚拟机监控器中实现,等待队列操作包括等待与唤醒,前者要求执行流阻塞在某一队列中,等待其他执行流将其唤醒,阻塞过程中该处理器核可切换执行其他执行流,后者将指定队列中的第一个执行流唤醒,并在未来某时刻调度其至处理器核上运行,虚拟机监控器使用等底层操作实现这两种上层操作,当可信执行环境要求等待时,虚拟机监控器将等待对象通过映射转换为虚拟机监控器内存空间中的等待队列链表,获得该链表的锁,将等待线程加入到链表中,并释放链表锁,随后自旋判断当前线程是否被唤醒,若线程已被唤醒,虚拟机监控器返回可信执行环境中继续执行,若线程尚未被唤醒,则虚拟机监控器设置特定的寄存器指示调用调度操作并返回应用的用户态交互库中,用户态库通过判断寄存器的值识别虚拟机监控器请求调度操作,并执行sched_yield系统调用放弃CPU,借助富执行环境内核的调度器避免自旋等待导致的处理器资源浪费;
[0041] iv.将可信执行环境和富执行环境共享内存的管理移至虚拟机监控器中,由于不正确的内存分配结果可能导致应用将自身的关键数据被覆盖,所以内存管理也必须放到可信环境中进行,虚拟机监控器在启动时通过可信执行环境提供的调用接口(例如ARM平台中的SMC指令等)获得共享内存的地址、大小的信息,并使用内置的内存资源管理器进行管理,修改后的用户态库将通过系统调用请求虚拟机监控器分配或释放共享内存;
[0042] v.将可信应用加载及文件读写的文件操作移至用户态库中实现,将该支持功能移至用户态库中,虚拟机监控器将可信执行环境的请求直接复制到应用内存中,由用户态库中的代码负责通过相关系统调用完成请求;
[0043] vi.由于用户态库无法得到共享内存的物理地址,与可信执行环境交互的数据结构中的指针全部填写虚拟地址,由虚拟机监控器在调用可信执行环境及从可信执行环境返回时通过查询第一、第二阶段翻译页表完成地址转换。
[0044] 优选地,由于虚拟机监控器不可直接管理应用的虚拟地址空间,采取如下步骤完成应用页表的配置:
[0045] 用户态库使用mmap系统调用请求内核为其分配虚拟地址空间,其中应用虚拟地址记为地址A,内核将在相关数据结构中记录该信息,并直接返回用户态,不会为应用准备页表和物理页;
[0046] 用户态库使用特殊系统调用请求虚拟机监控器为其分配共享内存,虚拟机监控器在共享内存区中为其分配内存,并记录共享内存地址与应用虚拟地址A的对应关系,其中真实物理地址记为地址B;
[0047] 应用访问共享内存,此时触发第一阶段地址翻译异常,经上述其他机制处理后,内核将为应用分配物理页并配置页表,其中虚拟机物理地址记为地址C,当内核处理过程完成并返回应用时需经过虚拟机监控器,后者识别该异常的虚拟地址对应共享内存,并查询虚拟地址与共享内存的对应关系;在应用虚拟机的第二阶段翻译页表中将虚拟机物理地址C重定向至真实物理地址B;
[0048] 恢复应用执行,
[0049] 此时应用再次访问虚拟地址A,并经两次翻译后得到真实物理地址B,从而访问共享内存。
[0050] 与现有技术相比,本发明具有不需要修改任何现有代码,不需要重新编译内核,支持硬件多线程,并能阻止内核对普通应用的非交互数据的攻击,有效地降低了部署成本,并提高了普通应用及可信应用-普通应用交互通道的安全性。附图说明
[0051] 图1示出应用请求被保护及保护完成后的内存布局;
[0052] 图2示出应用发起系统调用时临时生成的内存布局。

具体实施方式

[0053] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
[0054] 本发明的原理是,将富执行环境的内核与应用放置在不同的虚拟机中运行,并借助虚拟机监控器及用户态库的支持实现对内核、应用的透明兼容。
[0055] 本发明的具体步骤包括:
[0056] 1、普通应用请求保护时,用户态库访问/proc/self/maps获得自身虚拟地址空间信息,向每个页执行写入操作以触发写时复制,保证普通应用不再与任何其他程序存在只读共享页。通过访问CTR_EL0寄存器下陷至虚拟机监控器,后者创建新的虚拟机并通过遍历当前第一阶段页表的方式获得所有属于被保护应用的物理页,在内核虚拟机的第二阶段页表中去除这些页的访问权限。
[0057] 2、当应用执行系统调用时,应用虚拟机将试图执行内核中的处理函数并导致第二阶段地址翻译异常,下陷至虚拟机监控器中。虚拟机监控器依据目标系统调用依赖的语义部分暴露寄存器与内存至内核虚拟机中。暴露寄存器的方式是直接复制寄存器的值,并将其他寄存器填充为随机值。暴露内存区域的方式是直接在内核虚拟机的第二阶段页表中允许其访问属于应用的物理内存页,或将目标区域复制到新的物理页并将内核的访问重定向到新的物理页中。
[0058] 3、当应用虚拟机执行过程中发生中断时,应用虚拟机将试图执行内核中的处理函数并导致第二阶段地址翻译异常,下陷至虚拟机监控器中。虚拟机监控器在其自身的内存中保存寄存器上下文,将寄存器填充为随机值后切换至内核虚拟机完成中断处理。
[0059] 4、当内核试图换出属于应用的物理页时,内核虚拟机将发生第二阶段地址翻译异常,下陷至虚拟机监控器中。虚拟机监控器使用AES-GCM算法加密该物理页并在其自身内存中保存tag值用于完整性校验。加密后,虚拟机监控器向内核虚拟机开放该物理页的访问权限并取消应用虚拟机对该物理页的访问权限,内核将加密后的内容换出到交换空间。
[0060] 5、当应用试图访问已被换出的页时,将首先触发第一阶段地址翻译异常,由内核处理并将加密的页换入到某一物理页中,随后应用恢复执行并再次访问该页,此时触发第二阶段地址翻译异常并下陷至虚拟机监控器中。虚拟机监控器解密该页,验证其完整性并在应用虚拟机的第二阶段页表中开放该页的访问权限。应用恢复执行后第三次访问该页并成功。
[0061] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈