CN107408072B - 用于随机化指令的方法、介质和装置 - Google Patents
用于随机化指令的方法、介质和装置 Download PDFInfo
- Publication number
- CN107408072B CN107408072B CN201580068644.7A CN201580068644A CN107408072B CN 107408072 B CN107408072 B CN 107408072B CN 201580068644 A CN201580068644 A CN 201580068644A CN 107408072 B CN107408072 B CN 107408072B
- Authority
- CN
- China
- Prior art keywords
- ips
- ops
- instructions
- memory
- instruction
- 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.)
- Active
Links
Images
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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
-
- 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/45587—Isolation or security of virtual machine instances
-
- 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/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本文描述的是随机化指令集、存储器寄存器和指针,以通过增加恶意软件、恶意计算机用户或逆向工程理解新指令集、存储器寄存器和指针的含义的资源付出要求来增加计算机安全性的方法和装置。
Description
对相关申请的交叉引用
本申请基于并要求于2014年12月16日提交的临时美国申请No.62/092,570的优先权权益,该临时美国申请的全部内容通过引用被结合于此。
技术领域
本文描述的实施例一般而言涉及用于随机化计算系统的指令集、存储器寄存器和指针的框架。
背景技术
本文提供的背景描述是出于一般地呈现本公开的上下文的目的。当前提名的发明人的工作,就该工作在这个背景部分中描述的程度而言,以及在提交时没有以其它方式被限定为现有技术的本描述的各方面,既不是明确地承认也不是暗示地承认作为针对本公开的现有技术。
在大多数计算系统中使用的指令集、存储器寄存器和指针是相当标准化的。标准化的机器指令集在软件和硬件之间提供一致的接口,但它们是双刃剑。虽然它们通过使得能够独立开发硬件和软件来产生极大的生产力收益,但是众所周知的指令集的普遍存在也允许围绕可利用的软件缺陷设计的单个攻击以获得对成千上万的系统的控制。因此,具有标准化的指令集促进知识产权的窃取、计算机的不正当利用、黑客攻击等。
地址空间布局随机化(ASLR)是用于操作系统(OS)的存储器保护过程,该保护过程通过随机化系统可执行文件被加载到存储器中的位置来防范缓冲区溢出攻击。虽然ASLR是在库代码中随机化指令地址的做法,并且是阻挠库注入代码攻击的本体编码的形式,但是ASLR并没有解决基于二进制代码静态指令地址的云应用所面临的挑战。
因此,需要一种技术来解决本领域的上述缺陷,并进一步提供软件保护,使得代码不能被旁道(side-channel)解密或攻击。
发明内容
计算机系统利用标准化指令集,以及在较小的程度上利用存储器寄存器和指针,而与所使用的芯片集无关。这样的行业标准帮助促进软件开发。本公开的一方面提供指令集、存储器寄存器和指针的随机化,从而提供针对逆向工程、旁道拦截和分析以及其它数据分析方法的安全性。本公开的一方面提供随机化指令集、存储器寄存器和指针,而无需软件开发中的改变,既不需要芯片集设计中的改变也不需要制造中的改变。因此,本文描述的安全技术克服了随机化和密钥索引管理两者中的技术限制。
本公开的一方面提供用于软件保护的方法和装置,使得软件代码不能通过旁道被解密或攻击。此外,通过一种实施例,本公开通过在标准化指令集、存储器寄存器和指针的相应代中引入随机性的概念来克服与标准化指令集、存储器寄存器和指针相关联的限制。此外,本公开提供对每调用调度解密(run-time per call dispatch decryption)的典型运行时间的改进,其中,典型地,代码的主体保持加密,因为它在其它之外利用在全本体加密(FOE)、人工智能、机器学习、半自治代理网络、自修改指令随机化代码(SMIRC)和语义词典加密(SDE)的领域中的新发现。
上述段落是通过一般性介绍的方式提供的,并不旨在限制随后的权利要求的范围。通过结合附图参考以下具体实施方式将最好地理解所描述的实施例以及其它优点。
附图说明
将容易地获得对本公开以及其许多附带优点的更完整的了解,这是因为当结合附图考虑时,通过参考以下详细描述将更好地理解本公开以及其许多附带优点,其中:
图1图示根据一种实施例的过程的示例性层次结构;
图2图示描绘由处理器执行的随机化的示例;
图3图示根据本发明的框架的一种实施例;
图4图示根据本发明的过程的一种实施例;以及
图5图示根据一种实施例的计算设备的框图。
具体实施方式
现在参考附图,其中贯穿数个视图,相同的标号表示相同或对应的部分。因此,上述讨论仅仅公开和描述本公开的示例性实施例。如本领域技术人员将理解的,在不脱离本公开的精神或本质特性的情况下,可以以其它具体形式体现本公开。因此,本公开旨在说明而不是限制本发明以及其它权利要求的范围。本公开,包括本文教导的任何容易辨别的变体,部分地限定前述权利要求术语的范围,使得发明性主题不专用于公众。
转到图1,图1描绘示例性的处理器互锁集。通过一种实施例,应用程序可以被划分成各种作业,本文称之为子例程或任务。任务中的每一个可以由主处理器分发到从属处理器。从属处理器之后可以选择成为其自己的主处理器,并且将分配给该从属处理器的任务进一步细分成各种子任务,并且将子任务中的每一个分配给该从属处理器的从属处理器。因此,以这种方式,程序可以被划分成许多不同的任务,每一个任务被分配给从属处理器。必须认识到的是,对于从属处理器向其分配任务的处理器,每一个从属处理器是主处理器。因此,程序的执行可以被认为由如图1所示的处理器的层次结构执行。
语法被用于描述基于规则集的句子结构,该规则集取决于被实现的语法的类型。例如,上下文无关语法(CFG)是用于生成串模式的递归重写规则(或产生式)集。CFG包括以下组件:终结符号集,它们是出现在由语法生成的串中的字母表的字符;非终结符号集,它们是用于可以由非终结符号生成的终结符号的模式的占位符(placeholder);产生式集,它们是用于用其它非终结符号或终结符号(在产生式的右侧)替换(或重写)串中的非终结符号(在产生式的左侧)的规则;以及起始符号,它是出现在由语法生成的初始串中的特殊非终结符号。
通过本公开的一种实施例,主处理器创建执行应用程序的处理器的层次结构。具体地,如前所述,主处理器创建随机数量的子处理。每一个子处理器又可以充当主处理器并创建其自己的子处理。子处理器中的每一个由其主处理器分配唯一的随机指令集、存储器寄存器和指针。通过一种实施例,可以使用语法来确定用于每一个子处理器的随机化指令集、存储器寄存器和指针。在这样做时,本公开导致针对对程序的潜在不正当利用威胁提供安全机制的有利能力。
因此,防止了恶意软件程序或逆向工程技术为了利用程序的漏洞而进行的尝试。具体地,由于用于执行程序的处理器的数量是随机的,并且以随机的方式(基于语法)确定分配给每一个处理器的指令集,因此当前和未来的逆向工程程序没有获取用于指令集的转换表、或指针和存储器寄存器的位置的机制。
此外,作为添加的安全层,每次打开应用时,新的转换表由较高层处理器提供,并且破解处理器的尝试失败,这是因为处理器内的各种运行应用将不符合标准化的指令集、存储器寄存器或指针。因此,通过一种实施例,所使用的处理器的数量将是随机的,并且因此逆向工程或恶意软件将不知道其必须尝试多少次来突破每一个处理器,并且突破处理器的尝试将导致监控处理器关闭子处理器并用全新的随机化指令集、存储器寄存器和指针重新启动该子处理器。
通过本公开的一种实施例,使用Van Wijngaarden(VW)语法来创建分配给每一个子处理器的随机指令集、存储器寄存器和指针。VW语法可以被可视化为两个上下文无关语法的组合(即,VW是两级语法)。第一上下文无关语法用于生成充当第二上下文无关语法的非终结符的终结符号集。
本体加密是以可以在不暴露数据的特定元素的内容的情况下对这些元素执行操作的方式来模糊数据内容的密码系统。同态加密技术依赖于同态,同态可以被定义为保留数据组的结构的数据映射,换句话说,它相对于单个语法移位数据。作为对照,本体加密是不同的,因为它相对于若干语法移位数据。具体地,通过本公开的一种实施例,数据可以在单个语法内移位、在双级语法(VW语法)内移位和/或N个语法中的M个内移位。N个语法中的M个可以是并行的、串行的或级联的。因此,本体加密可以通过使用许多方法发生,并且本公开的实施例可以结合和利用所有形式的本体加密。
图1描绘图示处理器100的层次结构的非限制性示例。如图1所示,应用程序101在处理器的三级层次结构中执行。处理器100的层次系列包括控制子处理器121、122和123的主处理器110。每一个处理器被分配随机化的指令集、存储器指针和寄存器,这些随机化的指令集、存储器指针和寄存器使得能够保护数据、指令集、存储器指针和寄存器防止攻击者试图逆向工程、理解或使处理器执行未经授权的过程或以攻击者选择的方式协助攻击者。
如图1所示,主处理器110实现主随机化过程131(即,创建语法)以生成向第一子处理器121分配随机化指令集、存储器寄存器和指针的转换表141(指令集的转换表)。以类似的方式,子处理器121可以充当其自己的主处理器并且将由主处理器110分配给该子处理器的部分或全部任务分配给第二子处理器122。在这样做时,子处理器121还分配随机化指令集、存储器寄存器和指针(通过实现子随机化过程132)以生成用于第二子处理器122的转换表142。
此外,第二子处理器122可以经由第三转换表143实现子随机化过程(即,基于VW语法创建语法)以向第三子处理器123分配随机指令集、存储器寄存器和指针。此外,必须认识到的是,虽然如图1所示的图示仅包括三级(迭代)子处理器创建,但是本文描述的技术可适用于任何数量的层次化处理器。
在图1中,每一个子处理器由控制其的该子处理器的管理处理器提供随机化指令集、存储器寄存器和指针。例如,子处理器的任务将是把Z mod X与A mod Y相加,而不是需要相加X+Y。控制处理器(即,子处理器的管理处理器/主处理器)的任务是:知道真实的算法,并且当被提供答案(由子处理器)时应用算法(转换)以导出正确的解。因此,以这种方式,每一个处理器将仅处理程序的部分,并且程序的那些部分中的每一个部分将经历几个混淆步骤。此外,通过一种实施例,每当程序的对应部分运行时,它可以在不同的处理器上执行,在不同的虚拟机中执行。具体地,由于确定在特定程序的执行中要使用的处理器的数量的随机性,因此可以在应用的每次执行迭代期间在不同的处理器上执行程序的每一个部分。
以这种方式,攻击者将面临必须知道在特定时刻正在被处理的确切数据、以及还要知道全部程序驻留的位置的挑战。此外,攻击者将不知道未加密数据(指令集、存储器指针或寄存器)所在的位置或者甚至不知道攻击者在那一时刻正在检查的混淆层、或者不知道主处理器在哪一层创建主转换表并且不知道在处理器的直接控制下将处理器的密钥管理和随机化方法存储在哪一层。
此外,当每一个处理器在该处理器临时控制下激活子处理器时,处理器将随机化注入到受控处理中并为处理器保留生成的主索引。因此,整体程序被更充分的保护。由主处理器控制的子处理器自身控制它们下面的再其它的子处理器,并且充当那些子处理器的主处理器。因此,程序以随机方式扩展和收缩,其中每一个扩展被分配给新的指定的主控制处理器。以这种方式,程序维持状态,但是它在计算机系统中的位置只有它自己知道,并且当程序在整个计算机系统中扩展时,该程序的每一个部分被包含在受保护的存根状态下,只用于进行再次收缩、重新配制、分配新的主控制器处理器以及重复扩展循环。
执行处理器数量的随机化以及随机化的指令集、存储器寄存器和指针所带来的有利能力是恶意软件或逆向工程将只能够确定在特定时刻执行的命令是例如2+2。看到这个命令的攻击者将不知道数字2是否是加密的和随机化的数、加法指令是否确实是真实的指令,并且攻击者也将不知道计算机系统中的哪个处理器是当前的主控制器、子处理器等。
最后,攻击者将不知道为什么这个指令集在特定时刻被执行。在攻击者试图破解和分析计算机系统中的每一个处理器时,攻击者将仍然不知道计算机系统中实际上有多少处理器,因为处理器自身的数量是随机选择的。此外,通过一种实施例,引入了随机数量的附加处理器以便产生看起来像是有效处理但被程序忽略的噪声。
此外,但是恶意软件或逆向工程不知道命令2+2指示什么,因为命令已被主处理器转换。此外,下一次运行该命令时,它可能看起来是5/6,因为(特定子处理器的)主处理器在执行的每一个循环随机化指令集。
必须认识到的是,本文描述的实施例不限于单个计算机系统,而是也适用于具有分布式存储装置和处理计算机系统等的联网计算机系统。此外,上述实施例同样适用于被称为“云网络”的分布式处理和存储系统。
此外,无论是否利用分布式处理和存储系统,上述实施例的过程仍然适用,即,随机数量的处理器由主处理器选择并分配给任务所需的临时处理器集群。这种N中的M个结构(即,随机数量的处理器,每一个处理器具有随机数量的处理循环)进一步混淆过程和数据,使得攻击者将不知道他或她必须检查多少处理器以全面分析过程和数据。主处理器可以将任务分配给每一个层-1(layer-1)处理器,该处理器又可以在它下面创建附加层,并且充当子主处理器。这种过程继续,直到处理器集群被指示用新的主处理器和新的层重新配置自身。
现在转向图2,图2图示绘出在以上实施例中描述的随机化过程的非限制性示例。图2描绘耦合到处理器/虚拟机220的程序加载器210的实例和对应于计算机对象代码的字节码文件230。在240中描绘通过本公开的随机化过程对字节码文件230执行的处理。
加载器210是在离线存储装置(诸如,硬盘)中定位给定程序(其可以是应用,或者在某些情况下,其可以是计算机自身的操作系统的一部分)并将该给定程序加载到主存储装置(例如,个人计算机中的随机存取存储器)中用于执行的组件。
此外,字节码文件230包括由程序(例如,虚拟机)处理的计算机对象代码。如图2所示,字节码文件包括报头和用于指令的索引序列250。对于每一个索引(对应于指令),通过本公开的一种实施例,以随机的方式生成特殊密钥260(即,操作码)。注意的是,为指令生成的操作码指定要执行的操作。因此,通过随机生成指令集的操作码,提供本公开以防止恶意软件或逆向工程跟踪应用的确切执行。换句话说,字节码文件被加密(在运行时以随机的方式),使得当文件被解密时,运行时处理被重新布置。
通过本公开的一种实施例,每一个处理器在随机化过程中进行的步骤如下:1)二进制码被变换成自修改指令随机化代码(SMIRC)和语义词典加密(SDE)(即,SMIRC+SDE)表示,2)SMIRC+SDE表示被进一步变换成Van Wijngaarden语法合成器(VWGS),该VWGS经由回写过程生成创建小二进制可执行文件的生成器存根(指令块)。注意的是,经由运行时每调用调度解密来保护存根,同时代码的主体保持加密。该过程可以以二进制形式进一步重新生成原始应用。因此,本文描述的实施例通过以下方式采用完整本体加密:经由在随机时间使用从存根生成的本体加密来运行时随机化二进制文件。
加密协议
处理系统(例如,虚拟机(VM))由以下两个部分组成:在真实的cpu硬件上运行的外部处理系统(OPS)OPS主机,以及在内部处理系统(IPS)(诸如,在虚拟化虚拟机容器(即,像qemu))中运行的内部客人部分。关于用户的真实身份和用户的处理(即,计算机)的所有信息由OPS维护。所有应用子例程从IPS运行。可写的访问控制单独由IPS许可为从属处理器,诸如由OPS提供的虚拟设备。加密在OPS上运行,使得内部机器无法访问密钥。
以这种方式,OPS用作主处理器,并且IPS用作从属处理器(其也可以用作其自己的从属处理器的主处理器)。OPS(例如,IPSOPS虚拟机映像)是容纳IPS(例如,内部OPS VM)的主机VM的一部分,使得OPS的每一个实例以可以从内部看到的每种方式(即用户名、MAC地址和IP地址)看起来都是相同的。由外部机器呈现给内部机器的接口始终是相同的;例如,内部机器始终使用相同的名称引用外部机器。
外部机器从管理程序运行,并且所有代码必须与“真实”网络对话。内部机器只能连接到所分配的外部机器的加密端口。外部机器具有防火墙,该防火墙被配置成使得流量永远不能从内部机器直接中继到网络。内部机器可以与另一个处理器对话的唯一方式应该是通过由外部机器分配的端口。
存在两种类型的密码术:
1.对称密码术(诸如,RC4、RC5、SHA-1和MD5)以及
2.非对称密码术(诸如,RSA和ECC)。
如图4所示,OPS经由密码术机制创建SMIRC+SDE。在这个示例中,使用对称RC5算法,但是可以使用任何对称加密算法并且任何对称加密算法均适于在应用子例程(即,这些是作为主应用的组件运行的共同例程或资源受限节点)之间的通信。非对称密码术(诸如,RSA算法)应用于OPS和IPS之间的通信。
两种保护机制在受信任的模拟器内执行,同时保持在非受信系统(即,被模拟的系统)的带外(out-of-band)。系统的完整性和可靠性取决于将攻击者置于模拟环境内的沙盒中。OPS)和IPS)使用以下规则进行交互:
1.OPS将IPS指令从IPS存储器复制到OPS存储器中。
2.IPS指令被转换成OPS指令集。当经转换的OPS指令集执行时,IPS存储器和寄存器的状态被修改,使得看起来好像是原始IPS指令已经被执行。
3.转换过程确保IPS指令排他地读取和写入IPS存储器。OPS存储器通过IPS指令无法访问,并且经转换的OPS指令集不能读取或写入OPS存储器。因此,该经转换的指令集将永远不能自读(self-reading)。IPS指令沙盒是受限的存储器空间。
因为云框架中的大量通信节点由于需要管理、存储和回调大量的加密密钥,因此端到端加密是不切实际的。在本方法中,我们假设计算节点的数量为N,我们分配OPS来用IPS节点执行逐跳加密,其中每一个IPS子节点存储与其直接邻居共享的加密密钥。存储在OPS节点中的密钥包括与该OPS的邻居以及IPS节点共享的密钥,该IPS节点具有与该IPS节点的子节点共享的密钥和与OPS共享一个密钥。这种方法最小化密钥所需的存储器以及传输密钥的功耗。
方法协议
1.OPS将加密的IPS SMIRC+SDE指令克隆到OPS存储器中。加密的IPS在OPS存储器中解密。因此,这些指令仍然在IPS的带外并且IPS不可访问。
2.使用指定为目标IPS的简单双级转换器(参见图4)的Van Wijngaarden语法将解密的IPS SMIRC+SDE指令转换(或解释)成OPS指令集。
3.转换的OPS指令集执行IPS的状态,并且使得看起来好像原始IPS指令已经被执行。转换过程确保IPS指令永远不会读取解密的IPS指令。
4.加密的指令在OPS存储器中使用OPS例程解密。模拟沙盒确保OPS存储器不能由IPS访问(即,解密的指令和解密例程是带外的)。加密的IPS可执行文件没有任何解密过程,并且看不见解密指令所需的密钥:解密始终保持在带外。
5.OPS的转换机制使用两级语法将该OPS已执行的指令重新写入到IPS中,这意味着IPS永远不会连续两次具有相同的映像,并且因此攻击面将永远不会两次相同。
方法:密钥-代码散列(Code-Hash)配对白名单
加密密钥自身使用简单散列映射(例如,MD5)相关联到子例程或IPS代码的散列,因为IPS代码相互地具有OPS散列:这种编码定义执行模型,该执行模型仅执行与IPS配对签名的OPS以及与IPS子节点配对签名的IPS:因此,未配对的无签名恶意代码(诸如,rootkit和漏洞利用)将永远不会被执行,主要原因是每次新的转换完成时,必须重新计算散列(示例MD5),并且这提供了篡改证据以及篡改抵制。
Van Wijngaarden(VW)语法规则
VW语法是上下文敏感的,并且因此,对于本领域技术人员来说,VW语法可以用于编写规则,该规则将一种形式的代码(例如,x86指令集的代码)变换成另一种形式的代码,同时保留作为其上下文信息的其语义。VW可以定义长距离关系:这意味着信息根据上下文地流经句子形式的代码表示(例如,x86汇编器)。当在OPS和IPS的上下文中使用VW时,信息必须流向查看其邻居的子节点以将一种代码形式重写为另一种代码形式。因此,使用VW语法作为代码转换引擎意味着它需要几乎所有规则都知道关于几乎所有其它规则的一些事情,这使得攻击面非常困难。
第一级转换器语法
第一级语法生成计算机代码。作为具体示例,可以使用符号S、T、U和V给出用于x86指令集的第一级语法,如下:
S->mov eax,key T
T->xor[ebx],eax U
U->inc ebx V
该第一级语法生成以下可执行指令代码:
mov eax,key
xor[ebx],eax
inc ebx
代码由非终结符号S->T->U->V的序列生成。具体地,非终结符号(诸如,S)可以被重写为“mov eax,key T”,这又可以被重写为“mov eax,key xor[ebx],eax U”等等。所定义的产生式规则可以为任意程序生成等效的指令序列:
S->mov eax,key T|push key;pop eax T
T->xor[ebx],eax U|mov ecx,[ebx];
and ecx,eax;not ecx;or[ebx],eax;
and[ebx],ecx U
U->inc ebxV|add ebx,1V
类似地,OPS可以添加没有任何功能效果的代码来改变IPS。这可以通过添加生成具有小开销的“非操作序列”指令(诸如:S->Gmov eax,key T|G push key;pop eax T)的新的非终结符号来完成。
这些增加了可以被生成以增加IPS和子节点的变化的指令序列的数量。
第二级转换器语法
在本专利中,所使用的方法是在生产过程期间的随机生成器,以使得产生式能够使用以下VW元规则(metarule)随机生成保留语义和上下文的代码序列(为了在元规则、超规则和产生式规则之间进行区分,我们将通常的Backus-Naur语法“->”改变成“;”,并且::用于元规则以及冒号(“:”)用于超规则。为了分隔规则的不同替代方案,我们使用分号“;”而不是“|”):
N::0;1;2;...;9;0N;...9N;
HEXIDECIMAL::N;a;b;f;a HEXIDFCIMAL;b HEXIDECIMAL;...;f HEXIDECIMAL.
ADDRESS::0xN.
NUMBER::MEMORY ADDRESS;HEXIDECIMAL.
INSTRUCTION::mov;push;pop.
MEMORY REGISTER::eax;ebx;edx.
STACK::esp.
MEMORY REGISTERS::STACK;REGISTER.
REGISTER NUMBER::REGISTER;NUMBER.
MEMORY::[REGISTER];[ADDRESS].
TO::‘,’.
在下表中,我们通俗地演示本体加密如何独立于芯片体系架构工作,因为它是在二进制级别下完成的。
元概念(metanotion)NUM表示地址或十六进制数,而INSTRUCTION表示数个指令,而不仅仅是单个指令(例如,mov,push和pop)。以下转换将把指令修改为可读和可重写的句子,可以如等同于由以下超规则给定的子例程那样执行该句子:
mov REGISTERS TO REGISTER NUMBER:
move REGISTER NUMBER in REGISTERS.
push REGISTER NUMBER:
save REGISTER NUMBER.
pop REGISTERS:
restore REGISTERS.
作为短子例程的具体示例,由于第一个超规则,因此代码“mov eax,0”将被替换为“move 0 in eax”。为了生成甚至更高的复杂度,我们添加将把代码变换成其它等效代码的超规则:
move RFGSTER NUMBER in MEMORY:
mov,MEMORY,TO,REGISTER NUMBER;
move REGISTER NUMBER in REGISTERS:
mov,REGISTERS,TO,REGISTER NUMBER;
save REGISTER NUMBER,restore REGISTFRS.
例如,可以将之前获得的代码(“move 0in eax”)修改为“mov,eax,',',0”或“save0,restore eax”。第一个替代方案将停止生成过程。但是,代码“mov”、“eax”、“','”和“0”将停止,其中这些代码中没有一个与超规则的左侧匹配。但是,其它替代方案将继续生成,并且代码的两个部分“save 0”和“restore eax”将彼此独立地被替换。因此,“save 0”可以被“push,0”或“substract 4 from esp,move 0 in[esp]”等替换。可以通过创建用于不同处理器(例如,ARM,Intel或其它硬件)的等效指令语法表来进一步扩展以上定义的元规则,因为它们是通过二进制转换执行的,这意味着本发明不只限于一个二进制指令芯片体系架构,而且可以由任何芯片体系架构(ARM,Intel或其它硬件)使用。为了可变性,VW语法可以生成无限的指令集,并且因此超规则生成无限数量的产生式规则:在实践中,通过在每IPS的基础上设置固定的计数器来限制该数量,以确保多样性但也最小化运行时的开销。我们把每一个VW生成的目标代码序列称为“存根(Stub)”。
IPS的各种子例程每一个可以由单独的VW语法来定义。语法的起始符号自身就是将每一个程序描述为存根的构造的语法的起始符号。VW语法产生建设性的方法来自动生成目标机器CPU的那些代码。OPS提供整个操作程序,但是可以通过IPS的相同过程来重新定义OPS自身。因此,可以使用Van Wijngaarden语法根据产生IPS的所有部分的起始OPS定义IPS,然后OPS可以经由运行时克隆或复制过程转换自身:作为示例,对于具有4级VW语法定义的OPS,其中父母OPS正在进行的重写是:
OPS:IPS-STUB01,IPS-STUB02,IPS-STUB03,IPS-STUB04
IPS-STUB01:配对并签名到OPS-CHILD的STUB01的VW语法
IPS-STUB02:配对并签名到OPS-CHILD的STUB02的VW语法
IPS-STUB03:配对并签名到OPS-CHILD的STUB03的VW语法
IPS-STUB 04:配对并签名到OPS-CHILD的STUB04的VW语法
OPS-CHILD:配对并签名到OPS的OPS-CHILD
例如,参见Dick Grune,“How to produce all sentences from a two-levelgrammar Information Processing Letters”,第19卷,第4期,1984年11月12日,第181-185页,该文章通过引用被结合于此。具体地,每一个存根被分配给例如在云环境或一些其它计算机系统(参考图5所描述)中的不同处理器,以被处理并报告回给监控处理器。以这种方式,攻击者将面临采集整个代码结构,并且每次代码运行时它将具有不同的指令集、存储器指针、寄存器和数据加密的挑战。
图3图示包括虚拟机(VM)的处理系统的示例,该虚拟机如上所述由外部处理系统(OPS)301和在内部处理系统(IPS)302中运行的内部客人部分组成。OPS 301包括元数据双级语法转换器。非对称密码术应用于OPS 301和IPS 302之间的通信应用。此外,对称密码术应用于应用子例程之间的通信。
图4图示用于随机化计算系统的指令集、存储器寄存器和指针的过程。运行存根(以实际上运行程序)的执行VM使用随机生成的代码-换句话说,执行代码始终出现一次,并且然后代码离开,而堆栈(存根的部分)保留用于下一个VM继续计算。
在步骤1中,使用内部过程中的OP-Hash加密指令。在步骤2中,加密的指令被传输到外部过程。在步骤3中,指令被解密到OPS存储器中并且由运行存根的VM执行。这些解密的指令仍然在IPS的带外,并且不能被IPS访问。加密的指令在OPS存储器中使用OPS例程进行解密。模拟沙盒确保IPS不能访问OPS存储器(即解密的指令和解密例程是带外的)。加密的IPS可执行文件没有任何解密过程,并且看不到解密指令所需的秘密密钥:解密始终保持在带外。
在步骤4中,使用指定为目标IPS的简单双级转换器的Van Wijngaarden语法将解密的指令转换(或解释)成OPS指令集。转换的OPS指令集执行IPS的状态,使得看起来好像原始IPS指令已经被执行。转换过程确保IPS指令永远不会读取解密的IPS指令。
在步骤5中,OPS的转换机制使用两级语法将该OPS已执行的指令重新写入到IPS中。这种写入确保IPS永远不会连续两次具有相同的映像,因此攻击面将永远不会两次相同。
注意的是,不需要系统来操作图4所示的整个过程链。例如,虽然在一种实施例中系统经历了所有这些步骤,但是在不同的实施例中,可以切换(重新排序)步骤或者可以不需要每一个步骤(可以省略一些步骤)。
如前所述,可以由一个或多个处理电路来实现上述实施例的功能中的每一个功能。处理电路包括被编程的处理器(例如,图5中的处理器503),如同处理器包括电路系统。处理电路还包括诸如专用集成电路(ASIC)和被布置成执行所述功能的常规电路部件的设备。通过一种实施例,如图5所述的电路系统可以用于执行指令集、存储器寄存器和指针的随机化,以提供本文所述的安全性特征。因此,在实现随机化过程时,电路系统可以提供执行应用的安全框架,从而提高计算机的总体功能。
以上讨论的各种特征可以由计算设备(诸如,计算机系统(或可编程逻辑))实现。电路系统可以被特别设计或编程以实现上述功能和特征,该功能和特征提高了电路系统的处理,并且允许以不可能由人或甚至缺乏本实施例的特征的通用计算机的方式处理数据。图5图示这种计算机系统501。图5的计算机系统501可以是特定的、专用机器。在一种实施例中,当处理器503被编程为计算向量收缩时,计算机系统501是特定的、专用机器。
计算机系统501包括耦合到总线502以控制用于存储信息和指令的一个或多个存储设备的盘控制器506,该一个或多个存储设备诸如磁硬盘507和可移动介质驱动器508(例如,软盘驱动器、只读紧凑型盘驱动器、读/写紧凑型盘驱动器、紧凑型盘自动电唱机(jukebox)、带驱动器和可移动磁光驱动器)。可以使用适当的设备接口(例如,小型计算机系统接口(SCSI)、集成设备电子器件(IDE)、增强型IDE(E-IDE)、直接存储器访问(DMA)或超-DMA)将存储设备添加到计算机系统501。
计算机系统501还可以包括专用逻辑器件(例如,专用集成电路(ASIC))或可配置逻辑器件(例如,简单可编程逻辑器件(SPLD)、复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA))。
计算机系统501还可以包括耦合到总线502以控制用于向计算机用户显示信息的显示器510的显示控制器509。计算机系统包括用于与计算机用户交互并向处理器503提供信息的输入设备,诸如键盘511和定点设备512。定点设备512例如可以是鼠标、轨迹球、用于触摸屏传感器的手指、或用于向处理器503传达方向信息和命令选择以及用于控制在显示器510上的光标移动的定点杆。
处理器503执行包含在存储器(诸如,主存储器504)中的一条或多条指令的一个或多个序列。这些指令可以从另一个计算机可读介质(诸如,硬盘507或可移动介质驱动器508)读入到主存储器504中。也可以采用多处理布置中的一个或多个处理器执行包含在主存储器504中的指令序列。在替代实施例中,可以使用硬连线电路系统代替软件指令或硬连线电路系统可以与软件指令组合使用。因此,实施例不限于硬件电路系统和软件的任何特定组合。
如上所述,计算机系统501包括至少一个计算机可读介质或存储器,该至少一个计算机可读介质或存储器用于保持根据本公开的任何教导编程的指令并且用于包含本文所述的数据结构、表、记录或其它数据的。计算机可读介质的示例是紧凑型盘、硬盘、软盘、带、磁光盘、PROM(EPROM、EEPROM、闪存EPROM)、DRAM、SRAM、SDRAM或任何其它磁介质、紧凑型盘(例如,CD-ROM)或任何其它光学介质、穿孔卡、纸带或具有孔模式的其它物理介质。
本公开包括存储在计算机可读介质中的任何一个上或其组合上的软件,该软件用于控制计算机系统501、用于驱动用于实现本发明的一个或多个设备、以及用于使得计算机系统501能够与人类用户交互。这样的软件可以包括但不限于设备驱动程序、操作系统和应用软件。这样的计算机可读介质还包括本公开的用于执行在实现本发明的任何部分中执行的处理的全部或部分(如果处理是分布式的)的计算机程序产品。
本实施例的计算机代码设备可以是任何可解释或可执行的代码机制,包括但不限于脚本、可解释程序、动态链接库(DLL)、Java类和完整的可执行程序。此外,为了获得更好的性能、可靠性和/或成本本实施例的处理的部分可以是分布式的。
本文所使用的术语“计算机可读介质”是指参与到向处理器503提供指令用于执行中的任何非瞬态介质。计算机可读介质可以采取许多形式,包括但不限于,非易失性介质或易失性介质。非易失性介质包括例如光盘、磁盘和磁光盘,诸如硬盘507或可移动介质驱动器508。易失性介质包括动态存储器,诸如主存储器504。相反,传输介质包括同轴电缆、铜线和光纤,包括构成总线502的电线。传输介质也可以采取声波或光波(诸如,在无线电波和红外数据通信期间所生成的那些波)的形式。
在将一条或多条指令的一个或多个序列携带出到处理器503用于执行中可以涉及各种形式的计算机可读介质。例如,最初可以在远程计算机的磁盘上携带指令。远程计算机可以将用于实现本公开的全部或部分的指令加载到动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统501本地的调制解调器可以接收电话线上的数据并将数据放置在总线502上。总线502将数据携带到主存储器504,处理器503从该主存储器504取回并执行指令。由主存储器504接收到的指令可以可选地在由处理器503执行之前或之后存储在存储设备507或508上。
计算机系统501还包括耦合到总线502的通信接口513。通信接口513提供耦合到网络链路514的双向数据通信,该网络链路514连接到例如局域网(LAN)515或者连接到另一个通信网络516,诸如互联网。例如,通信接口513可以是附连到任何分组交换LAN的网络接口卡。作为另一个示例,通信接口513可以是综合业务数字网(ISDN)卡。也可以实现无线链路。在任何这样的实现中,通信接口513发送和接收携带表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。
网络链路514通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路514可以通过本地网络515(例如,LAN)或通过由服务提供商操作的装备来向另一个计算机提供连接,该服务提供商通过通信网络516提供通信服务。本地网络514和通信网络516使用例如携带数字数据流的电信号、电磁信号或光信号以及相关联的物理层(例如,CAT 5电缆、同轴电缆、光纤等)。可以在基带信号或基于载波的信号中实现通过各种网络的信号和在网络链路514上并且通过通信接口513的信号,该信号携带去往和来自计算机系统501的数字数据。
基带信号运送作为描述数字数据比特流的未调制电脉冲的数字数据,其中术语“比特”要被广义地解释为意味着符号,其中每一个符号运送至少一个或多个信息比特。数字数据还可以用于调制载波,诸如在传导介质上传播或者通过传播介质作为电磁波传输的幅度、相位和/或频移键控信号。因此,可以通过“有线”通信信道作为未调制的基带数据发送数字数据和/或通过调制载波在与基带不同的预定频带内发送数字数据。计算机系统501可以通过(一个或多个)网络515和516、网络链路514和通信接口513传输和接收包括程序代码的数据。此外,网络链路514可以通过LAN 515向移动设备517(诸如,个人数字助理(PDA)、膝上型计算机或蜂窝电话)提供连接。
根据一种实施例,描述了用于随机化指令以增加计算机安全性的方法和装置。过程包括以下步骤:在包括由外部处理系统(OPS)和内部处理系统(IPS)组成的虚拟机(VM)的处理系统的IPS中加密指令、将加密的指令传输到外部处理系统、在OPS处解密加密的指令使得解密的指令在IPS的带外并且不能被IPS访问、经由虚拟机中的存根例程执行解密的代码、使用指定为用于IPS的简单双级转换器的Van Wijngaarden语法将解密的指令转换成OPS指令集、以及将转换后的指令传输到IPS。
虽然已经结合作为示例提出的本公开的具体实施例描述了本公开的各方面,但是可以对示例做出替代、修改和变化。此外,应该注意的是,如在说明书和所附权利要求中所使用的,除非上下文另有明确指示,否则单数形式“一”,“一个”和“该”也包括复数的指示物。
Claims (33)
1.一种用于随机化指令以增加计算机安全性的方法,所述方法包括:
在运行在处理电路上的内部处理系统IPS中加密指令,所述处理电路包括运行在其上的外部处理系统OPS,所述IPS对存储器的访问被限制到所述存储器的第一部分,并且所述OPS使用所述存储器的至少第二部分,所述第二部分在所述IPS的带外并且不能被所述IPS访问;
将加密的指令从所述IPS传输到所述OPS;
由所述OPS解密接收到的加密的指令,解密的指令在所述IPS的带外并且不能被所述IPS访问;
使用双级语法将所述解密的指令转换成OPS指令集,所述双级语法混淆所述解密的指令并且降低OPS指令的指令集的可预测性;以及
经由虚拟机VM中的存根例程执行所述OPS指令集,所述VM不是所述IPS,其中
执行所述OPS指令集的所述VM访问存储在所述存储器的第一部分中的数据,不访问所述存储器的第二部分中的数据并且实现与所述IPS执行所述IPS中的指令将实现的结果相同的结果。
2.如权利要求1所述的方法,其中所述双级语法是Van Wijngaarden语法。
3.如权利要求2所述的方法,还包括:
基于所述Van Wijngaarden语法为所述VM随机生成存储器寄存器和指针。
4.如权利要求1所述的方法,还包括:
由所述OPS基于对称加密算法创建语义词典加密。
5.如权利要求1所述的方法,其中所述存根例程被包括在所述OPS中,并且由所述IPS执行的加密是非对称加密。
6.如权利要求5所述的方法,其中所述非对称加密是RSA加密和椭圆曲线密码术ECC加密中的一个。
7.如权利要求4所述的方法,其中所述对称加密算法是RC4、RC5、SHA-1和MD5算法中的一个。
8.如权利要求1所述的方法,还包括:
由所述OPS将执行的指令传输到另一个虚拟机,所述另一个虚拟机在虚拟机的层次结构中是所述VM的直接后继者。
9.如权利要求8所述的方法,其中向所述虚拟机的层次结构中的每一个虚拟机提供已经使用唯一的双级语法转换的所述解密的指令的一部分。
10.如权利要求8所述的方法,其中包括在所述虚拟机的层次结构中的虚拟机的总数量是在应用执行期间随机选择的。
11.如权利要求10所述的方法,还包括:
生成要包括在所述虚拟机的层次结构中的随机数量的附加虚拟机,所述附加虚拟机是基于均匀随机分布生成的。
12.一种具有存储在其上的程序的非瞬态计算机可读介质,当所述程序被计算机执行时,使得所述计算机执行用于随机化指令以增加计算机安全性的方法,所述方法包括:
在仅访问存储器的第一部分的内部处理系统IPS中加密指令;
将加密的指令从所述IPS传输到外部处理系统OPS,所述OPS使用所述存储器的至少第二部分,所述第二部分在所述IPS的带外并且不能被所述IPS访问;
由所述OPS解密接收到的加密的指令,解密的指令在所述IPS的带外并且不能被所述IPS访问;
使用双级语法将所述解密的指令转换成OPS指令集,所述双级语法混淆所述解密的指令并且降低OPS指令的指令集的可预测性;以及
经由虚拟机VM中的存根例程执行所述OPS指令集,所述VM不是所述IPS,其中
执行所述OPS指令集的所述VM访问存储在所述存储器的第一部分中的数据,不访问所述存储器的第二部分中的数据并且实现与所述IPS执行所述IPS中的指令将实现的结果相同的结果。
13.如权利要求12所述的非瞬态计算机可读介质,其中所述双级语法是VanWijngaarden语法。
14.如权利要求13所述的非瞬态计算机可读介质,其中所述方法还包括:
基于所述Van Wijngaarden语法为所述VM随机生成存储器寄存器和指针。
15.如权利要求12所述的非瞬态计算机可读介质,其中所述方法还包括:
由所述OPS基于对称加密算法创建语义词典加密。
16.如权利要求12所述的非瞬态计算机可读介质,其中所述存根例程被包括在所述OPS中,并且由所述IPS执行的加密是非对称加密。
17.如权利要求16所述的非瞬态计算机可读介质,其中所述非对称加密是RSA加密和椭圆曲线密码术ECC加密中的一个。
18.如权利要求15所述的非瞬态计算机可读介质,其中所述对称加密算法是RC4、RC5、SHA-1和MD5算法中的一个。
19.如权利要求12所述的非瞬态计算机可读介质,其中所述方法还包括:
由所述OPS将执行的指令传输到另一个虚拟机,所述另一个虚拟机在虚拟机的层次结构中是所述VM的直接后继者。
20.如权利要求19所述的非瞬态计算机可读介质,其中向所述虚拟机的层次结构中的每一个虚拟机提供已经使用唯一的双级语法转换的所述解密的指令的一部分。
21.如权利要求15所述的非瞬态计算机可读介质,其中包括在所述虚拟机的层次结构中的虚拟机的总数量是在应用执行期间随机选择的。
22.如权利要求21所述的非瞬态计算机可读介质,其中所述方法还包括:
生成要包括在所述虚拟机的层次结构中的随机数量的附加虚拟机,所述附加虚拟机是基于均匀随机分布生成的。
23.一种用于随机化指令以增加计算机安全性的装置,所述装置包括:
存储器,所述存储器包括:
内部处理系统IPS能够访问的第一部分,以及
外部处理系统OPS使用的、在所述IPS的带外并且不能被所述IPS访问的第二部分;以及
运行所述IPS和所述OPS的电路系统,所述电路系统被配置为:
在所述IPS中加密指令;
将加密的指令从所述IPS传输到所述OPS;
由所述OPS解密接收到的加密的指令,解密的指令在所述IPS的带外并且不能被所述IPS访问;
使用上下文双级语法将所述解密的指令转换成OPS指令集,所述上下文双级语法混淆所述解密的指令并且降低OPS指令的指令集的可预测性;以及
经由虚拟机VM中的存根例程执行所述OPS指令集,所述VM不是所述IPS,其中
执行所述OPS指令集的所述VM访问存储在所述存储器的第一部分中的数据,不访问所述存储器的第二部分中的数据并且实现与所述IPS执行所述IPS中的指令将实现的结果相同的结果。
24.如权利要求23所述的装置,其中所述双级语法是Van Wijngaarden语法。
25.如权利要求24所述的装置,其中所述电路系统还被配置成基于所述VanWijngaarden语法为所述VM随机生成存储器寄存器和指针。
26.如权利要求23所述的装置,其中所述电路系统还被配置成由所述OPS基于对称加密算法创建语义词典加密。
27.如权利要求23所述的装置,其中所述存根例程被包括在所述OPS中,并且由所述IPS执行的加密是非对称加密。
28.如权利要求27所述的装置,其中所述非对称加密是RSA加密和椭圆曲线密码术ECC加密中的一个。
29.如权利要求26所述的装置,其中所述对称加密算法是RC4、RC5、SHA-1和MD5算法中的一个。
30.如权利要求23所述的装置,其中所述电路系统还被配置成由所述OPS将执行的指令传输到另一个虚拟机,所述另一个虚拟机在虚拟机的层次结构中是所述VM的直接后继者。
31.如权利要求30所述的装置,其中向所述虚拟机的层次结构中的每一个虚拟机提供已经使用唯一的双级语法转换的所述解密的指令的一部分。
32.如权利要求26所述的装置,其中包括在所述虚拟机的层次结构中的虚拟机的总数量是在应用执行期间随机选择的。
33.如权利要求32所述的装置,其中所述电路系统还被配置成:
生成要包括在所述虚拟机的层次结构中的随机数量的附加虚拟机,所述附加虚拟机是基于均匀随机分布生成的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462092570P | 2014-12-16 | 2014-12-16 | |
US62/092,570 | 2014-12-16 | ||
PCT/US2015/066080 WO2016100506A1 (en) | 2014-12-16 | 2015-12-16 | Method and apparatus for randomizing computer instruction sets, memory registers and pointers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107408072A CN107408072A (zh) | 2017-11-28 |
CN107408072B true CN107408072B (zh) | 2021-07-09 |
Family
ID=56111428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580068644.7A Active CN107408072B (zh) | 2014-12-16 | 2015-12-16 | 用于随机化指令的方法、介质和装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9928102B2 (zh) |
EP (1) | EP3234782A4 (zh) |
JP (1) | JP6788160B2 (zh) |
KR (1) | KR102490331B1 (zh) |
CN (1) | CN107408072B (zh) |
AU (1) | AU2015364751A1 (zh) |
CA (1) | CA2970195A1 (zh) |
WO (1) | WO2016100506A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2015360437A1 (en) * | 2014-12-10 | 2017-06-29 | Kyndi, Inc. | Technical and semantic signal processing in large, unstructured data fields |
US10110566B2 (en) * | 2015-07-21 | 2018-10-23 | Baffle, Inc. | Systems and processes for executing private programs on untrusted computers |
US9767318B1 (en) * | 2015-08-28 | 2017-09-19 | Frank Dropps | Secure controller systems and associated methods thereof |
US11860996B1 (en) * | 2018-04-06 | 2024-01-02 | Apple Inc. | Security concepts for web frameworks |
CN109145654A (zh) * | 2018-08-15 | 2019-01-04 | 阿里巴巴集团控股有限公司 | 防止破解算法模型的芯片及业务处理方法 |
CN109711119A (zh) * | 2018-12-29 | 2019-05-03 | 360企业安全技术(珠海)有限公司 | 加密代码的运行方法及装置、存储介质、终端 |
CN110430209B (zh) * | 2019-08-13 | 2021-12-14 | 中科天御(苏州)科技有限公司 | 一种基于动态多样化的工控系统安全防御方法及装置 |
CN110750304B (zh) * | 2019-09-30 | 2022-04-12 | 百富计算机技术(深圳)有限公司 | 提升任务切换效率的方法及终端设备 |
JP7079502B2 (ja) * | 2019-11-14 | 2022-06-02 | 株式会社アクセル | 推論システム |
US12099997B1 (en) | 2020-01-31 | 2024-09-24 | Steven Mark Hoffberg | Tokenized fungible liabilities |
WO2022044021A1 (en) * | 2020-08-31 | 2022-03-03 | Seraphic Algorithms Ltd. | Exploit prevention based on generation of random chaotic execution context |
CN112527457A (zh) * | 2020-12-11 | 2021-03-19 | 成都云铀子网络科技有限公司 | 一种通用Unicorn模拟指令执行的虚拟机实现方法 |
US11803332B2 (en) * | 2021-03-29 | 2023-10-31 | Micron Technology, Inc. | Sideband communication management |
CN113673002B (zh) * | 2021-08-09 | 2023-05-16 | 中国科学院软件研究所 | 一种基于指针加密机制和risc-v协处理器的内存溢出防御方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6516436B1 (en) * | 1999-03-04 | 2003-02-04 | Lucent Technologies Inc. | Error control coding for transmission equipment protection |
US7003501B2 (en) * | 2000-02-11 | 2006-02-21 | Maurice Ostroff | Method for preventing fraudulent use of credit cards and credit card information, and for preventing unauthorized access to restricted physical and virtual sites |
JP2002132364A (ja) * | 2000-10-19 | 2002-05-10 | Yutaka Iizuka | プログラムを内部解析から保護する方法、コンピュータ読み取り可能な記録媒体及びプログラムの配布方法 |
US20050213761A1 (en) * | 2002-12-02 | 2005-09-29 | Walmsley Simon R | Storing number and a result of a function on an integrated circuit |
US20060294238A1 (en) | 2002-12-16 | 2006-12-28 | Naik Vijay K | Policy-based hierarchical management of shared resources in a grid environment |
US7353499B2 (en) * | 2003-09-25 | 2008-04-01 | Sun Microsystems, Inc. | Multiple instruction dispatch tables for application program obfuscation |
US7516331B2 (en) * | 2003-11-26 | 2009-04-07 | International Business Machines Corporation | Tamper-resistant trusted java virtual machine and method of using the same |
US20070083770A1 (en) * | 2005-09-17 | 2007-04-12 | Technology Group Northwest Inc. | System and method for foiling code-injection attacks in a computing device |
US7594104B2 (en) * | 2006-06-09 | 2009-09-22 | International Business Machines Corporation | System and method for masking a hardware boot sequence |
EP2240857A4 (en) * | 2007-12-21 | 2013-12-25 | Univ Virginia Patent Found | SYSTEM, METHOD AND COMPUTER PROGRAM FOR PROTECTING SOFTWARE THROUGH ANTI-FALSIFICATION AND OBSCURING TRANSFORMATIONS |
US9002014B2 (en) * | 2008-05-24 | 2015-04-07 | Via Technologies, Inc. | On-die cryptographic apparatus in a secure microprocessor |
JP5775738B2 (ja) * | 2011-04-28 | 2015-09-09 | 富士通株式会社 | 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム |
US9032526B2 (en) * | 2011-05-12 | 2015-05-12 | Microsoft Technology Licensing, Llc | Emulating mixed-code programs using a virtual machine instance |
JP5719244B2 (ja) * | 2011-06-29 | 2015-05-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 安全に管理された仮想マシンの実行環境を構築する方法、プログラムおよびコンピュータ装置 |
EP2972978A4 (en) * | 2013-03-15 | 2016-11-09 | Locus Analytics Llc | SYNTAXIC LABELING IN A DOMAIN-SPECIFIC CONTEXT |
US9280490B2 (en) * | 2013-04-17 | 2016-03-08 | Laurence H. Cooke | Secure computing |
CN104219208B (zh) * | 2013-06-03 | 2018-11-13 | 华为技术有限公司 | 一种数据输入的方法、装置 |
-
2015
- 2015-12-16 CN CN201580068644.7A patent/CN107408072B/zh active Active
- 2015-12-16 CA CA2970195A patent/CA2970195A1/en not_active Abandoned
- 2015-12-16 AU AU2015364751A patent/AU2015364751A1/en not_active Abandoned
- 2015-12-16 WO PCT/US2015/066080 patent/WO2016100506A1/en active Application Filing
- 2015-12-16 EP EP15870979.0A patent/EP3234782A4/en not_active Withdrawn
- 2015-12-16 US US14/971,647 patent/US9928102B2/en not_active Expired - Fee Related
- 2015-12-16 KR KR1020177016354A patent/KR102490331B1/ko active IP Right Grant
- 2015-12-16 JP JP2017532173A patent/JP6788160B2/ja active Active
Non-Patent Citations (1)
Title |
---|
Van Wijngaarden grammars and metamorphism;Gueguen Geoffroy;《2011 Sixth International Conference on Availability, Reliability and Security,IEEE》;20110831;正文第466-467、470-471页 * |
Also Published As
Publication number | Publication date |
---|---|
CA2970195A1 (en) | 2016-06-23 |
KR102490331B1 (ko) | 2023-01-18 |
WO2016100506A1 (en) | 2016-06-23 |
US9928102B2 (en) | 2018-03-27 |
JP2018500679A (ja) | 2018-01-11 |
US20160171212A1 (en) | 2016-06-16 |
EP3234782A4 (en) | 2018-10-17 |
KR20170101912A (ko) | 2017-09-06 |
EP3234782A1 (en) | 2017-10-25 |
CN107408072A (zh) | 2017-11-28 |
JP6788160B2 (ja) | 2020-11-25 |
AU2015364751A1 (en) | 2017-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107408072B (zh) | 用于随机化指令的方法、介质和装置 | |
Hunt et al. | Ryoan: A distributed sandbox for untrusted computation on secret data | |
EP3201822B1 (en) | End-to-end security for hardware running verified software | |
CN107346401B (zh) | 用于安全地执行程序的信息保障系统 | |
Xu et al. | Layered obfuscation: a taxonomy of software obfuscation techniques for layered security | |
US7970133B2 (en) | System and method for secure and flexible key schedule generation | |
CN105389513A (zh) | 一种虚拟可信平台模块vTPM的可信执行方法和装置 | |
Tople et al. | On the trade-offs in oblivious execution techniques | |
Choi et al. | A hybrid approach to secure function evaluation using SGX | |
Potteiger et al. | Integrated moving target defense and control reconfiguration for securing cyber-physical systems | |
Strenzke | An analysis of OpenSSL’s random number generator | |
Wu et al. | Exploring dynamic task loading in SGX-based distributed computing | |
Alam et al. | Making your program oblivious: a comparative study for side-channel-safe confidential computing | |
Bugiel et al. | Implementing an application-specific credential platform using late-launched mobile trusted module | |
US11361070B1 (en) | Protecting devices from remote code execution attacks | |
JP2023065323A (ja) | コンピュータに実装された方法、システム及びコンピュータプログラム | |
Lee et al. | Ensuring secure application execution and platform-specific execution in embedded devices | |
Teschke | Hardening Applications with Intel SGX | |
Cheng et al. | Distributed shielded execution for transmissible cyber threats analysis | |
Kang et al. | Practical Deep Neural Network Protection for Unmodified Applications in Intel Software Guard Extension Environments | |
Tan et al. | Formal modeling and verification of cloudproxy | |
Ivanov et al. | {SAGE}: Software-based Attestation for {GPU} Execution | |
Zhang et al. | mShield: Protecting In-process Sensitive Data Against Vulnerable Third-Party Libraries | |
WO2023031678A1 (en) | Exploit prevention based on generation of random chaotic execution context | |
Chen et al. | Harden Tamper-Proofing to Combat MATE Attack |
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 |