用于确定软件的正确的执行的系统和方法

文档序号:6498457阅读:234来源:国知局
用于确定软件的正确的执行的系统和方法
【专利摘要】实施例提供关于软件的正确操作的确信水平。实施例创建软件的基准和实时测量,并将比较测量以判断软件是否正在正确地操作。应用提供商可以在目标软件应用中包括“跟踪元素”。当产生应用时,检测跟踪元素,并提供踪迹事件,踪迹事件共同地提供表示正确的应用执行的“基准踪迹”。提供商向用户提供应用和基准踪迹。用户实时地操作应用,以基于应用仍具有产生踪迹事件(共同地形成“实时”踪迹)的踪迹元素,产生“实时踪迹”。比较器比较基准和实时踪迹。如果踪迹在彼此的预先确定的范围内,则用户具有软件正在正确地操作的确信水平。此处还包括了其他实施例。
【专利说明】用于确定软件的正确的执行的系统和方法 北曰 冃乐
[0001] 软件可能由于多种原因(包括"恶意软件"和"软件腐烂")而停止正确地运行。恶 意软件是计算机系统上的问题的来源,它呈现各种形式,带有无限的攻击向量。不管形式和 向量,恶意软件的最终结果是原始软件不能正确地工作。"腐烂"(也称为"软件老化")涉 及在某个时间长度之后软件停止正确地运行的情况。原因可能是资源消耗、缺陷、或瞬时硬 件故障,诸如杂散的高能粒子撞击芯片。无论腐烂的原因是什么,最终结果都是软件停止正 确地运行。
[0002] 考虑恶意软件和腐烂的范围较宽的形式,软件社区面临着向软件用户提供一个软 件实际上正在正确地执行的确信的挑战。尽管可以确保软件的正确的加载(例如,通过诸 如imel?受信任的执行技术之类的特征),但是,在软件被加载之后,获取关于该软件的实 际执行的可靠的信息是具有挑战性的。 附图简述
[0003] 本发明的各实施例的特征和优点将从所附权利要求书、下面的对一个或多个示例 实施例的详细描述,以及对应的图形,变得显而易见,其中:
[0004] 图1包括在本发明的一个实施例中用于判断软件是否正确地操作的系统。
[0005] 图2包括本发明的一个实施例中的踪迹事件的示意结构。
[0006] 图3-7解决了本发明的各实施例中的来自各种软件架构的预期踪迹输出。
[0007] 图8包括与本发明的各实施例一起使用的系统。

【具体实施方式】
[0008] 在下面的描述中,阐述了很多具体细节,但是,本发明的各实施例可以在没有这些 具体细节的情况下实施。没有详细示出已知的电路、结构,以及技术,以便避免使对此描述 的理解变得模糊。"实施例"、"各实施例"等等表示所描述的各实施例可包括特定特征、结构 或特性,但是,每一个实施例都可以不一定包括该特定特征、结构或特征。一些实施例可以 具有为其他实施例描述的某个,全部特征或没有一个特征。"第一"、"第二"、"第三"等等描 述共同的对象,并表示正在引用相同对象的不同的实例。这样的形容词不暗示如此描述的 对象必须处于给定序列,无论是在时间上、在空间上,在排序上,或以任何其他方式。
[0009] 实施例提供关于软件的正确操作的确信水平。实施例创建软件的基准和实时测 量,并比较测量结果以判断软件是否正在正确地操作。应用提供商可以包括在目标软件应 用中的"跟踪元素"(此处也被称为"断言")。当生产、开发、测试、装运或以别的方式与应 用一起协作时,检测跟踪元素,并提供踪迹事件(例如,指令计数(1C)),共同地提供表示适 当的应用执行的"基准踪迹"。然后,提供商向用户提供仍包括跟踪元素以及基准踪迹的应 用。用户实时地操作应用,以基于应用仍具有产生踪迹事件(共同地形成"实时"踪迹)的 跟踪元素,产生"实时踪迹"。然后,比较器比较基准和实时踪迹。如果踪迹在彼此的预先确 定的范围内,则用户具有软件正在正确地操作的确信水平。
[0010] 这种确信水平具有许多应用,诸如,例如,恶意软件检测器和证据提供商,供公司 的信息技术(IT)组和各种各样的用户使用。更准确地说,这种确信水平具有下列应用: 密码处理(例如,密码数据只能被密码处理器访问,并由密码处理器使用的确信)、在线银 行(例如,处理用户的银行帐户信息的唯一软件进程是授权的银行软件的确信)、在线游戏 (例如,个人未欺骗并且所提供的软件正在正确地执行游戏的确信)、数字权限管理(DRM) (例如,在DRM软件中正在实施DRM规则的确信)、健康记录(例如,根据合适的策略,遵循 对健康记录的访问的授权的确信)、财务软件(例如,知道传输和自动交易两者都正确地发 生)、云计算(例如,需要运行云应用的软件正在正确地运行)等等。
[0011] 图1包括在本发明的一个实施例中用于判断软件是否正确地操作的系统。系统 100组合了两个过程:(1)踪迹收集,以及(2)实时踪迹和基准踪迹之间的比较。例如,在框 110中,软件提供商(例如,软件开发人员和/或能对源代码进行访问的某人)对"目标"软 件103 (此处有时被称为代码、应用等等))进行插桩,以生成踪迹事件(使用嵌入在代码中 的跟踪元素或"断言"),然后,例如,当软件准备发货给用户时,从所生成的一个或多个踪迹 事件创建基准踪迹106 (存储在缓冲器105中)。在装运之后,在框111中,实时运行的或执 行的软件生成踪迹事件(使用仍嵌入在装运的软件中的跟踪元素或断言),以生成由一个 或多个踪迹事件共同地构成的实时踪迹116 (存储在缓冲器115中)。然后,在框120中, 比较功能(此处被称为"比较器")将实时踪迹116与基准踪迹106进行比较,如果踪迹在 预定的可接受的量内匹配,则用户可以具有软件103如供应商预期它那样执行的确信水平 (130)。否则,用户没有这样的确信(125)。
[0012] 用于生成踪迹事件的机制是变化的。在一个实施例中,使用诸如系统可见 事件关系关结(SVEN)之类的系统。SVEN是允许踪迹的创建的硬件机制(在,例如, www*videon-central*corn,在提交时可用)。在一个实施例中,当希望获得正确操作的确 信时,SVEN被软件供应商用来创建基准踪迹(框110和106)和实时踪迹(框111和116)。 SVEN处理断言,以生成共同地在SVEN缓冲器105中形成踪迹的SVEN事件。为使SVEN操 作,软件103可以包括SVEN断言。供应商或任何其他方将断言编译到代码103中,它们甚 至在生产发布时都保持存在。SVEN断言(框110,111)可以生成遵循诸如在图2中发现的 格式(下面进一步地讨论)之类的固定格式的SVEN事件。软件103断言SVEN事件(框 110,111),并且关结(nexus)收集事件,并将它置于缓冲器中(当涉及基准踪迹时为缓冲器 105,当涉及实时踪迹时为缓冲器115)。
[0013] 缓冲器105、115可以是允许SVEN事件的恒定输入的循环缓冲器。缓冲器105、115 可以包括完整性保护,以确保只有SVEN才将项目放置到缓冲器中。由于敏感数据的暴露的 威胁,对缓冲器的读取需要保护。
[0014] 在一个实施例中,缓冲器1〇5、115可以被包括在"被盗窃的物理存储器"中,其中, BIOS将预留被盗窃的存储器区域,并通过范围寄存器指出位置。范围寄存器将允许只对向 缓冲器的SVEN写入进行硬件保护。实施例可以要求SVEN是能够向缓冲器写入的唯一代理。
[0015] SVEN可以创建信息的缓冲器105,115, 一次一个事件。事件可以是32字节尺寸, 并且内容可以是事件特定的。图2示出了 SVEN事件200的示例布局。值得注意的是,"指 令计数"(IC)包括自从最后一次SVEN调用以来发生的指令的计数。此外,还请注意,"时间 戳"条目允许将SVEN事件排序为事件的排序的流。在某些实施例中,时间戳足以用于排序, 并可以被用作踪迹以代替1C。然而,在其他实施例中,1C确定踪迹值。此外,SVEN事件200 还可以包括启动SVEN事件的线程的1C以作为首部的一部分。正如软件不能控制时间戳, 软件可能也不能控制1C。在一个实施例中,SVEN事件尺寸是32字节。
[0016] 在一个实施例中,1C包括涉及单一线程的各种属性(例如,1C只来自于启动线程, 没有其他执行线程影响计数),无中断(例如,1C不包括来自环0、安全模式管理(SMM),或 任何其他中断服务的任何指令),无负荷影响(例如,如果其他操作正在在设备上发生,则 1C不响应于增大的负荷而改变)。
[0017] 各实施例可以在各种应用中"对进行插桩"(例如,嵌入跟踪元素或断言)。例如, 实施例可以插桩"输入解析器",输入解析器可能会导致安全问题,因此,是用于插桩的好的 候选。对输入的不正确的处理可使攻击者将恶意软件插入到应用中。适当地执行解析器会 急剧地降低恶意软件将信息插入到应用中的能力。如此,各实施例可以提供正确的解析器 执行的证据。如果各实施例可以检测不正确的行为,则这样做将使应用更好地保卫其本身 免遭恶意软件的侵害。
[0018] 可以使用实施例来插桩"心跳应用"。这样的应用每隔一定的时间间隔检查特定 条件的证据。一个示例是定期检查防病毒(AV)程序的执行的心跳应用。如果心跳应用没 有检测到AV应用,则心跳应用将关于检测不到AV执行的信息通知用户、管理控制台,等等。 这样的插桩可以使人确定心跳应用的健康以及程序是否正在正确地工作。
[0019] 实施例可以专注于检测软件腐烂。腐烂会在程序的各个部分发生。插桩可以在关 键区域或程序的某些部分或整个这样的程序中执行。
[0020] 用于插桩的其他区域包括加密功能等等。
[0021] 尽管上面的几段讨论了对软件进行插桩,以产生基准和实时踪迹(将参考图3-7 进一步讨论插桩),现在注意力暂时转向如何比较那些值。用于进行这样的比较的软件应 用(在图1的框120中被称为"比较器")可以与目标软件103配对。在一个实施例中,由 适当地插桩的并定义的软件产生的踪迹将不能透露有关密钥或其他这样的敏感数据的信 息。如此,基准和运行时踪迹的产生和暴露不必是受访问保护的(但是,在其他实施例中可 以)。此外,在一个实施例中,对框120的比较器的使用没有限制,如此,比较器可以在没有 任何授权的情况下工作。这可以简化比较器的代码和比较器的分配。在一个实施例中,t匕 较器可以访问基准和运行时踪迹,但是不需要对任何一个踪迹的写访问。在一个实施例中, 可以阻止比较器向涉及任一踪迹的任何缓冲器(例如,缓冲器105,115)的写入。在一个实 施例中,比较器可以具有验证任一流程的完整性的功能,但是在其他实施例中,比较器没有 这样的能力。
[0022] 关于基准踪迹106,可以由软件提供商(例如,软件程序员、经销商,或软件的用 户)提供基准踪迹。基准踪迹表示正确地起作用的程序的执行。如上文所提及的,在某些 实施例中,,比较器120不验证基准踪迹106的提供方(providence)和完整性。然而,在这 样的情况下,软件提供商可以在基准踪迹上提供数字签名,该数字签名将允许比较器的调 用者验证基准踪迹106的提供方和完整性。在某些实施例中,软件提供商之外的实体可以 创建基准踪迹(例如,当软件在使基准踪迹的创建者不准确的特殊环境中运行时)。
[0023] 在一个实施例中,比较器120不涉及运行时踪迹116的收集。比较器不验证运行时 踪迹的提供方或完整性。相反,在一些实施例中,比较器的调用者负责验证运行时踪迹的提 供方和完整性。在一个实施例中,收集实时踪迹116并将它提交到比较器的生态系统必须 正确地匹配运行时踪迹与基准,验证基准和运行时两者的完整性,然后,传播比较器报告。
[0024] 在一个实施例中,比较器120可以联机和/或离线工作。在联机模式下,比较器监 控实时踪迹,并"尽可能快地"对检测到的异常作出响应。在脱机模式下,比较器审阅预先 记录的实时踪迹,并提供踪迹匹配或不匹配的裁决。在一个实施例中,比较器可以比较存储 在两个缓冲器(例如,缓冲器1〇5,115)或者甚至单一缓冲器中的两个踪迹。缓冲器是动态 的,也可以是静态的。比较器可以在与收集运行时踪迹的平台相同的平台或不同的平台上 操作。在一个实施例中,比较器(例如,离线比较器)可以作为环3应用来操作(基于特许 环层次结构,其中,较低层或环有更多特权)。
[0025] 然而,在某些实施例中(例如,与运行时踪迹的收集同步地工作的在线比较器), 比较器120可以在特殊环境中执行。这样的环境可以使,例如,比较器安全地通知管理控制 台,而不会有截取,或执行应用的新加载,而无需重新启动平台。在这样的情况下,比较器可 以与目标软件103隔离。例如,比较器和目标软件可以在可以完全地与彼此分开的不同的 地址空间中运行。示例将包括分别对于比较器120和目标软件103的两个环3进程或两个 分离的虚拟机(VM)。当目标软件是基本组件(例如,环0或虚拟机监视器(VMM))时,该架 构可以提供用于比较器的执行的位置。
[0026] 在一个实施例中,比较器120可以访问运行时缓冲器115。随着目标软件不断地利 用额外的事件填充缓冲器(例如,由于遇到插桩的跟踪元素或断言导致的输出),比较器可 以读取缓冲器并比较实时踪迹与基准踪迹。比较器的对缓冲器的访问可以使得目标软件或 诸如恶意软件之类的其他软件都不会干扰比较器的缓冲器访问(例如,由于将对缓冲器的 访问的隔离到仅指定的功能的隔离机制的使用)。此外,比较器还可以具有对缓冲器的读取 访问,但是,任何写访问都会被架构减轻。如此,在一个实施例中,仅某些实体(例如,SVEN 硬件)可以将事件(例如,SVEN踪迹事件)写入到缓冲器中。
[0027] 在一个实施例中,使目标软件103不会察觉到(例如,通过虚拟化)比较器何时执 行比较。在比较器按日程表来操作的各实施例中,任何调度都会在目标软件的视界之外发 生。
[0028] 在一个实施例中,比较器(例如,120)可以在两个踪迹之间执行直接比较,以产生 关于踪迹是否匹配的"是"或"否"的回答。然而,在其他实施例中,比较器可以产生导致 "置信水平"的结果。例如,比较器可以对于完美匹配的1C产生"完成"评价,对于在彼此的 10%内的1C产生"高",以及对于彼此偏离超过10%的1C产生"低"。任何报告都要服从安 全性(例如,数字签名)等等。
[0029] 进一步地,比较器120可以在提供受保护的执行位置的隔离的环境(例如,可信平 台模块)内操作。执行保证能够在没有干扰的情况下操作的能力。此保证提供执行比较器 的位置,以便比较器与所有其他平台进程隔离。
[0030] 图3-7解决了来自各种软件架构的预期踪迹输出。在一个实施例中,这些输出生 成通过比较器120比较的基准和实时踪迹106、116。为便于说明,预期的踪迹只示出了过滤 的信息量,但是,在某些实施例中,典型的首部信息仍可以存在于每一事件中。
[0031] 图3包括带有只使用软件断言而没有相关联的硬件踪迹数据的功能的"直的代码 (straight code) "。线303和306指出调用"断言"的插入的踪迹事件(参见"DEVH"条目)。 换言之,当代码的执行连接那些断言时,这些"断言"共同地生成基准和实时踪迹1〇6、116。 作为行303,306中的两个不同的断言的结果,以及所讨论的"直的代码"(例如,无循环)的 事实,在时间戳(TS) 45. 86和00. 02处只有两个预期的踪迹事件。如上文所指出的,在各实 施例中,使用了示出自从最后一个断言以来"增量"或指令计数变化的1C。在图3的情况 下,有2580和1256的1C。比较器将会以此信息作为基准踪迹。然后,将生成(110,106)实 时踪迹,并将它们与基准踪迹进行比较(120)。在没有外部硬件使用的情况下,每次图3的 代码都应该以同样的方式运行,如此,出口处的1C应该是恒定值。入口 1C可能不同,因为 它将取决于如何调用功能。比较器应该看见1C值中的很小的可变性,并且应该相应地判断 (例如,"完成"、"高"、"低"级别的完整性)。甚至进入1C应该几乎相同。
[0032] 图4包括带有外部服务的"直的代码"。这种类型的函数没有控制流程变化,但是 调用外部服务。在此示例中,在行403、406、408、410有四个踪迹断言,有四个对应的踪迹事 件。然而,有两个不同的预期的踪迹:"预期的踪迹1"和"预期的踪迹2"。具体而言,这是 直的比较。序列必须存在,或者函数不适当地执行。外部函数("ExternalABC")可以,或 可以不具有断言。"预期的踪迹1"示出了当外部函数没有断言时的结果。"预期的踪迹2" 示出了当外部函数有断言(例如,SVEN断言)时的结果。在"预期的踪迹1"中,后断言示 出了包括函数调用的开销以及由"外部ABC"执行的所有操作的计数25890。在"预期的踪 迹2"中,后断言示出了相同值(258900),但是内部操作示出了那些指令的细分。后处理可 以轻松地显示与"外部ABC"的出口处的增量。不管怎样,都有相同指令数量。
[0033] 图5包括带有循环的代码。循环在代码中是常见的,并提供反复地执行相同操作 的方式。循环也是由于诸如缓冲器溢出之类的错误而通常发生攻击的一个区域。在此示例 中,在行503、504、507以及512有断言,但是,由于循环而存在超过四个的踪迹事件。在一 个实施例中,如果代码断言要查找若干个迭代,则基准踪迹将为单一迭代提供指令计数,t匕 较器可以确保每一迭代都使用正确数量的指令。如果循环包括提前退出检查,则贯穿代码 的该路径也可以提供踪迹断言。如果循环计数溢出,则这是指出代码不正确地操作的问题 的直接证据。值得注意的是,在图5中,对于计数0,IC比剩余迭代更大。在此情况下,循环 的第一迭代计数循环前面的指令以及循环构造的设置。循环的所有随后的迭代都计数从循 环的底部到顶部的指令。这与其他迭代对照,说明了对于计数0的不同的1C。
[0034] 图6包括带有使代码作出决定的IF语句的代码。在行603、605、608、613以及616 有断言。由于由IF语句必然导致的差异,比较有点复杂。取决于代码的复杂性,软件提供 商可能希望仅插桩IF相关的代码的各个部分。如果代码路径被寻址,并存储为基准踪迹, 那么踪迹之间的比较是直接的。然而,如果代码路径不在基准中,则比较可以返回"未知"的 裁决。各实施例可以以各种方式处理分支。例如,实施例可以将转移指示器以及额外的断 言放置在目标代码中,以指出采取哪一个分支。另一实施例可以创建基准,以便基准了解两 个路径,比较具有选择任一路径的方式。
[0035] 实施例包括基于所述恶意软件执行超出从所述第一基准跟踪事件扩展到所述第 二基准跟踪事件的指令计数的指令数量,来检测恶意软件活动;其中,所述恶意软件至少部 分地被包括在所述应用中并位于所述第一和第二断言之间。结果,实施例限制恶意软件的 计算能力。例如,如果恶意软件希望隐藏而不被检测到,则恶意软件必须在两个踪迹事件之 间的多个指令内操作。如此,恶意软件具有对两个踪迹事件之间的可能的工作量的计算限 制。
[0036] 图7包括带有硬件交互的代码。代码在行703、704以及708具有断言。这里,硬 件交互是针对硬件资源R1 (例如,寄存器)的。此示例示出了组合了踪迹数据(例如,SVEN 数据)与OMAR硬件交互的实施例。OMAR是有效率地将几百个内部片上系统(SoC)信号的 踪迹收集到主机存储器中的硅特征(例如,包括在某些Intel?消费电子产品平台上)。踪 迹断言指出代码将访问哪些资源。所产生的踪迹包含资源的标识和使用。比较是直接的, 但是,通常将包括前和后断言,以跟踪何时发生资源访问。
[0037] 各实施例可以以许多不同的系统类型来实现。现在请参看图8,示出了根据本发明 的一实施例的系统的框图,该系统可以在台式机、膝上型计算机、移动因特网设备、移动计 算节点、智能电话、手机、无线电台、固定计算节点等等中发现。多处理器系统800是点对点 互连系统,并包括通过点对点互连850耦合的第一处理器870和第二处理器880。处理器 870和880中的每一个都可以是多核处理器。术语"处理器"可以是指处理来自寄存器和 /或存储器的电子数据以将该电子数据转换为可以存储在寄存器和/或存储器中的其他电 子数据的任何器件或器件的一部分。第一处理器870可以包括存储器控制器中枢(MCH)和 点对点(P-P)接口。类似地,第二处理器880可以包括MCH和P-P接口。MCH可以将处理器 耦合到相应的存储器,即,存储器832和存储器834,它们可以是本地附接到相应的处理器 的主存储器(例如,动态随机存取存储器(DRAM))的某些部分。第一处理器870和第二处 理器880可以分别通过P-P互连来耦合到芯片组890。芯片组890可以包括P-P接口。此 夕卜,芯片组890还可以通过接口耦合到第一总线816。各种输入/输出(I/O)设备814以及 总线桥接器818可以耦合到第一总线816,总线桥接器818将第一总线816耦合到第二总线 820。在一个实施例中,各种设备可以耦合到第二总线820,包括,例如,键盘/鼠标822、通 信设备826和诸如磁盘驱动器或可以包括代码830的其他大容量存储设备之类的数据存储 单元828。代码可以被包括在一个或多个存储器中,包括存储器828、832、834、通过网络耦 合到系统800的存储器,等等。进一步地,音频I/O 824可以耦合到第二总线820。
[0038] 各实施例可以以代码来实现,并可以存储在在其上存储了指令的至少一个存储介 质上,指令可以被用来对系统进行编程以执行指令。存储介质可以包括,但不仅限于,任何 类型的磁盘,包括软盘、光盘、固态驱动器(SSD)、光盘只读存储器(⑶-ROM)、光盘可重写 (CD-RW),以及磁光盘、诸如只读存储器(ROM)之类的半导体器件、诸如DRAM、和静态随机存 取存储器(SRAM)之类的随机访问存储器(RAM)、可擦除编程只读存储器(EPR0M)、闪存、电 可擦除编程只读存储器(EEPR0M)、磁卡或光卡,或适于存储电子指令的任何其他类型的介 质。
[0039] 此处参考诸如指令、函数、过程、数据结构、应用、配置设置、代码等等之类的数据 描述了本发明的各实施例。当数据被机器访问时,机器可以通过执行任务、定义抽象数据类 型、建立低级别的硬件上下文,和/或执行其他操作来作出响应,如此处更详细地描述的。 数据可以存储在易失性和/或非易失性数据存储中。术语"代码"或"程序"涵盖较大的范 围组件和构造,包括应用、驱动程序、进程、例程、方法、模块,以及子程序,并可以引用任何 指令的集合,指令在由处理系统执行时,执行所需操作。另外,替换实施例可以包括使用少 于所公开的全部操作的进程、使用额外的操作的进程、使用不同的顺序的相同操作的进程, 以及其中组合,细分,或以别的方式改变此处所公开的单个操作的进程。
[0040] 在一个实施例中,术语"控制逻辑"的使用包括诸如晶体管、寄存器之类的硬件,或 诸如可编程逻辑器件(835)之类的其他硬件。然而,在另一个实施例中,逻辑还包括软件或 代码(831)。这样的逻辑可以与诸如固件或微代码(836)之类的硬件集成。处理器或控制 器可以包括用于表示本领域内已知的各种控制逻辑中的任何一种的控制逻辑,如此,可以 实现为微处理器、微控制器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可编程逻辑 器件(PLD)等等。
[0041] 有时,诸如SVEN、0MAR等等之类的术语和原则用于说明目的,但是,各实施例不 仅限于使用SVEN、0MAR或任何其他技术或系统。断言和踪迹可以使用各个软件和硬件调 试工具来实现,诸如,但不仅限于,来自Mobile Industry Processor Interface(MIPI) (WWW*mipi*org)的系统跟踪协议(STP),及由MIPI所定义的其他调试接口。此外,术语"应 用"还应该广泛地解释以包括用户应用、操作系统、驱动程序,以及许多其他形式的软件、代 码,以及程序,如上文所定义的那些术语。此外,上文还使用了术语"提供商",但是,本发明 的各实施例不仅限于任何一方。进一步地,有时,上面的各实施例被说成包括比较基准和实 时踪迹值的应用。比较踪迹的比较器不必位于任何特定位置,并可以位于,例如,目标应用 (例如,103)中,或通过完全分离的进程位于目标应用之外。
[0042] 实施例包括由至少一个处理器执行的方法,包括:接收具有第一和第二断言的应 用的第一和第二基准踪迹事件,所述第一和第二基准踪迹事件分别对应于所述第一和第二 断言;在接收到所述第一和第二基准踪迹事件之后,接收通过执行所述应用所生成的并且 分别对应于所述第一和第二断言的第一和第二实时踪迹事件;以及,将所述第一以及第二 基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较。实施例包括通过所述第一和 第二断言,生成,(a)所述第一和第二基准踪迹事件,以及(b)所述第一和第二实时踪迹事 件。实施例包括确定第一和第二基准踪迹事件中的一个和第一和第二实时踪迹事件中的一 个之间的差异。实施例包括将所述差异与预定值进行比较,以判断所述应用是否正在正确 地操作。在一个实施例中,所述第一和第二基准踪迹事件分别包括第一和第二基准指令计 数,所述第一和第二实时踪迹事件分别包括第一和第二实时指令计数。在一个实施例中, 将所述第一和第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较包括将所 述第一和第二基准指令计数分别与所述第一和第二实时指令计数进行比较。在一个实施例 中,所述第一和第二断言中的至少一个被包括在有分支的代码部分的一个分支内。在一个 实施例中,所述第一和第二断言中的每一个都被包括代码部分的单一循环内。在一个实施 例中,所述第一和第二基准踪迹事件分别包括第一和第二基准时间戳,所述第一和第二实 时踪迹事件分别包括第一和第二实时时间戳;以及,将所述第一和第二基准踪迹事件分别 与所述第一和第二实时踪迹事件进行比较包括将所述第一和第二基准时间戳分别与所述 第一和第二实时时间戳进行比较。实施例包括实时地将第一和第二基准踪迹事件分别与第 一和第二实时踪迹事件进行比较。实施例包括基于将第一和第二基准踪迹事件分别与第一 和第二实时踪迹事件进行比较,检测恶意软件活动。在一个实施例中,将所述第一和第二基 准踪迹事件分别与所述第一和第二实时踪迹事件进行比较包括从位于远程的计算节点接 收基于将所述和第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较的评估。 在一个实施例中,所述第一和第二基准踪迹首先是由第一计算平台上的第一方所生成的, 所述第一和第二实时踪迹事件首先是由第二计算平台上的第二方所生成的。实施例包括在 第一计算节点上执行的所述应用;比较器逻辑模块将所述第一以及第二基准踪迹事件分别 与所述第一和第二实时踪迹事件进行比较;以及,所述比较器逻辑模块在所述第一计算节 点和远程耦合到所述第一计算节点的第二计算节点中的一个上执行。在一个实施例中,t匕 较器逻辑模块将所述第一以及第二基准踪迹事件分别与所述第一和第二实时踪迹事件进 行比较;以及,所述比较器逻辑在第一安全环境中执行,所述应用在与所述第一安全环境隔 离的第二安全环境中执行。实施例包括基于所述恶意软件执行超出从所述第一基准踪迹事 件扩展到所述第二基准踪迹事件的指令计数的指令的数量,来检测恶意软件活动;其特征 在于,所述恶意软件至少部分地被包括在所述应用中并位于所述第一和第二断言之间。
[0043] 在一个实施例中,设备包括:至少一个存储器和耦合到所述至少一个存储器的至 少一个处理器,以执行操作,包括:确定具有第一和第二断言的应用的第一和第二基准踪迹 事件,所述第一和第二基准踪迹事件分别对应于所述第一和第二断言;确定分别对应于所 述第一和第二断言的第一和第二实时踪迹事件;以及,基于所述第一和第二基准踪迹事件 和所述第一和第二实时踪迹事件之间的比较,判断所述应用是否正确地操作。在一个实施 例中,所述第一和第二基准踪迹事件分别包括第一和第二基准指令计数,所述第一和第二 实时踪迹事件分别包括第一和第二实时指令计数。在一个实施例中,操作包括:确定所述第 一和第二基准踪迹事件中的一个和所述第一和第二实时踪迹事件中的一个之间的差异;以 及,将所述差异与预定值进行比较,以判断所述应用是否正在正确地操作。
[0044] 上文所描述的设备的所有任选特征也可相对于此处描述的方法或处理而被实现。 尽管是参考数量有限的实施例来描述本发明的,但是,那些精通本技术的人将从其中理解 很多修改和变体。所附权利要求书涵盖落在本发明的真正的精神和范围内的所有这样的修 改和变体。
【权利要求】
1. 一种由至少一个处理器执行的方法,包括: 接收具有第一和第二断言的应用的第一和第二基准踪迹事件,所述第一和第二基准踪 迹事件分别对应于所述第一和第二断言; 在接收到所述第一和第二基准踪迹事件之后,接收通过执行所述应用所生成的并且分 别对应于所述第一和第二断言的第一和第二实时踪迹事件;以及 将所述第一以及第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较。
2. 如权利要求1所述的方法,其特征在于,包括通过所述第一和第二断言,生成(a)所 述第一和第二基准踪迹事件以及(b)所述第一和第二实时踪迹事件。
3. 如权利要求1所述的方法,其特征在于,包括确定所述第一和第二基准踪迹事件中 的一个和所述第一和第二实时踪迹事件中的一个之间的差异。
4. 如权利要求3所述的方法,其特征在于,包括将所述差异与预定值进行比较,以判断 所述应用是否正在正确地操作。
5. 如权利要求1所述的方法,其特征在于,所述第一和第二基准踪迹事件分别包括第 一和第二基准指令计数,并且所述第一和第二实时踪迹事件分别包括第一和第二实时指令 计数。
6. 如权利要求5所述的方法,其特征在于,将所述第一和第二基准踪迹事件分别与所 述第一和第二实时踪迹事件进行比较包括将所述第一和第二基准指令计数分别与所述第 一和第二实时指令计数进行比较。
7. 如权利要求1所述的方法,其特征在于,所述第一和第二断言中的至少一个被包括 在有分支的代码部分的一个分支内。
8. 如权利要求1所述的方法,其特征在于,所述第一和第二断言中的每一个都被包括 代码部分的单一循环内。
9. 如权利要求1所述的方法,其特征在于: 所述第一和第二基准踪迹事件分别包括第一和第二基准时间戳,所述第一和第二实时 踪迹事件分别包括第一和第二实时时间戳;以及 将所述第一和第二基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较包括 将所述第一和第二基准时间戳分别与所述第一和第二实时时间戳进行比较。
10. 如权利要求1所述的方法,其特征在于,包括实时地将所述第一以及第二基准踪迹 事件分别与所述第一和第二实时踪迹事件进行比较。
11. 如权利要求1所述的方法,其特征在于,包括基于将所述第一以及第二基准踪迹事 件分别与所述第一和第二实时踪迹事件进行比较,来检测恶意软件活动。
12. 如权利要求1所述的方法,其特征在于,将所述第一和第二基准踪迹事件分别与所 述第一和第二实时踪迹事件进行比较包括:从位于远程的计算节点接收基于将所述和第二 基准踪迹事件分别与所述第一和第二实时踪迹事件进行比较的评估。
13. 如权利要求1所述的方法,其特征在于,所述第一和第二基准踪迹事件首先是由第 一计算平台上的第一方所生成的,所述第一和第二实时踪迹事件首先是由第二计算平台上 的第二方所生成的。
14. 如权利要求1所述的方法,其特征在于: 所述应用在第一计算节点上执行; 比较器逻辑模块将所述第一以及第二基准踪迹事件分别与所述第一和第二实时踪迹 事件进行比较;以及 所述比较器逻辑模块在所述第一计算节点和远程耦合到所述第一计算节点的第二计 算节点中的一个上执行。
15. 如权利要求1所述的方法,其特征在于: 比较器逻辑模块将所述第一以及第二基准踪迹事件分别与所述第一和第二实时踪迹 事件进行比较;以及 所述比较器逻辑在第一安全环境中执行,所述应用在与所述第一安全环境隔离的第二 安全环境中执行。
16. 如权利要求1所述的方法,其特征在于,包括基于所述恶意软件执行超出从所述第 一基准踪迹事件扩展到所述第二基准踪迹事件的指令计数的指令数量,来检测恶意软件活 动; 其中所述恶意软件至少部分地被包括在所述应用中并位于所述第一和第二断言之间。
17. 至少一个机器可读介质,所述至少一个机器可读介质包括指令,当在计算设备上被 执行时,所述指令导致所述计算设备执行如权利要求1到16中任一项所述的方法。
18. -种设备,包括用于执行权利要求1到16中的任何一项所述的装置。
19. 一种设备,包括: 至少一个存储器和耦合到所述至少一个存储器的至少一个处理器,用于执行操作,所 述操作包括: 确定具有第一和第二断言的应用的第一和第二基准踪迹事件,所述第一和第二基准踪 迹事件分别对应于所述第一和第二断言; 确定分别对应于所述第一和第二断言的第一和第二实时踪迹事件;以及 基于所述第一和第二基准踪迹事件和所述第一和第二实时踪迹事件之间的比较,判断 所述应用是否正确地操作。
20. 如权利要求19所述的设备,其特征在于,所述第一和第二基准踪迹事件分别包括 第一和第二基准指令计数,所述第一和第二实时踪迹事件分别包括第一和第二实时指令计 数。
21. 如权利要求19所述的设备,其特征在于,所述操作包括: 确定所述第一和第二基准踪迹事件中的一个和所述第一和第二实时踪迹事件中的一 个之间的差异;以及 将所述差异与预定值进行比较,以判断所述应用是否正在正确地操作。
【文档编号】G06F11/28GK104220992SQ201280072088
【公开日】2014年12月17日 申请日期:2012年3月29日 优先权日:2012年3月29日
【发明者】D·W·格劳罗克, J·沃克 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1