CN115878122A - 对构建服务器使用的数据项的损坏确定 - Google Patents

对构建服务器使用的数据项的损坏确定 Download PDF

Info

Publication number
CN115878122A
CN115878122A CN202111259581.7A CN202111259581A CN115878122A CN 115878122 A CN115878122 A CN 115878122A CN 202111259581 A CN202111259581 A CN 202111259581A CN 115878122 A CN115878122 A CN 115878122A
Authority
CN
China
Prior art keywords
measurement
data item
build server
executable program
build
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.)
Pending
Application number
CN202111259581.7A
Other languages
English (en)
Inventor
N·J·爱德华兹
G·德坎波斯马加尔海斯
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 Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development 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 Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN115878122A publication Critical patent/CN115878122A/zh
Pending 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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/563Static detection by source code analysis
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment

Landscapes

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

Abstract

在一些示例中,一种系统接收由构建服务器在构建可执行程序时使用的数据项的第一测量结果,所述数据项从数据存储库复制到与所述数据存储库分离的存储分区,并且所述存储分区用于存储与所述构建服务器构建所述可执行程序相关的所述数据项。所述系统基于所述第一测量结果并且根据为所述存储分区指定的策略来确定由所述构建服务器在构建所述可执行程序时使用的所述数据项是否已经发生损坏。

Description

对构建服务器使用的数据项的损坏确定
背景技术
构建服务器可以包括用于基于源文件构建可执行程序的编译器。源文件可以从源文件存储库中取得。一旦编译器已经基于源文件构建了可执行程序,可执行程序就可以被传递到一个电子设备(或多个电子设备)以供执行。
附图说明
关于以下附图描述了本公开的一些实施方式。
图1是根据一些示例的包括构建服务器、源文件存储库和源文件验证引擎的布置的框图。
图2是根据一些示例的进程的消息流程图。
图3是根据一些示例的存储机器可读指令的存储介质的框图。
图4是根据一些示例的过程的流程图。
图5是根据一些示例的系统的框图。
在所有附图中,相同的附图标记指代相似但不一定相同的元件。附图不一定是成比例的,并且一些部分的尺寸可以被放大以更清楚地图示所示的示例。此外,附图提供了与描述一致的示例和/或实施方式;然而,描述不限于附图中提供的示例和/或实施方式。
具体实施方式
在本公开中,除非上下文另外明确指示,否则使用术语“一个/一种(a/an)”或“所述(the)”旨在同样包括复数形式。同样地,当在本公开中使用时,术语“包括(includes/including/comprises/comprising)”、“具有(have/having)”指明存在所述元件,但不排除存在或添加其他元件。
恶意软件可能被引入构建服务器中,从而损坏在构建服务器处构建的可执行程序。例如,恶意软件可以将一个源文件(或多个源文件)添加到从源文件存储库中取得的源文件集合中。
“恶意软件”可以指对构建服务器执行未授权动作的程序或机器。“恶意软件”也可以指对构建服务器执行未授权动作的人。“源文件集合”可以指单个源文件或多个源文件。“源文件”包括包含根据编程语言的源代码的文件。“文件”可以指任何可识别的数据聚合。“构建器服务器”可以指在其中执行程序构建器以产生可执行程序的计算机集合。“计算机集合”可以指单个计算机或多个计算机。
在一些示例中,构建服务器中的程序构建器可以包括编译器,该编译器将源文件集合作为输入并且产生可执行格式的二进制程序。在其他示例中,程序构建器可以包括解释器,该解释器在包括源代码的程序的运行时期间将编程语言形式的源代码转换成机器代码。更一般地,“程序构建器”接收源文件(和/或其他数据项)集合作为输入并且产生可以在电子设备中执行的可执行程序。
由恶意软件添加的源文件可以创建到可执行程序的后门。当可执行程序在电子设备中执行时,未授权实体(例如,人、程序或机器)可访问后门,从而导致可执行程序执行未授权动作。“电子设备”可以指能够执行机器可读指令的任何类型的计算设备,比如台式计算机、笔记本计算机、平板计算机、智能电话、物联网(IoT)设备、游戏设备、打印机、家用电器、通信节点、存储系统、车辆、车辆中的控制器等。
后门可以允许未授权实体使用可执行程序取得机密信息或其他信息。可替代地,被添加到可执行程序的源文件可能会导致可执行程序执行恶意动作,这些恶意动作可能会损害电子设备中或连接到该电子设备的设备中的数据或损坏这些设备中的其他项。
在其他示例中,代替将源文件添加到程序构建器用来构建可执行程序的源文件集合中,恶意软件可以修改源文件以产生修改的源文件,该修改的源文件可能导致使用该修改的源文件构建的可执行程序执行恶意动作。
在一些示例中,由恶意软件添加的或被恶意软件修改的源文件可以在构建服务器中存在相对较短的时间量,因为一旦已经构建了对应的可执行程序,就可以将源文件从构建服务器中移除。因此,在构建服务器中可能难以检测到由恶意软件产生的添加的源文件或修改的源文件的存在。
在大型计算环境中,构建服务器可能将损坏的可执行程序部署到大量电子设备(例如,数千到数十万个电子设备)。计算环境的示例包括数据中心、云环境、存储区域网络(SAN)、通信网络等。在这种情况下,损坏的可执行程序可能会导致大量电子设备上的大规模中断。
在一些情况下,用于构建可执行程序的源文件可以被动态地添加,比如被添加到给定操作系统(OS)的文件系统中。OS可以在其文件系统中维护大量文件。因此,试图检测OS文件系统的所有文件的损坏的验证系统可能不能够可靠地检测出用于构建可执行程序的源文件的损坏,因为如果对OS文件系统中的所有文件进行测量,会存在大量噪音。
根据本公开的一些实施方式,验证系统将数据项(例如,源文件)从数据存储库复制到分离的存储分区(例如,位于构建服务器中或与构建服务器分离)。如果数据存储库是在存储设备集合(其中,“存储设备集合”可以指单个存储设备或多个存储设备)上实施的,则分离的存储分区可以在与用于实施数据存储库的存储设备集合不同且与其分离的存储设备集合上实施。在其他示例中,分离的存储分区可以是存储设备集合中的片段,该片段与存储设备集合中用于存储数据存储库的数据项的片段分离。
“存储设备”可以指基于磁盘的存储设备、固态驱动器、存储器设备等。
验证系统可以接收分离的存储分区中用于构建可执行程序的数据项的第一测量结果,并且验证系统可以将第一测量结果与来自数据存储库的数据项的第二测量结果进行比较。第一测量结果与第二测量结果的比较可以提供关于用于构建可执行程序的数据项是否已经被损坏(比如被恶意软件损坏或由于其他原因被损坏)的指示。
图1是包括构建服务器102、源文件存储库104和源文件验证引擎107的示例布置的框图。在一些示例中,源文件存储库104可以用一个或多个存储设备来实施。
如这里所使用的,“引擎”可以指硬件处理电路,该硬件处理电路可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列或另一个硬件处理电路中的任何一项或某种组合。可替代地,“引擎”可以指硬件处理电路和可在硬件处理电路上执行的机器可读指令(软件和/或固件)的组合。
源文件存储库104存储要用于构建可执行程序(比如可以在构建服务器102中构建的可执行程序108)的源文件106。
构建服务器102通过网络110从源文件存储库104接收源文件106的副本。在一些示例中,网络110可以包括以下各项中的任一项或某种组合:局域网(LAN)、广域网(WAN)、公共网络(例如,因特网)或任何其他类型的网络。源文件106的副本在构建服务器102中表示为106A。在随后的讨论中,对“源文件106A”的提及是对源文件存储库104中的源文件106的副本的提及。
源文件106可以由构建服务器102从源文件存储库104取得,或者另一个实体可以使源文件106从源文件存储库104复制到构建服务器102。
源文件106A(包括源文件1至N,其中,N≥1)存储在存储分区112中,该存储分区与源文件存储库104中用于存储源文件106的存储分区分离。存储分区112是被指定为存储用于构建可执行程序的源文件的分区。
在图1中,存储分区112是构建服务器102的一部分。例如,存储分区112可以使用构建服务器102的存储设备集合来实施。在其他示例中,存储分区112可以在与构建服务器102分离的存储设备集合上实施。
如图1进一步所示,恶意软件114已经被引入构建服务器102中。如果恶意软件114是程序的形式,则恶意软件114可以基于通过网络110下载恶意软件114而被引入构建服务器102中或者从另一个来源(例如,可移除存储介质、电子邮件附件等)被引入构建服务器102中。如果恶意软件114是硬件的形式,则恶意软件114可以包括物理芯片或已经物理地安装或连接到构建服务器102的另一个设备。作为进一步的示例,恶意软件114可以指直接地或通过网络110访问构建服务器102的人类用户。
如图1所示,恶意软件114已经将恶意软件源文件116添加到存储分区112中,以被包括作为由构建进程118在构建可执行程序108时使用的源文件集合(另外包括源文件1至N)。如果恶意软件源文件116被构建进程118用于构建可执行程序108,则可执行程序108是损坏的可执行程序,该损坏的可执行程序可以包括后门,该后门用于:在电子设备121中部署了可执行程序108之后,当可执行程序108在电子设备121处被执行时,允许未授权实体访问可执行程序108。可执行程序108可以被部署在多个电子设备中。
在一些示例中,代替作为与源文件106A分离的源文件,恶意软件源文件116可以是源文件106A中被修改的一个(或多个)源文件。
在一些示例中,恶意软件114可以监测构建服务器102中调用的进程,以监视构建进程,比如构建进程118。如果恶意软件114检测到构建进程已经被调用,则恶意软件114可以在存储分区112中添加或修改源文件,以损坏由构建进程在构建可执行程序108时使用的源文件。
构建进程118是构建服务器102中的程序构建器122的进程。作为示例,程序构建器122可以包括编译器或解释器。
构建服务器102包括可以提供文件系统的OS内核124。源文件106A可以存储在OS内核124的文件系统中。在一些示例中,源文件106A是构建树(包括源文件的分层布置,比如文件系统的目录和文件的分层布置)的一部分。在一些示例中,当在构建服务器102处接收到源文件106A时,源文件106A可以被添加到构建树。当程序构建器122触发构建进程118时,构建进程118从存储分区112中的构建树取得源文件以构建可执行程序108。
根据本公开的一些实施方式,保护策略126可以与用于存储源文件106A的存储分区112相关联。该保护策略126可以与OS内核124的文件系统中所有文件的子集相关联。该子集包括属于存储分区112的文件,并且不包括OS文件系统中不属于存储分区112的文件。
保护策略126可以指定要为存储分区112中的源文件计算测量结果。因此,存在于存储分区112中的任何源文件(包括源文件1至N和恶意软件源文件116)将根据保护策略126受到测量。
对存储分区112中源文件的测量可以由完整性测量引擎128执行。在一些示例中,完整性测量引擎128在构建服务器102中实施。在其他示例中,完整性测量引擎128在构建服务器102的外部实施。
在示例中,完整性测量引擎128可以包括Linux OS的完整性测量架构(IMA)模块。IMA是Linux安全模块(LSM)子系统的一部分并且为Linux OS提供受测量且安全的启动。在一些示例中,完整性测量引擎128根据保护策略126(其可以是IMA策略)对存储分区112中的源文件应用测量。尽管参考了Linux OS的IMA,但是在其他示例中,完整性测量引擎128可以指对存储分区112中的源文件执行测量的任何引擎。
对源文件(或更一般地,数据项)的“测量”可以包括对数据项应用函数以产生对应的测量值。例如,所应用的函数可以是加密散列函数,该加密散列函数在被应用于数据项时基于数据项的内容产生散列值。在其他示例中,作为测量的一部分,可以将其他类型的函数应用于数据项以产生测量值。“数据项”是指任何可识别的数据聚合。
在源文件106A被提供给构建服务器102中的构建进程118之前,完整性测量引擎128根据保护策略126通过对源文件106A应用函数来计算测量值。完整性测量引擎128将通过对接收到的源文件106A的测量而产生的测量值添加到完整性日志130的对应条目中。
完整性日志130和保护策略126可以存储在构建服务器102的存储器中,其中,该存储器可以使用存储器设备(非易失性存储器设备和/或易失性存储器设备)集合来实施。
在图1的示例中,完整性日志130包括与存储分区112中的相应源文件相对应的多个条目。条目1至N对应于源文件1至N(其中,N≥1)。例如,当在构建服务器102处接收到源文件1时,完整性测量引擎128测量源文件1并且将对应的测量值添加到完整性日志130中的条目1。类似地,当在构建服务器102处接收到源文件N时,完整性测量引擎128测量源文件N并且将对应的测量值写入完整性日志130的条目N中。
例如,如果基于源文件的测量值是基于对源文件应用加密散列函数的散列值,则完整性日志130的每个条目i(i=1至N)包括通过测量相应的源文件i而产生的相应散列值。每个条目i可以另外包括进一步的信息,比如标识源文件i被存储的位置的位置信息(例如,路径名、统一资源定位符等),等等。
在图1的示例中,假设恶意软件源文件116是在接收到源文件N之后由恶意软件114添加的,此时完整性测量引擎128测量恶意软件源文件116并且将对应的测量值添加到条目N+1中。在其他示例中,恶意软件源文件116可以在源文件1之前或者在源文件1的接收与源文件N的接收之间的某处被接收在存储分区112中。
在一些示例中,构建服务器102包括可信平台模块(TPM)132。TPM可以指在构建服务器102中执行各种安全操作的安全密码处理器。在一些示例中,TPM 132可以被实施为硬件芯片,以在构建服务器102中提供基于硬件的、安全相关的操作。例如,TPM132可以执行加密操作。TPM 132包括物理安全机制,以使TPM 132防篡改,比如防止恶意软件114的篡改。
TPM 132与构建服务器102的主处理器135分离。主处理器135执行构建服务器102的各种机器可读指令,该构建服务器包括OS内核124、程序构建器122等。在一些情况下,完整性测量引擎128可以包括可在主处理器135上执行的机器可读指令。
更一般地,安全处理器(TPM 132是安全处理器的示例)被包括在构建服务器102中,其中,该安全处理器与主处理器135分离并且根据本公开的一些实施方式可以为完整性日志130提供保护。
在一些示例中,TPM 132包括完整性日志保护逻辑134,该完整性日志保护逻辑用于保护完整性日志130免受篡改,比如免受包括恶意软件114的未授权实体篡改。完整性日志保护逻辑134可以使用TPM 132的硬件处理电路的一部分来实施,或者用可在TPM 132中执行的机器可读指令来实施。注意,TPM 132可以执行机器可读指令,这些机器可读指令可以包括存储在TPM 132的安全存储中的机器可读指令。
TPM 132进一步包括各种平台配置寄存器(PCR),包括图1所描绘的PCR 136。PCR允许安全存储和报告安全相关指标。
根据本公开的一些实施方式,PCR 136存储基于完整性日志130的条目而计算的累积散列值138。响应于向完整性日志130中添加新条目,完整性日志保护逻辑134对完整性日志130的所有条目(包括新添加的新条目)应用加密散列函数。
例如,当接收到源文件1并且完整性测量引擎128将对应的条目1添加到完整性日志130时,TPM 132中的完整性日志保护逻辑134基于条目1计算第一加密散列值。当接收到源文件2并且完整性测量引擎128将对应的条目2添加到完整性日志130时,完整性日志保护逻辑134基于条目2计算第二加密散列值,并且完整性日志保护逻辑134将第二加密散列值与PCR 136中的累积散列值138组合以形成新的累积散列值138。当接收到源文件N并且完整性测量引擎120将对应的条目N添加到完整性日志130时,完整性日志保护逻辑134计算第N个加密散列值,并且将第N个累积散列值与PCR 136中的当前累积散列值138组合以形成新的累积散列值。通过将第N个累积散列值与PCR 136中的当前累积散列值138进行组合而得出的新的累积散列值实际上是基于完整性日志130的所有条目1至N的累积散列值。
在一些示例中,响应于接收到源文件i(i=1至N)而组合第i个加密散列值(CHV-i)可以如下所示:
newPCRValue=HASGH(oldPCRValue||CHV-i),
其中,HASH是加密散列函数,并且||表示其中向oldPCRValue(PCR 136中的当前累积散列值138)附加CHV-i的附加操作。参数newPCRValue表示作为138被写入PCR136中的新的累积散列值。
根据本公开的一些示例,源文件验证引擎107用于验证被添加到存储分区112中以供构建进程118在构建可执行程序108时使用的源文件。
在根据图1的示例中,源文件验证引擎107可以在与构建服务器102分离的计算机集合中实施。在其他示例中,源文件验证引擎107可以在构建服务器102中实施。
在一些示例中,TPM 132没有网络访问权,并且构建服务器102中的代理140被用作TPM 132与源文件验证引擎107之间的代理。源文件验证引擎107从TPM 132(通过代理140)接收引用(quote)137,并且从构建服务器102中的代理140接收完整性日志130。代理140是构建服务器102中与源文件验证引擎107交互的程序或另一实体。在可替代示例中,TPM 132可以被配置为具有网络访问权,使得TPM 132可以直接与源文件验证引擎107通信(包括发送引用137和向源文件验证引擎107提供完整性日志130的副本)。
来自TPM 132的引用137包括由TPM 132提供的签名信息,其中,该签名信息包括PCR 136的内容与其他信息的组合(下面做进一步讨论)。来自TPM 132的签名信息可以使用TPM 132的私钥来签名。源文件验证引擎107可以包括公钥,该公钥可以被源文件验证引擎107用来验证签名信息来源于TPM 132。
向源文件验证引擎107提供引用137允许源文件验证引擎107确认来自代理140的完整性日志130的副本没有被篡改。源文件验证引擎107可以逐个条目地检查完整性日志130的副本,以计算要与引用137中包括的累积散列值进行比较的累积散列值,从而确认完整性日志130的副本没有被篡改。
另外,在确认完整性日志130的副本是有效的之后,源文件验证引擎107将包含在完整性日志130的副本的条目中的测量结果与基于源文件106的副本(106B)而计算的测量结果进行比较,这些源文件由源文件验证引擎107从源文件存储库104取得(比如通过网络110)。如果包含在完整性日志130的副本中的测量结果与由源文件验证引擎107计算的测量结果相匹配,则源文件验证引擎107可以确认存储分区112中没有源文件被添加或被修改(并且因此由构建进程118构建的可执行程序108没有被损坏)。然而,如果包含在完整性日志130的副本的条目中的测量结果与由源文件验证引擎107基于从源文件存储库104取得的源文件106B而计算的测量结果不匹配,则源文件验证引擎107可以指示存储分区112中的源文件已经损坏。
源文件验证引擎107输出验证结果142。验证结果142可以指示存储分区112中的源文件的验证是否成功。成功的验证结果指示存储分区112中的源文件没有损坏,而不成功的验证结果指示存储分区112中的源文件已经发生损坏。
在一些示例中,响应于确定存储分区112中的源文件的验证不成功,源文件验证引擎107可以执行对构建服务器102的补救控制144。补救控制144可以阻止构建服务器102的任何进一步引导,和/或可以禁用构建服务器102(例如,通过关闭构建服务器102或阻止构建服务器102完成其引导程序),和/或向目标实体(例如,管理员或另一实体)发送警报,等等。
如图1中进一步所示,程序构建器122和构建进程118可以在容器150中执行。容器150是构建服务器102中的隔离虚拟环境的示例。在一些示例中,构建服务器102中可能有多个容器用于执行不同的功能。容器150用于执行对可执行程序构建。
通过在容器150中运行构建进程118,可以保护构建进程118本身免受损坏,比如免受恶意软件114损坏。
在其他示例中,可以使用不同的隔离虚拟环境(比如管理程序环境中的虚拟机(VM))来执行构建进程118。
图2是涉及源文件验证引擎107、代理140、TPM 132和源文件存储库104的进程的流程图。尽管图2示出了特定的任务序列,但是应注意,在其他示例中,可以以不同的顺序执行任务,可以省略一些任务,或者可以采用其他任务。下面的讨论也参考图1。
可以请求源文件验证引擎107对构建服务器102的存储分区112中的源文件执行验证。该请求可以来自用户或另一实体,比如程序或机器。
源文件验证引擎107向代理140发送(在202处)质询,该代理将质询转发到TPM132。质询包括随机数,该随机数可以是由源文件验证引擎107产生的随机值。随机值可以由源文件验证引擎107中的随机数发生器或伪随机数发生器生成。
响应于质询,TPM 132将随机数与PCR 136中的累积散列值138进行组合(在204处)。注意,TPM 132也可以将随机数和累积散列值138与其他信息进行组合。随机数、累积散列值138与可能的其他信息的组合产生组合信息。TPM 132比如用TPM 132的私钥来对组合信息进行签名(在206处),以产生签名信息。
TPM 132向代理140发送(在208处)引用(比如图1中的引用137),该代理将该引用转发到源文件验证引擎107。引用包括由TPM 132产生的签名信息。
响应于从TPM 132接收到包括签名信息的引用,源文件验证引擎107验证(在210处)签名信息,这包括对签名信息进行解密。解密可以使用已经发送到源文件验证引擎107的、TPM 132的公钥。如果源文件验证引擎107能够验证签名信息,这就向源文件验证引擎107提供了表明签名信息的源(TPM 132)可信任的指示。作为对签名信息的解密的一部分,从签名信息中提取累积散列值138。
源文件验证引擎107还从代理140接收(在212处)完整性日志130的副本。例如,代理140可以响应于来自源文件验证引擎107的请求,向源文件验证引擎107发送完整性日志130的副本。
源文件验证引擎107基于完整性日志130的副本的条目计算(在214处)累积散列值(使用与TPM 132在计算累积散列值138时使用的进程类似的进程),并且源文件验证引擎将计算出的累积散列值与从TPM 132接收的签名信息中提取的累积散列值进行比较(在216处)。
如果源文件验证引擎107确定(在218处)累积散列值不匹配,则源文件验证引擎107返回(在220处)错误,并且进一步的验证操作被停止。错误指示提供了如下指示:完整性日志130已经发生篡改,使得存储分区112中的源文件的验证不成功。
然而,如果确定(在218处)累积散列值匹配,则源文件验证引擎107从源文件存储库104取得(在222处)源文件106B。
源文件验证引擎107基于取得的源文件106B的测量结果(例如,基于对取得的源文件106B应用加密散列函数)来计算(在224处)测量值,并且将计算出的测量值与完整性日志130的副本的条目中的对应测量值进行比较(在226处)。
源文件验证引擎107确定(在228处)测量值是否匹配。源文件验证引擎107基于(228处的)该确定返回验证结果(例如,图1中的142)。
如果计算出的测量值与完整性日志130的副本中的测量值相匹配,则源文件验证引擎107返回(在230处)指示对存储分区112中的源文件的成功验证的“成功”验证结果。然而,如果计算出的测量值与完整性日志130的副本中的测量值不匹配,则源文件验证引擎107返回(在232处)指示对存储分区112中的源文件的验证不成功的“失败”验证结果。
图3是存储有机器可读指令的非暂态机器可读或计算机可读存储介质300的框图,这些机器可读指令在执行时使系统执行各种任务。例如,该系统可以包括用于实施源文件验证引擎107(图1)的计算机集合。
这些机器可读指令包括用于进行以下操作的第一测量结果接收指令302:接收由构建服务器(例如,图1中的102)在构建可执行程序时使用的数据项的第一测量结果。数据项从数据存储库(例如,图1中的104)复制到与数据存储库分离的存储分区(例如,图1中的112),并且该存储分区存储与由构建服务器构建可执行程序相关的数据项。
这些机器可读指令包括用于进行以下操作的数据项损坏确定指令304:基于第一测量结果并且根据为存储分区指定的策略来确定由构建服务器在构建可执行程序时使用的数据项是否已经发生损坏。
在一些示例中,这些机器可读指令可以生成从数据存储库接收的数据项的第二测量结果,并且响应于第一测量结果和第二测量结果不匹配,指示由构建服务器在构建可执行程序时使用的数据项已经发生损坏。通过将第一测量结果与第二测量结果进行比较,该系统能够识别出由构建服务器使用的与数据存储库处的对应(多个)数据项不同的(多个)数据项。
在一些示例中,该策略指定,要对存储分区中为构建可执行程序而动态地添加的数据项执行验证。对于不在存储分区中的数据项,不执行验证。以这种方式,验证不是基于对存储分区之外的数据项的测量——在存储分区之外可能有大量这样的数据项(例如,OS的文件系统中的数据项),这可能会使得对由构建服务器使用的数据项的验证更加复杂并且可靠性降低。
在一些示例中,第一测量结果来自受构建服务器中的安全处理器(例如,图1中的TPM 132)保护的日志。以这种方式,该系统能够首先确认日志没有被篡改,然后再验证由构建服务器使用的数据项没有被损坏。
在一些示例中,该策略指定,作为对可执行程序的构建的一部分而创建的临时数据项将不被测量,并且第一测量结果不包括临时数据项的测量结果。构建服务器在构建可执行程序时创建的临时数据项如果被包括作为被测量数据项的一部分,将会导致验证错误,因为这些临时数据项不在数据存储库中。
图4是根据一些示例的过程400的流程图。过程400包括将数据项从数据存储库(例如,图1中的104)的第一存储分区复制(在402处)到与第一存储分区分离的第二存储分区(例如,图1中的112),其中,数据项被动态地添加到数据存储库并且与由构建服务器构建可执行程序相关。
过程400包括由验证系统根据针对第二存储分区的策略触发(在404处)针对构建服务器中的数据项的验证过程。验证系统触发验证过程可以是对用户请求或来自另一实体的请求的响应。同样地,针对第二存储分区的策略可以指定,要对第二存储分区中的数据项执行测量,而不对第二存储分区之外的数据项执行测量。限制被测量的数据项可以减少与验证用于构建可执行程序的数据项相关联的噪音。
过程400包括:作为验证过程的一部分,在验证系统处接收(在406处)由构建服务器在构建可执行程序时使用的数据项的第一测量结果。
在一些示例中,第一测量结果是从受构建服务器中的安全处理器保护的日志中取得的。在一些示例中,安全处理器用于基于以下操作来保护日志:基于包含第一测量结果的日志中的条目计算加密值,并且对该加密值进行签名。在一些示例中,第一测量结果包括从第二存储分区中的数据项得出的散列值。
过程400包括:作为验证过程的一部分,由验证系统基于第一测量结果来确定(在408处)由构建服务器在构建可执行程序时使用的数据项是否已经发生损坏。
图5是根据一些示例的系统500的框图。系统500包括构建服务器502。构建服务器502包括程序构建器504,该程序构建器用于基于从数据存储库取得并且存储在构建服务器的存储分区506中的第一数据项来构建可执行程序。存储分区506与数据存储库分离。
构建服务器502包括安全处理器508,比如TPM。构建服务器502还存储受安全处理器508保护的日志510。日志510将第一数据项的第一测量结果存储在构建服务器502中。
系统500进一步包括验证系统512,该验证系统包括可在验证系统的处理器上执行以执行各种任务的机器可读指令。可由验证系统512执行的机器可读指令包括用于进行以下操作的第一测量结果接收指令514:从构建服务器502中的日志510接收第一测量结果。
可由验证系统512执行的机器可读指令包括用于进行以下操作的数据项损坏确定指令516:基于该第一测量结果和从数据存储库取得的第一数据项的副本的第二测量结果来确定构建服务器502中的第一数据项是否已经发生损坏。
如果第一数据项包括不存在的或已经从数据存储库中的数据项修改过的数据项,则验证系统512将确定第一数据项已经发生损坏。
如果第一数据项包括从数据存储库中取得的第一数据项的相同副本,则验证系统512将确定第一数据项没有发生损坏。
存储介质(例如,图3中的300)可以包括以下各项中的任一项或某种组合:半导体存储器设备,比如动态或静态随机存取存储器(DRAM或SRAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪速存储器;磁盘,如固定的软盘和可移动盘;另一种磁介质,包括磁带;光学介质,如光盘(CD)或数字视频盘(DVD);或另一类型的存储设备。注意,上文讨论的指令可以在一个计算机可读或机器可读存储介质上提供,或者可替代地,可以在分布在具有可能多个节点的大型系统中的多个计算机可读或机器可读存储介质上提供。这种一个或多个计算机可读或机器可读存储介质被认为是物品(或制品)的一部分。物品或制品可以指任何制造的单个部件或多个部件。一个或多个存储介质可以位于运行机器可读指令的机器中、或者位于远程站点处,可以通过网络从该远程站点下载机器可读指令以供执行。
在前述描述中,阐述了许多细节以使得理解本文中所公开的主题。然而,可以在没有这些细节中的一些细节的情况下实践实施方式。其他实施方式可以包括上文所讨论的细节的修改和变化。所附权利要求旨在覆盖这样的修改和变化。

Claims (20)

1.一种非暂态机器可读存储介质,包括指令,所述指令在执行时使系统进行以下操作:
接收由构建服务器在构建可执行程序时使用的数据项的第一测量结果,所述数据项从数据存储库复制到与所述数据存储库分离的存储分区,并且所述存储分区用于存储与所述构建服务器构建所述可执行程序相关的所述数据项;以及
基于所述第一测量结果并且根据为所述存储分区指定的策略,确定由所述构建服务器在构建所述可执行程序时使用的所述数据项是否已经发生损坏。
2.如权利要求1所述的非暂态机器可读存储介质,其中,所述第一测量结果基于作为所述构建服务器的一部分或与所述构建服务器分离的所述存储分区中的所述数据项。
3.如权利要求2所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述系统进行以下操作:
生成从所述数据存储库接收的所述数据项的第二测量结果;以及
响应于所述第一测量结果和所述第二测量结果不匹配,指示由所述构建服务器在构建所述可执行程序时使用的所述数据项已经发生损坏。
4.如权利要求3所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述系统进行以下操作:
响应于所述第一测量结果和所述第二测量结果不匹配,指示由所述构建服务器在构建所述可执行程序时使用的数据项不在所述数据存储库中或者与所述数据存储库中的对应数据项不同。
5.如权利要求3所述的非暂态机器可读存储介质,其中,所述策略指定要对所述存储分区中为构建所述可执行程序而动态地添加的所述数据项执行验证。
6.如权利要求1所述的非暂态机器可读存储介质,其中,所述第一测量结果来自受所述构建服务器中的安全处理器保护的日志。
7.如权利要求1所述的非暂态机器可读存储介质,其中,由所述构建服务器在构建所述可执行程序时使用的所述数据项的所述第一测量结果包括在所述构建服务器的隔离虚拟环境中构建所述可执行程序时使用的所述数据项的测量结果。
8.如权利要求7所述的非暂态机器可读存储介质,其中,对所述可执行程序的构建是由所述隔离虚拟环境中的程序构建器进行的,所述隔离虚拟环境中的所述程序构建器受到保护,以免被所述构建服务器中的恶意软件损坏。
9.如权利要求1所述的非暂态机器可读存储介质,其中,所述策略指定,作为对所述可执行程序的构建的一部分而创建的临时数据项将不被测量,并且其中,所述第一测量结果不包括所述临时数据项的测量结果。
10.一种方法,包括:
将数据项从数据存储库的第一存储分区复制到与所述第一存储分区分离的第二存储分区,所述数据项被动态地添加到所述数据存储库并且与由构建服务器构建可执行程序相关;
由验证系统根据针对所述第二存储分区的策略触发针对所述构建服务器中的所述数据项的验证过程;
作为所述验证过程的一部分,在所述验证系统处接收由所述构建服务器在构建所述可执行程序时使用的所述数据项的第一测量结果;以及
作为所述验证过程的一部分,由所述验证系统基于所述第一测量结果来确定由所述构建服务器在构建所述可执行程序时使用的所述数据项是否已经发生损坏。
11.如权利要求10所述的方法,其中,所述第一测量结果是从受所述构建服务器中的安全处理器保护的日志中取得的。
12.如权利要求11所述的方法,其中,安全处理器用于基于以下操作来保护所述日志:基于包含所述第一测量结果的所述日志中的条目计算加密值,并且对所述加密值进行签名。
13.如权利要求10所述的方法,其中,所述第一测量结果包括从所述第二存储分区中的所述数据项得出的散列值。
14.如权利要求10所述的方法,包括:
由所述验证系统生成从所述数据存储库接收的所述数据项的第二测量结果,
其中,所述确定进一步基于所述第二测量结果。
15.如权利要求14所述的方法,包括:
响应于所述第一测量结果和所述第二测量结果不匹配,指示所述构建服务器中用于构建所述可执行程序的数据项不在所述数据存储库中或者与所述数据存储库中的对应数据项不同。
16.如权利要求10所述的方法,其中,由所述构建服务器在构建所述可执行程序时使用的所述数据项的所述第一测量结果包括由编译器在所述构建服务器的隔离容器中构建所述可执行程序时使用的所述数据项的测量结果。
17.如权利要求10所述的方法,其中,所述策略指定,作为对所述可执行程序的构建的一部分而创建的临时数据项将不被测量,并且其中,所述第一测量结果不包括所述临时数据项的测量结果。
18.一种系统,包括:
构建服务器,所述构建服务器包括:
程序构建器,用于基于从数据存储库取得并且存储在所述构建服务器的存储分区中的第一数据项来构建可执行程序,所述存储分区与所述数据存储库分离,
安全处理器,以及
日志,所述日志受所述安全处理器保护并且用于将所述第一数据项的第一测量结果存储在所述构建服务器中;以及
验证系统,所述验证系统包括机器可读指令,所述机器可读指令能在所述验证系统的处理器上执行以进行以下操作:
从所述构建服务器中的所述日志接收所述第一测量结果,以及
基于所述第一测量结果和从所述数据存储库中取得的所述第一数据项的副本的第二测量结果来确定所述构建服务器中的所述第一数据项是否已经发生损坏。
19.如权利要求18所述的系统,其中:
如果所述第一数据项包括不存在的或已经从所述数据存储库中的数据项修改过的数据项,则所述验证系统将确定所述第一数据项已经发生损坏,以及
如果所述第一数据项包括从所述数据存储库中取得的所述第一数据项的相同副本,则所述验证系统将确定所述第一数据项没有发生损坏。
20.如权利要求18所述的系统,其中,所述构建服务器包括隔离虚拟环境,所述程序构建器能在所述隔离虚拟环境中执行以构建所述可执行程序。
CN202111259581.7A 2021-08-10 2021-10-28 对构建服务器使用的数据项的损坏确定 Pending CN115878122A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/444,774 2021-08-10
US17/444,774 US20230049131A1 (en) 2021-08-10 2021-08-10 Corruption determination of data items used by a build server

Publications (1)

Publication Number Publication Date
CN115878122A true CN115878122A (zh) 2023-03-31

Family

ID=85039980

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111259581.7A Pending CN115878122A (zh) 2021-08-10 2021-10-28 对构建服务器使用的数据项的损坏确定

Country Status (3)

Country Link
US (1) US20230049131A1 (zh)
CN (1) CN115878122A (zh)
DE (1) DE102021127718A1 (zh)

Also Published As

Publication number Publication date
DE102021127718A1 (de) 2023-02-16
US20230049131A1 (en) 2023-02-16

Similar Documents

Publication Publication Date Title
US11176255B2 (en) Securely booting a service processor and monitoring service processor integrity
US11503030B2 (en) Service processor and system with secure booting and monitoring of service processor integrity
US10740468B2 (en) Multiple roots of trust to verify integrity
US8028172B2 (en) Systems and methods for updating a secure boot process on a computer with a hardware security module
US7506380B2 (en) Systems and methods for boot recovery in a secure boot process on a computer with a hardware security module
US11714910B2 (en) Measuring integrity of computing system
CN103718165B (zh) Bios闪存攻击保护和通知
TW201500960A (zh) 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全性變數變化檢測技術
CN100447736C (zh) 包括固件接口运行时环境保护字段的设备和方法
JP2006501581A (ja) サーバ管理コプロセッササブシステム内部のtcpaによる信頼性の高いプラットフォームモジュール機能のカプセル化
TWI672634B (zh) 基本輸入輸出系統(bios)保全技術
US10776493B2 (en) Secure management and execution of computing code including firmware
US11636214B2 (en) Memory scan-based process monitoring
Frazelle Securing the boot process
Frazelle Securing the Boot Process: The hardware root of trust
KR20200041639A (ko) 차량용 소프트웨어 업데이트 장치 및 그 제어 방법
CN114692160A (zh) 计算机安全可信启动的处理方法及装置
WO2023179745A1 (zh) 可信验证方法及装置
US20230049131A1 (en) Corruption determination of data items used by a build server
US20200244461A1 (en) Data Processing Method and Apparatus
TW202211066A (zh) 電腦安全及其使用方法
CN114201761B (zh) 在可信计算系统中增强度量代理安全性
US11269637B2 (en) Validating machine-readable instructions using an iterative validation process
KR102369874B1 (ko) 무결성 검증 대상 디바이스에 대한 os 및 무결성 정보의 통합 업데이트 방법 및 원격 검증 시스템, os 배포 서버 및 무결성 검증 대상 디바이스
WO2019137614A1 (en) Apparatus and method for runtime integrity protection for execution environments

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication