首页 / 专利库 / 电脑零配件 / 计算机系统 / 用于安全地执行程序的信息保障系统

用于安全地执行程序的信息保障系统

阅读:875发布:2021-05-18

专利汇可以提供用于安全地执行程序的信息保障系统专利检索,专利查询,专利分析的服务。并且本公开涉及用于安全地执行程序的信息保障系统。一种增强型信息保障系统可以包括改进的计算机(12),该改进的计算机包括被配置为扩展可利用机器指令组的中央处理单元(CPU)(16)仿真器。CPU仿真器可以被配置为仿真来自安全操作码的非本地组的机器语言指令。CPU仿真器可以保证随机存取 存储器 (RAM)(14)中的指令和数据(36)在RAM中时始终保持加密,例如,当根据需要进行解密时通过将指令(38)和数据(36)存储在CPU寄存器(18)中。,下面是用于安全地执行程序的信息保障系统专利的具体信息内容。

1.一种用于安全地执行软件指令的计算机系统(12),所述计算机系统(12)包括:
第一处理器(204),具有多个硬件寄存器(18);
存储器(206);以及
仿真器程序(38),包括存储在所述存储器(206)中的多个指令,能够通过所述第一处理器(204)执行所述指令以:
仿真第二处理器(204);
仿真在所述第二处理器(204)上执行多个本机机器指令,所述本机机器指令对于所述第二处理器(204)是本地的;并且
仿真在所述第二处理器(204)上执行多个安全机器指令(38),所述安全机器指令(38)对于所述第二处理器(204)是非本地的并且包括一个或多个操作码,所述操作码被配置为确保与所述操作码相关联的操作数数据(36)的未加密值仅存储在所述第一处理器(204)的所述硬件寄存器(18)中的一个或多个中。
2.根据权利要求1所述的计算机系统(12),其中,仿真的所述第二处理器(204)与所述第一处理器(204)是不同的类型。
3.根据权利要求2所述的计算机系统(12),其中,仿真的所述第二处理器(204)具有比所述第一处理器(204)少的寄存器(18)。
4.根据权利要求1所述的计算机系统(12),还包括与所述第一处理器(204)通信的随机存取存储器(RAM)(14)以及存储在所述随机存取存储器(14)中的软件程序(34),所述软件程序(34)被编译为在仿真的所述第二处理器204上运行并且包含一个或多个所述安全机器指令(38)。
5.根据权利要求1所述的计算机系统(12),其中,能够通过所述第一处理器(204)进一步执行所述仿真器程序(38)的指令以确保所述安全机器指令(38)的所述操作码的解密版本仅存储在所述第一处理器(204)的所述硬件寄存器(18)中的一个或多个中。
6.一种在计算机系统(12)中实现的方法(100),所述方法(100)包括:
从存储器(206)检索加密的机器指令;
解密所检索的机器指令并且将所解密的指令存储在第一处理器(204)的第一硬件寄存器(18)中;并且
使用仿真的第二处理器(204)仿真所解密的指令的执行;
其中,所解密的指令是多个安全指令(38)中相对于所仿真的第二处理器(204)非本地的一个。
7.根据权利要求6所述的方法(100),其中,仿真所解密的指令的执行包括改变与所解密的指令相关联的操作数的值。
8.根据权利要求7所述的方法(100),其中,改变所述操作数的值包括解密所述操作数以产生解密值,并且将所述解密值存储在所述第一处理器(204)的第二硬件寄存器(18)中。
9.根据权利要求8所述的方法(100),其中,存储所述解密值包括存储除了所述解密值之外的随机信息。
10.根据权利要求6所述的方法(100),其中,解密所检索的机器指令包括使用存储在所述第一处理器(204)的第三硬件寄存器(18)中的加密密钥。

说明书全文

用于安全地执行程序的信息保障系统

技术领域

[0001] 本公开内容涉及用于在代码执行期间保持数据和程序安全性的装置和方法。

背景技术

[0002] 在现代计算机程序中,无论是在标准桌面或者关键的实时嵌入式系统中,保护关键数据和技术在当今存在大量威胁的环境中是至关重要的。当潜在攻击者具有大量预算、直接访问目标系统和充足的时间时,这个任务变得越来越困难。
[0003] 执行关键功能(例如,核电厂、手术机器人、自主武器系统等的控制)的计算机程序通常通过与可能提取关键数据或损害其行为和性能的其他计算机和计算机程序相隔离来加以保护。实际上,计算机程序的“危险程度(criticality)”范围广泛,从危及可能导致用户不便的情况,到危及可能导致关键基础设施和服务的临时损失的情况,到危及可能导致人类生命的损失的情况。因此,存在许多种情况,其中计算机系统的完全隔离是不合理的或不切实际的,但是仍然非常需要对程序和数据的附加保护。例如,用户可能需要在常规的个人电脑上运行执行关键功能(证明增加的安全和保护)的程序。
[0004] 安全设计背后的目标是使获得受保护信息的成本大于受保护信息的价值。具体问题是在代码操作和数据正在使用时保护计算机代码和数据,所谓的“使用中的数据”。相关问题是在电源关闭时保护代码和数据,所谓的“静止数据”、或者在传输时保护代码和数据,所谓的“动态数据”。
[0005] 这些问题的常见的基于硬件的方法是基于某种形式的安全密码处理器(secure cryptoprocessor)。安全密码处理器是嵌入在防篡改封装中的专用处理器,用于执行密码操作。密码处理器将仅在安全环境中输出解密数据或程序指令。然而,安全密码处理器通常用于保护相对少量的信息,并且通常在它们可以保护的信息的范围上受到限制。将安全密码处理器缩放到更大的应用将是成本过高的,需要大量的专用资源。此外,安全密码处理器被固定在中,从而呈现维护和更新挑战。对系统的任何成功攻击将需要重新开发和修改大量潜在的昂贵硬件。
[0006] 存在对不显著牺牲性能的更低的成本、可更新解决方案的需求。另外,这样的解决方案应当适用于常规计算系统,而不需要昂贵和不切实际的定制硬件。发明内容
[0007] 根据本教导的用于安全程序执行的系统解决了上述技术问题。本文中所描述的增强型信息保障系统更改计算机的操作以包括不可另外用于计算机的处理器的安全机器语言指令。在一些实例中,这包括使用增强型安全中央处理单元(CPU)仿真器。本解决方案可以几乎完全基于现有的现成处理器,这可以便于跟上当前技术。根据本公开内容的方面的系统可以在随机存取存储器(RAM)中为计算机程序和相关联的数据提供保护。
[0008] 在一些实施方式中,用于安全执行软件指令的计算机系统可包括:第一处理器,具有多个硬件寄存器;存储器;以及仿真器程序,包括存储在存储器中的多个指令,可通过第一处理器执行指令以:仿真第二处理器,仿真在第二处理器上执行多个本机机器指令,本机机器指令对于第二处理器是本地的,并且仿真在第二处理器上执行多个安全的机器指令,安全机器指令对于第二处理器是非本地的,并且包括被配置为确保与操作码相关联的操作数数据的未加密值仅存储在第一处理器的硬件寄存器的一个或多个中的一个或多个操作码。
[0009] 在一些实施方式中,计算机系统中实现的方法可包括从存储器中检索加密机器指令;解密检索的机器指令并将解密的指令存储在第一处理器的第一硬件寄存器中;并且使用仿真的第二处理器仿真解密指令的执行;其中,解密指令是多个安全指令中相对于仿真的第二处理器非本地的一个。
[0010] 在一些实施方式中,用于安全执行软件指令的计算机系统可包括:第一处理器,具有多个硬件寄存器;存储器;以及仿真器程序,包括存储在存储器中的多个指令,第一处理器可执行指令以:从存储器中检索加密机器指令;解密检索的机器指令并将解密的指令存储在第一处理器的硬件寄存器的一个或多个中;并且使用仿真的第二处理器仿真解密指令的执行;其中,解密指令是多个安全指令中相对于仿真的第二处理器非本地的一个。
[0011] 在本公开内容的各种实施方式中可以独立实现各种特征、功能以及优点或者可以结合一些其他实施方式实现各种特征、功能以及优点,并且参考下列描述和附图可以理解本公开内容的进一步细节。

附图说明

[0012] 图1是示出根据本公开内容的方面的具有增强型信息保障系统的示例性计算机的元件的示意性框图
[0013] 图2是描绘根据本公开内容的方面的用于在仿真处理器上执行安全程序的示例性方法中的步骤的流程图
[0014] 图3是示例性数据处理系统的各个组件的示意图。
[0015] 图4是示例性计算机网络系统的示意性图示。

具体实施方式

[0016] 包含安全程序执行的信息保障(IA)系统的各个方面和实例以及相关方法在下面加以描述并且在相关附图中示出。除非另有规定,否则根据本公开内容的方面的信息保障系统和/或其各种组件可包含但不要求包含本文中所描述的、示出的和/或包含的结构、组件、功能和/或变形中的至少一种。此外,除非明确排除,否则结合本教导描述、示出和/或并入本文的处理步骤、结构、组件、功能和/或变化可以包含在其他类似的设备和方法中,包含在所公开的实施方式之间可互换。各个实例的以下描述本质上仅是示例性的并且决不旨在限制本公开内容、其应用或用途。此外,由如下所述的实例和实施方式提供的优点实质上为示例性并且并非所有的实例和实施方式皆提供相同的优点或者相同程度的优点。
[0017] 根据本公开内容的方面的信息保障系统(其在本文中可被称为增强型IA系统)为在常规物理计算机和操作系统上运行的计算机程序和数据提供附加保护,而不隔离计算机和计算机程序。
[0018] 现代计算机处理器的机器指令和寄存器被配置为通过各种手段保护计算机程序和数据,手段包括多级安全性、对寻址和访问物理和分页存储器的限制、用于数据的加密和解密的特殊指令以及防止一个程序访问或损害另一个程序的代码和数据的其他特征。然而,这样的特征不能防止访问或修改随机存取存储器(RAM)的内容和写入硬盘的RAM页面的内容的复杂的电子方法。
[0019] 已知的虚拟机(VM)产品采用现代计算机处理器的机器指令和寄存器来保护计算机程序和数据。当执行(即仿真)那些指令时,这样的VM产品可以调动特殊流程来实现与并发和多级虚拟机相关的其他保护。
[0020] 然而,根据本教导的增强型IA系统提供了对于标准处理器或现有VM产品不可用的保护。一般而言,增强型IA系统通过扩展可用的机器语言指令集来包括被配置为提供安全性的附加指令来有效地更改计算机的操作。在一些实例中,这包括使用增强型安全中央处理单元(CPU)仿真器。增强型IA系统专专注于保护在RAM中或作为写入硬盘的RAM页面存储的计算机程序和数据。
[0021] 保护程序数据
[0022] 在一些实例中,增强型IA系统通过施加特定限制保护程序数据。具体地,存储在RAM中的所有数据被加密,所有未加密的数据仅存储在物理寄存器中,并且保护所有关键计算免受处理器级中断的影响,该处理器级中断可以使得其他程序能够检查寄存器中的任何未加密数据。
[0023] 通过增强型IA系统的两个方面促进这种保护。首先,程序的源代码可以被编译或以其它方式更改以包括在现有计算机处理器或现有VM产品中未找到的特定机器指令。这些机器指令可经配置以执行各种任务,例如:安全地创建和管理加密密钥,在物理寄存器中未加密,并在RAM中加密;用随机位初始化专用RAM;在安全计算开始时禁用中断,以防止检查存储在物理处理器寄存器中的未加密数据;在安全计算结束时启用中断;在将未加密的寄存器值存储在RAM中时加密数据;当从RAM检索加密数据并将其存储在寄存器中时解密数据;等。
[0024] 第二,所得到的二进制程序可以由被配置为执行常规处理器的机器语言指令以及上述特定机器语言指令的IA虚拟机(例如,仿真器)执行。当IA虚拟机遇到控制存储器分配、虚拟存储器分页、上下文切换等的机器语言指令时,除了上述那些之外,还可以调用其它特殊流程。
[0025] 保护程序代码
[0026] 然而,通过检查和修改程序代码的二进制表示,可能危及使用这些特殊指令的程序。为了提供额外的保护,程序代码的二进制表示可以以加密形式传输和存储,并且在执行期间可以以加密形式保留在RAM中。这与典型的实践相反,其中计算机程序可以以加密形式加密和存储,并且以加密形式加载到RAM中,但是在执行开始之前完全解密。
[0027] 在一些实例中,程序代码(即,机器语言)的二进制表示可以由安全的步骤序列保护。首先,在已知的安全、隔离的计算机上准备和编译程序的源代码。第二,以可以由IA虚拟机(例如,下面描述的增强型安全CPU仿真器)解密和执行的形式对所产生的可执行二进制进行加密。加密的可执行二进制然后可以传送并且存储在常规的计算机上。在常规计算机上,IA虚拟机可以被配置为在RAM中执行程序代码的加密二进制表示。例如,这可以通过从RAM递增地检索加密的机器语言指令及其参数,将机器语言指令及其参数解密到物理寄存器中,然后执行仿真操作来实现。
[0028] 计算机方法、系统及产品的示例性方面
[0029] 增强型IA系统的方面可以体现为计算机方法、计算机系统或计算机程序产品。因此,增强型IA系统的方面可以采取完全硬件实施方式、完全软件实施方式(包括固件、常驻软件、微代码等)、或结合软件和硬件方面的实施方式的形式,所有的这些在本文中总体称为“电路”、“模”、或“系统”。此外,增强型IA系统的方面可以采取体现在具有计算机可读程序代码/指令包含在其上的计算机可读介质(或媒介)里的计算机程序产品的形式。
[0030] 可以利用计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质和/或计算机可读存储介质。计算机可读存储介质可以包括电子、磁性、光学、电磁、红外线和/或半导体系统、装置或设备、或这些的任何合适的组合。计算机可读存储介质的更具体的示例可以包括以下:具有一个或多个线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备、和/或这些存储设备的任何合适的组合和/或类似物。在本公开内容的上下文中,计算机可读存储介质可包括可含有或存储由指令执行系统、装置或设备使用或与指令执行系统、装置或设备有关的程序的任何合适的有形介质。
[0031] 计算机可读信号介质可包括传播的数据信号与嵌入其中的计算机可读程序代码,例如,在基带中或作为载波的一部分。这种传播信号可采取多种形式中的任何一种形式,包括但不限于电磁、光学和/或其任何合适的组合。计算机可读信号介质可包括非计算机可读存储介质并且能够通信、传播或输送由指令执行系统、装置或设备所使用或者与指令执行系统、装置、或设备有关的程序的任何计算机可读介质。
[0032] 包含在计算机可读介质上的程序代码可以使用任何合适的介质传输,包括但不限于无线、有线、光纤电缆、RF和/或类似的东西、和/或这些的任何合适的组合。
[0033] 用于执行增强型IA系统的方面的操作的计算机程序代码可以用一种程序语言或程序语言的任何组合写成,包括对象定位程序语言,如Java、Smalltalk、C++和/或类似的东西,和常规的过程编程语言,如C。可以使用任何合适的语言(包括先前提及的那些语言)以及Objective-C、Swift、C#、HTML5等来开发移动应用。程序代码可完全在用户的计算机上、部分地在用户的计算机上作为独立软件包、部分地在用户的计算机上以及部分地在远程计算机上或完全在远程计算机或服务器上执行。在后面一种情况下,远程计算机可通过包括局域网(LAN)或广域网(WAN)的任何类型的网络与用户的计算机连接,和/或可连接至外部计算机(例如,通过使用互联网服务供应商的互联网)。
[0034] 参考方法、装置、系统和/或计算机程序产品的流程示意图和/或框图在下文中描述增强型IA系统的方面。可以通过计算机程序指令实现流程图和/或框图中的每个框和/或框的组合。可将计算机程序指令提供给通用计算机、专用计算机或其他可编程的数据处理装置的处理器,以制造机器,从而这些指令通过计算机或其他可编程的数据处理设备的处理器执行时,产生用于实现在流程图和/或方框图的一个或多个方框中规定的功能/行为的手段。
[0035] 这些计算机程序指令还可储存在计算机可读介质和/或其他设备内,该介质和/或其他设备可引导计算机或其他可编程的数据处理装置通过一种特定的方式运行,从而储存在计算机可读介质内的指令产生一种制品,该制品包括实现在流程图和/或框图的一个或多个框中规定的功能/行为的指令。
[0036] 计算机程序指令也可加载至计算机、其他可编程数据处理装置、和/或其他设备上,以使得在设备上执行的一系列操作步骤产生计算机实现过程,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图的一个或多个框中规定的功能的处理。
[0037] 附图中的任何流程图和/或框图旨在示出根据本教导的方面的系统、方法以及计算机程序产品的可能的实现的架构、功能和/或操作。鉴于此,每个框可表示代码的模块、区段或部分,其包括用于实现规定的逻辑功能的一个或多个可执行的指令。在一些实现中,在框中标注的功能可以不按照附图中所示的顺序发生。例如,连续示出的两个框实际上可大致同时执行,或者根据所涉及的功能,有时可按照相反的顺序执行这些框。每个框和/或框的组合可以由执行指定功能或动作的基于专用硬件的系统(或专用硬件和计算机指令的组合)来实现。
[0038] 示例性增强型IA系统的概述
[0039] 在一些实例中,可以仅使用由标准主机处理器可执行的CPU本地指令来生成根据本教导实现安全操作的目标代码。在其他实例中,类似的功能可以由使用修改的处理器仿真器扩展可用指令集的增强型IA系统来实现。
[0040] 通常,这样的增强型IA系统10可包括在常规的主计算机(host computer)(还称作数字处理器和/或数据处理系统)上运行的虚拟机。在下面对计算系统的进一步方面进行更详细地描述。参考图1,合适的计算机12的硬件可包括随机存取存储器(RAM)14和与RAM通信的物理中央处理单元(CPU)16。CPU 16可包括具有多个寄存器18和处理器电路20的任何合适的处理单元或核心。例如,可以预留某些寄存器19用于存储加密密钥。计算机12可包括多个CPU和/或多核处理器,这里表示为第二CPU 22。换言之,CPU 22可表示第二处理单元或者处理核心。参见(下面的)标题为“示例性数据处理系统”的部分,用于讨论可包含在计算机12中的附加硬件。
[0041] 系统10可包括在计算机12上运行的管理程序(hypervisor)24,该管理程序被配置为管理一个或多个沙盒虚拟机(sandboxed virtual machine)。这些虚拟机可包括操作系统(OS)26和增强型安全CPU仿真器28。在一些实例中,管理程序24可以是裸机(即,“本地”或者“I型”)管理程序。管理程序24可以与管理程序专用RAM 30通信,该管理程序专用RAM是专门分配给管理程序24的RAM 14的一部分。类似地,管理程序专用RAM30内的仿真器专用RAM 32可以专门分配给仿真器28。在一些实例中,可以不存在管理程序24,在这种情况下,CPU仿真器28可以改为在例如安装在计算机12上的本地操作系统(未示出)上运行。
[0042] 仿真器28可包括被配置为仿真所选择的CPU的执行的任何合适的CPU仿真器。所选择的CPU可以是与CPU 16相同的或者不同的类型。仿真器28可用于运行敏感程序,诸如包括数据36和机器语言指令38的安全程序34。安全程序34可被加载到RAM(例如,RAM 30)中。
[0043] 仿真器可以使用多个仿真寄存器40和仿真处理器电路42来仿真所选择的CPU并执行机器语言指令38。机器语言指令38(也称为机器指令和/或汇编语言指令)可包括指定要执行的操作的操作码。与这些操作码相关联的操作数指的是由指令处理的数据36。数据36可包括未加密的和加密的数据。操作码可包括通常可由仿真CPU执行的本机(例如,标准)操作码,和/或安全操作码。仿真器28可包括一组补充指令44,其在功能上配置仿真器28以处理这样的安全操作码。
[0044] 根据本教导的安全操作码被配置为在安全程序34的执行期间保持数据36的加密。安全操作码可以取自根据本公开内容的方面的在系统下定义的一组安全计算指令。这些安全操作码表示可用于计算机12的机器语言指令的扩展,因为它们不是CPU 16(或者,就此而言,正被仿真的标准CPU)本地的指令集的一部分。
[0045] 通过任何合适的方法使安全操作码包含在仿真器程序中。在一些实例中,安全操作码通过预编译指令添加至程序。在一些实例中,通过修改本地编译器来促进安全操作码。在一些实例中,通过对目标代码的后编译修改来包括安全操作码。在一些实例中,在执行期间动态地包括安全操作码,例如以补充和/或替换非安全的本机码。
[0046] 仿真器28被配置为根据仿真处理器的规范仿真对于仿真CPU是本地的机器语言指令。换言之,在不修改的情况下执行本机操作码。
[0047] 然而,通过仿真器分别处理安全操作码和安全数据。在一些实例中,分配给程序数据36的RAM可以被混淆或部分混淆(例如,随机化),以防止检查和检测数据中的模式。在一些实例中,敏感数据在存储在RAM中时始终加密。在一些实例中,仿真器28被配置为确保仅在硬件寄存器中发现未加密的数据,并且仅在预留的硬件寄存器中发现加密密钥。在一些实例中,当执行安全操作码(例如,在所谓的程序的“关键部分”内)时,仿真器使用CPU 16的寄存器18而不是仿真寄存器40。当操作敏感数据时,也可能暂停硬件中断。
[0048] 使用本机操作码的示例性方法
[0049] 如上所述,软件程序的代码可以被充分修改(例如,通过编译和/或预处理),仿真器(例如,仿真器28)可能是不必要的。换言之,代码可以修改为可以仅利用主处理器识别的本机操作码由主计算机安全地并且非虚拟地运行。该部分讨论这种代码修改的两种补充方法。
[0050] 第一种方法是使程序利用操纵数据的安全原语函数。第二种方法是使程序在功能级解密和加密,从而允许对数据在何处和何时加密的容易控制。基于安全原语的方法可以提供更高的安全性,而基于解密/加密安全功能调用的方法可以提供更好的性能。这两种方法是互补的,并且方法可以组合以用于附加的安全性。
[0051] 基于安全原语操作的安全代码的创建可以是两种方法中更安全的,因为安全性可追溯到基本操作。基本操作的实例包括加法、减法、乘法、除法、比较、赋值和类型转换。这些原语以汇编语言写入(例如,使用AES-NI操作)以确保信息保持受保护。
[0052] 处理安全原语的一般过程如下:(1)禁止中断;(2)相关变量解密,结果存储在处理器寄存器而不是存储器中;这可包括检查有效消息认证码(MAC);(3)执行基础的原语操作;(4)将原语操作的结果存储在另一个处理器寄存器中;(5)步骤(2)中使用的寄存器被清除;
(6)步骤(3)中发现并存储在寄存器中的结果被加密并存储在主存储器中;(7)在步骤(6)中使用的处理器寄存器被清除;和(8)中断被重新启用。在该过程期间的任何时刻,任何解密的变量决不驻留在存储器中。
[0053] 例如考虑以下,其中,X、Y及B是加密的变量:
[0054] B=X+Y.
[0055] 在这种情况下,如上所述,X、Y及B的值被加密。在该实例中,通过将X和Y解密到内部处理器寄存器,添加两个解密值,然后将结果存储在B的加密版本中来完成加法。在外部,安全存储器中的唯一变化将是存储结果的加密变量B的更新。
[0056] 转向另一种方法,基于修改的函数调用创建安全代码是上述方法的补充。安全函数调用的使用可包括函数的二进制代码的修改,使得函数:(1)禁止调用的抢占;(2)将函数和运行时数据解密为普通可执行代码和变量;(3)检查内置MAC以验证完整性;(4)执行该函数;(5)加密结果;和(6)在将所分配的存储器,包括所使用的任何堆栈标记为空闲之前将其擦除(例如,通过用随机数据重写)。
[0057] 该第二种方法对于许多函数,特别是对于为成千上万个循环迭代的函数可能更快。然而,基于安全函数调用的方法简单地将更多的数据和代码暴露在RAM中。基于安全功能调用的方法保持相当大的安全性,因为至多只有与安全处理器核心一样多的同时安全的进程运行。因此,即使物理地移除和检查RAM,由该快照暴露的可能信息的量也是有限的。最多,与该函数调用相关的数据是暴露的,而不需要任何周围的上下文使其有意义。
[0058] 作为整体深度防护策略的一部分,可以通过使用现有的软件混淆方法来进一步增强该第二方法的安全性,该方法用于在未加密状态下存在的简短窗口期间保护安全函数。有规律的存储分配,即使没有加密,仍然由程序在内部完成。存储分配使用较大的存储块中的随机位置,并且较大的存储块用随机数填充。
[0059] 为了将这种保护作为目标,入侵者必须在初始函数解密出现之后并且在新的加密和清除完成之前读取存储器。即使这将需要确定实际堆栈在何处,并且堆栈可以放置在安全存储器中的任何地方。这种方法具有允许实现者容易地选择加密出现在何处以及因此何处的性能可能受影响的优点。
[0060] 函数的加密可以使用标准链接函数,例如用于全盘加密。在一些实例中,在函数的开始处的字段包含随机数和消息认证码。一旦这些字段被加密,将保护整个函数免受代码本式攻击以及修改。当未主动被调用时,安全函数应保持在加密状态。
[0061] 示例性增强型安全CPU仿真器
[0062] 与以上概要的两种方法相比,提供安全程序执行的简化方法包括使用经修改以处理安全指令的增强型安全CPU仿真器。标准CPU仿真器的实例是在qemu.org可用的QEMU,其是被配置为执行硬件虚拟化的管理程序,通过动态二进制转换仿真CPU。增强型安全CPU仿真器可基于与QEMU类似的管理程序(等等)。
[0063] 根据本教导的系统集中于保持与主存储器的所有交互加密。假设要执行的程序或操作系统已经对进入和离开程序(或操作系统)的数据具有足够的控制。加密对存储器的所有访问的本方法可以用其它加密操作扩展,使得仅增强型安全CPU仿真器可以解密所讨论的程序并将其加载到其加密的存储器中。
[0064] 为了保持与主存储器的交互的加密,增强型安全CPU仿真器系统利用物理CPU的硬件寄存器来临时存储未加密的信息。因此,足够数量的这种寄存器必须专用于此目的,并且不用于其它目的。例如,这可以通过仿真具有比物理上存在于计算机中的CPU更少的寄存器的CPU模型来实现。这将释放仿真CPU中不存在的所有物理CPU寄存器,用于加密和解密操作。换句话说,如果主处理器具有比仿真处理器更多的寄存器,则简化了仿真器的实现。如果针对多核芯片实现,则仿真器可以将一组寄存器分配给正在执行的程序,另一组机器寄存器专门用于增强型安全指令。
[0065] 增强型安全CPU仿真器将向操作系统显示连续存储器的外观。实际物理存储器可能碎片化,但增强型安全CPU仿真器运行的底层操作系统应该向仿真器提供连续存储器的外观。为了加密存储器,必须建立映射。为了建立映射,首先必须确定使用的加密的基本形式。对于该实例,将假设128位作为加密块大小,尽管它不需要局限于128位。较大的块大小往往会以牺牲性能为代价来提高安全性。
[0066] 一旦确定了用于加密的位数,就必须确定用于实际数据的位数,与用于添加的熵或任何可选的内部校验和的位相反。在该实例中,将假设64位,但是一般来说,该数量可以是直到实际加密块大小的任何数量。根据需要,和校验可以由加密散列替换。在这个实例中,当原始程序访问0x100000时,由于消息扩展因子为2,增强型安全CPU仿真器将访问0x200000处的块。仿真器无缝地处理此转换。
[0067] 加密加载和存储
[0068] 作为可以由增强型安全CPU仿真器实现的安全指令的实例,现在将进一步详细讨论通用MOVE操作码。加载或存储信息的通用处理器指令可以写为:
[0069] MOVE<目的地><源>
[0070] 下面的讨论将集中在源或目的地在主存储器中,而不是两者都在主存储器中的情况。如果源和目的地是处理器寄存器,那么将出现正常未加密的操作。如果源和目的地均在主存储器中,那么过程将包括直接复制或加密负载加上加密存储的组合。注意,只有在复制了整个加密块时才可以使用直接复制,并且没有规定引入加密块偏移作为加密过程的部分(例如,通过使其成为校验和计算的部分)。这样的规定可以用于防止一个加密块到另一个的简单拷贝工作。
[0071] 如果源在主存储器中并且目的地是处理器寄存器,则指令将调用子例程,该子例程将执行对主存储器中的源进行解密的本机指令序列,并将结果存储在寄存器中。如果目的地在主存储器中并且源是处理器寄存器,则指令将被将加密结果存储在主存储器中的一个或多个指令所替换。
[0072] 加密存储
[0073] 在加密存储器中存储值并不像加密值并将结果放在存储器中那么简单。相反,一般过程可包括:(1)解密一个或两个加密存储器组块,并将结果存储在CPU寄存器中(如果数据未与加密块对齐,则可能需要两个组块)。(2)可选地,验证解密的存储块通过可能存在的任何内部校验和;例如,在所讨论的实例中,64位用于数据,64位用于随机位和校验和;这可以进一步划分为32位的随机数据和32位的校验和;如果该校验和失败,则执行预定动作;(3)此时,一个或两个加密存储器块应在CPU寄存器中解密;用将要存储的值来更新由那些寄存器表示的未加密存储器的部分;(4)可选地,用新的随机位更新包含随机位的任何区域;这是昂贵的操作,所以可能不是每次都做;(5)重新计算与这些块相关联的校验和;和(6)加密所产生的块并将它们存储回原始位置。
[0074] 加密加载
[0075] 将存储器的一部分解密到处理器寄存器可以如下进行:(1)解密一个或两个加密存储器组块,并将结果存储在CPU寄存器中(如果数据未与加密块对齐,则可能需要两个组块)。(2)可选地,验证解密的存储块通过可能存在的任何内部校验和;(3)在这一点上,一个或两个加密存储器块应当在CPU寄存器中被解密并且硬件CPU寄存器可以加载解密数据的相关部分。
[0076] 加密实例
[0077] 该实例将假设具有64位数据、32位校验和和32位随机数据的128位块大小。例如,明文块可以布置如下:[64位数据][32位随机][32位校验和]。这些选择仅仅为了说明。可以在实际实现中选择不同的值以实现不同的安全和性能目标。
[0078] 1.发出存储位置0x100中存储32位的CPU指令。
[0079] 2.增强型安全CPU仿真器使用的存储器分为128位(即16字节)组块。每个组块包含八个字节的实际数据。
[0080] 3.因为我们存储32位,所以我们知道涉及字节0x100、0x101、0x102、及0x103。这是程序看到的。
[0081] 4.更具体地,我们知道由于消息扩展因子,涉及实际的存储位置0x200、0x202、0x204、及0x206。
[0082] 5.从128位加密,我们知道0x0-0xF是一个块,并且0x10-0x1F是另一个块。
[0083] 6.如果我们将0x200、0x202、0x204、及0x206除以十六(即,块大小),我们得到在交易中涉及的加密块为第32块(第一块称为0)。乘以32返回十六产生0x200用于加密存储器的相关部分的位置。
[0084] 7.这部分十六字节的存储器加载到寄存器并解密。
[0085] 8.程序存储器中的0x100映射到实际存储器中的0x200,这是使用上述考虑的128位块的开始。这32位可以简单地存储在128位寄存器的32个最高有效位中。
[0086] 9.可选地,该寄存器中的随机位字段可以用新的随机位来更新。
[0087] 10.可选地,可以计算基于除了校验和位之外的128位区域中的任何内容的校验和。可选地,该校验和也可以基于块号。在这种情况下,它将是32。这将使简单地移动一块存储器不工作。
[0088] 11.产生的128位寄存器现在被加密,并且结果存储回在位置0x200。这意味着更新了0x200-0x20F。
[0089] 在这个实例中,如果数据改为64位,则可以跳过初始解密,因为没有原始数据被重用。
[0090] 在一些情况下,如果不是用来自硬件随机数生成器的新的位来连续替换随机位,然后重新计算校验和,则可能是有利的周期性的。这可能使逆向工程更困难。
[0091] 虽然不是一个要求,通用程序设计应该试图保持变量与存储器对齐,以避免不必要地将它们划分在不同的加密块中,因为这将导致每次访问的加密操作的量翻倍。
[0092] 设置密钥
[0093] 增强型安全CPU仿真器将使用硬件数生成器创建加密密钥。该密钥一旦存储,就不应该对增强型安全CPU仿真器运行的程序或操作系统可用。在现场系统的一般情况下,除了增强型安全CPU仿真器之外的任何东西都应该被阻止访问存储密钥相关信息的寄存器。
[0094] 为了加密或解密,加密密钥通常需要被扩展成一组子密钥。这可以针对每个加密进行,或者可以预先计算该组密钥。由于密钥和子密钥的敏感属性,实际密钥应该保留在处理器寄存器中。优选地,扩展的子密钥也应该保留在处理器寄存器或存储器的一些其他安全部分中。然而,如果子密钥的这种存储装置是不可能或不切实际的,则在每次操作之后应该清除并重新创建子密钥。此外,可取的是子密钥围绕存储器移动以使得访问困难。确切的实现将取决于目标硬件的细节。
[0095] 微代码更新可以用于专用CPU的内部缓存RAM的一部分以用于安全子密钥存储装置的目的,优选地能够存储对应于多个实际加密密钥的多组子密钥。这种更新还应当防止缓存区域被传送到主存储器。在一些实例中,存储器的加密和解密可以仅在将数据加载到缓存时或当需要将数据从缓存刷新回到主存储器时发生。
[0096] 示例性仿真算法
[0097] 本部分描述了用于使用增强型IA系统安全地执行敏感软件程序的示例性方法的步骤;参见图2。系统10的方面可以用于下面描述的方法步骤中。在适当的情况下,可以参考可以用于执行每个步骤的先前描述的组件和系统。这些参考是用于说明,并且不旨在限制执行该方法的任何特定步骤的可能方式。
[0098] 图2是示出了在示例性方法中执行的操作的流程图,并且可以不必陈述方法的全部处理或者所有步骤。图2描述了总体上以100表示的方法的多个步骤,其可以结合根据本公开内容的方面的增强型IA系统来执行。尽管在下面以及图2中描述了方法100的各个步骤,然而,没必要执行所有的步骤,并且在一些情况下,可以不同于所示顺序的顺序执行各个步骤。
[0099] 在步骤102,仿真器通过将安全程序的指令加载到RAM中开始。例如,仿真器28可以将安全程序34加载到RAM30中。指令在RAM中时可以保持加密。
[0100] 在步骤104,仿真器初始化仿真寄存器。例如,寄存器40可以归零。
[0101] 在步骤106,仿真器初始化当前指令地址以指向安全程序的开始。
[0102] 在步骤108,仿真器检查以查看仿真是否应该停止,并且如果是这样,则结束程序仿真。
[0103] 在步骤110,如果仿真器没有停止,则检索当前指令指针处的下一个操作码。如果整个程序是加密的并且安全的,或者如果当前指令指针在所谓的危急部分(critical section)内,则检索的指令可以被解密成CPU的硬件寄存器。例如,当前指令可以被解密,并且所产生的解密指令可以被加载到CPU16的保留寄存器18之一中。
[0104] 在步骤112,如果检索到的操作码是“停止(STOP)”指令,则指示停止仿真器。
[0105] 在步骤114,如果检索的操作码改为本机操作码,即在仿真CPU的标准指令组内的操作码,则本机操作码由仿真CPU仿真。
[0106] 在步骤116,如果检索到的操作码不是“停止”指令或本机操作码,则该指令是安全操作码,并且仿真器将仿真安全操作码,例如,仿佛它对于被仿真的CPU是本地的。以下部分描述了此仿真的几个实例。通常,仿真器可包括在仿真来自于已知的一组安全操作码的指令时要执行的一组补充仿真指令,例如指令44。
[0107] 在步骤118,当前指令地址增加,并且控制返回到步骤108。
[0108] 示例性安全操作码实施方式
[0109] 该部分描述用于安全操作码的仿真执行的几个示例性方法的步骤。返回参考方法100,以下方法是在步骤116中增强型安全CPU仿真器如何仿真安全操作码的执行的示例。
[0110] 一般来说,该实例假设增强型安全CPU仿真器被配置成为加密密钥保留一个硬件寄存器,为文件加密密钥保留一个硬件寄存器,这两个密钥存储在安全非易失性存储器中并从安全非易失性存储器获取,以及用于加密/解密操作和/或正常算术操作的其它寄存器。另外,该实例使用正在执行的程序的软件代码中的开始和结束临界部分指令来实现一个或多个“临界部分”的包围。该实例示出将由实现增强型安全指令的CPU仿真器实现的逻辑。这些包括以下指令:用于获得加密密钥,用于初始化分配给数据的存储器,用于读取和写入加密文件,用于从分配给加密数据的存储器加载数据和将数据存储到该存储器,以及用于禁用中断并且稍后启用它们以使得可以安全地执行加密和解密操作。从未加密的存储器加载数据和将数据存储到未加密的存储器被包括作为增强型安全指令(与本机指令相反),使得它们将由硬件CPU寄存器中的仿真器与从加密存储器加载的未加密数据一起执行。
[0111] 在到达下一个操作码时,以下示例性的伪代码“如果-那么”(if-then)语句可以由仿真器以任何顺序执行:
[0112] 如果操作码是<<从安全非易失性存储器读取加密密钥>>,那么{执行指令以从安全非易失性存储器读取该加密密钥并保存在保留的加密密钥寄存器中};
[0113] 否则如果操作码是<<从安全非易失性存储器读取文件加密密钥>>,那么{执行指令以从安全非易失性存储器读取该文件加密密钥并保存在保留的文件加密密钥寄存器中};
[0114] 否则如果操作码是<<开始关键部分指令>>,那么{执行指令以暂停中断,保存当前硬件寄存器(不包括保留的加密密钥寄存器),并且使当前硬件寄存器(不包括保留的加密密钥寄存器)的内容归零};
[0115] 否则如果操作码是<<结束关键部分指令>>,那么{执行指令以归零当前硬件寄存器(不包括保留的加密密钥寄存器)的内容,恢复当前硬件寄存器(不包括保留的加密密钥寄存器)并且恢复中断};
[0116] 否则如果操作码是<<初始化存储器>>,那么{执行指令以用随机位初始化分配给仿真器程序数据的RAM};
[0117] 否则如果操作码是<<从加密存储器中加载寄存器>>,那么{从仿真机器语言RAM检索寄存器名称和存储器位置;执行指令以从分配给仿真器程序数据的存储器中的指定位置加载指定寄存器;并且使用在为加密密钥保留的硬件寄存器中找到的加密密钥来解密};
[0118] 否则如果操作码是<<保存寄存器至加密存储器>>,那么{从仿真机器语言RAM检索寄存器名称和存储器位置;执行指令以使用在为加密密钥保留的硬件寄存器中找到的加密密钥来加密指定的寄存器;并将该寄存器的内容保存到分配给仿真器程序数据的存储器中的指定位置};
[0119] 否则如果操作码是<<从未加密的存储器中加载寄存器>>,那么{从仿真机器语言RAM检索寄存器名称和存储器位置;执行指令以从分配给仿真器程序数据的存储器中的指定位置加载指定寄存器};
[0120] 否则如果操作码是<<保存寄存器至未加密的存储器>>,那么{从仿真机器语言RAM检索寄存器名称和存储器位置;执行指令以将指定寄存器的内容保存至分配给仿真器程序数据的存储器中的指定位置};
[0121] 否则如果操作码是<<从加密文件读取数据>>,那么{从仿真机器语言RAM检索文件名和存储器位置;执行指令以从安全非易失性存储器读取文件加密密钥并保存在保留的文件加密密钥寄存器中,然后从文件递增地读取数据到硬件寄存器中;使用在为文件加密密钥保留的硬件寄存器中找到的文件加密密钥来解密寄存器的内容;使用在为加密密钥保留的硬件寄存器中找到的加密密钥来重新加密硬件寄存器的内容,并将硬件寄存器的内容保存到分配给仿真器程序数据的存储器中的指定位置};
[0122] 否则如果操作码是<<保存数据至加密文件>>,那么{从仿真机器语言RAM检索文件名称和存储器位置;执行指令以从安全非易失性存储器读取文件加密密钥并保存在保留的文件加密密钥寄存器中,然后从分配给仿真器程序数据的存储器中的指定位置递增地读取数据到硬件寄存器中;使用在为加密密钥保留的硬件寄存器中找到的加密密钥来解密硬件寄存器的内容;使用在为文件加密密钥保留的硬件寄存器中找到的文件加密密钥来重新加密硬件寄存器的内容,并将硬件寄存器的内容保存到指定文件};
[0123] 否则如果操作码不是增强型安全操作码,则{停止仿真器,并显示“无效操作码”的错误消息}。
[0124] 用于增强型IA系统的示例性优势和应用
[0125] 本部分概述了可以适于根据本公开内容的方面并入或与增强型IA系统协同工作的各种示例性应用和系统。
[0126] 在第一实例中,增强型IA系统可以用于算法保护。考虑复杂算法确定用于更大的程序的一组坐标的情形。必须保护算法防止被攻击者从程序二进制复制。算法本身以及相关联的数据可以由根据本教导的增强型IA系统保护,而算法的结果可以例如发送到主机操作系统以在标准窗口中显示。
[0127] 在第二实例中,计算机程序可能是非常有价值的和/或包含必须被特别保护的关键技术,例如在可能进行销售之前。因此,需要创建在日常个人计算机上运行的真正安全的应用。安全应用可以使用标准的窗口安装程序进行分发和安装。程序的安全部分可以被复制到安全虚拟机上以供执行。这样保护了实际应用代码和应用的安全部分使用的存储器。
[0128] 在第三实例中,根据本教导的增强型IA系统可用于防御恶意软件,例如病毒和蠕虫。安全虚拟机将仅运行信任和加密的代码。因此,它提供了完全保护,防止病毒和蠕虫攻击代码的安全部分。在常规OS上运行的应用的任何部分都将受到验证标准操作系统中的密钥文件的增强型IA系统的保护。安全应用将验证与其直接交互的库,包括与应用一起提供的库未经修改。即使主机OS的组件受损,该保护也将工作。
[0129] 在第四实例中,嵌入式系统可以包括根据本教导的增强型IA系统。虽然初始密钥必须安全地传送,但是例如在飞行计算机系统中的关键知识产权可以在程序执行时在安全虚拟机中得到保护。正常程序可以在系统的不安全部分中执行。在嵌入式系统中,安全地获得初始密钥可能更简单,因为一些可能已经具有静止数据安全所需的硬件。例如,现代基于PowerPC的设计具有集成的安全处理器。
[0130] 在第五实例中,嵌入代码可以被重新编译以在桌面测试环境中运行,从而利用商用现货(COTS)计算机的功率和可用性,用于关键软件代码的开发和测试。这样的开发和测试通常涉及对程序代码的大量修改,以允许其编译并在多个目标上运行。根据本教导的增强型IA系统呈现了一种与COTS操作系统并排提供嵌入式操作系统的解决方案。这允许在基本上相同的工作平下维持与嵌入式系统中相同的动态数据安全性要求。它还使得桌面环境更准确地表示真实系统。在一些实例中,可以允许用户改变用户界面的外观和感觉,而不是内部如何工作。在桌面和嵌入式环境之间移动可以通过在两个系统上保持相同的目标处理器架构来促进。
[0131] 示例性数据处理系统
[0132] 如图3中所示,该实例描述了根据本公开内容的方面的数据处理系统200(也称为计算机)。在该实例中,数据处理系统200是适合于实现根据本教导的增强型IA系统的方面的示例性数据处理系统。更具体地,在一些实例中,作为数据处理系统(例如,智能电话、平板电脑、个人计算机)的实施方式的设备可以包括被配置为仿真安全操作码的安全虚拟机,诸如上述系统。
[0133] 在这个示例性实例中,数据处理系统200包括通信构架202。通信构架202在处理器单元204、存储器206、永久性存储装置208、通信单元210、输入/输出(I/O)单元212以及显示器214之间提供通信。存储器206、永久性存储装置208、通信单元210、输入/输出(I/O)单元212、以及显示器214是处理器单元204经由通信构架202访问的资源的实例。
[0134] 处理器单元204可用于运行可以加载到存储器206中的指令。处理器单元204可以是多个处理器、多处理器核、或者某一其他类型的处理器,视具体实施方式而定。此外,可以利用其中主处理器与次处理器存在单一芯片上的多个不同种类的处理器系统来实现处理器单元204。如另一个示例性实例,处理器单元204可以是包含同样类型的多个处理器的对称多处理器系统。
[0135] 存储器206和永久性存储装置208是存储设备216的实例。存储设备是例如能够存储但不限于数据、函数形式的程序代码的信息以及临时性或者永久性的其他合适信息的任一件硬件。
[0136] 在这些实例中,存储设备216还可被称为计算机可读存储设备。例如,在这些实例中,存储器206可以是随机存取存储器或者任何其它合适的易失的或者非易失性存储设备。永久性存储装置208可以为各种形式,视具体实施方式而定。
[0137] 例如,永久存储装置208可以包含一个或多个组件或设备。例如,永久存储装置208可以是硬盘驱动器、闪存、可再写光盘、可再写磁带或以上的一些组合。由永久存储装置208使用的介质也可以是可移除的。例如,可移除硬盘驱动器可被用于永久存储装置208。
[0138] 在这些实例中,通信单元210提供与其它数据处理系统或者设备的通信。在这些实例中,通信单元210是网络接口卡。通信单元210可以通过使用物理和无线通信链路的任一或者全部来提供通信。
[0139] 输入/输出(I/O)单元212允许利用可以连接至数据处理系统200的其他设备输入和输出数据。例如,输入/输出(I/O)单元212可提供连接以用于用户通过键盘鼠标、和/或某一其他合适的输入设备进行输入。此外,输入/输出(I/O)单元212可将输出发送至打印机。显示器214提供将信息显示给用户的机构。
[0140] 有关操作系统、应用程序和/或程序的指令可位于存储设备216中,该存储设备通过通信构架202与处理器单元204通信。在这些示例性实例中,指令为永久性存储装置208上的函数形式。这些指令可以被加载到存储器206以通过处理器单元204执行。不同实施方式的处理可以通过处理器单元204使用计算机实现指令来执行,计算机实现指令可以位于存储器(诸如存储器206)中。
[0141] 这些指令被称为程序指令、程序代码、计算机可用程序代码、或者可由处理器单元204中的处理器读取和执行的计算机可读程序代码。在不同实施方式中的程序代码可以在不同的物理或者计算机可读存储介质(诸如存储器206或者永久性存储装置208)上实现。
[0142] 程序代码218可以函数形式位于选择性可移除的计算机可读介质220上,并且可被加载到或者传送到数据处理系统200,以通过处理器单元204执行。在这些实例中,程序代码218和计算机可读介质220构成计算机程序产品222。在一个实例中,计算机可读介质220可以是计算机可读存储介质224或者计算机可读信号介质226。
[0143] 例如,计算机可读存储介质224可包括被插入到或者放置到驱动或者其他设备(即,永久性存储装置208的一部分)以用于传送至诸如硬驱动的存储设备(即,永久性存储装置208的一部分)的光盘或者磁盘。计算机可读存储介质224还可为诸如硬驱动、拇指驱动、或者闪存的连接至数据处理系统200的永久性存储装置形式。在一些情况中,计算机可读存储介质224不可从数据处理系统200中移除。
[0144] 在这些实例中,计算机可读存储介质224是用于存储程序代码218的物理或者有形存储设备而非传播或者传输程序代码218的介质。计算机可读存储介质224还被称为计算机可读有形存储设备或者计算机可读物理存储设备。换言之,计算机可读存储介质224是人可以触摸的介质。
[0145] 可替代地,可利用计算机可读信号介质226将程序代码218传送至数据处理系统200。例如,计算机可读信号介质226可以是包含程序代码218的传播数据信号。例如,计算机可读信号介质226可以是电磁信号、光学信号、和/或任何其他合适类型的信号。可以通过诸如无线通信链路、光纤电缆、同轴电缆、配线、和/或任何其他合适类型的通信链接的通信链路传输这些信号。换言之,在示例性实例中,通信链路和/或连接可以是物理或者无线的。
[0146] 在一些示例性实施方式中,可通过数据处理系统200中使用的计算机可读信号介质226从另一设备或者数据处理系统经由网络将程序代码218下载至永久性存储装置208。例如,可经由网络从服务器将存储在服务器数据处理系统中的计算机可读存储介质中的程序代码下载至数据处理系统200。提供程序代码218的数据处理系统可以是服务器计算机、客户端计算机、或者能够存储和传输程序代码218的某一其他设备。
[0147] 为数据处理系统200示出的不同的组件不意味着对方式提供架构限制,其中,可以实现不同的实施方式。可以在包括除所示出的关于数据处理系统200的和/或代替所示出的关于数据处理系统200的组件的数据处理系统中实施不同的示出性实施方式。在图3中所示的其它组件可以与示出的示例性实例不同。可以使用能够运行程序代码的任何硬件设备或者系统实现不同的实施方式。作为一种实例,数据处理系统200可包括与无机组件集成的有机组件和/或可整体包括除人类之外的有机组件。例如,存储设备可包括有机半导体
[0148] 在另一示例性实例中,处理器单元204可以为具有出于特殊用途而制造或者配置的电路的硬件单元形式。这种类型的硬件可执行各种操作,而不需要从被配置为执行操作的存储设备将程序代码加载到存储器中。
[0149] 例如,当处理器单元204为硬件单元形式时,处理器单元204可以是电路系统、专用集成电路(ASIC)、可编程逻辑设备、或者被配置为执行多种操作的某一其他合适类型的硬件。该设备被配置为通过可编程逻辑设备执行多种操作。该设备可在随后时间内被重新配置或者可永久性地被配置为执行多种操作。例如,可编程逻辑设备的实例包括可编程逻辑阵列、场可编程逻辑阵列、场可编程门阵列、以及其他合适的硬件设备。在这种类型的实施方式中,因为在硬件单元中实现用于不同实施方式的处理,所以可以省去程序代码218。
[0150] 在又一示例性实例中,可以使用在计算机和硬件单元中发现的处理器的组合来实现处理器单元204。处理器单元204可具有被配置为运行程序代码218的多个硬件单元和多个处理器。在此描述的实例中,可以在多个硬件单元中实现这些处理中的一些,而可以在多个处理器中实现其他处理。
[0151] 在另一实例中,总线系统可以用于实施通信构架202,并且可包括一个或者多个总线,诸如,系统总线和/或输入/输出总线。当然,可以使用提供被附接至总线系统的不同组件或者设备之间的数据传输的任何合适类型的架构来实现总线系统。
[0152] 此外,通信单元210可包括发送数据、接收数据、或者发送和接收数据的多个设备。例如,通信单元210可以是调制器或者网络适配器、两个网络适配器、或者其某种组合。此外,例如,存储器可以是存储器206、或者是诸如位于接口中和存在于通信构架202中的存储器控制器集线器中的缓存。
[0153] 本文中所描述的流程图和框图示出了根据各种示例性实施方式的结构、功能以及系统、方法和计算机程序产品的可能实现的操作。关于此,流程图或者框图中的每个框可代表包括用于实现具体的逻辑功能或者多个功能的一个或者多个可执行指令的模块、片段、或者代码的一部分。还应注意的是,在一些可替代的实现中,在框中标注的功能可不以附图中所标注的顺序发生。例如,顺序示出两个框的功能可以大致同时执行,或者有时可以相反顺序执行各个框的功能,视所包括的功能而定。
[0154] 示例性计算机网络
[0155] 如图4中所示,该实例描述了可互换地称为网络、计算机网络、网络系统、分布式网络等的一般网络数据处理系统300,其中可以包括增强型IA系统和安全虚拟机的示例性实施方式。例如,增强型IA系统、相关程序指令、加密密钥和/或虚拟机的各个方面可以在计算机网络中实现或使用计算机网络传送。应当理解,图4是作为一个实现的说明而提供的,并且并不旨在暗示关于可以实现不同实施方式的环境的任何限制。可以对所描绘的环境进行许多修改。
[0156] 网络数据处理系统300是计算机网络,每个计算机网络是数据处理系统200、及其他组件的实例。网络数据处理系统300可包括网络302,该网络是被配置为在网络数据处理系统300内连接在一起的各种设备和计算机之间提供通信链路的介质。网络302可包括诸如有线或无线通信链路、纤维光缆和/或用于在网络设备之间传输和/或传送数据的任何其它合适的介质或其任何组合的连接。
[0157] 在所描述的实例中,第一网络设备304和第二网络设备306如电子存储设备308那样连接到网络302。网络设备304和306各自是上述数据处理系统200的实例。在描述的实例中,设备304和306示出为服务器计算机。然而,网络设备可包括但不限于一个或多个个人计算机,诸如个人数字助理(PDA)、平板电脑和智能电话的移动计算设备,手持游戏设备,可穿戴设备,平板计算机,路由器,交换机,语音门,服务器,电子存储设备,成像设备和/或可以执行机械或其他功能的其他联网使能工具。这些网络设备可以通过有线、无线、光学和其他适当的通信链路互连。
[0158] 此外,诸如客户端计算机310、客户端膝上型电脑或平板电脑312和/或客户端智能设备314的客户端电子设备可以连接到网络302。这些设备中的每一个是上面关于图3描述的数据处理系统200的实例。客户端电子设备310、312和314可以包括例如一个或多个个人计算机、网络计算机和/或移动计算设备,诸如个人数字助理(PDA)、智能电话、手持游戏设备、可穿戴设备和/或平板计算机等。在所描绘的实例中,服务器304向客户端电子设备310、312和314中的一个或多个提供诸如引导文件、操作系统图像和应用的信息。客户端电子设备310、312和314可以相对于诸如服务器计算机304的服务器被称为“客户端”。网络数据处理系统300可包括更多或更少的服务器和客户端,或者没有服务器或客户端,以及未示出的其他设备。
[0159] 客户端智能设备314可包括能够进行无线通信和执行软件(诸如智能电话或平板电脑)的任何合适的便携式电子设备。一般来说,术语“智能电话”可以描述具有比典型移动电话更高级的计算能和网络连接性的任何合适的便携式电子设备。除了进行电话呼叫(例如,通过蜂窝网络)之外,智能电话可以能够发送和接收电子邮件、文本和多媒体消息,访问互联网和/或用作网络浏览器。智能设备(例如,智能电话)还可以包括其他已知电子设备的特征,诸如媒体播放器、个人数字助理、数字相机、摄像机和/或全球定位系统。智能设备(例如,智能电话)可以能够无线地(例如通过近场通信(NFC)、蓝牙、WiFi或移动宽带网络)与其他智能设备、计算机或电子设备连接。可以在智能设备、智能电话、计算机和其他设备之间建立无线连接,以形成可以交换信息的移动网络。
[0160] 位于系统300中的程序代码可以存储在计算机可记录存储介质(诸如永久存储装置208)中或上,并且可以下载到数据处理系统或其他设备以供使用。例如,程序代码可以存储在服务器计算机304上的计算机可记录存储介质上,并且可以通过客户端310上使用的网络302下载以供客户端310使用。
[0161] 网络数据处理系统300可以实现为多个不同类型的网络中的一个或多个。例如,系统300可包括内联网、局域网络(LAN)、广域网络(WAN)、或者个人局域网(PAN)。在一些实例中,网络数据处理系统300包括互联网,其中网络302表示使用传输控制协议/互联网协议(TCP/IP)协议套件彼此通信的网络和网关的世界范围的集合。互联网的核心是主要节点或主计算机之间的高速数据通信线路的骨干。数千个商业、政府、教育和其他计算机系统可以用于路由数据和消息。在一些实例中,网络300可称为“”。在这些实例中,每个服务器304可以称为云计算节点,并且客户端电子设备可以称为云消费者等。图4意在作为示例而不是作为任何示例性实施方式的体系结构限制。
[0162] 此外,本公开内容包括根据下列项的实施方式:
[0163] 项1.一种用于安全执行软件指令的计算机系统,该计算机系统包括:
[0164] 第一处理器,具有多个硬件寄存器;
[0165] 存储器;以及
[0166] 仿真器程序,包括存储在存储器中的多个指令,可通过第一处理器执行指令以:
[0167] 仿真第二处理器;
[0168] 仿真在第二处理器上执行多个本机机器指令,本机机器指令对于第二处理器是本地的;并且
[0169] 仿真在第二处理器上执行多个安全机器指令,安全机器指令对于第二处理器是非本地的,并且包括一个或多个操作码,该操作码被配置为确保与操作码相关联的操作数数据的未加密值仅存储在第一处理器的硬件寄存器的一个或多个中的。
[0170] 项2.根据项1所述的计算机系统,其中,仿真的第二处理器与第一处理器是不同的类型。
[0171] 项3.根据项2所述的计算机系统,其中,仿真的第二处理器具有比第一处理器少的寄存器。
[0172] 项4.根据项1所述的计算机系统,还包括与第一处理器通信的随机存取存储器(RAM)和存储在RAM中的软件程序,软件程序编译为在仿真的第二处理器上运行并包含一个或多个安全机器指令。
[0173] 项5.根据项4所述的计算机系统,其中,所述软件程序被加密。
[0174] 项6.根据项1所述的计算机系统,其中,仿真器程序的指令还可由第一处理器执行以确保安全机器指令的操作码的解密版本仅存储在第一处理器的一个或多个硬件寄存器中。
[0175] 项7.根据项6所述的计算机系统,其中,仿真器程序的指令还可由第一处理器执行以在将操作数数据存储在RAM中之前加密操作数数据,并且在从RAM检索操作数数据之后解密该操作数数据。
[0176] 项8.一种在计算机系统中实现的方法,所述方法包括:
[0177] 从存储器检索加密机器指令;
[0178] 解密检索的机器指令并且将解密的指令存储在第一处理器的第一硬件寄存器中;并且
[0179] 使用仿真的第二处理器仿真所解密的指令的执行;
[0180] 其中,所解密的指令是多个安全指令中相对于仿真的第二处理器非本地的一个。
[0181] 项9.根据项8所述的方法,其中,仿真所解密的指令的执行包括改变与所解密的指令相关联的操作数的值。
[0182] 项10.根据项9所述的方法,其中,改变操作数的值包括解密操作数以产生解密值并将解密值存储在第一处理器的第二硬件寄存器中。
[0183] 项11.根据项10所述的方法,其中,存储解密值包括存储除了解密值以外的随机信息。
[0184] 项12.根据项10所述的方法,其中,改变操作数的值还包括确定并且加密新值以产生一个或多个加密的数据块以及将一个或多个加密的数据块存储在存储器中。
[0185] 项13.根据项12所述的方法,其中,加密新值包括用新值加密所选数量的随机数据。
[0186] 项14.根据项8所述的方法,其中,解密检索的机器指令包括使用存储在第一处理器的第三硬件寄存器中的加密密钥。
[0187] 项15.一种用于安全执行软件指令的计算机系统,该计算机系统包括:
[0188] 第一处理器,具有多个硬件寄存器;
[0189] 存储器;以及
[0190] 仿真器程序,包括存储在存储器中的多个指令,可通过第一处理器执行指令以:
[0191] 从存储器检索加密机器指令;
[0192] 解密检索的机器指令并将解密的指令存储在第一处理器的硬件寄存器的一个或多个中;并且
[0193] 使用仿真的第二处理器仿真所解密的指令的执行;
[0194] 其中,解密指令是多个安全指令中相对于仿真的第二处理器非本地的一个。
[0195] 项16.根据项15所述的计算机系统,其中,仿真所解密的指令的执行包括改变与指令相关联的操作数的值。
[0196] 项17.根据项16所述的计算机系统,其中,改变操作数的值包括解密操作数以产生解密值并将解密值存储在第一处理器的硬件寄存器的一个或多个中。
[0197] 项18.根据项17所述的计算机系统,其中,存储解密值包括存储除了解密值以外的随机信息。
[0198] 项19.根据项17所述的计算机系统,其中,改变操作数的值还包括确定并且加密新值以产生一个或多个加密的数据块以及将一个或多个加密的数据块存储在存储器中。
[0199] 项20.根据项19所述的计算机系统,其中,加密新值包括用新值加密所选择的数量的随机数据。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈