CN104272317A - 在更安全的执行环境中标识并执行多个指令的子集 - Google Patents

在更安全的执行环境中标识并执行多个指令的子集 Download PDF

Info

Publication number
CN104272317A
CN104272317A CN201280072808.XA CN201280072808A CN104272317A CN 104272317 A CN104272317 A CN 104272317A CN 201280072808 A CN201280072808 A CN 201280072808A CN 104272317 A CN104272317 A CN 104272317A
Authority
CN
China
Prior art keywords
instruction
execution environment
execution
subset
computing equipment
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
CN201280072808.XA
Other languages
English (en)
Other versions
CN104272317B (zh
Inventor
S·高夫曼
A·贝伦宗
O·伦茨
T·德沃尔
B·张
Y·扎哈维
M·茂尔
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104272317A publication Critical patent/CN104272317A/zh
Application granted granted Critical
Publication of CN104272317B publication Critical patent/CN104272317B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/53Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/54Monitoring 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 adding security routines or objects to programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Executing Machine-Instructions (AREA)
  • Retry When Errors Occur (AREA)
  • Storage Device Security (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

在此描述了用于标识并加密用于在更安全执行环境中执行的多个指令的子集的装置、计算机实现的方法、系统、设备及计算机可读介质的实施例。在各实施例中,该子集可包括单个进入点和单个退出点。在各实施例中,该多个指令中的在该子集之前或之后的一个或多个指令可在具有第一安全等级的第一执行环境中执行。在各实施例中,该子集可在具有比该第一安全等级更高的第二安全等级的第二执行环境中执行。

Description

在更安全的执行环境中标识并执行多个指令的子集
领域
本发明实施例总体上涉及数据处理的技术领域,并且更具体地,涉及在更安全执行环境中标识并执行指令的子集。
背景
在此提供的背景描述是为了总体上展现本公开的上下文的目的。就在该背景部分中描述的以及可不在提交时以其他方式作为现有技术有资格的说明书的方面的程度而言,所列出的发明人的工作既不明确地也不隐含地被解释为与本公开相抵触的现有技术。除非以其他方式在此指示的,在该部分中描述的方法不是本公开中的权利要求书的现有技术并且不应因为被包括在该部分中而被认为是现有技术。
软件盗版和/或篡改(诸如病毒或恶意软件)是广泛的。常规的反盗版/篡改措施(诸如代码混淆、加密和反调试技术)不能充分地解决这个问题,尤其是针对大部分所确定的软件盗版黑客。更强健的反盗版/篡改措施(诸如硬件密钥(例如密钥环密码狗上的一次性密码))虽然更加有效但是可能不方便、昂贵和/或不灵活。
附图简要说明
将结合附图通过以下详细描述容易地理解实施例。为了方便本描述,相同的参考标号指示相同的结构元素。通过举例而非通过限制在附图的图式中示出实施例。
图1示意性地示出根据各实施例可如何创建、向软件分发者(诸如应用商店)提供、以及修改以便提供增强安全性的多个可执行指令形式的软件的示例。
图2示意性地示出根据各实施例可如何向最终用户系统提供以及以增强安全性的方式执行该多个指令的示例。
图3至图4示意性地描绘根据各实施例可由各计算设备实现的示例方法。
图5示意性地描绘根据各实施例可在其上实现所公开的方法和计算机可读介质的示例计算设备。
详细描述
在以下详细描述中,参考形成其一部分并且通过可实践的说明实施例示出的附图,其中,相同的标号指示相同的部件。应当理解可使用其他实施例以及可在不背离本公开的范围的情况下做出结构或逻辑改变。因此,不应以限制性的意义解释以下详细描述,并且实施例的范围由所附权利要求书及其等效方案定义。
各操作可被描述为按顺序的多个离散动作或操作,其方式为最有助于理解所要求保护的主题。然而,描述的顺序不应被解释为暗示这些操作必需依赖于顺序。具体而言,可不按展示顺序执行这些操作。可以用不同于所描述的实施例的顺序执行所描述的操作。可执行各附加操作和/或可在附加实施例中忽略所描述的操作。
为了本公开的目的,短语“A和/或B”是指(A)、(B)、或(A和B)。为了本公开的目的,短语“A、B和/或C”是指(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
本描述可使用短语“在实施例中(in an embodiment)”或“在多个实施例中(in embodiments)”,其可各自指代相同或不同实施例中的一个或多个。此外,如结合本公开的实施例所使用的,术语“包括(comprising)”、“包括(including)”、“具有(having)”等等是同义的。
如在此所使用的,术语“模块”可指代、作为其一部分、或包括专用集成电路(“ASIC”)、电子电路、执行一个或多个软件或固件程序的处理器(共享、专用或分组)和/或存储器(共享、专用或分组)、组合式逻辑电路、和/或其他合适的提供所描述的功能性的组件。
如在此所使用的,术语“软件”可包括但不限于存储在瞬态或非瞬态介质上的一个或多个指令,当被计算设备执行时,该一个或多个指令使计算设备能执行各动作。软件的非限制性示例包括文字处理器、电子表格、图像处理应用、游戏、媒体播放器、电子邮件客户端、网页浏览器、操作系统、驱动器、服务器(例如网页服务器)等等。
现在参考图1,软件开发者计算设备100可以是由一个人或一组人使用的一个或多个计算设备,例如软件开发公司、企业、独立软件供应商(“ISV”)等等,以便开发多个指令102形式的软件。在各实施例中,多个指令102可包括源代码、二进制指令、汇编代码、脚本语言、和/或任何其他类型的可被立即或在某种形式的预处理(诸如编译、汇编、解释等等)之后执行的指令。
如图1中的箭头所示,在各实施例中,软件开发者计算设备100可向软件分发者计算设备104提供多个指令102。在各实施例中,软件开发者计算设备100可通过一个或多个有线和/或无线通信网络通过邮件或以其他方式物理地传送存储多个指令102的计算机可读介质等等向软件分发者计算设备104提供多个指令102。
在各实施例中,软件分发者计算设备104可托管通过任何介质(诸如通过一个或多个有线和/或无线通信网络)或物理地通过邮件或以其他方式物理地传送计算机可读介质来分发软件的在线应用商店或其他服务。在某些实施例中,软件开发者计算设备100和软件分发者计算设备104可以是相同的计算设备或协作操作的多个计算设备。
多个指令102自身可不包括对抗软件盗版和/或篡改的充分的安全措施。用户可以能够或者在执行之前或者在执行过程中查看多个指令102。这可允许用户以不希望的方式拷贝或修改多个指令102。例如,用户可编辑多个指令102以便移除版权保护机制。即使多个指令102是处于可容易地由人类读取的形式(例如,对象代码),所确定的软件盗版可具有逆向工程能力。作为另一个示例,黑客可篡改指令。
因此,在各实施例中,多个指令102可例如由软件转换器105转换成具有防止、降低其可能性和/或总体上挫败软件盗版/篡改的特征的包106。具体而言,可标识、提取和/或加密多个指令102的分组或“子集”,并且可与多个指令102中的剩余指令分离地存储这些分组或“子集”。这些指令子集可被配置成用于在防止用户访问指令子集的分离的、更安全的环境中执行。
软件转换器105可以是软件和/或硬件的任何组合。在图1中,其被示出为在软件分发者计算设备104上操作。然而,这不意味着是限制性的,并且软件转换器105可在其他计算设备(诸如软件开发者计算设备100)上操作。在一个实施例中,软件转换器105可以是多个逻辑的组合,各自具有单独的目的,如将在以下描述的。在由软件转换器105转换之后,包106可包括经修改的多个指令103、一个或多个经加密的子集108和/或调度程序例程109。
现在参考图2,经转换的包106可被分发到一个或多个最终用户以便在最终用户计算设备110上执行。如将在以下更详细地描述的,最终用户计算设备110可被配置成用于在具有第一安全等级的第一执行环境112中执行经修改的多个指令103中的在原始多个指令102中的子集108之前或之后的指令。最终用户计算设备110可被配置成用于在具有比第一安全等级更安全的第二安全等级的第二执行环境114中执行调度程序例程109和子集108。在各实施例中,在第二执行环境114中,可对用户隐藏指令及其执行性质。例如,在第二执行环境114中执行的指令可被存储在安全存储器中。在第二执行环境114中执行子集108可使得用户更加难以拷贝子集108或对其进行逆向工程。
返回参考图1,为了将多个指令102转换成包106用于分发,软件转换器105可标识、提取(如由虚线框和相应的虚线箭头所指示的)和/或加密多个指令102的适合于在第二执行环境114中执行的一个或多个子集108。可基于各标准标识适合于在第二执行环境114中执行的指令的子集108。在各实施例中,具有单个进入点和单个退出点的指令分组可适合于在第二执行环境114中执行。在各实施例中,合适的子集108可以是超级基础块(“SBB”),其可包括整数指令,当被执行时,该整数指令在通用寄存器(“GPR”)(诸如RAX-R15及其部分)上操作。在各实施例中,子集108可包括其他类型的指令,诸如直接跳跃。在各实施例中,当子集108被重新定位到最终用户计算设备(例如110)上的分离(例如安全)存储器时,根据安全环境的参数,子集108内的指令可引用安全存储器之外的存储器。
不是多个指令102中的所有指令分组都可适合于在第二执行环境114中执行。例如,将在非GPR(诸如参考指令指针(“RIP”)或参考堆栈指针(“RSP”)、诸如PUSH或POP指令)上操作的指令分组可能不适合在安全环境中执行。可能不适合在更安全的执行环境中执行的另一指令分组可以是包括一个或多个CALL(调用)指令的指令分组,因为CALL指令可要求异常处理支持并且以其他方式可增加复杂度。在各实施例中,可使用由美国加利福尼亚州圣克拉拉市的英特尔公司提供的工具(诸如用于程序的动态插桩的PIN工具)标识适用于在第二执行环境114中执行的指令分组。
可向多个指令102(以便创建经修改的多个指令103)和/或向子集添加各指令,以便促进不同执行环境之间的重定向。例如,可在任何子集108之前向多个指令102添加用于初始化第二执行环境114的一个或多个指令。在图1中可见这种情况的示例,其中已经向经修改的多个指令103在接近开始处添加INIT SECURE ENVIRONMENT指令。在各实施例中,可在经修改的多个指令103的进入点之前插入这种初始化指令。
附加地,可向多个指令102插入用于将执行从第一执行环境112重定向到第二执行环境114的指令。例如,从多个指令102提取的作为子集108的指令分组可被替换为用于将执行重定向到第二执行环境114的一个或多个指令(可被称为“蹦床代码(trampoline code)”)。在图1中可见这种情况的示例,其中已经在经修改的多个指令103中用TRAMPOLINE代码替换了每个子集108。
在各实施例中,用于在第二执行环境114中执行的子集108可与经修改的多个指令103分离地存储。在图1中,例如,子集108封装有调度程序例程109。如以下将更详细地描述的,TRAMPOLINE指令可调用调度程序例程109,该调度程序例程进而可调用执行子集108。在某些实施例中,可向子集108添加将执行从子集108返回到调度程序例程109的指令。例如,在图1中,在每个子集108的末尾插入RETURN指令。这可致使执行在子集108已经被执行之后返回调度程序例程109。
如果多个指令102在没有首先由所公开的方法修改的情况下被执行,包含在其中的指令将在单个执行上下文中执行。如在此所使用的,术语“执行上下文”可指代其中执行指令的上下文并且可包括在程序执行过程中存储在GPR和/FLAG或寄存器(例如EFLAG、RFLAG)中的各个值。尽管存储在这些寄存器中的值可在执行过程中被更改,它们可以用大概由正在执行的计算机程序控制并解释的方式被更改。
然而,包106可包括可在不同的执行环境中执行的多个指令集,例如经修改的多个指令103和子集108。在不同的执行环境中重定向执行可以用多个指令102中可能未预测到或解释的方式更改执行上下文。这可导致不可预测的和/或错误的结果。因此,在各实施例中,在执行环境之间在过渡之前可保存执行上下文并且在过渡之后可恢复。
在各实施例中,可例如由软件转换器105在包106的各个点处添加用于保存执行上下文的一个或多个指令(在此称为PRESERVE EC),以便在将执行从一个执行环境重定向到另一个执行环境之前保存执行上下文。在各实施例中,PRESERVE EC指令可致使将存储在GPR和/或FLAG寄存器中的值的快照存储在存储器中。在图1中,在trampoline代码的每个实例之前,PRESERVE EC指令已经被添加到经修改的多个指令103。
PRESERVE EC指令还可被结合到调度程序例程109中,以便当将执行从第二执行环境114重定向回第一执行环境112时保存执行上下文。例如,在图1中,在用于调用子集108的指令之后,PRESERVE EC指令已经被结合到调度程序例程109中。
在从一个执行环境重定向到另一个执行环境之后,可从快照恢复执行上下文。在各实施例中,RESTORE EC可被插入到多个指令102中和/或包括在调度程序例程109中。例如,在图1中,在trampoline代码的每个实例之后,RESTORE EC指令已经被添加到经修改的多个指令103。类似地,在定位并调用特定的子集之前,RESTORE EC指令被包括在调度程序例程109中。
在各实施例中,经加密的子集108可例如由软件转换器105连结以便形成经连结的子集116。在各实施例中,软件转换器105可生成经连结的子集的索引。在各实施例中,索引可包括与至少一个子集相关联的偏移。在各实施例中,该偏移可作为参数被传递给致使重定向到第二执行环境114的trampoline代码。在各实施例中,索引还可包括与至少一个子集108相关联的尺寸,该尺寸也可被作为参数传递到trampoline代码。在各实施例中,索引可附加地或可替代地包括与至少一个子集108相关联的相对虚拟地址(“RVA”)。在各实施例中,在提取之前,RVA可以是原始多个指令102中的子集的地址。
现在将参照图2描述可如何执行包106的示例。执行可在第一执行环境112中发起,在经修改的多个指令103的开始处开始。例如,如上所述可非常接近或者甚至在经修改的多个指令103的进入点之前的INITSECURE ENVIRONMENT指令可被执行以便发起第二执行环境114。
经修改的多个指令103可被执行,直到达到PRESERVE EC指令。在该点处,可通过生成GPR FLAGS值的快照并且将这些值存储器存储器中来保存执行上下文。在PRESERVE EC指令之后,TRAMPOLINE代码可将执行重定向到第二执行环境114,如箭头A所示。包含在TRAMPOLINE代码中的一个或多个函数(诸如InvokeSE())可将所保存的执行上下文作为参数接收(例如,作为到存储GPR FLAG快照的存储器的指针)。InvokeSEQ也可接收其他参数,诸如有待调用的子集108的RVA、偏移和/或尺寸。
然后执行可在第二执行环境114中继续。RESTORE EC指令可致使从快照恢复所保存的GPR/FLAG的状态。接下来,可在所连结的子集116中定位要调用的子集108。在各实施例中,LOCATE SUBSET函数可接收与子集相关联的偏移或RVA作为输入,其可使调度程序例程109能在所连结的子集116中定位适当的子集108。一旦被定位,INVOKE SUBSET指令可跳跃到执行包含在适当的子集108中的指令,如箭头B所示。
如上所述,可已经在每个子集108的末尾插入了RETURN指令。一旦子集108的执行到达了这个指令,则执行可返回调度程序例程109,如箭头C所示。接下来,调度程序例程109的PRESERVE EC指令可被执行以便保存执行上下文。EXIT SECURE ENVIRONMENT指令可将执行重定向回第一执行环境112,如箭头D所示。在重定向回第一执行环境112之后,RESTORE EC指令可被执行以便恢复由调度程序例程109保存的GPR/FLAG的状态。
因此,迄今为止已经总体上描述了上述并且在图1和图2中示出的实施例。可以用各种方式实现特定方面。例如,在一个示例实施例中,软件转换器105可将多个指令102转换成包106,如下所述。与软件转换器105相关联的可在此被称为“片段寻检器”的逻辑可搜索多个指令102以便找到适合在更安全的执行环境中执行的子集108。片段寻检器可输出包含所有已标识的子集的第一头文件,其中在每个子集之间插入RETURN指令。片段寻检器可输出包括用于每个子集的五元组的索引的第二文件。每个五元组可包括包含所连结的子集的头文件内的子集的RVA和尺寸(例如,以字节为单位)。片段寻检器可输出包含在原始多个指令102中通过其RVA分类的子集描述符阵列的第三文件(其也可以是头文件)。
第二文件(包含索引)以及原始多个指令102可由与软件转换器105相关联的另一个逻辑用作输入以便创建经修改的多个指令103。分别包含所连结的子集和子集描述符阵列的第一和第三文件可被用作到与软件转换器105相关联的同一或仍另一个逻辑的输入,以便生成将被在第二执行环境114中执行的指令,包括调度程序例程109和该一个或多个经加密的子集108。
除调度程序例程109和子集108之外,要在第二执行环境114中执行的指令还可包括执行与初始化第二执行环境114有关的各种操作的初始化程序例程118。例如,初始化程序例程118可包括用于获得解密密钥(例如从用户)的一个或多个指令。初始化程序例程118还可包括用于在更安全的执行环境中例如使用从用户获得的解密密钥解密子集108的一个或多个指令。在各实施例中,当初始化第二初始化程序例程114时可调用初始化程序例程118。
在图3和图4中描绘了可由软件转换器105实现的示例方法300。应当假设最终用户计算设备(诸如最终用户计算设备110)至少具有第一执行环境112(例如默认执行环境)。应当理解尽管以具体的顺序示出了方法300的操作,这并不意味着是限制性的,并且可以用任何其他顺序执行这些操作。附加地或可替代地,可添加或忽略这些操作中的一个或多个。
在作为输入接收到多个指令102之后,在框302,初始化第二执行环境114的一个或多个指令可例如由软件转换器105添加到多个指令102。在框304,可标识并提取一组多个指令102作为子集108。例如,可例如通过从多个指令102移除并分离地存储来标识并提取具有单个进入点和退出点的多组指令。在框306,可例如由软件转换器105将用于将执行从第一执行环境112重定向到第二执行环境114的一个或多个指令添加到多个指令从而替换在框304提取的子集108。
在框308,可例如由软件转换器105将用于保存执行上下文的一个或多个指令添加到多个指令102,例如在将执行从第一执行环境重定向到第二执行环境的指令之前。如上所述,这可允许在具有如在第一执行环境中可用的那样可用的相同的GPR/FLAG值的第二执行环境中执行指令子集。
在框310,可例如由软件转换器105将用于将执行从第二执行环境重定向回第一执行环境的一个或多个指令添加到调度程序例程109。在框312,可例如由软件转换器105将用于在从第一执行环境过渡到第二执行环境之后恢复执行上下文的一个或多个指令添加到调度程序例程109。
方法300在图4中继续。在框314,可例如由软件转换器105将用于保存执行上下文的一个或多个指令添加到调度程序例程109,例如在将执行重定向回第一执行环境的指令之前。在框316,可例如由软件转换器105将用于恢复执行上下文的一个或多个指令添加到多个指令102。这可允许在具有如在第二执行环境中可用的那样可用的相同的GPR/FLAG值的第一执行环境中执行多个指令102。
在框318,可加密经标识并提取的子集108。在各实施例中,子集108可保持加密,直到在最终用户计算设备处执行。在各实施例中,当执行时,可在例如与第二执行环境114相关联的安全存储器中解密子集108,从而使得经解密的指令对用户不可见。
可标识、提取并加密多于一个子集108。例如,对于给定的计算机程序(例如多个指令102),可存在可适合在第二、更安全的环境中执行的任何数量的指令分组。
在图4中可见这种情况的示例。假设结合框302至318提及的子集是第一子集。在框320,可以用与标识、提取并加密第一子集相同的方法标识、提取并加密第二子集。在各实施例中,在框322,可连结多个经加密的子集(诸如第一和第二子集)。以此方式,它们可被存储在单个存储器块中,在某些实施例中,该单个存储器块可与存储多个指令102的存储器块分离。
在各实施例中,在框324,可例如由软件转换器105生成索引。如上所述,索引可包括有关所连结的子集的各种信息,诸如与所连结的子集中的至少一个相关联的RVA、和/或尺寸/偏移。
图5示出根据各实施例的示例计算设备500。计算设备500可包括多个组件、处理器504和至少一个通信芯片506。在各实施例中,处理器504可以是处理器核或者可包括多个处理器核。在各实现方式中,至少一个通信芯片506还可物理地并电气地耦合到处理器504。在进一步的实现方式中,通信芯片506可以是处理器504的一部分。在各实施例中,计算设备504可包括印刷电路板(“PCB”)502。对于这些实施例,处理器504和通信芯片506可被布置在其上。在替代实施例中,各实施例可在不采用PCB502的情况下耦合。
取决于其应用,计算设备500可包括可或可不物理地和电气地耦合到PCB 502的其他组件。这些其他组件包括但不限于易失性存储器(例如动态随机存取存储器508,也被称为“DRAM”)、非易失性存储器(例如只读存储器510,也被称为“ROM”)、快闪存储器512、图形处理器514、软件转换器105(在图5中被示出为DRAM 508中的软件但也可以是硬件)、数字信号处理器(未示出)、加密处理器(未示出)、输入输出(“I/O”)控制器516、天线518、显示器(未示出)、触摸屏显示器520、触摸屏控制器522、电池524、音频编解码器(未示出)、视频编解码器(未示出)、全球定位系统(“GPS”)设备528、罗盘530、加速度计(未示出)、陀螺仪(未示出)、扬声器532、照相机534、以及大容量存储设备(诸如硬盘驱动器、固态驱动器、致密盘(“CD”)、数字通用盘(“DVD”)未示出)等等。在各实施例中,处理器504可与其他组件被集成到同一管芯上以便形成片上系统(“SoC”)。
在各实施例中,易失性存储器(例如DRAM 508)、非易失性存储器(例如ROM 510)、快闪存储器512、以及大容量存储设备可包括被配置成用于响应于由处理器504执行使计算设备500能通过操作软件转换器105实践方法300的所有或选定方面的编程指令。例如,这些存储器组件中的一个或多个(诸如易失性存储器(例如DRAM 508)、非易失性存储器(例如ROM 510)、快闪存储器512、以及大容量存储设备)可包括被配置成用于使能计算设备500实践所公开的技术(诸如方法300的所有或选定方面)的指令的临时和/或永久拷贝。
通信芯片506可使得能够进行有线和/或无线通信以便向和从计算设备500传递数据。术语“无线”及其衍生物可用于描述可通过使用经调制的电磁辐射经由非固态介质传递数据的电路、设备、系统、方法、技术、通信信道等等。该术语不暗示相关联的设备不包含任何电线,尽管在某些实施例中它们可能包含。通信芯片506可实现多种无线标准或协议中的任何一种,包括但不限于Wi-Fi(IEEE 802.1802.11家族)、WiMAX(IEEE 802.16家族)、IEEE 802.20、长期演进(LTE)、Ev-DO、HSPA+、HSDPA+、HSUPA+、EDGE、GSM、GPRS、CDMA、TDMA、DECT、蓝牙、其衍生物,以及任何其他被指定为2G、3G、4G、5G的无线协议等等。计算设备500可包括多个通信芯片506。例如,第一通信芯片506可专用于短距离无线通信(诸如Wi-Fi和蓝牙),而第二通信芯片506可专用于长距离无线通信(诸如GPS、EDGE、GPRS、CDMA、WiMAX、LTE、Ev-DO等等)。
在各实施例中,处理器504(或其处理器核之一)可与软件转换器105封装在一起。对于一个实施例,处理器504(或其处理器核之一)可与软件转换器105封装在一起,以便形成系统级封装(SiP)。对于一个实施例,处理器504(或其处理器核之一)可与软件转换器105封装在一起,并且可集成在同一管芯上。对于一个实施例,处理器504(或其处理器核之一)可与软件转换器105封装在一起,以便形成片上系统(SoC)。
在各实现方式中,计算设备500可以是膝上计算机、上网本计算机、笔记本计算机、超极本计算机、智能电话、平板计算机、个人数字助理(“PDA”)、超移动PC、移动电话、桌上计算机、服务器、打印机、扫描仪、监视器、机顶盒、娱乐控制装置、数码相机、便携式音乐播放器、或数字录像机。在进一步的实现方式中,计算设备500可以是处理数据的任何其他电子设备。
在此描述了用于标识并加密多个指令的子集的装置、计算机实现的方法、系统、设备及计算机可读介质(瞬态的和非瞬态的)的实施例。在各实施例中,该子集可包括单个进入点和单个退出点。在各实施例中,该多个指令中的在该子集之前或之后的一个或多个指令可在具有第一安全等级的第一执行环境中执行。在各实施例中,该子集可在具有比该第一安全等级更高的第二安全等级的第二执行环境中执行。
在各实施例中,用于将执行从该第二执行环境返回该第一执行环境的一个或多个指令可与该子集相关联。在各实施例中,用于初始化该第二执行环境的一个或多个指令可被添加到该子集之前的该多个指令。在各实施例中,用于在将执行从该第一执行环境重定向到该第二执行环境之前保存执行上下文的一个或多个指令可被添加到该多个指令。在各实施例中,可添加用于在执行从该第二执行环境重定向到该第一执行环境之后恢复执行上下文的一个或多个指令。
在各实施例中,该子集可以是第一子集。在各实施例中,可标识并加密第二子集。在各实施例中,该第一和第二子集可被连结。在各实施例中,可生成所连结的第一和第二子集的索引。在各实施例中,该索引可包括与该第一和第二子集中的至少一个相关联的相对虚拟地址、偏移和/或尺寸。
在各实施例中,可生成用于在将执行重定向到该第二执行环境中时被调用的调度程序例程。在各实施例中,该调度程序例程自身可调用该子集并且在执行该子集之后将执行重定向回该第一执行环境。在各实施例中,用于在调用该子集之前恢复执行上下文以及在执行该子集之后保存该执行上下文的一个或多个指令可被添加到该调度程序例程。
在各实施例中,至少一种计算机可读介质可具有在其中实施的计算机可读代码。该计算机可读代码可包括:第一指令集,用于在具有第一安全等级的计算设备的第一执行环境中被执行;以及第二指令集,包括单个进入点和单个退出点,用于在具有比该第一安全等级更安全的第二安全等级的该计算设备的第二执行环境下被执行。在各实施例中,该第一指令集可包括用于将执行重定向到该第二执行环境的至少一个指令以及在将执行重定向到该第二执行环境之前保存执行上下文的至少一个指令。在各实施例中,该第二指令集可包括用于恢复该执行上下文的至少一个指令。
在各实施例中,该第一指令集可包括用于在将执行重定向到该第二执行环境的该至少一个指令之前初始化该第二执行环境的一个或多个指令。在各实施例中,包括单个进入点和单个退出点的第三指令集可被配置成用于在该第二执行环境中执行。
在各实施例中,该第二和第三指令集可被加密并连结。在各实施例中,该连结第一和第二指令集的索引可包括与该第一和第二指令集中的至少一个相关联的相对虚拟地址。在各实施例中,该索引可包括与该第二和第三子集中的至少一个相关联的尺寸和偏移。
在各实施例中,一个或多个指令可形成调度程序例程。在各实施例中,该调度程序例程可在将执行重定向到该第二执行环境中时被调用。在各实施例中,该调度程序例程可调用该第二指令集并且在执行该第二指令集之后将执行重定向回该第一执行环境。
在各实施例中,该第二指令集可被加密。在各实施例中,该介质可包括形成用于在第二执行环境中执行的初始化程序例程的一个或多个指令,该初始化程序例程解密该第二指令集。
尽管已经在此为了描绘的目的示出并描述了某些实施例,本申请旨在覆盖在此所讨论的实施例的任何改编或变化。因此,主要旨在在此描述的实施例仅由权利要求书限制。
本公开引用“一个”或“第一”要素或其等效物时,这种公开包括一个或多个这种要素,既不要求也不排除两个或更多个这种要素。进一步地,用于所标识的要素的顺序指示符(例如第一、第二或第三)用于区分要素,并且不表明或暗示所要求的或所限制的这些要素的数量,它们也不表明这些要素的具体位置或顺序,除非以其他方式明确地指明。

Claims (33)

1.至少一种在其中实施计算机可读代码的计算机可读介质,所述计算机可读代码被配置成使计算设备能响应于所述代码的执行标识并加密多个指令的子集,其中,所述子集包括单个进入点和单个退出点,并使所述多个指令中的在所述子集之前或之后的一个或多个指令能在具有第一安全等级的第一执行环境中执行,以及使所述子集在具有比所述第一安全等级更安全的第二安全等级的第二执行环境中执行。
2.如权利要求1所述的至少一种计算机可读介质,其特征在于,所述代码响应于由所述计算设备执行进一步使所述计算设备能将所述子集与用于将执行从所述第二执行环境返回到所述第一执行环境的一个或多个指令进行关联。
3.如权利要求1所述的至少一种计算机可读介质,其特征在于,所述代码响应于由所述计算设备执行进一步使所述计算设备能将用于初始化所述第二执行环境的一个或多个指令在所述子集之前添加到所述多个指令。
4.如权利要求1所述的至少一种计算机可读介质,其特征在于,所述代码响应于由所述计算设备执行进一步使所述计算设备能将用于在将执行从所述第一执行环境重定向到所述第二执行环境之前保存执行上下文的一个或多个指令添加到所述多个指令。
5.如权利要求4所述的至少一种计算机可读介质,其特征在于,所述代码响应于由所述计算设备执行进一步使所述计算设备能将用于在执行从所述第二执行环境返回到所述第一执行环境之后恢复所述执行上下文的一个或多个指令添加到所述多个指令。
6.如权利要求1所述的至少一种计算机可读介质,其特征在于,所述子集是第一子集,并且所述代码响应于由所述计算设备执行进一步使所述计算设备能标识并加密第二子集以及连结所述第一和第二子集,所述第一和第二子集用于在所述第二执行环境中执行。
7.如权利要求6所述的至少一种计算机可读介质,其特征在于,所述代码响应于由所述计算设备执行进一步使所述计算设备能生成所述经连结的第一和第二子集的索引,所述索引包括与所述第一和第二子集中的至少一个相关联的相对虚拟地址。
8.如权利要求6所述的至少一种计算机可读介质,其特征在于,所述代码响应于由所述计算设备执行进一步使所述计算设备能生成所述经连结的第一和第二子集的索引,所述索引包括与所述第一和第二子集中的至少一个相关联的尺寸和偏移。
9.如权利要求1所述的至少一种计算机可读介质,其特征在于,所述代码响应于由所述计算设备执行进一步使所述计算设备能生成在将执行重定向到所述第二执行环境中时将被调用的调度程序例程,所述调度程序例程调用所述子集并且在执行所述子集之后将执行重定向回所述第一执行环境。
10.如权利要求9所述的至少一种计算机可读介质,其特征在于,所述代码响应于由所述计算设备执行进一步使所述计算设备能将用于在调用所述子集之前恢复执行上下文以及在执行所述子集之后保存所述执行上下文的一个或多个指令添加到所述调度程序例程。
11.至少一种在其中实施计算机可读代码的计算机可读介质,所述计算机可读代码包括:
第一指令集,用于在具有第一安全等级的计算设备的第一执行环境下执行;以及
第二指令集,包括单个进入点和单个退出点,用于在具有比所述第一安全等级更安全的第二安全等级的所述计算设备的第二执行环境下执行;
其中,所述第一指令集包括将执行重定向到所述第二执行环境的至少一个指令以及在将执行重定向到所述第二执行环境之前保存执行上下文的至少一个指令,并且其中,所述第二指令集包括用于恢复所述执行上下文的至少一个指令。
12.如权利要求11所述的至少一种计算机可读介质,其特征在于,所述第一指令集包括在用于将执行重定向到所述第二执行环境的所述至少一个指令之前的用于初始化所述第二执行环境的一个或多个指令。
13.如权利要求11至12中任一项所述的至少一种计算机可读介质,其特征在于,进一步包括第三指令集,所述第三指令集包括单个进入点和单个退出点,所述第三指令集用于在所述第二执行环境中执行。
14.如权利要求13所述的至少一种计算机可读介质,其特征在于,所述第二和第三指令集被加密并连结。
15.如权利要求14所述的至少一种计算机可读介质,其特征在于,进一步包括所述经连结第一和第二指令集的索引,所述索引包括与所述第一和第二指令集中的至少一个相关联的相对虚拟地址。
16.如权利要求15所述的至少一种计算机可读介质,其特征在于,所述索引进一步包括与所述第一和第二指令集中的至少一个相关联的尺寸和偏移。
17.如权利要求11至13中任一项所述的至少一种计算机可读介质,其特征在于,进一步包括形成调度程序例程的一个或多个指令,所述调度程序用于在将执行重定向到所述第二执行环境中时被调用,所述调度程序例程用于调用所述第二指令集并且在执行所述第二指令集之后将执行返回到所述第一执行环境。
18.如权利要求17所述的至少一种计算机可读介质,其特征在于,所述第二指令集被加密,所述介质进一步包括形成用于在所述第二执行环境中执行的初始化程序例程的一个或多个指令,所述初始化程序例程用于解密所述第二指令集。
19.如权利要求18所述的至少一种计算机可读介质,其特征在于,所述调度程序例程包括用于在调用所述第二指令集之前恢复执行上下文以及在执行所述第二指令集之后保存所述执行上下文的一个或多个指令。
20.一种计算机实现的方法,包括:
由计算设备标识并提取第一多个指令的子集,其中,所述子集包括单个进入点和单个退出点;
由所述计算设备向所述第一多个指令添加用于将执行从具有第一安全等级的第一执行环境重定向到具有比所述第一安全等级更安全的第二安全等级的第二执行环境的一个或多个指令以代替所提取子集;
由所述计算设备将所述子集添加到用于在所述第二执行环境中被执行的第二多个指令,其中,所述第一多个指令用于在所述第一执行环境中执行;
由所述计算设备加密所述子集;以及
由所述计算设备向所述第二多个指令添加用于将执行从所述第二执行环境重定向到所述第一执行环境的一个或多个指令。
21.如权利要求20所述的计算机实现的方法,其特征在于,进一步包括由所述计算设备在用于将执行从所述第一执行环境重定向到所述第二执行环境的所述一个或多个指令之前向所述第一多个指令添加用于初始化所述第二执行环境的一个或多个指令。
22.如权利要求20所述的计算机实现的方法,其特征在于,进一步包括由所述计算设备在用于将执行从所述第一执行环境重定向到所述第二执行环境的所述一个或多个指令之前向所述第一多个指令添加用于保存执行上下文的一个或多个指令。
23.如权利要求22所述的计算机实现的方法,其特征在于,进一步包括由所述计算设备在用于将执行从所述第一执行环境重定向到所述第二执行环境的所述一个或多个指令之后向所述多个指令添加用于恢复所述执行上下文的一个或多个指令。
24.如权利要求20所述的计算机实现的方法,其特征在于,进一步包括:
由所述计算设备标识并加密所述多个指令的第二子集;以及
由所述计算设备连结所述第一和第二子集。
25.如权利要求24所述的计算机实现的方法,其特征在于,进一步包括由所述计算设备生成所述经连结的第一和第二子集的索引,所述索引包括与所述第一和第二子集中的至少一个相关联的尺寸和偏移。
26.至少一种机器可读介质,包括多个指令,响应于在计算设备上被执行,所述指令致使所述计算设备执行根据权利要求20至25中任一项所述的计算机实现的方法。
27.一种被配置成用于执行如权利要求20至25中任一项所述的计算机实现的方法的装置。
28.一种系统,包括:
一个或多个处理单元;
存储器,操作地耦合到所述一个或多个处理单元;
第一执行环境,具有第一安全等级;
第二执行环境,具有比所述第一安全等级更安全的第二安全等级;以及
软件转换器,用于由所述一个或多个处理单元操作并且被配置成用于标识并加密适合在所述第二执行环境中执行的多个指令的子集、使所述多个指令中的在所述子集之前或之后的一个或多个指令能在所述第一执行环境中执行、以及使所述子集能在所述第二执行环境中执行、以及将用于在将执行从所述第一执行环境重定向到所述第二执行环境之前保存执行上下文的一个或多个指令在所述子集之前添加到所述多个指令。
29.如权利要求28所述的系统,其特征在于,所述软件转换器进一步被配置成向所述多个指令添加用于初始化所述第二执行环境的一个或多个指令。
30.如权利要求29所述的系统,其特征在于,所述软件转换器进一步被配置成用于在将执行从所述第一执行环境重定向到所述第二执行环境的所述一个或多个指令之后向所述多个指令添加用于从所述执行上下文的快照恢复所述执行上下文的一个或多个指令。
31.如权利要求28至30中任一项所述的系统,其特征在于,所述子集是第一子集,并且其中,所述软件转换器进一步被配置成用于标识并加密第二子集以及连结所述第一和第二子集,所述第一和第二子集用于在所述第二执行环境中执行。
32.如权利要求31所述的系统,其特征在于,所述软件转换器进一步被配置成用于生成所述经连结的第一和第二子集的索引,所述索引包括与所述第一和第二子集中的至少一个相关联的尺寸和偏移。
33.如权利要求28至30中任一项所述的系统,其特征在于,进一步包括触摸屏显示器。
CN201280072808.XA 2012-06-01 2012-06-01 在更安全的执行环境中标识并执行多个指令的子集 Expired - Fee Related CN104272317B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/040597 WO2013180736A1 (en) 2012-06-01 2012-06-01 Identification and execution of subsets of a plurality of instructions in a more secure execution environment

Publications (2)

Publication Number Publication Date
CN104272317A true CN104272317A (zh) 2015-01-07
CN104272317B CN104272317B (zh) 2017-09-15

Family

ID=49673781

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280072808.XA Expired - Fee Related CN104272317B (zh) 2012-06-01 2012-06-01 在更安全的执行环境中标识并执行多个指令的子集

Country Status (4)

Country Link
US (1) US9465946B2 (zh)
EP (1) EP2856377B1 (zh)
CN (1) CN104272317B (zh)
WO (1) WO2013180736A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8812873B2 (en) 2012-09-26 2014-08-19 Intel Corporation Secure execution of a computer program using binary translators
US9806933B2 (en) * 2013-03-13 2017-10-31 Microsoft Technology Licensing, Llc Component loading based on user interactions
US9058494B2 (en) 2013-03-15 2015-06-16 Intel Corporation Method, apparatus, system, and computer readable medium to provide secure operation
US9536063B2 (en) 2013-10-24 2017-01-03 Intel Corporation Methods and apparatus for protecting software from unauthorized copying

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1613039A (zh) * 2001-12-03 2005-05-04 先进微装置公司 对安全性敏感指令监控执行的方法与装置
US20080271023A1 (en) * 2006-10-20 2008-10-30 Vodafone Group Plc Device management
US20090029931A1 (en) * 2004-10-20 2009-01-29 Antisense Therapeutics Ltd. Topical administrations of antisense compounds to vla-4 for the treatment of respiratory conditions

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4817140A (en) 1986-11-05 1989-03-28 International Business Machines Corp. Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor
US6317832B1 (en) 1997-02-21 2001-11-13 Mondex International Limited Secure multiple application card system and process
US7516453B1 (en) 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US7051211B1 (en) 2000-08-21 2006-05-23 International Business Machines Corporation Secure software distribution and installation
US20040064723A1 (en) * 2001-10-31 2004-04-01 Barnes Brian C. Method and apparatus for physical address-based security to determine target security
US7500098B2 (en) * 2004-03-19 2009-03-03 Nokia Corporation Secure mode controlled memory
US8954751B2 (en) 2004-10-08 2015-02-10 International Business Machines Corporation Secure memory control parameters in table look aside buffer data fields and support memory array
WO2007041501A2 (en) * 2005-09-30 2007-04-12 Phoenix Technologies Ltd. Secure execution environment by preventing execution of unauthorized boot loaders
DE102005048029B4 (de) 2005-10-06 2009-03-12 Infineon Technologies Ag Compiliervorrichtung und Verfahren zum Compilieren
US8978132B2 (en) * 2008-05-24 2015-03-10 Via Technologies, Inc. Apparatus and method for managing a microprocessor providing for a secure execution mode
EP2196937A1 (en) 2008-12-15 2010-06-16 Thomson Licensing Methods and devices for instruction level software encryption
US8819446B2 (en) 2009-06-26 2014-08-26 International Business Machines Corporation Support for secure objects in a computer system
US8452946B2 (en) 2009-12-17 2013-05-28 Intel Corporation Methods and apparatuses for efficient load processing using buffers
US8756383B2 (en) * 2010-07-13 2014-06-17 Red Hat Israel, Ltd. Random cache line selection in virtualization systems
US9098309B2 (en) 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations
CN104040552B (zh) 2011-12-29 2018-03-30 英特尔公司 安全地分发软件的方法、处理器、计算设备及安全地存储和执行应用的系统
US8812873B2 (en) 2012-09-26 2014-08-19 Intel Corporation Secure execution of a computer program using binary translators

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1613039A (zh) * 2001-12-03 2005-05-04 先进微装置公司 对安全性敏感指令监控执行的方法与装置
US20090029931A1 (en) * 2004-10-20 2009-01-29 Antisense Therapeutics Ltd. Topical administrations of antisense compounds to vla-4 for the treatment of respiratory conditions
US20080271023A1 (en) * 2006-10-20 2008-10-30 Vodafone Group Plc Device management

Also Published As

Publication number Publication date
EP2856377B1 (en) 2017-09-27
CN104272317B (zh) 2017-09-15
US9465946B2 (en) 2016-10-11
EP2856377A4 (en) 2016-01-27
WO2013180736A1 (en) 2013-12-05
US20140047245A1 (en) 2014-02-13
EP2856377A1 (en) 2015-04-08

Similar Documents

Publication Publication Date Title
JP6346632B2 (ja) モバイルデバイスでの悪質なファイルを検出するシステム及び方法
JP6227772B2 (ja) 動的ライブラリを保護する方法及び装置
CN100464313C (zh) 一种移动存储装置及存取移动存储装置中加密数据的方法
US10586026B2 (en) Simple obfuscation of text data in binary files
US20160117518A1 (en) File Encryption/Decryption Device And File Encryption/Decryption Method
WO2015058620A1 (en) Method and apparatus for generating installation package corresponding to an application and executing application
US8812873B2 (en) Secure execution of a computer program using binary translators
CN107077540B (zh) 用于提供基于云的应用安全服务的方法和系统
CN107273723B (zh) 一种基于so文件加壳的Android平台应用软件保护方法
CN101103404A (zh) 在非安全区域中分配安全区域的方法和便携式存储装置
JP2012514267A (ja) ソフトウェア分離実行方法、装置、及びコンピュータで読み取り可能な記録媒体
US20170244677A1 (en) Operation method based on white-box cryptography and secure terminal for performing the method
US10867017B2 (en) Apparatus and method of providing security and apparatus and method of executing security for common intermediate language
WO2015007234A1 (en) Method and device for operating encrypted files
CN104272317A (zh) 在更安全的执行环境中标识并执行多个指令的子集
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
CN108064382A (zh) 一种基于Ukey的软件解密的方法及终端
CN106687978A (zh) 对栈破坏利用的抑制
CN110968885A (zh) 模型训练数据存储方法及装置、电子设备、存储介质
US11061998B2 (en) Apparatus and method for providing security and apparatus and method for executing security to protect code of shared object
US9965621B2 (en) Program protection device
CN117150515B (zh) Eda二次开发源代码的安全保护方法、电子设备及存储介质
CN111027082B (zh) 一种应用于ic卡的个人化数据的提取方法、装置及介质
US20170147798A1 (en) Mobile Device And Method Of Operating Mobile Device
EP2966587A1 (en) Method of protecting software program by corrupting memory chunks, and device for implementing said method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170915

Termination date: 20210601

CF01 Termination of patent right due to non-payment of annual fee