CN115051810B - 基于远程证明的接口型数字对象真实性验证方法及装置 - Google Patents
基于远程证明的接口型数字对象真实性验证方法及装置 Download PDFInfo
- Publication number
- CN115051810B CN115051810B CN202210696527.7A CN202210696527A CN115051810B CN 115051810 B CN115051810 B CN 115051810B CN 202210696527 A CN202210696527 A CN 202210696527A CN 115051810 B CN115051810 B CN 115051810B
- Authority
- CN
- China
- Prior art keywords
- data
- api
- execution
- target data
- executable file
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例提供了一种基于远程证明的接口型数字对象真实性验证方法及装置,包括:数据供给端接收数据使用端发送的数据获取请求;响应于数据获取请求,执行数据获取请求所指示的目标数据API,并利用可信测量引擎对目标数据API的可执行文件、执行过程以及执行结果进行测量,得到测量结果;基于测量结果以及可信测量引擎的数据签名,生成数据来源真实性证明报告;向数据使用端返回执行结果和数据来源真实性证明报告。数据使用端接收数据供给端返回的执行结果和证明报告;基于预先计算获取的合法测量结果对证明报告中的相关内容进行验证,以确保数据API的可执行文件、执行过程以及执行结果的完整性,从而保障所获得的共享数据本身的正确性和真实性。
Description
技术领域
本发明属于数据共享技术领域,特别是涉及一种基于远程证明的接口型数字对象真实性验证方法及装置。
背景技术
数联网是在“物理/机器”互联网之上的“虚拟/数据”网络,其通过数字对象(Digital Object,DO)模型将互联网中的数据资源通过统一的形式进行建模和描述,从而连接异构数据平台和系统。通过基于数联网的数字对象交换,可以实现对数字对象中数据实体的可信共享。
接口型数字对象是指数据实体为某个数据接口(即数据API)的访问方式的数字对象。在使用接口型数字对象进行数据共享时,数据使用端需要对其中的数据API进行二次访问才能获得所需的共享数据。由于该数据API的执行响应过程发生在不可信的数据供给端,不受数联网相关机制的保护,其返回的数据结果将可能存在真实性问题,即数据在产生或传递的过程中可能受到篡改。
对于该问题,现有工作通常采用分布式账本(Distributed Ledger)技术和预言机(Oracle)技术来进行改善。然而,分布式账本技术仅能够保障数据在存储到其中后不被篡改,预言机技术则仅能够保障使用者如实的获取到数据供给端所提供的数据,二者都无法保障数据供给端所提供数据的真实性。也就是说,一旦数据供给端所提供的数据(即数据API的执行结果)本身就是受到了篡改的恶意数据,那么预言机所给出的数据与分布式账本中所存储的数据都将会是该恶意数据。
发明内容
为克服相关技术中存在的问题,本发明提供一种基于远程证明的接口型数字对象真实性验证方法及装置。
第一方面,本发明提供了一种基于远程证明的接口型数字对象真实性验证方法,应用于数据供给端,所述方法包括:
接收数据使用端发送的数据获取请求;
响应于所述数据获取请求,执行所述数据获取请求所指示的目标数据API,并基于所述目标数据API的可执行文件,利用可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量,得到测量结果;所述目标数据API用于提供所述数据获取请求所请求的共享数据;
基于所述测量结果以及所述可信测量引擎的数据签名,为所述共享数据生成数据来源真实性证明报告;
向所述数据使用端返回所述目标数据API的执行结果和所述数据来源真实性证明报告;所述执行结果包括所述共享数据,所述数据使用端基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。
可选的,所述测量结果包括可执行文件测量值、执行过程测量值以及执行结果测量值;所述基于所述目标数据API的可执行文件,利用可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量,得到测量结果,包括:
基于所述可信测量引擎计算所述目标数据API的可执行文件的哈希值,得到所述可执行文件测量值;
基于所述可信测量引擎在执行所述目标数据API过程中,计算所述目标数据API中基本块执行序列的累积哈希值,得到所述执行过程测量值;
基于所述可信测量引擎计算所述执行结果的哈希值,得到所述执行结果测量值。
可选的,所述基于所述可信测量引擎在执行所述目标数据API过程中,计算所述目标数据API中基本块执行序列的累积哈希值,得到所述执行过程测量值,包括:
在所述目标数据API的执行过程中,基于所述目标数据API中基本块的执行序列,依次向所述可信测量引擎发送代表所述基本块的唯一基本块ID;所述目标数据API中包含多个所述基本块;
基于所述可信测量引擎根据所接收到的基本块ID依次更新代表所述基本块的执行序列的累计哈希值,将所述累积哈希值确定为所述执行过程测量值。
可选的,所述目标数据API的可执行文件的入口处设置有第一插桩代码,所述第一插桩代码用于触发所述可信测量引擎计算所述目标数据API的可执行文件的哈希值;
所述目标数据API的可执行文件中每个基本块的入口处设置有第二插桩代码,所述第二插桩代码用于触发所述可信测量引擎在执行所述目标数据API过程中,计算所述目标数据API中基本块执行序列的累积哈希值;
所述目标数据API的可执行文件的出口处设置有第三插桩代码,所述第三插桩代码用于触发所述可信测量引擎所述可信测量引擎计算所述执行结果的哈希值。
第二方面,本发明提供了一种基于远程证明的接口型数字对象真实性验证方法,应用于数据使用端,所述方法包括:
向数据供给端发送数据获取请求;所述数据获取请求用于请求目标数据API提供的共享数据以及所述共享数据的数据来源真实性证明报告;
接收所述数据供给端响应于所述数据获取请求返回的所述数据来源真实性证明报告和所述目标数据API的执行结果;所述执行结果包括所述共享数据,所述数据来源真实性证明报告是所述数据供给端基于测量结果以及可信测量引擎的数据签名生成的,所述测量结果是利用所述可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量得到的;
基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。
可选的,所述方法还包括:
从所述数据供给端处获取所述目标数据API的可执行文件;
计算所述目标数据API的可执行文件的哈希值,得到所述可执行文件合法测量值;
计算所述目标数据API的可执行文件中所有合法执行路径的累积哈希值,得到所述执行过程合法测量值集合。
可选的,所述目标数据API中每个基本块的入口处设置有第四插桩代码,所述第四插桩代码用于提供各所述基本块的基本块ID;所述计算所述目标数据API的可执行文件中所有合法执行路径的累积哈希值,包括:
对于任一所述合法执行路径,基于所述第四插桩代码依次获取所述可执行文件中属于所述合法执行路径的基本块ID;
基于依次获取到的所述基本块ID,计算所述合法执行路径的累积哈希值。
可选的,所述数据来源真实性证明报告包括可执行文件测量值、执行过程测量值以及执行结果测量值,所述验证操作包括数据签名验证操作、可执行文件完整性验证操作、执行过程完整性验证操作以及执行结果完整性验证操作;所述基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据,包括:
利用生成所述数据签名时使用的私钥所对应的公钥,对所述可信测量引擎的数据签名进行验证,以实现所述数据签名验证操作;
将所述可执行文件合法测量值与所述可执行文件测量值进行比对,以实现所述可执行文件完整性验证操作;
将所述执行过程合法测量值集合与所述执行过程测量值进行比对,以实现所述执行过程完整性验证操作;
将所述目标数据API执行结果的哈希值与所述执行结果测量值进行比对,以实现所述执行结果完整性验证操作。
第三方面,本发明提供了一种基于远程证明的接口型数字对象真实性验证装置,应用于数据供给端,所述装置包括:
请求接收模块,用于接收数据使用端发送的数据获取请求;
第一测量模块,用于响应于所述数据获取请求,执行所述数据获取请求所指示的目标数据API,并基于所述目标数据API的可执行文件,利用可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量,得到测量结果;所述目标数据API用于提供所述数据获取请求所请求的共享数据;
报告生成模块,用于基于所述测量结果以及所述可信测量引擎的数据签名,为所述共享数据生成数据来源真实性证明报告;
数据返回模块,用于向所述数据使用端返回所述目标数据API的执行结果和所述数据来源真实性证明报告;所述执行结果包括所述共享数据,所述数据使用端基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。
第四方面,本发明提供了一种基于远程证明的接口型数字对象真实性验证装置,应用于数据使用端,所述装置包括:
请求发送模块,用于向数据供给端发送数据获取请求;所述数据获取请求用于请求目标数据API提供的共享数据以及所述共享数据的数据来源真实性证明报告;
数据接收模块,用于接收所述数据供给端响应于所述数据获取请求返回的所述数据来源真实性证明报告和所述目标数据API的执行结果;所述执行结果包括所述共享数据,所述数据来源真实性证明报告是所述数据供给端基于测量结果以及可信测量引擎的数据签名生成的,所述测量结果是利用所述可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量得到的;
第一验证模块,用于基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。
本发明实施例提供了一种基于远程证明的接口型数字对象真实性验证方法及装置,包括:接收数据使用端发送的数据获取请求;响应于数据获取请求,执行数据获取请求所指示的目标数据API,并基于目标数据API的可执行文件,利用可信测量引擎对目标数据API的可执行文件、执行过程以及执行结果进行测量,得到测量结果;基于测量结果以及可信测量引擎的数据签名,为共享数据生成数据来源真实性证明报告;向数据使用端返回目标数据API的执行结果和数据来源真实性证明报告。然后数据供给端通过对可执行文件、执行过程以及执行结果均进行测量,对数据的生成过程进行监控,使得在数据使用端获取共享数据时,通过对执行结果和数据来源真实性证明报告的验证,可以及时验证数据的生成过程是否受到篡改以及获取的执行结果是否正确,从而完善对数据供给端提供的共享数据的验证方式,使得可以较为全面的验证共享数据本身以及共享数据的数据生成过程的正确性、真实性,从而验证所提供的共享数据的真实性和正确性。这样,可以在所提供的共享数据的真实性和正确性通过验证的情况下,保障数据使用端通过接口型数字对象所获得的共享数据的真实性和正确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于远程证明的接口型数字对象真实性验证方法的步骤流程图;
图2是本发明实施例提供的另一种基于远程证明的接口型数字对象真实性验证方法的步骤流程图;
图3是本发明实施例提供的一种基于远程证明的接口型数字对象真实性验证方法的交互示意图;
图4是本发明实施例提供的一种数据供给端与数据使用端的交互模块示意图。
图5是本发明实施例提供的一种基于远程证明的接口型数字对象真实性验证装置的框图。
图6是本发明实施例提供的另一种基于远程证明的接口型数字对象真实性验证装置的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种基于远程证明的接口型数字对象真实性验证方法的步骤流程图,如图1所示,该方法可以包括:
步骤101、接收数据使用端发送的数据获取请求。
本发明实施例中,数据供给端接收数据使用端发送的数据获取请求,数据获取请求用于获取共享数据,具体可以通过数据使用端调用数据供给端对外公开的接口型数字对象中封装的可访问的数据API,获取返回的数据结果,所返回的数据结果就是数据使用端请求的共享数据。换言之,本发明中的数据获取请求即为数据API执行请求。本发明具体实现时,数据获取请求中可以携带有表明此次数据获取的过程及结果需要被证明的相关参数,如果数据获取请求中存在相关参数,则表明数据使用端要求数据供给端出具一个数据来源真实性证明报告,以供数据使用端后续进行验证,如果数据获取请求中不存在相关参数,则表明数据供给端仅需向数据使用端提供数据并不需要出具数据来源真实性证明报告。相关参数具体可以是一个布尔类型的变量,本公开实施例对此不作限定。
本发明实施例中,可选的,可以随数据获取请求附带一个随机数(Nonce),且每个数据获取请求附带的随机数只会使用一次,用于确保共享数据的验证结果不被重复使用以对抗重放攻击。
示例性的,当数据使用端想要获取真实的共享数据时,需要向数据供给端发送数据获取请求以及随机数(Nonce),该数据获取请求包含有表明此次数据获取的过程及结果需要被证明的相关参数,以调用数据供给端所提供的数据API,并要求数据供给端出具一个数据来源真实性证明报告以供其进行验证,同时数据使用端和数据供给端只需要记住各自使用过的随机数,每次请求中携带的随机数不能有重复数,如果请求中携带有以前使用过的随机数,则被认为是重放攻击,避免数据供给端重复利用验证结果。
步骤102、响应于所述数据获取请求,执行所述数据获取请求所指示的目标数据API,并基于所述目标数据API的可执行文件,利用可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量,得到测量结果;所述目标数据API用于提供所述数据获取请求所请求的共享数据。
本发明实施例中,一个数据供给端中可以包括多个对外公开的可访问的数据API。数据供给端将每个数据API封装为接口型数字对象以便数据使用端发现与访问。数据使用端通过数字对象标准访问协议获得接口型数字对象后,根据其中数据实体中的数据API信息对目标数据API发起数据获取请求。目标数据API可以为多个数据API的其中一个,具体的,数据获取请求中可以携带数据API指示信息,例如,数据API的标识,以使得数据供给端可以基于数据获取请求确定数据使用端本次所请求的目标数据API。通过执行目标数据API,所得到的执行结果即数据获取请求所请求的共享数据,即目标数据API用于提供所述数据获取请求所请求的共享数据。在在线证明阶段,数据供给端响应于数据使用端发送的数据获取请求,基于目标数据API的可执行文件,利用可信测量引擎对目标数据API的可执行文件、动态执行过程以及执行结果进行测量,得到对应的测量结果。其中,可执行文件指的是可以由操作系统进行加载执行的文件。例如:在windows操作系统下,可执行程序可以是.exe文件.sys文件.com等类型文件。
需要说明的是,可信测量引擎是一个可信组件,可以通过任一能够提供安全运行环境以进行认证服务的平台,其可以是与数据使用端相互独立的可信执行环境(TEE),也可以是集成到数据使用端中的一个可信平台模块TPM。本发明对此并不作具体限定。可选的,可信测量引擎可以是一个经过TEE标准认证,设置于Intel Software Guard Extensions(SGX)TEE内的程序。其中,TEE还可以是ARM TrustZone,AMD SEV等TEE,本发明对此没有限制。TEE是设置在数据供给端内的一个独立的安全运行环境,该运行环境与数据供给端的富执行环境(REE)逻辑隔离,数据供给端利用安全通信机制获得TEE中的可信测量引擎的服务。TEE提供了可信测量引擎的安全执行环境,同时也保证可信测量引擎的资源和数据的保密性、完整性和访问权限。换言之,在TEE内执行的所有操作均是可信的,如此,采用可信测量引擎进行测量得到的测量结果也是可信的。
步骤103、基于所述测量结果以及所述可信测量引擎的数据签名,为所述共享数据生成数据来源真实性证明报告。
本发明实施例中,可信测量引擎的数据签名可以通过可信测量引擎的私钥创建,私钥始终由可信测量引擎安全地保存。
本发明实施例中,数据来源真实性报告由通过可信测量引擎测量得到的测量结果以及可信测量引擎的数据签名组成。数据来源真实性报告用于验证共享数据生成过程以及共享数据本身的真实性。其中,数据签名还可以标记有数据来源真实性报告被签名的时间,如果数据来源真实性报告在签名时间后发生更改,则数据签名无效。本发明对此没有限制。
可选的,可信测量引擎可以利用TEE中受硬件保护的私钥对测量结果进行签名并生成数据来源真实性证明报告。不同的TEE对应不同的私钥,相应的,不同的TEE对应不同的与私钥配对的公钥,换言之,每个TEE具有唯一的私钥-公钥对。
步骤104、向所述数据使用端返回所述目标数据API的执行结果和所述数据来源真实性证明报告;所述执行结果包括所述共享数据,所述数据使用端基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。
本发明实施例中,在数据供给端生成共享数据的数据来源真实性报告后,数据供给端将目标数据API的执行结果(即数据获取请求所请求的共享数据)和数据来源真实性报告返回至数据使用端,以供数据使用端进行验证。
本发明实施例中,数据使用端在接收到数据来源真实性证明报告后,可以基于在数据使用端预先离线获取的可执行文件合法测量值和执行过程合法测量值集合与数据来源真实性证明报告中的测量结果进行比对,以验证共享数据的真实性以及数据生成过程的正确性和真实性。在通过验证的情况下,才使用该共享数据。
本发明实施例中,基于远程证明的接口型数字对象的真实性验证,具体可以理解为在基于接口型数字对象进行数据共享的过程中,结合远程证明技术,对数据供给端通过数据API的执行响应而提供的数据的真实性进行验证。其中,远程证明(Remote Attestation)指的是用于验证在远程设备上运行的软件的完整性的一类技术。通常,它被实现为一种质询-响应协议,在该协议中不受信任的设备(称为证明者,例如,数据供给端)可以向远程受信任方(称为验证者,例如,数据使用端)证明在设备上运行的软件是合法的并且没有受到恶意破坏。也就是说,本发明实施例中,数据供给端基于对目标数据API的可执行文件、执行过程以及执行结果进行测量的测量结果以及可信测量引擎的数据签名,生成数据来源真实性证明报告并提供给数据使用端,以供数据使用端进行验证的过程可以视为本发明实施例中进行远程证明的过程。
综上所述,本发明实施例提供了一种基于远程证明的接口型数字对象真实性验证方法,接收数据使用端发送的数据获取请求;响应于数据获取请求,执行数据获取请求所指示的目标数据API,并基于目标数据API的可执行文件,利用可信测量引擎对目标数据API的可执行文件、执行过程以及执行结果进行测量,得到测量结果;基于测量结果以及可信测量引擎的数据签名,为共享数据生成数据来源真实性证明报告;向数据使用端返回目标数据API的执行结果和数据来源真实性证明报告。然后,数据供给端通过对可执行文件、执行过程以及执行结果均进行测量,对数据的生成过程进行监控,使得在数据使用端获取共享数据时,通过对执行结果和数据来源真实性证明报告的验证,可以及时验证数据的生成过程是否受到篡改以及获取的执行结果是否正确,从而完善对数据供给端提供的共享数据的验证方式,使得可以较为全面的验证共享数据本身以及共享数据的数据生成过程的正确性、真实性,从而验证所提供的共享数据的真实性和正确性。这样,可以在所提供的共享数据的真实性和正确性通过验证的情况下,保障数据使用端通过接口型数字对象所获得的共享数据的真实性和正确性。
本发明实施例中,在数据的生成过程并未受到篡改以及数据执行结果并未受到篡改的情况下,代表数据生成过程是安全且可信的,数据使用端即可安全的使用获取到的共享数据。也就是说,本发明实施例中,通过提供基于对目标数据API的可执行文件、执行过程以及执行结果的测量结果生成的数据来源真实性证明报告,以供数据使用端验证,不但可以保障数据使用端如实的获得数据供给端所提供的数据,还可以保障数据供给端向数据使用端提供共享数据以及数据供给端生成共享数据的过程的正确性和安全性,进而可以提高共享数据的真实性。
可选的,本发明实施例中,所述测量结果包括可执行文件测量值、执行过程测量值以及执行结果测量值。
本发明实施例中,利用可信测量引擎对目标数据API的可执行文件进行测量得到可执行文件测量值;利用可信测量引擎对目标数据API的动态执行过程进行测量得到执行过程测量值;利用可信测量引擎对目标数据API的执行结果进行测量得到执行结果测量值。
可选的,步骤102具体可以包括以下步骤1021至步骤1023:
步骤1021、基于所述可信测量引擎计算所述目标数据API的可执行文件的哈希值,得到所述可执行文件测量值。
本发明实施例中,基于在目标数据API的可执行文件的入口处的第一插桩代码,触发可信测量引擎计算目标数据API的静态代码的哈希值,得到的哈希值即为可执行文件测量值。通过对目标数据API的可执行文件的测量,可以在后续验证中证明目标数据API的可执行文件是否被恶意修改过。
步骤1022、基于所述可信测量引擎在执行所述目标数据API过程中,计算所述目标数据API中基本块执行序列的累积哈希值,得到所述执行过程测量值。
本发明实施例中,基于在目标数据API的可执行文件中每个基本块的入口处的第二插桩代码,记录目标数据API在执行过程中遍历到的执行路径的累计哈希值,其实质为记录目标数据API中基本块的执行序列的累计哈希值,得到的累计哈希值即为执行过程测量值。基本块指的是一段不包含任何跳转类指令或跳转目标的代码,一个基本块中只存在一个入口和出口,即程序中不会有其它任何地方能绕开入口直接跳转至基本块中的非入口位置,且只有最后一条指令能导致进入到其它基本块去执行。
可选的,第二插桩代码可以包括用于向测量引擎报告基本块ID的代码。例如,第二插桩代码可以向可信测量引擎发送每个基本块的基本块ID,以触发可信测量引擎根据所接收到的基本块ID对目标数据API的执行过程的测量。
相应的,计算目标数据API的基本块执行序列的累计哈希值可以通过下述步骤实现:
步骤1022a、在所述目标数据API的执行过程中,基于所述目标数据API中基本块的执行序列,依次向所述可信测量引擎发送代表所述基本块的唯一基本块ID;所述目标数据API中包含多个所述基本块。
在所述目标数据API的执行过程中,每当执行进入一个新的基本块时,数据供给端将向可信测量引擎发送当前基本块对应的唯一基本块ID,基本块ID可以是预先分配的,用于表示所述基本块的标识,该基本块ID与基本块为一一对应关系,不同的基本块对应不同的ID,每一个基本块都具备唯一的基本块ID。如此,通过向可信测量引擎发送当前基本块对应的唯一基本块ID,即可在记录基本块的执行序列的过程中,只需按照顺序记录基本块对应的基本块ID,就能获知执行了哪些基本块,进而清楚的获知程序的执行情况。
步骤1022b、基于所述可信测量引擎根据所接收到的基本块ID依次更新代表所述基本块的执行序列的累计哈希值,将所述累积哈希值确定为所述执行过程测量值。
本发明实施例中,当可信测量引擎接收到数据供给端发送的当前基本块的基本块ID时,根据所接收到的基本块ID依次更新代表所述基本块的执行序列的累计哈希值,将该累计哈希值确定为执行过程测量值。
需要说明的是,该累计哈希值的计算公式可以是:hcur=H(hprev,idcur)。
其中,hcur为当前累计哈希值,hprev为先前累计哈希值,idcur为当前基本块ID。
示例性的,在执行一次目标数据API的过程中需要遍历N个基本块的情况下,当执行至目标数据API中第一个基本块时,先前累计哈希值hprev取0,可信测量引擎将接收到的数据供给端发送的第一个基本块的ID与0进行哈希计算,得到第一哈希值。当执行至目标数据API中第二个基本块时,可信测量引擎将接收到的数据供给端发送的第二个基本块的ID与第一哈希值进行哈希计算,得到第二哈希值。该第二哈希值即为当前的累计哈希值。以此类推,当执行至目标数据API中第N个基本块时,得到第N哈希值,该第N哈希值即为目标数据API中全部基本块的执行序列的累计哈希值,即执行过程测量值。
本发明实施例中,通过记录目标数据API中基本块的执行序列的累计哈希值,可以在后续验证中证明目标数据API的执行过程是否受到篡改。
本发明实施例中,上述累积哈希值的计算可以采用BLAKE2s库等方式,本发明实施例对此不做限制。
步骤1023、基于所述可信测量引擎计算所述执行结果的哈希值,得到所述执行结果测量值。
基于在目标数据API的可执行文件的出口处的第三插桩代码,计算目标数据API的执行结果的哈希值,得到的哈希值即为执行结果测量值。通过计算执行结果的哈希值,可以在后续验证中证明在数据供给端向数据使用端返回执行结果、数据使用端接收到执行结果前执行结果是否被篡改。
本发明实施例中,通过对目标数据API的可执行文件、执行过程以及执行结果进行测量,可以通过对上述测量结果的验证,证明目标数据API的可执行文件、执行过程以及执行结果是否受到过篡改,尤其通过对数据的生成过程进行监控,缓解了现有基于分布式账本和预言机的数据真实性保障技术方案中无法解决的数据来源造假的问题,并且保障数据供给端对外提供共享数据的过程的正确性和真实性,提高了共享数据的真实性和可靠性。
可选的,所述目标数据API的可执行文件的入口处设置有第一插桩代码,所述第一插桩代码用于触发所述可信测量引擎计算所述目标数据API的可执行文件的哈希值。
本发明实施例中,数据供给端在首次执行目标数据API前,对目标数据API的原始可执行文件进行测量逻辑的插桩,以便对目标数据API的可执行文件、执行过程以及执行结果进行测量。具体的,通过在目标数据API的原始可执行文件的入口处插入第一插桩代码,第一插桩代码用于触发可信测量引擎对目标数据API的可执行文件进行测量。
可选的,第一插桩代码可以包括用于初始化该次运行时测量的代码和触发可执行文件测量的代码。例如,第一插桩代码可以向可信测量引擎发送“Hello”消息(启动消息),以触发可信测量引擎对该次测量进行初始化并对目标数据API的可执行文件进行测量。
所述目标数据API的可执行文件中每个基本块的入口处设置有第二插桩代码,所述第二插桩代码用于触发所述可信测量引擎在执行所述目标数据API过程中,计算所述目标数据API中基本块执行序列的累积哈希值。
本发明实施例中,可以通过在目标数据API的原始可执行文件中每个基本块的入口处插入第二插桩代码,第二插桩代码用于触发所述可信测量引擎对所述目标数据API的执行过程进行测量,以获取所述执行过程测量值,其中,一个目标数据API中可以包含多个基本块。
可选的,目标数据API的可执行文件中每个基本块的入口处可以包括:目标数据API的可执行文件中每个基本块的行号之前。
所述目标数据API的可执行文件的出口处设置有第三插桩代码,所述第三插桩代码用于触发所述可信测量引擎计算所述执行结果的哈希值。
本发明实施例中,可以通过在目标数据API的原始可执行文件的出口处插入第三插桩代码,第三插桩代码用于触发可信测量引擎对目标数据API的执行结果进行测量。
可选的,第三插桩代码可以包括用于对目标数据API的执行结果进行测量的代码,结束本次测量的代码和获取可信测量引擎所生成的数据来源真实性证明报告并将其与目标数据API的执行结果一同返回至数据使用端的代码。例如,第三插桩代码可以用于在目标数据API的出口处发送“Goodbye”消息(终止消息),以触发可信测量引擎对目标数据API的执行结果进行测量,并且可信测量引擎基于得到的全部测量结果进行签名,生成数据来源真实性证明报告。
可选的,目标数据API的可执行文件可以是对相关应用程序进行人工手动分析得到,或是由程序厂商提供得到,本发明实施例对此不做限制。其中,所述可执行文件中应该包括目标数据API执行过程所涉及的全部类和方法,并应该对这些类和方法以及其中的入口方法和出口方法进行标注,所属标注可以是一个XML格式的配置文件,本发明实施例对此不做限制。
可选的,对目标数据API的可执行文件进行插桩的操作可以通过相应的插桩工具实现,插桩工具可以为用户提供访问指令,插桩工具可以包括:适用于二进制代码的Pin、DynamoRIO等,适用于Java Bytecode的ASM,适用于C#IL的Mono.Cecil等,本发明实施例对此不做限制。
可选的,上述插桩具体可以通过在目标数据API的入口处、目标数据API中每个基本块的入口处以及目标数据API的出口处三类插桩点的相应位置插入一段代表不同测量逻辑的探针代码来实现。其中,在一种实现方式中,可以是通过响应于用户在目标数据API的入口处、目标数据API中每个基本块的入口处以及目标数据API的出口处三类插桩点触发的插入第一插桩代码、第二插桩代码以及第三插桩代码的操作进行插桩的,也可以是插桩工具在接收到插桩指令后,自动执行插桩操作进行插桩的,本发明例对此不做限制。
在一种实现方式中,可以通过预设的字节码处理工具读取经过编译Java源文件得到的目标数据API对应的Java字节码文件,其中,预设的字节码处理工具可以为ASM工具。遍历目标数据API对应的Java字节码文件中的所有方法,利用ASM中用于插桩的API,对目标数据API对应的Java字节码片段的入口处和出口处以及所有基本块的入口处插入插桩代码。其中,插桩代码可以是预先提供给ASM中用于插桩的API的。例如,在入口方法的第一行代码前插入对应的插桩代码,在每个基本块的第一行代码前插入对应的插桩代码,在出口方法return语句之前插入对应的插桩代码。可以理解的是,上述步骤是针对Java实现的,对于其它编程语言开发的数据API的插桩实现方法与上述步骤类似,在此不再赘述。
本发明实施例中,通过设置在三类插桩点:目标数据API的入口处、目标数据API中每个基本块的入口处以及目标数据API的出口处的三种插桩代码:第一插桩代码、第二插桩代码以及第三插桩代码,可以使数据供给端在特定的执行阶段能够与可信测量引擎进行交互,以便可信测量引擎生成数据来源真实性证明报告以供后续数据使用端进行验证,降低了共享数据验证过程的复杂性并且降低了数据供给端构造数据来源真实性证明报告的开销。
图2是本公开实施例提供的另一种基于远程证明的接口型数字对象真实性验证方法的步骤流程图,该方法应用于数据使用端。如图2所示,该方法包括以下步骤:
步骤201、向数据供给端发送数据获取请求;所述数据获取请求用于请求目标数据API提供的共享数据以及所述共享数据的数据来源真实性证明报告。
本发明实施例中,数据使用端在需要从数据供给端获取共享数据的情况下,向数据供给端发送数据获取请求。具体来说,数据使用端可以通过数据供给端对外公开可访问的接口型数据对象中数据实体内的数据API访问信息,发起用于获取共享数据的数据获取请求。本发明具体实现时,数据获取请求中可以携带有表明此次数据获取的过程及结果需要被证明的相关参数,目的在于要求数据供给端出具一个数据来源真实性证明报告以供数据使用端进行验证,具体可以是一个布尔类型的变量,本公开实施例对此不作限定。
本发明实施例中,可选的,可以随数据获取请求附带一个随机数(Nonce),且每个数据获取请求附带的随机数只会使用一次,用于确保共享数据的验证结果不被重复使用以对抗重放攻击。
示例性的,当数据使用端想要获取真实的共享数据时,需要向数据供给端发送数据获取请求以及随机数(Nonce),该数据获取请求包含有表明此次数据获取的过程及结果需要被证明的相关参数,以调用数据供给端所提供的数据API,并要求数据供给端出具一个数据来源真实性证明报告以供其进行验证,同时避免数据供给端重复利用验证结果。
步骤202、接收所述数据供给端响应于所述数据获取请求返回的所述数据来源真实性证明报告和所述目标数据API的执行结果;所述执行结果包括所述共享数据,所述数据来源真实性证明报告是所述数据供给端基于测量结果以及可信测量引擎的数据签名生成的,所述测量结果是利用所述可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量得到的。
本发明实施例中,数据使用端接收数据供给端响应于上述数据获取请求返回的数据来源真实性证明报告和目标数据API的执行结果。目标数据API的执行结果可以是数据使用端所请求的共享数据。由于获取测量结果的过程与步骤102中获取测量结果的过程类似,生成数据来源真实性证明报告的过程与步骤103中生成数据来源真实性证明报告的过程类似,在此均不再赘述。
步骤203、基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。
本发明实施例中,数据使用端在接收到数据来源真实性证明报告后,可以基于在数据使用端预先离线获取的可执行文件合法测量值和执行过程合法测量值集合与数据来源真实性证明报告中的测量结果进行比对,以验证共享数据的真实性。
综上所述,本发明实施例提供了一种基于远程证明的接口型数字对象真实性验证方法,向数据供给端发送数据获取请求;接收所述数据供给端响应于所述数据获取请求返回的所述数据来源真实性证明报告和所述目标数据API的执行结果;基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。这样,使得在数据使用端获取共享数据时,不但可以保障数据使用端如实的获得数据供给端所提供的数据,还可以保障数据供给端向数据使用端提供的共享数据以及数据供给端生成共享数据的过程的正确性和真实性,进而可以提高共享数据的真实性和正确性。
可选的,所述基于远程证明的接口型数字对象真实性验证方法还可以包括以下步骤:
步骤204、从所述数据供给端处获取所述目标数据API的可执行文件。
本发明实施例中,数据使用端需要从数据供给端处获取目标数据API的可执行文件,其中,该目标数据API的可执行文件的入口处可以设置有第一插桩代码、每个基本块的入口处可以设置有第二插桩代码、出口处可以设置有第三插桩代码。
可选的,数据使用端还可以通过前述的插桩方法对目标数据API的原始可执行文件进行插桩,得到插桩后的目标数据API的可执行文件。
步骤205、计算所述目标数据API的可执行文件的哈希值,得到所述可执行文件合法测量值。
本发明实施例中,在离线预处理阶段,数据使用端对目标数据API的可执行文件进行测量,具体可以通过计算可执行文件的哈希值,得到可执行文件合法测量值,通过将可执行文件合法测量值与数据来源真实性证明报告中的可执行文件测量值进行比对,可以证明目标数据API的可执行文件是否被恶意修改过。
步骤206、计算所述目标数据API的可执行文件中所有合法执行路径的累积哈希值,得到所述执行过程合法测量值集合。
本发明实施例中,数据使用端分别计算目标数据API中从入口到出口间的所有合法执行路径的累积哈希值,得到执行过程合法测量值集合。通过将执行过程合法测量值集合与数据来源真实性证明报告中的执行过程测量值进行比对,可以证明目标数据API的执行过程是否受到攻击或篡改。其中,目标数据API中从入口到出口间的所有合法执行路径可以通过对目标API的可执行文件进行静态分析,生成静态控制流图。获取静态控制流图中存在的执行路径,从而得到该目标数据API对应的所有潜在合法执行路径。具体的,可以将目标API的可执行文件分成基本块,包括:将目标API的可执行文件分成至少一个类,将所述至少一个类分成至少一个函数,将所述至少一个函数分成至少一个基本块。所述基本块通过基本块ID加以标识。因此,静态控制流图中包括每个基本块的ID。
本发明实施例中,对目标API的可执行文件进行静态分析的方式可以包括:通过词法分析、语法分析、控制流分析、数据流分析等技术对目标API的可执行文件进行扫描,得到静态控制流图,本发明实施例对此不做限定。
需要说明的是,数据使用端与数据供给端测量使用的可执行文件相同。在一种实施方式中,数据使用端对目标数据API的可执行文件以及所有合法执行路径的测量均是基于插桩后的目标数据API进行的,由于数据供给端对目标数据API的可执行文件、执行过程同样是基于插桩后的目标数据API进行的,如此,便于在后续验证过程中与数据供给端得到的测量结果进行比对,同时,还可以避免目标数据API中的插桩代码受到攻击致被篡改,导致对共享数据真实性的验证过程受到影响。
需要说明的是,上述步骤204~206可以在步骤201之前执行,通过在离线阶段对目标数据API进行分析,可以便于对数据来源真实性证明报告进行验证,以判断数据来源的真实性。
可选的,所述目标数据API中每个基本块的入口处设置有第四插桩代码,所述第四插桩代码用于提供各所述基本块的基本块ID。
本发明实施例中,第四插桩代码可以与上述第二插桩代码相同,用于提供各基本块的基本块ID,以获取所述合法执行路径的累积哈希值。
相应的,步骤206具体可以包括以下步骤2061至步骤2062:
步骤2061、对于任一所述合法执行路径,基于所述第四插桩代码依次获取所述可执行文件中属于所述合法执行路径的基本块ID。
本发明实施例中,目标数据API包括有多个合法执行路径,对于任一合法执行路径,基于第四插桩代码根据静态控制流图依次提供目标数据API的可执行文件中属于所述合法执行路径的基本块ID,以向可信测量引擎提供基本块ID。其中,第四插桩代码可以包括用于向可信测量引擎报告基本块ID的代码。各个合法执行路径的基本块ID可以是由数据供给端按照所述合法执行路径的执行序列依次向可信测量引擎发送的。
步骤2062、基于依次获取到的所述基本块ID,计算所述合法执行路径的累积哈希值。
本发明实施例中,对于任一合法执行路径,基于依次获取到的基本块ID,按照基本块的执行序列计算该合法执行路径的累积哈希值。以此方法计算所有合法执行路径,得到多个累积哈希值,即为执行过程合法测量值集合。由于计算累积哈希值的过程与步骤1022a~1022b中计算累积哈希值的过程类似,在此不再赘述。
可选的,本发明实施例中,所述数据来源真实性证明报告包括可执行文件测量值、执行过程测量值以及执行结果测量值。
可选的,本发明实施例中,所述验证操作包括数据签名验证操作、可执行文件完整性验证操作、执行过程完整性验证操作以及执行结果完整性验证操作。
步骤203具体可以包括以下步骤2031至步骤2034:
步骤2031、利用生成所述数据签名时使用的私钥所对应的公钥,对所述可信测量引擎的数据签名进行验证,以实现所述数据签名验证操作。
本发明实施例中,数据来源真实性证明报告的数据签名由可信测量引擎的私钥创建,数据使用端利用与所述私钥对应的公钥对可信测量引擎的数据签名进行解密,已验证所述数据签名的真实性。当验证成功时,代表可以证明数据来源真实性证明的真实性。
可选的,数据使用端利用TEE与私钥对应的公钥进行验证,当验证通过,即可证明是由该TEE中的私钥进行的数据签名,证明数据来源真实性证明报告是由可信测量引擎生成的。
步骤2032、将所述可执行文件合法测量值与所述可执行文件测量值进行比对,以实现所述可执行文件完整性验证操作。
本发明实施例中,将数据使用端获得的可执行文件合法测量值与数据来源真实性证明报告中的可执行文件测量值进行比对,以实现可执行文件完整性验证操作。如果可执行文件合法测量值与可执行文件测量值相同,则代表目标数据API的可执行文件并未受到篡改。通过对可执行文件合法测量值与可执行文件测量值的比对,可以避免由于可执行文件遭受篡改导致共享数据出错的情况出现,验证了可执行文件的完整性。
步骤2033、将所述执行过程合法测量值集合与所述执行过程测量值进行比对,以实现所述执行过程完整性验证操作。
本发明实施例中,将数据使用端获得的执行过程合法测量值集合与数据来源真实性证明报告中的执行过程测量值进行比对,以实现执行过程完整性验证操作。如果执行过程测量值可以在执行过程合法测量值集合中的任一执行过程合法测量值相同,则代表目标数据API的执行过程并未受到篡改。通过对执行过程合法测量值集合与执行过程测量值进行比对,可以避免在动态执行过程中被攻击,导致控制流被篡改的情况出现,从而验证了动态执行过程的完整性。
步骤2034、将所述目标数据API执行结果的哈希值与所述执行结果测量值进行比对,以实现所述执行结果完整性验证操作。
本发明实施例中,数据使用端基于接收到的数据供给端发送的目标数据API的执行结果,即数据使用端所请求的共享数据,计算接收到的目标数据API的执行结果的哈希值,将该目标数据API的执行结果的哈希值与数据来源真实性证明报告中的执行结果测量值进行比对,以实现执行结果完整性验证操作。如果目标数据API的执行结果的哈希值与执行结果测量值相同,则代表在数据供给端得到执行结果到数据使用端接收到数据供给端发送的执行结果的过程中,目标数据API的执行结果并未受到篡改。通过对目标数据API的执行结果的哈希值与执行结果测量值进行比对,可以避免执行结果在数据供给端与数据使用端的交互过程中受到攻击以致被篡改。
需要注意的是,本发明实施例中,可以对数据供给端信息系统中的数据API进行测量逻辑的事先插桩,基于插入的插桩代码使得可信测量引擎可以对目标数据API的可执行文件、执行过程以及执行结果进行测量,从而使得数据API能够在执行时与可信测量引擎交互并生成真实性证明报告。换言之,本发明实施例可以基于应用软件层面的处理来完成上述过程,当然,也可以通过对软件执行环境层面(例如Java虚拟机)或者对计算机硬件层面(例如CPU)的处理来完成上述过程,本发明实施例对此不作限定。
示例性地,图3示出了本发明实施例提供的一种基于远程证明的接口型数字对象真实性验证方法的交互示意图。如图3所示出的,在数据共享的场景下,主要包括数据供给端和数据使用端两个参与者。其中,在离线预处理阶段,数据供给端首先对目标数据API进行插桩,数据使用端对已被插桩的目标数据API进行分析,得到可执行文件合法测量值与执行过程合法测量值集合。在在线证明阶段,接收到数据使用端在在线验证阶段发送的数据获取请求,数据供给端将在执行目标数据API的同时,利用可信测量引擎对目标数据API的可执行文件、执行过程以及执行结果分别进行测量并生成一份由上述三部分测量结果以及可信测量引擎的数据签名所组成的数据来源真实性证明报告以供数据使用端验证。数据使用端接收到数据供给端响应于数据获取请求返回的数据来源真实性证明报告和目标数据API的执行结果,将在在线验证阶段对所收到的数据来源真实性报告进行验证,包括签名验证、程序代码完整性验证、执行过程完整性验证以及执行结果完整性验证,从而判断数据来源的真实性和正确性。
图5是本发明实施例提供的一种基于远程证明的接口型数字对象真实性验证装置的框图,如图5所示,该装置50应用于数据供给端,具体可以包括:
请求接收模块501,被配置为接收数据使用端发送的数据获取请求;
第一测量模块502,被配置为响应于所述数据获取请求,执行所述数据获取请求所指示的目标数据API,并基于所述目标数据API的可执行文件,利用可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量,得到测量结果。
报告生成模块503,被配置为基于所述测量结果以及所述可信测量引擎的数据签名,为所述共享数据生成数据来源真实性证明报告;
数据返回模块504,被配置为向所述数据使用端返回所述目标数据API的执行结果和所述数据来源真实性证明报告。
本发明实施例提供的基于远程证明的接口型数字对象真实性验证装置,可以接收数据使用端发送的数据获取请求;响应于数据获取请求,执行数据获取请求所指示的目标数据API,并基于目标数据API的可执行文件,利用可信测量引擎对目标数据API的可执行文件、执行过程以及执行结果进行测量,得到测量结果;基于测量结果以及可信测量引擎的数据签名,为共享数据生成数据来源真实性证明报告;向数据使用端返回目标数据API的执行结果和数据来源真实性证明报告。然后数据供给端通过对可执行文件、执行过程以及执行结果均进行测量,对数据的生成过程进行监控,使得在数据使用端获取共享数据时,通过对执行结果和数据来源真实性证明报告的验证,从而可以及时验证数据的生成过程是否受到篡改以及获取的执行结果是否正确,从而完善对数据供给端提供的共享数据的验证方式,使得可以较为全面的验证共享数据本身以及共享数据的数据生成过程的正确性、真实性,从而验证所提供的共享数据的真实性和正确性。这样,可以在所提供的共享数据的真实性和正确性通过验证的情况下,保障数据使用端通过接口型数字对象所获得的共享数据的真实性和正确性。
可选的,本发明实施例中,所述第一测量模块502,还包括:
第一计算模块,被配置为基于所述可信测量引擎计算所述目标数据API的可执行文件的哈希值,得到所述可执行文件测量值。
第二计算模块,被配置为基于所述可信测量引擎在执行所述目标数据API过程中,计算所述目标数据API中基本块执行序列的累积哈希值,得到所述执行过程测量值。
第三计算模块,被配置为基于所述可信测量引擎计算所述执行结果的哈希值,得到所述执行结果测量值。
可选的,本发明实施例中,所述第二计算模块,还包括:
第一发送模块,被配置为在所述目标数据API的执行过程中,基于所述目标数据API中基本块的执行序列,依次向所述可信测量引擎发送代表所述基本块的唯一基本块ID。
第一计算子模块,被配置为基于所述可信测量引擎根据所接收到的基本块ID依次更新代表所述基本块的执行序列的累计哈希值,将所述累积哈希值确定为所述执行过程测量值。
图6是本发明实施例提供的另一种基于远程证明的接口型数字对象真实性验证装置的框图,如图5所示,该装置60应用于数据使用端,具体可以包括:
请求发送模块601,被配置为用于向数据供给端发送数据获取请求。
数据接收模块602,被配置为用于接收所述数据供给端响应于所述数据获取请求返回的所述数据来源真实性证明报告和所述目标数据API的执行结果。
第一验证模块603,被配置为用于基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。
本发明实施例提供的基于远程证明的接口型数字对象真实性验证装置,可以向数据供给端发送数据获取请求;接收所述数据供给端响应于所述数据获取请求返回的所述数据来源真实性证明报告和所述目标数据API的执行结果;基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。然后数据供给端通过对可执行文件、执行过程以及执行结果均进行测量,对数据的生成过程进行监控,使得在数据使用端获取共享数据时,通过对执行结果和数据来源真实性证明报告的验证,可以及时验证数据的生成过程是否受到篡改以及获取的执行结果是否正确,从而完善对数据供给端提供的共享数据的验证方式,使得可以较为全面的验证共享数据本身以及共享数据的数据生成过程的正确性和真实性。
可选的,本发明实施例中,所述装置还包括:
第一获取模块,被配置为从所述数据供给端处获取所述目标数据API的可执行文件。
第四计算模块,被配置为计算所述目标数据API的可执行文件的哈希值,得到所述可执行文件合法测量值。
第五计算模块,被配置为计算所述目标数据API的可执行文件中所有合法执行路径的累积哈希值,得到所述执行过程合法测量值集合。
可选的,本发明实施例中,第四计算模块,还包括:
第二获取模块,被配置为对于任一所述合法执行路径,基于所述第四插桩代码依次获取所述可执行文件中属于所述合法执行路径的基本块ID。
第二计算子模块,被配置为基于依次获取到的所述基本块ID,计算所述合法执行路径的累积哈希值。
可选的,本发明实施例中,所述第一验证模块603,还包括:
签名验证模块,被配置为利用生成所述数据签名时使用的私钥所对应的公钥,对所述可信测量引擎的数据签名进行验证,以实现所述数据签名验证操作。
代码验证模块,被配置为将所述可执行文件合法测量值与所述可执行文件测量值进行比对,以实现所述可执行文件完整性验证操作。
过程验证模块,被配置为将所述执行过程合法测量值集合与所述执行过程测量值进行比对,以实现所述执行过程完整性验证操作。
结果验证模块,被配置为将所述目标数据API执行结果的哈希值与所述执行结果测量值进行比对,以实现所述执行结果完整性验证操作。
示例性的,图4示出了本发明实施例提供的一种数据供给端与数据使用端的交互模块示意图。如图4所示出的,在一种实现方式中,首先,在离线预处理阶段,数据供给端通过数据API定位模块以及数据API插桩模块对数据API的可执行文件进行测量逻辑的插桩,数据使用端通过合法测量值分析模块得到可执行文件合法测量值和执行过程合法测量值集合。其次,在在线证明阶段,数据使用端通过数据真实性证明模块向数据供给端发送数据API执行请求(即数据获取请求)和真实性证明挑战,其中,真实性证明挑战可以是能够避免重放攻击的随机数。数据供给端接收数据使用端发送的数据API执行请求(即数据获取请求)和真实性证明挑战,通过数据API证明执行模块执行所述数据API,在此过程中,利用实现在TEE内的可信测量引擎通过静态代码测量模块、运行时控制流测量模块以及运行时数据结果测量模块对该数据API的程序代码、执行过程以及执行结果分别进行测量,并生成一份由上述三部分测量结果以及可信测量引擎的数据签名所组成的数据来源真实性证明报告以供数据使用端验证。最后,在在线验证阶段,数据供给端向数据使用端返回数据API执行结果以及数据来源真实性证明报告。数据使用端在接收到数据API执行结果以及数据来源真实性证明报告后,通过数据真实性证明验证模块对上述内容进行验证,从而判断数据来源的真实性。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明的排序设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种基于远程证明的接口型数字对象真实性验证方法,其特征在于,应用于数据供给端,所述方法包括:
接收数据使用端发送的数据获取请求;
响应于所述数据获取请求,执行所述数据获取请求所指示的目标数据API,并基于所述目标数据API的可执行文件,利用可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量,得到测量结果;所述目标数据API用于提供所述数据获取请求所请求的共享数据;
基于所述测量结果以及所述可信测量引擎的数据签名,为所述共享数据生成数据来源真实性证明报告;
向所述数据使用端返回所述目标数据API的执行结果和所述数据来源真实性证明报告;所述执行结果包括所述共享数据,所述数据使用端基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。
2.根据权利要求1所述的方法,其特征在于,所述测量结果包括可执行文件测量值、执行过程测量值以及执行结果测量值;所述基于所述目标数据API的可执行文件,利用可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量,得到测量结果,包括:
基于所述可信测量引擎计算所述目标数据API的可执行文件的哈希值,得到所述可执行文件测量值;
基于所述可信测量引擎在执行所述目标数据API过程中,计算所述目标数据API中基本块执行序列的累积哈希值,得到所述执行过程测量值;
基于所述可信测量引擎计算所述执行结果的哈希值,得到所述执行结果测量值。
3.根据权利要求2所述的方法,其特征在于,所述基于所述可信测量引擎在执行所述目标数据API过程中,计算所述目标数据API中基本块执行序列的累积哈希值,得到所述执行过程测量值,包括:
在所述目标数据API的执行过程中,基于所述目标数据API中基本块的执行序列,依次向所述可信测量引擎发送代表所述基本块的唯一基本块ID;所述目标数据API中包含多个所述基本块;
基于所述可信测量引擎根据所接收到的基本块ID依次更新代表所述基本块的执行序列的累计哈希值,将所述累积哈希值确定为所述执行过程测量值。
4.根据权利要求2或3所述的方法,其特征在于,
所述目标数据API的可执行文件的入口处设置有第一插桩代码,所述第一插桩代码用于触发所述可信测量引擎计算所述目标数据API的可执行文件的哈希值;
所述目标数据API的可执行文件中每个基本块的入口处设置有第二插桩代码,所述第二插桩代码用于触发所述可信测量引擎在执行所述目标数据API过程中,计算所述目标数据API中基本块执行序列的累积哈希值;
所述目标数据API的可执行文件的出口处设置有第三插桩代码,所述第三插桩代码用于触发所述可信测量引擎计算所述执行结果的哈希值。
5.一种基于远程证明的接口型数字对象真实性验证方法,其特征在于,应用于数据使用端,所述方法包括:
向数据供给端发送数据获取请求;所述数据获取请求用于请求目标数据API提供的共享数据以及所述共享数据的数据来源真实性证明报告;
接收所述数据供给端响应于所述数据获取请求返回的所述数据来源真实性证明报告和所述目标数据API的执行结果;所述执行结果包括所述共享数据,所述数据来源真实性证明报告是所述数据供给端基于测量结果以及可信测量引擎的数据签名生成的,所述测量结果是利用所述可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量得到的;
基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
从所述数据供给端处获取所述目标数据API的可执行文件;
计算所述目标数据API的可执行文件的哈希值,得到所述可执行文件合法测量值;
计算所述目标数据API的可执行文件中所有合法执行路径的累积哈希值,得到所述执行过程合法测量值集合。
7.根据权利要求6所述的方法,其特征在于,所述目标数据API中每个基本块的入口处设置有第四插桩代码,所述第四插桩代码用于提供各所述基本块的基本块ID;所述计算所述目标数据API的可执行文件中所有合法执行路径的累积哈希值,包括:
对于任一所述合法执行路径,基于所述第四插桩代码依次获取所述可执行文件中属于所述合法执行路径的基本块ID;
基于依次获取到的所述基本块ID,计算所述合法执行路径的累积哈希值。
8.根据权利要求5所述的方法,其特征在于,所述数据来源真实性证明报告包括可执行文件测量值、执行过程测量值以及执行结果测量值,所述验证操作包括数据签名验证操作、可执行文件完整性验证操作、执行过程完整性验证操作以及执行结果完整性验证操作;所述基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据,包括:
利用生成所述数据签名时使用的私钥所对应的公钥,对所述可信测量引擎的数据签名进行验证,以实现所述数据签名验证操作;
将所述可执行文件合法测量值与所述可执行文件测量值进行比对,以实现所述可执行文件完整性验证操作;
将所述执行过程合法测量值集合与所述执行过程测量值进行比对,以实现所述执行过程完整性验证操作;
将所述目标数据API执行结果的哈希值与所述执行结果测量值进行比对,以实现所述执行结果完整性验证操作。
9.一种基于远程证明的接口型数字对象真实性验证装置,其特征在于,应用于数据供给端,所述装置包括:
请求接收模块,用于接收数据使用端发送的数据获取请求;
第一测量模块,用于响应于所述数据获取请求,执行所述数据获取请求所指示的目标数据API,并基于所述目标数据API的可执行文件,利用可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量,得到测量结果;所述目标数据API用于提供所述数据获取请求所请求的共享数据;
报告生成模块,用于基于所述测量结果以及所述可信测量引擎的数据签名,为所述共享数据生成数据来源真实性证明报告;
数据返回模块,用于向所述数据使用端返回所述目标数据API的执行结果和所述数据来源真实性证明报告;所述执行结果包括所述共享数据,所述数据使用端基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。
10.一种基于远程证明的接口型数字对象真实性验证装置,其特征在于,应用于数据使用端,所述装置包括:
请求发送模块,用于向数据供给端发送数据获取请求;所述数据获取请求用于请求目标数据API提供的共享数据以及所述共享数据的数据来源真实性证明报告;
数据接收模块,用于接收所述数据供给端响应于所述数据获取请求返回的所述数据来源真实性证明报告和所述目标数据API的执行结果;所述执行结果包括所述共享数据,所述数据来源真实性证明报告是所述数据供给端基于测量结果以及可信测量引擎的数据签名生成的,所述测量结果是利用所述可信测量引擎对所述目标数据API的可执行文件、执行过程以及执行结果进行测量得到的;
第一验证模块,用于基于预先获取的可执行文件合法测量值和执行过程合法测量值集合以及所述数据来源真实性证明报告执行验证操作,以验证所述共享数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210696527.7A CN115051810B (zh) | 2022-06-20 | 2022-06-20 | 基于远程证明的接口型数字对象真实性验证方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210696527.7A CN115051810B (zh) | 2022-06-20 | 2022-06-20 | 基于远程证明的接口型数字对象真实性验证方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115051810A CN115051810A (zh) | 2022-09-13 |
CN115051810B true CN115051810B (zh) | 2023-07-25 |
Family
ID=83163024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210696527.7A Active CN115051810B (zh) | 2022-06-20 | 2022-06-20 | 基于远程证明的接口型数字对象真实性验证方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115051810B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110717181A (zh) * | 2019-09-09 | 2020-01-21 | 中国人民解放军战略支援部队信息工程大学 | 基于新型程序依赖图的非控制数据攻击检测方法及装置 |
CN113302893A (zh) * | 2019-01-08 | 2021-08-24 | 华为技术有限公司 | 用于信任验证的方法及装置 |
CN113343234A (zh) * | 2021-06-10 | 2021-09-03 | 支付宝(杭州)信息技术有限公司 | 对代码安全性进行可信检查的方法及装置 |
CN114365452A (zh) * | 2019-09-30 | 2022-04-15 | 英特尔公司 | 用于在边缘计算环境中证明对象的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11003764B2 (en) * | 2018-02-06 | 2021-05-11 | Jayant Shukla | System and method for exploiting attack detection by validating application stack at runtime |
-
2022
- 2022-06-20 CN CN202210696527.7A patent/CN115051810B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113302893A (zh) * | 2019-01-08 | 2021-08-24 | 华为技术有限公司 | 用于信任验证的方法及装置 |
CN110717181A (zh) * | 2019-09-09 | 2020-01-21 | 中国人民解放军战略支援部队信息工程大学 | 基于新型程序依赖图的非控制数据攻击检测方法及装置 |
CN114365452A (zh) * | 2019-09-30 | 2022-04-15 | 英特尔公司 | 用于在边缘计算环境中证明对象的方法和装置 |
CN113343234A (zh) * | 2021-06-10 | 2021-09-03 | 支付宝(杭州)信息技术有限公司 | 对代码安全性进行可信检查的方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于分层API调用的Android恶意代码静态描述方法;魏松杰;杨铃;;计算机科学(第01期);第161-164+185页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115051810A (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rahaman et al. | Cryptoguard: High precision detection of cryptographic vulnerabilities in massive-sized java projects | |
CN108259438B (zh) | 一种基于区块链技术的认证的方法和装置 | |
US8793800B2 (en) | Static analysis for verification of software program access to secure resources for computer systems | |
US20100082987A1 (en) | Transparent trust validation of an unknown platform | |
US20080244114A1 (en) | Runtime integrity chain verification | |
CN107133520B (zh) | 云计算平台的可信度量方法和装置 | |
CN110276198B (zh) | 一种基于概率预测的嵌入式可变粒度控制流验证方法及系统 | |
Conti et al. | RADIS: Remote attestation of distributed IoT services | |
EP3270319B1 (en) | Method and apparatus for generating dynamic security module | |
Afrose et al. | CryptoAPI-Bench: A comprehensive benchmark on Java cryptographic API misuses | |
JP2010508567A (ja) | コンピューティングデバイスにおけるマルウェアの無効化 | |
Chen et al. | {MAGE}: Mutual Attestation for a Group of Enclaves without Trusted Third Parties | |
US9665711B1 (en) | Managing and classifying states | |
CN113282946A (zh) | 基于高可信环境下数据访问过程的信息安全方法及系统 | |
Hu et al. | A probability prediction based mutable control-flow attestation scheme on embedded platforms | |
Berbecaru et al. | Counteracting software integrity attacks on IoT devices with remote attestation: a prototype | |
CN115051810B (zh) | 基于远程证明的接口型数字对象真实性验证方法及装置 | |
CN105873030A (zh) | 一种对终端应用进行副署签名的方法 | |
Sharif et al. | Understanding precision in host based intrusion detection: Formal analysis and practical models | |
Qin et al. | RIPTE: runtime integrity protection based on trusted execution for IoT device | |
KR101382549B1 (ko) | 모바일 환경에서 sns 콘텐츠의 사전 검증 방법 | |
Zhou et al. | RAitc: Securely auditing the remotely executed applications | |
CN115221051B (zh) | 一种用于数据api执行过程验证的程序插桩方法及装置 | |
Jurjens | Code security analysis of a biometric authentication system using automated theorem provers | |
WO2001037067A1 (en) | A method of providing secure linkage of program modules |
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 |