CN108351938B - 校验针对程序代码的一部分所计算的安全值的装置、***和方法 - Google Patents

校验针对程序代码的一部分所计算的安全值的装置、***和方法 Download PDF

Info

Publication number
CN108351938B
CN108351938B CN201580084089.7A CN201580084089A CN108351938B CN 108351938 B CN108351938 B CN 108351938B CN 201580084089 A CN201580084089 A CN 201580084089A CN 108351938 B CN108351938 B CN 108351938B
Authority
CN
China
Prior art keywords
program code
program
security value
verification
processing resource
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.)
Active
Application number
CN201580084089.7A
Other languages
English (en)
Other versions
CN108351938A (zh
Inventor
A·鲍德温
J·格里芬
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN108351938A publication Critical patent/CN108351938A/zh
Application granted granted Critical
Publication of CN108351938B publication Critical patent/CN108351938B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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
    • 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
    • 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
    • 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Bioethics (AREA)
  • Storage Device Security (AREA)

Abstract

一种装置包括执行程序代码的第一处理资源以及与所述第一处理资源分离的第二处理资源。所述程序代码包括嵌入式执行单元。所述执行单元在所述程序代码的执行期间为所述程序代码的一部分计算第一安全值。所述第二处理资源运行验证程序。所述验证程序接收第一安全值,对照根据程序代码的参考拷贝的对应部分所计算的第二安全值来校验所述第一安全值以获得校验结果,将校验结果返回到执行单元。所述执行单元响应于对所述第一安全值和第二安全值之间的失配进行指示的校验结果而执行安全相关的动作。

Description

校验针对程序代码的一部分所计算的安全值的装置、***和 方法
背景技术
程序代码当被计算***的处理器执行时使得计算机***运行应用或代理。程序代码可能遭受非法修改。
附图说明
图1是示例防护网络的示意性图示。
图2示出了图1的受防护的程序代码100的示例存储器布局。
图3示出了执行受防护的程序代码的示例装置。
图4是包括附加功能性的示例验证程序的示意性表示。
图5图示了用于实现本文中所描述的技术的示例计算***。
图6是用于验证程序代码的正确执行的示例方法的流程图。
具体实施方式
以下详细描述参考附图。在可能的无论什么情况下,在附图和以下描述中使用相同的参考标号来指代相同或类似的部分。虽然以下描述了若干示例,但是修改、适配和其它实现方式是可能的。因此,以下详细描述不对所公开的示例进行限制。代替地,所公开的示例的恰当范围可以由所附权利要求限定。
用于保护程序代码的机制可以嵌入到程序代码中或可以是程序代码的部分。防止篡改的技术旨在使得难以在一段程序代码运行的时候破坏它。这可以用于版权保护以确保不能从程序代码中移除许可证校验。这样的用于保护程序代码的机制的示例涉及往程序代码中添加或嵌入用于监控程序代码的所期望部分的代码块并且在程序代码的受监控的部分被篡改的情况下采取某种行动。程序块还可以被称为执行单元或防护。程序代码可以包括多个函数,所述函数将被监控,并且可以在程序代码中提供某些防护来执行对函数的校验。这样的机制还可以被称为防护网络。
图1是示例防护网络的示意性图示。图1示出了具有多个代码块1001到1007的程序代码100的示意性表示。程序代码100包括由代码块1001、1003和1005到1007所表示的五个安全敏感区。所述安全敏感区执行函数F1到F5,所述函数将被监控使得确保程序代码当在计算***上被运行的时候的正确运作。为了监控程序代码的安全敏感区,多个防护1021到1026被添加到程序代码。 第一防护1021已经被添加到实现第一函数F1的代码块1001。同样地,防护1022到1025被添加到实现函数F2到F5的代码块。不实现安全敏感函数的代码块1002包括另一防护1026。防护1021到1026包括第一部分C1到C6,所述第一部分被提供以运行对用于它正指向的函数F1到F5的存储器的校验。所述校验可以是第一安全值、例如校验和或加密散列的计算。所述校验可以包括在代码块被存储在其中的存储器中检索函数的地址,并且在包含待监控的程序代码的部分的存储器部分上计算校验和或加密散列。
防护1021到1026包括第二部分G1到G6,所述第二部分接收校验的结果,例如所计算的校验和,并且确定结果是正确的还是不正确的。例如,第一安全值可以是将它与预计算的值相比较,所述预计算的值也被称为第二安全值。所述第二安全值可以是所计算的校验和与之相比较的预计算的校验和。在第一和第二安全值匹配的情况下,程序执行正常继续,并且在第一和第二安全值之间的失配的情况下,防护可以触发安全相关的动作。第一和第二安全值之间的失配也可以被称为检测事件,并且安全相关的动作是存录(log)检测事件以用于稍后评估。在其它情况中,可以使得程序代码不可用,例如通过停止其执行或引发可能难以追溯回到防护的最终崩溃。安全相关的动作的另一示例可以是在执行引发失配的该段受损或受篡改的代码之前恢复它。恢复可以包括利用程序代码的受篡改部分的原始副本(clean copy)来盖写程序代码的该部分。
在图1所示的示例中,示出了安全敏感函数F1到F5。根据其它示例,可以在程序代码中包括更多或更少的安全相关函数。另外,程序代码块1022和1024被示出,其不包括将被监控的任何安全相关的区段。在其它示例中,在程序代码中可存在更多或更少的非安全相关代码块。在图1的示例中,防护1021到1025被示出为处于与函数F1到F5相同的代码块中。根据其它示例,可以在程序代码的与函数被置于其中的部分分离或远离的部分中提供防护1021到1025,参见例如包括用于监控函数F1的防护1026的代码块1002远离函数F1被包括在其中的程序代码的部分。
在图1的示例中,防护1021在持有函数F2的存储器的部分上运行校验和计算,并且接收校验和计算的结果,所述结果然后由防护1021评估或校验以查看它是否与预计算的校验和匹配。以类似的方式,防护1022监控函数F4,防护1023监控函数F5,防护1024监控函数F3,并且防护1025监控函数F1。根据示例,防护还可以监控其它防护。防护1023监控防护1026,并且通过使用其中持有防护1026的存储器部分来计算校验和,以便通过使用所返回的校验和来确定防护1026是否已经被篡改。在所描绘的示例中,防护1026用于监控函数F1。
图1的示例防护网络中所描绘的防护在第一和第二安全值失配的情况下可以引发不同的安全相关的动作。例如,某些防护可以存录由失配所指示的可疑事件,通过使用参考数据引发所监控的存储器部分的修复,或者引发函数或整个程序代码的执行的停止。防护还可以使用刚提及的动作的组合。
图1中所示的程序代码100可以被存储在计算***的存储器中,并且图2示出了受防护的程序代码100的示例存储器布局。代码块1001到1007随后被布置在存储器布局中并且防护由代码块的散列的区段示意性表示。箭头表示由其它存储器部分上的防护所执行的校验。
根据示例,图1和图2中所示的程序代码可以是代理应用,其被下载到客户端计算机***、例如膝上型电脑上,以帮助管理计算机***,例如用于执行安全管理和监控任务。这样的应用很可能被感染计算***的恶意软件定为目标以便避免检测和移除。以上描述的防护网络或受防护的程序代码提供一种安全特征,所述安全特征允许关于在客户端计算机***上运行的代理或程序代码的正确工作进行校验和报告,并且它允许通过提供在代理或程序代码被执行时实施运行时间校验的可能性而验证长运行过程的正确执行。
图3是将在第一处理资源200中执行包括所述多个防护1021到1026的程序代码100的示例装置的示意性表示。当在所述第一处理资源200中执行程序代码100的时候,也被称作执行单元的防护为程序代码100的一部分计算第一安全值。可以通过使用不同类型的计算来计算所述第一安全值。可以以变化的复杂度来使用各种函数,从简单的校验和计算或加法直到加密散列计算。所述装置包括与所述第一处理资源100分离的第二处理资源202。所述第二处理资源202运行验证程序204。验证程序204接收第一安全值,如由箭头206示意性描绘的那样。验证程序204对照根据程序代码100的参考拷贝208的对应部分所计算的第二安全值来校验第一安全值以获得校验结果,所述校验结果被返回到防护,如由箭头210示意性表示的那样。可以向所述第一和第二处理资源提供快速域间通信机制,例如使用共享的存储器,用于传送信息,比如第一安全值和校验结果。根据其它示例,可以传送附加信息。接收校验结果210的防护响应于对第一安全值和第二安全值之间的失配进行指示的校验结果210而执行安全相关的动作。根据示例,安全相关的动作包括存录失配事件、停止程序代码或程序代码的一部分的执行和/或使用例如参考拷贝208而修复程序代码的部分。
根据示例,可以远离验证程序204地计算所述第二安全值,例如通过使用程序代码100的参考拷贝而为程序代码的代码块生成第二安全值的计算***的外部单元。预计算的安全值、例如校验和可以与验证程序204一起被存储在第二处理环境202中。为了验证第一安全值206,对应的第二安全值可以被访问并且与第一安全值206相比较,提供校验结果210。
根据其它示例,所述第二处理资源202可以存储程序代码100的参考拷贝208,并且验证程序204可以包括验证例程212,所述验证例程212接收第一安全值206并且通过使用被存储在第二处理资源202处的程序代码100的参考拷贝208而计算第二安全值。程序代码100中所提供的防护可以为待监控的程序代码的不同部分执行不同的校验或安全计算,例如一些防护可以执行校验和计算,并且其它防护可以执行加密散列值计算。换言之,防护1021到1026可以执行相同或不同类型的计算以用于获得第一安全值。在允许使用将由防护1021到1026执行的不同类型的计算的示例中,当将第一安全值206转发到验证程序204的时候,类型标识符214也被转发到验证程序204。验证程序204的验证例程212通过使用所接收的类型标识符214而确定已经由程序代码100中的防护使用了哪种类型的计算来计算第一安全值206,并且使用所标识的计算类型和程序代码的参考拷贝来计算第二安全值。换言之,确定了哪个种类的校验或哪种类型的计算已经被应用到程序代码100的一部分并且相同的校验或相同类型的计算被应用到第二处理资源中所持有的参考拷贝208的对应部分。
所述第一处理资源可以是主操作***或第一操作***,并且所述第二处理资源可以是在包括处理器和存储器的单个客户端***上运行的第二操作***,其中用于主操作***和第二操作***200、202的物理资源、例如存储器由处理器保持分离。程序代码100可以实现在主操作***200中运行的管理代理MA,并且验证程序200可以实现在第二操作***202中运行的受保护的代理PA。管理代理可以是被下载到客户端计算机***、例如膝上型计算机、台式计算机、PDA或智能电话中的应用程序。管理代理MA可以帮助管理客户端计算机***或由客户端计算机***所执行的应用,例如用于执行安全管理、配置动作、安全动作和监控任务。图3的示例装置允许通过使用防止篡改程序代码100来检测管理代理MA的篡改或劣化。所述第一处理资源和第二处理资源可以共同位于相同的物理***上,例如包括在其上执行第一处理资源和第二处理资源的处理器的单个计算机。所述计算机可以包括多于一个的处理器。根据示例,所述第一处理资源和第二处理资源可以离线工作。
本文中所描述的技术利用分离的处理环境以用于安全地运行管理代理MA,不受恶意软件干扰。根据示例,主操作***200和第二操作***202可以通过使用虚拟化技术而被实现在单个客户端***上,所述虚拟化技术使用例如安全超级监督器,其实现多个处理资源环境以用于在分离的操作***中彼此分离地运行程序代码100和验证程序204。根据示例,可以采用用于运行安全过程的其它机制,诸如在受TrustZone(信任区)保护的区域内运行的校验过程。换言之,本文中所描述的技术的示例使用可替换的处理资源,例如第二操作***202,以验证由防止篡改程序代码实现的代理程序的正确执行,所述防止篡改程序代码在一段程序代码内包括嵌入式防护网络来校验所选的函数尚未被改变。所述第二处理资源用于执行与实际程序代码分离地执行的校验的结果的验证或检验,使得校验结果不再隐藏在程序代码100中,这使得难以破坏管理代理程序代码100。根据示例,附加的功能性可以被添加到校验,例如随机性,如以下所描述的那样。
根据示例,验证程序204可以保留在程序代码100、例如管理代理MA的执行期间所获得的多个校验结果的日志。所述结果可以被存储以提供由受防护的程序代码所执行的校验的记录追踪,如由图3中的框216所指示的那样。管理代理的执行的追踪可以是成功或未成功执行的校验的计数,或可以包括对多久一次校验特定函数进行指示的频率信息以及校验的结果。
在以上描述的示例中,验证程序200不访问第一处理资源,所述第一处理资源也被称为第一处理域。例如,验证程序200不访问主操作***200的存储器。在第二操作***202中执行验证,所述第二操作***202也被称为第二处理域,并且因此所述验证没有任何关于主操作***的操作或由主操作***所使用的存储器的组织的认知。根据其它示例,所述第二处理资源202可以了解并且改变主操作***200内的存储器内容。
根据示例,提供了一种***,其包括所述装置,以及如图3中所示的那样的管理服务器218。管理服务器218经由安全信道220而连接到验证程序204。可以通过因特网而建立安全信道220。管理服务器218可以与管理代理MA和受保护的代理PA二者通信以从管理代理MA和受保护的代理PA接收数据或向管理代理MA和受保护的代理PA发布命令。例如,可以由验证程序204记录和存储的运行时间校验的结果被传送到管理服务器218以允许从远程位置利用管理代理MA检测潜在问题。例如,***管理员可以通过使用管理代理MA而监控在不同机器上运行的多个管理代理,并且本文中所描述的技术的示例给出管理代理正恰当运行的信心。由验证程序所获得的校验信息可以通过使用心跳协议而被传送到管理服务器218。管理服务器218可以接收关于校验结果的信息或多个校验结果的日志以用于执行分析。根据示例,管理***218可以响应于所接收的关于校验结果的资源信息或响应于所述多个校验结果的日志的分析而向验证程序发送消息,比如使得验证程序改变被发送到执行单元的忽略校验信号的量,或使得验证程序改变程序代码以修改如下所述的执行单元的消息。
图4是可以例如在图3的装置中被实现的包括附加功能性的示例验证程序204的示意性表示。将随后描述的功能性添加到验证程序204可以使得总体***更稳健对抗篡改。图4示意性地示出了包括验证例程212和参考拷贝208的验证程序204的概要。验证程序204可以包括附加例程,例如用于向将在程序代码100的多个部分上执行的计算/校验添加随机性。
例如,在执行校验之前,管理代理MA向验证程序204发布请求222。响应于请求222,验证程序204可以调用随后描述的验证程序204例程中的一些。响应于请求222,验证程序204可以调用例程224a以在待监控的管理代理MA中随机地选择函数,如由框226所指示的那样。例程224a向管理代理MA输出指示228:通过计算第一安全值将评估函数F1到F5中的哪一个或防护1021到1026中的哪一个。例程224a可以包括持有待监控的函数/防护的表230。可以在初始化阶段创建表230并使所述表230随机化。可以通过访问表230、例如通过使用表索引而遍历表来选择待监控的函数/防护。可以通过在表中函数/防护的随机分布的情况下在初始化阶段创建表而实现随机化。该示例可以用于确保安全计算或校验覆盖整个程序代码100,甚至在大多数时间调用函数F1到F5中的一些而其它函数不那么经常被调用的时候。为了覆盖整个程序代码100,验证程序204可以包括平衡函数232,所述平衡函数根据预设模式而选择函数/防护,以便确保与函数实际上多久被程序代码100调用一次无关地评估/校验所有函数。所述模式可以使得以相同的频率评估/校验每个函数/防护。根据其它示例,被确定为比其它函数/防护更加安全敏感的函数/防护在与被认为不太安全相关的函数/防护相比时可以更常被校验。
根据另一示例,响应于请求222,验证程序204可以调用子例程224b,所述子例程224b参考校验表234。校验表234指示将由管理代理中所提供的防护实施哪个种类的校验或计算。将用于计算第一安全值的校验或计算类型236被输出到管理代理。子例程224b可以从校验例程表中随机地选择将应用的校验或计算类型236。子例程224b可以定制所选校验例程中的每一个并且可以转发校验例程以由程序代码100的防护执行。
根据其它示例,由防护所执行的校验或计算可以使用初始化向量。为了增加随机性,验证程序204可以包括子例程224c,所述子例程224c响应于请求222的接收使得生成随机初始化向量238,所述随机初始化向量238被返回到管理代理。随机初始化向量238可以用于对计算第一安全值的校验例程进行随机初始化,使得第一安全值不能被预测。例如,如果校验是散列,那么初始化向量将会使得散列(iv::码)被计算而不仅仅是散列(码),其中::是联结(concatenate)操作。结果不能被预测。但是校验的两个部分都知道答案。
向待执行的校验例程添加随机性的例程224a到224c使得更难以准备对恰当地与参考拷贝相比较的校验或校验例程以及验证程序所执行的相关联的校验的答案。
根据另一示例,验证程序204可以包括例程240,所述例程240使用与所执行的校验的性能相关的时间信息。即将开始计算第一安全值的防护可以发送对开始的指示242。由例程240接收指示242,所述例程240测量在指示224的接收与验证程序204处第一安全值206的接收之间的时间。在来自管理代理的响应、即第一安全值的接收相对于被应用到程序代码部分的校验例程而言缓慢的情况下,这可被标记为可疑事件。例如,取决于用于计算第一安全值的计算的类型,例如计算的复杂度,可以设置阈值,并且在由例程240测量的时间超过阈值的情况下,可以确定存在可疑事件并且将更密切地监控程序代码。
根据其它示例,验证程序204可以包括例程244以分析管理代理MA的性能。例如,统计分析或启发法可以用于评估校验结果210。威胁环境可以响应于来自管理服务器218的消息而被设置或可以通过分析所执行的校验而被确定。如果指示了低威胁环境,则响应于请求222,例程244可以针对某些校验而返回忽略校验信号246。所述忽略校验信号246可以阻止执行单元执行校验,例如计算第一安全值。如果指示了对高威胁环境的改变,则可以减少忽略消息246的量。例如,在可疑事件的数量上升的情况中,例如由于在第一和第二安全值之间的失配的数量已经上升到预定义的阈值以上这一事实,或在例程240中的时间测量指示了可疑事件的情况中,可以减少忽略消息246的数量。这允许动态地处理性能相对于风险的权衡。
根据其它示例,代替于将所有校验构建到程序代码中,可以将绕道样式的挂钩添加到程序代码中的函数,作为校验函数的一部分,用以将动态性质添加到校验,这是恶意软件用来挂钩到代码中的技术,但是根据示例用于动态地挂钩在附加的校验中。例如,验证程序可以访问与第一处理资源相关联的存储器,并且改变程序代码来修改执行单元,或通过新的执行单元来取代所述执行单元,或向程序代码添加新的执行单元。
根据其中第二处理资源202可以了解并且改变主操作***200内的存储器内容的示例,验证程序204可以调用例程248来内省主操作***200的存储器。这可以用于通过将不同的校验地址、初始化向量以及校验码直接置放到管理代理中而执行随机化。
根据示例,上述例程224a到224c、240、244、248中的一些或全部可以由验证程序204实现。
根据示例,本文中描述的技术还支持对管理代理MA的插件扩展。例如,在使用对在程序代码100中将被监控的函数进行指示的表的情况下,比如在图4中的子例程224a中,在将插件安装到管理代理MA中的情况下,表230可以被更新或扩展以在插件中包括将被监控的附加函数。另外,当添加插件时,插件的经证明的、例如经签名的拷贝也可以被给到验证程序204作为参考拷贝,使得允许对所生成的安全值的验证。安装与校验功能性相组合的插件允许插件也被覆盖在校验网络或防护网络内。
图5图示了用于实现本文中所描述的技术的示例计算***。计算设备300包括处理器302和存储器304。可以提供总线306以用于互连计算设备300的元件。根据示例,存储器204包括虚拟机监控器308,比如超级监督器,其定义在其上安装第一和第二处理资源200、202、例如主操作***和第二操作***的虚拟机VM1和VM2。计算设备300还可以包括输入/输出设备310、例如键盘、光标控制装置等等,通信接口312、例如网络接口卡、调制解调器等等,以及存储设备314、例如硬驱动器或光盘读取器。
图6是用于验证程序代码的正确执行的示例方法的流程图。在400处,包括嵌入式执行单元1021到1026的程序代码100由第一处理资源200执行,例如由虚拟机、比如图5中的VM1上所安装的第一或主操作***执行。在402处,运行验证程序204,例如通过第二虚拟机、比如图5中的VM2上所安装的第二操作***202来运行。在程序代码100的执行期间,在404处,计算针对程序代码100的一部分的第一安全值,例如通过防护或执行单元1021到1026中之一来计算。验证程序204在406处接收第一安全值,并且在408处对照根据程序代码的参考拷贝的对应部分所计算的第二安全值来校验第一安全值以获得校验结果。在410处,校验结果被返回到执行了第一安全值计算的防护或执行单元,并且在412处确定了在第一和第二安全值之间不存在匹配的情况中,执行单元或防护在414处执行安全相关的动作。根据示例,在414处的安全相关的动作可以引起如在416处所指示的结果的存录,并且过程然后可以返回到404,在该处执行用于校验程序的另一部分的计算。根据其它示例,414处的安全相关的动作可以引起如418处所指示的程序的停止。在412处确定了第一和第二安全值匹配的情况下,所述方法返回到404,并且实施新的计算或安全值,例如针对程序代码的另一部分,从而在程序代码100的执行期间监控所述程序代码100的完整性。
尽管已经在装置的上下文下描述了本文所述的技术的某些方面,但是这些方面还可以表示对应方法的描述,其中框或设备对应于方法框或方法框的特征。类似地,在方法的上下文中所描述的方面还表示对应的框或对应装置的项目或特征的描述。
本文中描述的示例可以以硬件、机器可读指令或硬件和机器可读指令的组合的形式被实现。任何这样的机器可读指令可以用易失性或非易失性存储装置的形式或用易失性存储器的形式来被存储,所述易失性或非易失性存储装置例如诸如ROM之类的存储设备,无论是否是可擦除或可重写,所述易失性存储器例如RAM、存储器芯片设备或集成电路或者光学或磁性可读介质,例如CD、DVD、磁盘或磁带。存储设备和存储介质是适合于存储一个或多个程序的机器可读存储装置的示例,所述程序当被执行时实现本文中所描述的示例。
在本说明书(其包括任何所附权利要求、摘要和附图)中所公开的全部特征和/或这样公开的全部方法或过程可以以任何组合而被组合,除了其中至少一些特征互斥的组合之外。在本说明书(其包括任何所附权利要求、摘要和附图)中所公开的每个特征可以由用于相同、等同或类似目的的可替换特征取代,除非另行明确声明。因而,除非另行明确声明,否则所公开的每个特征是一般一系列等同或类似特征的一个示例。

Claims (15)

1. 一种用于防护程序代码的装置,包括:
执行程序代码的第一处理资源,所述程序代码包括监控块,所述监控块在所述程序代码的执行期间为所述程序代码的一部分计算第一安全值;以及
与所述第一处理资源分离的第二处理资源,所述第二处理资源将运行验证程序,所述验证程序将接收所述第一安全值,对照根据所述程序代码的参考拷贝的对应部分所计算的第二安全值来校验所述第一安全值以获得校验结果,以及将校验结果返回到所述监控块,所述校验结果包括根据函数的存储器地址所计算的校验和或加密散列,
其中所述监控块将响应于对所述第一安全值和第二安全值之间的失配进行指示的校验结果而执行安全相关的动作。
2. 根据权利要求1所述的装置,其中
所述第二处理资源将存储所述程序代码的参考拷贝;以及
所述验证程序将通过使用在第二处理资源处所存储的所述程序代码的参考拷贝来计算所述第二安全值。
3.根据权利要求2所述的装置,其中
所述验证程序将接收类型标识符,其中所述类型标识符标识用于计算所述第一安全值的计算的类型,并且其中所述验证程序将通过使用所标识的计算类型和所述程序代码的参考拷贝来计算所述第二安全值。
4.根据权利要求1所述的装置,其中
所述验证程序将保留在所述程序代码的执行期间所获得的多个校验结果的日志。
5. 根据权利要求1所述的装置,其中
所述监控块将向所述验证程序发布校验请求;以及
所述验证程序将向所述监控块指示将在所述程序代码的该部分上执行以计算所述第一安全值的计算的类型,
其中所述验证程序将从多个计算类型中随机地选择计算类型。
6.根据权利要求1所述的装置,其中
所述监控块将通过使用利用初始化向量的计算类型来计算所述第一安全值;
所述监控块将向所述验证程序发布校验请求;以及
所述验证程序将向所述监控块提供随机初始化向量。
7. 根据权利要求1所述的装置,其中
所述监控块将向所述验证程序发布校验请求;以及
所述验证程序将从所述程序代码中随机地选择由所述监控块为其计算所述第一安全值的部分。
8.根据权利要求1所述的装置,其中
所述监控块将向所述验证程序发布校验请求,并且响应于来自所述验证程序的应答而计算所述第一安全值;
所述验证程序将测量在向所述监控块发送应答与接收所述第一安全值之间的时间,并且在所测量的时间超过预定义阈值的情况下指示可疑事件,取决于用于计算所述第一安全值的计算的类型来设置所述预定义的阈值。
9. 根据权利要求1所述的装置,其中
所述监控块将向所述验证程序发布校验请求;以及
所述验证程序将响应于校验请求而向所述监控块发送忽略校验信号,
其中所述忽略校验信号阻止所述监控块计算所述第一安全值,以及
其中取决于威胁环境而确定被发送到所述监控块的忽略校验信号的量。
10.根据权利要求1所述的装置,其中
所述安全相关的动作包括存录失配事件、停止所述程序代码的执行或通过使用参考拷贝而修复所述程序代码的该部分。
11. 根据权利要求1所述的装置,其中
所述验证程序将访问与所述第一处理资源相关联的存储器,以及
所述验证程序将改变所述程序代码来修改所述监控块,或通过新的监控块来取代所述监控块,或向所述程序代码添加新的监控块。
12.根据权利要求1所述的装置,其中
所述第一处理资源包括第一操作***;
所述第二处理资源包括第二操作***;以及
处理器将运行虚拟机监控器,其中所述虚拟机监控器将在所述处理器上运行第一操作***和第二操作***。
13. 一种用于防护程序代码的***,包括:
一装置,其包括执行程序代码的第一处理资源,所述程序代码包括监控块,所述监控块在所述程序代码的执行期间为所述程序代码的一部分计算第一安全值;以及与所述第一处理资源分离的第二处理资源,所述第二处理资源将运行验证程序,所述验证程序将接收所述第一安全值,对照根据所述程序代码的参考拷贝的对应部分所计算的第二安全值来校验所述第一安全值以获得校验结果,并且将校验结果返回到监控块,其中所述监控块将响应于对所述第一安全值和第二安全值之间的失配进行指示的校验结果而执行安全相关的动作,所述校验结果包括根据函数的存储器地址所计算的校验和或加密散列;以及
经由安全信道而连接到所述装置的第二处理资源的服务器,所述服务器将从所述第二处理资源接收与校验结果或多个校验结果的日志相关的信息以用于执行分析。
14.根据权利要求13所述的***,其中
所述服务器将响应于所接收的与校验结果相关的资源信息或响应于所述多个校验结果的日志的分析而向所述验证程序发送消息。
15.一种用于防护程序代码的方法,包括:
通过第一处理资源执行程序代码,所述程序代码包括监控块;
通过与所述第一处理资源分离的第二处理资源运行验证程序;
在所述程序代码的执行期间,
通过所述监控块为所述程序代码的一部分计算第一安全值;
通过所述验证程序接收所述第一安全值;
通过所述验证程序对照根据所述程序代码的参考拷贝的对应部分所计算的第二安全值来校验所述第一安全值以获得校验结果,所述校验结果包括根据函数的存储器地址所计算的校验和或加密散列;
通过所述验证程序将校验结果返回到所述监控块;以及
通过所述监控块响应于对所述第一安全值和第二安全值之间的失配进行指示的校验结果而执行安全相关的动作。
CN201580084089.7A 2015-10-29 2015-10-29 校验针对程序代码的一部分所计算的安全值的装置、***和方法 Active CN108351938B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2015/075165 WO2017071763A1 (en) 2015-10-29 2015-10-29 Checking a security value calculated for a part of a program code

Publications (2)

Publication Number Publication Date
CN108351938A CN108351938A (zh) 2018-07-31
CN108351938B true CN108351938B (zh) 2022-02-08

Family

ID=54478008

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580084089.7A Active CN108351938B (zh) 2015-10-29 2015-10-29 校验针对程序代码的一部分所计算的安全值的装置、***和方法

Country Status (4)

Country Link
US (1) US10664593B2 (zh)
EP (1) EP3369028B1 (zh)
CN (1) CN108351938B (zh)
WO (1) WO2017071763A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102509594B1 (ko) * 2016-06-28 2023-03-14 삼성전자주식회사 어플리케이션 코드의 위변조 여부 탐지 방법 및 이를 지원하는 전자 장치
WO2021059478A1 (ja) * 2019-09-27 2021-04-01 日本電気株式会社 情報処理装置、情報処理方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体
CN112668004B (zh) * 2019-10-16 2022-06-21 武汉斗鱼网络科技有限公司 一种基于llvm的函数校验方法及相关装置
US11423160B2 (en) 2020-04-16 2022-08-23 Bank Of America Corporation System for analysis and authorization for use of executable environment data in a computing system using hash outputs
US11425123B2 (en) 2020-04-16 2022-08-23 Bank Of America Corporation System for network isolation of affected computing systems using environment hash outputs
US11481484B2 (en) * 2020-04-16 2022-10-25 Bank Of America Corporation Virtual environment system for secure execution of program code using cryptographic hashes
US11528276B2 (en) 2020-04-16 2022-12-13 Bank Of America Corporation System for prevention of unauthorized access using authorized environment hash outputs
US20220300606A1 (en) * 2021-03-19 2022-09-22 Adobe Inc. Tamper detection for executable applications

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19944991B4 (de) * 1999-09-20 2004-04-29 Giesecke & Devrient Gmbh Verfahren zur Sicherung eines Programmablaufs
US6925566B1 (en) * 2000-07-07 2005-08-02 Motorola, Inc. Remote system integrity verification
US7305564B2 (en) * 2002-12-19 2007-12-04 International Business Machines Corporation System and method to proactively detect software tampering
US8141159B2 (en) * 2002-12-31 2012-03-20 Portauthority Technologies Inc. Method and system for protecting confidential information
US20050188214A1 (en) * 2004-02-23 2005-08-25 Worley John S. Authenticatable software modules
US20060047955A1 (en) * 2004-08-30 2006-03-02 Axalto Inc. Application code integrity check during virtual machine runtime
CN100465853C (zh) * 2004-11-15 2009-03-04 南京大学 基于程序内部行为监控的软件安全保障的方法
US7840573B2 (en) * 2005-02-22 2010-11-23 Trusted Computer Solutions Trusted file relabeler
US20060259781A1 (en) * 2005-04-29 2006-11-16 Sony Corporation/Sony Electronics Inc. Method and apparatus for detecting the falsification of metadata
US7953980B2 (en) * 2005-06-30 2011-05-31 Intel Corporation Signed manifest for run-time verification of software program identity and integrity
EP1845470B1 (en) 2006-04-13 2016-11-09 STMicroelectronics (Research & Development) Limited Multiple purpose integrated circuit
US8656160B2 (en) * 2006-06-21 2014-02-18 Ebay Inc. Computer system authentication using security indicator
US7882318B2 (en) 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses
US20080134321A1 (en) 2006-12-05 2008-06-05 Priya Rajagopal Tamper-resistant method and apparatus for verification and measurement of host agent dynamic data updates
US8380987B2 (en) 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US7765374B2 (en) * 2007-01-25 2010-07-27 Microsoft Corporation Protecting operating-system resources
WO2008096891A1 (ja) * 2007-02-09 2008-08-14 Ntt Docomo, Inc. 端末装置及びソフトウエア検査方法
US20090193211A1 (en) * 2008-01-24 2009-07-30 Broadcom Corporation Software authentication for computer systems
CA2661398C (en) 2008-04-05 2016-05-17 Third Brigade Inc. System and method for intelligent coordination of host and guest intrusion prevention in virtualized environment
US8806640B2 (en) * 2010-10-22 2014-08-12 George Mason Intellectual Properties, Inc. Program execution integrity verification for a computer system
WO2013012435A1 (en) 2011-07-18 2013-01-24 Hewlett-Packard Development Company, L.P. Security parameter zeroization
US8892875B1 (en) * 2011-07-29 2014-11-18 Trend Micro Incorporated Methods and apparatus for controlling access to encrypted computer files
US9690598B2 (en) * 2012-01-29 2017-06-27 Saife, Inc. Remotely establishing device platform integrity
US10177915B2 (en) * 2013-03-15 2019-01-08 Ologn Technologies Ag Systems, methods and apparatuses for device attestation based on speed of computation
FR3027759A1 (fr) * 2014-10-23 2016-04-29 Orange Methode de filtrage de messages pour fournir une fonction de type " ne pas deranger "
GB201508035D0 (en) * 2015-05-12 2015-06-24 Critical Blue Ltd Crowd sourced fingerprinting
US9832123B2 (en) * 2015-09-11 2017-11-28 Cisco Technology, Inc. Network named fragments in a content centric network

Also Published As

Publication number Publication date
CN108351938A (zh) 2018-07-31
US20180276374A1 (en) 2018-09-27
EP3369028A1 (en) 2018-09-05
EP3369028B1 (en) 2021-01-20
WO2017071763A1 (en) 2017-05-04
US10664593B2 (en) 2020-05-26

Similar Documents

Publication Publication Date Title
CN108351938B (zh) 校验针对程序代码的一部分所计算的安全值的装置、***和方法
CN107851155B (zh) 用于跨越多个软件实体跟踪恶意行为的***及方法
US9436832B2 (en) System and method for virtual image security in a cloud environment
CN109815698B (zh) 用于执行安全动作的方法和非暂时性机器可读存储介质
CN113761519B (zh) 一种Web应用程序的检测方法、装置及存储介质
US10902126B2 (en) Verification of a boot loader program at a control unit to be provided to a host system to load an operating system
US20150373046A1 (en) System and method for mitigating toc/tou attacks in a cloud computing environment
CN105760787A (zh) 用于检测随机存取存储器中的恶意代码的***及方法
CN109446799B (zh) 内存数据保护方法、安全组件和计算机设备及存储介质
CN102880828A (zh) 一种针对虚拟化支撑环境的入侵检测与恢复***
EP3563548B1 (en) Historic data breach detection
CN109889477A (zh) 基于可信密码引擎的服务器启动方法及装置
CN114969712A (zh) 一种基于lsm框架的可信程序动态度量方法及装置
CN110717181B (zh) 基于新型程序依赖图的非控制数据攻击检测方法及装置
US8800052B2 (en) Timer for hardware protection of virtual machine monitor runtime integrity watcher
KR20210001057A (ko) 랜섬웨어 탐지 및 차단 방법
CN113127873A (zh) 堡垒机的可信度量***及电子设备
Peiró et al. Detecting stack based kernel information leaks
US20180260563A1 (en) Computer system for executing analysis program, and method of monitoring execution of analysis program
CN111858114B (zh) 设备启动异常处理,设备启动控制方法、装置及***
JP5955165B2 (ja) 管理装置、管理方法及び管理プログラム
WO2019137614A1 (en) Apparatus and method for runtime integrity protection for execution environments
WO2018122051A1 (en) Attack signature generation
CN114201761B (zh) 在可信计算***中增强度量代理安全性
US12020010B2 (en) Corruption determination of data items used by a build server

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant