CN1608234A - 经验证代码方法和装置 - Google Patents

经验证代码方法和装置 Download PDF

Info

Publication number
CN1608234A
CN1608234A CNA028262123A CN02826212A CN1608234A CN 1608234 A CN1608234 A CN 1608234A CN A028262123 A CNA028262123 A CN A028262123A CN 02826212 A CN02826212 A CN 02826212A CN 1608234 A CN1608234 A CN 1608234A
Authority
CN
China
Prior art keywords
code module
processor
empirical tests
tests code
private 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
Application number
CNA028262123A
Other languages
English (en)
Other versions
CN1287248C (zh
Inventor
安德鲁·格洛伊
詹姆斯·萨顿
劳伦斯·史密斯
戴维·克劳罗克
吉尔伯特·奈格
迈克尔·科祖克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 CN1608234A publication Critical patent/CN1608234A/zh
Application granted granted Critical
Publication of CN1287248C publication Critical patent/CN1287248C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

一种装置和方法,用于加载、验证和/或执行被存储在专用存储器中的经验证代码模块。

Description

经验证代码方法和装置
相关申请
本申请涉及与本申请同日递交的申请序列号_/_,_题为“Processor Supporting Execution Of An Authenticated Code Instruction”以及申请序列号_/_,_题为“Authenticated Code Module”的申请。
背景技术
计算设备执行固件和/或软件代码,来进行各种操作。代码可以是用户应用程序、BIOS例程、操作系统例程等的形式。一些操作系统提供有限的保护,来维护计算设备的完整性,防备不良代码(rogue code)。例如,管理员可以将用户或者用户组限为到执行某些预先认可的代码。另外,管理员可以配置沙箱或隔离环境,可以在其中执行非受信的代码,直到管理员相信代码是可靠的。虽然上述技术提供了某种保护,但是它们通常要求管理员基于代码的提供者、代码的历史表现和/或对源代码本身的检查来手动地作出信任确定。
也已经提出了其他的机制,来提供用于作出信任决定的自动机制。举例来说,实体(例如,软件厂商)可以提供具有证书的代码,所述证书例如是X.509证书,它数字地签署代码,并证明代码的完整性。管理员可以配置操作系统,来自动地允许用户执行具有来自受信实体的证书的代码,而不用管理员逐一地分析所讨论的代码。虽然上述技术对于某些环境可能是足够的,但是上述技术固有地相信操作系统或者在操作系统的控制下执行的其他软件将正确地处理证书。
但是,某些操作可能不能相信将作出这种确定的操作系统。例如,要被执行的代码可能导致计算设备确定操作系统是否是受信的。依赖于操作系统来验证这种代码将防碍该代码的目的。另外,要被执行的代码可以包括系统初始化代码,该代码在计算设备的操作系统之前被执行。因此这种代码不能由操作系统来验证。
附图说明
这里所描述的发明在附图中以示例的方式而非限定的方式被示出。为了图示的简单明了,在图形中所示出的元素未必按比例绘制。例如,为了清楚,一些元素的尺寸可能相对于其他元素而被夸大。另外,在认为适当的地方,参考标号在图形间被重复,用于指示相应的或者类似的元素。
图1A~图1E示出了具有专用存储器的计算设备的示例实施例。
图2示出了可以被图1A~图1E所示的计算设备启动的示例经验证代码(AC)模块。
图3示出了图1A~图1E所示的计算设备的处理器的示例实施例。
图4示出了启动图2所示的AC模块的示例方法。
图5示出了终止图2所示的AC模块的执行的示例方法。
图6示出了图1A~图1E所示的计算设备的另一实施例。
图7A~图7B示出了启动和终止执行图2所示的AC模块的示例方法。
图8示出了用于模拟、仿真和/或测试图1A~图1E所示的计算设备的处理器的系统。
具体实施方式
下面的说明描述了用于启动和终止执行经验证代码(authenticatedcode,AC)模块的技术,所述经验证代码模块可以被用于各种操作,例如建立和/或维护受信计算环境。在下面的说明中,为了提供对本发明更彻底的理解,阐述了许多特定的细节,例如逻辑实现、操作码、指定操作数的装置、资源划分/共享/复制的实现、系统组件的类型和相互关系以及逻辑划分/集成选择。但是,本领域的技术人员应当认识到,本发明可以不用这些特定细节而被实现。在其他情况中,为了不使本发明模糊,没有详细地示出控制结构、门级电路和完整的软件指令序列。通过所包含的说明,本领域的普通技术人员将能够实现合适的功能,而无需不当的试验。
说明书中对“一个实施例”、“实施例”等的提及是表示所描述的实施例可以包括特定的特征、结构或特性,但是未必每个实施例都包括该特定的特征、结构或特性。而且,这样的用语未必是指同一个实施例。另外,当结合实施例描述特定的特征、结构或特性时,认为结合无论是否被明确描述的其他实施例实现这样的特征、结构或特性,是在本领域技术人员的知识范围之内。
在下面的描述和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解,这些术语并不意味着互相是同义词。更正确地说,在特定的实施例中,“连接”可以被用于指示两个或多个元素互相直接物理或电接触。“耦合”可以意味着两个或多个元素直接物理或电接触。但是,“耦合”也可以意味着两个或多个元素不直接互相接触,但是仍互相协作或者互相作用。
图1A~图1E中示出了计算设备100的示例实施例。计算设备100可以包括经由处理器总线130被耦合到芯片组120的一个或多个处理器110。芯片组120可以包括一个或多个集成电路封装件或者芯片,它们将处理器110耦合到计算设备100的系统存储器140、物理令牌150、专用存储器160、介质接口170和/或其他I/O设备。
每个处理器110可以被实现为单个集成电路、多个集成电路或具有软件例程(例如,二进制翻译例程)的硬件。另外,处理器110可以包括高速缓冲存储器112和控制寄存器114,经由控制寄存器114可以将高速缓冲存储器112配置为操作在正常缓存模式中或者在缓存用作RAM(cache-as-RAM)模式中。在正常缓存模式中,高速缓冲存储器112响应于缓存命中而满足存储器请求、响应于缓存未命中而替换缓存线,并且可以响应于处理器总线130的监听请求使缓存线无效或者替换缓存线。在缓存用作RAM模式中,高速缓冲存储器112作为随机存取存储器进行操作,其中,在高速缓冲存储器112的存储器范围之中的请求被高速缓冲存储器满足,并且不会响应于处理器总线130的监听请求而替换或者无效缓存线。
处理器110还可以包括密钥116,例如对称加密算法(例如,公知的DES(数据加密标准)、3DES(三倍数据加密标准)和AES(高级加密标准)算法)或者非对称加密算法(例如,公知的RSA算法)的密钥。处理器110可以在执行AC模块190之前使用密钥116验证AC模块190。
处理器110可以支持一个或多个操作模式,举例来说,例如实模式、保护模式、虚拟实模式和虚拟机模式(VMX模式)。另外,处理器110可以在每个所支持的操作模式中支持一个或多个特权级或者环。通常,处理器110的操作模式和特权级规定了可用于执行的指令和这些指令执行的效果。更具体地说,只有当处理器110在适当的模式和/或特权级中,处理器110才可以被允许执行某些特许的指令。
处理器110还可以支持处理器总线130的锁定。作为锁定处理器总线130的结果,该处理器110获得处理器总线130的独占所有权。其他处理器110和芯片组120不能获得处理器总线130的所有权,直到处理器总线130被释放。在示例实施例中,处理器110可以在处理器总线130上发出特定事务,该事务向其他处理器110和芯片组120提供LT.PROCESSOR.HOLD消息。LT.PROCESSOR.HOLD总线消息阻止其他处理器110和芯片组120获得处理器总线130的所有权,直到处理器110通过LT.PROCESSOR.HOLD总线消息释放处理器总线130。
但是,处理器110可以支持替代的和/或另外的锁定处理器总线130的方法。例如,处理器110可以通过发出处理器问中断、声明处理器总线锁定信号、声明处理器总线请求信号和/或引起其他处理器110停止执行来将锁定情况通知给其他处理器110和/或芯片组120。类似地,处理器110可以通过发出处理器间中断、解除声明处理器总线锁定信号、解除声明处理器总线请求信号和/或引起其他处理器110恢复执行来释放处理器总线130。
处理器110还可以支持启动AC模块190和终止AC模块190的执行。在示例实施例中,处理器110支持执行ENTERAC指令,该指令加载、验证并发起来自专用存储器160的AC模块190的执行。但是,处理器110可以支持引起处理器110加载、验证并发起AC模块190的执行的另外的或者不同的指令。这些其他的指令可以是用于启动AC模块的变体,或者可以与启动AC模块190以帮助完成较大任务的其他操作有关。除非另外指出,ENTERAC指令以及这些其他的指令在这里指的是启动AC指令,而不论这些指令中的一些可以作为另外的操作的附属作用而加载、验证并启动AC模块190的事实,举例来说,所述另外的操作例如是建立受信计算环境。
在示例实施例中,处理器110还支持执行EXITAC指令,该指令终止AC模块190的执行,并发起AC后代码(见图6)。但是,处理器110可以支持另外的或者不同的指令,这些指令导致处理器110终止AC模块190,并启动AC后代码。这些其他的指令可以是用于终止AC模块190的EXITAC指令的变体,或者可以是主要与其他操作有关的指令,所述其它操作将终止AC模块190作为较大操作的一部分来执行。除非另外指出,EXITAC指令以及这些其他的指令在这里指的是终止AC指令,而不论这些指令中的一些可以作为另外的操作的附属作用而终止AC模块190和启动AC后代码的事实,举例来说,所述另外的操作例如是拆除受信计算环境。
芯片组120可以包括存储器控制器122,用于控制对存储器140的访问。另外,芯片组120可以包括密钥124,处理器110可以使用该密钥124在执行之前验证AC模块190。类似于处理器110的密钥116,密钥124可以包括对称或非对称加密算法的密钥。
芯片组120还可以包括受信平台寄存器126,用于控制并提供关于芯片组120的受信平台特征的状态信息。在示例实施例中,芯片组120将受信平台寄存器126映射到存储器140的专用空间142和/或公共空间144,以使得处理器110能够以一致的方式访问受信平台寄存器126。
举例来说,芯片组120可以将寄存器126的子集映射为公共空间144中的只读单元,以及可以将寄存器126映射为专用空间142中的读/写单元。芯片组120可以以一种方式配置专用空间142,该方式使得只有在最高特许的模式中的处理器110才能够用特许的读和写事务访问它所映射的寄存器126。另外,芯片组120还可以以一种方式配置公共空间144,该方式使得在所有特权模式中的处理器110能够用正常读和写事务访问它所映射的寄存器126。芯片组120还可以响应于被写入命令寄存器126的OpenPrivate命令,打开专用空间142。作为打开专用空间142的结果,处理器110可以与访问公共空间144相同的方式用正常的未特许的读和写事务访问专用空间142。
计算设备100的物理令牌150包括受保护存储装置,用于记录完整性度量并存储秘密,举例来说,例如加密密钥。物理令牌150可以响应于来自处理器110和芯片组120的请求,执行各种完整性功能。具体地说,物理令牌150可以以受信的方式存储完整性度量,可以以受信的方式引用完整性度量,可以将例如加密密钥的秘密密封到特定环境中,并且可以将秘密仅解封到它被密封于其中的环境中。下文中,术语“平台密钥”被用来指被密封到特定硬件和/或软件环境中的密钥。物理令牌150可以以许多不同的方式实现。但是,在示例实施例中,物理令牌150被实现为遵守在2001年7月31日1.1版受信计算平台联盟(TCPA)主规范中所详细描述的受信平台模块(TPM)的规范。
专用存储器160可以以一种方式存储AC模块190,该方式允许要执行AC模块190的处理器或者多个处理器110访问AC模块190,并防止计算设备100的组件和其他处理器110改变AC模块190或者妨碍AC模块190的执行。如图1A所示,专用存储器160可以用执行启动AC指令的处理器110的高速缓冲存储器112来实现。或者,专用存储器160可以被实现为处理器110内部的与其高速缓冲存储器112分立的存储器区域,如图1B所示。专用存储器160还可以被实现为经由分立的专用总线被耦合到处理器110的分立的外部存储器,如图1C所示,从而使得只有具有相关联的外部存储器的处理器110能够有效地执行启动AC指令。
专用存储器160还可以通过系统存储器140被实现。在这样的实施例中,芯片组120和/或处理器110可以将存储器140的某些区域定义作专用存储器160(见图1D),该专用存储器被限定给特定处理器110,并且只能在特定处理器110处于特定的操作模式中时由特定处理器110访问。这种实施方式的一个缺点是处理器110依赖于芯片组120的存储器控制器122来访问专用存储器160和AC模块190。因此,AC模块190可能不能在不拒绝处理器110访问AC模块190的情况下重新配置存储器控制器122,从而引起处理器110中止AC模块190的执行。
专用存储器160还可以被实现为被耦合到芯片组120的分立的专用存储器控制器128的分立的存储器,如图1E所示。在这样的实施例中,专用存储器控制器128可以提供对专用存储器160的分立接口。由于分立的专用存储器控制器128,处理器110能够以保证处理器110将可以访问专用存储器160和AC模块190的方式重新配置系统存储器140的存储器控制器122。通常,分立的专用存储器控制器128以额外的存储器和存储器控制器为代价,克服了图1D所示的实施例的一些缺点。
AC模块190可以被提供在多种机器可读介质180的任何一种中。介质接口170提供对机器可读介质180和AC模块190的接口。机器可读介质180可以包括能够存储(至少临时地存储)用于通过机器接口170读取的信息的任何介质。这可以包括信号传输(通过导线、光学系统或空气作为介质)和/或物理存储介质,例如各种类型的盘和存储器存储设备。
现在参考图2,其中更详细地示出了AC模块190的示例实施例。AC模块190可以包括代码210和数据220。代码210包括一个或多个代码页212,数据220包括一个或多个数据页222。示例实施例中的代码页212和数据页222的每个对应于4千字节连续存储器区域;但是,代码210和数据220可以用不同的页大小或者以不分页方式来实现。代码页212包括要被一个或多个处理器110执行的处理器指令,数据页222包括要被一个或多个处理器110访问的数据和/或用于存储响应于执行代码页212的指令而由一个或多个处理器110产生的数据的暂存存储器(scratch pad)。
AC模块190还可以包括一个或多个头部230,头部230可以是代码210或者数据220的一部分。头部230可以提供关于AC模块190的信息,举例来说,例如模块作者、版权声明、模块版本、模块执行点位置、模块长度、验证方法等。AC模块190还可以包括签名240,签名240可以是代码210、数据220和/或头部230的一部分。签名240可以提供关于AC模块190、验证机构、验证消息、验证方法和/或摘要值的信息。
AC模块190还可以包括模块末端标记250。模块末端标记250规定AC模块190的末端,并且可以被用作规定AC模块190的长度的替代物。例如,可以以连续的方式规定代码页212和数据页222,模块末端标记250可以包括预定义的位模式,该位模式表示出代码页212和数据页222的末端。应当认识到,AC模块190可以以许多不同的方式来规定其长度和/或末端。例如,头部230可以规定AC模块190所包含的字节数或者页数。或者,启动AC和终止AC指令可以认为AC模块190具有预定义数量字节的长度,或者包含预定义数量的页。另外,启动AC和终止AC指令可以包括规定AC模块190长度的操作数。
应当认识到,AC模块190可以驻留在存储器140的连续区域中,其在物理存储器空间中是连续的,或者在虚拟存储器空间中是连续的。无论是物理地还是虚拟地连续,存储器140的存储AC模块190的位置可以通过起始位置和长度和/或模块末端标记250而被规定。或者,AC模块190可以以物理或者虚拟都不连续的方式被存储在存储器140中。例如,AC模块190可以被存储在一个数据结构中,举例来说,例如链表,其允许计算设备100以非连续方式存储和从存储器140获取AC模块190。
如下面将更详细讨论的,示例处理器110支持将AC模块190加载到专用存储器160中的启动AC指令,并从执行点260发起AC模块190的执行。将由这样的启动AC指令启动的AC模块190可以包括代码210,代码210当被加载进专用存储器160中时,将执行点260放置在有启动AC指令的一个或多个操作数所规定的位置处。或者,启动AC指令可以使得处理器110从AC模块190本身获得执行点260的位置。例如,代码210、数据220、头部230和/或签名240可以包括规定执行点260位置的一个或多个字段。
如下面将更详细讨论的,示例处理器110支持在执行之前验证AC模块190的启动AC指令。因此,AC模块190可以包括用于支持由处理器110进行的可靠性判断的信息。例如,签名240可以包括摘要值242。摘要值242可以通过对AC模块190应用散列算法(例如,SHA-1(安全散列算法)或MD5(消息摘要5))或者某种其他算法来产生。签名240还可以通过加密算法(例如,DES、3DES、AES和/或RSA算法)被加密,以防止摘要值242被改变。在示例实施例中,签名240用私钥被RSA加密,该私钥对应于处理器密钥116、芯片组密钥120和/或平台密钥152的公钥。
应当认识到,AC模块190可以通过其他机制被验证。例如,AC模块190可以利用不同的散列算法或者不同的加密算法。另外,AC模块190可以在代码210、数据220、头部230和/或签名240中包括指示出使用了哪种算法的信息。通过加密利用处理器密钥116、芯片组密钥124或平台密钥152的对称或非对称密钥解密的整个AC模块190,可以保护AC模块190。
图3中更加详细地示出了处理器110的示例实施例。如所描绘的,处理器110可以包括前端302、寄存器文件306、一个或多个执行单元370和退休(retirement)单元或后端380。前端302包括处理器总线接口304、具有指令和指令指针寄存器314、316的取指单元330、译码器340、指令队列350以及一个或多个高速缓冲存储器360。寄存器文件306包括通用寄存器312、状态/控制寄存器318以及其他寄存器320。取指单元330经由处理器总线接口304从存储器140或者从高速缓冲存储器360取出由指令指针寄存器316所规定的指令,并将所取的指令存储在指令寄存器314中。
指令寄存器314可以包含多于一个的指令。因此,译码器340识别指令寄存器314中的指令,并以适合于执行的形式将所识别的指令放置到指令队列350中。例如,译码器340可以在指令队列350中为每个所识别的指令产生并存储一个或多个微操作(uop)。或者,译码器340可以在指令队列350中为每个所识别的指令产生并存储单个宏操作(Mop)。除非另外指出,术语op在下面被用来指uop和Mop两者。
处理器110还包括一个或多个执行单元370,执行单元370进行由指令队列350的op所指示的操作。例如,执行单元370可以包括散列单元、解密单元和/或微代码单元,这些单元实现可以被用于验证AC模块190的验证操作。执行单元370可以按顺序地执行存储在指令队列350中的op。但是,在示例实施例中,处理器110支持op被执行单元370乱序执行。在这样的实施例中,处理器110还可以包括退休单元380,退休单元380从指令队列350中按顺序地去除op,并将执行op的结果提交给一个或多个寄存器312、314、316、318、320,以保证正确的有序结果。
译码器340可以为所识别的启动AC指令产生一个或多个op,并且执行单元370可以响应于执行相关联的op,加载、验证和/或发起AC模块190的执行。另外,译码器340可以为所识别的终止AC指令产生一个或多个op,并且执行单元370可以响应于执行相关联的op,终止AC模块190的执行、调整计算设备100的安全状况和/或发起AC后代码的执行。
具体地说,译码器340可以产生取决于启动AC指令的一个或多个op,以及与启动AC指令相关联的零个或更多操作数。每个启动AC指令和其相关联的操作数规定用于启动AC模块190的参数。例如,启动AC指令和/或操作数可以规定关于AC模块190的参数,例如AC模块位置、AC模块长度和/或AC模块执行点。启动AC指令和/或操作数还可以规定关于专用存储器160的参数,举例来说,例如专用存储器位置、专用存储器长度和/或专用存储器实现。启动AC指令和/或操作数还可以规定用于验证AC模块190的参数,例如规定使用了哪种验证算法、散列算法、解密算法和/或其他算法。启动AC指令和/或操作数还可以规定用于算法的参数,例如密钥长度、密钥位置和/或密钥。启动AC指令和/或操作数还可以规定为了AC模块的启动用于配置计算机系统100的参数,举例来说,例如规定要被屏蔽/去屏蔽的事件和/或要被更新的安全能力。
启动AC指令和/或操作数可以提供比上文所描述的那些更少的、另外的和/或不同的参数。另外,启动AC指令可以包括零个或更多个显式操作数和/或隐式操作数。例如,尽管启动AC指令自身不包括定义操作数的位置,但是启动AC指令可以具有由处理器寄存器和/或存储器位置隐式规定的这些操作数的值。另外,启动AC指令可以通过各种技术显式地规定操作数,举例来说,这些技术例如是立即数、寄存器标识、绝对地址和/或相对地址。
译码器340还可以产生取决于终止AC指令的一个或多个op,以及与终止AC指令相关联的零个或更多个操作数。每个终止AC指令和其相关联的操作数规定用于终止AC模块190的执行的参数。例如,终止AC指令和/或操作数可以规定关于AC模块190的参数,例如AC模块位置和/或AC模块长度。终止AC指令和/或操作数还可以规定关于专用存储器160的参数,举例来说,例如专用存储器位置、专用存储器长度和/或专用存储器实现。终止AC指令和/或操作数可以规定关于启动AC后代码的参数,举例来说,例如启动方法和/或AC后代码的执行点。终止AC指令和/或操作数还可以规定为了AC后代码的执行用于配置计算机系统100的参数,举例来说,例如规定要被屏蔽/去屏蔽的事件和/或要被更新的安全能力。
终止AC指令和/或操作数可以提供比上文所描述的那些更少的、另外的和/或不同的参数。另外,终止AC指令可以以上面描述的有关启动AC指令的方式,包括零个或更多个显式操作数和/或隐式操作数。
现在参考图4,其中描述了启动AC模块190的方法400。具体地说,方法400示出了处理器110响应于执行具有验证操作数、模块操作数和长度操作数的示例ENTERAC指令的操作。但是,本领域的技术人员应当能够实现具有更少的、另外的和/或不同的操作数的其他启动AC指令,而无需不当的试验。
在框404中,处理器110确定环境是否适合于开始AC模块190的执行。例如,处理器110可以核实其当前的特权级、操作模式和/或寻址模式是适当的。另外,如果处理器支持多硬件线程,则处理器可以核实所有其他的线程已经被停止。处理器110还可以核实芯片组120符合某些要求。在ENTERAC指令的示例实施例中,处理器110响应于如下情况确定出环境是适合的:确定出处理器110在操作的受保护平展(flat)模式中、处理器当前的特权级是0、处理器110已经停止了执行的所有其他线程以及芯片组120提供了如一个或多个寄存器126所指示的受信平台能力。启动AC指令的其他实施例可以以不同的方式定义适当的环境。其他启动AC指令和/或相关联的操作数可以规定引起处理器110核实其环境的更少的、另外的和/或不同的参数的环境要求。
响应于确定出环境不适合于启动AC模块190,处理器110可以用适当的错误代码终止ENTERAC指令(框408)。或者,处理器110还可以转入某种更受信的软件层,以允许ENTERAC指令的仿真。
否则,处理器110在框414中可以更新事件处理,以支持启动AC模块190。在ENTERAC指令的示例实施例中,处理器110屏蔽了INTR、NMI、SMI、INIT和A20M事件的处理。其他启动AC指令和/或相关联的操作数可以规定屏蔽更少的、另外的和/或不同的事件。另外,其他启动AC指令和/或相关联的操作数可以显式地规定要被屏蔽的事件以及要被去屏蔽的事件。或者,其他实施例可以通过引起计算设备100执行受信代码而避免屏蔽事件,受信代码例如是响应于这种事件的AC模块190的事件处理程序。
处理器110在框416中可以锁定处理器总线130,以防止在启动和执行AC模块190期间,其他处理器110和芯片组120获得处理器总线130的所有权。在ENTERAC指令的示例实施例中,处理器110通过产生向其他处理器110和处理器110提供LT.PROCESSOR.HOLD总线消息的特定事务,获得处理器总线130的独占所有权。启动AC指令和/或相关联的操作数的其他实施例可以规定处理器总线130保持不被锁定或者可以规定用于锁定处理器总线130的不同方式。
处理器110在框420中可以配置其专用存储器160,用于接收AC模块190。处理器110可以清除专用存储器160的内容,并可以配置与专用存储器160相关联的控制结构,以使得处理器110能够访问专用存储器160。在ENTERAC指令的示例实施例中,处理器110更新一个或多个控制寄存器,以将高速缓冲存储器112切换到缓存用作RAM模式,并使其高速缓冲存储器112的内容无效。
其他启动AC指令和/或相关联的操作数可以规定用于专用存储器160不同实现(例如,见图1A~图1E)的专用存储器参数。因此,为了准备用于AC模块190的专用存储器160,执行这些其他启动AC指令的处理器110可以进行不同的操作。例如,处理器110可以使能/配置与专用存储器160相关联的存储器控制器(例如,图1E的PM(专用存储器)控制器128)。处理器110还可以向专用存储器160提供清除、复位和/或无效信号以清除专用存储器160。或者,处理器110可以向专用存储器160写入零或某种其他位模式、从专用存储器160去除供电和/或利用某种其他机制来清除专用存储器160,如启动AC指令和/或操作数所规定的那样。
在框424中,处理器110将AC模块190加载进其专用存储器160。在ENTERAC指令的示例实施例中,处理器110从由地址操作数所规定的存储器140的位置开始读取,直到由长度操作数所规定的数量的位被传输到其高速缓冲存储器112中。启动AC指令和/或相关联的操作数的其他实施例可以以不同的方式规定用于将AC模块190加载进专用存储器160的参数。例如,其他的启动AC指令和/或相关联的操作数可以以许多不同的方式规定AC模块190的位置、AC模块190在该处要被加载进专用存储器160的专用存储器160位置和/或AC模块190的结尾。
在框428中,处理器110还可以锁定专用存储器160。在ENTERAC指令的示例实施例中,处理器110更新一个或多个控制寄存器,以锁定其高速缓冲存储器112,来防止外部事件改变存储AC模块190的线,这些外部事件例如是来自处理器或者I/O设备的监听请求。但是,其他启动AC指令和/或相关联的操作数可以规定处理器110的其他操作。例如,处理器110可以配置与专用存储器160相关联的存储器控制器(例如,图1E的PM控制器128),以防止其他处理器110和/或芯片组120访问专用存储器160。在一些实施例中,专用存储器160可能已经被充分地锁定,因此处理器110在框428中可以不采取行动。
在框432中,处理器基于由ENTERAC指令的保护操作数所规定的保护机制,确定被存储在其专用存储器160中的AC模块190是否是可靠的。在ENTERAC指令的示例实施例中,处理器110获取由保护操作数所规定的处理器密钥116、芯片组密钥124和/或平台密钥152。处理器110然后使用所获取的密钥对AC模块190的签名240进行RSA解密,以获得摘要值242。处理器110还使用SHA-1散列对AC模块190进行散列,以获得计算出的摘要值。然后响应于计算出的摘要值与摘要值242具有预期的关系(例如,互相相等),处理器110确定出AC模块190是可靠的。否则,处理器110确定出AC模块190是不可靠的。
其他启动AC指令和/或相关联的操作数可以规定不同的验证参数。例如,其他启动AC指令和/或相关联的操作数可以规定不同的验证方法、不同的解密算法和/或不同的散列算法。其他启动AC指令和/或相关联的操作数还可以规定不同的密钥长度、不同的密钥位置和/或用于验证AC模块190的密钥。
响应于确定出AC模块190是不可靠的,在框436中,处理器110生成错误代码,并终止启动AC指令的执行。否则,在框440中,处理器110可以更新计算设备100的安全状况,以支持AC模块190的执行。在ENTERAC指令的示例实施例中,在框440中处理器110将OpenPrivate命令写入芯片组120的命令寄存器126,以使得处理器110能够通过专用空间142,用正常的未特许的读和写事务访问寄存器126。
其他启动AC指令和/或相关联的操作数可以规定用于为了AC模块的执行而配置计算设备100的其他操作。例如,启动AC指令和/或相关联的操作数可以规定处理器110将专用空间142留在其当前状态中。启动AC指令和/或相关联的操作数还可以规定处理器110使能和/或禁止对某些计算资源的访问,这些计算资源例如是受保护的存储器区域、受保护的存储设备、存储设备的受保护的分区、存储设备的受保护的文件等。
更新计算设备100的安全状况之后,在框444中,处理器110可以发起AC模块190的执行。在ENTERAC指令的示例实施例中,处理器110将由模块操作数所提供的物理地址加载到其指令指针寄存器316中,引起处理器110跳至由该物理地址所规定的执行点260并从该执行点260执行AC模块190。其他启动AC指令和/或相关联的操作数可以以许多其它方式规定执行点260的位置。例如,启动AC指令和/或相关联的操作数可以引起处理器110从AC模块190自身获得执行点260的位置。
现在参考图5,其中描绘了终止AC模块190的方法500。具体地说,方法500示出了处理器110响应于执行具有保护操作数、事件操作数和启动操作数的EXITAC指令的操作。但是,本领域的技术人员将能够实现具有更少的、另外的和/或不同的操作数的其他终止AC指令,而无需不当的试验。
在框504中,处理器110可以清除和/或重新配置专用存储器160,以防止对存储在专用存储器160中的AC模块190的另外的访问。在EXITAC指令的示例实施例中,处理器110使其高速缓冲存储器112无效,并更新控制寄存器,以将高速缓冲存储器112切换到操作的正常缓存模式。
终止AC指令和/或相关联的操作数可以规定用于专用存储器160不同实现(例如,见图1A~图1E)的专用存储器参数。因此,终止AC指令和/或相关联的操作数可以引起处理器110为了准备计算设备100执行AC后代码而进行不同的操作。例如,处理器110可以禁止与专用存储器160相关联的存储器控制器(例如,图1E的PM控制器128),以防止对AC模块190的另外的访问。处理器110还可以向专用存储器160提供清除、复位和/或无效信号,以清除专用存储器160。或者,处理器110可以向专用存储器160写入零或某种其他的位模式、从专用存储器160去除供电和/或利用某种其他的机制来清除专用存储器160,如终止AC指令和/或相关联的操作数所规定的那样。
在框506中,处理器110可以基于保护操作数更新计算设备100的安装状况,以支持AC后代码的执行。在EXITAC指令的示例实施例中,保护操作数规定处理器110是关闭专用空间142还是将专用空间142留在其当前状态中。响应于确定出将专用空间142留在其当前状态中,处理器110进行到框510。否则,处理器110通过向命令寄存器126写入ClosePrivate命令关闭专用空间142,以防止处理器110通过对专用空间142的正常的未特许的读和写事务而对寄存器126的另外的访问。
另一个实施例的终止AC指令和/或相关联的操作数可以引起处理器110更新计算设备100的安全状况,以支持AC模块190之后的代码的执行。例如,终止AC指令和/或相关联的操作数可以规定处理器110使能和/或禁止对某些计算资源的访问,这些计算资源例如是受保护的存储器区域、受保护的存储设备、存储设备的受保护的分区、存储设备的受保护的文件等。
在框510中,处理器110可以解除处理器总线130的锁定,以使得其他处理器110和芯片组120能够获得处理器总线130的所有权。在EXITAC指令的示例实施例中,处理器110通过产生特定的事务释放对处理器总线130的独占所有权,该事务向其他处理器110和芯片组120提供LT.PROCESSOR.RELEASE总线消息。终止AC指令和/或相关联的操作数的其他实施例可以规定处理器总线130保持锁定,或者可以规定解除处理器总线130的锁定的不同方式。
在框514中,处理器110可以基于屏蔽操作数更新事件处理。在EXITAC指令的示例实施例中,屏蔽操作数规定处理器110是使能事件处理还是将事件处理保留在其当前状态中。响应于确定出将事件处理保留在其当前状态中,处理器110进行到框516。否则,处理器110去除INTR、NMI、SMI、INIT和A20M事件的屏蔽,以使能这些事件的处理。其他终止AC指令和/或相关联的操作数可以规定去除更少的、另外的和/或不同的事件的屏蔽。另外,其他终止AC指令和/或相关联的操作数可以显式地规定要被屏蔽的事件以及要被去屏蔽的事件。
在框516中,处理器110终止AC模块190的执行,并启动由启动操作数所规定的AC后代码。在EXITAC指令的示例实施例中,处理器110用由启动操作数所规定的代码段和段偏移量更新其代码段寄存器和指令指针寄存器。从而,处理器110跳至由代码段和段偏移量所规定的AC后代码的执行点,并开始从该执行点执行AC后代码。
其他终止AC指令和/或相关联的操作数可以以许多不同的方式规定AC后代码的执行点。例如,启动AC指令可以引起处理器110保存当前的指令指针,以识别AC后代码的执行点。在这样的实施例中,终止AC指令可以获取由启动AC指令所保存的执行点,并从所获取的执行点发起执行AC后代码。以这种方式,终止AC指令恢复启动AC指令之后的指令的执行。另外,在这样的实施例中,AC模块190看似已经通过调用代码被调用,类似于函数调用或者系统调用。
图6中示出了计算设备100的另一实施例。计算设备100包括处理器110、提供处理器110对存储器空间640的访问的存储器接口620以及提供处理器110对介质180访问的介质接口170。存储器空间640包括地址空间,该地址空间可以跨越多个机器可读介质,处理器110可以执行来自这些机器可读介质的代码,举例来说,这些机器可读介质例如是固件、系统存储器140、专用存储器160、硬盘存储装置、网络存储装置等(见图1A~图1E)。存储空间640包括AC前代码642、AC模块190以及AC后代码646。AC前代码642可以包括操作系统代码、系统库代码、共享库代码、应用代码、固件例程、BIOS例程和/或其他可以启动AC模块190的执行的例程。AC后代码646可以类似地包括操作系统代码、系统库代码、共享库代码、应用代码、固件例程、BIOS例程和/或其他可以在AC模块190之后被执行的例程。应当认识到,AC前代码642和AC后代码646可以是相同的软件和/或固件模块,或者是不同的软件和/或固件模块。
图7A中示出了启动和终止AC模块的示例实施例。在框704中,计算设备100响应于执行AC前代码642,将AC模块190存储到存储器空间640中。在示例实施例中,计算设备100通过介质接口170从机器可读介质180获取AC模块190,并将AC模块190存储在存储器空间640中。例如,计算设备100可以从固件、硬盘驱动器、系统存储器、网络存储装置、文件服务器、网络服务器等获取AC模块190,并可以将所获取的AC模块190存储进计算设备100的系统存储器140中。
在框708中,计算设备100响应于执行AC前代码642,加载、验证并发起AC模块190的执行。例如,AC前代码642可以包括ENTERAC指令或者其他启动AC指令,所述指令引起计算设备100将AC模块190传输到存储器空间640的专用存储器160、验证AC模块190并从其执行点调用AC模块190的执行。或者,AC前代码642可以包括一系列指令,这些指令引起计算设备100将AC模块190传输到存储器空间640的专用存储器160、验证AC模块190并从其执行点调用AC模块190的执行。
在框712中,计算设备100执行AC模块190的代码210(见图2)。在框716中,计算设备100终止AC模块190的执行,并发起存储器空间640的AC后代码646的执行。例如,AC模块190可以包括EXITAC指令或者另外的终止AC指令,所述指令引起计算设备100终止AC模块190的执行、更新计算设备100的安全状况并从AC后代码646的执行点发起AC后代码646的执行。或者,AC模块190可以包括一系列指令,这些指令引起计算设备100终止AC模块190的执行,并从AC后代码646的执行点发起AC后代码646的执行。
图7B中示出了启动和终止AC模块的另一示例实施例。在框740中,计算设备100响应于执行AC前代码642,将AC模块190存储到存储器空间640中。在示例实施例中,计算设备100通过介质接口170从机器可读介质180获取AC模块190,并将AC模块190存储在存储器空间640中。例如,计算设备100可以从固件、硬盘驱动器、系统存储器、网络存储装置、文件服务器、网络服务器等获取AC模块190,并将所获取的AC模块190存储进计算设备100的系统存储器140中。
在框744中,计算设备100响应于执行AC前代码642,加载、验证并发起AC模块190的执行。在框744中,计算设备100还存储基于指令指针的AC后代码646的执行点。例如,AC前代码642可以包括ENTERAC指令或者其他启动AC指令,所述指令引起计算设备100将AC模块190传输到存储器空间640的专用存储器160、验证AC模块190、从其执行点调用AC模块190的执行并保存指令指针,以便处理器110可以在执行AC模块190之后返回到在启动AC指令之后的指令。或者,AC前代码642可以包括一系列指令,这些指令引起计算设备100将AC模块190传输到存储器空间640的专用存储器160、验证AC模块190、从其执行点调用AC模块190的执行并保存指令指针。
在框748中,计算设备100执行AC模块190的代码210(见图2)。在框752中,计算设备100终止AC模块190的执行、加载在框744中所存储的基于指令指针的执行点并发起跟随在框744中所执行的启动AC指令或者一系列指令之后的指令的执行。例如,AC模块190可以包括EXITAC指令或者另一个终止AC指令,所述指令引起计算设备100终止AC模块190的执行、更新计算设备100的安全状况并从AC后代码646的执行点发起AC后代码646的执行,该执行点由在框744中被存储的指令指针规定。或者,AC模块190可以包括一系列指令,这些指令引起计算设备100终止AC模块190的执行,更新计算设备100的安全状况并从由在框744中所存储的指令指针所规定的AC后代码646的执行点发起AC后代码646的执行。
图8示出了用于模拟、仿真和制造使用所公开的技术的设计的各种设计表示或形式。表示一种设计的数据可以以许多方式来表示该设计。首先,可以使用硬件描述语言或者另外的功能性描述语言来表示硬件,这一点在模拟中很有用,其中所述语言基本上提供了所设计的硬件期望如何执行的计算机化模型。硬件模型810可以被存储在例如计算机存储器的存储介质800中,以便该模型可以使用模拟软件820来模拟,该模拟软件820对硬件模型810应用特定的测试程序组830,以确定它是否的确如所预期的发挥作用。在一些实施例中,模拟软件没有被记录、保存或者包含在介质中。
另外,在设计过程的某些阶段可以产生具有逻辑和/或晶体管门的电路级模型。这种模型可以被类似地模拟,有时是通过专用硬件模拟器,这些模拟器使用可编程逻辑建立模型。在一定程度上更进一步地说,这种模拟可以是仿真技术。总之,可重新配置的硬件是另一种实施例,其可以调用存储着使用了所公开技术的模型的机器可读介质。
另外,大多数设计在某些阶段达到了数据水平,所述数据表示了硬件模型中的各种设备的物理布局。在使用传统半导体制造技术的情况中,表示硬件模型的数据可以是规定在对于掩膜的不同掩膜层上存在或者不存在各种特征的数据,其中所述掩膜被用于生产集成电路。同样,表示集成电路的这种数据体现了所公开的技术,其中可以模拟或者制造数据中的电路系统或者逻辑以实现这些技术。
在所述设计的任何表示中,可以以计算机可读介质的任何形式来存储数据。经调制或以其它方式产生以传输该信息的光波或电波860、存储器850、或例如存储盘的磁或光存储设备840可以是所述介质。描述设计或设计的特定部分的位集可以是能够单独出售或由其它人使用以进行进一步设计或制造的物品。
虽然已经在附图中示出和描述了某些示例实施例,但是应当理解,这些实施例对于本广泛的发明来说仅仅示例性的,而不是限定性的,并且因为在学习本公开物之后,本领域的普通技术人员能够想到各种其他的修改,所以本发明不限于所示出和描绘的特定的结构和安排。

Claims (34)

1.一种方法,包括
将经验证代码模块传输到专用存储器;以及
响应于确定出被存储在所述专用存储器中的所述经验证代码模块是可靠的,执行存储在所述专用存储器中的所述经验证代码模块。
2.根据权利要求1所述的方法,其中所述传输步骤还包括从存储器传输由操作数所规定的多个字节。
3.根据权利要求1所述的方法,还包括
将处理器的高速缓冲存储器配置为类似随机存取存储器而操作,
其中,所述传输步骤包括将所述经验证代码模块存储在所述高速缓冲存储器中。
4.根据权利要求3所述的方法,还包括在将所述经验证代码模块存储在所述高速缓冲存储器中之前,使所述高速缓冲存储器无效。
5.根据权利要求3所述的方法,还包括锁定所述高速缓冲存储器,以防止所述经验证代码模块的线被替换。
6.根据权利要求1所述的方法,还包括基于所述经验证代码模块的数字签名,确定所述经验证代码模块是否是可靠的。
7.根据权利要求1所述的方法,还包括
从被存储在所述专用存储器中的所述经验证代码模块获得第一值;
从所述经验证代码模块计算第二值;以及
响应于所述第一值和所述第二值具有预定关系,确定出所述经验证代码模块是可靠的。
8.根据权利要求1所述的方法,还包括
获取密钥,
利用所述密钥解密所述经验证代码模块的数字签名,以获得第一值,
对所述经验证代码模块进行散列,以获得第二值;以及
响应于所述第一值和所述第二值具有预定关系,执行所述经验证代码模块。
9.根据权利要求8所述的方法,其中
所述解密步骤包括使用所述密钥对所述数字签名进行RSA解密,以及
所述散列步骤包括对所述经验证代码模块应用SHA-1散列,以获得所述第二值。
10.根据权利要求8所述的方法,还包括从处理器获取所述密钥。
11.根据权利要求8所述的方法,还包括从芯片组获取所述密钥。
12.根据权利要求8所述的方法,还包括从令牌获取所述密钥。
13.根据权利要求1所述的方法,其中,所述传输步骤包括从机器可读介质接收所述经验证代码模块。
14.一种计算设备,包括
芯片组;
耦合到所述芯片组的存储器;
机器可读介质接口,用于从机器可读介质接收经验证代码模块;
耦合到所述芯片组的专用存储器;以及
处理器,用于将所述经验证代码模块从所述机器可读介质接口传输到所述专用存储器,并用于验证被存储在所述专用存储器中的所述经验证代码模块。
15.根据权利要求14所述的计算设备,其中,所述芯片组包括耦合到所述存储器的存储器控制器以及耦合到所述专用存储器的分立的专用存储器控制器。
16.根据权利要求14所述的计算设备,其中
所述芯片组包括密钥,以及
所述处理器基于所述芯片组的所述密钥,验证被存储在所述专用存储器中的所述经验证代码模块。
17.根据权利要求14所述的计算设备,其中
所述处理器包括密钥,并基于所述处理器的所述密钥验证被存储在所述专用存储器中的所述经验证代码模块。
18.根据权利要求14所述的计算设备,还包括
耦合到所述芯片组的令牌,所述令牌包括密钥,其中
所述处理器基于所述令牌的所述密钥,验证被存储在所述专用存储器中的所述经验证代码模块。
19.一种计算设备,包括
芯片组;
机器可读介质接口,用于从机器可读介质接收经验证代码模块;
经由处理器总线耦合到所述芯片组的处理器,所述处理器用于将所述经验证代码模块从所述机器可读介质接口传输到所述处理器的专用存储器,并用于验证被存储在所述专用存储器中的所述经验证代码模块。
20.根据权利要求19所述的计算设备,其中,所述专用存储器经由专用总线被耦合到所述处理器。
21.根据权利要求19所述的计算设备,其中,所述专用存储器在所述处理器的内部。
22.根据权利要求19所述的计算设备,其中,所述专用处理器包括所述处理器的内部高速缓冲存储器。
23.根据权利要求19所述的计算设备,还包括
经由所述处理器总线耦合到所述芯片组的其他处理器,其中
所述处理器还锁定所述处理器总线,以防止所述其他处理器改变所述经验证代码模块。
24.一种计算设备,包括
存储器;
芯片组,所述芯片组包括将所述存储器的一部分定义为专用存储器的存储器控制;
机器可读介质,用于从机器可读介质接收经验证代码模块;和
处理器,用于将所述经验证代码模块从所述机器可读介质接口传输到所述专用存储器,并用于验证被存储在所述专用存储器中的所述经验证代码模块。
25.根据权利要求24所述的计算设备,其中,所述芯片组包括耦合到所述存储器的存储器控制器以及耦合到所述专用存储器的分立的专用存储器控制器。
26.根据权利要求24所述的计算设备,其中
所述芯片组包括密钥,以及
所述处理器基于所述芯片组的所述密钥,验证被存储在所述专用存储器中的所述经验证代码模块。
27.根据权利要求24所述的计算设备,其中
所述处理器包括密钥,并基于所述处理器的所述密钥验证被存储在所述专用存储器中的所述经验证代码模块。
28.根据权利要求24所述的计算设备,还包括
令牌,所述令牌包括密钥,其中
所述处理器基于所述令牌的所述密钥,验证被存储在所述专用存储器中的所述经验证代码模块。
29.一种机器可读介质,包括一个或多个指令,所述指令响应于被执行而引起计算设备
将经验证代码模块传输到与处理器相关联的专用存储器;以及
响应于确定出被存储在所述专用存储器中的所述经验证代码模块是可靠的,执行被存储在所述专用处理器中的所述经验证代码模块。
30.根据权利要求29所述的机器可读介质,其中所述一个或多个指令响应于被执行而引起所述计算设备
基于所述经验证代码模块的数字签名,确定所述经验证代码模块是否是可靠的。
31.根据权利要求29所述的机器可读介质,其中所述一个或多个指令响应于被执行而引起所述计算设备
从被存储在所述专用存储器中的所述经验证代码模块获得第一值;
从所述经验证代码模块计算第二值;以及
响应于所述第一值和所述第二值具有预定关系,确定出所述经验证代码模块是可靠的。
32.根据权利要求29所述的机器可读介质,其中所述一个或多个指令响应于被执行而引起所述计算设备
获取非对称密钥;
用所述非对称密钥解密所述经验证代码模块的数字签名,以获得第一值;
对所述经验证代码模块进行散列,以获得第二值;以及
响应于所述第一值和所述第二值具有预定关系,发起所述经验证代码模块的执行。
33.根据权利要求29所述的机器可读介质,其中所述一个或多个指令包括启动指令,所述启动指令响应于被执行而引起所述计算设备
获取非对称密钥;
用所述非对称密钥解密所述经验证代码模块的数字签名,以获得第一值;
对所述经验证代码模块进行散列,以获得第二值;以及
响应于所述第一值和所述第二值具有预定关系,发起所述经验证代码模块的执行。
34.根据权利要求33所述的机器可读介质,其中所述一个或多个指令响应于被执行而引起所述计算设备
经由机器可读介质接口接收所述经验证代码模块。
CNB028262123A 2001-12-28 2002-12-20 经验证代码方法和装置 Expired - Fee Related CN1287248C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/041,071 2001-12-28
US10/041,071 US20030126454A1 (en) 2001-12-28 2001-12-28 Authenticated code method and apparatus

Publications (2)

Publication Number Publication Date
CN1608234A true CN1608234A (zh) 2005-04-20
CN1287248C CN1287248C (zh) 2006-11-29

Family

ID=21914564

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028262123A Expired - Fee Related CN1287248C (zh) 2001-12-28 2002-12-20 经验证代码方法和装置

Country Status (8)

Country Link
US (1) US20030126454A1 (zh)
EP (1) EP1502168A2 (zh)
JP (1) JP2006507548A (zh)
KR (2) KR100668000B1 (zh)
CN (1) CN1287248C (zh)
AU (1) AU2002364106A1 (zh)
TW (1) TW200304620A (zh)
WO (1) WO2003058412A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109582525A (zh) * 2018-10-19 2019-04-05 京信通信系统(中国)有限公司 测试代码验证方法、验证装置、设备和存储介质

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US7174457B1 (en) * 1999-03-10 2007-02-06 Microsoft Corporation System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US7480806B2 (en) * 2002-02-22 2009-01-20 Intel Corporation Multi-token seal and unseal
US7900054B2 (en) * 2002-03-25 2011-03-01 Intel Corporation Security protocols for processor-based systems
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7076669B2 (en) * 2002-04-15 2006-07-11 Intel Corporation Method and apparatus for communicating securely with a token
US7487365B2 (en) * 2002-04-17 2009-02-03 Microsoft Corporation Saving and retrieving data based on symmetric key encryption
US7890771B2 (en) 2002-04-17 2011-02-15 Microsoft Corporation Saving and retrieving data based on public key encryption
US7974416B2 (en) * 2002-11-27 2011-07-05 Intel Corporation Providing a secure execution mode in a pre-boot environment
FR2849226B1 (fr) * 2002-12-20 2005-12-02 Oberthur Card Syst Sa Procede et dispositif de securisation de l'execution d'un programme informatique.
US20050044408A1 (en) * 2003-08-18 2005-02-24 Bajikar Sundeep M. Low pin count docking architecture for a trusted platform
US8079034B2 (en) 2003-09-15 2011-12-13 Intel Corporation Optimizing processor-managed resources based on the behavior of a virtual machine monitor
US7739521B2 (en) 2003-09-18 2010-06-15 Intel Corporation Method of obscuring cryptographic computations
US7681046B1 (en) * 2003-09-26 2010-03-16 Andrew Morgan System with secure cryptographic capabilities using a hardware specific digital secret
US7694151B1 (en) * 2003-11-20 2010-04-06 Johnson Richard C Architecture, system, and method for operating on encrypted and/or hidden information
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US8037314B2 (en) 2003-12-22 2011-10-11 Intel Corporation Replacing blinded authentication authority
US7222062B2 (en) * 2003-12-23 2007-05-22 Intel Corporation Method and system to support a trusted set of operational environments using emulated trusted hardware
US20050198461A1 (en) * 2004-01-12 2005-09-08 Shaw Mark E. Security measures in a partitionable computing system
GB0411654D0 (en) * 2004-05-25 2004-06-30 Hewlett Packard Development Co A generic trusted platform architecture
US7356456B1 (en) * 2004-11-12 2008-04-08 Paravirtual Corporation Computer storage exception handing apparatus and method for virtual hardware system
US8924728B2 (en) 2004-11-30 2014-12-30 Intel Corporation Apparatus and method for establishing a secure session with a device without exposing privacy-sensitive information
CN100489728C (zh) * 2004-12-02 2009-05-20 联想(北京)有限公司 一种建立计算机中可信任运行环境的方法
US20060136608A1 (en) * 2004-12-22 2006-06-22 Gilbert Jeffrey D System and method for control registers accessed via private operations
US8533777B2 (en) 2004-12-29 2013-09-10 Intel Corporation Mechanism to determine trust of out-of-band management agents
US7840845B2 (en) * 2005-02-18 2010-11-23 Intel Corporation Method and system for setting a breakpoint
US20060294380A1 (en) * 2005-06-28 2006-12-28 Selim Aissi Mechanism to evaluate a token enabled computer system
US8549592B2 (en) * 2005-07-12 2013-10-01 International Business Machines Corporation Establishing virtual endorsement credentials for dynamically generated endorsement keys in a trusted computing platform
US7644258B2 (en) 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US9176741B2 (en) 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
JP4568196B2 (ja) 2005-09-01 2010-10-27 株式会社東芝 プロセッサ、コンピュータシステムおよび認証方法
US7809957B2 (en) 2005-09-29 2010-10-05 Intel Corporation Trusted platform module for generating sealed data
US8973094B2 (en) * 2006-05-26 2015-03-03 Intel Corporation Execution of a secured environment initialization instruction on a point-to-point interconnect system
JP2008234074A (ja) * 2007-03-16 2008-10-02 Fujitsu Ltd キャッシュ装置
US9053323B2 (en) 2007-04-13 2015-06-09 Hewlett-Packard Development Company, L.P. Trusted component update system and method
WO2009090505A1 (en) * 2008-01-20 2009-07-23 Nds Limited Secure data utilization
US8117642B2 (en) * 2008-03-21 2012-02-14 Freescale Semiconductor, Inc. Computing device with entry authentication into trusted execution environment and method therefor
US9058491B1 (en) 2009-03-26 2015-06-16 Micron Technology, Inc. Enabling a secure boot from non-volatile memory
US20110167496A1 (en) * 2009-07-07 2011-07-07 Kuity Corp. Enhanced hardware command filter matrix integrated circuit
US9336410B2 (en) * 2009-12-15 2016-05-10 Micron Technology, Inc. Nonvolatile memory internal signature generation
US9202015B2 (en) * 2009-12-31 2015-12-01 Intel Corporation Entering a secured computing environment using multiple authenticated code modules
JP4937365B2 (ja) * 2010-02-22 2012-05-23 株式会社東芝 プロセッサ、コンピュータシステムおよび認証方法
US10402218B2 (en) 2016-08-30 2019-09-03 Intel Corporation Detecting bus locking conditions and avoiding bus locks
JP2022135443A (ja) * 2021-03-05 2022-09-15 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム

Family Cites Families (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3699532A (en) * 1970-04-21 1972-10-17 Singer Co Multiprogramming control for a data handling system
US3996449A (en) * 1975-08-25 1976-12-07 International Business Machines Corporation Operating system authenticator
US4162536A (en) * 1976-01-02 1979-07-24 Gould Inc., Modicon Div. Digital input/output system and method
US4037214A (en) * 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
US4247905A (en) * 1977-08-26 1981-01-27 Sharp Kabushiki Kaisha Memory clear system
US4278837A (en) * 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
US4276594A (en) * 1978-01-27 1981-06-30 Gould Inc. Modicon Division Digital computer with multi-processor capability utilizing intelligent composite memory and input/output modules and method for performing the same
US4207609A (en) * 1978-05-08 1980-06-10 International Business Machines Corporation Method and means for path independent device reservation and reconnection in a multi-CPU and shared device access system
JPS5823570B2 (ja) * 1978-11-30 1983-05-16 国産電機株式会社 液面検出装置
JPS5576447A (en) * 1978-12-01 1980-06-09 Fujitsu Ltd Address control system for software simulation
US4307447A (en) * 1979-06-19 1981-12-22 Gould Inc. Programmable controller
US4307214A (en) * 1979-12-12 1981-12-22 Phillips Petroleum Company SC2 activation of supported chromium oxide catalysts
US4319323A (en) * 1980-04-04 1982-03-09 Digital Equipment Corporation Communications device for data processing system
US4419724A (en) * 1980-04-14 1983-12-06 Sperry Corporation Main bus interface package
US4366537A (en) * 1980-05-23 1982-12-28 International Business Machines Corp. Authorization mechanism for transfer of program control or data between different address spaces having different storage protect keys
US4403283A (en) * 1980-07-28 1983-09-06 Ncr Corporation Extended memory system and method
DE3034581A1 (de) * 1980-09-13 1982-04-22 Robert Bosch Gmbh, 7000 Stuttgart Auslesesicherung bei einchip-mikroprozessoren
US4521852A (en) * 1982-06-30 1985-06-04 Texas Instruments Incorporated Data processing device formed on a single semiconductor substrate having secure memory
JPS59111561A (ja) * 1982-12-17 1984-06-27 Hitachi Ltd 複合プロセツサ・システムのアクセス制御方式
US4759064A (en) * 1985-10-07 1988-07-19 Chaum David L Blind unanticipated signature systems
US4975836A (en) * 1984-12-19 1990-12-04 Hitachi, Ltd. Virtual computer system
JPS61206057A (ja) * 1985-03-11 1986-09-12 Hitachi Ltd アドレス変換装置
FR2601525B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Dispositif de securite interdisant le fonctionnement d'un ensemble electronique apres une premiere coupure de son alimentation electrique
US5007082A (en) * 1988-08-03 1991-04-09 Kelly Services, Inc. Computer software encryption apparatus
US5079737A (en) * 1988-10-25 1992-01-07 United Technologies Corporation Memory management unit for the MIL-STD 1750 bus
JPH02171934A (ja) * 1988-12-26 1990-07-03 Hitachi Ltd 仮想計算機システム
JPH02208740A (ja) * 1989-02-09 1990-08-20 Fujitsu Ltd 仮想計算機制御方式
JP2590267B2 (ja) * 1989-06-30 1997-03-12 株式会社日立製作所 仮想計算機における表示制御方式
US5022077A (en) * 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
JP2825550B2 (ja) * 1989-09-21 1998-11-18 株式会社日立製作所 多重仮想空間アドレス制御方法および計算機システム
CA2010591C (en) * 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
CA2027799A1 (en) * 1989-11-03 1991-05-04 David A. Miller Method and apparatus for independently resetting processors and cache controllers in multiple processor systems
US5075842A (en) * 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
US5108590A (en) * 1990-09-12 1992-04-28 Disanto Dennis Water dispenser
US5230069A (en) * 1990-10-02 1993-07-20 International Business Machines Corporation Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system
US5317705A (en) * 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5287363A (en) * 1991-07-01 1994-02-15 Disk Technician Corporation System for locating and anticipating data storage media failures
US5437033A (en) * 1990-11-16 1995-07-25 Hitachi, Ltd. System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
US5255379A (en) * 1990-12-28 1993-10-19 Sun Microsystems, Inc. Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor
US5522075A (en) * 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5319760A (en) * 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
JPH06236284A (ja) * 1991-10-21 1994-08-23 Intel Corp コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5574936A (en) * 1992-01-02 1996-11-12 Amdahl Corporation Access control mechanism controlling access to and logical purging of access register translation lookaside buffer (ALB) in a computer system
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5237616A (en) * 1992-09-21 1993-08-17 International Business Machines Corporation Secure computer system having privileged and unprivileged memories
US5293424A (en) * 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
JP2765411B2 (ja) * 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
US5668971A (en) * 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
JPH06187178A (ja) * 1992-12-18 1994-07-08 Hitachi Ltd 仮想計算機システムの入出力割込み制御方法
US5483656A (en) * 1993-01-14 1996-01-09 Apple Computer, Inc. System for managing power consumption of devices coupled to a common bus
US5469557A (en) * 1993-03-05 1995-11-21 Microchip Technology Incorporated Code protection in microcontroller with EEPROM fuses
FR2703800B1 (fr) * 1993-04-06 1995-05-24 Bull Cp8 Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre.
JPH06348867A (ja) * 1993-06-04 1994-12-22 Hitachi Ltd マイクロコンピュータ
US5555385A (en) * 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US5825880A (en) * 1994-01-13 1998-10-20 Sudia; Frank W. Multi-step digital signature method and system
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5604805A (en) * 1994-02-28 1997-02-18 Brands; Stefanus A. Privacy-protected transfer of electronic information
US5684881A (en) * 1994-05-23 1997-11-04 Matsushita Electric Industrial Co., Ltd. Sound field and sound image control apparatus and method
US5539828A (en) * 1994-05-31 1996-07-23 Intel Corporation Apparatus and method for providing secured communications
US5473692A (en) * 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5978481A (en) * 1994-08-16 1999-11-02 Intel Corporation Modem compatible method and apparatus for encrypting data that is transparent to software applications
JPH0883211A (ja) * 1994-09-12 1996-03-26 Mitsubishi Electric Corp データ処理装置
DE69534757T2 (de) * 1994-09-15 2006-08-31 International Business Machines Corp. System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften
US5606617A (en) * 1994-10-14 1997-02-25 Brands; Stefanus A. Secret-key certificates
US5564040A (en) * 1994-11-08 1996-10-08 International Business Machines Corporation Method and apparatus for providing a server function in a logically partitioned hardware machine
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5555414A (en) * 1994-12-14 1996-09-10 International Business Machines Corporation Multiprocessing system including gating of host I/O and external enablement to guest enablement at polling intervals
US5615263A (en) * 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
US5764969A (en) * 1995-02-10 1998-06-09 International Business Machines Corporation Method and system for enhanced management operation utilizing intermixed user level and supervisory level instructions with partial concept synchronization
JPH08305558A (ja) * 1995-04-27 1996-11-22 Casio Comput Co Ltd 暗号化プログラム演算装置
US5717903A (en) * 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
JP3451595B2 (ja) * 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US5633929A (en) * 1995-09-15 1997-05-27 Rsa Data Security, Inc Cryptographic key escrow system having reduced vulnerability to harvesting attacks
US5737760A (en) * 1995-10-06 1998-04-07 Motorola Inc. Microcontroller with security logic circuit which prevents reading of internal memory by external program
JP3693721B2 (ja) * 1995-11-10 2005-09-07 Necエレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
US5657445A (en) * 1996-01-26 1997-08-12 Dell Usa, L.P. Apparatus and method for limiting access to mass storage devices in a computer system
US5835594A (en) * 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US5809546A (en) * 1996-05-23 1998-09-15 International Business Machines Corporation Method for managing I/O buffers in shared storage by structuring buffer table having entries including storage keys for controlling accesses to the buffers
US5732238A (en) * 1996-06-12 1998-03-24 Storage Computer Corporation Non-volatile cache for providing data integrity in operation with a volatile demand paging cache in a data storage system
US5729760A (en) * 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US5740178A (en) * 1996-08-29 1998-04-14 Lucent Technologies Inc. Software for controlling a reliable backup memory
US5844986A (en) * 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5937063A (en) * 1996-09-30 1999-08-10 Intel Corporation Secure boot
US5935242A (en) * 1996-10-28 1999-08-10 Sun Microsystems, Inc. Method and apparatus for initializing a device
JPH10134008A (ja) * 1996-11-05 1998-05-22 Mitsubishi Electric Corp 半導体装置およびコンピュータシステム
US5852717A (en) * 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
US5901225A (en) * 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
US5757919A (en) * 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US5953502A (en) * 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
US6044478A (en) * 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6175924B1 (en) * 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US5978475A (en) * 1997-07-18 1999-11-02 Counterpane Internet Security, Inc. Event auditing system
US5919257A (en) * 1997-08-08 1999-07-06 Novell, Inc. Networked workstation intrusion detection system
US5935247A (en) * 1997-09-18 1999-08-10 Geneticware Co., Ltd. Computer system having a genetic code that cannot be directly accessed and a method of maintaining the same
US5970147A (en) * 1997-09-30 1999-10-19 Intel Corporation System and method for configuring and registering a cryptographic device
DE69942712D1 (de) * 1998-05-29 2010-10-14 Texas Instruments Inc Sichere Rechnervorrichtung
NZ509018A (en) * 1998-06-17 2002-06-28 Aristocrat Technologies Au Software verification and authentication
US6401208B2 (en) * 1998-07-17 2002-06-04 Intel Corporation Method for BIOS authentication prior to BIOS execution
US6463535B1 (en) * 1998-10-05 2002-10-08 Intel Corporation System and method for verifying the integrity and authorization of software before execution in a local platform
JP2000148851A (ja) * 1998-11-11 2000-05-30 Oki Electric Ind Co Ltd 電子決済システム
US6571335B1 (en) * 1999-04-01 2003-05-27 Intel Corporation System and method for authentication of off-chip processor firmware code
JP4226760B2 (ja) * 2000-05-08 2009-02-18 株式会社東芝 マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
US7117371B1 (en) * 2000-06-28 2006-10-03 Microsoft Corporation Shared names

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109582525A (zh) * 2018-10-19 2019-04-05 京信通信系统(中国)有限公司 测试代码验证方法、验证装置、设备和存储介质
CN109582525B (zh) * 2018-10-19 2022-06-03 京信网络系统股份有限公司 测试代码验证方法、验证装置、设备和存储介质

Also Published As

Publication number Publication date
KR20040068606A (ko) 2004-07-31
WO2003058412A2 (en) 2003-07-17
AU2002364106A1 (en) 2003-07-24
KR20060120291A (ko) 2006-11-24
US20030126454A1 (en) 2003-07-03
KR100668000B1 (ko) 2007-01-15
TW200304620A (en) 2003-10-01
CN1287248C (zh) 2006-11-29
EP1502168A2 (en) 2005-02-02
JP2006507548A (ja) 2006-03-02
WO2003058412A3 (en) 2004-11-18

Similar Documents

Publication Publication Date Title
CN1287248C (zh) 经验证代码方法和装置
US20230128711A1 (en) Technologies for trusted i/o with a channel identifier filter and processor-based cryptographic engine
Guan et al. Trustshadow: Secure execution of unmodified applications with arm trustzone
US10148442B2 (en) End-to-end security for hardware running verified software
Evtyushkin et al. Iso-x: A flexible architecture for hardware-managed isolated execution
JP5249399B2 (ja) 安全なメモリ区分を使用した安全な実行のための方法および装置
US7308576B2 (en) Authenticated code module
JP4498735B2 (ja) オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム
US7774619B2 (en) Secure code execution using external memory
CN103026347B (zh) 多核架构中的虚拟机内存划分
Hunt et al. Confidential computing for OpenPOWER
US20030126453A1 (en) Processor supporting execution of an authenticated code instruction
WO2017112248A1 (en) Trusted launch of secure enclaves in virtualized environments
CN107667350A (zh) 基于虚拟化的平台保护技术
WO2017111843A1 (en) Trusted deployment of application containers in cloud data centers
KR20120099472A (ko) 보안 애플리케이션 실행을 제공하는 방법 및 장치
EP0879515A1 (en) Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US8205197B2 (en) Apparatus, system, and method for granting hypervisor privileges
CN109993003A (zh) 一种基于sgx的软件流安全验证方法及装置
Evtyushkin et al. Flexible hardware-managed isolated execution: Architecture, software support and applications
Olson et al. Security implications of third-party accelerators
Strackx et al. Salus: Kernel support for secure process compartments
CN101067842A (zh) 用于运行时存储器可执行分离的数据处理系统和方法
González Operating Security System Support for Run-Time Security with a Trusted Execution Environment
Champagne Scalable security architecture for trusted software

Legal Events

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

Granted publication date: 20061129

Termination date: 20131220