首页> 中国专利> 用于保障平台间和平台内通信的系统和方法

用于保障平台间和平台内通信的系统和方法

摘要

一种系统和方法,用于从源到目的地保护敏感通信的机密性和/或完整性,而不管敏感通信是本地平台上的,还是平台之间的,还是相同程序在不同时间的通信。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-06-23

    未缴年费专利权终止 IPC(主分类):G06F1/00 授权公告日:20090826 终止日期:20190624 申请日:20050624

    专利权的终止

  • 2009-08-26

    授权

    授权

  • 2007-07-04

    实质审查的生效

    实质审查的生效

  • 2007-05-09

    公开

    公开

说明书

技术领域

本发明的实施例通常涉及网络安全领域,尤其涉及平台间和平台内通信的系统和方法。

背景技术

计算机网络广泛应用于商业、公共机构和个人。软件程序(或简称为程序)通过计算机网络互相交换信息。在当今的网络化计算环境中,保护这些通信的完整性和机密性至关紧要。很明显,以明文的方式发送密码,加密密钥或者其他私人信息会使计算系统容易受到恶意攻击者的威胁。这是因为通过已经被攻击者破坏的系统上的调试器、异常软件或其他软件组件,可以从存储器中获取密钥材料。“密钥材料”一词泛指例如加密密钥、会话密钥、密码、数字证书和/或任何敏感信息。

传统的保护计算系统中的机密信息的方法通常基于虚拟专用网(VPN)或专用的硬件。虚拟专用网可以容易地被避开或篡改,这是因为它们被实现为能够被在特权模式下运行的其他软件组件破坏的应用软件和/或核心层驱动程序。

硬件解决方法可以包括:用于实现加密功能的可信平台模块(TPM)或专用协处理器。可信平台模块是存储例如加密密钥、密码和/或数字证书的微芯片。基于硬件的安全解决方案较昂贵,并且使用单独的硬件以使它们与系统硬件的其它部分相隔离。此外,TPM通常连接到使用低带宽串行总线的芯片组,这使得它不适用于需要高带宽数据交换的应用,例如,网络流量的加密/解密。因此,传统的系统缺乏用于加密运行于主机处理器上的软件中的数据的划算的、安全的、抗篡改的方法,因此其与直接与这种数据交互的程序一致。

附图说明

在附图中,通过举例而不是通过限制的方式来说明本发明的实施例,其中,相同的参考标记表示相同的元件。

图1是说明可以由本发明的实施例保护的多种通信的框图;

图2A-2B说明了根据本发明实施例的,使用由存储器的受保护区域提供的安全操作的程序;

图3A是说明根据本发明实施例的,用于初始化存储器(例如,系统管理随机访问存储器)的受保护区域的方法的某些方面的流程图;

图3B-3C是说明根据本发明实施例的,用于保障平台间和平台内通信的方法的某些方面的流程图;

图4是根据本发明实施例的,用于加密输出包的结构的框图;

图5是说明在不同网络层支持网络安全协议的本发明的实施例的框图;

图6是说明根据本发明实施例实现的事务处理的事务处理图。

具体实施方式

提供系统和方法以保护从源到目的地的敏感通信(以及支持这些通信的功能)的机密性和/或完整性,而无论是平台内的、平台间的、还是同一个程序的不同运行时间的通信。如以下进一步描述的,本发明的实施例可以由主机驻留软件使用以实现需要在抗篡改的和机密的环境下进行的,对任何数据(例如网络流量)的任何安全处理(例如加密)。本发明的实施例还可以正确地识别和保护请求这些服务的程序的源。因此,本发明的实施例可以提供一种机制以保障内联(inline)(或隐藏)处理器模式中的密钥材料的安全性。如以下进一步描述的,本发明的实施例可以由ring-0级程序(例如,内核程序)使用以保障与平台组件通信的安全,提供不可欺骗的认证/授权,甚至检验从一个调用到另一个调用的程序内部状态的完整性。

为便于说明,参照通过网络发送的数据的加密来公开本发明的实施例。但是,替代实施例可以用于需要在抗篡改的和机密的环境下进行的对任何数据的安全处理。例如,本发明的实施例可以用于保护平台间和/或平台内的通信,以及程序间和/或程序内的通信。

图1是说明可以由本发明实施例保护的多种通信的框图。图1包括平台110和120。术语“平台”泛指提供数据处理的硬件(例如,处理器)、软件(例如,操作系统)、微码、芯片组、固件等。参考标记130指示平台间通信(例如,平台110和120间)。平台110包括微控制器子平台112。由参考标记132指示程序114(例如,运行于主机处理器之上)和微控制器子平台112之间的平台内通信。

程序114和116可以表示在主机处理器(未显示)上执行的两个程序。术语“程序”可以指内核组件(例如,ring-0级程序)或应用程序(例如,ring-3级程序)。如参考标记134所示,程序间通信的例子是程序114和116之间的通信。在一个实施例中,程序(例如,程序114)可以安全地存储它的数据结构和/或状态,并且在随后安全地访问所存储的数据结构和/或状态(例如,随着环境的变化和/或进程调用,周期性地检查其内部数据结构的完整性)。参考标记136指示程序内的实施例,其中,程序114安全地存储其数据结构和/或状态,并且随着时间的过去,安全地访问所存储的数据结构和/或状态。

本发明的实施例可以使用系统管理模式(SMM)或类似的专用处理器模式来保护密钥材料以及使用该密钥材料以加密/解密和/或检验任何数据的完整性的加密功能。SMM提供分区的存储器和环境,在其中防止密钥材料暴露于其它的运行在主机系统上的程序。本发明的实施例通过为密钥存储和处理提供隔离的和抗篡改的环境来增强密钥材料的安全性,从而增加攻击者通过传统的攻击媒介获取密钥材料的难度。

SMM(或相似的)专用处理器模式还可以为程序数据提供安全处理。术语“安全处理”泛指增强数据的安全性的处理,例如加密,解密,授权,认证,完整性检查等等。SMM是一种专用的操作模式,其提供独立于操作系统的隔离的环境。当系统管理中断(SMI)被触发时,处理器进入SMM,并执行来自称作系统管理随机访问存储器(SMRAM)的主存储器的芯片组保护区域的代码和数据,该区域对于在其它处理器操作模式下运行的软件是不可访问的。

为了方便,SMM和类似的专用处理器模式被共同地称为管理模式。在实施例中,管理模式从触发它的程序获取状态信息。在一个实施例中,当程序调用管理模式时,为管理模式提供所保存的状态图或类似的结构。保存的状态图(或类似的结构)提供关于在进入管理模式时的处理器状态的信息。例如,在管理模式下执行的程序可以根据所保存的状态图(或类似结构)恢复调用程序的程序计数器。在实施例中,这提供了一种防篡改方式以检测调用的源,其可以被追踪回触发SMI的程序。

由于调用程序的代码存储的位置可能被攻击程序重写,因此需要验证或者保护所述代码存储的完整性。在实施例中,使用合适的硬件或软件技术来认证作为SMI通知的源的程序映象。认证程序映象的机制的例子包括但不限于验证来自管理模式(例如SMM)或其它受保护系统组件(如Navassa嵌入式处理器)等的映象。

图2A-2B说明了使用由存储器受保护区域提供的安全操作的调用程序。可以参照SMM和系统管理随机访问存储器(SMRAM)来描述所说明的实施例。应该理解,在本发明的可选实施例中,可以使用不同的管理模式和不同的存储器受保护区域。

在一实施例中,SMRAM 200包括以下数据结构:有效程序识别(VAPI)表205,程序标识符(ID)到密钥标识符(PIKI)映射表210以及程序ID到程序计数器范围(PIPC)映射表215。在可选实施例中,SMRAM 200可以包括更多的数据结构、更少的数据结构和/或不同的数据结构。

在实施例中,VPI表205包含关于如何标识特定程序和确定存储器中程序映象是否有效的信息。在一个实施例中,在VPI表205中标识的程序是允许调用SMM的安全操作的程序。在一个实施例中,通过安全信道从可信数据存储器220提供VPI表205。或者,可以通过本地可信平台组件来提供VPI表205,例如,通过嵌入式管理微控制器(例如,由Intel公司开发的Proactive/Navassa平台)提供,其能够提供到平台的安全远程带外(OOB)连接。

表1描述了可以包含在VPI表205中的多个数据结构。在可选实施例中,这些数据结构可以具有不同的名称。另外,在本发明的可选实施例中,可以使用更多的数据结构、或更少的数据结构,和/或不同的数据结构。

                        表1

 数据结构名称 简要描述 程序标识符(PID) 唯一标识机器上的程序的普通数字/字符串。 程序标记(PM) 用于以高可能性来识别存储器中的程序映象的位置的字节串(可以是编译为程序的静态字节序列)。该序列应标记存储器中的程序映象的起始。 程序大小(PS) 限制存储器中程序的映象大小(起始于PM的映象多大) 程序散列值(PHV) 指定安全散列算法1(SHA1)或报文摘要(MD5)散列值,它是使用程序散列密钥(PHK)根据程序映象计算的。如果没有被从预期的形式修改,那么存储器中的程序映象应计算出相同的PHV。 程序散列密钥(PHK) 用于为特定程序映象计算PHV的密钥。

在实施例中,PIKI表210包含受保护的密钥值和用于标识密钥值的密钥标识符。在一个实施例中,PIKI表210将特定的密钥材料与特定的程序相关联(例如,通过PID)。在实施例中,管理员225通过带外供应处理230提供PIKI表210。

表2描述了可以包含在PIKI表210中的多个数据结构。在可选实施例中,这些数据结构可以具有不同的名称。另外,在本发明的可选实施例中,可以使用更多的数据结构、或更少的数据结构和/或不同的数据结构。

                        表2

  数据结构名称  简要描述  程序标识符(PID)216  唯一标识机器中的程序的普通数字/字符串。  密钥ID(KID)214  由程序使用的密钥标识符,以将哪个密钥应该用于其操作通知给SMM组件。  密钥长度(KL)213  存储在SMRAM中的,由KID标识的特定密钥的长度。  密钥值(KV)212  存储在SMRAM受保护存储器中的,由KID标识的实际密钥值。

在实施例中,PIPC表215由SMM组件(或其他可信代理)创建,例如安全进程。PIPC表215可以用于计算特定程序的在主机存储器中的位置,并用于跟踪程序的状态。表3描述了可以包含在PIPC表215中的多个数据结构。在可选实施例中,这些数据结构可以具有不同的名称。另外,在本发明的可选实施例中,可以使用更多的数据结构、或更少的数据结构和/或不同的数据结构。

                        表3

  数据结构名称  简要描述  程序计数器起点(PCB)222  程序起始位置,应该与在主机存储器中实际发现PM的存储器地址相符合。  程序计数器界限(PCL)224  程序结束位置,应与PCB+PS相符合。  程序标识符(PID)  唯一标识机器中的程序的普通数字/字符串。  程序启动通知完成(PSN)218  用于记录是否由特定的有效程序正确地调用了程序启动通知。其由程序结束通知清除。

图2B说明了根据本发明实施例的程序存储器235。术语“程序存储器”指存储器的区域(例如,随机访问存储器(RAM)),其对于在主机处理器上运行的程序来讲是可访问的。在一个实施例中,SMRAM 200和程序存储器235都可以是主机处理器的主存储器的一部分。在可选实施例中,SMRAM 200可以在除主机处理器的主存储器之外的存储器的区域中实现。

在实施例中,程序与SMM组件(例如,存储在SMM中的安全程序)通信,至少有部分是通过程序数据表(PDT)240来进行的。SMM组件可以访问PDT 240,因为SMM是高特权的处理器模式,其可以访问程序存储器235(以及操作系统的存储器)。PDT 240可以指定将对程序数据执行的特定的安全操作245。另外,PDT 240指定程序数据的位置。例如,在所示的实施例中,数据缓冲区指针(DBP)250指向数据缓冲区260,并且完整性缓冲区指针(IBP)258指向完整性缓冲区265。另外,PDT 240通过密钥标识符268来标识将被用于处理程序数据的密钥材料。例如,密钥标识符268可以标识存储在SMRAM 200中的密钥,其用于处理存储在例如数据缓冲区260中的数据。

表4描述了可以包含在PDT 240中的多个数据结构。在可选实施例中,这些数据结构可以具有不同的名称。另外,在本发明的可选实施例中,可以使用更多的数据结构、或更少的数据结构、和/或不同的数据结构。

                        表4

  数据结构名称  简要描述  操作请求(OpR)245  标识程序希望SMM应用于它的所选的数据缓冲区的特定的安全操作(例如,完整性检查,加密,解密等)。  数据缓冲区长度(DBL)  标识程序的数据缓冲区的长度。  数据缓冲区指针(DBP)250  指向程序的实际数据缓冲区的指针,该缓冲区被SMM用作请求操作的输入。
  数据屏蔽指针(DMP)252 指向屏蔽缓冲区的指针,其指示SMM操作应跳过数据缓冲区260中的哪些位。  完整性缓冲区长度(IBL)255 由程序分配的完整性缓冲区的长度。  完整性缓冲区指针(IBP)258 指向保存完整性信息(例如,散列方法认证代码(HMAC))的、程序的缓冲区的指针。  错误代码(EC)272 当特定的操作失败时,由SMM返回的值。其可以指出失败的原因,或者如果没有失败则指示NONE。

由于PDT 240“存在于”易受攻击的存储区中,在一实施例中,需要确保该数据结构的完整性和数据缓冲区(例如,数据缓冲区260和/或完整性缓冲区265)的完整性。一种确保这些结构中的数据的有效性的机制是确保只有拥有这些数据结构的有效程序才被允许操作这些数据结构。在一个实施例中,这种机制通过将程序启动与程序结束通知之间的所有对PDT 240的有效修改限制到SMM组件的程序来实现。通过这种方式,SMM组件可以追踪在修改PDT 240之前哪个程序正在运行。

程序启动通知270通知SMM组件一程序将调用由SMM组件提供的安全操作。在一实施例中,一旦程序或设备驱动程序被调用,并且在开始修改PDT 240的内部数据结构前,由程序或设备驱动程序发出程序启动通知270。在一个实施例中,程序启动通知270是SMI通知。在实施例中,程序启动通知处理程序(未显示)可以接收程序启动通知270。处理程序可以通过以下方式来验证程序映象并记录PIPC表215中的调用源,例如,如果程序计数器在正确的范围内并且此范围内的程序映象仍未被修改,那么对于表项将程序启动通知(PSN)指示符218设为真(TRUE)。在PSN处理程序返回后,程序/驱动程序可以立即建立其内部数据结构,并配置PDT表240,其可以用作操作通知处理程序(未显示)的输入。当执行其以避免环境切换(它将导致恶意代码的执行)时,程序/驱动程序可以禁止中断,由此防止恶意代码在操作通知之前改变程序的数据或状态。

“操作通知”是指程序/驱动程序请求SMM组件提供安全操作(例如,提供安全数据和/或处理程序数据)。在实施例中,可以利用SMI通知实现操作通知。在一个实施例中,只有在SMI程序启动通知270成功完成之后,才可以由程序或设备驱动程序发出SMI通知。在实施例中,这个通知的SMI处理程序将根据例如所保存的状态图(SSM)恢复调用者的程序计数器,并在PIPC表215中找到表项,其中,所恢复的程序计数器在PCB 222和PCL 224之间的范围内。如果在PIPC表215中找到匹配范围,那么SMI处理程序可以验证该PIPC表项的PSN值218是否被设为真(TRUE),其意味着程序启动通知270提前被相同的程序正确地调用。如果PSN值21S为TRUE,那么处理程序可以从在通知之前由程序建立的PDT 240中读取数据,并应用为所提供的密钥ID 268指定的操作请求245。

在实施例中,操作请求245为SMM组件指定安全操作。安全操作可以包括获取机密数据和/或可以包括调用对程序数据的安全处理。安全处理的例子包括但不仅限于加密操作、解密操作、和/或加密和/或解密数据的完整性检查。

在一实施例中,加密操作可以使处理程序(例如,SMI处理程序)对由PDT表项的DBP 250所指的缓冲区(例如,数据缓冲区260)执行所选的加密算法,同时跳过由DMP 252所指的屏蔽缓冲区所屏蔽的区域。在一实施例中,加密代码使用存储在SMRAM中的、对应于所选的密钥ID 268的密钥。当SMM返回时,数据缓冲区260将被加密,并准备安全地通信。在一实施例中,密钥材料不暴露于调用程序。然而,管理模式代表调用程序(例如,如果调用程序的程序映象在存储器中已被验证)使用正确的密钥材料(例如,由密钥ID 268所标识的)。

在一实施例中,完整性检查操作可以使处理程序对例如由完整性缓冲区指针(IBP)258所指的完整性缓冲区265执行所选的完整性检查算法。在一实施例中,处理程序可以跳过由数据屏蔽指针(DMP)252指定的、缓冲区265的区域。完整性检查算法可以至少部分基于由密钥ID 268标识的相关联的会话密钥。在一个实施例中,以存储在完整性缓冲区265内的散列方法认证代码(HMAC)的形式提供完整性检查算法的结果。完整性检查算法的例子包括但不仅限于安全散列算法1(SHA1)或报文摘要5(MD5)。

在一实施例中,解密操作可以使SMI处理程序对由DBP 250所指的一个或多个缓冲区执行解密算法,同时跳过DMP 252屏蔽区域。在一实施例中,SMM解密代码(未显示)可以使用存储在SMRAM 200中的对应于密钥ID 268的密钥。当SMM返回时,解密由DBP 250所指的缓冲区,并准备读取,或者为PDT 240中的合适表项设置错误代码(EC)272。

通过与解密操作类似的方式,可以通过SMM代码来验证由DBP250所指的数据缓冲区的完整性。完整性检查可以至少部分基于在由IBP 258所指的完整性缓冲区中提供的HMAC,以及在SMRAM 200中发现的密钥ID 268的相关的会话密钥值。然后,完整性检查的成功或失败被通过相应的PDT表项的PDT错误代码Error Code(EC)272发送回调用SMI的程序。

在一实施例中,私钥(例如,用于公/私密码操作的)可以被SMM保护。在一个实施例中,SMM组件可以提供公/私操作,例如生成公/私密钥对。在一实施例中,SMM操作使用受保护的私钥执行Diffie-Hellman交换。SMM操作可以使用由密钥ID 268标识的私钥加密数据。类似地,SMM操作可以使用由密钥ID 268标识的私钥解密数据。

在一实施例中,程序结束通知275可以由程序或设备驱动程序发出,以在程序返回到它的调用者之前,表示程序段的SMM功能的使用的结束。在一实施例中,程序结束通知275是SMI通知。这个通知的处理程序(例如SMI处理程序)对匹配SMM恢复程序计数器的表项将PIPC表215的PSN值从TRUE重置为FALSE(假)。在一个实施例中,SMM模块不再根据来自这个程序的未来的操作通知而行动,直到再次从有效的程序映象正确地初始化程序启动通知270。其有效地封锁其它恶意程序,以防止它们试图通过修改程序的数据结构,然后仅仅跳转到在调用SMI操作通知的有效程序的代码之前的指令,从而避开这个程序ID的SMM模块。通过限制程序启动通知270和程序结束通知275之间的所有操作通知,程序编写者能够确保在从程序的有效映象发起的操作通知被允许之前,已经执行了通知270和通知275之间的所有程序段。

现在参照图3A-3C,参照流程图,按照计算机软件和硬件的方式描述与本发明的实施例相关的特定方法。由计算设备执行的方法可以是状态机或由计算机可执行指令组成的计算机程序。计算机可执行指令可以用计算机编程语言编写,或实现为固件(firmware)逻辑。如果用符合已知标准的编程语言编写,那么这些指令可以在多种硬件平台上执行并且可以与多种操作系统对接。另外,本发明的实施例不是参照任何特定的编程语言来描述的。应知道,多种编程语言可被用于实现如这里所述的发明的实施例。此外,在该技术领域中,谈到软件,各种形式(例如,程序、过程、进程、应用程序等)是相同的,都是采取行动或促成结果。这些表达方式仅仅是以下意思的简略的表达方式,即,由计算设备执行软件以使设备执行一动作或产生一结果。

图3A-3C是说明根据本发明实施例的,用于保障平台间和平台内通信的方法的所选方面的流程图。在图3A-3C中描述的方法可以利用参照图2A-2B描述的数据结构来实现。在可选实施例中,图3A-3C中描述的方法可以使用不同的数据结构来实现。

图3A是说明根据本发明的实施例的,用于初始化存储器的受保护区域(例如,图2A中所示的SMRAM 200)的方法的某个方面的流程图。参照处理框305,VPI表(例如,图2A所示的VPI表205)被添加程序标识信息。在一个实施例中,VPI表经由安全的带外信道增加。参照处理框310,PIKI表(例如,图2A所示的PIKI表210)被增加机密信息,例如与程序标识符(例如,图2A所示的程序ID 216)关联的密钥值(例如,图2A所示的密钥值212)和对应的密钥标识符(例如,图2A所示的密钥ID 214)。

参照处理框315,SMM模块(或其他可信代理)在程序存储器(例如,图2B所示的程序存储器235)中搜索对应于在处理框310中提供的程序ID的程序。参照处理框320,SMM模块为每个搜索到的程序所关联的程序ID设定程序计数器起点(PCB)(例如,图2A所示的PCB222)以及程序计数器界限(PCL)(例如,图2A所示的PCL 224)。

图3B-3C是说明根据本发明实施例的,保障平台间和平台内通信的方法的某些方面的流程图。参照处理框325,程序启动通知(例如,图2B所示的程序启动通知270)触发SMM。SMM模块在处理框330从例如所保存的状态图中恢复程序计数器。参照处理框335,SMM模块在PIPC表中搜索对应于发送所述程序启动通知的程序的表项。在一实施例中,如果发现表项,那么在处理框340,SMM模块检查所恢复的程序计数器是否在PCB和PCL之间。检查所恢复的程序计数器是否在PCB和PCL之间有助于确保程序启动通知实际上是由所述程序发送的,而不是由恶意软件发送的。在一些实施例中,如处理框345所示,SMM模块重新验证调用程序映象是否匹配VPI表中的表项(例如,通过计算散列值,并将计算出的散列值与存储在VPI表中预定的散列值进行比较)。

参照处理框350,程序启动通知标志被设为真,并将控制返回到调用程序。在一实施例中,现在允许调用程序修改程序数据表(PDT)(例如,图2B所示的PDT 240)中的数据。在处理框355,程序更新缓冲区位置(例如,通过图2B所示的DBP 250和IBP 258),并提供正确的密钥标识符(例如,图2B所示的密钥标识符268)。在处理框360,程序完成缓冲区相关任务(例如,缓冲区的分配等)。参照处理框365,程序触发操作通知(例如,SMI通知)并且控制返回SMM。

参照处理框370,SMM模块从所保存的状态图(SSM)恢复程序计数器。在375,SMM模块在PIPC表中搜索与调用程序相对应的表项。参照处理框376,SMM模块确定所恢复的程序计数器是否在记录在PIPC表的对应于调用程序的表项中的PCB和PCL之间。在一个实施例中,对于PCB和PCL,可以有多个允许范围。在这种实施例中,SMM模块可以确定程序计数器是否在PCB和PCL的多个允许范围中的一个范围中。参照处理框378,SMM模块确定调用程序的PIPC表项中的程序启动通知标志是否被设为真。在一实施例中,如果在处理框376或378中检查的任何一个条件都不为真,那么如380所示,SMM模块设置合适的错误代码(例如,图2B所示的错误代码272),并将控制返回到调用程序。参照处理框382,SMM模块执行由操作请求(例如,图2B所示的操作请求245)指定的操作。操作可以对在由数据缓冲区指针(例如,图2B所示的DPB 250)所指的数据缓冲区中的数据执行。SMM模块可以使用对应的程序ID和密钥ID的密钥值(例如,图2A所示的密钥值212)来处理数据。在一实施例中,SMM模块跳过由数据屏蔽缓冲区(例如,图2B所示的数据屏蔽缓冲区256)指定的屏蔽区域。

如果操作成功,则在处理框384,SMM模块可以将错误代码设置为NONE,并将控制返回给调用程序。参照处理框386,程序可以发送程序结束通知以防止程序数据表被未授权的程序修改。在处理框388,SMM模块恢复调用程序的程序计数器。在处理框390,SMM模块在PIPC表中搜索与调用程序对应的表项。在一实施例中,在处理框392,SM模块确定调用程序的程序计数器是否在PCB和PCL之间。在处理框394,程序启动通知标志被设为假(false),并且在处理框396,将控制返回给调用程序。在一实施例中,当程序启动通知标志被设为假时,程序数据表不能被修改。

图4是根据本发明实施例的,用于加密外发包的结构400的框图。为了说明本发明的实施例,图4涉及结构400的传输队列。应知道,参照图4所示的外发队列描述的操作也可以应用于平台400的接收端(未显示)的进入队列。

所示的结构400的实施例包括处理器405、物理存储器410、输入/输出(I/O)控制器集线器415以及媒体访问控制(MAC)设备420。处理器405可以包括微处理器、微控制器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、中央处理单元(CPU)、可编程逻辑器件(PLD)以及从系统存储器(例如,存储器410)存取指令,对它们进行解码,并通过执行算术和逻辑操作来执行这些指令的类似设备。

物理存储器410可以包括多种存储设备,其中包括只读存储器(ROM)、可擦写可编程只读存储器(EPROM)、电可擦写可编程只读存储器(EEPROM)、随机访问存储器(RAM)、非易失性随机访问存储器(NVRAM)、缓存、闪存以及其他存储设备。在一实施例中,物理存储器410包括SMRAM 425和驱动程序存储器430。在一个实施例中,SMRAM 425和驱动程序存储器430是同一存储设备的两个区域。在可选实施例中,SMRAM 425和驱动程序存储器430在不同的存储设备上实现。

在一个实施例中,I/O控制器集线器(ICH)415可以提供结构400和外围I/O设备之间的接口,以及结构400和MAC设备420之间的接口,其可以提供到外部网络(未显示)的接口。

在一实施例中,结构400如下所述发送包。如参考标记435所示,网络设备驱动程序(未显示)生成SMI程序启动通知。SMI处理程序恢复设备驱动程序的程序计数器,并将所恢复的程序计数器与存储在PIPC表440中的所允许的程序计数器值的范围进行比较。在一实施例中,从所恢复的程序计数器取回设备驱动程序的地址。

在处理框450,网络设备驱动程序为传输建立缓冲区445(例如,利用中断禁止)。在缓冲区445建立后,如参考标记455所示,网络设备驱动程序使SMI操作通知指定“加密”和/或“完整性产生”通知类型的操作请求。SMI处理程序记录存储在缓冲区445中的准备发送的帧的物理地址。在实施例中,PDT中的DBP指定缓冲区445的物理地址。

在一实施例中,SMI处理程序在例如保存待发送数据的缓冲区445上运行加密代码460和/或完整性生成代码。在一实施例中,缓冲区445被适当地加密,和/或在PDT(未显示)的完整性缓冲区指针所指的缓冲区中生成完整性HMAC,并且将控制返回到网络设备驱动程序。在一实施例中,设备驱动程序使用直接存储器访问来将存储在缓冲区445中的帧发送到MAC设备420。参考标记465说明缓冲数据被通过直接存储器访问发送到MAC设备420。MAC设备420在传输了它从缓冲区445接收的数据之后,将传输完成信号发送给处理器405。在一实施例中,在传输完成后,设备驱动程序触发SMI程序结束通知。

如图4所示(例如,参考标记435,450和455所指),本发明的实施例可以提供平台内通信和平台间通信。平台内通信的一个例子是主机上的安全软件和平台(Procative/Navassa)上的嵌入式管理处理器上的固件安全代理之间的认证的心跳消息(heartbeat message)的交换,以确定安全组件的存在。

规则的心跳通信确定在平台上存在安全代理。这种通信是敏感的,并且在实施例中,可以保护其以防欺骗。这种通信可以经由任何媒介,例如,通过直接存储器访问,或者经由专用管理总线。在一实施例中,(如上所述)完整性检查和/或加密操作可以在抗窜改和机密的环境中应用于心跳消息上。嵌入式管理处理器可以创建密钥,从而使得它可以验证心跳消息。在一实施例中,使用的密钥并不泄露给其存在由心跳消息确定的安全软件。在这种情况下通信的端点可以是主机软件和在嵌入式管理控制器上的管理软件。同样的概念可以用于敏感的程序间通信或者用于单个程序(该单个程序既是数据交换的源又是目的地)的数据的完整性保持。在一个实施例中,随机现时(randomnonce)可以结合密钥使用,以防止在可选实施例中的重放攻击。

如图4所示(例如,参考标记435和452所指),本发明的实施例可以提供程序内通信以及程序问通信。在一实施例中,程序可以是内核组件(例如,ring-0级程序)。在一个实施例中,程序可以是应用程序(例如,ring-3级程序)。在程序为应用程序的实施例中,受保护的通信可以被称为进程间和/或进程内通信。例如,在一实施例中,从一个调用到另一个调用,程序可以随着时间的过去来确保其自身的数据和状态,从而使得没有其他的程序可以在拥有数据或状态的程序不知情的情况下修改其数据或状态。

在这种实施例中,“合法”程序可以使用SMM受保护密钥以通过加密和解密数据来隐藏和显示数据,从而使得只有相同的(或其它)合法程序才可以访问数据。在可选实施例中,从一个调用到另个调用,程序可以使用SMM受保护密钥,通过当程序被调用时计算内部程序状态的HMAC来验证它的状态的完整性,以确保自从前次调用之后,数据是未改变过的。在程序返回之前,程序可以发出SMI以便为在下次调用时将被验证的内部状态或其他数据生成新的HMAC。或者,程序可以为其内部数据结构生成散列值或运行校验和,并且仅使用SMM组件来签名或者保护其自身数据结构的程序生成散列值/校验和的完整性。在这样的实施例中,程序将在SMI程序结束通知之前和SMI程序启动通知之后计算内部数据结构的散列值/校验和。操作通知可用于在使用散列值/校验和之前检查其完整性,并且在程序已经完成操作其数据结构并更新其散列值/校验和之后,可以再次生成新的完整性HMAC。在一实施例中,将完整性验证中的错误通过PDT(例如,图2B所示的PDT 240)中的错误代码报告给调用程序。

图5是说明支持不同层的网络安全协议的本发明的实施例的结构500的框图。在实施例中,结构500可以支持网络层安全(例如,因特网协议安全(IPSEC)),传输层安全(TLS),和/或应用层安全。

在一个实施例中,网络驱动程序510利用附加的元数据(例如,532,534和536)给从不同的网络层协议522-526接收的(和/或向它们发送的)帧描述符“打标签”。这些标签也是在SMRAM中(与密钥一起)预先提供的,并被SMI处理程序用于确定例如,使用哪种加密算法,使用哪个密钥以及加密哪一层。在一实施例中,当调用到网络驱动程序510时,上层协议层(例如,协议层522-526)也被进行源验证,以防止攻击者将帧插入到安全的会话中。

图6是说明根据本发明实施例而实现的事务处理600的事务处理示图。事务处理600包括主机网络设备驱动程序605,主机物理存储器610,SMI处理程序615和网络控制器620。在一实施例中,设备驱动程序605使程序启动将被发送给SMI处理程序615的SMI通知625。SMI处理程序615可以通过例如所保存的状态图(未显示),将设备驱动程序605识别为作为事务处理的源的程序。如参考标记630所示,SMI处理程序将控制返回给设备驱动程序605。

在一实施例中,如632所示,设备驱动程序605可以禁止中断以防止在事务处理600期间的环境切换。然后,如634所示,设备驱动程序605可以将准备好被发送的帧缓冲区插入到发送先进先出(FIFO)队列中(队列未显示)。在一个实施例中,如636所示,当加载FIFO队列时,允许中断。如638所示,设备驱动程序605随后可以发送加密操作SMI通知给SMI处理程序615。

SMI处理程序615可以重新检查源程序计数器,以确认它对应于设备驱动程序605。在一实施例中,SMI处理程序615使用存储在SMRAM中的密钥材料加密在例如设备驱动程序605的程序数据表中指定的数据。然后,SMI处理程序615可以通过操作SMI返回640将控制返回给设备驱动程序605。然后,如参考标记645所示,设备驱动程序605可以通知网络控制器620包已准备好发送。网络控制器620可以使用例如直接存储器访问来将包发送给主机物理存储器610中的网络接口卡存储器。在实施例中,在650,网络控制器620通知设备驱动程序605包已发送。

本发明的实施例的元件也可以作为用于存储机器可执行指令的机器可访问介质来提供。机器可访问介质包括任何提供(例如,存储和/或发送)机器(例如,计算机,网络设备,个人数字助理,制造工具,具有一个或多个处理器的任何设备等)可访问形式的信息的方式。例如,机器可访问介质包括可记录/不可记录的介质(例如,只读存储器(ROM)、随机访问存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等),以及电子的、光学的、声学的或其它传播信号的形式(例如,载波,红外信号,数字信号等)等。

应当认识到,贯穿本说明书的对“一个实施例”或“一实施例”的提及,其意指结合实施例描述的特定特征、结构或特点包含在本发明的至少一个实施例中。因此,需要强调和认识到的是,在本说明书的不同部分中的对“一实施例”或“一个实施例”或“一可选实施例”的两处或更多处的提及并不必全部是指同一个实施例。此外,在一个或多个本发明的实施例中,可以适当的组合特定特征、结构或特点。

类似地,应该理解,在前述的对本发明实施例的描述中,各种特性有时被组合在单独的实施例、附图或其说明中,目的是简化有助于理解一个或多个不同发明方面的公开。但是,不应将这种公开方法解释为表示所声明的主题需要比在每一个权利要求中清楚地叙述的特征更多特征。然而,如下列权利要求反映的,发明方面在于比前面公开的单个实施例的全部特征更少。因此,在详细说明书后的权利要求由此清楚地合并入本详细说明中,每个权利要求自身可作为本发明的单独实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号