硬化随机访问存储器中的软件执行的方法和装置的制作方法

文档序号:6339613阅读:209来源:国知局
专利名称:硬化随机访问存储器中的软件执行的方法和装置的制作方法
技术领域
本申请涉及验证计算机平台的存储器中执行的受保护代码的完整性。
背景技术
管理程序(hypervisor)(也即,虚拟机监控器)管理硬件平台在多个客户系统之间的共享,并且其通常用作云计算中的基础设施即服务(IaM)中的特权软件。管理程序具有相对小的代码库以及与外部世界的有限交互,因此其被认为是受到良好保护并且容易检验的。

发明内容
本发明的示例实施方式涉及验证计算机平台的存储器中执行的受保护代码的完整性的方法和装置。该方法包括从计算机平台接收存储的受保护代码的启动时度量,从计算机平台获取执行的受保护代码的运行时度量,以及从计算机平台获取该执行的受保护代码的活性(liveliness)指示符。继而根据启动时度量、运行时度量以及活性指示符来验证执行的受保护代码的完整性。其他示例实施方式涉及用于利用外部检验器来验证存储器中的执行的受保护代码的完整性的方法和装置,包括向外部检验器提供存储的受保护代码的启动时度量,响应于来自外部检验器的针对运行时度量的请求而向外部检验器提供执行的受保护代码的运行时度量,以及响应于来自外部检验器的针对活性指示符的请求而向外部检验器提供执行的受保护代码的活性指示符,其中如果在该外部检验器处比较启动时度量和运行时度量成功,则从该外部检验器发送针对活性指示符的请求。本发明的示例实施方式还包括用于执行方法步骤的系统和计算机程序产品。


通过参考下面结合附图的描述,可以更好地理解本发明的上述以及其他优势,附图中图1是示出了可以在其中采用本发明的示例实施方式的示例环境的图示;图2是示出了本发明的示例实施方式的系统和装置的框图,该系统和装置用于验证计算机平台的存储器中的执行的受保护代码的完整性;图3A-图;3B是示出了本发明的示例实施方式的方法的流程图,该方法在计算机平台处执行以用于利用外部检验器来验证存储器中的执行的受保护代码的完整性;图4A-图4B是示出了本发明的示例实施方式的方法的流程图,该方法在外部检验器处执行以用于验证计算机平台的存储器中的执行的受保护代码的完整性;图5是示出了实施为程序代码或程序产品的本发明的示例实施方式的方法的图
7J\ ο
具体实施例方式管理程序并不是完全安全的,其易于受到多种攻击,诸如管理程序代码和数据在运行时被修改。管理程序面临与传统操作系统类似的完整性威胁,因此它们需要保护、测量和检验其完整性。在系统引导时检验管理程序的完整性可以通过诸如可信引导之类的传统技术来完成。同样地,已经开发了用于在运行时检验管理程序的完整性的传统技术。然而, 这些传统技术无法在计算机平台的随机访问存储器(RAM)中执行期间检验管理程序的完整性。例如,这种传统技术仅保护软件版本,并且不能阻止“检查时间到使用时间”(T0C2T0U)攻击。在T0C2T0U攻击中,代码的完整性可能在从检查代码完整性的时刻到使用该代码时刻的攻击窗口期间遭到损坏。在很多情形下,攻击窗口可以是扩展的时段。而且,这种传统技术不适于在服务器可被网络引导的数据中心中使用。网络引导是从网络而不是从本地驱动引导计算机的过程。在没有检验网络引导源的情况下,无法可靠地假定网络引导源的完整性,因此不是所有被引导的服务器都是可信的。图1是示出了可以在其中采用本发明的示例实施方式的示例环境100的图示。环境100可以是用于基础设施即服务(IaM)的云计算环境。环境100包括通过网络130(诸如因特网)连接的多个服务器110-1到110-N(统称110)和多个客户端120-1到120-N(统称120)。每个服务器110可以是运行管理程序(也即,虚拟机监控器)的计算机平台,其中管理程序管理硬件平台在多个客户系统(例如,客户端120)之间的共享。在某些场合中,可能期望在支持多个客户端120的虚拟机的服务器110之间对多个进程执行自动负载平衡(也即,优选实施方式中的管理程序)。发明人敏锐地认识到,虚拟机可能在多个管理程序上分布得不均勻或不利。为此,期望调整管理程序的利用以便更有效地平衡正运行的管理程序和虚拟机的负载。管理程序不是完全安全的,并且易于受到多种攻击,诸如管理程序代码和数据在运行时被修改。因此,在将虚拟机的进程从一个服务器传送到另一服务器之前;同样地,在从管理该虚拟机的一个管理程序到另一管理程序之前,有利的是检验管理程序的状态以及检验自从管理程序开始运行以来其服务条件尚未变化。图2是示出了本发明的示例实施方式的系统200的框图,该系统用于验证计算机平台的存储器中的执行的受保护代码的完整性。系统200包括通过网络205 (诸如因特网) 连接的计算机平台210和外部检验器M5。计算机平台210可以包括开放式体系结构计算硬件(例如,htelX86体系结构) 和软件部件。计算机平台210包括用于存储已存储的受保护代码217的存储设备215,用于存储执行的受保护代码222和程序逻辑223的存储器220,其中程序逻辑223用于利用外部检验器245来验证存储器220中的执行的受保护代码222的完整性,以及用于将存储的受保护代码217加载到存储器220中并且执行该执行的受保护代码222和程序逻辑223的处理器225。
计算机平台210还包括启动时单元230、运行时单元235和活性单元M0。外部检验器245包括比较器单元250和检验单元255。启动时单元230可以是可信机制,包括物理上受保护的环境,诸如可信计算组织 (TCG)技术或可信执行技术(TXT)。在计算机平台210的启动时刻,启动时单元230测量存储的受保护代码217。测量结果称为启动时度量232,其可以是存储在存储设备215中的存储的受保护代码217的哈希。启动时单元230在启动时单元处安全地存储启动时度量232 以供将来证明。在备选实施方式中,诸如网络引导服务器,启动时度量232可以存储在物理上安全的网络存储设备中,诸如存储在存储区域网络(SAN)(未示出)中。运行时单元235可以是可信机制,包括物理上受保护的环境,诸如具有设备上信息完整性保护能力并且能够进行直接存储器访问(DMA)的设备。运行时单元235可以在计算机平台210启动之后读取存储器220中的位置内容。在执行的受保护代码222的运行时间,运行时单元235读取存储执行的受保护代码222的存储器220中的位置,以及响应于授权的指令而测量该执行的受保护代码222。测量结果称为运行时度量237,其可以是存储在存储器220中的执行的受保护代码222的哈希。使得运行时单元235测量执行的受保护代码222以及生成运行时度量237的该授权的指令可以是由外部检验器M5的比较器单元250发送的、针对运行时度量的请求252。 比较器单元250还配置用于比较启动时度量232和运行时度量237,以确定在计算机平台 210的启动与执行的受保护代码222的运行时之间的时刻,是否损坏了存储的受保护代码 217的完整性。活性单元240管理计算机平台210与外部检验器245之间的活性协议机制, 在一个优选实施方式中,诸如是来自马萨诸塞州Bedford的EMC的安全部门,RSA的 RSASecurelD 。活性单元MO以如下方式初始化计算机平台210和外部检验器245共享某个秘密,诸如初始化种子242 (也即,令牌)。所共享的秘密与可靠事件(诸如,时间值) 一起被编码到单向函数中,该可靠事件对于计算机平台210和外部检验器245 二者而言都是可靠已知的。在执行的受保护代码222处于执行中的任何时刻,外部检验器245可以请求计算机平台210按照活性协议来生成活性指示符M3,以便检测执行的受保护代码222是否与相互已知的可靠事件处于活性同步中(也即,执行的受保护代码222尚未停止或改变)。外部检验器M5的比较器单元250接收启动时度量232,并且响应于向计算机平台210发送针对运行时度量的请求252而从计算机平台210接收运行时度量237。比较器单元250还将启动时度量232与运行时度量237进行比较,以及确定启动时度量232与运行时度量237是否匹配。外部检验器245的检验单元255可以发送针对活性指示符的请求 257。检验单元255还配置用于接收由活性单元240发送的初始化种子M2以及由活性单元240发送的活性指示符M3,以及确定活性指示符243是否符合编码有初始化种子242的单向函数所制定的活性协议。外部检验器245还包括用于存储程序逻辑沈2的存储器沈0 以及用于执行程序逻辑262的处理器沈5,其中程序逻辑262用于验证计算机平台210的存储器220中的执行的受保护代码222的完整性。当程序逻辑223、262被加载到存储器220、226中并且由机器(例如,计算机平台 210或外部检验器M5)执行时,该机器成为用于实践本发明的装置。当在一个或多个通用处理器(例如,分别是处理器225和沈幻上实施时,程序逻辑223、262与这种处理器进行
9组合以提供唯一装置,其与专用逻辑电路类似地进行操作。这样,通用数字机器可以转换成专用数字机器。进一步地,运行程序逻辑223 J65的处理器225、265支持用于执行本发明的示例实施方式的新的计算机进程。图3A-图:3B以及图4A-图4B是示出了分别在计算机平台(例如,图2的计算机平台210)和在外部检验器(例如,图2的外部检验器对幻处执行的本发明示例实施方式的方法的流程图。将对图3A-图;3B以及图4A-图4B —起描述,同时参考图3A和图4A中的元素,以及类似地同时参考图3B和图4B中的元素,例如以便示出在计算机平台210处执行的方法(也即,图3A-图3B)与在外部检验器245处执行的方法(也即,图4A-图4B)之间的交互。还参考图2中的元素,例如以便示出在用于验证计算机平台210的存储器220 中的执行的受保护代码222的完整性的示例实施方式的系统200中,计算机平台210与外部检验器245之间进行的通信222、对2、洸2、洸3、252、四7。在计算机平台210的启动时刻,启动时单元230测量存储的受保护代码217 (300)。 测量结果称为启动时度量232,其可以是存储的受保护代码217的哈希。启动时单元230在启动时单元230处安全地存储启动时度量232以供将来证明。启动时单元230还向外部检验器245发送启动时度量232 (305)。活性单元240继而向外部检验器245发送初始化种子 242 (310),并且初始化计算机平台210处的活性协议(315)。外部检验器245从计算机平台210接收启动时度量232 (405)。外部检验器245还从计算机平台210接收初始化种子242 (410),并且对外部检验器245的活性协议进行初始化(41 。因此,计算机平台210处和外部检验器245处的活性协议按如下方式被初始化 计算机平台210和外部检验器245共享秘密,诸如初始化种子242 (也即,令牌)。如下文将进一步描述的,所共享的秘密可以与可靠事件(诸如时间值)一起被编码到单向函数中,该可靠事件对于计算机平台210和外部检验器245 二者而言都是可靠已知的。存储的受保护代码217在其被执行之前可以在计算机平台210的存储设备215中驻留一段时间。因此,计算机平台210确定存储的受保护代码217是否已运行(320)。如果存储的受保护代码217尚未运行(322),则计算机平台210继续等待。然而,如果存储的受保护代码217已经运行(323),则方法继续等待发送自外部检验器的、针对运行时度量的请求252(42 。当计算机平台210从外部检验器245接收到针对运行时度量的请求252时(325),运行时单元235读取存储执行的受保护代码222的存储器220中的位置内容,并且测量执行的受保护代码222(330)以作为运行时度量237。运行时单元235继而向外部检验器245发送该运行时度量237 (335)。运行时度量237可以是执行的受保护代码222的哈希。比较器单元250继而从计算机平台210接收运行时度量237 (435),并且确定启动时度量232与运行时度量237是否匹配(440)。如果启动时度量232与运行时度量237不匹配042),则比较器单元250报告警报并且挂起075)。例如,所报告的警报可以被外部检验器245或外部检验器M5向其报告该警报的管理服务器(未示出)的操作者查看,以检查计算机平台210的状态。然而,如果启动时度量232与运行时度量237匹配043),则外部检验器245在稍后继续验证执行的受保护代码222的完整性G45),如下文所描述的。在执行的受保护代码222在计算机平台210处处于执行中的任何时刻,外部检验器245可以确定其应当验证计算机平台210处执行的受保护代码222的完整性(440)。如果验证不是必需的047),则外部检验器245继续等待其应当验证执行的受保护代码222的完整性的指示。例如,外部检验器245可以定义完整性验证规则,诸如要求计算机平台210 以某个间隔(例如,5秒)报告受保护代码的状态。如果外部检验器245确定其应当验证执行的受保护代码222的完整性048),则检验单元255发送针对来自计算机平台210的活性指示符(其由活性单元240按照活性协议而生成)的请求257(450),以检测执行的受保护代码222是否与相互已知的可靠事件处于活性同步中(也即,执行的受保护代码222尚未停止)。因此,计算机平台210确定其是否接收到针对活性指示符的请求257(350)。如果尚未接收到针对活性指示符的请求257(352),则计算机平台210继续等待。 然而,如果接收到针对活性指示符的请求257(35 ,则活性单元240计算所请求的活性指示符243 (355),并且向外部检验器245发送所请求的活性指示符243 (355)。检验单元255继而从计算机平台210接收活性指示符243 (460),以及检查活性指示符M3以确定接收的活性指示符243是否符合活性协议(46 。如上文所描述的,活性单元240以如下方式进行初始化计算机平台210和外部检验器245共享秘密,诸如初始化种子对2(也即,令牌)。因此,所共享的秘密与可靠事件一起在计算机平台210处编码在单向函数中的结果,作为活性指示符243向外部检验器245发送,其应当对应于所共享的秘密与可靠事件一起在外部检验器245处编码在单向函数中的结果。因此,如果接收到的活性指示符243不符合活性协议(467),则检验单元255报告警报并且挂起075)。然而,如果接收到的活性指示符M3确实符合活性协议068),则检验单元255报告成功验证计算机平台210的存储器220中的执行的受保护代码222,并且继续 070)。例如,外部检验器M5可以等待其应当验证受保护代码的完整性(44 的另一指示, 或者接收指示执行的受保护代码222已经停止并且已经重启的另一运行时度量237(435)。本发明的方法和装置可以至少部分地采取具体化在有形的非瞬态介质中的程序代码(也即,指令)的形式,这些介质诸如软盘、CD-ROM、硬驱、随机访问存储器或只读存储器,或者任何其他机器可读存储介质。图5示出了具体化在所示计算机可读介质510上的程序逻辑520,并且其中程序逻辑520以计算机可执行代码进行编码,其配置用于执行图1-图4所示出的方法,由此构成计算机程序产品500。用于执行该方法的逻辑可以具体化为上述系统的一部分,这对于执行例如参考图 1-图4所示的实施方式描述的方法非常有用。出于示例说明本发明的目的,将本发明描述为具体化在特定配置中并且使用专用逻辑布置,但是本领域技术人员将会理解,设备不限于特定配置,而是仅由包括在此说明书中的权利要求来限定。尽管出于清楚理解的目的已经相当详细地描述了前述发明,但是很显然,可以在所附权利要求的范围内实践某些改变和修改。相应地,此处的实施应视为示意性而非限制性的,并且本发明不局限于此处给出的细节,而是可以在所附权利要求的范围和等价物内进行修改。当阅读上述描述时,本领域技术人员将认识到,可以存在很多可以应用于所述方法和系统的明显的变形。在前述说明书中,已经参考其具体示例性实施方式对本发明进行了描述。然而,很明显的是,在不偏离所附权利要求中阐述的本发明的宽泛精神和范围的情况下,可以对具体示例性实施方式做出各种修改和改变。相应地,说明书和附图应当从示例性方面而不是限制性方面进行考虑。
权利要求
1.一种用于验证计算机平台的存储器中执行的受保护代码的完整性的方法,所述方法包括从所述计算机平台接收存储的受保护代码的启动时度量; 从所述计算机平台获取所述执行的受保护代码的运行时度量; 从所述计算机平台获取所述执行的受保护代码的活性指示符;以及根据所述启动时度量、所述运行时度量以及所述活性指示符来验证所述执行的受保护代码的完整性。
2.如权利要求1的方法,其中根据所述启动时度量、所述运行时度量以及所述活性指示符来验证所述执行的受保护代码的完整性包括确定所述启动时度量和所述运行时度量是否等效;如果所述启动时度量与所述运行时度量不等效,则报告指示所述存储的受保护代码的损坏的警报;如果所述启动时度量与所述运行时度量等效,则确定所述执行的受保护代码是否处于活性状态。
3.如权利要求2的方法,其中如果所述启动时度量与所述运行时度量等效则确定所述执行的受保护代码是否处于活性状态包括确定所述活性指示符是否符合活性协议;如果所述活性指示符不符合所述活性协议,则报告指示所述执行的受保护代码的损坏的警报;以及如果所述活性指示符确实符合所述活性协议,则报告所述执行的受保护代码的验证。
4.如权利要求3的方法,其中从所述计算机平台获取所述执行的受保护代码的活性指示符包括从所述计算机平台接收初始化种子;根据所述初始化种子对所述活性协议的单向函数进行初始化; 如果所述启动时度量与所述运行时度量等效,则请求来自所述计算机平台的所述活性指示符;以及接收所述活性指示符。
5.如权利要求4的方法,其中从所述计算机平台获取所述执行的受保护代码的运行时度量包括向所述计算机平台发送针对所述运行时度量的请求;以及从所述计算机平台接收所述运行时度量,其中所述计算机平台响应于接收针对所述运行时度量的请求,通过在所述执行的受保护代码的运行时间测量所述执行的受保护代码来生成所述运行时度量。
6.一种用于利用外部检验器来验证存储器中的执行的受保护代码的完整性的方法,所述方法包括向所述外部检验器提供存储的受保护代码的启动时度量; 向所述外部检验器提供执行的受保护代码的运行时度量;以及向所述外部检验器提供所述执行的受保护代码的活性指示符。
7.如权利要求6的方法,其中向所述外部检验器提供所述执行的受保护代码的活性指示符包括向所述外部检验器提供初始化种子;以及根据所述初始化种子对活性协议的单向函数进行初始化。
8.如权利要求7的方法,其中向所述外部检验器提供存储的受保护代码的启动时度量包括测量所述存储的受保护代码以生成所述启动时度量; 将所述启动时度量存储在物理上受保护的环境中;以及向所述外部检验器发送所述启动时度量;其中向所述外部检验器提供执行的受保护代码的运行时度量包括 从所述外部检验器接收针对所述运行时度量的请求; 测量所述执行的受保护代码以生成所述运行时度量;以及向所述外部检验器发送所述运行时度量;以及其中向所述外部检验器提供所述执行的受保护代码的活性指示符进一步包括 如果在所述外部检验器处比较所述启动时度量与所述运行时度量成功,则从所述外部检验器接收针对所述活性指示符的请求;根据所述活性协议计算所述活性指示符;以及向所述外部检验器发送所述活性指示符。
9.一种用于验证计算机平台的存储器中的执行的受保护代码的完整性的装置,所述装置包括比较器单元,用于从所述计算机平台接收存储的受保护代码的启动时度量,从所述计算机平台获取所述执行的受保护代码的运行时度量,以及比较所述启动时度量和所述运行时度量;以及检验单元,用于从所述计算机平台获取所述执行的受保护代码的活性指示符,以及根据所述启动时度量、所述运行时度量和所述活性指示符来验证所述执行的受保护代码的完整性。
10.如权利要求9的装置,其中所述比较器单元配置用于确定所述启动时度量和所述运行时度量是否等效,以及如果所述启动时度量与所述运行时度量不等效,则报告指示所述存储的受保护代码的损坏的警报;以及其中所述检验单元配置用于确定所述活性指示符是否符合活性协议,如果所述活性指示符不符合所述活性协议,则报告指示所述执行的受保护代码的损坏的警报;以及如果所述活性指示符确实符合所述活性协议,则报告所述执行的受保护代码的验证。
11.如权利要求10的装置,其中所述检验单元进一步配置用于从所述计算机平台接收初始化种子,根据所述初始化种子对所述活性协议的单向函数进行初始化,如果所述启动时度量与所述运行时度量等效,则请求来自所述计算机平台的所述活性指示符,以及接收所述活性指示符。
12.一种用于利用外部检验器来验证存储器中的执行的受保护代码的完整性的装置, 所述装置包括启动时单元,用于向所述外部检验器提供存储的受保护代码的启动时度量; 运行时单元,用于响应于来自所述外部检验器的、针对运行时度量的请求,向所述外部CN 102542185 A检验器提供执行的受保护代码的所述运行时度量;以及活性单元,用于响应于来自所述外部检验器的、针对活性指示符的请求,向所述外部检验器提供所述执行的受保护代码的所述活性指示符,其中,如果在所述外部检验器处比较所述启动时度量和运行时度量成功,则从所述外部检验器发送所述针对活性指示符的请求。
13.如权利要求12的装置,其中所述启动时单元配置用于测量所述存储的受保护代码以生成所述启动时度量,将所述启动时度量存储在物理上受保护的环境中,以及向所述外部检验器发送所述启动时度量;其中所述运行时单元配置用于从所述外部检验器接收针对所述运行时度量的请求,测量所述执行的受保护代码以生成所述运行时度量,以及向所述外部检验器发送所述运行时度量;以及其中所述活性单元配置用于向所述外部检验器提供初始化种子,根据所述初始化种子对活性协议的单向函数进行初始化,如果在所述外部检验器的所述启动时度量与所述运行时度量的比较成功,则从所述外部检验器接收针对所述活性指示符的请求,根据通过所述初始化种子初始化的所述活性协议的单向函数来计算所述活性指示符,以及向所述外部检验器发送所述活性指示符。
14.一种用于验证存储器中的执行的受保护代码的完整性的系统,所述系统包括计算机平台,包括启动时单元、运行时单元和活性单元;以及外部检验器,包括比较器单元和检验单元;其中所述启动时单元配置用于向所述外部检验器提供存储的受保护代码的启动时度量;其中所述运行时单元配置用于响应于来自所述外部检验器的、针对运行时度量的请求,向所述外部检验器提供执行的受保护代码的所述运行时度量;其中所述活性单元配置用于响应于来自所述外部检验器的、针对活性指示符的请求, 向所述外部检验器提供所述执行的受保护代码的所述活性指示符,其中,如果在所述外部检验器处比较所述启动时度量和运行时度量成功,则从所述外部检验器发送所述针对活性指示符的请求;其中所述比较器单元配置用于将从所述计算机平台接收的存储的受保护代码的启动时度量与从所述计算机平台获取的所述执行的受保护代码的运行时度量进行比较;以及其中所述检验单元配置用于如果所述比较器单元执行的比较成功,则根据从所述计算机平台获取的活性指示符来验证所述执行的受保护代码的完整性。
15.如权利要求14的系统,其中所述启动时单元配置用于测量所述存储的受保护代码以生成所述启动时度量,将所述启动时度量存储在物理上受保护的环境中,以及向所述外部检验器发送所述启动时度量;其中所述运行时单元配置用于从所述外部检验器接收针对所述运行时度量的请求,测量所述执行的受保护代码以生成所述运行时度量,以及向所述外部检验器发送所述运行时度量;以及其中所述活性单元配置用于向所述外部检验器提供初始化种子,根据所述初始化种子对活性协议的单向函数进行初始化,如果在所述外部检验器处比较所述启动时度量与所述运行时度量成功,则从所述外部检验器接收针对所述活性指示符的请求,根据通过所述初始化种子初始化的所述活性协议的单向函数来计算所述活性指示符,以及向所述外部检验器提供所述活性指示符。
16.如权利要求15的系统,其中所述比较器单元配置用于确定所述启动时度量和所述运行时度量是否等效,如果所述启动时度量与所述运行时度量不等效,则报告指示所述存储的受保护代码的损坏的警报,以及如果所述启动时度量与所述运行时度量等效,则请求所述活性指示符;以及其中所述检验单元配置用于从所述计算机平台接收初始化种子,根据所述初始化种子对活性协议的单向函数进行初始化,根据所述活性协议从所述计算机平台接收对所述执行的受保护代码的活性指示符,确定所述活性指示符是否符合根据所述初始化种子初始化的活性协议的单向函数,如果所述活性指示符不符合所述活性协议,则报告指示所述执行的受保护代码的损坏的警报,以及如果所述活性指示符确实符合所述活性协议,则报告所述执行的受保护代码的验证。
17.一种具有非瞬态计算机可读存储介质的计算机程序产品,所述介质可操作以存储具体化为编码于其上的计算机程序代码的计算机程序逻辑,所述计算机程序代码用于验证计算机平台的存储器中的执行的受保护代码的完整性,包括用于从所述计算机平台接收存储的受保护代码的启动时度量的计算机程序代码; 用于从所述计算机平台获取所述执行的受保护代码的运行时度量的计算机程序代码;用于从所述计算机平台获取所述执行的受保护代码的活性指示符的计算机程序代码;以及用于根据所述启动时度量、所述运行时度量以及所述活性指示符来验证所述执行的受保护代码的完整性的计算机程序代码。
18.如权利要求17的计算机程序产品,其中用于根据所述启动时度量、所述运行时度量以及所述活性指示符来验证所述执行的受保护代码的完整性的计算机程序代码包括用于确定所述启动时度量和所述运行时度量是否等效的计算机程序代码; 用于如果所述启动时度量与所述运行时度量不等效,则报告指示所述存储的受保护代码的损坏的警报的计算机程序代码;用于如果所述启动时度量与所述运行时度量等效,则确定所述执行的受保护代码是否处于活性状态的计算机程序代码。
19.如权利要求18的计算机程序产品,其中用于如果所述启动时度量与所述运行时度量等效则确定所述执行的受保护代码是否处于活性状态的计算机程序代码包括用于确定所述活性指示符是否符合活性协议的计算机程序代码; 用于如果所述活性指示符不符合所述活性协议,则报告指示所述执行的受保护代码的损坏的警报的计算机程序代码;以及用于如果所述活性指示符确实符合所述活性协议,则报告所述执行的受保护代码的验证的计算机程序代码。
20.如权利要求19的计算机程序产品,其中用于从所述计算机平台获取所述执行的受保护代码的活性指示符的计算机程序代码包括用于从所述计算机平台接收初始化种子的计算机程序代码;用于根据所述初始化种子对所述活性协议的单向函数进行初始化的计算机程序代码;用于如果所述启动时度量与所述运行时度量等效,则请求来自所述计算机平台的所述活性指示符的计算机程序代码;以及用于接收所述活性指示符的计算机程序代码。
21.如权利要求20的计算机程序产品,其中用于从所述计算机平台获取所述执行的受保护代码的运行时度量的计算机程序代码包括用于向所述计算机平台发送针对所述运行时度量的请求的计算机程序代码;以及用于从所述计算机平台接收所述运行时度量的计算机程序代码,其中所述计算机平台响应于接收到针对所述运行时度量的请求,通过在所述执行的受保护代码的运行时间测量所述执行的受保护代码来生成所述运行时度量。
22.—种具有非瞬态计算机可读存储介质的计算机程序产品,所述介质可操作以存储具体化为编码于其上的计算机程序代码的计算机程序逻辑,所述计算机程序代码用于利用外部检验器来验证存储器中的执行的受保护代码的完整性,包括用于向所述外部检验器提供存储的受保护代码的启动时度量的计算机程序代码; 用于向所述外部检验器提供执行的受保护代码的运行时度量的计算机程序代码;以及用于向所述外部检验器提供所述执行的受保护代码的活性指示符的计算机程序代码。
23.如权利要求22的计算机程序产品,其中用于向所述外部检验器提供所述执行的受保护代码的活性指示符的计算机程序代码包括用于向所述外部检验器提供初始化种子的计算机程序代码;以及用于根据所述初始化种子对活性协议的单向函数进行初始化的计算机程序代码。
24.如权利要求23的计算机程序产品,其中用于向所述外部检验器提供存储的受保护代码的启动时度量的计算机程序代码包括用于测量所述存储的受保护代码以生成所述启动时度量的计算机程序代码; 用于将所述启动时度量存储在物理上受保护的环境中的计算机程序代码;以及用于向所述外部检验器发送所述启动时度量的计算机程序代码; 其中用于向所述外部检验器提供执行的受保护代码的运行时度量的计算机程序代码包括用于从所述外部检验器接收针对所述运行时度量的请求的计算机程序代码; 用于测量所述执行的受保护代码以生成所述运行时度量的计算机程序代码;以及用于向所述外部检验器发送所述运行时度量的计算机程序代码;以及其中用于向所述外部检验器提供所述执行的受保护代码的活性指示符的计算机程序代码进一步包括用于如果在所述外部检验器的所述启动时度量与所述运行时度量的比较成功,则从所述外部检验器接收针对所述活性指示符的请求的计算机程序代码;用于根据所述活性协议计算所述活性指示符的计算机程序代码;以及用于向所述外部检验器发送所述活性指示符的计算机程序代码。
全文摘要
本发明的示例实施方式涉及硬化随机访问存储器中的软件执行的方法和装置。具体地,涉及一种系统、装置和方法,用于在代码在计算机平台的RAM中处于执行中时,保护该代码的完整性以防止其被恶意或意外地修改。该方法还可以称为代码硬化。在本发明的示例实施方式中,待硬化的代码可以称为受保护代码。本发明的示例实施方式能够从外部检测管理程序的未授权停止,其通过采用(1)受保护代码的启动时度量;(2)受保护代码的运行时度量;以及(3)受保护代码的活性指示符来实现。
文档编号G06F21/00GK102542185SQ20101060149
公开日2012年7月4日 申请日期2010年12月23日 优先权日2010年12月23日
发明者杨子夜, 毛文波 申请人:伊姆西公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1