CN117579331A - 远程证明方法、装置、电子设备及存储介质 - Google Patents

远程证明方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117579331A
CN117579331A CN202311523826.1A CN202311523826A CN117579331A CN 117579331 A CN117579331 A CN 117579331A CN 202311523826 A CN202311523826 A CN 202311523826A CN 117579331 A CN117579331 A CN 117579331A
Authority
CN
China
Prior art keywords
application
remote
attestation
response
information
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
CN202311523826.1A
Other languages
English (en)
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.)
Beijing Volcano Engine Technology Co Ltd
Original Assignee
Beijing Volcano Engine Technology Co Ltd
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 Beijing Volcano Engine Technology Co Ltd filed Critical Beijing Volcano Engine Technology Co Ltd
Priority to CN202311523826.1A priority Critical patent/CN117579331A/zh
Publication of CN117579331A publication Critical patent/CN117579331A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message 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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • G06F21/445Program or device authentication by mutual authentication, e.g. between devices or programs
    • 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/40Network security protocols

Abstract

本公开提供一种远程证明方法、装置、电子设备及存储介质。所述应用于第一应用,所述第一应用运行于第一可信执行环境中;所述方法包括:向第二应用发起远程证明请求,所述第二应用运行于第二可信执行环境中;获取所述第二应用返回的第一证明响应;从目标可信存储模块获取所述第二应用的第一证明证据,所述第一证明证据通过所述第二应用上传并存储于所述目标可信存储模块中;基于所述第一证明响应和所述第一证明证据进行远程证明,获得针对所述第二应用的第一远程证明结果。

Description

远程证明方法、装置、电子设备及存储介质
技术领域
本公开涉及技术领域,尤其涉及一种远程证明方法、装置、电子设备及存储介质。
背景技术
实现可信计算要求计算程序运行在TEE(Trusted Execution Environment,可信执行环境)中,TEE是处理器的一个安全区域,建立了一个隔离的执行环境,该隔离的执行环境提供了安全特征,如隔离执行、TEE中运行的应用程序的完整性以及其资产的机密性。
为实现运行在多个TEE可信应用之间的通信,需要通过远程证明验证应用运行于安全的可信执行环境平台上且应用程序的逻辑未被篡改。然而,现有的远程证明方面不能满足应用程序的使用需求。
发明内容
有鉴于此,本公开的目的在于提出一种远程证明方法、装置、电子设备及存储介质。
基于上述目的,本公开第一方面提供了一种远程证明方法,应用于第一应用,所述第一应用运行于第一可信执行环境中;所述方法包括:
向第二应用发起远程证明请求,所述第二应用运行于第二可信执行环境中;
获取所述第二应用返回的第一证明响应;
从目标可信存储模块获取所述第二应用的第一证明证据,所述第一证明证据通过所述第二应用上传并存储于所述目标可信存储模块中;
基于所述第一证明响应和所述第一证明证据进行远程证明,获得针对所述第二应用的第一远程证明结果。
在一些实施例中,所述第一证明响应包括第一远程证明报告,所述第一远程证明报告基于所述远程证明请求生成。
在一些实施例中,所述第一证明证据包括所述第二应用的基准应用度量值信息,所述基准应用度量值信息基于所述第二应用在所述第二可信执行环境中的创建或更新生成并上传至所述目标可信存储模块。
在一些实施例中,所述基于所述第一证明响应和所述第一证明证据进行远程证明,获得针对所述第二应用的第一远程证明结果,包括:
判断所述第一远程证明报告是否符合预设条件;
响应于所述第一远程证明报告符合预设条件,基于所述第一远程证明报告获取所述第二应用的应用度量值信息,对所述基准应用度量值信息和所述应用度量值信息进行验证;
响应于所述基准应用度量值信息和所述应用度量值信息匹配,确定所述第一远程证明结果为证明通过;
响应于所述基准应用度量值信息和所述应用度量值信息不匹配,确定所述第一远程证明结果为证明不通过。
在一些实施例中,所述基于所述第一证明响应和所述第一证明证据进行远程证明之前,所述方法还包括:
获取所述第一证明响应中的附加信息;
基于所述第一远程证明报告获取第一信息,基于所述附加信息和所述第一信息确定所述第一远程证明报告与所述第二应用的关联关系。
在一些实施例中,所述的方法,还包括:从目标可信存储模块获取所述第一应用的第一检验策略;所述第一检验策略通过所述第一应用上传并存储于所述目标可信存储模块,所述第一检验策略用于所述第一应用对其他应用的远程证明,所述其他应用包括所述第二应用;
所述基于所述第一证明响应和所述第一证明证据进行远程证明,包括:基于所述第一检验策略对所述第一证明响应和所述第一证明证据进行验证。
在一些实施例中,所述的方法,还包括:将证明服务设置于所述目标可信存储模块的智能合约中;
所述基于所述第一证明响应和所述第一证明证据进行验证,包括:通过所述智能合约基于所述第一检验策略对所述第一证明响应和所述第一证明证据进行验证。
在一些实施例中,所述第一证明证据包括以下至少之一:
所述第二应用的应用标识信息;
所述第二应用的应用版本信息;
所述第二应用的至少一个远程证明类型;
所述第二应用的至少一个应用度量值信息,所述应用度量值信息与所述远程证明类型关联。
在一些实施例中,响应于所述第一远程证明结果为证明通过,所述方法还包括:
生成第二证明响应并发送至所述第二应用,以使所述第二应用执行以下步骤:
从目标可信存储模块获取所述第一应用的第二证明证据,所述第二证明证据通过所述第一应用上传并存储于所述目标可信存储模块中;
基于所述第二证明响应和所述第二证明证据进行远程,获得针对所述第一应用的第二远程证明结果。
在一些实施例中,响应于所述第二远程证明结果为证明通过,所述方法还包括:
获取所述第二应用的公钥,基于所述第一应用的私钥和所述第二应用的公钥生成第一会话密钥,基于所述第一会话密钥与所述第二应用通信;以及,
使所述第二应用获取所述第一应用的公钥,基于所述第二应用的私钥和所述第一应用的公钥生成第二会话密钥,基于所述第二会话密钥与所述第一应用通信;
其中,所述第一会话密钥与所述第二会话密钥相同。
在一些实施例中,所述的方法,还包括:响应于所述第一应用和/或所述第二应用为开源应用,将所述第一应用和/或所述第二应用的应用代码上传并存储至公开地址。
本公开第二方面提供了一种远程证明装置,包括第一应用,所述第一应用运行于第一可信执行环境中;所述装置还包括:
请求模块,被配置为:向第二应用发起远程证明请求,所述第二应用运行于第二可信执行环境中;
返回模块,被配置为:获取所述第二应用返回的第一证明响应;
获取模块,被配置为:从目标可信存储模块获取所述第二应用的第一证明证据,所述第一证明证据通过所述第二应用上传并存储于所述目标可信存储模块中;
证明模块,被配置为:基于所述第一证明响应和所述第一证明证据进行远程证明,获得针对所述第二应用的第一远程证明结果。
本公开的第三方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的远程证明方法。
本公开的第四方面提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行第一方面所述的远程证明方法。
从上面所述可以看出,本公开提供的远程证明方法、装置、电子设备及存储介质,由于第二应用已经预先将其作为远程证明基准值的第一证明证据上传至目标可信存储模块,这样当第一应用需要对第二应用进行远程证明时,可直接从目标可信存储模块获取作为基准值的第一证明证据,并结合通过发起远程证明请求从第二应用直接获取的第一证明响应进行远程证明,从而获得最终的远程证明结果。该过程中,由于作为基准值的第一证明证据是存储在目标可信存储模块中的,而不是存储在第一应用中,这样不会导致第一应用自身的证明证据发生变化,也就不会影响该第一应用后续的远程证明,即无需担心双向证明所产生的循环依赖问题;同时,由于将第一证明证据上传并存储至目标可信存储模块,当第二应用是新增的应用或者第二应用更新时,只需获取新版本的第二应用的证明证据上传并存储至目标可信存储模块,第一应用向第二应用发起远程证明请求时,会从目标可信存储模块中获取于最新版本的第二应用对应第一证明证据作为基准值进行远程证明,从而能够在新增应用或者应用更新的情况下也实现应用之间的远程证明。
附图说明
为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本公开实施例所提供的一种示例性方法的流程示意图。
图2示出了根据本公开实施例的一个示例性方法的流程示意图。
图3示出了根据本公开实施例的一个示例性网络架构示意图。
图4示出了本公开实施例所提供的一种示例性装置的示意图。
图5示出了本公开实施例所提供的示例性计算机设备的硬件结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
在分布式计算环境领域,云计算作为实现更灵活、可扩展性更高和更高效系统的一种方式变得越来越重要。但是,随着云计算服务的用户失去了对云提供商托管的数据和应用程序的直接控制,云服务的可信性成为阻碍云应用程序部署的主要问题。
为了吸引用户使用云服务,云/服务提供商提供可信服务,以向用户保证向服务提供的数据和应用程序保持安全并受到保护,并且服务将仅按照用户的预期使用这些数据和应用程序。
可信服务可以使用可信执行环境(trusted execution environment,TEE)开发,例如Intel SGX、TDX,AMD SEV,ARM TrustZone等。可信执行环境是一种基于硬件的安全技术,通过划分安全和非安全部分,构建出与外部隔离的安全计算环境,该安全计算环境可保证其内部加载的数据和代码的机密性和完整性。
可信执行环境技术实现时会提供远程证明机制,请求者向可信应用发起远程证明请求,应用可获取远程证明报告并提供给请求者。通过验证远程证明报告,请求者可确认应用运行在可信的硬件平台上,且应用的运行逻辑未被篡改,从而保障数据的安全。
远程证明报告中通常包括应用度量值,其中,应用度量值是基于应用的代码和数据计算的哈希值,可以用于验证应用的身份和完整性。在进行远程证明时,请求者接收应用发送的远程证明报告并从远程证明报告中获取到应用度量值,再将该应用度量值与预先获取的基准值进行比较,其中基准值是应用在完成开发后同步到其他可信应用中的。当涉及多个可信应用之间的远程证明时,会出现以下问题:
(1)可信应用之间进行双向远程证明,需要获取其他应用的度量值作为自己度量内容的一部分,从而产生循环依赖问题。
具体的,当应用A完成开发时,获取其应用度量值MRE_A。当应用B需要验证应用A,会将应用A的应用度量值MRE_A作为基准值写入应用B的代码或配置信息,对应用B进行度量所生成的应用B的应用度量值MRE_B。若应用A也验证应用B,则需要再应用A的代码或配置信息中写入应用B的应用度量值MRE_B,这导致了应用A的代码或配置信息发生变化,这导致此时再计算获得应用A的应用度量值MRE_A’与MRE_A不同,即导致了应用A的应用度量值发生了变化,后续无法再进行远程证明。
(2)当应用A升级之前,应用B以应用A的应用度量值MRE_A作为基准值校验应用A;当应用A升级后,应用A的代码或配置信息发生变化,导致应用A的应用度量值MRE_A’与MRE_A不同,即导致应用A的应用度量值也发生了变化,后续应用B无法校验应用A的新的基准值。
针对上述问题,相关技术中可采用以下方式解决:
方式A:将开发者作为可信第三方,基于开发者信息对各个应用的身份进行校验。以SGX环境为例,每个SGX环境环境中的飞地(Enclave)包括两个身份凭证,即应用度量值(MRENCLAVE)和开发者公钥度量值(MRSINGER)。当开发者的密钥确定后,使用同一个公钥对各个飞地进行签名,多个飞地之间通过开发者公钥度量值来互相确认身份。在这种方式中,需要依赖一个可信的开发者,且应用间未验证其他应用的代码和运行逻辑的完整性。
在这种情况下,如果开发者密钥丢失,攻击者即可制作恶意的应用并通过符合条件的开发者密钥进入与原本的应用进行通信,那用户的数据则可能被攻击者获得,不能保证用户的数据安全性。
方式B:将多个飞地作为一组,将该组飞地中各应用的代码的应用度量值作为基准值,基于该组飞地中各应用的代码的应用度量值计算获得一个中间度量值。应用在进行远程证明时,通过自己的一个工具或逻辑从该中间度量值计算其他应用的最终度量值,从而基于其他应用的最终度量值来实现远程证明,这可以避免将应用度量值写入应用的代码或配置信息导致的循环依赖问题。
但是,由于中间度量值是基于各个应用的代码的应用度量值计算获得的,当该组飞地中某个应用更新,该应用代码或配置信息发生变化,则该应用的应用度量值即基准值也会发生变化,其他应用就无法从中间度量值中计算出该应用的最终度量值,也就无法实现对该应用的远程证明;同时,若需要在该组飞地中增加新的应用,该应用也无法从中间度量值中获取其他应用的最终度量值,其他应用也无法从中间度量值中获取该新增应用的最终度量值,从而使得新增应用无法与其他应用进行远程证明。
有鉴于此,本公开实施例提供一种远程证明方法,利用可信存储模块保存用于远程证明的身份信息,以解决上述问题。
其中,该远程证明方法应用于第一应用,且所述第一应用运行于第一可信执行环境中,如图1所示,所述方法包括:
步骤S101,向第二应用发起远程证明请求,所述第二应用运行于第二可信执行环境中。
本说明书实施例涉及的可信执行环境(TEE)可以为软件提供安全的执行环境,TEE是基于CPU硬件的安全扩展,且与外部完全隔离的可信执行环境。以Intel SGX(以下简称SGX)技术为例。可信计算节点可以基于SGX技术创建enclave(围圈或飞地),以作为用于第一应用、第二应用运行的TEE。其中,利用CPU中新增的处理器指令,在内存中可以分配一部分区域EPC(Enclave Page Cache,围圈页面缓存或飞地页面缓存),以用于驻留上述的enclave。上述EPC对应的内存区域被CPU内部的内存加密引擎MEE(Memory EncryptionEngine)加密,该内存区域中的内容(enclave中的代码和数据)只有在CPU内核中才能够被解密,且用于加解密的密钥只有在EPC启动时生成并存储在CPU中。可见,enclave的安全边界只包含其自身和CPU,无论是特权或非特权软件都无法访问enclave,即便是操作系统管理员和VMM(virtual machine monitor,虚拟机监视器;或称为,Hypervisor)也无法影响enclave中的代码和数据,因而具有极高的安全性,并且在上述安全性保障的前提下,CPU能够在enclave中对明文形式的可信存储模块交易进行处理,具有极高的运算效率,从而兼顾了数据安全性和计算效率。
本实施例中,第一应用运行于第一可信执行环境中,第二应用运行于第二可信执行环境中。第一可信执行环境和第二可信执行环境可以部署于同一可信计算节点上,或者,第一可信执行环境和第二可信执行环境可以部署于不同可信计算节点上,本说明书对此并不做任何限制。第一可信执行环境与第二可信执行环境可以为同一可信执行环境,或者,第一可信执行环境区别于第二可信执行环境,本实施例对此并不做任何限制。
本实施例中,当第一应用想要对第二应用进行远程证明时,第一应用可生成第一请求值发送至第二应用,从而向第二应用发起远程证明请求。其中,第一请求值可以是第一应用所生成的随机数。
步骤S103,获取所述第二应用返回的第一证明响应。
第二应用接收第一应用发送的第一请求值之后,基于第一应用发起的远程证明请求,生成第一证明响应,并将该第一证明响应发送至第一应用,第一应用即可获得第二应用返回的第一证明响应。第一证明响应即用于实现对第二应用的远程证明,该远程证明可以包括远程身份证明,和/或,应用的代码和运行逻辑的完整性证明。
步骤S105,从目标可信存储模块获取所述第二应用的第一证明证据,所述第一证明证据通过所述第二应用上传并存储于所述目标可信存储模块中。
第一应用可以从目标可信存储模块获取第二应用的第一证明证据。其中,第一证明证据即用于对第二应用进行远程证明的基准值,该第一证明证据是第二应用预先上传并存储至目标可信存储模块中的,例如在第二应用完成开发或完成更新后即获得第二应用的第一证明证据上传并存储至目标可信存储模块。这样,当第一应用需要对第二应用进行远程证明时,即可从目标可信存储模块中获取最新的第一证明证据作为对第二应用进行远程证明的基准值。
同时,由于第一证明证据存储在目标可信存储模块中,无需存储在应用中,这样不会导致应用自身的证明证据发生变化,也就不会影响该应用后续的远程证明;同时,当新增应用或应用更新时,只需获取该新增应用或者更新后的新版本应用的证明证据上传并存储至可信存储模块,当其他应用需要对该新增应用或者新版本应用发起远程证明请求时,请求者应用可直接从可信存储模块中获取其最新的证明证据作为基准值来进程远程证明,而无需担心请求者应用的代码或配置信息中未存储该最新的证明证据。
在一些实施例中,目标可信存储模块可以是区块链等去中心化的可信存储模块单元、可信存储模块设备或者可信存储模块空间。其中,区块链是一种分布式账本技术,它通过将数据以区块的形式链接在一起,形成一个不可篡改的、透明的、去中心化的数据库。当第一应用、第二应用等可信应用将证明证据、检验策略等信息上传至区块链中时,区块链可保证证明证据、检验策略等信息的传输、存储的安全。
步骤S107,基于所述第一证明响应和所述第一证明证据进行远程证明,获得针对所述第二应用的第一远程证明结果。
获取第二应用返回的第一证明响应以及作为基准值的第一证明证据之后,第一应用即可基于该第一证明响应和第一证明证据对第二应用进行远程证明,从而获得针对第二应用的第一远程证明结果。
本实施例中,由于第二应用已经预先将其作为远程证明基准值的第一证明证据上传至目标可信存储模块,这样当第一应用需要对第二应用进行远程证明时,可直接从目标可信存储模块获取作为基准值的第一证明证据,并结合通过发起远程证明请求从第二应用直接获取的第一证明响应进行远程证明,从而获得最终的远程证明结果。该过程中,由于作为基准值的第一证明证据是存储在目标可信存储模块中的,而不是存储在第一应用中,这样不会导致第一应用自身的证明证据发生变化,也就不会影响该第一应用后续的远程证明,即无需担心双向证明所产生的循环依赖问题;同时,由于将第一证明证据上传并存储至目标可信存储模块,当第二应用是新增的应用或者第二应用更新时,只需获取新版本的第二应用的证明证据上传并存储至目标可信存储模块,第一应用向第二应用发起远程证明请求时,会从目标可信存储模块中获取于最新版本的第二应用对应第一证明证据作为基准值进行远程证明,从而能够在新增应用或者应用更新的情况下也实现应用之间的远程证明。
在一些实施例中,步骤S101-步骤S107所述的远程证明方法可以应用于第一应用对第二应用的单向远程证明,也可以应用于第一应用与第二应用之间的双向远程证明。
在一些实施例中,当步骤S101-步骤S107所述的远程证明方法应用于第一应用与第二应用之间的双向远程证明时:对于第一应用对第二应用的远程证明,可采用步骤S101-步骤S107所述的远程证明方法;对于第二应用对第一应用的远程证明,也可采用步骤S101-步骤S107所述的远程证明方法,或者也可采用其他可行的远程证明方法,本实施例对此不做限制。在一些实施例中,所述第一证明响应包括第一远程证明报告,第一远程证明报告中可包括硬件TCB信息、应用度量值、应用自定义的数据及硬件签名等信息。通过第一远程证明报告,第一应用可确认第二应用运行在可信的硬件平台上,且应用的运行逻辑未被篡改,从而在后续与第二应用之间的通信中保障数据的安全。其中,所述第一远程证明报告基于第一应用对第二应用发起的远程证明请求生成。
在一些实施例中,所述第一证明响应也可包括用于对第二应用进行身份验证的身份验证信息,从而使得第一应用可基于该身份验证信息对第二应用进行身份验证,从而在后续与第二应用之间的通信中保障数据的安全。所述第一证明响应也可包括其他用于对第二应用进行远程证明以保证第一应用与第二应用之间的安全通信的信息,本实施例对此并不做任何限制。
在一些实施例中,所述第一证明证据包括所述第二应用的基准应用度量值信息,所述基准应用度量值信息基于所述第二应用在所述第二可信执行环境中的创建或更新生成并上传至所述目标可信存储模块。
本实施例中,当第二应用在第二可信执行环境中开发完成时,基于第二应用的代码和数据计算哈希值从而获得第二应用的应用度量值,并将该应用度量值上传至目标可信存储模块中存储,作为其他应用对第二应用进行远程验证时的基准值,即基准应用度量值信息。
或者,当第二应用在第二可信执行环境中更新时,基于新版本的第二应用的代码和数据重新计算哈希值从而获得新版本的第二应用的新应用度量值,将该新应用度量值上传至目标可信存储模块,利用该新应用度量值替换目标可信存储模块中已存储的第二应用的旧应用度量值;或者,将新应用度量值、第二应用的版本信息也存储在目标可信存储模块,并使得其他应用在对第二应用进行远程请求时,基于第二应用的当前版本(例如可在远程证明报告中存储第二应用的版本信息)从目标可信存储模块中获得对应版本的应用度量值作为基准应用度量值信息,以实现对第二应用的远程证明,本实施例对此并不做任何限制。
本实施例中,由于第二应用的应用度量值是存储在目标可信存储模块中的,而无需存储在应用的代码或配置信息中,因此不会导致各应用作为基准值的应用度量值发生变化;同时,当第二应用是新增应用或更新后的新版本应用时,只需获取该新增第二应用或者更新后的新版本第二应用的新应用度量值上传并存储至目标可信存储模块,当第一应用等其他应用需要对该新增第二应用或者新版本第二应用发起远程证明请求时,请求者应用可直接从目标可信存储模块中获取第一应用最新的应用度量值作为基准应用度量值信息来进程远程证明,而无需担心请求者应用的代码或配置信息中未存储该最新的证明证据。
在一些实施例中,当第一证明证据包括所述第二应用的基准应用度量值信息时,如图2所示,步骤S107中所述基于所述第一证明响应和所述第一证明证据进行远程证明,获得针对所述第二应用的第一远程证明结果,包括:
步骤S201,判断所述第一远程证明报告是否符合预设条件。
本实施例中,第一远程证明报告中包括硬件签名。在获取第一远程证明报告之后,可获取第一远程证明报告中的硬件签名,通过对第一远程证明报告中的硬件签名进行验证,从而确定第一远程证明报告是否是符合预设条件的远程证明报告,从而确定第一远程证明报告是否是运行在可信执行环境中的可信应用生成的远程证明报告。
其中,可调用智能合约对硬件签名进行验证,或者可采用其他可行的方式来对硬件签名进行验证,从而确定第一远程证明报告是否符合预设条件,本实施例对此并不做任何限制。
步骤S203,响应于所述第一远程证明报告符合预设条件,基于所述第一远程证明报告获取所述第二应用的应用度量值信息,对所述基准应用度量值信息和所述应用度量值信息进行验证。
步骤S205,响应于所述基准应用度量值信息和所述应用度量值信息匹配,确定所述第一远程证明结果为证明通过。
步骤S207,响应于所述基准应用度量值信息和所述应用度量值信息不匹配,确定所述第一远程证明结果为证明不通过。
本实施例中,当第一证明证据为第二应用的基准应用度量值信息时,解析第一远程证明报告从而从第一远程证明报告中获取第二应用的应用度量值信息,并基于从目标可信存储模块中获取的基准应用度量值信息和从第二应用发送过来的应用度量值信息进行验证:当基准应用度量值信息和应用度量值信息匹配时,则可确定第一应用对第二应用的第一远程证明结果为证明通过;当基准应用度量值信息和应用度量值信息不匹配时,则可确定第一应用对第二应用的第一远程证明结果为证明不通过。
在一些实施例中,步骤S107中所述基于所述第一证明响应和所述第一证明证据进行远程证明之前,所述方法还包括:
步骤S301,获取所述第一证明响应中的附加信息。
步骤S303,基于所述第一远程证明报告获取第一信息,基于所述附加信息和所述第一信息确定所述第一远程证明报告与所述第二应用的关联关系。
其中,附加信息可以包括第一应用的请求值、第二应用的公钥或者第二应用生成的随机数等信息,本实施例对此并不做任何限制。
同时,第一远程证明报告中也存储了该第一应用的请求值、第二应用的公钥或者第二应用生成的随机数等信息,即第一信息。本实施例中,基于附加信息与从第一远程证明报告中获取的第一信息,来判断第一远程证明报告是否来自第二应用。当附加信息与第一信息一致,说明第一远程证明报告来自第二应用,未出现重放攻击;当附加信息与第一信息不一致,说明第一远程证明报告不来自第二应用,则出现重放攻击。因此,通过附加信息的设置可实现防重放攻击。
在一些实施例中,所述方法还包括:从目标可信存储模块获取所述第一应用的第一检验策略;所述第一检验策略通过所述第一应用上传并存储于所述目标可信存储模块,所述第一检验策略用于所述第一应用对其他应用的远程证明,所述其他应用包括所述第二应用。
步骤S107中所述基于所述第一证明响应和所述第一证明证据进行远程证明,包括:基于所述第一检验策略对所述第一证明响应和所述第一证明证据进行验证。
当第一应用在第一可信执行环境中创建或更新时,第一应用可将第一检验策略上传并存储至目标可信存储模块。当第一应用需要对包括第二应用在内其他应用进行远程证明时,再从目标可信存储模块中获取其第一检验策略,以基于该第一检验策略对包括第二应用在内其他应用进行验证。
其中,第一检验策略为第一应用对包括第二应用在内其他应用进行远程证明时所使用的策略,包括校验内容、校验逻辑等信息。该第一检验策略可以根据使用需求进行设置,例如第一检验策略包括:第二应用为可信应用,且第二应用的远程证明类型为SGXDCAP,验证时需要验证应用度量值。
在第一应用对第二应用进行远程证明时,第一应用可先确定第二应用的远程证明类型是否为SGX DCAP,再利用该第一检验策略对第二应用的基准应用度量值信息和应用度量值信息进行匹配,从而获得第一远程证明结果。
本实施例中,当第一应用对其他应用的检验策略发生变化;或者,因新的应用加入且需要第一应用对新增应用进行校验,因此需要在第一检验策略增加对该新增应用的检验策略,由于第一应用的第一检验策略是存储于目标可信存储模块中,因此可以直接对第一检验策略进行修改后上传并存储至目标可信存储模块。这样后续第一应用需要对检验策略变更的应用或者新增应用进行远程证明时,可从目标可信存储模块中直接获取该修改后的第一检验策略,从而解决应用更新或新增应用的校验问题。
在一些实施例中,所述方法还包括:将证明服务设置于所述目标可信存储模块的智能合约中;步骤S107中所述基于所述第一证明响应和所述第一证明证据进行验证,包括:通过所述智能合约基于所述第一检验策略对所述第一证明响应和所述第一证明证据进行验证。
本实施例中,硬件厂商实现TEE和远程证明机制后,会提供基础的验证远程证明报告相关的库和接口,开发者或云服务商等可基于基本的接口提供易用的证明服务,并将改证明服务作为智能合约,部署至可信存储模块中;证明服务可根据配置的检验策略对远程证明报告进行验证,并返回详细的远程证明结果。
即本实施例中,可以将用于实现远程证明的证明服务作为智能合约部署至目标可信存储模块中,当第一应用需要对第二应用进行远程证明时,可在目标可信存储模块中调用该证明服务根据第一检验策略对基准应用度量值信息和应用度量值信息进行匹配,从而获得第一远程证明结果。
在一些实施例中,第一应用也可以从目标可信存储模块中获取该证明服务以及第一检验策略,并在第一应用本地调用该证明服务根据第一检验策略对基准应用度量值信息和应用度量值信息进行匹配,从而获得第一远程证明结果,本实施例对此并不做任何限制。
在一些实施例中,所述第一证明证据包括以下至少之一:
所述第二应用的应用标识信息,该应用标识信息(ID)用于唯一标识第二应用。
所述第二应用的应用版本信息(version),用于标记第二应用的当前版本。
所述第二应用的至少一个远程证明类型,由于第二应用可能运行在不同的可信执行环境中,例如可运行于Intel SGX、TDX、AMD SEV、ARM TrustZone等可信执行环境中,对于不同可信执行环境中的第二应用,其具有不同的远程证明方法,因此通过设置不同的远程证明类型来区分运行于不同环境中的第二应用的远程证明。
所述第二应用的至少一个应用度量值信息,所述应用度量值信息与所述远程证明类型关联;由于第二应用可能运行在不同的可信执行环境中,对于不同可信执行环境中的第二应用,其代码和数据会有一定程度的不同,因此相应的应用度量值信息也不同。且由于都是与第二应用运行的可信执行环境相关,且应用度量值信息是与远程证明方法相关的,因此远程证明类型和应用度量值信息是关联的,例如远程证明类型和应用度量值信息是一一对应的。
在一些实施例中,第一证明证据是第二应用在创建或更新时上传并保存在目标可信存储模块中的,即所述第二应用的应用标识信息、应用版本信息、至少一个远程证明类型以及至少一个应用度量值信息是第二应用在创建或更新时上传并存储在目标可信存储模块中。
在一些实施例中,第二应用在创建或更新时,还会获取其自身的开发者度量值上传并存储在目标可信存储模块中,以便于在有需要的情况下使用。
在一些实施例中,第二应用在创建或更新时,还会获取其自身的第二检验策略并存储在目标可信存储模块中,以便于当第二应用需要对包括第一应用在内的其他应用进行远程证明时,可以从目标可信存储模块中获取第二检验策略,再调用部署于目标可信存储模块中的证明服务根据该第二检验策略对包括第一应用在内的其他应用进行远程证明。
以第一应用和第二应用之间的双向远程证明为例,在第一应用在第一可信执行环境中开发完成或更新时,第一应用需要将第二证明证据上传并存储于目标可信存储模块中。其中,第二证明证据包括以下至少之一:
所述第一应用的应用标识信息,该应用标识信息(ID)用于唯一标识第一应用。
所述第一应用的应用版本信息(version),用于标记第一应用的当前版本。
所述第一应用的至少一个远程证明类型,由于第一应用可能运行在不同的可信执行环境中,例如可运行于Intel SGX、TDX、AMD SEV、ARM TrustZone等可信执行环境中,对于不同可信执行环境中的第一应用,其具有不同的远程证明方法,因此通过设置不同的远程证明类型来区分运行于不同环境中的第一应用的远程证明。
所述第一应用的至少一个应用度量值信息,所述应用度量值信息与所述远程证明类型关联;由于第一应用可能运行在不同的可信执行环境中,对于不同可信执行环境中的第一应用,其代码和数据会有一定程度的不同,因此相应的应用度量值信息也不同。且由于都是与第一应用运行的可信执行环境相关,且应用度量值信息是与远程证明方法相关的,因此远程证明类型和应用度量值信息是关联的,例如远程证明类型和应用度量值信息是一一对应的。
对于第一应用和第二应用之间的双向远程证明,当第一远程证明结果为证明通过,所述方法还包括:
步骤S401,生成第二证明响应并发送至所述第二应用。
第一应用对第二应用的远程证明通过后,生成第二证明响应,并将该第二证明响应发送至第二应用。第二应用接收该第二证明响应之后,执行步骤S403。
步骤S403,使所述第二应用执行步骤S4031~S4033:
步骤S4031,从目标可信存储模块获取所述第一应用的第二证明证据,所述第二证明证据通过所述第一应用上传并存储于所述目标可信存储模块中。
第二应用可以从目标可信存储模块获取第一应用的第二证明证据。其中,第二证明证据即用于对第一应用进行远程证明的基准值,该第二证明证据是第一应用预先上传并存储至目标可信存储模块中的,例如在第一应用完成开发或完成更新后即获得第一应用的第二证明证据上传并存储至目标可信存储模块。这样,当第二应用需要对第一应用进行远程证明时,即可从目标可信存储模块中获取最新的第二证明证据作为对第一应用进行远程证明的基准值。
同时,由于第二证明证据存储在目标可信存储模块中,无需存储在应用中,这样不会导致应用自身的证明证据发生变化,也就不会影响该应用后续的远程证明;同时,当新增应用或应用更新时,只需获取该新增应用或者更新后的新版本应用的证明证据上传并存储至可信存储模块,当其他应用需要对该新增应用或者新版本应用发起远程证明请求时,请求者应用可直接从可信存储模块中获取其最新的证明证据作为基准值来进程远程证明,而无需担心请求者应用的代码或配置信息中未存储该最新的证明证据。
步骤S4033,基于所述第二证明响应和所述第二证明证据进行远程,获得针对所述第一应用的第二远程证明结果。
第二应用获取第一应用返回的第二证明响应以及作为基准值的第二证明证据之后,第二应用即可基于该第二证明响应和第二证明证据对第一应用进行远程证明,从而获得针对第一应用的第二远程证明结果。
本实施例中,由于第一应用已经预先将其作为远程证明基准值的第二证明证据上传至目标可信存储模块,这样当第二应用需要对第一应用进行远程证明时,可直接从目标可信存储模块获取作为基准值的第二证明证据,并结合从第一应用直接获取的第二证明响应进行远程证明,从而获得最终的远程证明结果。该过程中,由于作为基准值的第二证明证据是存储在目标可信存储模块中的,而不是存储在第二应用中,这样不会导致第二应用自身的证明证据发生变化,也就不会影响该第二应用后续的远程证明,即无需担心双向证明所产生的循环依赖问题;同时,由于将第二证明证据上传并存储至目标可信存储模块,当第一应用是新增的应用或者第一应用更新时,只需获取新版本的第一应用的证明证据上传并存储至目标可信存储模块,第二应用对第二应用进行远程证明时,会从目标可信存储模块中获取于最新版本的第一应用对应第二证明证据作为基准值进行远程证明,从而能够在新增应用或者应用更新的情况下也实现应用之间的远程证明。
在一些实施例中,所述第二证明响应包括第二远程证明报告,第二远程证明报告中可包括硬件TCB信息、应用度量值、应用自定义的数据及硬件签名等信息。通过第二远程证明报告,第二应用可确认第一应用运行在可信的硬件平台上,且应用的运行逻辑未被篡改,从而在后续与第一应用之间的通信中保障数据的安全。
在一些实施例中,所述第二证明响应也可包括用于对第一应用进行身份验证的身份验证信息,从而使得第一应用可基于该身份验证信息对第一应用进行身份验证,从而在后续与第一应用之间的通信中保障数据的安全。所述第二证明响应也可包括其他用于对第一应用进行远程证明以保证第二应用与第一应用之间的安全通信的信息,本实施例对此并不做任何限制。
在一些实施例中,所述第二证明证据包括所述第一应用的基准应用度量值信息,所述基准应用度量值信息基于所述第一应用在所述第一可信执行环境中的创建或更新生成并上传至所述目标可信存储模块。
在一些实施例中,当第二证明证据包括所述第一应用的基准应用度量值信息时,基于所述第二证明响应和所述第二证明证据进行远程证明,获得针对所述第一应用的第二远程证明结果,包括:
步骤S501,判断所述第二远程证明报告是否符合预设条件。
本实施例中,第二远程证明报告中也包括硬件签名。在获取第二远程证明报告之后,可获取第二远程证明报告中的硬件签名,通过对第二远程证明报告中的硬件签名进行验证,从而确定第二远程证明报告是否是符合预设条件的远程证明报告,从而确定第二远程证明报告是否是运行在可信执行环境中的可信应用生成的远程证明报告。
其中,可调用智能合约对硬件签名进行验证,或者可采用其他可行的方式来对硬件签名进行验证,从而确定第二远程证明报告是否符合预设条件,本实施例对此并不做任何限制。
步骤S503,响应于所述第二远程证明报告符合预设条件,基于所述第二远程证明报告获取所述第一应用的应用度量值信息,对所述基准应用度量值信息和所述应用度量值信息进行验证。
步骤S505,响应于所述基准应用度量值信息和所述应用度量值信息匹配,确定所述第二远程证明结果为证明通过。
步骤S507,响应于所述基准应用度量值信息和所述应用度量值信息不匹配,确定所述第二远程证明结果为证明不通过。
本实施例中,当第二证明证据为第一应用的基准应用度量值信息时,解析第二远程证明报告从而从第二远程证明报告中获取第一应用的应用度量值信息,并基于从目标可信存储模块中获取的基准应用度量值信息和从第一应用发送过来的应用度量值信息进行验证:当基准应用度量值信息和应用度量值信息匹配时,则可确定第二应用对第一应用的第二远程证明结果为证明通过;当基准应用度量值信息和应用度量值信息不匹配时,则可确定第二应用对第一应用的第二远程证明结果为证明不通过。
在一些实施例中,步骤S107中所述基于所述第二证明响应和所述第二证明证据进行远程证明之前,所述方法还包括:
步骤S601,获取所述第二证明响应中的附加信息。
步骤S603,基于所述第二远程证明报告获取第二信息,基于所述附加信息和所述第二信息确定所述第二远程证明报告与所述第一应用的关联关系。
其中,附加信息可以包括第一应用的公钥或者第一应用生成的随机数等信息,本实施例对此并不做任何限制。
同时,第二远程证明报告中也存储了该第一应用的公钥或者第一应用生成的随机数等信息,即第二信息。本实施例中,基于附加信息与从第二远程证明报告中获取的第二信息,来判断第二远程证明报告是否来自第一应用。当附加信息与第二信息一致,说明第二远程证明报告来自第一应用,未出现重放攻击;当附加信息与第二信息不一致,说明第二远程证明报告不来自第一应用,则出现重放攻击。因此,通过附加信息的设置可实现防重放攻击。
在一些实施例中,所述方法还包括:从目标可信存储模块获取所述第二应用的第二检验策略;所述第二检验策略通过所述第二应用上传并存储于所述目标可信存储模块,所述第二检验策略用于所述第二应用对其他应用的远程证明,所述其他应用包括所述第一应用。
所述基于所述第二证明响应和所述第二证明证据进行远程证明,包括:基于所述第二检验策略对所述第二证明响应和所述第二证明证据进行验证。
当第二应用在第二可信执行环境中创建或更新时,第二应用可将第二检验策略上传并存储至目标可信存储模块。当第二应用需要对包括第一应用在内其他应用进行远程证明时,再从目标可信存储模块中获取其第二检验策略,以基于该第二检验策略对包括第一应用在内其他应用进行验证。
其中,第二检验策略为第二应用对包括第一应用在内其他应用进行远程证明时所使用的策略,包括校验内容、校验逻辑等信息。
在一些实施例中,所述方法还包括:将证明服务设置于所述目标可信存储模块的智能合约中;所述基于所述第二证明响应和所述第二证明证据进行验证,包括:通过所述智能合约基于所述第二检验策略对所述第二证明响应和所述第二证明证据进行验证。
即本实施例中,可以将用于实现远程证明的证明服务作为智能合约部署至目标可信存储模块中,当第二应用需要对第一应用进行远程证明时,可在目标可信存储模块中调用该证明服务根据第二检验策略对基准应用度量值信息和应用度量值信息进行匹配,从而获得第二远程证明结果。
在一些实施例中,第二应用也可以从目标可信存储模块中获取该证明服务以及第二检验策略,并在第二应用本地调用该证明服务根据第二检验策略对基准应用度量值信息和应用度量值信息进行匹配,从而获得第二远程证明结果,本实施例对此并不做任何限制。
在一些实施例中,当所述第二远程证明结果为证明通过,所述方法还包括:
步骤S701,获取所述第二应用的公钥,基于所述第一应用的私钥和所述第二应用的公钥生成第一会话密钥,基于所述第一会话密钥与所述第二应用通信;以及,
步骤S703,使所述第二应用获取所述第一应用的公钥,基于所述第二应用的私钥和所述第一应用的公钥生成第二会话密钥,基于所述第二会话密钥与所述第一应用通信;其中,所述第一会话密钥与所述第二会话密钥相同。
本实施例中,当第二应用在生成第一远程证明报告时,还会生成一对密钥对,并将该密钥对中的公钥与第一远程证明报告一同发送至第一应用;相应的,当第一应用在生成第二远程证明报告时,也会生成一对密钥对,并将该密钥对中的公钥与第二远程证明报告一同发送至第二应用。
当第一应用和第二应用之间的双向远程证明均通过时,第一应用和第二应用均基于己方的私钥和对方的公钥计算出会话密钥,且两者计算出的会话密钥是相同的,这样,第一应用和第二应用即可基于该会话密钥对二者之间的交互数据进行加密保护。
在一些实施例中,所述方法,还包括:响应于所述第一应用和/或所述第二应用为开源应用,将所述第一应用和/或所述第二应用的应用代码上传并存储至公开地址。
本实施例中,当第一应用和/或第二应用为开源应用时,则在第一应用和/或第二应用开发完成或者应用更新后,将第一应用和/或第二应用的应用代码以源码或镜像等方式上传至公开地址,以供用户活其他开发者对代码进行审核并复现度量值。
其中,该公开地址可以为目标可信存储模块,也可以是其他平台,本实施例对此不作限制。
本实施例中,通过将应用度量值等信息以及检验策略上传到可信存储模块的方式,通过可信存储模块保存可信应用信息和检验策略,避免了应用直接将待验证的应用度量值作为自己代码的一部分,解决了可信应用间进行双向远程证明时的循环依赖问题,可实现多个可信应用间的验证;当应用进行版本迭代时,可将最新的应用信息或者检验策略上传至可信存储模块,在进行远程证明时,获取最新的应用信息作为校验基准值,并根据最新的策略进行验证,解决应用更新时的验证问题。
图3示出了根据本公开实施例的一个示例性网络架构示意图。
如图3所示,该网络架构包括第一可信计算节点和第二可信计算节点,其中,第一可信计算节点可以为第二可信计算节点,或者第一可信计算节点区别于第二可信计算节点。
第一可信计算节点中部署有第一可信执行环境,第一可信执行环境中运行有第一应用;第二可信计算节点中部署有第二可信执行环境,第二可信执行环境运行有第二应用。第一可信执行环境和第二可信执行环境中均包括接口程序供调用方通信,以及,也包含有实际执行计算过程的可信计算程序。
第一应用、第二应用可以通过网络连接与接口程序进行通讯,例如在第一可信计算节点区别于第二可信计算节点的情况下,第一应用、第二应用与接口程序之间通过建立加密信道从而实现第一应用与第二应用之间的加密通讯。而在第一可信计算节点与第二可信计算节点为同一硬件节点的情况下,此时可以认为第一可信执行环境和第二可信执行环境均部署于第一可信计算节点,即可信应用与接口程序运行在同一硬件节点上,因此可信应用可以直接对接口程序进行本地调用而无需建立网络连接,当然,也可以通过网络连接进行通讯。另外需要指出的是,在第一可信计算节点与第二可信计算节点为同一硬件节点的情况下,第二可信执行环境与第一可信执行环境可以为同一可信执行环境,或者,第二可信执行环境区别于第一可信执行环境,本说明书对此并不做任何限制。
本说明书实施例涉及的第一可信计算节点与第二可信计算节点可以为可运行计算机程序以实现任意逻辑功能的硬件/虚拟设备。
本说明书实施例涉及的可信执行环境(TEE)可以为软件提供安全的执行环境,TEE是基于CPU硬件的安全扩展,且与外部完全隔离的可信执行环境。
本说明书实施例涉及的第一应用、第二应用为可信应用,可信应用是指运行在TEE中、使用可验证计算技术实现的应用。
下面以第一应用、第二应用之间的远程证明方法为例,进一步陈述本申请的技术方案。
首先,硬件厂商实现TEE和远程证明机制后,会提供基础的验证远程证明报告相关的库和接口,开发者或云服务商等可基于基本的接口提供易用的证明服务,并将改证明服务作为智能合约,部署至目标可信存储模块中。
第一应用、第二应用在完成开发后,将各自的应用信息和校验策略上传至目标可信存储模块中。其中,第一应用的应用信息包括所述第一应用的应用标识信息、应用版本信息、远程证明类型、应用度量值信息等;第二应用的应用信息包括所述第二应用的应用标识信息、应用版本信息、远程证明类型、应用度量值信息等。
第一应用将其应用信息上传并存储至目标可信存储模块作为第二证明证据,第二证明证据即其他应用对第一应用进行远程证明时所使用的基准值;第二应用将其应用信息上传并存储至目标可信存储模块作为第一证明证据,第一证明证据即其他应用对第二应用进行远程证明时所使用的基准值。
同时,第一应用还会将其第二校验信息上传并存储至目标可信存储模块,第二检验策略为第二应用对第一应用进行远程证明时所使用的策略,包括校验内容、校验逻辑等信息;第二应用将其第一校验信息上传并存储至目标可信存储模块,第一检验策略为第一应用对第二应用进行远程证明时所使用的策略,包括校验内容、校验逻辑等信息。
当第一应用和/或第二应用为开源应用时,还会将第一应用和/或第二应用的应用代码以源码或镜像等方式上传至公开地址,以供用户活其他开发者对代码进行审核并复现度量值。
当第一应用想要对第二应用进行远程证明时,第一应用可生成第一请求值发送至第二应用,从而向第二应用发起远程证明请求。其中,第一请求值可以是第一应用所生成的随机数。
第二应用接收第一应用发送的第一请求值之后,基于第一应用发起的远程证明请求,生成第一远程证明报告、密钥对以及附加信息,将第一远程证明报告、密钥对中的公钥以及附加信息作为第一证明响应返回给第一应用。第一应用从目标可信存储模块中获取第二应用上传的应用信息,即第一证明证据;同时,第一应用还从目标可信存储模块中获取第一应用的第一检验策略。
之后,第一应用将第一检验策略、第二应用的应用信息、第一远程证明报告、附加信息作为输入,调用目标可信存储模块上的智能合约,通过证明服务进行验证,返回证明结果。
在这个过程中,基于第一检验策略的校验内容、校验逻辑等信息,第一应用首先验证第一远程证明报告是否为符合预设条件的证明报告,从而确定第一远程证明报告是否是运行在可信执行环境中的可信应用生成的远程证明报告;在证明该报告符合预设条件后,解析该第一远程证明报告获取第一远程证明中的应用度量值信息,验证该应用度量值信息与第一证明证据中的基准应用度量值信息是否匹配,验证从第一远程证明报告获取的第一信息与附加信息是否一致,并为第一应用返回第一远程证明结果。
当第一远程证明结果为验证通过时,第一应用同样生成密钥对、第二远程证明报告以及附加信息作为第二证明响应发送给第二应用。
第二应用采用同样的方法对第一应用进行远程证明,包括:第二应用从目标可信存储模块中获取第一应用上传的应用信息,即第二证明证据;同时,第二应用还从目标可信存储模块中获取第二应用的第二检验策略。之后,第二应用将第二检验策略、第一应用的应用信息、第二远程证明报告、附加信息作为输入,调用目标可信存储模块上的智能合约,通过证明服务进行验证,返回第二远程证明结果。
若第二远程证明结果也为验证通过时,则第一应用和应用之间的双向远程证明通过,第一应用和第二应用均基于己方的私钥和对方的公钥计算出会话密钥,且两者计算出的会话密钥是相同的,这样,第一应用和第二应用即可基于该会话密钥对二者之间的交互数据进行加密保护。
若应用更新时,以第二应用更新为例:第二应用将更新后获得的新的应用度量值信息上传并存储至目标可信存储模块;当第一应用对第二应用进行远程证明时,会从目标可信存储模块中获取到第二应用最新的应用度量值信息作为基准值,再与从第二应用获取的远程证明报告中的应用度量值信息进行比较,实现第一应用对第二应用的远程证明。
若有新的可信应用加入时,以新增的第三应用为例:第三应用开发完成后,即将自己的应用度量值信息上传并存储至目标可信存储模块。当第一应用需要对第三应用进行远程证明或者需要更新对该应用的校验方式时,可以由开发者更新第一应用的第一检验策略,在第一检验策略加入对第三应用的检验策略,并将新的第一检验策略上传至目标可信存储模块。第一应用对第三应用进行远程证明时,可从目标可信存储模块中获取最新的第一检验策略以及第三应用的应用度量值信息,以对从第三应用获取的远程证明报告进程验证,从而获得第一应用对第三应用的远程证明结果。
可以理解的是,在使用本公开中各个实施例的技术方案之前,均会通过恰当的方式对所涉及的个人信息的类型、使用范围、使用场景等告知用户,并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确的提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主的选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定的实现方式,响应于接受到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其他满足相关法律法规的方式也可应用于本公开的实现方式中。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种远程证明装置,该远程证明装置包括第一应用,所述第一应用运行于第一可信执行环境中。
参考图4,所述装置,包括:
请求模块11,被配置为:向第二应用发起远程证明请求,所述第二应用运行于第二可信执行环境中;
返回模块13,被配置为:获取所述第二应用返回的第一证明响应;
获取模块15,被配置为:从目标可信存储模块获取所述第二应用的第一证明证据,所述第一证明证据通过所述第二应用上传并存储于所述目标可信存储模块中;
证明模块17,被配置为:基于所述第一证明响应和所述第一证明证据进行远程证明,获得针对所述第二应用的第一远程证明结果。
在一些实施例中,所述第一证明响应包括第一远程证明报告,所述第一远程证明报告基于所述远程证明请求生成。
在一些实施例中,所述第一证明证据包括所述第二应用的基准应用度量值信息,所述基准应用度量值信息基于所述第二应用在所述第二可信执行环境中的创建或更新生成并上传至所述目标可信存储模块。
在一些实施例中,所述证明模块17,还被配置为:
判断所述第一远程证明报告是否符合预设条件;
响应于所述第一远程证明报告符合预设条件,基于所述第一远程证明报告获取所述第二应用的应用度量值信息,对所述基准应用度量值信息和所述应用度量值信息进行验证;
响应于所述基准应用度量值信息和所述应用度量值信息匹配,确定所述第一远程证明结果为证明通过;
响应于所述基准应用度量值信息和所述应用度量值信息不匹配,确定所述第一远程证明结果为证明不通过。
在一些实施例中,所述基于所述第一证明响应和所述第一证明证据进行远程证明之前,所述装置,还被配置为:获取所述第一证明响应中的附加信息;基于所述第一远程证明报告获取第一信息,基于所述附加信息和所述第一信息确定所述第一远程证明报告与所述第二应用的关联关系。
在一些实施例中,所述装置,还被配置为:从目标可信存储模块获取所述第一应用的第一检验策略;所述第一检验策略通过所述第一应用上传并存储于所述目标可信存储模块,所述第一检验策略用于所述第一应用对其他应用的远程证明,所述其他应用包括所述第二应用;
所述证明模块17,还被配置为:基于所述第一检验策略对所述第一证明响应和所述第一证明证据进行验证。
在一些实施例中,所述装置,还被配置为:将证明服务设置于所述目标可信存储模块的智能合约中;
所述证明模块17,还被配置为:通过所述智能合约基于所述第一检验策略对所述第一证明响应和所述第一证明证据进行验证。
在一些实施例中,所述第一证明证据包括以下至少之一:
所述第二应用的应用标识信息;
所述第二应用的应用版本信息;
所述第二应用的至少一个远程证明类型;
所述第二应用的至少一个应用度量值信息,所述应用度量值信息与所述远程证明类型关联。
在一些实施例中,响应于所述第一远程证明结果为证明通过,所述装置,还被配置为:
生成第二证明响应并发送至所述第二应用,以使所述第二应用执行以下步骤:
从目标可信存储模块获取所述第一应用的第二证明证据,所述第二证明证据通过所述第一应用上传并存储于所述目标可信存储模块中;
基于所述第二证明响应和所述第二证明证据进行远程,获得针对所述第一应用的第二远程证明结果。
在一些实施例中,响应于所述第二远程证明结果为证明通过,所述装置,还被配置为:
获取所述第二应用的公钥,基于所述第一应用的私钥和所述第二应用的公钥生成第一会话密钥,基于所述第一会话密钥与所述第二应用通信;以及,
使所述第二应用获取所述第一应用的公钥,基于所述第二应用的私钥和所述第一应用的公钥生成第二会话密钥,基于所述第二会话密钥与所述第一应用通信;
其中,所述第一会话密钥与所述第二会话密钥相同。
在一些实施例中,所述装置,还被配置为:
响应于所述第一应用和/或所述第二应用为开源应用,将所述第一应用和/或所述第二应用的应用代码上传并存储至公开地址。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的远程证明方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的远程证明方法。
图5示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的远程证明方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的远程证明方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的远程证明方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (14)

1.一种远程证明方法,应用于第一应用,所述第一应用运行于第一可信执行环境中;所述方法包括:
向第二应用发起远程证明请求,所述第二应用运行于第二可信执行环境中;
获取所述第二应用返回的第一证明响应;
从目标可信存储模块获取所述第二应用的第一证明证据,所述第一证明证据通过所述第二应用上传并存储于所述目标可信存储模块中;
基于所述第一证明响应和所述第一证明证据进行远程证明,获得针对所述第二应用的第一远程证明结果。
2.根据权利要求1所述的方法,其中,所述第一证明响应包括第一远程证明报告,所述第一远程证明报告基于所述远程证明请求生成。
3.根据权利要求2所述的方法,其中,所述第一证明证据包括所述第二应用的基准应用度量值信息,所述基准应用度量值信息基于所述第二应用在所述第二可信执行环境中的创建或更新生成并上传至所述目标可信存储模块。
4.根据权利要求3所述的方法,其中,所述基于所述第一证明响应和所述第一证明证据进行远程证明,获得针对所述第二应用的第一远程证明结果,包括:
判断所述第一远程证明报告是否符合预设条件;
响应于所述第一远程证明报告符合预设条件,基于所述第一远程证明报告获取所述第二应用的应用度量值信息,对所述基准应用度量值信息和所述应用度量值信息进行验证;
响应于所述基准应用度量值信息和所述应用度量值信息匹配,确定所述第一远程证明结果为证明通过;
响应于所述基准应用度量值信息和所述应用度量值信息不匹配,确定所述第一远程证明结果为证明不通过。
5.根据权利要求2所述的方法,其中,所述基于所述第一证明响应和所述第一证明证据进行远程证明之前,所述方法还包括:
获取所述第一证明响应中的附加信息;
基于所述第一远程证明报告获取第一信息,基于所述附加信息和所述第一信息确定所述第一远程证明报告与所述第二应用的关联关系。
6.根据权利要求1所述的方法,还包括:
从目标可信存储模块获取所述第一应用的第一检验策略;所述第一检验策略通过所述第一应用上传并存储于所述目标可信存储模块,所述第一检验策略用于所述第一应用对其他应用的远程证明,所述其他应用包括所述第二应用;
所述基于所述第一证明响应和所述第一证明证据进行远程证明,包括:
基于所述第一检验策略对所述第一证明响应和所述第一证明证据进行验证。
7.根据权利要求6所述的方法,还包括:将证明服务设置于所述目标可信存储模块的智能合约中;
所述基于所述第一证明响应和所述第一证明证据进行验证,包括:
通过所述智能合约基于所述第一检验策略对所述第一证明响应和所述第一证明证据进行验证。
8.根据权利要求1所述的方法,其中,所述第一证明证据包括以下至少之一:
所述第二应用的应用标识信息;
所述第二应用的应用版本信息;
所述第二应用的至少一个远程证明类型;
所述第二应用的至少一个应用度量值信息,所述应用度量值信息与所述远程证明类型关联。
9.根据权利要求1-8任一项所述的方法,其中,响应于所述第一远程证明结果为证明通过,所述方法还包括:
生成第二证明响应并发送至所述第二应用,以使所述第二应用执行以下步骤:
从目标可信存储模块获取所述第一应用的第二证明证据,所述第二证明证据通过所述第一应用上传并存储于所述目标可信存储模块中;
基于所述第二证明响应和所述第二证明证据进行远程,获得针对所述第一应用的第二远程证明结果。
10.根据权利要求9所述的方法,其中,响应于所述第二远程证明结果为证明通过,所述方法还包括:
获取所述第二应用的公钥,基于所述第一应用的私钥和所述第二应用的公钥生成第一会话密钥,基于所述第一会话密钥与所述第二应用通信;以及,
使所述第二应用获取所述第一应用的公钥,基于所述第二应用的私钥和所述第一应用的公钥生成第二会话密钥,基于所述第二会话密钥与所述第一应用通信;
其中,所述第一会话密钥与所述第二会话密钥相同。
11.根据权利要求1所述的方法,还包括:
响应于所述第一应用和/或所述第二应用为开源应用,将所述第一应用和/或所述第二应用的应用代码上传并存储至公开地址。
12.一种远程证明装置,包括第一应用,所述第一应用运行于第一可信执行环境中;所述装置还包括:
请求模块,被配置为:向第二应用发起远程证明请求,所述第二应用运行于第二可信执行环境中;
返回模块,被配置为:获取所述第二应用返回的第一证明响应;
获取模块,被配置为:从目标可信存储模块获取所述第二应用的第一证明证据,所述第一证明证据通过所述第二应用上传并存储于所述目标可信存储模块中;
证明模块,被配置为:基于所述第一证明响应和所述第一证明证据进行远程证明,获得针对所述第二应用的第一远程证明结果。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至11任一项所述的远程证明方法。
14.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1至11任一项所述的远程证明方法。
CN202311523826.1A 2023-11-15 2023-11-15 远程证明方法、装置、电子设备及存储介质 Pending CN117579331A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311523826.1A CN117579331A (zh) 2023-11-15 2023-11-15 远程证明方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311523826.1A CN117579331A (zh) 2023-11-15 2023-11-15 远程证明方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117579331A true CN117579331A (zh) 2024-02-20

Family

ID=89894710

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311523826.1A Pending CN117579331A (zh) 2023-11-15 2023-11-15 远程证明方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117579331A (zh)

Similar Documents

Publication Publication Date Title
US11386017B2 (en) Technologies for secure authentication and programming of accelerator devices
CN110011801B (zh) 可信应用程序的远程证明方法及装置、电子设备
CN109313690B (zh) 自包含的加密引导策略验证
JP6991431B2 (ja) ホストシステムとデータ処理アクセラレータの間の通信を保護するための方法およびシステム
US9871821B2 (en) Securely operating a process using user-specific and device-specific security constraints
US10437985B2 (en) Using a second device to enroll a secure application enclave
EP3274897B1 (en) System and method for managing installation of an application package requiring high-risk permission access
CN111542820B (zh) 用于可信计算的方法和装置
US10135828B2 (en) Technologies for secure server access using a trusted license agent
EP3061027B1 (en) Verifying the security of a remote server
US9246678B2 (en) Secure cloud storage and encryption management system
JP5497171B2 (ja) セキュア仮想マシンを提供するためのシステムおよび方法
CN105164633B (zh) 由可信提供商进行的配置和验证
CN109074449A (zh) 在安全飞地中灵活地供应证明密钥
US20140380058A1 (en) Process Authentication and Resource Permissions
CN103718183A (zh) 软件运行时出处
US10721076B2 (en) Method, device, terminal, and server for a security check
CN112262546A (zh) 用于数据处理加速器的密钥分配和交换的方法和系统
EP3794477B1 (en) Method and system for validating kernel objects to be executed by a data processing accelerator of a host system
US10771462B2 (en) User terminal using cloud service, integrated security management server for user terminal, and integrated security management method for user terminal
CN112765637A (zh) 数据处理方法、密码服务装置和电子设备
EP3048553B1 (en) Method for distributing applets, and entities for distributing applets
JP2023525576A (ja) ソフトウェア更新のための認証キーの制御範囲
EP3811271B1 (en) A data processing accelerator having a local time unit to generate timestamps
US20240113898A1 (en) Secure Module and Method for App-to-App Mutual Trust Through App-Based Identity

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