CN115391235A - 一种硬件辅助的软件安全防护方法、设备及介质 - Google Patents

一种硬件辅助的软件安全防护方法、设备及介质 Download PDF

Info

Publication number
CN115391235A
CN115391235A CN202210977578.7A CN202210977578A CN115391235A CN 115391235 A CN115391235 A CN 115391235A CN 202210977578 A CN202210977578 A CN 202210977578A CN 115391235 A CN115391235 A CN 115391235A
Authority
CN
China
Prior art keywords
sensitive data
token
area
pointer
access
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
Application number
CN202210977578.7A
Other languages
English (en)
Other versions
CN115391235B (zh
Inventor
张超
谭闻德
李媛
吴建平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN202210977578.7A priority Critical patent/CN115391235B/zh
Publication of CN115391235A publication Critical patent/CN115391235A/zh
Application granted granted Critical
Publication of CN115391235B publication Critical patent/CN115391235B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Landscapes

  • Engineering & Computer Science (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)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Software Systems (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Automation & Control Theory (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种硬件辅助的软件安全防护方法、设备及介质,该方法包括:确定指定的物理内存区域为安全区并确定访问所述安全区的敏感数据操作代码;将敏感数据存储在所述安全区中,其中,所述安全区只允许所述敏感数据操作代码访问,所述敏感数据操作代码只允许访问所述安全区;通过访问所述安全区的软件创建与所述敏感数据对应的敏感数据指针,根据所述敏感数据指针确定对应所述敏感数据指针的令牌,根据所述令牌判断是否允许所述敏感数据操作代码访问所述敏感数据。

Description

一种硬件辅助的软件安全防护方法、设备及介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种硬件辅助的软件安全防护方法、设备及介质。
背景技术
计算机软件一直以来面临着严重的安全威胁,其中内存破坏漏洞是一种最为广泛存在的安全威胁。这种漏洞常被攻击者利用,用于破坏软件中的敏感数据,进而劫持或者破坏软件的敏感操作或关键功能。
以操作系统内核页表为例,页表是操作系统内核中最为关键的敏感数据结构之一,其存储了虚拟地址至物理地址的映射以及每个虚拟内存页的权限信息。当页表遭到破坏时,内核和用户态应用程序的代码、数据及访问权限均有可能遭到破坏。因此,页表的完整性对于内核和用户态应用程序的安全性有显著影响。更重要的,页表的完整性同样影响内核或用户态应用程序中绝大多数现有防护方案的有效性。
例如,一个常见的漏洞防护方案,数据执行保护(Data Execution Prevention,DEP),同样根据页表中的访问权限设置来阻断代码注入攻击或代码破坏攻击。此外,所有基于代码插桩来实现安全检查的防护方案,包括控制流完整性及栈金丝雀,均依赖虚拟内存保护(即页表中存储的访问权限)来保护其插桩的检查代码或用到的元数据不被破坏。
页表的使用者一直以来假设页表是完整的。然而,在实践中,页表有可能遭到破坏。一个先前的研究,PT-Rand,演示了一个富有经验的攻击者能够利用内存破坏漏洞来找到页表在内存中的位置,修改页表权限来关闭数据执行保护,将内核中部分代码替换为恶意代码,最后通过合法的内核接口(如系统调用)来跳转至其注入的恶意代码并执行。这样的攻击并不会被控制流完整性等防护方案所检测到,因为攻击者在攻击过程中并没有触发任何非法的控制流转移。何况,控制流完整性方案所插桩的检查同样能够被攻击者在攻击开始时通过攻击来关闭。换言之,页表的完整性确实有可能遭到破坏,在这种情况下,已有的防护方案会变得无效,攻击者能够发动内核代码注入等攻击。
因此,页表作为内核中的关键敏感数据,需要被很好地保护。同样地,对于软件(不局限于内核)中的其它敏感数据,也需要被很好地保护。
发明内容
本申请提供了一种硬件辅助的软件安全防护方法、设备及介质,解决了现有技术对敏感数据的保护安全保证不足、依赖于重量级的硬件特性、会引入较高的额外性能开销等的技术问题。
一种硬件辅助的软件安全防护方法,包括:
确定指定的物理内存区域为安全区并确定访问所述安全区的敏感数据操作代码;
将敏感数据存储在所述安全区中,其中,所述安全区只允许所述敏感数据操作代码访问,所述敏感数据操作代码只允许访问所述安全区;
通过访问所述安全区的软件创建与所述敏感数据对应的敏感数据指针,根据所述敏感数据指针确定对应所述敏感数据指针的令牌,根据所述令牌判断是否允许所述敏感数据操作代码访问所述敏感数据。
在本申请的一种实施例中,确定指定的物理内存区域为安全区,具体包括:在处理器核中将指定的每个物理内存区域的权限寄存器中增加一个新的权限位;所述新的权限位指定对应的物理内存区域是否为安全区;根据所述权限位区分所述安全区和普通区域后进行访问。
在本申请的一种实施例中,确定访问所述安全区的敏感数据操作代码,具体包括:确定配置的新硬件指令,所述新硬件指令为一对专用于访问所述安全区的内存读和内存写指令;将原始敏感数据操作代码中的普通内存读和内存写指令替换为所述新硬件指令,形成新的敏感数据操作代码,以使所述新的敏感数据操作代码能够访问所述安全区。
在本申请的一种实施例中,通过访问所述安全区的软件创建与所述敏感数据对应的敏感数据指针,根据所述敏感数据指针确定对应所述敏感数据指针的令牌,具体包括:通过访问所述安全区的软件创建与所述敏感数据对应的敏感数据指针,将所述敏感数据指针存储在普通区域中;根据所述敏感数据指针签发令牌,将所述令牌存储到所述安全区中;根据所述令牌生成令牌指针,并将所述令牌指针也存储到所述普通区域中。
在本申请的一种实施例中,所述根据所述敏感数据指针签发令牌,具体包括:在所述安全区中开辟令牌的内存空间,所述令牌的内存空间包括所述敏感数据指针的内存空间和用户指针的内存空间;将所述敏感数据指针存储至所述敏感数据指针的内存空间中;根据令牌指针生成用户指针,并将所述用户指针存储到所述用户指针的内存空间中;其中,所述用户指针为指向所述令牌指针的指针。
在本申请的一种实施例中,在确定对应所述敏感数据指针的令牌后,所述方法还包括:通过访问所述安全区的软件对所述令牌进行维护和验证。
在本申请的一种实施例中,所述通过访问所述安全区的软件对所述令牌进行维护,具体包括:访问所述安全区的软件在创建所述敏感数据指针的同时在所述安全区中签发一个对应的令牌;在复制所述敏感数据指针的同时在安全区中复制对应的令牌;在销毁所述敏感数据指针的同时在安全区中销毁并清除对应的令牌。
在本申请的一种实施例中,所述通过访问所述安全区的软件对所述令牌进行验证,具体包括:判断所述令牌中的用户指针是否指回普通区域中与所述令牌对应的令牌指针;若是,判断所述令牌中的敏感数据指针是否与待验证的敏感数据指针相一致,若是,则判断所述令牌有效。
在本申请的一种实施例中,所述方法还包括:根据所述新硬件指令确定权限控制逻辑;当所述敏感数据操作代码违反所述权限控制逻辑进行访问时,所述权限控制逻辑触发访问错误异常以阻断所述敏感数据操作代码的非法访问请求。
在本申请的一种实施例中,所述方法还包括:根据所述新硬件指令确定权限控制逻辑;当所述敏感数据操作代码以外的普通代码违反所述权限控制逻辑进行访问时,所述权限控制逻辑触发访问错误异常以阻断所述普通代码的非法访问请求。
在本申请的一种实施例中,所述将敏感数据存储在所述安全区中,具体包括:从所述安全区中分配物理内存页,将所有所述敏感数据存储至所述物理内存页。
一种硬件辅助的软件安全防护设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通过总线通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行:
确定指定的物理内存区域为安全区并确定访问所述安全区的敏感数据操作代码;
将敏感数据存储在所述安全区中,其中,所述安全区只允许所述敏感数据操作代码访问,所述敏感数据操作代码只允许访问所述安全区;
通过访问所述安全区的软件创建与所述敏感数据对应的敏感数据指针,根据所述敏感数据指针确定对应所述敏感数据指针的令牌,根据所述令牌判断是否允许所述敏感数据操作代码访问所述敏感数据。
一种非易失性存储介质,存储有计算机可执行指令,所述计算机可执行指令由处理器执行,以实现下述步骤:
确定指定的物理内存区域为安全区并确定访问所述安全区的敏感数据操作代码;
将敏感数据存储在所述安全区中,其中,所述安全区只允许所述敏感数据操作代码访问,所述敏感数据操作代码只允许访问所述安全区;
通过访问所述安全区的软件创建与所述敏感数据对应的敏感数据指针,根据所述敏感数据指针确定对应所述敏感数据指针的令牌,根据所述令牌判断是否允许所述敏感数据操作代码访问所述敏感数据。
本申请提供了一种硬件辅助的软件安全防护方法、设备及介质,至少包括以下有益效果:通过引入新硬件指令来访问敏感数据,能够在高效地访问安全区的同时消除潜在的权限切换的时间窗口,降低了安全风险,减少了性能开销。通过将安全区使用物理内存进行设置,使处理器核可以依照现有的物理内存保护逻辑来高效地进行安全区权限检查,并可以阻止任何内存访问指令(包括普通内存访问指令及本申请引入的新内存访问指令)所产生的任何非法访问请求,提高了数据的安全性。通过使用令牌机制的约束,能够使攻击者不能篡改安全区中存储的令牌,给定的敏感数据指针不能被篡改为其他敏感数据指针,也不能在其他敏感数据指针处被恶意地复用。综上,本申请的方案不仅适用于保护页表等操作系统内核的敏感数据,且同样适用于保护无操作系统环境下的裸机应用程序的敏感数据,极大地提高了敏感数据存储与访问的安全性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种硬件辅助的软件安全防护方法步骤示意图;
图2为本申请实施例提供的安全区访问控制机制示意图;
图3为本申请实施例提供的令牌机制示意图;
图4为本申请实施例提供的软件访问内存的总体设计流程示意图;
图5为本申请实施例提供的寄存器中用来标识安全区的保留位示意图;
图6为本申请实施例提供的页表基址寄存器中用来标识安全区的保留位示意图;
图7为本申请实施例提供的一种硬件辅助的软件安全防护设备示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例对本申请进行清楚、完整的描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”“一个”“一种”“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”“包含”“具有”以及它们任何变形,意图在于覆盖不排他的包含;本申请所涉及的术语“第一”“第二”“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
现有的敏感数据保护方案主要有如下几类。
一、基于随机化的方案
该类方案随机化敏感数据在虚拟内存空间中的位置,使得攻击者无法得知敏感数据的位置,从而无法进行攻击。与地址空间布局随机化类似,这类方案会遭受信息泄露攻击、蛮力猜解攻击或侧信道攻击等。同样,在32位系统中,由于虚拟地址宽度较小,这类方案的随机化熵更小,安全保证变得更弱。此外,这类方案依赖于虚拟地址,即依赖于虚拟内存保护,因此,这类方案在保护页表等底层的敏感数据时存在缺陷。
二、基于物理内存隔离的方案
该类方案在物理地址的层面上将敏感数据与普通物理内存区域隔离。这类方案包括xMP及Intel HLAT等,其仅允许特定的代码片段访问敏感数据所在的物理地址。这类方案通常依赖于虚拟化技术,因此,与其他依赖于虚拟化技术的方案类似,即使有重量级的虚拟化硬件特性加速,这类方案通常会引入显著的大于5%的额外性能开销。这也使得这类方案无法适用于资源受限的计算机系统(如物联网IoT设备)。进一步,虚拟化技术较为复杂,其引入的敏感数据同样需要被保护。
作为一个具体实例,xMP将软件(如操作系统内核)中的不同组件隔离开来,允许其访问不同的“域”。每个域由一系列物理内存页组成,两个域可以共享一个或多个相同的页。基于此,该方案使用硬件虚拟化机制提供的vmfunc指令来在不同的域之间高效地切换。软件通常运行在普通域。每当软件中处理敏感数据的代码需要访问敏感数据时,该方案首先临时进入存储敏感数据的域,进行访问操作,最后退出该域。进一步,该方案确保其他代码片段不得进入存储敏感数据的域,因此这些代码不能访问或篡改敏感数据。此外,为了验证指向安全区中敏感数据的指针的完整性,该方案采用了基于散列的消息验证码技术,例如Linux内核中已经实现的SipHash,来对敏感数据指针进行签名以及在敏感数据指针每一次被使用时进行验证。然而,基于散列的消息验证码依赖于密码学安全算法,若用纯软件实现,则会引入显著的额外性能开销;若用硬件逻辑加速,则会引入显著的硬件资源(如面积等)开销。
三、基于虚拟内存隔离的方案
与基于物理内存隔离的方案类似,但略有不同,该类方案在虚拟地址的层面上将敏感数据与普通虚拟内存区域隔离,包括Nested Kernel、SKEE、IMIX、Intel MPK、IntelCET的影子栈及Apple PPL等。该类方案中,一部分采用硬件辅助的设计,保护存储有敏感数据的虚拟内存页,并仅允许特定的代码片段进行访问。例如,IMIX方案为每个虚拟页额外设置一个自定义的IMIX位来标识相应的虚拟页是否存储了敏感数据。同时,IMIX引入了若干新的特殊指令,专用于高效地访问这些具有IMIX位标识的虚拟页中的敏感数据。然而,IMIX方案并未说明如何保护普通内存页中指向安全区中敏感数据的指针的完整性。
另一部分方案主要由软件实现。例如,Nested Kernel、SKEE及Apple PPL均利用虚拟内存保护来保护敏感数据,并在同一特权级为软件提供一个安全执行环境(即软件中的某些代码片段)来访问这些敏感数据。例如,Apple PPL及Intel MPK采用硬件提供的保护键(protection key)特性,仅允许安全执行环境中的代码访问敏感数据,并限制软件的其它部分代码仅能通过蹦床来调用安全执行环境中的代码。普遍而言,这类方案使用两个地址空间,一个能够访问敏感数据,另一个则不能。软件通常在后一个地址空间中运行。当软件需要访问敏感数据时,软件首先临时切换到前一个地址空间,然后进行安全检查与实际访问,最后切换回原始的地址空间。然而,前述切换操作需要调整控制寄存器并刷新处理器的流水线,且前述安全检查需要由软件仔细地充分地完成。因此,这类方案会引入不可忽视的额外性能开销。
进一步,这类方案依赖于虚拟地址空间,即依赖于虚拟内存保护,因此,这类方案在保护页表等底层的敏感数据时存在缺陷。
总而言之,上述现有的若干类敏感数据保护方案通常安全保证不足、依赖于重量级的硬件特性或引入较高的额外性能开销。
针对现有防护技术中存在的缺陷,本申请将提供一种基于物理内存保护(Physical Memory Protection,PMP)机制的方案。在RISC-V等现代指令集架构中,特权态软件,如操作系统内核或不依赖于操作系统的裸机应用程序(bare-metal application),不再被允许任意地访问任意物理内存。例如,RISC-V指令集的M态(机器态)拥有比特权态更多的权限,其能够将指定的物理内存区域的指定权限移除,从而阻止特权态软件甚至M态软件自身对于这些物理内存区域的对应访问。这一灵活的允许M态软件配置物理内存区域的访问权限的机制即为物理内存保护。
具体而言,物理内存保护机制允许M态软件配置一系列控制与状态寄存器(Control and Status Register,CSR)来将整个物理地址空间划分为若干物理地址连续的区域,并为每个区域分别设置访问权限。控制与状态寄存器中的物理内存保护范围寄存器(简称为范围寄存器)存储每个区域的物理地址范围,物理内存保护权限寄存器(简称为权限寄存器)存储每个区域的访问权限。其中,访问权限包括读权限(R)、写权限(W)以及执行权限(X)等。
本申请引入安全区机制来保护敏感数据免受破坏。如图2所示,安全区是一段连续的内存区域,用阴影标出。总体而言,本申请将敏感数据存储在一个由硬件保护的安全区中,并仅允许由软件开发者指定的敏感数据操作代码访问这一安全区,并且,敏感数据操作代码不允许访问安全区以外的普通内存区域(简称为普通区域)。如此,本方案能够确保普通代码(不是敏感数据操作代码的代码)不能访问(如篡改或破坏)安全区中的数据,而敏感数据操作代码则不能访问普通内存区域中的数据;从而,攻击者在普通内存区域中注入的恶意数据不能被敏感数据操作代码访问。进一步,本方案将一个特殊的令牌与每一个指向安全区中敏感数据的指针相关联,以此阻止攻击者篡改敏感数据指针并复用已有的敏感数据进行攻击。下面进行具体说明。
图1为本申请实施例提供的一种硬件辅助的软件安全防护方法的步骤示意图,可以包括以下步骤:
S110:确定指定的物理内存区域为安全区并确定访问安全区的敏感数据操作代码。
在本申请的一种实施例中,在处理器核中将指定的每个物理内存区域的权限寄存器中增加一个新的权限位;新的权限位指定对应的物理内存区域是否为安全区;根据权限位区分安全区和普通区域后进行访问。
部分现有的通用隔离机制或安全区方案一般依赖于虚拟地址空间,即依赖于虚拟内存保护,因此,这类方案在保护页表等底层的敏感数据时存在缺陷。为此,本方案采用基于物理内存的保护方案。虽然虚拟化技术允许用户通过二级地址转换机制(即嵌套页表,Nested Page Table,NPT)为客户机的每一个物理内存页配置访问权限,并且该方法被许多现有技术方案所采用,但是无论用硬件资源消耗来衡量还是用额外性能开销来衡量,基于虚拟化技术的方案通常是重量级的。具体而言,为了利用虚拟化技术,包括二级地址转换机制在内的部分复杂硬件组件需要被激活。这将增大处理器核的面积及功耗等开销,对于资源受限的系统,如嵌入式系统,是不适用的。此外,主要由于二级地址转换机制所带来的额外开销,系统的整体性能也将下降约5%。
为了克服现有技术方案的上述不足,本方案基于物理内存保护机制并对其进行扩展,将指定的物理内存区域设置为安全区。具体而言,本方案修改处理器核来为每个物理内存区域的权限寄存器增加一个新的权限位。其中,该新权限位指示对应的物理内存区域是否为安全区。如此,处理器核可以依照现有的物理内存保护逻辑来高效地进行安全区权限检查,并可以阻止任何内存访问指令(包括普通内存访问指令及本申请实施例引入的新内存访问指令)所产生的任何非法访问请求。
S120:将敏感数据存储在安全区中,其中,安全区只允许敏感数据操作代码访问,敏感数据操作代码只允许访问安全区。
具体地,本申请将敏感数据存储在一个由硬件保护的使用专用指令访问的安全区中,从而使其不被攻击者篡改或破坏。在将敏感数据存入安全区后,本方案需要允许合法的代码片段,即敏感数据操作代码,访问该安全区。与此同时,本方案禁止其他普通代码访问该安全区。
在本申请的一种实施例中,确定配置的新硬件指令,新硬件指令为一对专用于访问安全区的内存读和内存写指令;将原始敏感数据操作代码中的普通内存读和内存写指令替换为新硬件指令,形成新的敏感数据操作代码,以使新的敏感数据操作代码能够访问安全区。
许多现有技术方案选择利用控制寄存器或通过其他接口来切换隔离区(例如本方案中的安全区)的访问权限,并在有需要时临时性地为隔离区的使用者(例如本方案中的敏感数据操作代码)赋予访问权限。然而,这类方案,无论是由纯软件实现或是由硬件提供的控制寄存器辅助,均需要额外执行若干条指令,因此会额外引入许多时钟周期,其也为条件竞争漏洞的利用打开了一个时间窗口。此外,系统的状态,如处理器核中控制寄存器的配置,也需要在进程上下文切换或中断处理时被精心维护。部分方案还会为其他线程的攻击者遗留一个小的时间窗口来破坏隔离区。即使在同一个线程,敏感数据操作代码中的与敏感数据不相关的内存读或内存写指令也能够在权限开启时访问安全区,这破坏了最小权限原则。
为了克服现有技术方案的上述不足,本方案采用一系列新引入的硬件指令,专用于访问安全区。在精简指令集(Reduced Instruction Set Computer,RISC)架构下,这些新的硬件指令仅为一对特殊的内存读及内存写指令。本方案还需要扩展处理器核来识别这些新硬件指令,使得安全区仅能由这些新硬件指令访问(如图2中
Figure BDA0003798971150000121
所示),并在普通内存访问指令访问安全区时产生异常(如图2中
Figure BDA0003798971150000122
所示)。
与此同时,软件开发者需要对指定的敏感数据操作代码进行修改,使用本方案引入的新硬件指令来访问敏感数据,从而使得访问能够被处理器核允许。值得注意的是,软件开发者仅需要将实际访问敏感数据的内存读或内存写指令替换为新硬件指令,而并不需要增加其他额外指令。如此,本方案能够在高效地访问安全区的同时消除潜在的权限切换的时间窗口。
基于此,处理器核的硬件就可以有效且高效地实施安全区访问控制机制了。
S130:通过访问安全区的软件创建与敏感数据对应的敏感数据指针,根据敏感数据指针确定对应敏感数据指针的令牌,根据令牌判断是否允许敏感数据操作代码访问敏感数据。
在本申请的一种实施例中,通过访问安全区的软件创建与敏感数据对应的敏感数据指针,将敏感数据指针存储在普通区域中;根据敏感数据指针签发令牌,将令牌存储到安全区中;根据令牌生成令牌指针,并将令牌指针也存储到普通区域中。
由于敏感数据需要被软件访问,因此普通区域中存在一些指向安全区中敏感数据的指针,这些指针面临被破坏的风险。攻击者仍然可以篡改敏感数据指针,使其指向普通数据,甚至是在错误的上下文中复用已有的敏感数据。如果攻击者使其指向普通数据,通过设置安全区和新硬件指令的措施可以阻止其被敏感数据操作代码使用;但是,如果攻击者使其指向其他的敏感数据,则设置安全区和新硬件指令的措施无法进行保护。事实上,指针签名,如SipHash或ARM指针验证(ARM Pointer Authentication,ARM PA)技术可以用于缓解此类攻击。然而,纯软件的方案的性能并非最佳,而硬件机制可能由于硬件资源预算等原因而缺失。与该类现有技术方案不同,本方案在不进一步修改硬件的情况下,借助本方案的安全区及新硬件指令,提供一种新型的基于令牌的机制来验证敏感数据指针的完整性,即使这些指针存储于安全区以外的普通区域。
在本申请的一种实施例中,在安全区中开辟令牌的内存空间,令牌的内存空间包括敏感数据指针的内存空间和用户指针的内存空间;将敏感数据指针存储至敏感数据指针的内存空间中;根据令牌指针生成用户指针,并将用户指针存储到用户指针的内存空间中;其中,用户指针为指向令牌指针的指针。
具体地,如图3所示,在签发敏感数据指针对应的令牌时,首先在安全区内开辟令牌的内存空间,令牌的内存空间包括用户指针的内存空间和敏感数据指针的内存空间,敏感数据指针为对应敏感数据的内存地址,用户指针的内存空间内此时为空数据。当根据令牌的内存地址生成令牌指针后,将令牌指针存储到普通区域中开辟的令牌指针的内存空间中,然后根据令牌指针的内存地址生成用户指针,并将用户指针存储进用户指针的内存空间中,以使安全区中的用户指针指向普通区域的令牌指针,即,用户指针为令牌指针的指针,如此令牌签发完成。
本方案的令牌机制在安全区(用阴影标出)中存储若干“令牌”。每个令牌由一个敏感数据指针和一个用户指针组成,表示被保护的敏感数据指针是哪一个,以及谁是该指针的唯一使用者。相应地,软件需要进行修改,在存储每一个敏感数据指针时,同时在普通区域中存储一个指向该敏感数据指针的令牌的令牌指针。如此,敏感数据操作代码便可在使用普通区域中的敏感数据指针前以令牌为凭据进行验证。
在本申请的一种实施例中,在确定对应敏感数据指针的令牌后,通过访问安全区的软件对令牌进行维护和验证。
具体地,访问安全区的软件包括普通代码、采用新硬件指令的敏感数据操作代码、令牌检查器等。软件还需要进行修改来维护和验证令牌。
在本申请的一种实施例中,访问安全区的软件在创建敏感数据指针的同时在安全区中签发一个对应的令牌;在复制敏感数据指针的同时在安全区中复制对应的令牌;在销毁敏感数据指针的同时在安全区中销毁并清除对应的令牌。
具体地,修改后的软件需要在创建敏感数据指针的同时在安全区中签发一个对应的令牌,在复制敏感数据指针的同时在安全区中复制对应的令牌,并在销毁敏感数据指针的同时在安全区中销毁并清除对应的令牌。
在本申请的一种实施例中,令牌中包括用户指针;判断令牌中的用户指针是否指回普通区域中与令牌对应的令牌指针;若是,判断令牌中的敏感数据指针是否与待验证的敏感数据指针相一致,若是,则判断令牌有效。
具体地,修改后的软件还需要在每次使用敏感数据指针前检查与该敏感数据指针关联的令牌来验证敏感数据指针的完整性。具体而言,若安全区中对应令牌(被普通区域中的令牌指针所指向)的用户指针确实指回了普通区域中的令牌指针,且令牌中的敏感数据指针与待验证的敏感数据指针相一致,则该令牌是有效的。
在此检查的约束下,由于攻击者不能篡改安全区中存储的令牌,普通区域中的合法的敏感数据指针仅与存储该指针的地址相绑定。因此,给定的敏感数据指针不能被篡改为其他敏感数据指针,也不能在其他敏感数据指针处被恶意地复用。
总结而言,本申请的方案不仅适用于保护页表等操作系统内核的敏感数据,且同样适用于保护无操作系统环境下的裸机应用程序的敏感数据。
图4为基于本申请实施例提供的软件访问内存的总体设计流程示意图。下面进行详细阐述。
本申请的原型基于RISC-V BOOM处理器核、底层语言虚拟机(Low Level VirtualMachine,LLVM)编译器套件以及Linux操作系统内核来实现。其中,本申请实施例所保护的敏感数据可以为操作系统内核中的页表。简而言之,本申请实施例所提供的方案对RISC-VBOOM处理器核进行轻量级地扩展来标识安全区,增加用于访问安全区的新硬件指令,并在内存管理单元访问页表时进行安全区检查。本申请实施例所提供的方案同样对LLVM编译器套件进行少量修改来识别新硬件指令的助记符以及生成相应的机器码。最后,本申请实施例所提供的方案对Linux操作系统内核进行修改来将其页表存储至安全区中,使用新硬件指令来操作这些页表,维护页表指针的令牌,以及在使用页表指针时检查令牌。实践表明,本申请实施例所提供的方案非常易于部署。
首先,本方案对处理器核进行修改来支持本方案在指令集架构层面的扩展,包括安全区及新硬件指令。为简洁起见,本方案选择扩展RISC-V指令集以及RISC-V BOOM处理器核。
为了标记安全区,本方案使用了每个物理内存区域的权限寄存器(在本实施例中为pmpcfg寄存器)中的一个保留位,作为权限位。此处,本方案将该权限位称为S位,S意为安全(secure)。具体而言,每个pmpcfg寄存器的宽度为8位,每个pmpcfg寄存器进一步组合成为pmpcfgN寄存器供软件进行配置,其中,N为一个自然数且受到可用物理内存区域的数量的限制。每个pmpcfg寄存器中有两个保留位,本方案使用其中的一个来标识安全区,如图5中阴影部分所示。为了优化性能,RISC-V BOOM处理器核在TLB(Translation LookasideBuffer,俗称快表)中同样缓存了物理内存保护机制的权限位,因此本方案同样将S位添加至TLB的每一个条目中。
在本申请的一种实施例中,根据新硬件指令确定权限控制逻辑。
具体地,权限控制逻辑指硬件的逻辑电路。为了区分普通内存访问和安全区访问,本申请实施例所提供的方案增加了一种新的内部内存操作,并轻量级地扩展物理内存保护的权限控制逻辑来确保:(1)该种新内部内存操作仅能访问安全区;且(2)仅有该种新内部内存操作可以访问安全区,但普通的内部内存操作不能访问安全区。
在本申请的一种实施例中,当敏感数据操作代码违反权限控制逻辑进行访问时,权限控制逻辑触发访问错误异常以阻断敏感数据操作代码的非法访问请求;当敏感数据操作代码以外的普通代码违反权限控制逻辑进行访问时,权限控制逻辑触发访问错误异常以阻断普通代码的非法访问请求。
具体地,不论是敏感数据操作代码还是普通代码违反了这一访问规则,权限控制逻辑都会触发一个“访问错误”异常来阻断相应的非法访问请求。基于此,本申请实施例所提供的方案即可通过该种新内部内存操作来保护存储在安全区中的敏感数据(即页表)的完整性了。
本方案在指令集中新增两条安全区访问指令,即新硬件指令ld.pt及sd.pt。修改后的处理器核的译码逻辑将会为该类新硬件指令产生上述新内部内存操作来确保该类新硬件指令能且仅能访问安全区。该类新硬件指令的功能及指令编码与现有的内存读及内存写指令,即ld及sd,类似,但该类新硬件指令拥有不同的操作码,并且是从安全区中读或向安全区中写入数据,而不是从普通区域中读或向普通区域中写。具体而言,本方案从RISC-V指令集的自定义指令槽中选取操作码,为0001011及0101011。值得注意的是,现有的普通内存访问指令的操作码为0000011及0100011,本方案操作码与其分别仅有一位区别,因此本方案的指令编码将为指令译码逻辑提供便利。
在本申请的一种实施例中,本方案还需要修改页表访问器(Page Table Walker,PTW)来发出新内部内存操作来限制其仅访问安全区。页表访问器一般由处理器核硬件实现,也可以由软件实现。然而,在操作系统内核将页表设置在安全区之前,页表访问器仍然需要访问普通区域。因此,本方案首先为页表基址寄存器同样增加一个新的权限位(如图6中阴影所示,为模式字段的一个保留位),也称作S位,来指示页表访问器访问安全区或是普通区域。接着,本方案对页表访问器进行修改来实际执行安全区检查并阻断页表注入攻击。当页表基址寄存器中的S位被置1时,在页表访问器每一次需要读取页表时,其便会发出新内部内存操作来限制其仅访问安全区,并拒绝注入的、伪造的、虚假的页表。
此外,本方案修改编译器套件来支持本方案的新硬件指令。依照LLVM的框架,本方案将新硬件指令的助记符和指令编码添加至RISC-V指令集的指令集描述文件(RISCVInstrFormats.td及RISCVInstrInfo.td)中来使得LLVM生成正确的机器码。
特别地,在RISC-V指令集中,只有M态的代码可以访问pmpcfg寄存器并设置安全区。因此,运行在特权态的操作系统内核需要通过特权态二进制接口(Supervisor BinaryInterface,SBI)调用来访问该类寄存器。为了允许这些操作系统内核管理由M态保护的安全区,本方案修改本实施例中的SBI的具体实现,并为内核提供初始化、获取以及设置安全区边界的新接口。
在本申请的一种实施例中,从安全区中分配物理内存页,将所有敏感数据存储至物理内存页。
具体地,为了保护操作系统内核中的页表,本方案首先从安全区中分配物理内存页,将所有页表存储至这些物理内存页,然后开启页表访问器的安全区检查。为了进一步保护页表指针,本方案从维护有安全区中物理内存页的slab分配器中分配令牌,对令牌进行维护,并在内核每次更新页表基址寄存器时检查令牌。
Linux内核采用伙伴系统分配器来管理所有的物理内存页。该分配器将所有物理内存页根据其地址划分为若干个区域(zone),并根据由不同GFP(即get free pages)标志描述的不同需求来服务分配请求。为了从安全区中分配物理内存页,本方案将一个位于高物理地址的PTStore区添加到上述分配器中,并引入GFP_PTSTORE标志来请求仅从该区中分配的物理内存页。
值得注意的是,物理内存保护机制要求每个物理内存区域拥有连续的物理地址,所以管理其比管理基于虚拟内存的安全区更具有挑战性。为了解决这一挑战,本方案实现了一个按需动态调整安全区的机制,例如,当内核需要从安全区中分配更多的物理内存页时进行调整。具体而言,PTStore区在内核启动时初始化为64MiB。为了调整(扩大)安全区,本方案首先从与安全区边界相邻的普通区分配若干个连续的物理内存页。该操作可以借助内核中的alloc_contig_range()函数完成。该函数允许用户分配一段指定范围的物理内存页。接着,本方案将这些分配得到的连续物理内存页释放至PTStore区。如此,安全区便获得了更多的空闲物理内存页,并且其物理地址仍然连续。随后,本方案调用SBI来设置安全区的新边界。最终,本方案重新尝试从安全区中分配物理内存页,该次分配请求应当能够成功。此外,当本方案需要从普通区域中分配更多的物理内存页时,本方案将缩小安全区来为普通区域释放内存,其过程类似。
在内核启动时,伙伴系统还未初始化,此时,内核使用memblock分配器而不是伙伴系统分配器。memblock分配器简单地连续地分配物理内存页,并可以配置为采用自底向上或自顶向下的分配策略。因此,为了在内核启动时将所有页表存储至安全区,本方案在每次分配页表前,设置memblock分配器采用自顶向下的策略(即分配的物理内存页从最高的物理地址处开始),并为其他分配操作切换回自底向上的策略。一旦伙伴系统完成了初始化,本方案调用SBI来激活安全区并设置页表基址寄存器的S位来开启页表访问器的安全区检查。同时,本方案为此后的所有页表分配操作(如pgd_alloc()函数)增加GFP_PTSTORE标志,确保之后的页表存储于安全区中。
在页表存储至安全区后,普通的访存指令将无法对其进行访问,并且所有合法的页表操作代码(即敏感数据操作代码)应当被修改为使用本方案的新硬件指令,即ld.pt及sd.pt指令,来读或写页表。因此,本方案首先找出内核中所有的页表操作代码,包括形如set_pXd()的宏,并用ld.pt及sd.pt指令来替换它们。
内核使用slab分配器来为内核中其他组件分配(通常为较小的)内核对象,如task_struct或mm_struct等。slab分配器可被配置为采用SLOB、SLAB或SLUB算法。此外,不同的slab分配器可以拥有不同的GFP标志来从不同类型的底层物理内存页中进行分配,并且可以拥有不同的构造函数来初始化对象。
为了分配令牌,本方案在内核中增加了一个新的PTStore slab分配器。PTStoreslab分配器在其GFP标志中设置了GFP_PTSTORE标志来从安全区中分配底层物理内存页,以便令牌同样被存储在安全区中。接着,该分配器的构造函数将每个新令牌初始化为零。
本方案需要为每个进程在其整个生命周期中维护令牌来保护其页表指针。当一个进程被创建时,本方案签发一个与该进程直接绑定的令牌,并将该令牌与该进程的页表指针关联。当一个进程的地址空间被更新时,如在copy_mm()函数中被更新时,本方案首先检查该进程的令牌是否为有效的,然后相应地更新令牌中的页表指针。当活跃的地址空间被切换至另一个进程的地址空间时,如switch_mm()函数在进行切换时,本方案会首先验证目标进程的令牌。类似地,当一个进程退出时,本方案首先验证该进程的令牌,然后销毁并清除该令牌来阻止复用攻击。
以上为本申请实施例提供的一种硬件辅助的软件安全防护方法,基于同样的发明思路,本申请实施例还提供了相应的一种硬件辅助的软件安全防护设备,如图7所示。
本实施例提供了一种硬件辅助的软件安全防护设备,包括:
至少一个处理器701;以及,
与至少一个处理器701通过总线703通信连接的存储器702;其中,
存储器702存储有可被至少一个处理器执行的指令,指令被至少一个处理器701执行,以使至少一个处理器701能够执行:
确定指定的物理内存区域为安全区并确定访问安全区的敏感数据操作代码;
将敏感数据存储在安全区中,其中,安全区只允许敏感数据操作代码访问,敏感数据操作代码只允许访问安全区;
通过访问安全区的软件创建与敏感数据对应的敏感数据指针,根据敏感数据指针确定对应敏感数据指针的令牌,根据令牌判断是否允许敏感数据操作代码访问敏感数据。
基于同样的思路,本申请的一些实施例还提供了上述方法对应的介质。
本申请的一些实施例提供的一种存储介质,存储有计算机可执行指令,计算机可执行指令由处理器执行,以实现下述步骤:
确定指定的物理内存区域为安全区并确定访问安全区的敏感数据操作代码;
将敏感数据存储在安全区中,其中,安全区只允许敏感数据操作代码访问,敏感数据操作代码只允许访问安全区;
通过访问安全区的软件创建与敏感数据对应的敏感数据指针,根据敏感数据指针确定对应敏感数据指针的令牌,根据令牌判断是否允许敏感数据操作代码访问敏感数据。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述地比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
还需要说明的是,术语“包括”“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程方法商品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程方法商品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程方法商品或者方法中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。虽然,上文中已经用一般性说明及具体实施方案对本申请作了详尽的描述,但在本申请基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本申请精神的基础上所做的这些修改或改进,均属于本申请要求保护的范围。

Claims (13)

1.一种硬件辅助的软件安全防护方法,其特征在于,包括:
确定指定的物理内存区域为安全区并确定访问所述安全区的敏感数据操作代码;
将敏感数据存储在所述安全区中,其中,所述安全区只允许所述敏感数据操作代码访问,所述敏感数据操作代码只允许访问所述安全区;
通过访问所述安全区的软件创建与所述敏感数据对应的敏感数据指针,根据所述敏感数据指针确定对应所述敏感数据指针的令牌,根据所述令牌判断是否允许所述敏感数据操作代码访问所述敏感数据。
2.根据权利要求1所述的方法,其特征在于,确定指定的物理内存区域为安全区,具体包括:
在处理器核中将指定的每个物理内存区域的权限寄存器中增加一个新的权限位;所述新的权限位指定对应的物理内存区域是否为安全区;
根据所述权限位区分所述安全区和普通区域后进行访问。
3.根据权利要求1所述的方法,其特征在于,确定访问所述安全区的敏感数据操作代码,具体包括:
确定配置的新硬件指令,所述新硬件指令为一对专用于访问所述安全区的内存读和内存写指令;
将原始敏感数据操作代码中的普通内存读和内存写指令替换为所述新硬件指令,形成新的敏感数据操作代码,以使所述新的敏感数据操作代码能够访问所述安全区。
4.根据权利要求1所述的方法,其特征在于,通过访问所述安全区的软件创建与所述敏感数据对应的敏感数据指针,根据所述敏感数据指针确定对应所述敏感数据指针的令牌,具体包括:
通过访问所述安全区的软件创建与所述敏感数据对应的敏感数据指针,将所述敏感数据指针存储在普通区域中;
根据所述敏感数据指针签发令牌,将所述令牌存储到所述安全区中;
根据所述令牌生成令牌指针,并将所述令牌指针也存储到所述普通区域中。
5.根据权利要求4所述的方法,其特征在于,所述根据所述敏感数据指针签发令牌,具体包括:
在所述安全区中开辟令牌的内存空间,所述令牌的内存空间包括所述敏感数据指针的内存空间和用户指针的内存空间;
将所述敏感数据指针存储至所述敏感数据指针的内存空间中;
根据令牌指针生成用户指针,并将所述用户指针存储到所述用户指针的内存空间中;
其中,所述用户指针为指向所述令牌指针的指针。
6.根据权利要求1所述的方法,其特征在于,在确定对应所述敏感数据指针的令牌后,所述方法还包括:
通过访问所述安全区的软件对所述令牌进行维护和验证。
7.根据权利要求6所述的方法,其特征在于,所述通过访问所述安全区的软件对所述令牌进行维护,具体包括:
访问所述安全区的软件在创建所述敏感数据指针的同时在所述安全区中签发一个对应的令牌;
在复制所述敏感数据指针的同时在安全区中复制对应的令牌;
在销毁所述敏感数据指针的同时在安全区中销毁并清除对应的令牌。
8.根据权利要求6所述的方法,其特征在于,所述通过访问所述安全区的软件对所述令牌进行验证,具体包括:
所述令牌中包括用户指针;
判断所述令牌中的用户指针是否指回普通区域中与所述令牌对应的令牌指针;
若是,判断所述令牌中的敏感数据指针是否与待验证的敏感数据指针相一致,若是,则判断所述令牌有效。
9.根据权利要求3所述的方法,其特征在于,所述方法还包括:
根据所述新硬件指令确定权限控制逻辑;
当所述敏感数据操作代码违反所述权限控制逻辑进行访问时,所述权限控制逻辑触发访问错误异常以阻断所述敏感数据操作代码的非法访问请求。
10.根据权利要求3所述的方法,其特征在于,所述方法还包括:
根据所述新硬件指令确定权限控制逻辑;
当所述敏感数据操作代码以外的普通代码违反所述权限控制逻辑进行访问时,所述权限控制逻辑触发访问错误异常以阻断所述普通代码的非法访问请求。
11.根据权利要求1所述的方法,其特征在于,所述将敏感数据存储在所述安全区中,具体包括:
从所述安全区中分配物理内存页,将所有所述敏感数据存储至所述物理内存页。
12.一种硬件辅助的软件安全防护设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通过总线通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行:
确定指定的物理内存区域为安全区并确定访问所述安全区的敏感数据操作代码;
将敏感数据存储在所述安全区中,其中,所述安全区只允许所述敏感数据操作代码访问,所述敏感数据操作代码只允许访问所述安全区;
通过访问所述安全区的软件创建与所述敏感数据对应的敏感数据指针,根据所述敏感数据指针确定对应所述敏感数据指针的令牌,根据所述令牌判断是否允许所述敏感数据操作代码访问所述敏感数据。
13.一种非易失性存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令由处理器执行,以实现下述步骤:
确定指定的物理内存区域为安全区并确定访问所述安全区的敏感数据操作代码;
将敏感数据存储在所述安全区中,其中,所述安全区只允许所述敏感数据操作代码访问,所述敏感数据操作代码只允许访问所述安全区;
通过访问所述安全区的软件创建与所述敏感数据对应的敏感数据指针,根据所述敏感数据指针确定对应所述敏感数据指针的令牌,根据所述令牌判断是否允许所述敏感数据操作代码访问所述敏感数据。
CN202210977578.7A 2022-08-15 2022-08-15 一种硬件辅助的软件安全防护方法、设备及介质 Active CN115391235B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210977578.7A CN115391235B (zh) 2022-08-15 2022-08-15 一种硬件辅助的软件安全防护方法、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210977578.7A CN115391235B (zh) 2022-08-15 2022-08-15 一种硬件辅助的软件安全防护方法、设备及介质

Publications (2)

Publication Number Publication Date
CN115391235A true CN115391235A (zh) 2022-11-25
CN115391235B CN115391235B (zh) 2023-06-06

Family

ID=84120564

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210977578.7A Active CN115391235B (zh) 2022-08-15 2022-08-15 一种硬件辅助的软件安全防护方法、设备及介质

Country Status (1)

Country Link
CN (1) CN115391235B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4390708A1 (en) * 2022-12-22 2024-06-26 Google LLC Selective memory duplication control

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1700136A (zh) * 2004-05-20 2005-11-23 英特尔公司 处理器扩展和软件验证
CN102187346A (zh) * 2008-10-13 2011-09-14 惠普开发有限公司 用于使敏感信息安全的系统和过程
CN110348204A (zh) * 2019-06-17 2019-10-18 海光信息技术有限公司 一种代码保护系统、认证方法、装置、芯片及电子设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1700136A (zh) * 2004-05-20 2005-11-23 英特尔公司 处理器扩展和软件验证
CN102187346A (zh) * 2008-10-13 2011-09-14 惠普开发有限公司 用于使敏感信息安全的系统和过程
CN110348204A (zh) * 2019-06-17 2019-10-18 海光信息技术有限公司 一种代码保护系统、认证方法、装置、芯片及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
严飞: "vTSE:一种基于SGX的vTPM安全增强方案" *
杨松涛等: "面向缓解机制评估的自动化信息泄露方法" *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4390708A1 (en) * 2022-12-22 2024-06-26 Google LLC Selective memory duplication control

Also Published As

Publication number Publication date
CN115391235B (zh) 2023-06-06

Similar Documents

Publication Publication Date Title
US11550962B2 (en) Secure processor and a program for a secure processor
Proskurin et al. xmp: Selective memory protection for kernel and user space
US10360411B2 (en) Secure processing unit systems and methods
Mashtizadeh et al. CCFI: Cryptographically enforced control flow integrity
US10114958B2 (en) Protected regions
Jin et al. Architectural support for secure virtualization under a vulnerable hypervisor
JP7304359B2 (ja) 有界ポインタを記憶するための装置及び方法
KR101504857B1 (ko) 보안 시스템에서 랜덤하게 할당된 메모리 범위로 jit를 지원하는 시스템 및 방법
CN107003936B (zh) 具有非可读页的存储器保护
Orenbach et al. Autarky: Closing controlled channels with self-paging enclaves
Wang et al. Design and implementation of SecPod, a framework for virtualization-based security systems
EP3867763B1 (en) Trusted intermediary realm
Gens et al. Lazarus: Practical side-channel resilient kernel-space randomization
van de Ven New security enhancements in red hat enterprise linux v. 3, update 3
Enomoto et al. Efficient Protection Mechanism for CPU Cache Flush Instruction Based Attacks
CN115391235B (zh) 一种硬件辅助的软件安全防护方法、设备及介质
Zhou et al. Smile: Secure memory introspection for live enclave
Kemerlis Protecting commodity operating systems through strong kernel isolation
Park et al. Libmpk: software abstraction for Intel memory protection keys
Yadalam et al. SGXL: Security and Performance for Enclaves Using Large Pages
Green et al. SafeBet: Secure, Simple, and Fast Speculative Execution
Bai et al. SecPaging: Secure Enclave Paging with Hardware-Enforced Protection against Controlled-Channel Attacks
Kuzuno et al. Protection Mechanism of Kernel Data Using Memory Protection Key
Nam et al. MemPatrol: Reliable Sideline Integrity Monitoring for High-Performance Systems
Jin Resilient and Robust High Performance Computing Platforms for Scientific Computing Integrity

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