CN107004099A - 存储器中攻击预防 - Google Patents
存储器中攻击预防 Download PDFInfo
- Publication number
- CN107004099A CN107004099A CN201480083435.5A CN201480083435A CN107004099A CN 107004099 A CN107004099 A CN 107004099A CN 201480083435 A CN201480083435 A CN 201480083435A CN 107004099 A CN107004099 A CN 107004099A
- Authority
- CN
- China
- Prior art keywords
- memory pages
- encrypted
- information
- page
- physical memory
- 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
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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
-
- 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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Abstract
示例涉及存储器中攻击预防。本文中公开的示例使得能够响应于第一引导命令而获得基于随机化过程所生成的第一加密密钥。示例还使得能够确定页面表的第一信息是否指示存储器页面意图是安全的,所述页面表存储在存储器页面的虚拟地址和存储器页面的物理地址之间的映射。响应于确定了第一信息指示了存储器页面意图是安全的,示例还使得能够确定页面表的第二信息是否指示存储器页面被加密。响应于确定了第二信息指示了存储器页面没有被加密,示例还使得能够使用第一加密密钥来对物理存储器中的存储器页面进行加密。
Description
背景技术
漏洞攻击包括缓冲器超限运行、基于堆栈的攻击以及恶意软件注入,所述漏洞攻击持续对计算系统构成威胁。这样的攻击是许多软件漏洞的基础并且可能被恶意利用。指令集随机化(ISR)寻求通过使每个过程的指令集随机化并且因而使攻击者对指令集的认知无效来保护计算系统。通过使用ISR,即使攻击者成功将恶意代码注入到应用中,恶意代码也将不能执行,因为它将不被理解(因为在ISR下的应用现在说“不同的语言”)。
附图说明
以下详细描述参考附图,其中:
图1是描绘了其中各种示例可以被实现为存储器中攻击预防系统的示例性环境的框图。
图2是描绘了示例性的存储器中攻击预防系统的框图。
图3是描绘了包括通过处理器可执行以用于存储器中攻击预防的指令的示例性机器可读存储介质的框图。
图4是描绘了包括通过处理器可执行以用于存储器中攻击预防的指令的示例性机器可读存储介质的框图。
图5是描绘了用于存储器中攻击预防的示例性方法的流程图。
图6是描绘了用于存储器中攻击预防的示例性方法的流程图。
图7是描绘了可能作为基于存储器页面是否意图是安全的和/或被加密而做出的确定的结果而发生的三种场景的表。
具体实施方式
以下详细描述参考随附的附图。在可能的无论什么情况下,相同的参考标号在附图和以下描述中被使用以指代相同或类似的部分。然而,要明确理解的是,附图仅仅用于图示和描述的目的。虽然在本文档中描述了若干示例,但是修改、适配和其它实现方式是可能的。因此,以下详细描述不限制所公开的示例。代替地,所公开的示例的恰当范围可以由所附权利要求限定。
漏洞攻击包括缓冲器超限运行、基于堆栈的攻击以及恶意软件注入,所述漏洞攻击持续对计算系统构成威胁。这样的攻击是许多软件漏洞的基础并且可能被恶意利用。指令集随机化(ISR)寻求通过使每个过程的指令集随机化并且因而使攻击者对指令集的认知无效来保护计算系统。通过使用ISR,即使攻击者成功将恶意代码注入到应用中,恶意代码也将不能执行,因为它将不被理解(因为在ISR下的应用现在说“不同的语言”)。
尽管指令可以通过使用ISR来被随机化,但是加密仍然是静态的。如果攻击者知道加密密钥,则攻击者可以容易地修改恶意代码来继续攻击。此外,当前的ISR解决方案未能与动态链接库(DLL)一起工作。它们与单个可执行文件或绑定到单个过程的静态链接库一起工作。DLL是在不同的可执行过程之间所使用的可执行代码的共享库。
本文中所公开的示例通过以下来提供对这些技术问题的技术方案:响应于第一引导命令而获得基于随机化过程所生成的第一加密密钥;确定页面表的第一信息是否指示存储器页面意图是安全的,所述页面表存储了在存储器页面的虚拟地址和存储器页面的物理地址之间的映射;响应于确定了第一信息指示了存储器页面意图是安全的,确定页面表的第二信息是否指示存储器页面被加密;并且响应于确定了第二信息指示了存储器页面没有被加密,使用第一加密密钥来对物理存储器中的存储器页面进行加密。
本文中使用的术语仅仅用于描述特定实施例的目的并且不意图是限制性的。如本文中所使用的,单数形式“一”、“一个”和“该”意图也包括复数形式,除非上下文清楚地另行指示。术语“多个”,如本文中所使用的,被定义为两个或多于两个。术语“另一个”,如本文中所使用的,被定义为至少第二个或更多的。术语“耦合的”,如本文中所使用的,被定义为连接的,无论是直接地没有任何居间元件还是间接地利用至少一个居间元件都是这样,除非另行指示。两个元件可以机械地、电气地耦合或通过通信信道、路径、网络或系统而通信地链接。如本文中所使用的术语“和/或”指代并且包括相关联的所列项中一个或多个的任何以及所有可能的组合。还将理解到,尽管术语第一、第二、第三等等可以在本文中被使用以描述各种元件,但是这些元件不应当被这些术语限制,因为这些术语仅仅用于区分一个元件与另一个,除非另行声明或上下文另行指示。
图1是其中各种示例可以被实现为存储器中攻击预防系统110的示例性环境100。环境100可以包括各种组件,包括中央处理单元(CPU)芯片100和主存储器170。CPU芯片100可以包括处理器130(例如至少一个CPU核)、存储器管理单元(MMU)140、加密单元150和/或芯片上存储器160。MMU 140可以负责处置由处理器所请求的存储器访问。由MMU 140所执行的其它功能可以包括虚拟地址到物理地址的转换、存储器保护、高速缓存控制等等。在一些实现方式中,MMU 140可以访问页面表145,所述页面表145存储在虚拟存储器页面到物理存储器(例如芯片上存储器160、芯片外存储器170等等)中的物理存储器页面之间的映射。加密单元150可以是执行数据的加密和/或解密的专用基于硬件的组件。加密单元150可以负责生成加密密钥和/或通过使用加密密钥来加密或解密数据。虽然各种组件被描绘为分离的组件,但是组件中的一些可以被集成到单个组件中。例如,加密单元150可以被集成在处理器130内以执行加密操作。
存储器中攻击预防系统110可以包括加载指示引擎121、页面表访问引擎122、加密确定引擎123、加密密钥生成引擎124、加密引擎125、代码执行引擎126和/或其它引擎。术语“引擎”,如本文中所使用的,指代执行所指定功能的编程和硬件的组合。存储器中攻击预防系统110可以被实现在包括处理器130、MMU 140、和/或加密单元150的硬件组件中的至少一个中。例如,每个引擎的硬件可以包括如图1中所图示的处理器130、MMU 140、和/或加密单元150中的至少一个。如关于图3-4所图示的,每个引擎的硬件例如可以包括处理器和机器可读存储介质中的一个或二者,而编程是被存储在机器可读存储介质上并且通过处理器可执行以执行所指定功能的指令或代码。
页面表145(或其一部分)可以被高速缓存在转换后备缓冲器(TLB)中,所述转换后备缓冲器(TLB)保持最近被使用过的页面表条目。页面表145是指定虚拟页面号和物理页面号之间的映射的数据结构。页面表145位于具有受限访问(例如仅仅可被操作系统访问)的存储装置中。
芯片上存储器160(例如高速缓存存储器、静态随机存取存储器(SRAM)等等)可以被与处理器130自身集成到相同的计算机芯片(例如CPU芯片100)中。高速缓存存储器可以由计算机处理器(诸如处理器130)使用,以通过存储来自频繁使用的主存储器存储单元的数据的拷贝来减少平均存储器访问时间。高速缓存存储器可以用作处理器130和芯片外存储器170(例如动态随机存取存储器(DRAM))之间的接口。高速缓存存储器可以被组织为多个高速缓存级(例如L1、L2或L3高速缓存)的层级,其中高速缓存层级中的较高级比较低级包括更小和更快的存储器。
图1中描绘的各种组件(例如组件130、140、145、150、160和/或170)可以经由通信线路(包括数据总线、地址总线、控制总线和/或其它通信线路)而耦合到至少一个其它组件。
根据各种实现方式,本文中所描述的存储器中攻击预防系统110和各种组件可以被实现在硬件中和/或硬件与配置硬件的编程的组合中。此外,在图1和本文中所描述的其它图中,可以使用与所描绘的不同数目的组件或实体。
加载指示引擎121可以在引导会话期间接收以下指示:代码集被加载到物理存储器页面的至少一部分中。所述“代码集”,如本文中所使用的,可以包括软件程序、静态库、共享库(例如动态链接库(DLL))和/或其它程序代码。所述“存储器页面”,如本文中所使用的,可以表示存储器的固定长度的块,所述块由页面表中的单个页面条目所描述。如以上所讨论的,所述“页面表”(例如页面表145)可以是对虚拟存储器页面和物理存储器页面之间的映射进行指定的数据结构。在一些实现方式中,页面表可以被高速缓存在TLB中,所述TLB保持最近已经使用过的页面表条目。
“引导会话”,如本文中所使用的,可以指代从计算机化的系统的初始化到计算机化的系统的停止运转的时间段。引导会话可以遵循引导命令,所述引导命令可以在计算机化的系统被上电或开启(例如通过按压电源按钮)时被生成。当计算机化的系统被关断并且随后重引导时,可以发起新的引导会话。
在一些实现方式中,加载指示引擎121可以被实现在处理器130中。
页面表访问引擎122可以访问页面表以标识与物理存储器页面相对应的页面条目。在一些实现方式中,可以响应于代码集被加载到物理存储器的至少一部分中的指示而访问页面表。页面表可以存储多个页面条目,其中的每一个页面条目将虚拟存储器页面映射到物理存储器页面。
页面表可以被修改以包括附加信息,附加信息包括第一信息(例如安全性信息)以及第二信息(例如加密信息)。所述附加信息可以被添加到页面表结构或可以通过使用预先存在的字段和/或未使用的位而被创建。例如,在ARM架构中,页面表包括TEX字段,所述TEX字段包括当前未使用的位010和011。在该示例中,位“010”可以被配置成指示对应的页面是安全的但是没有被加密,而位“011”可以被配置成指示对应的页面是安全的并且被加密。其它CPU架构(例如Intel、PowerPC、MIPS等等)具有类似的页面表特征。因而,基于所标识的页面条目,与页面条目相关联的第一和第二信息可以被从页面表中标识、获得和/或被检索。
在一些实现方式中,页面表访问引擎122可以被实现在MMU 140中。
加密确定引擎123可以确定第一信息是否指示物理存储器页面意图是安全的以及第二信息是否指示物理存储器页面被加密。第一信息可以由用户手动设置和/或由系统110自动设置。例如,用户可以意图整个系统和存储器是安全的。在该情况中,页面表中针对每个存储器页面的第一信息可以被设置成指示对应的页面意图是安全的。在另一示例中,用户可以选择存储器页面或多个存储器页面以在第一信息中指示所述(多个)页面应当是安全的。在另一示例中,基于预定规则,系统110可以自动配置第一信息。
基于在第一和第二信息的基础上所做出的确定,加密确定引擎123可以确定是否执行或以其它方式访问代码集。可以存在基于所述确定的结果能够发生的三个不同场景。这三个场景在图7中被图示。在图7中所图示的示例中,如果第一信息指示了物理存储器页面意图处于不安全中(例如第一信息指示“0”),则处理器130可以访问和/或执行代码集而不加密存储器页面(包括其中的代码集)。
另一方面,如果第一信息指示了物理存储器页面意图是安全的(例如第一信息指示“1”),则加密确定引擎123可以确定第二信息是否指示物理存储器页面被加密。响应于确定了它尚未被加密(例如第二信息指示“0”),则可以阻止处理器130执行或以其它方式访问代码集直到存储器页面被加密为止。因而,意图是安全的但是尚未被加密的存储器页面可以利用如本文中关于加密密钥生成引擎124和加密引擎125所讨论的基于随机化的加密密钥而被加密。
对于意图是安全的(例如第一信息指示“1”)并且已经被加密(例如第二信息指示“1”)的存储器页面,处理器130可以访问和/或执行代码集(例如,加密的代码集)。
在一些实现方式中,加密确定引擎123可以被实现在处理器130中。
加密密钥生成引擎124可以响应于引导命令而基于随机化过程(例如XOR(异或)随机化功能或任何其它随机化功能或算法)生成加密密钥。这是要确保加密密钥对于每个引导会话是唯一的。换言之,在第一引导下生成的第一加密密钥可以不同于在第二引导下生成的第二加密密钥。加密密钥中的这些变化可以由随机化过程来变为可能。例如,随机化过程可以基于以下各项中的至少一个:时间和/或日期、产品标识(ID)和/或系列号、锁相环(PLL)频率、忆阻器单元的电阻值、和/或具有高度变化(variance)的其它参数。多于一个参数的组合可以被一起使用以增强随机化种子。
在一些实现方式中,加密密钥生成引擎124可以被实现在加密单元150中。
响应于确定了页面意图是安全的(例如第一信息指示“1”)但是没有被加密(例如第二信息指示“0”),加密引擎125可以对物理存储器页面(以及其中的代码集)进行加密和/或使得物理存储器页面(以及其中的代码集)被加密。可以通过使用对引导会话(例如遵循引导命令的会话)而言唯一的、基于随机化的加密密钥来对页面进行加密。响应于通过使用加密密钥对页面进行加密,页面表中对应于页面的第二信息可以被更新以指示存储器页面现在被加密。例如,指示了“0”的第二信息可以被更新以代替地指示“1”。注意到,当计算机被重引导时,第二信息可以被设置返回到“0”,使得对应的存储器页面可以利用在重引导时生成的新加密密钥而被加密(如果相同的或另一代码集被加载到该页面中的话)。
在一些实现方式中,在将经加密的数据存储在物理存储器页面中之前,加密引擎125可以暂时将经加密的数据存储在加密单元内的SRAM中或者存储在以其它方式耦合到加密单元的SRAM中。
在一些实现方式中,加密引擎125可以被实现在加密单元150中。
代码执行引擎126可以访问和/或执行代码集。如以上所讨论的,响应于基于第一和第二信息所做出的确定,代码执行引擎126可以被允许访问和/或执行代码集。
在一些实现方式中,代码执行引擎126可以被实现在处理器130中。
图2是描绘了示例性的存储器中攻击预防系统210的框图。存储器中攻击预防系统210可以包括加密确定引擎230、页面表访问引擎240、加密引擎223和/或其它引擎。加密确定引擎230可以被实现在处理器130中。页面表访问引擎222可以被实现在MMU 140中。加密引擎223可以被实现在加密引擎150中。引擎221-223分别表示引擎123、122、125。
图3是描绘了包括通过处理器可执行以用于存储器中攻击预防的指令的示例性机器可读存储介质310的框图。
在以下讨论中,引擎121-126被描述为硬件和编程的组合。引擎121-126可以采用多种方式被实现。参考图3,编程可以是被存储在机器可读存储介质310上的处理器可执行的指令321-323,并且硬件可以包括处理器311以用于执行那些指令。因而,机器可读存储介质310可以被说成存储程序指令或代码,所述程序指令或代码当被处理器311执行时实现图1的存储器中攻击预防系统110。
在图3中,机器可读存储介质310中的可执行程序指令被描绘为加载指示指令321、页面条目标识指令322以及加密确定指令323。指令321-323表示程序指令,所述程序指令当被执行时使得处理器311分别实现引擎121、122和123。
图4是描绘了包括通过处理器可执行以用于存储器中攻击预防的指令的示例性机器可读存储介质410的框图。
在以下讨论中,引擎121-126被描述为硬件和编程的组合。引擎121-126可以采用多种方式被实现。参考图4,编程可以是被存储在机器可读存储介质410上的处理器可执行的指令421-425,并且硬件可以包括处理器411用于执行那些指令。因而,机器可读存储介质410可以被说成存储程序指令或代码,所述程序指令或代码当被处理器411执行时实现图1的存储器中攻击预防系统110。
在图4中,机器可读存储介质410中的可执行程序指令被描绘为加载指示指令421、页面条目标识指令422、加密确定指令423、加密引发指令424以及代码执行指令。指令421-425表示程序指令,所述程序指令当被执行时使得处理器411分别实现引擎121-125。
机器可读存储介质310(或机器可读存储介质410)可以是包含或存储可执行指令的任何电子、磁性、光学或其它物理存储设备。在一些实现方式中,机器可读存储介质310(或机器可读存储介质410)可以是非暂时性存储介质,其中术语“非暂时性”不包括暂时性传播信号。机器可读存储介质310(或机器可读存储介质410)可以被实现在单个设备中或跨设备分布。同样地,处理器311(或处理器411)可以表示能够执行由机器可读存储介质310(或机器可读存储介质410)所存储的指令的任何数目的处理器。处理器311(或处理器411)可以被集成在单个设备中或跨设备分布。此外,机器可读存储介质310(或机器可读存储介质410)可以完全地或部分地被与处理器311(或处理器411)集成在相同的设备中,或它可以是分离的但是可被该设备和处理器311(或处理器411)访问。
在一个示例中,所述程序指令可以是安装包的部分,所述安装包在安装时可以被处理器311(或处理器411)执行以实现存储器中攻击预防系统110。在该情况中,机器可读存储介质310(或机器可读存储介质410)可以是便携式介质,诸如软盘、CD、DVD、或闪速驱动器或存储器,存储器由服务器维护,从所述服务器可以下载和安装所述安装包。在另一示例中,程序指令可以是已经安装的一个或多个应用的部分。此处,机器可读存储介质310(或机器可读存储介质410)可以包括硬盘、光盘、磁带、固态驱动器、RAM、ROM、EEPROM等等。
处理器311可以是至少一个中央处理单元(CPU)、微处理器和/或适合用于检索和执行被存储在机器可读存储介质310中的指令的其它硬件设备。处理器311可以取出、解码并执行程序指令321-323和/或其它指令。作为可替换方案或附加于检索和执行指令,处理器311可以包括至少一个电子电路,所述电子电路包括多个电子组件,用于执行指令321-323和/或其它指令中至少一个的功能性。
处理器411可以是至少一个中央处理单元(CPU)、微处理器和/或适合用于检索和执行被存储在机器可读存储介质410中的指令的其它硬件设备。处理器411可以取出、解码并执行程序指令421-425和/或其它指令。作为可替换方案或附加于检索和执行指令,处理器411可以包括至少一个电子电路,所述电子电路包括多个电子组件,用于执行指令421-425和/或其它指令中至少一个的功能性。
图5是描绘了用于存储器中攻击预防的示例性方法500的流程图。图5中(以及在诸如图6之类的其它附图各图中)所描绘的各种处理块和/或数据流在本文中被更详细地描述。所描述的处理块可以使用以上详细描述的系统组件中的一些或全部来被实现,并且在一些实现方式中,各种处理块可以采用不同的序列被执行并且各种处理块可以被省略。附加的处理块可以连同在所描绘的流程图中示出的处理块中的一些或全部一起被执行。一些处理块可以被同时执行。因此,如所图示的(并且在以下更详细描述的)方法500意图是示例性的,并且因而不应当被视为限制性的。方法500可以采用被存储在机器可读存储介质(诸如存储介质310)上的可执行指令的形式和/或采用电子电路的形式被实现。
方法500可以开始于框521,其中方法500可以响应于第一引导命令而获得基于随机化过程所生成的第一加密密钥。这是要确保加密密钥对于每个引导会话是唯一的。换言之,第一加密密钥可以不同于在后续引导时生成的第二加密密钥。加密密钥中的这些变化可以由随机化过程变为可能。例如,随机化过程可以基于以下各项中的至少一个:时间和/或日期、产品ID和/或系列号、锁相环(PLL)频率、忆阻器单元的电阻值、和/或具有高度变化的其它参数。
在框522中,方法500可以确定页面表的第一信息是否指示存储器页面意图是安全的。所述页面表可以存储在存储器页面的虚拟地址和存储器页面的物理地址之间的映射。页面表可以被修改以包括附加信息,附加信息包括第一信息(例如安全性信息)和第二信息(例如加密信息)。所述附加信息可以被添加到页面表结构或可以通过使用预先存在的字段和/或未使用的位而被创建。
第一信息可以由用户手动设置和/或由系统110自动设置。例如,用户可以意图整个系统和存储器是安全的。在该情况中,页面表中针对每个存储器页面的第一信息可以被设置成指示对应的页面意图是安全的。在另一示例中,用户可以选择存储器页面或多个存储器页面以在第一信息中指示所述(多个)页面应当是安全的。在另一示例中,基于预定规则,系统110可以自动配置第一信息。
在框523中,方法500可以响应于确定了第一信息指示了存储器页面意图是安全的,方法500可以确定第二信息是否指示存储器页面被加密。响应于确定了第二信息指示了存储器页面没有被加密,方法500可以通过使用第一加密密钥来加密物理存储器中的存储器页面(框524)。这可以意味着可以阻止处理器(例如图1的处理器130)访问和/或执行代码集,直到存储器页面通过使用第一加密密钥被加密为止,其中代码集在遵循第一引导命令的第一引导会话期间被加载到存储器页面的至少一部分中。
参考回到图1,加密密钥生成引擎124可以负责实现框521。加密确定引擎123可以负责实现框522-523。加密引擎125可以负责实现框524。
图6是描绘了用于存储器中攻击预防的示例性方法600的流程图。如所图示的(并且在以下更详细描述的)方法600意图是示例性的,并且因而不应当被视为限制性的。方法600可以采用被存储在机器可读存储介质(诸如存储介质210)上的可执行指令的形式和/或采用电子电路的形式被实现。
方法600可以开始于框621,其中方法600可以响应于第一引导命令而获得基于随机化过程所生成的第一加密密钥。这是要确保加密密钥对于每个引导会话是唯一的。换言之,第一加密密钥可以不同于在后续引导时生成的第二加密密钥。加密密钥中的这些变化可以由随机化过程变为可能。例如,随机化过程可以基于以下各项中的至少一个:时间和/或日期、产品ID和/或系列号、锁相环(PLL)频率、忆阻器单元的电阻值、和/或具有高度变化的其它参数。
在框622中,方法600可以确定页面表的第一信息是否指示存储器页面意图是安全的。所述页面表可以存储在存储器页面的虚拟地址和存储器页面的物理地址之间的映射。页面表可以被修改以包括附加信息,附加信息包括第一信息(例如安全性信息)和第二信息(例如加密信息)。所述附加信息可以被添加到页面表结构或可以通过使用预先存在的字段和/或未使用的位而被创建。
第一信息可以由用户手动设置和/或由系统110自动设置。例如,用户可以意图整个系统和存储器是安全的。在该情况中,页面表中针对每个存储器页面的第一信息可以被设置成指示对应的页面意图是安全的。在另一示例中,用户可以选择存储器页面或多个存储器页面以在第一信息中指示所述(多个)页面应当是安全的。在另一示例中,基于预定规则,系统110可以自动配置第一信息。
如果方法600确定第一信息指示了存储器页面意图仍然是不安全的,则方法600继续进行到框623。在框623中,方法600可以访问和/或执行已经在遵循第一引导命令的第一引导会话期间被加载到存储器页面的至少一部分中的代码集。
另一方面,如果确定第一信息指示了存储器页面意图是安全的,则方法600可以继续进行到框624。在框624中,方法600可以确定第二信息是否指示了存储器页面被加密。如果确定了存储器页面确实被加密,则方法600可以继续进行到框623,其中代码集可以被访问和/或执行。
响应于确定了第二信息指示了存储器页面没有被加密,方法600可以通过使用第一加密密钥来加密物理存储器中的存储器页面(框625)。这可以意味着可以阻止处理器(例如图1的处理器130)访问和/或执行代码集,直到存储器页面通过使用第一加密密钥被加密为止。
在框626中,响应于通过使用第一加密密钥对页面进行加密,页面表中对应于页面的第二信息可以被更新以指示存储器页面现在被加密。注意到,当计算机被重引导时,第二信息可以被设置回到“0”,使得对应的存储器页面可以利用在重引导时生成的新加密密钥而被加密(如果相同的或另一代码集被加载到该页面中的话)。
参考回到图1,加密密钥生成引擎124可以负责实现框621。加密确定引擎123可以负责实现框622和624。加密引擎125可以负责实现框625-626。代码执行引擎126可以负责实现框623。
图7是描绘了可能作为基于存储器页面是否意图是安全的和/或被加密而做出的确定的结果而发生的三种场景的表。
可以存在基于所述确定的结果能够发生的三个不同场景。在图7中所图示的示例中,如果第一信息指示了物理存储器页面意图处于不安全中(例如第一信息指示“0”),则处理器(例如图1的处理器130)可以访问和/或执行代码集而不加密存储器页面(包括其中的代码集)。
另一方面,如果第一信息指示了物理存储器页面意图是安全的(例如第一信息指示“1”),则可以确定第二信息是否指示物理存储器页面被加密。响应于确定了它尚未被加密(例如第二信息指示“0”),可以阻止处理器(例如处理器130)执行或以其它方式访问代码集直到存储器页面被加密为止。因而,意图是安全的但是尚未被加密的存储器页面可以利用如本文中关于加密密钥生成引擎124和加密引擎125所讨论的基于随机化的加密密钥而被加密。
对于意图是安全的(例如第一信息指示“1”)并且已经被加密(例如第二信息指示“1”)的存储器页面,处理器(例如图1的处理器130)可以访问和/或执行代码集(例如,加密的代码集)。
前述公开内容描述了用于存储器中攻击预防的多个示例性实现方式。所公开的示例可以包括用于存储器中攻击预防的系统、设备、计算机可读存储介质和方法。为了解释的目的,某些示例参考图1-7中所图示的组件被描述。然而,所图示的组件的功能性可以重叠,并且可以存在于较少或较大数目的元件和组件中。
另外,所图示的元件的功能性中的所有或部分可以共存或分布在若干地理上分散的位置之间。此外,所公开的示例可以被实现在各种环境中并且不限于所图示的示例。另外,结合图5-6所描述的操作的序列是示例并且不意图是限制性的。附加的或较少的操作或者操作的组合可以被使用或者可以变化而不脱离所公开的示例的范围。此外,与所公开的示例一致的实现方式不需要以任何特定的次序执行操作的序列。因而,本公开内容仅仅阐明了实现方式的可能示例,并且对所描述的示例可以做出许多变型和修改。所有这样的修改和变型意图被包括在本公开内容的范围内并且受随后的权利要求保护。
Claims (15)
1.一种用于通过计算设备执行以用于存储器中攻击预防的方法,所述方法包括:
响应于第一引导命令而获得基于随机化过程所生成的第一加密密钥;
确定页面表的第一信息是否指示存储器页面意图是安全的,所述页面表存储在存储器页面的虚拟地址和存储器页面的物理地址之间的映射;
响应于确定了第一信息指示了存储器页面意图是安全的,确定页面表的第二信息是否指示存储器页面被加密;以及
响应于确定了第二信息指示了存储器页面没有被加密,使用第一加密密钥来对物理存储器中的存储器页面进行加密。
2.根据权利要求1所述的方法,还包括:
响应于对物理存储器中的存储器页面进行加密,使得第二信息被更新以指示存储器页面被加密。
3.根据权利要求1所述的方法,其中代码集在遵循第一引导命令的第一引导会话期间被加载到存储器页面的至少一部分中,此外包括:
响应于确定了第二信息指示了存储器页面没有被加密,阻止处理器访问代码集直到存储器页面通过使用第一加密密钥被加密为止。
4.根据权利要求1所述的方法,还包括:
响应于第二引导命令而获得基于随机化过程所生成的第二加密密钥,其中代码集在遵循第二引导命令的第二引导会话期间被加载到存储器页面的至少一部分中;以及
响应于确定了第二信息指示了存储器页面没有被加密,阻止处理器访问代码集直到存储器页面通过使用第二加密密钥被加密为止。
5.根据权利要求1所述的方法,其中所述物理存储器是高速缓存存储器和主存储器中的至少一个。
6.根据权利要求1所述的方法,其中所述页面表的至少一部分被高速缓存在耦合到存储器管理单元(MMU)的转换后备缓冲器(TLB)中。
7.一种包括通过计算设备的处理器可执行以用于存储器中攻击预防的指令的非暂时性机器可读存储介质,所述机器可读存储介质包括:
在第一引导会话期间接收以下指示:代码集被加载到物理存储器页面的至少一部分中;
在页面表中标识与物理存储器页面对应的页面条目,其中所述页面条目将虚拟存储器页面映射到物理存储器页面;以及
确定与页面条目相关联的加密字段是否指示了物理存储器页面被加密,其中响应于确定了所述加密字段指示了物理存储器页面没有被加密,阻止处理器访问代码集直到物理存储器页面通过使用对于第一引导会话而言是唯一的第一加密密钥被加密为止。
8.根据权利要求7所述的非暂时性机器可读存储介质,其中第二加密密钥不同于第一加密密钥并且对第二引导会话而言是唯一的。
9.根据权利要求8所述的非暂时性机器可读存储介质,还包括:
在第二引导会话期间接收代码集被加载到物理存储器页面的至少一部分中的指示,其中,响应于确定了所述加密字段指示了物理存储器页面没有被加密,阻止处理器访问代码集直到物理存储器页面通过使用对于第二引导会话而言是唯一的第二加密密钥被加密为止。
10.根据权利要求7所述的非暂时性机器可读存储介质,还包括:
确定与页面条目相关联的安全性字段是否指示物理存储器页面意图是安全的;
响应于确定了所述安全性字段指示了物理存储器页面意图是安全的,确定加密字段是否指示物理存储器页面被加密;以及
相应于确定了所述加密字段指示了物理存储器页面没有被加密,使得物理存储器页面通过使用对第一引导会话而言是唯一的第一加密密钥而被加密。
11.根据权利要求7所述的非暂时性机器可读存储介质,其中,响应于确定了所述加密字段指示了物理存储器页面没有被加密,阻止处理器执行代码集直到物理存储器页面通过使用对第一引导会话而言是唯一的第一加密密钥被加密为止。
12.一种用于存储器中攻击预防的系统,包括:
存储器管理单元,所述存储器管理单元:
访问页面表,所述页面表已经被修改以包括附加字段,所述附加字段包括第一信息和第二信息,所述页面表存储页面条目,所述页面条目将虚拟存储器页面映射到代码集在引导会话期间被加载到其中的物理存储器页面,
处理器,所述处理器:
确定第一信息是否指示物理存储器页面意图是安全的以及第二信息是否指示物理存储器页面被加密,其中,响应于确定了第一信息指示了物理存储器页面意图是安全的并且第二信息指示了物理存储器没有被加密,阻止处理器访问代码集直到物理存储器页面利用对引导会话而言是唯一的加密密钥被加密为止,以及
加密单元,所述加密单元:
利用加密密钥来加密物理存储器页面,其中所述加密密钥在加密单元中被种子化。
13.根据权利要求12所述的系统,所述处理器:
更新第二信息以指示物理存储器页面被加密;以及
执行代码集。
14.根据权利要求12所述的系统,所述处理器:
响应于确定了第一信息指示了物理存储器页面意图仍然是不安全的,执行代码集。
15.根据权利要求12所述的系统,其中加密物理存储器页面还包括:
加密来自物理存储器页面的数据;以及
在将经加密的数据存储在物理存储器页面中之前暂时将经加密的数据存储在加密单元中的静态随机存取存储器(SRAM)中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2014/067616 WO2016085492A1 (en) | 2014-11-26 | 2014-11-26 | In-memory attack prevention |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107004099A true CN107004099A (zh) | 2017-08-01 |
CN107004099B CN107004099B (zh) | 2020-06-05 |
Family
ID=56074841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480083435.5A Active CN107004099B (zh) | 2014-11-26 | 2014-11-26 | 存储器中攻击预防 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10496825B2 (zh) |
EP (1) | EP3224759B8 (zh) |
CN (1) | CN107004099B (zh) |
TW (1) | TWI551993B (zh) |
WO (1) | WO2016085492A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558740A (zh) * | 2017-09-25 | 2019-04-02 | 英特尔公司 | 用于页面粒度、软件控制的多密钥存储器加密的系统、装置和方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9996479B2 (en) * | 2015-08-17 | 2018-06-12 | Micron Technology, Inc. | Encryption of executables in computational memory |
US11017125B2 (en) * | 2016-12-13 | 2021-05-25 | University Of Florida Research Foundation, Incorporated | Uniquified FPGA virtualization approach to hardware security |
US11243893B2 (en) * | 2018-05-11 | 2022-02-08 | Intel Corporation | Preventing unauthorized access to encrypted memory |
US11256810B2 (en) * | 2019-03-05 | 2022-02-22 | Lenovo Enterprise Solutions (Singapore) Ptd. Ltd. | Systems, computing devices, and methods for authenticating privileged subsystem access by policy and by use of a security key generated at boot |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004079547A2 (en) * | 2003-03-04 | 2004-09-16 | Secure64 Software Corporation | Customized execution environment and operating system capable of supporting same |
US20060015748A1 (en) * | 2004-06-30 | 2006-01-19 | Fujitsu Limited | Secure processor and a program for a secure processor |
CN101026455A (zh) * | 2006-02-22 | 2007-08-29 | 富士通株式会社 | 安全处理器 |
US20080059711A1 (en) * | 2006-08-31 | 2008-03-06 | Mckeen Francis X | Method and apparatus for preventing software side channel attacks |
WO2008054456A2 (en) * | 2006-02-22 | 2008-05-08 | Luna Innovations Inc. | Hardware-facilitated secure software execution environment |
US20090113110A1 (en) * | 2007-10-30 | 2009-04-30 | Vmware, Inc. | Providing VMM Access to Guest Virtual Memory |
US20120297147A1 (en) * | 2011-05-20 | 2012-11-22 | Nokia Corporation | Caching Operations for a Non-Volatile Memory Array |
US20120317423A1 (en) * | 2007-10-30 | 2012-12-13 | Boris Dolgunov | Memory randomization for protection against side channel attacks |
CN103210396A (zh) * | 2010-10-20 | 2013-07-17 | 超威半导体公司 | 包括用于保护敏感代码和数据的架构的方法和装置 |
US20140006798A1 (en) * | 2012-06-29 | 2014-01-02 | Gyan Prakash | Device, system, and method for processor-based data protection |
US20140237261A1 (en) * | 2012-12-20 | 2014-08-21 | Rambus Inc. | Process authenticated memory page encryption |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007008919A2 (en) | 2005-07-11 | 2007-01-18 | University Of Virginia Patent Foundation | Method and system for software protection using binary encoding |
US8443442B2 (en) | 2006-01-31 | 2013-05-14 | The Penn State Research Foundation | Signature-free buffer overflow attack blocker |
WO2008008401A2 (en) | 2006-07-12 | 2008-01-17 | Global Info Tek, Inc. | A diversity-based security system and method |
EP1906412A1 (en) | 2006-09-29 | 2008-04-02 | Koninklijke Philips Electronics N.V. | A secure non-volatile memory device and a method of protecting data therein |
US7941862B2 (en) | 2007-04-05 | 2011-05-10 | Phison Electronics Corp. | Data access method against cryptograph attack |
US20090187771A1 (en) | 2008-01-17 | 2009-07-23 | Mclellan Jr Hubert Rae | Secure data storage with key update to prevent replay attacks |
US20120185636A1 (en) * | 2010-08-04 | 2012-07-19 | Isc8, Inc. | Tamper-Resistant Memory Device With Variable Data Transmission Rate |
US8458804B1 (en) | 2011-12-29 | 2013-06-04 | Elwha Llc | Systems and methods for preventing data remanence in memory |
-
2014
- 2014-11-26 US US15/510,039 patent/US10496825B2/en not_active Expired - Fee Related
- 2014-11-26 WO PCT/US2014/067616 patent/WO2016085492A1/en active Application Filing
- 2014-11-26 CN CN201480083435.5A patent/CN107004099B/zh active Active
- 2014-11-26 EP EP14906759.7A patent/EP3224759B8/en active Active
-
2015
- 2015-11-23 TW TW104138737A patent/TWI551993B/zh active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004079547A2 (en) * | 2003-03-04 | 2004-09-16 | Secure64 Software Corporation | Customized execution environment and operating system capable of supporting same |
US20060015748A1 (en) * | 2004-06-30 | 2006-01-19 | Fujitsu Limited | Secure processor and a program for a secure processor |
CN101026455A (zh) * | 2006-02-22 | 2007-08-29 | 富士通株式会社 | 安全处理器 |
WO2008054456A2 (en) * | 2006-02-22 | 2008-05-08 | Luna Innovations Inc. | Hardware-facilitated secure software execution environment |
US20080059711A1 (en) * | 2006-08-31 | 2008-03-06 | Mckeen Francis X | Method and apparatus for preventing software side channel attacks |
US20090113110A1 (en) * | 2007-10-30 | 2009-04-30 | Vmware, Inc. | Providing VMM Access to Guest Virtual Memory |
US20120317423A1 (en) * | 2007-10-30 | 2012-12-13 | Boris Dolgunov | Memory randomization for protection against side channel attacks |
CN103210396A (zh) * | 2010-10-20 | 2013-07-17 | 超威半导体公司 | 包括用于保护敏感代码和数据的架构的方法和装置 |
US20120297147A1 (en) * | 2011-05-20 | 2012-11-22 | Nokia Corporation | Caching Operations for a Non-Volatile Memory Array |
US20140006798A1 (en) * | 2012-06-29 | 2014-01-02 | Gyan Prakash | Device, system, and method for processor-based data protection |
US20140237261A1 (en) * | 2012-12-20 | 2014-08-21 | Rambus Inc. | Process authenticated memory page encryption |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558740A (zh) * | 2017-09-25 | 2019-04-02 | 英特尔公司 | 用于页面粒度、软件控制的多密钥存储器加密的系统、装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3224759B1 (en) | 2019-05-01 |
EP3224759A4 (en) | 2018-05-30 |
WO2016085492A1 (en) | 2016-06-02 |
TWI551993B (zh) | 2016-10-01 |
EP3224759B8 (en) | 2019-06-19 |
EP3224759A1 (en) | 2017-10-04 |
CN107004099B (zh) | 2020-06-05 |
US10496825B2 (en) | 2019-12-03 |
US20170364684A1 (en) | 2017-12-21 |
TW201631483A (zh) | 2016-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3718004B1 (en) | Encoding of input to storage circuitry | |
EP3682362B1 (en) | Call path dependent authentication | |
CN105706066B (zh) | 存储器完整性 | |
EP3379448A1 (en) | Method and system for operating a cache in a trusted execution environment | |
CN107004099A (zh) | 存储器中攻击预防 | |
CN111417928A (zh) | 分支预测电路的输入的编码 | |
CN106415585A (zh) | 安全启动期间的密钥提取 | |
IL271729B2 (en) | Tree integrity counter for memory security | |
Henson et al. | Beyond full disk encryption: Protection on security-enhanced commodity processors | |
EP3132374A1 (en) | Hardware-based stack control information protection | |
US20170046280A1 (en) | Data processing device and method for protecting a data processing device against attacks | |
KR20140097927A (ko) | 소프트웨어의 보안을 높이는 방법 | |
US10841090B2 (en) | Plaintexts encrypted with pluralities of keys | |
CN107563226B (zh) | 一种存储器控制器、处理器模块及密钥更新方法 | |
US20200235922A1 (en) | Encryption method | |
US20140047555A1 (en) | Method and system for securing a software program | |
US10552602B2 (en) | System and method for protecting a device against attacks on processing flow using a code pointer complement | |
US20240080193A1 (en) | Counter integrity tree | |
KR102258408B1 (ko) | 반환 명령어 난독화 방법 및 난독화된 반환 명령어 실행방법 | |
Henson et al. | Attack mitigation through memory encryption of security enhanced commodity processors | |
WO2017131684A1 (en) | Content recovery of protected data from non-volatile memory | |
CN117254930A (zh) | 一种针对虚拟机管理器跨域攻击的防御方法、装置和介质 | |
Kayaalp | Architectural techniques for protecting systems against emerging attacks |
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 |