CN109558211A - 保护可信应用与普通应用的交互完整性和保密性的方法 - Google Patents
保护可信应用与普通应用的交互完整性和保密性的方法 Download PDFInfo
- Publication number
- CN109558211A CN109558211A CN201811427903.2A CN201811427903A CN109558211A CN 109558211 A CN109558211 A CN 109558211A CN 201811427903 A CN201811427903 A CN 201811427903A CN 109558211 A CN109558211 A CN 109558211A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- application
- kernel
- monitor
- virtual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种保护可信应用与普通应用的交互完整性和保密性的方法,包括:用虚拟化技术在富执行环境的内核与应用之间建立内存隔离;利用虚拟机监控器及硬件虚拟化支持实现在不修改内核与应用代码的情况下透明地处理系统调用、中断、内存页换入换出的操作;以及建立与原有系统兼容的、脱离内核驱动支持的可信应用和普通应用交互库。与现有技术相比,本发明具有支持硬件多线程、不需要修改富执行环境内核、能够为普通应用提供更完整保护等优点。
Description
技术领域
本发明涉及移动平台安全技术领域,尤其是涉及一种保护可信应用与普通应用的交互完整性和保密性的方法。
背景技术
可信执行环境,尤其是基于TrustZone技术的可信执行环境在移动终端、IntelSGX技术在服务器和桌面电脑上逐渐普及,人们通常关注于可信执行环境内的安全性,而忽视了可信应用与普通应用交互过程中富执行环境一端可能存在的安全问题。
正常的交互过程依赖于富执行环境中的内核软件,正确实现的内核可以保证交互的安全性及多个普通应用之间的隔离性,故富执行环境中可能存在的安全问题主要是恶意内核可能直接发起攻击或不安全的内核受到其他应用的攻击与控制后向目标应用发起攻击。
现有的解决方案依赖可信执行环境的内核在必要时向目标应用的内存中放入交互密钥,并在执行流脱离目标应用范围(如被中断、请求系统调用)时擦除密钥。该方案要求可信执行环境能够监控富执行环境中的上下文切换,而且没有考虑在硬件多线程环境下可能同时存在目标应用的执行流与内核的执行流。由于TrustZone等隔离技术没有提供足够的硬件支持,监控上下文切换需要复杂的软件流程,并且涉及对富执行环境内核的修改。该方案也没有考虑富执行环境内核对目标应用的其他数据直接发起攻击,而只保护了交互密钥。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种保护可信应用与普通应用的交互完整性和保密性的方法,可支持硬件多线程、不需要修改富执行环境内核、能够为普通应用提供更完整保护。
本发明的目的可以通过以下技术方案来实现:
一种保护可信应用与普通应用的交互完整性和保密性的方法,其特征在于,包括:
用虚拟化技术在富执行环境的内核与应用之间建立内存隔离;
利用虚拟机监控器及硬件虚拟化支持实现在不修改内核与应用代码的情况下透明地处理系统调用、中断、内存页换入换出的操作;
以及建立与原有系统兼容的、脱离内核驱动支持的可信应用和普通应用交互库。
优选地,所述的用虚拟化技术在富执行环境的内核与应用之间建立内存隔离具体为:
将内核与应用放置在不同虚拟机中,利用虚拟化技术完全隔离两者的物理内存空间,在多数情况下,所有虚拟机的页表第二阶段翻译使用平行映射,即虚拟机物理地址等于真实物理地址,任何时刻,某一物理页只能属于某个虚拟机;
当需要时,在某一虚拟机的第二阶段翻译页表中将目标内存区域相关的页表项填充为0,即无效值,用于阻止该虚拟机以任何方式访问该物理页,下文称“在该虚拟机中取消该页的权限”;
当需要时,在某一虚拟机的第二阶段翻译页表中将目标内存区域相关的页表项填充为平行映射,即令虚拟机物理地址等于真实物理地址,并开放读写执行权限,以允许内核利用第一阶段翻译页表管理该物理页,但是阻止其他虚拟机访问该物理页,下文称“在该虚拟机增加该页的权限”,
当新的普通应用请求被保护时,应用通过不依赖内核支持的方式(如操作特殊寄存器,访问可以触发虚拟化保护的内存、外设等由硬件直接将上下文切换至虚拟机监控器的方式)直接下陷到虚拟机监控器中,由监控器创建新的应用虚拟机,并对新的应用虚拟机进行初始化。
优选地,所述的监控器对新的应用虚拟机进行初始化具体为:
将下陷时的寄存器上下文复制到初始线程的寄存器上下文结构体中;
将第二阶段翻译页表初始化为空,通过核心模块的遍历功能探测所有属于应用的虚拟机物理内存页,在内核虚拟机中取消其所有权限,并在新的应用虚拟机中增加该页的所有权限;
在虚拟机列表中增加该新的应用虚拟机,并以进程的第一阶段地址翻译页表地址作为进程标识,建立进程标识到应用虚拟机的映射;
初始化成功后,设置新应用虚拟机虚拟核的某一通用寄存器(可以为r0寄存器)为0以指示初始化成功,同时切换到新应用虚拟机中继续执行应用逻辑;
初始化失败时,设置内核虚拟机虚拟核的某一通用寄存器(可以为r0寄存器)为1以指示初始化失败,回收所有资源,并返回内核虚拟机中继续执行应用逻辑。
优选地,当新的普通应用请求被保护时,为了避免正常情况下内核及其他应用可能对应用物理页的访问,需要阻止内核在相关物理页上进行写时复制、内存合并的优化技术;
用户态库将遍历应用的所有虚拟地址空间区域、为其增加可写权限并向其写入内容以触发写时复制机制,此时内核将为该应用单独分配一物理页以防止写入的内容对其他共享者产生影响,由于写入的内容与原内容相同,该操作不影响应用的正常运行;同时,关闭内核KSM机制以阻止内核周期性扫描所有物理页内容。
优选地,当应用虚拟机运行过程中发生中断或异常时,虚拟核将试图执行内核中对应的处理函数,由于应用虚拟机中存放内核代码的物理页没有可执行权限,处理器核将下陷至虚拟机监控器中;
虚拟机监控器将必要的异常信息从应用虚拟机的上下文结构体及内存中复制到内核虚拟机中,其中包括异常原因、异常目标地址;尤其是,虚拟机监控器需将内核虚拟中保存的异常返回地址设置为产生初始化请求的指令地址以隐藏应用线程的运行信息;将下陷时的应用虚拟核上下文保存到对应应用线程的上下文结构体中,供异常返回时加载;将异常信息记录在应用线程的结构体中供其他安全检查机制参考;依据内核及硬件规范调整内核虚拟核的进/线程标志寄存器以隐藏实际的线程信息,同时使得内核异常处理函数返回时虚拟机监控器可以有效识别需调度的应用线程,上述状态同步结束后,虚拟机监控器切换至内核虚拟核并恢复执行。
优选地,当内核试图调度应用线程在某一处理器核上执行时,由于内核虚拟机中存放应用代码的物理页没有可执行权限,处理器核将下陷至虚拟机监控器中,虚拟机监控器读取进程标识并查询虚拟机列表以确定目标应用及目标虚拟机,虚拟机监控器检查堆栈寄存器中的应用线程标识是否在应用线程列表中以确定其是否有效,若无效则拒绝恢复该线程的执行并死循环挂起,若线程标识有效,则根据虚拟机监控器内保存的线程上下文恢复所有硬件寄存器,并调度应用虚拟机虚拟核继续执行,由于线程上下文保存在虚拟机监控器的内存中,内核无法随意读取或修改应用运行时寄存器中的值。
优选地,当应用请求系统调用时,除了执行中断或异常中的所有操作外,虚拟机监控器还将从下陷时的寄存器值中获得系统调用号,并依据不同的系统调用需求将必要的寄存器信息、应用内存区域暴露给内核虚拟机,并切换到内核虚拟机中完成系统调用,当系统调用完成后,除了触发内核调度线程的所有操作外,虚拟机监控器还将重新保护之前所有暴露的内存区域,以防止应用重新将这些区域用作他用时可能导致的数据泄露或破坏;
当内核试图对属于应用的物理页进行换出时,由于内核虚拟机中存放应用代码与数据的物理页没有可读权限,内核虚拟机下陷至虚拟机监控器,虚拟机监控器通过异常为读异常来判定内核试图读取应用的内存,并认为这是一个换出操作,虚拟机监控器随后使用一个对目标物理页进行加密,并在自身内存中保留一消息认证码以保证完整性,加密完成后,虚拟机监控器在内核虚拟机中增加该页的权限,并在应用虚拟机中取消该页的权限,随后返回内核虚拟机中继续执行,此时内核将成功读取加密后的数据并将其换出。
优选地,所述的虚拟机监控器的核心模块包括:
提供虚拟机的创建功能,虚拟机监控器能够按上层模块要求动态地创建新的虚拟机并初始化其第二阶段地址翻译页表、虚拟核、虚拟核的寄存器与中断状态的信息;
提供虚拟核的切换功能,上层模块根据需要在同一或不同虚拟机的不同虚拟核间进行切换,虚拟机监控器保证所有相关的硬件寄存器上下文的原子性,所有调度由上层模块完成;
提供对虚拟核上下文的访问功能,包括:读取、修改未在运行的虚拟核的通用硬件寄存器、系统硬件寄存器;依据虚拟核内的虚拟地址或物理地址访问内存,并保证虚拟核拥有对应的访问权限;
提供基本的异常处理功能,包括:拦截虚拟机内发生的中断与同步异常;向上层模块提供异常处理函数的注册接口,并实现链式处理,其中链式处理为依次调用处理函数,直到某个处理函数报告异常已被处理、处理过程发生错误或没有下一个处理函数;向上层模块提供异常信息访问接口,包括异常类型、异常发生时的寄存器上下文、数据/指令异常的目标地址;
提供第二阶段页表维护功能,包括:以某一设定虚拟机的物理地址空间中页对齐的内存区域为目标设置读、写、执行权限,并能够设置其与真实物理地址空间中的物理页的对应关系;
提供第一、第二阶段页表的遍历功能,核心模块向上层模块暴露一个接口,从指定的第一或第二阶段页表根表开始,对于每个有效存在的页或块映射,调用某一回调函数,以供上层模块方便地查询、复制、检查某一虚拟机的第一、第二阶段页表;
提供地址无关的启动方式,核心模块保证整个虚拟机监控器可以被加载至任意物理地址启动,启动后由核心模块引导逻辑完成初始页表的配置,保证引导逻辑结束后虚拟机监控器内存区域的虚拟地址始终为编译时的预设值。
优选地,脱离富执行环境内核支持的可信应用和普通应用交互机制,以及可信执行环境支撑机制,具体包括:
i.对可信执行环境及普通应用暴露的接口与原有交互机制相互兼容,具体的指:对可信执行环境而言,交互流程,交互使用的切换方式,参数传递寄存器及其顺序、语义,内存布局与数据结构的兼容性;对普通应用而言,库函数接口的代码兼容性及动态库的二进制兼容性;
ii.借助虚拟化技术的用户态与虚拟机监控器交互机制,由于在ARM平台上用户态不能直接执行hvc进入虚拟机监控器,采取应用执行系统调用的方式,由虚拟机监控器拦截所有系统调用,并根据系统调用号区分指向虚拟机监控器的系统调用和指向富执行环境内核的系统调用,前者使用了系统调用号中尚未被分配的部分;
iii.将可信执行环境依赖的等待队列操作从内核驱动移至虚拟机监控器中实现,等待队列操作包括等待与唤醒,前者要求执行流阻塞在某一队列中,等待其他执行流将其唤醒,阻塞过程中该处理器核可切换执行其他执行流,后者将指定队列中的第一个执行流唤醒,并在未来某时刻调度其至处理器核上运行,虚拟机监控器使用锁等底层操作实现这两种上层操作,当可信执行环境要求等待时,虚拟机监控器将等待对象通过映射转换为虚拟机监控器内存空间中的等待队列链表,获得该链表的锁,将等待线程加入到链表中,并释放链表锁,随后自旋判断当前线程是否被唤醒,若线程已被唤醒,虚拟机监控器返回可信执行环境中继续执行,若线程尚未被唤醒,则虚拟机监控器设置特定的寄存器指示调用调度操作并返回应用的用户态交互库中,用户态库通过判断寄存器的值识别虚拟机监控器请求调度操作,并执行sched_yield系统调用放弃CPU,借助富执行环境内核的调度器避免自旋等待导致的处理器资源浪费;
iv.将可信执行环境和富执行环境共享内存的管理移至虚拟机监控器中,由于不正确的内存分配结果可能导致应用将自身的关键数据被覆盖,所以内存管理也必须放到可信环境中进行,虚拟机监控器在启动时通过可信执行环境提供的调用接口(例如ARM平台中的SMC指令等)获得共享内存的地址、大小的信息,并使用内置的内存资源管理器进行管理,修改后的用户态库将通过系统调用请求虚拟机监控器分配或释放共享内存;
v.将可信应用加载及文件读写的文件操作移至用户态库中实现,将该支持功能移至用户态库中,虚拟机监控器将可信执行环境的请求直接复制到应用内存中,由用户态库中的代码负责通过相关系统调用完成请求;
vi.由于用户态库无法得到共享内存的物理地址,与可信执行环境交互的数据结构中的指针全部填写虚拟地址,由虚拟机监控器在调用可信执行环境及从可信执行环境返回时通过查询第一、第二阶段翻译页表完成地址转换。
优选地,由于虚拟机监控器不可直接管理应用的虚拟地址空间,采取如下步骤完成应用页表的配置:
用户态库使用mmap系统调用请求内核为其分配虚拟地址空间,其中应用虚拟地址记为地址A,内核将在相关数据结构中记录该信息,并直接返回用户态,不会为应用准备页表和物理页;
用户态库使用特殊系统调用请求虚拟机监控器为其分配共享内存,虚拟机监控器在共享内存区中为其分配内存,并记录共享内存地址与应用虚拟地址A的对应关系,其中真实物理地址记为地址B;
应用访问共享内存,此时触发第一阶段地址翻译异常,经上述其他机制处理后,内核将为应用分配物理页并配置页表,其中虚拟机物理地址记为地址C,当内核处理过程完成并返回应用时需经过虚拟机监控器,后者识别该异常的虚拟地址对应共享内存,并查询虚拟地址与共享内存的对应关系;在应用虚拟机的第二阶段翻译页表中将虚拟机物理地址C重定向至真实物理地址B;
恢复应用执行,
此时应用再次访问虚拟地址A,并经两次翻译后得到真实物理地址B,从而访问共享内存。
与现有技术相比,本发明具有不需要修改任何现有代码,不需要重新编译内核,支持硬件多线程,并能阻止内核对普通应用的非交互数据的攻击,有效地降低了部署成本,并提高了普通应用及可信应用-普通应用交互通道的安全性。
附图说明
图1示出应用请求被保护及保护完成后的内存布局;
图2示出应用发起系统调用时临时生成的内存布局。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
本发明的原理是,将富执行环境的内核与应用放置在不同的虚拟机中运行,并借助虚拟机监控器及用户态库的支持实现对内核、应用的透明兼容。
本发明的具体步骤包括:
1、普通应用请求保护时,用户态库访问/proc/self/maps获得自身虚拟地址空间信息,向每个页执行写入操作以触发写时复制,保证普通应用不再与任何其他程序存在只读共享页。通过访问CTR_EL0寄存器下陷至虚拟机监控器,后者创建新的虚拟机并通过遍历当前第一阶段页表的方式获得所有属于被保护应用的物理页,在内核虚拟机的第二阶段页表中去除这些页的访问权限。
2、当应用执行系统调用时,应用虚拟机将试图执行内核中的处理函数并导致第二阶段地址翻译异常,下陷至虚拟机监控器中。虚拟机监控器依据目标系统调用依赖的语义部分暴露寄存器与内存至内核虚拟机中。暴露寄存器的方式是直接复制寄存器的值,并将其他寄存器填充为随机值。暴露内存区域的方式是直接在内核虚拟机的第二阶段页表中允许其访问属于应用的物理内存页,或将目标区域复制到新的物理页并将内核的访问重定向到新的物理页中。
3、当应用虚拟机执行过程中发生中断时,应用虚拟机将试图执行内核中的处理函数并导致第二阶段地址翻译异常,下陷至虚拟机监控器中。虚拟机监控器在其自身的内存中保存寄存器上下文,将寄存器填充为随机值后切换至内核虚拟机完成中断处理。
4、当内核试图换出属于应用的物理页时,内核虚拟机将发生第二阶段地址翻译异常,下陷至虚拟机监控器中。虚拟机监控器使用AES-GCM算法加密该物理页并在其自身内存中保存tag值用于完整性校验。加密后,虚拟机监控器向内核虚拟机开放该物理页的访问权限并取消应用虚拟机对该物理页的访问权限,内核将加密后的内容换出到交换空间。
5、当应用试图访问已被换出的页时,将首先触发第一阶段地址翻译异常,由内核处理并将加密的页换入到某一物理页中,随后应用恢复执行并再次访问该页,此时触发第二阶段地址翻译异常并下陷至虚拟机监控器中。虚拟机监控器解密该页,验证其完整性并在应用虚拟机的第二阶段页表中开放该页的访问权限。应用恢复执行后第三次访问该页并成功。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
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,从而访问共享内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811427903.2A CN109558211B (zh) | 2018-11-27 | 2018-11-27 | 保护可信应用与普通应用的交互完整性和保密性的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811427903.2A CN109558211B (zh) | 2018-11-27 | 2018-11-27 | 保护可信应用与普通应用的交互完整性和保密性的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109558211A true CN109558211A (zh) | 2019-04-02 |
CN109558211B CN109558211B (zh) | 2023-03-21 |
Family
ID=65867611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811427903.2A Active CN109558211B (zh) | 2018-11-27 | 2018-11-27 | 保护可信应用与普通应用的交互完整性和保密性的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558211B (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427274A (zh) * | 2019-07-16 | 2019-11-08 | 阿里巴巴集团控股有限公司 | Tee系统中的数据传输方法和装置 |
CN110445580A (zh) * | 2019-08-09 | 2019-11-12 | 浙江大华技术股份有限公司 | 数据发送方法及装置、存储介质、电子装置 |
CN111309384A (zh) * | 2020-02-04 | 2020-06-19 | 中科驭数(北京)科技有限公司 | 针对硬件加速器的软硬件交互方法、装置和存储介质 |
CN111400702A (zh) * | 2020-03-24 | 2020-07-10 | 上海瓶钵信息科技有限公司 | 一种虚拟化的操作系统内核保护方法 |
CN111949369A (zh) * | 2020-08-03 | 2020-11-17 | 上海交通大学 | 面向图形处理器的可信执行环境构建方法及系统 |
US11003785B2 (en) | 2019-07-16 | 2021-05-11 | Advanced New Technologies Co., Ltd. | Data transmission method and apparatus in tee systems |
CN112818327A (zh) * | 2021-02-26 | 2021-05-18 | 中国人民解放军国防科技大学 | 基于TrustZone的用户级代码和数据安全可信保护方法及装置 |
WO2021143168A1 (zh) * | 2020-01-19 | 2021-07-22 | 华为技术有限公司 | 可信执行环境操作系统崩溃处理方法及电子设备 |
CN113722246A (zh) * | 2021-11-02 | 2021-11-30 | 超验信息科技(长沙)有限公司 | 处理器中物理内存保护机制的实现方法及装置 |
CN113742789A (zh) * | 2020-05-27 | 2021-12-03 | 华为技术有限公司 | 数据处理方法及数据处理装置 |
CN114089920A (zh) * | 2021-11-25 | 2022-02-25 | 北京字节跳动网络技术有限公司 | 数据存储方法、装置、可读介质及电子设备 |
WO2022100693A1 (zh) * | 2020-11-12 | 2022-05-19 | 华为技术有限公司 | 一种地址转换关系的配置方法及计算机系统 |
CN114547651A (zh) * | 2022-02-18 | 2022-05-27 | 浙江大学 | 一种基于链式加密的操作系统中断上下文保护方法 |
WO2022121395A1 (zh) * | 2020-12-10 | 2022-06-16 | 中国银联股份有限公司 | 可信应用的控制方法和设备、计算机存储介质以及终端 |
WO2022228287A1 (zh) * | 2021-04-26 | 2022-11-03 | 华为技术有限公司 | 内存数据获取方法、装置及存储介质 |
WO2023020069A1 (zh) * | 2021-08-18 | 2023-02-23 | 华为技术有限公司 | 虚拟机管理方法及相关系统、存储介质 |
CN117494108A (zh) * | 2023-12-29 | 2024-02-02 | 南方科技大学 | 可信执行环境实现方法、计算机设备及存储介质 |
CN117714398A (zh) * | 2024-02-05 | 2024-03-15 | 浪潮电子信息产业股份有限公司 | 一种数据传输系统、方法、电子设备及存储介质 |
CN117744117A (zh) * | 2023-12-20 | 2024-03-22 | 元心信息科技集团有限公司 | 权限设置方法、装置、电子设备及计算机可读存储介质 |
CN117851289A (zh) * | 2024-03-07 | 2024-04-09 | 北京象帝先计算技术有限公司 | 页表获取方法、系统、电子组件及电子设备 |
CN117494108B (zh) * | 2023-12-29 | 2024-05-31 | 南方科技大学 | 可信执行环境实现方法、计算机设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544054A (zh) * | 2007-12-30 | 2014-01-29 | 英特尔公司 | 用于在事务性存储器系统中实现强原子性的方法、装置和系统 |
CN104182269A (zh) * | 2014-08-12 | 2014-12-03 | 山东省计算中心(国家超级计算济南中心) | 一种kvm虚拟机的物理内存取证方法 |
US20170109291A1 (en) * | 2015-10-16 | 2017-04-20 | International Business Machines Corporation | Method to share a coherent accelerator context inside the kernel |
CN107102888A (zh) * | 2017-04-25 | 2017-08-29 | 华中科技大学 | 一种基于硬件虚拟化技术的共享库隔离保护方法及系统 |
CN107203411A (zh) * | 2017-04-18 | 2017-09-26 | 中国科学院计算技术研究所 | 一种基于远程ssd的虚拟机内存扩展方法及系统 |
CN107203716A (zh) * | 2017-05-03 | 2017-09-26 | 中国科学院信息工程研究所 | 一种Linux内核轻量级结构化保护方法及装置 |
US20180063083A1 (en) * | 2016-08-30 | 2018-03-01 | Red Hat Israel, Ltd. | Guest netfilter protection by virtual machine function |
CN108491716A (zh) * | 2018-01-29 | 2018-09-04 | 中国电子科技网络信息安全有限公司 | 一种基于物理页地址分析的虚拟机内存隔离性检测方法 |
-
2018
- 2018-11-27 CN CN201811427903.2A patent/CN109558211B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544054A (zh) * | 2007-12-30 | 2014-01-29 | 英特尔公司 | 用于在事务性存储器系统中实现强原子性的方法、装置和系统 |
CN104182269A (zh) * | 2014-08-12 | 2014-12-03 | 山东省计算中心(国家超级计算济南中心) | 一种kvm虚拟机的物理内存取证方法 |
US20170109291A1 (en) * | 2015-10-16 | 2017-04-20 | International Business Machines Corporation | Method to share a coherent accelerator context inside the kernel |
US20180063083A1 (en) * | 2016-08-30 | 2018-03-01 | Red Hat Israel, Ltd. | Guest netfilter protection by virtual machine function |
CN107203411A (zh) * | 2017-04-18 | 2017-09-26 | 中国科学院计算技术研究所 | 一种基于远程ssd的虚拟机内存扩展方法及系统 |
CN107102888A (zh) * | 2017-04-25 | 2017-08-29 | 华中科技大学 | 一种基于硬件虚拟化技术的共享库隔离保护方法及系统 |
CN107203716A (zh) * | 2017-05-03 | 2017-09-26 | 中国科学院信息工程研究所 | 一种Linux内核轻量级结构化保护方法及装置 |
CN108491716A (zh) * | 2018-01-29 | 2018-09-04 | 中国电子科技网络信息安全有限公司 | 一种基于物理页地址分析的虚拟机内存隔离性检测方法 |
Non-Patent Citations (4)
Title |
---|
ING-JYE SHYU: ""Virtual address translation for wide-address architectures"", 《OPERATING SYSTEMS REVIEW》 * |
夏虞斌: ""计算机系统隔离研究"", 《上海交通大学学报》 * |
张磊: ""基于虚拟机的内核完整性保护技术"", 《电子科技大学学报》 * |
陈乔: ""系统级仿真性能优化技术研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427274B (zh) * | 2019-07-16 | 2020-07-17 | 阿里巴巴集团控股有限公司 | Tee系统中的数据传输方法和装置 |
CN110427274A (zh) * | 2019-07-16 | 2019-11-08 | 阿里巴巴集团控股有限公司 | Tee系统中的数据传输方法和装置 |
US11250145B2 (en) | 2019-07-16 | 2022-02-15 | Advanced New Technologies Co., Ltd. | Data transmission method and apparatus in tee systems |
US11003785B2 (en) | 2019-07-16 | 2021-05-11 | Advanced New Technologies Co., Ltd. | Data transmission method and apparatus in tee systems |
CN110445580B (zh) * | 2019-08-09 | 2022-04-19 | 浙江大华技术股份有限公司 | 数据发送方法及装置、存储介质、电子装置 |
CN110445580A (zh) * | 2019-08-09 | 2019-11-12 | 浙江大华技术股份有限公司 | 数据发送方法及装置、存储介质、电子装置 |
WO2021143168A1 (zh) * | 2020-01-19 | 2021-07-22 | 华为技术有限公司 | 可信执行环境操作系统崩溃处理方法及电子设备 |
US11874743B2 (en) | 2020-01-19 | 2024-01-16 | Huawei Technologies Co., Ltd. | Method for handling trusted execution environment operating system crash and electronic device |
CN111309384B (zh) * | 2020-02-04 | 2021-03-02 | 中科驭数(北京)科技有限公司 | 针对硬件加速器的软硬件交互方法、装置和存储介质 |
CN111309384A (zh) * | 2020-02-04 | 2020-06-19 | 中科驭数(北京)科技有限公司 | 针对硬件加速器的软硬件交互方法、装置和存储介质 |
CN111400702A (zh) * | 2020-03-24 | 2020-07-10 | 上海瓶钵信息科技有限公司 | 一种虚拟化的操作系统内核保护方法 |
CN111400702B (zh) * | 2020-03-24 | 2023-06-27 | 上海瓶钵信息科技有限公司 | 一种虚拟化的操作系统内核保护方法 |
CN113742789A (zh) * | 2020-05-27 | 2021-12-03 | 华为技术有限公司 | 数据处理方法及数据处理装置 |
CN111949369A (zh) * | 2020-08-03 | 2020-11-17 | 上海交通大学 | 面向图形处理器的可信执行环境构建方法及系统 |
CN111949369B (zh) * | 2020-08-03 | 2024-05-31 | 上海交通大学 | 面向图形处理器的可信执行环境构建方法及系统 |
WO2022100693A1 (zh) * | 2020-11-12 | 2022-05-19 | 华为技术有限公司 | 一种地址转换关系的配置方法及计算机系统 |
WO2022121395A1 (zh) * | 2020-12-10 | 2022-06-16 | 中国银联股份有限公司 | 可信应用的控制方法和设备、计算机存储介质以及终端 |
CN112818327A (zh) * | 2021-02-26 | 2021-05-18 | 中国人民解放军国防科技大学 | 基于TrustZone的用户级代码和数据安全可信保护方法及装置 |
WO2022228287A1 (zh) * | 2021-04-26 | 2022-11-03 | 华为技术有限公司 | 内存数据获取方法、装置及存储介质 |
WO2023020069A1 (zh) * | 2021-08-18 | 2023-02-23 | 华为技术有限公司 | 虚拟机管理方法及相关系统、存储介质 |
CN113722246A (zh) * | 2021-11-02 | 2021-11-30 | 超验信息科技(长沙)有限公司 | 处理器中物理内存保护机制的实现方法及装置 |
CN114089920A (zh) * | 2021-11-25 | 2022-02-25 | 北京字节跳动网络技术有限公司 | 数据存储方法、装置、可读介质及电子设备 |
CN114547651A (zh) * | 2022-02-18 | 2022-05-27 | 浙江大学 | 一种基于链式加密的操作系统中断上下文保护方法 |
CN114547651B (zh) * | 2022-02-18 | 2024-06-07 | 浙江大学 | 一种基于链式加密的操作系统中断上下文保护方法 |
CN117744117A (zh) * | 2023-12-20 | 2024-03-22 | 元心信息科技集团有限公司 | 权限设置方法、装置、电子设备及计算机可读存储介质 |
CN117494108B (zh) * | 2023-12-29 | 2024-05-31 | 南方科技大学 | 可信执行环境实现方法、计算机设备及存储介质 |
CN117494108A (zh) * | 2023-12-29 | 2024-02-02 | 南方科技大学 | 可信执行环境实现方法、计算机设备及存储介质 |
CN117714398A (zh) * | 2024-02-05 | 2024-03-15 | 浪潮电子信息产业股份有限公司 | 一种数据传输系统、方法、电子设备及存储介质 |
CN117714398B (zh) * | 2024-02-05 | 2024-05-10 | 浪潮电子信息产业股份有限公司 | 一种数据传输系统、方法、电子设备及存储介质 |
CN117851289A (zh) * | 2024-03-07 | 2024-04-09 | 北京象帝先计算技术有限公司 | 页表获取方法、系统、电子组件及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109558211B (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558211A (zh) | 保护可信应用与普通应用的交互完整性和保密性的方法 | |
CN109522754B (zh) | 一种移动终端可信隔离环境核心控制方法 | |
CN107667350A (zh) | 基于虚拟化的平台保护技术 | |
KR102355213B1 (ko) | 운영 체제 공격으로부터 애플리케이션 기밀사항을 보호하는 기법 | |
CN108475217B (zh) | 用于审计虚拟机的系统及方法 | |
CN100533385C (zh) | 用于提供系统完整性和遗留环境模拟的方法及装置 | |
US7272832B2 (en) | Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform | |
US9870324B2 (en) | Isolating guest code and data using multiple nested page tables | |
CN104881596B (zh) | 在安全处理环境中修改存储器权限 | |
CN101187902B (zh) | 在虚拟机环境中的客户机之间共享信息 | |
US8341369B2 (en) | Providing protected access to critical memory regions | |
CN109933441A (zh) | 微内核进程间通讯方法和系统 | |
US20070055837A1 (en) | Memory protection within a virtual partition | |
CN106970823B (zh) | 高效的基于嵌套虚拟化的虚拟机安全保护方法及系统 | |
CN105074663A (zh) | 按需选择性地启用虚拟机监测器的操作的方法和装置 | |
CN103907098A (zh) | 用于管理程序环境中的关键地址空间保护的系统和方法 | |
CN105393255A (zh) | 用于虚拟机中的恶意软件检测的过程评估 | |
CN103858129A (zh) | 用于在系统管理程序环境中进行内核rootkit保护的系统和方法 | |
CN110059453A (zh) | 一种容器虚拟化安全加固装置及方法 | |
CN112035272A (zh) | 进程间通信的方法、装置以及计算机设备 | |
US9116741B2 (en) | Computer program product, and information processing apparatus and method | |
CN101211271A (zh) | 根据活动性状态控制虚拟机 | |
US20160259731A1 (en) | Memory management | |
EP1955154A2 (en) | Secure virtual-machine monitor | |
CN104714834B (zh) | 一种空间确定的任务调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |