CN107533594A - 用于不可信的计算系统的软件验证 - Google Patents

用于不可信的计算系统的软件验证 Download PDF

Info

Publication number
CN107533594A
CN107533594A CN201680023124.9A CN201680023124A CN107533594A CN 107533594 A CN107533594 A CN 107533594A CN 201680023124 A CN201680023124 A CN 201680023124A CN 107533594 A CN107533594 A CN 107533594A
Authority
CN
China
Prior art keywords
hash
data
software
computing system
selection
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.)
Granted
Application number
CN201680023124.9A
Other languages
English (en)
Other versions
CN107533594B (zh
Inventor
克里斯·特夫斯
布赖恩·康坦·莫纳汉
阿德里安·约翰·鲍德温
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 CN107533594A publication Critical patent/CN107533594A/zh
Application granted granted Critical
Publication of CN107533594B publication Critical patent/CN107533594B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • H04L9/3239Cryptographic 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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • 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

Landscapes

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

Abstract

一种验证软件的方法,其包括在可信的计算机系统中维护软件的至少部分数据的拷贝,该软件包括不可信的计算系统中的数据。该方法包括利用可信的计算系统将从该拷贝中包含的数据中选择的数据指定为哈希数据;基于指定的哈希数据生成用于生成哈希的可执行文件;使用来自拷贝的指定的选择数据作为哈希数据,执行可执行文件以生成检查哈希;并至少部分基于检查哈希和访问哈希的比较,确定软件是否合法,所述访问哈希是通过不可信的计算系统使用来自不可信的计算系统的指定的选择的数据作为哈希数据,执行可执行文件生成的。

Description

用于不可信的计算系统的软件验证
背景技术
软件,诸如在虚拟机(VM)内运行的软件,可以由例如供应商在诸如客户或第三方计算系统(例如客户或第三方云)的不可信的计算环境中部署。此类情况下,供应商可以确保软件是安全的(不会或将不会受到未授权方的干扰)。为了确保在计算环境中部署的软件的合法性不受供应商的控制,当前的安全技术可能涉及将额外的可信软件安装到底层计算系统,诸如可信的平台模块(TPM)。
附图说明
图1为根据一个实施例大体上阐释安全软件系统的块图及示意图。
图2为根据一个实施例大体上阐释安全软件系统的块图及示意图。
图3为根据一个实施例阐释安全软件系统的块图及示意图。
图4为大体上阐释目录结构的实施例的块图及示意图。
图5为根据一个实施例阐释验证软件的方法的流程图。
图6为根据一个实施例大体上阐释用于实现安全软件系统的计算系统的块图及示意图。
具体实施方式
在下面的详细说明书中,参考了附图,其作为说明书一部分,并且通过阐释可实施本公开的具体的实施例而显示。应理解,在不背离本公开范围的情况下,可以使用其他实施例,且可以进行结构或逻辑改变。因此,下面的详细说明书不视为是限制性的,并且本公开的范围由所附的权利要求限定。应理解,本文描述的各种实施例的特征可以部分或整体互相组合,除非另外具体指出。
供应商可以部署软件,包括虚拟机(VM)内所包含的软件、软件容器或任意其他类型的虚拟计算引擎,以例如在不可信的计算环境(即不受供应商控制的计算系统)的远程设备,诸如客户或第三方远程服务器、数据中心等上运行。在一些情况下,部署的软件可以包括专有数据和/或过程。在一些情况下,可以将软件部署为给用户和/或客户的服务(例如软件即服务(SaaS)),各自用途涉及支付、认证或其他形式的验证。在一些实施例中,软件可以涉及专有数据和/或敏感数据,诸如收费系统或安全文档交换系统。当部署在不可信的计算环境中时,此类部署的软件的供应商需要确保部署的软件是安全的,并且不被未授权方不当访问或篡改。
目前,软件供应商试图通过将软件绑到特定硬件,并且保持对该软件部署的物理控制,来控制部署的软件。此类硬件可以包括确保软件验证的硬件,诸如可信的平台模块(TPM),例如其运用加密硬件/技术确保通信安全并且验证软件是合法的而不是未授权版本。然而,此类技术及硬件至多提供了用于更改或调整部署的软件的用途的有限灵活性。
在云计算环境中,许多应用受益于部署方面较大的灵活性。例如,一些软件可以被动态部署和缩放为能够取决于需求,在分布式服务器或一组服务器上实现的虚拟机。常规的验证技术妨碍了或大大降低了此类应用的灵活性。
图1为根据本公开的一个实施例,大体上阐释并描述安全软件系统100的块图及示意图,其从可信的计算环境提供不可信的计算环境(例如客户或第三方云)中软件的验证,而不使用专用硬件(例如TPM)和/或无需控制底层硬件。安全软件系统100包括认证器120,其部署在远离不可信的计算系统102中待验证的软件110的可信的计算系统106中,软件110包括数据112,所述数据112包括开放数据112a和加密数据112b。在一个实施例中,认证器120维护软件110的至少部分数据112(包括至少部分开放数据112a)的拷贝122。
根据一个实施例,每次从软件10接收验证请求时(例如,试图访问软件110时),认证器120从拷贝122中包含的选择的数据中指定选择的数据串,至少部分基于指定的选择的数据串,为软件110生成和提供可执行文件124,用于生成哈希,和使用指定的选择的数据串执行可执行文件124,以生成检查哈希。认证器接收访问哈希,所述访问哈希是由软件110使用来自不可信的计算系统102的数据112的指定的选择的数据串,执行可执行文件124生成的。在一个实施例中,至少部分基于检查哈希是否与访问哈希相匹配,认证器为软件110提供用于对加密数据112a解密的密钥126。
图2为根据一个实施例阐释安全软件系统110的块图及示意图。根据阐释的实施例,安全软件系统100包括软件110,其由软件供应商部署在例如诸如客户数据中心或云102的不可信的计算环境中。在一个实施例中,将软件110安装在客户云102的一个或多个诸如服务器104的服务器中,软件110包括存储在其存储器中的开放数据112a(即未加密数据)和加密数据112b。在一种情况下,软件110为虚拟机(VM)110(如图示的)、软件容器或任意其他类型的计算引擎。
安全软件系统110进一步包括认证器120,其部署在诸如软件110的提供商的数据中心或云106的可信的计算环境106中。在一个实施例中,如所阐释的,认证器120部署在一个或多个诸如提供商云106的服务器108的服务器中。认证器120维护VM110的多达所有数据的拷贝,但维护至少开放数据的拷贝,诸如VM110的开放文件112a的拷贝112所图示的。根据一个实施例,如下面将更具体描述的,认证器120维护至少用于引导并配置VM110的数据及文件。在一个实施例中,每当供应商更改/更新VM110时,认证器更新数据拷贝122。在一个实施例中,定期更新数据112的至少加密数据112b,并用新密钥126重新加密。在一个实施例中,每次引导VM110(有时称作“单引导”机器)时,更新加密数据112b,并用新密钥126重新加密。
操作时,当诸如客户端103的用户访问VM110时,比如处理票据信息时,VM110基于诸如开放文件112a的开放数据引导至不安全的状态,并将验证请求130传递给认证器120。不可信的计算系统102和可信的计算系统106,因而VM110和认证器120,经诸如互联网的网络109通信。当接收到验证请求130,认证器120就生成验证器程序132,并传递给VM110,所述验证器程序132包括用于生成哈希值(也简称为“哈希”)的可执行文件。
在一个实施例中,验证器程序132包括用于测试VM10的数据112的完整性多个随机化密码质询,潜在的攻击者难以提前预测测试结果。在一个实施例中,当生成验证器程序132时,认证器120选择用于生成哈希的哈希函数(例如,诸如SHA-2族(安全哈希函数)和SHA-3族哈希函数之一),并指定要输入选择的哈希函数的输入或哈希数据以用于生成哈希。在一个实施例中,认证器120将来自软件110(例如VM110)的数据的拷贝122中包含的选择的数据的数据串指定为哈希数据。在一个实施例中,认证器120将来自拷贝122中包含的选择的文件的一系列文件指定为哈希数据。在一个实施例中,如下面将更具体描述的,选择的数据/文件至少包括引导及配置VM110所需的数据。在一个实施例中,指定来自选择的数据的数据串包括从拷贝122随机选择和/或伪随机选择数据(例如,文件、系列文件等)。
当接收到验证器程序132,VM110通过将指定的来自VM110的数据112的哈希数据应用于验证器程序132的哈希函数,执行可执行文件以生成“访问哈希值”,即访问哈希。VM110接着将访问哈希134传递给认证器120。
认证器120通过将指定的来自VM110的数据的拷贝122的哈希数据应用于验证器程序132的哈希函数,执行验证器程序132以生成“检查哈希值”,或检查哈希。认证器120将认证器120根据VM110的数据的拷贝122所生成的检查哈希与VM110根据不可信的计算环境102中VM110的实际数据112所生成的访问哈希进行比较。
检查哈希与访问哈希之间的匹配指示VM110处于期望的状态或合法状态,意思是VM110还未被篡改并且还没有未授权的用户/代码或不期望的接口(例如,额外的网络接口或USB端口使能)插入VM110。在一个实施例中,当已验证了VM110的状态(即检查哈希与访问哈希相匹配)时,认证器120为VM110提供密钥136,用于对例如诸如加密文件112的加密数据解密。检查哈希与访问哈希之间匹配失败指示VM110的状态不合法,表示VM110的安全性已被破坏,且拒绝VM110的访问请求(即未提供解密密钥),或可以指导远程机器采取动作以使自身将来不可用。
如上所述,安全软件系统100从可信的计算环境对部署在不可信的计算环境(例如客户或第三方云)中的软件提供远程验证,而不使用专用硬件(例如TPM)或无需控制底层硬件。此类验证使得服务供应商(例如SaaS)能够在客户或第三方硬件(即不可信的计算环境)上部署软件(例如VM),同时确保软件的完整性及安全性。通过每次接收验证请求时不定期地改变指定的哈希值(例如伪随机选择不同的次级文件树,伪随机地生成因子并在选择的次级文件树的系列文件内的不同位置插入因子),且通过要求在指定的时间段内提供访问哈希,安全软件系统100迫使潜在的攻击者部署通常超过了目标VM的潜在经济价值的数量上不切实际的资源。根据本公开文件的软件验证还为部署的软件提供了增强的灵活性,尤其为云计算环境,因为验证系统能够容易快速地适应虚拟机和软件应用的动态缩放。
图3为根据本公开大体上阐释安全软件系统100的实施例的块图及示意图,其中认证器120包括生成器140和验证器150。尽管如图2所描述的,可以将生成器140和验证器150组合,但是物理上和地理上分开的生成器140和验证器150,针对DDoS(分布式拒绝服务)提供了改进的防御。可以将任意合适的安全数据传输技术(例如https)用于在生成器140和验证器150之间传输数据。
根据图示的实施例,VM110的数据文件存储在多个存储器分区170中,譬如诸如存储器分区0至3。在一个实施例中,多个分区为“开放”分区(即未加密分区),譬如诸如分区0和1,而多个分区被加密(即需要用于解密/访问的密钥),譬如诸如分区2和3。
将VM110的文件布置或构造为树结构或目录结构。在一种情况下,与操作系统(OS)相关联且与VM110的引导、配置及维护相关联的文件,存储在例如一个或多个开放的存储器分区中,譬如诸如存储器分区0。对于基于LinuxTM的系统,此类文件保存在诸如“/etc”、“/boot”、“/bin”和“/usr”目录中。在基于WindowsTM的系统中,此类文件保存在诸如“C:\ProgramFiles、Windows NT”、“C:\Program Files(86)\WindowsNT”的目录路径和配置注册等中。在一个实施例中,供应商IP(知识产权),诸如加载到VM110上的软件应用,和其他敏感数据存储在一个或多个加密存储分区中,譬如诸如存储器分区2和3。
操作时,当诸如客户103的用户试图使用VM110时,VM110上的验证程序172生成并发送验证请求130至生成器140。类似于上面描述的,响应于验证请求130,认证器120的生成器140生成验证器程序132并提供给VM110,所述验证器程序132包括用于根据指定的哈希数据生成哈希的可执行文件。
根据一个实施例,生成器140维护清单或表142,其具有诸如SHA-2族和SHA-3族哈希函数,例如适于基于安全软件系统100的参数生成哈希的多个预定义哈希函数。在一个实施例中,当从VM110接收到验证请求130使,生成器140为验证器程序132随机选择一个预定的哈希函数,以用于哈希的生成。在一个实施例中,生成器140改变哈希加密的长度,以为哈希生成提供进一步的变化。在其他情况下,哈希函数142可以是密码哈希之外的函数,例如诸如非密码哈希函数和循环冗余检查(CRC)算法。
根据阐释的实施例,生成器140维护与验证器150所维护的VM110的数据的拷贝122相对应的VM110的目录结构的拷贝144。在一种情况下,基于目录结构的拷贝144,生成器140选择次级文件或目录路径,选择的目录中的系列文件中的数据作为哈希数据用于选择的哈希函数。
图4为大体上阐释VM100的目录结构200的实施例的块图及示意图。目录结构200包括根目录“A”,从其分出多个次级目录B至H。根据一个实施例,选择目录路径的次级文件时,生成器140可以选择文件路径A-C-G,这样将目录G中系列文件(文件1-5)的所有数据被指定为哈希数据,用于由验证器程序132选择的哈希函数进行哈希的生成。
在一个实施例中,如上所述,验证器150维护至少开放存储器分区的拷贝,在开放存储器分区中存储了与操作系统相关联并且与VM110的引导、配置及维护相关联的文件,例如诸如分区0。因此,在一个实施例中,选择的文件的文件目录“G”或目录路径A-C-G可以与基于WindowsTM的系统中的“\Windows NTTR”目录相对应。在其他实施例中,验证器150也可以维护加密的存储器分区的拷贝。
在一个实施例中,生成器140给包括来自函数表142的选择的哈希函数的VM110提供验证器程序132、选择的次级目录路径的系列文件的数据以及验证器150的URL(统一资源定位符)地址,该数据被指定为用于选择的哈希函数的输入或哈希数据。
在一个实施例中,除了将选择的目录路径的一系列文件的数据选为哈希数据,生成器140进一步包括生成随机因子的因子生成器146,该随机因子包括随机系列的字符,例如被插入在随机选择的系列文件的文件对之间。例如,如果选择的目录路径的系列文件包括文件F1至F5(F1-F2-F3-F4-F5),生成器140可以例如在文件F3和F4之间插入因子,这样指定的哈希数据包括F1-F2-F3-因子-F4-F5)。此类情况下,除了将哈希函数和指定的目录路径纳入验证器程序132,生成器140进一步包括因子“值”(即插入的字符串),并指定将因子插入系列指定文件中的位置。
当生成验证器程序132时,生成器140经路径138给VM110和验证器150提供验证器程序132。在一个实施例中,生成器140进一步包括验证器程序132中的时间戳,其指示验证器程序与VM110通信的时间。
当接收到验证器程序132时,VM110的验证程序172执行验证器程序132,以使用如存储在存储器分区170中的指定目录路径的系列文件的数据和验证器程序132纳入的因子来生成访问哈希。在一个实施例中,VM110的验证程序172使用提供的URL地址,将生成的访问哈希连同时间戳一起通信至验证器150。
当从生成器140接收到验证器程序132时,验证器150执行验证器程序132以使用验证器程序132纳入的因子和如存储在存储器分区170的拷贝122中的指定文件路径的系列文件的数据来生成检查哈希。以类似于如上所述的方式,验证器将从数据拷贝122生成的检查哈希与VM110从VM110的实际数据170生成的访问哈希进行比较。
检查哈希与访问哈希之间的匹配指示VM110处于期望的状态或合法状态,表示VM110还未被篡改,且没有额外的用户/代码(即未授权的)注入VM110。在一个实施例中,当验证VM110的状态时(即检查哈希与访问哈希相匹配),认证器120为VM110提供密钥136,用于对加密数据,例如诸如加密的分区2和3解密。检查哈希与访问哈希之间匹配的失败指示VM110的状态是非法的,表示VM110的安全性可能已被破坏,并且拒绝VM110的访问请求(即不提供解密密钥)。
在一个实施例中,验证器150针对从VM110接收访问哈希的时间,进一步检查从生成器140接收的验证器程序中包含的时间戳。如果在时间戳与从VM110接收访问哈希的时间之间经过的时间超过了预定的时间段,表示VM110的安全性可能已被破坏。根据这种实施例,当检查哈希与访问哈希之间相匹配,且时间戳与从VM110接收的访问哈希的时间之间经过的时间少于预定的时间段时,则验证器150为VM110提供密钥136。如果检查哈希不与访问哈希相匹配,或如果时间戳与从VM110接收访问哈希的时间之间经过的时间超过了预定的时间段,则验证器150不为VM110提供密钥136。
图5为根据本公开文件的一个实施例阐释验证不可信的计算环境中软件(例如,诸如图3的VM110)的方法190的流程图。在191处,方法190包括在可信的计算系统中维护软件的至少部分数据的拷贝,该软件包括不可信的计算系统中的数据,诸如图3的认证器120的验证器150,其维护VM110的至少部分存储器分区170的拷贝122。
在193处,该方法包括将来自拷贝中包含的数据的选择的数据指定为哈希数据,诸如图3的认证器120的生成器140将来自数据拷贝122中包含的选择的目录路径的文件的数据指定为哈希数据。在195处,方法190包括基于指定的哈希数据生成用于生成哈希的可执行文件,诸如图3的认证器120的生成器140从哈希函数142的表生成包括随机选择预定的哈希函数的可执行文件。
在197处,方法190包括用可信的计算系统执行可执行文件,使用来自拷贝的指定的选择的数据用作哈希数据生成检查哈希。在199处,方法190包括至少部分基于检查哈希与的访问检查的比较,确定软件是否合法,该访问检查是由不可信的计算系统使用来自不可信的计算系统的指定的选择的数据作为哈希数据,执行可执行文件生成的,诸如图3的生成器150比较检查哈希与VM110生成的访问哈希。在一个实施例中,该方法包括如果检查哈希与访问哈希相匹配,则将软件视为是合法的,并且为不可信的计算系统提供用于对加密数据解密的密钥。
在一个实施例中,安全软件系统100,包括认证器120的生成器140和验证器150,可以由计算系统实现。在这种实施例中,计算系统的认证器120、生成器140和验证器150各自可以包括硬件及实现认证器120、生成器140和验证器150的功能的程序的任意组合,如本文结合图1-6的任一所描述的。例如,可以将用于认证器120、生成器140和验证器150的编程实现为至少一个非暂时性机器可读存储介质上存储的处理器可执行的指令,并且硬件可以包括至少一个执行指令的处理资源。根据这种实施例,至少一个非暂时性机器可读存储介质存储指令,其由至少一个处理资源执行时,实施验证器120、生成器140和验证器150。
图6为根据一个实施例大体上阐释用于实现安全软件系统100的计算系统200的块图及示意图。在阐释的实施例中,计算系统或计算设备200包括处理单元202和系统存储器204,系统存储器204可以是易失性(例如,RAM)、非易失性(例如,ROM、闪存等)或其一些组合。计算设备200还可以具有额外的特征/功能和额外或不同的硬件。例如,计算设备200可以包括输入设备210(例如,键盘、鼠标等)、输出设备212(例如,显示器)和允许计算设备10与其他计算机/应用216通信的通信连接214,其中经通信链路218将计算设备200的各种元件通信地联结在一起。
在一个实施例中,计算设备200可以包括额外的存储器(可移除和/或非可移除),包括但不限于磁盘或光盘或磁带。在图4中,此类额外的存储器阐释为可移除存储器206和非可移除存储器208。计算机存储介质包括以用于诸如计算机可读指令、数据结构、程序模块或其他数据的信息的非暂时性存储的任意适当方法或技术来实现的易失性及非易失性、可移除及非可移除介质,且不包括暂时性存储介质。计算机存储介质包括RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储器、磁盒、磁带和磁盘存储器或例如其他磁存储设备。
系统存储器204、可移除存储器206和非可移除存储器208表示计算机存储介质的例子,包括非暂时性计算机可读存储介质,其存储由处理单元202的一个或多个处理器单元执行时,使得一个或多个处理器执行诸如安全软件系统100的系统的功能的计算机可执行指令。例如,如图6所阐释的,系统存储器204存储用于安全软件系统100的认证器120的计算机可执行指令220,包括生成器指令240和验证器指令250,其由处理单元202的一个或多个处理单元执行时,实现如本文所述的安全软件系统100的认证器120的生成器140和验证器150的功能。在一个实施例中,存储用于认证器120、生成器140和验证器150至少一种的指令的至少一个的机器可读介质的一个或多个可以与计算设备200分开,但是计算设备200可访问。在其他实施例中,硬件及编程可在多个计算设备间分开。
在一些实施例中,计算机可执行指令能够为安装包的一部分,其安装时能由至少一个处理单元执行,以实现认证器120、生成器140和验证器150至少之一的功能。在这种实施例中,机器可读存储介质可以是例如诸如CD、DVD或闪存驱动的便携式介质,或是由能够下载安装包并且安装的服务器所维护的存储器。在其他实施例中,计算机可执行指令可以是已安装在计算设备200上的一个应用、多个应用或组件的一部分,包括处理资源。在这种实施例中,机器可读存储介质可以包括诸如硬盘驱动器、固态驱动器等的存储器。在其他实施例中,可以以电子电路的形式实现认证器120、生成器140和验证器150至少之一的功能。
尽管本文已经阐释和描述了具体的实施例,但是在不背离本公开范围的情况下,各种替代和/或等同的实施例可以代替所示及所述的具体实施例。本申请旨在涵盖本文讨论的具体实施例的任意改变或变化。因此,期望本公开仅由权利要求及其等同范围的限制。

Claims (15)

1.一种验证软件的方法,其包括:
在可信的计算系统中,维护软件的至少部分数据的拷贝,所述软件包括不可信的计算系统中的数据,使用所述可信的计算系统:
将从所述拷贝中包含的数据中选择的数据指定为哈希数据;
基于该指定的哈希数据生成用于生成哈希的可执行文件;
使用从所述拷贝指定的选择的数据作为所述哈希数据,执行所述可执行文件,以生成检查哈希;和
至少部分基于所述检查哈希与访问哈希的比较,确定所述软件是否是合法的,所述访问哈希是通过所述不可信的计算系统使用从所述不可信的计算系统指定的选择的数据作为所述哈希数据,执行所述可执行文件生成的。
2.根据权利要求1所述的方法,所述软件包括开放数据与加密数据,所述方法包括:
如果所述检查哈希与所述访问哈希相匹配,则将所述软件视为是合法的;并且
为所述不可信的计算系统提供用于对所述加密数据解密的密钥。
3.根据权利要求2的所述方法,进一步包括:
如果所述检查哈希与所述访问哈希相匹配,并且所述访问哈希由所述不可信的计算系统在预定的时间段内生成,则为所述不可信的计算系统提供用于对所述加密数据解密的密钥。
4.根据权利要求1所述的方法,进一步包括:
生成随机因子;
将该因子插入该指定的选择的数据内的选择的位置,并且将该因子插入其中的该指定的选择的数据指定为所述哈希数据。
5.根据权利要求1所述的方法,所述软件包括开放数据和加密数据,所述维护软件的至少部分数据的拷贝包括维护所述开放数据的拷贝。
6.根据权利要求1所述的方法,所述软件包括目录树结构中的文件,各个目录具有目录路径,其中将随机数据指定为哈希数据包括选择目录路径和将该选择的目录路径的一系列文件的数据指定为哈希数据。
7.根据权利要求1所述的方法,其包括:
至少每当更新该软件时,对所述软件的至少部分数据的所述拷贝进行更新。
8.根据权利要求1所述的方法,该指定选择的数据包括至少从至少与引导、配置及维护所述软件相关联的数据指定数据。
9.根据权利要求1所述的方法,其中该指定选择的数据包括从所述软件的至少部分数据的所述拷贝中随机选择数据和伪随机选择数据的至少一种。
10.一种安全软件系统,其包括:
认证器,其在可信的计算系统中,所述可信的计算系统远离不可信的计算系统中待验证的软件,所述软件包括开放数据和加密数据,所述认证器维护至少部分所述开放数据的拷贝,并且,每次从所述软件接收验证请求时,所述认证器:
从所述拷贝中包含的选择的数据中指定选择的数据串;
至少部分基于所述选择的数据串,为所述软件生成和提供用于生成哈希的可执行文件;
执行所述可执行文件,以使用来自所述拷贝的该指定的选择的数据串生成检查哈希;
至少部分基于所述检查哈希是否与访问哈希相匹配,为所述软件提供用于所述加密数据的密钥,所述访问哈希是由所述软件使用该指定的来自所述不可信的计算系统的选择的数据串,执行所述可执行文件生成的。
11.根据权利要求10所述的安全软件系统,所述认证器:
监控所述软件为所述验证器提供所述访问哈希需要的时间段;并且
无论所述检查哈希是否与所述访问哈希相匹配,如果所述时间段长于预定的时间段,则拒绝为所述软件提供所述密钥。
12.根据权利要求10所述的安全软件系统,所述认证器:
生成随机因子;并且
将该因子插入该指定的选择的数据中选择的位置用于生成哈希。
13.根据权利要求1所述的安全软件系统,所述软件包括虚拟机和软件容器中的一种。
14.一种包括计算机可执行指令的非暂时性计算机可读存储介质,所述计算机可执行指令可由至少一个处理器执行,以:
在可信的计算系统中,维护软件的至少部分数据的拷贝,所述软件包括不可信的计算系统中的数据;
从所述拷贝包含的数据中指定数据为哈希数据;
基于该指定的哈希数据生成用于生成哈希的可执行文件;
用所述可信的计算系统使用从所述拷贝的该指定的数据作为哈希数据执行所述可执行文件,以生成检查哈希;
基于所述检查哈希与访问哈希的比较,以及所述不可信的计算系统生成所述访问哈希所需要的时间段,确定软件是否合法,所述访问哈希是由所述不可信的计算系统使用来自所述不可信的计算系统的指定的数据作为哈希数据,通过执行所述可执行文件生成的。
15.根据权利要求14所述的非暂时性计算机可读介质,进一步包括可由至少一个处理器执行的指令,以:
如果所述检查哈希与所述访问哈希相匹配,并且所述时间段不超过指定的时间段,则将所述软件视为是合法的;
如果所述软件被视为是合法的,则为所述不可信的计算系统提供用于对所述加密数据解密的密钥;并且
如果所述检查哈希与所述访问哈希不匹配或如果所述时间段超过所述指定的时间段,则拒绝为所述不可信的计算系统提供密钥。
CN201680023124.9A 2016-01-21 2016-01-21 验证软件的方法、安全软件系统及可读存储介质 Active CN107533594B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2016/014358 WO2017127089A1 (en) 2016-01-21 2016-01-21 Software validation for untrusted computing systems

Publications (2)

Publication Number Publication Date
CN107533594A true CN107533594A (zh) 2018-01-02
CN107533594B CN107533594B (zh) 2021-01-26

Family

ID=59362816

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680023124.9A Active CN107533594B (zh) 2016-01-21 2016-01-21 验证软件的方法、安全软件系统及可读存储介质

Country Status (4)

Country Link
US (1) US11496317B2 (zh)
EP (1) EP3283996B1 (zh)
CN (1) CN107533594B (zh)
WO (1) WO2017127089A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112464174A (zh) * 2020-10-27 2021-03-09 华控清交信息科技(北京)有限公司 验证多方安全计算软件的方法、装置和用于验证的装置
CN113689296A (zh) * 2021-08-30 2021-11-23 北京泛融科技有限公司 一种异步可信计算的合约调度方法、装置和电子设备

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3059446B1 (fr) * 2016-11-25 2019-07-05 Institut Mines-Telecom / Telecom Bretagne Procede d'insertion de donnees a la volee dans une base de donnees tatouees et dispositif associe.
US11088842B1 (en) 2018-01-30 2021-08-10 State Farm Mutual Automobile Insurance Company Vehicle configuration verification using cryptographic hash chains
US10868834B2 (en) * 2018-05-11 2020-12-15 Cisco Technology, Inc. Detecting targeted data exfiltration in encrypted traffic
US11244077B2 (en) * 2020-01-31 2022-02-08 Fortanix, Inc. Securing data integrity for an application

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1991779A (zh) * 2005-12-30 2007-07-04 联想(北京)有限公司 基于安全芯片的防病毒方法
CN101242270A (zh) * 2007-02-05 2008-08-13 三星电子株式会社 提供和使用允许完整性验证的内容的方法和设备
CN101834860A (zh) * 2010-04-22 2010-09-15 北京交通大学 一种远程动态验证客户端软件完整性的方法
CN101593259B (zh) * 2009-06-29 2011-03-23 北京航空航天大学 软件完整性验证方法及系统
US20120254624A1 (en) * 2011-03-29 2012-10-04 Microsoft Corporation Three party attestation of untrusted software on a robot
CN103905461A (zh) * 2014-04-14 2014-07-02 北京工业大学 一种基于可信第三方的云服务行为可信证明方法和系统
CN104243457A (zh) * 2014-08-29 2014-12-24 上海斐讯数据通信技术有限公司 移动终端的可信性衡量方法及系统
CN104715183A (zh) * 2013-12-13 2015-06-17 中国移动通信集团公司 一种虚拟机运行时的可信验证方法和设备

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080214300A1 (en) * 2000-12-07 2008-09-04 Igt Methods for electronic data security and program authentication
WO2006006719A1 (en) * 2004-07-14 2006-01-19 Matsushita Electric Industrial Co., Ltd. Method for authenticating and executing an application program
US7725703B2 (en) 2005-01-07 2010-05-25 Microsoft Corporation Systems and methods for securely booting a computer with a trusted processing module
WO2007028113A2 (en) * 2005-09-01 2007-03-08 Metabeam Corporation Linking dvds to the internet
KR101500336B1 (ko) 2007-09-12 2015-03-09 삼성전자주식회사 신뢰 컴퓨팅을 이용한 디지털 데이터의 검증 방법 및 장치
EP2203815B1 (en) * 2007-09-20 2015-08-12 Uniloc Luxembourg S.A. Installing protected software product using unprotected installation image
US9058483B2 (en) 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US7853780B2 (en) * 2008-07-31 2010-12-14 Oracle America, Inc. Core initialization code validation
US8856504B2 (en) 2010-06-07 2014-10-07 Cisco Technology, Inc. Secure virtual machine bootstrap in untrusted cloud infrastructures
AU2011320339B2 (en) 2010-10-31 2015-09-03 Temporal Defense Systems, L.L.C. System and method for securing virtual computing environments
TW201241662A (en) 2010-12-21 2012-10-16 Ibm Virtual machine validation
US8881294B2 (en) 2011-02-18 2014-11-04 Honeywell International Inc. Methods and systems for securely uploading files onto aircraft
US8875240B2 (en) 2011-04-18 2014-10-28 Bank Of America Corporation Tenant data center for establishing a virtual machine in a cloud environment
US20130036103A1 (en) * 2011-08-04 2013-02-07 The Boeing Company Software Part Validation Using Hash Values
US8909930B2 (en) * 2011-10-31 2014-12-09 L-3 Communications Corporation External reference monitor
US8793504B2 (en) 2012-02-22 2014-07-29 International Business Machines Corporation Validating a system with multiple subsystems using trusted platform modules and virtual platform modules
EP2965254B1 (en) * 2013-03-08 2020-05-13 Robert Bosch GmbH Systems and methods for maintaining integrity and secrecy in untrusted computing platforms
JP5933797B1 (ja) * 2015-10-07 2016-06-15 株式会社ソリトンシステムズ ログ情報生成装置及びプログラム並びにログ情報抽出装置及びプログラム

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1991779A (zh) * 2005-12-30 2007-07-04 联想(北京)有限公司 基于安全芯片的防病毒方法
CN101242270A (zh) * 2007-02-05 2008-08-13 三星电子株式会社 提供和使用允许完整性验证的内容的方法和设备
CN101593259B (zh) * 2009-06-29 2011-03-23 北京航空航天大学 软件完整性验证方法及系统
CN101834860A (zh) * 2010-04-22 2010-09-15 北京交通大学 一种远程动态验证客户端软件完整性的方法
US20120254624A1 (en) * 2011-03-29 2012-10-04 Microsoft Corporation Three party attestation of untrusted software on a robot
CN104715183A (zh) * 2013-12-13 2015-06-17 中国移动通信集团公司 一种虚拟机运行时的可信验证方法和设备
CN103905461A (zh) * 2014-04-14 2014-07-02 北京工业大学 一种基于可信第三方的云服务行为可信证明方法和系统
CN104243457A (zh) * 2014-08-29 2014-12-24 上海斐讯数据通信技术有限公司 移动终端的可信性衡量方法及系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112464174A (zh) * 2020-10-27 2021-03-09 华控清交信息科技(北京)有限公司 验证多方安全计算软件的方法、装置和用于验证的装置
CN112464174B (zh) * 2020-10-27 2023-09-29 华控清交信息科技(北京)有限公司 验证多方安全计算软件的方法、装置和用于验证的装置
CN113689296A (zh) * 2021-08-30 2021-11-23 北京泛融科技有限公司 一种异步可信计算的合约调度方法、装置和电子设备
CN113689296B (zh) * 2021-08-30 2023-11-17 北京泛融科技有限公司 一种异步可信计算的合约调度方法、装置和电子设备

Also Published As

Publication number Publication date
CN107533594B (zh) 2021-01-26
EP3283996A4 (en) 2018-06-20
WO2017127089A1 (en) 2017-07-27
US11496317B2 (en) 2022-11-08
EP3283996A1 (en) 2018-02-21
EP3283996B1 (en) 2021-03-03
US20180254906A1 (en) 2018-09-06

Similar Documents

Publication Publication Date Title
Lazar et al. Why does cryptographic software fail? A case study and open problems
EP3479282B1 (en) Targeted secure software deployment
CN109313690B (zh) 自包含的加密引导策略验证
CN107533594A (zh) 用于不可信的计算系统的软件验证
ES2692900T3 (es) Certificación criptográfica de entornos de ejecución alojados seguros
JP5314016B2 (ja) 情報処理装置、暗号鍵の管理方法、コンピュータプログラム及び集積回路
EP1168141B1 (en) A secure and open computer platform
CA2919106C (en) Media client device authentication using hardware root of trust
US20150280922A1 (en) Systems and methods for using cryptography to protect secure and insecure computing environments
JP5180203B2 (ja) メモリ装置から供給される情報を制御するシステムおよび方法
JP5097130B2 (ja) 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム
JP2013514587A (ja) 証明書失効リストを用いたコンテンツ管理方法
CN111611593A (zh) 安全数据处理设备
JP2009543211A (ja) 汎用管理構造を使用するコンテンツ管理システムおよび方法
JP5178716B2 (ja) 証明書取消リストを使用するコンテンツ管理システムおよび方法
JP2009543208A (ja) 証明書連鎖を使用するコンテンツ管理システムおよび方法
Catuogno et al. Secure dependency enforcement in package management systems
JP4972165B2 (ja) アイデンティティオブジェクトを使用する制御システムおよび方法
TWI840506B (zh) 安全資料處理裝置(二)
Kumbhar et al. Hybrid Encryption for Securing SharedPreferences of Android Applications
Catuogno et al. Guaranteeing dependency enforcement in software updates
Glas et al. A prototype of trusted platform functionality on reconfigurable hardware for bitstream updates
Abrahamsson Security Enhanced Firmware Update Procedures in Embedded Systems
CN111492617A (zh) 用于验证数字证书的方法和验证设备
CN115756515A (zh) 容器软件部署权限的校验方法、装置、设备及存储介质

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