一种可信数据传输方法、装置及设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种可信数据传输方法、装置及设备。
背景技术
区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成。
分布式网络是区块链的基础设施,每个节点上产生的数据通过分布式网络广播到其他节点,其他节点通过工作量证明来验证数据的真实性。数据的传输,安全性和私密性都是非常重要的基础特征,尤其在金融领域,个人以及企业的资产数据,属于隐私数据,其安全性需要格外重视,如果随意将这些数据进行传输,将会对用户数据安全造成极大的安全隐患。然而,涉及到私密性很高的数据如果采用私网进行传输,可能会导致区块链失去意义,但如果使用区块链进行传输,数据又存在被泄露的风险。
因此,亟需提出一种可信数据传输方法,实现链下可信数据传输。
发明内容
本说明书实施例提供一种可信数据传输方法、装置及设备,以解决现有的数据传输方法中存在的数据传输不安全、不可信的问题。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的可信数据传输方法,包括:
获取数据需求方的数据使用请求;
获取数据持有方的授权信息;
基于所述授权信息生成数据授权使用声明;所述数据授权使用声明用于表示所述数据持有方授权所述数据需求方使用数据;
基于所述数据授权使用声明,获取初始数据;
对所述初始数据进行验证,得到验证通过后的目标数据;所述目标数据中携带有数据有效性声明;所述数据有效性声明用于表示所述目标数据的有效性;
将所述目标数据发送给所述数据需求方。
本说明书实施例提供的一种可信数据传输装置,包括:
数据使用请求获取模块,用于获取数据需求方的数据使用请求;
授权信息获取模块,用于获取数据持有方的授权信息;
数据授权使用声明生成模块,用于基于所述授权信息生成数据授权使用声明;所述数据授权使用声明用于表示所述数据持有方授权所述数据需求方使用数据;
初始数据获取模块,用于基于所述数据授权使用声明,获取初始数据;
目标数据获取模块,用于对所述初始数据进行验证,得到验证通过后的目标数据;所述目标数据中携带有数据有效性声明;所述数据有效性声明用于表示所述目标数据的有效性;
目标数据传输模块,用于将所述目标数据发送给所述数据需求方。
本说明书实施例提供的一种可信数据传输设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取数据需求方的数据使用请求;
获取数据持有方的授权信息;
基于所述授权信息生成数据授权使用声明;所述数据授权使用声明用于表示所述数据持有方授权所述数据需求方使用数据;
基于所述数据授权使用声明,获取初始数据;
对所述初始数据进行验证,得到验证通过后的目标数据;所述目标数据中携带有数据有效性声明;所述数据有效性声明用于表示所述目标数据的有效性;
将所述目标数据发送给所述数据需求方。
本说明书实施例提供的一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现一种可信数据传输方法。
本说明书一个实施例实现了能够达到以下有益效果:通过获取数据需求方的数据使用请求;获取数据持有方的授权信息;基于授权信息生成数据授权使用声明,基于所述数据授权使用声明,获取初始数据;对所述初始数据进行验证,得到验证通过后的目标数据;所述目标数据中携带有数据有效性声明;所述数据有效性声明用于表示所述目标数据的有效性;将所述目标数据发送给所述数据需求方。上述方法中,只有在获取数据授权使用声明之后,才能获取数据持有方的数据,即任何数据需求方在请求使用数据时,必须得到该数据的数据持有方的同意;传输给数据需求方的目标数据中携带有数据有效性声明,可以保证数据传输的有效性,以保证数据传输的安全性以及可信性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的一种可信数据传输方法流程图;
图2是本说明书实施例提供的指定安全应用程序时的可信数据传输方法流程图一;
图3是本说明书实施例提供的指定安全应用程序时的可信数据传输方法流程图二;
图4是本说明书实施例提供的未指定安全应用程序时的可信数据传输方法流程图;
图5是本说明书实施例提供的一种可信数据传输装置示意图;
图6是本说明书实施例提供的一种可信数据传输设备示意图。
具体实施方式
为使本说明书一个或多个实施例的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书一个或多个实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书一个或多个实施例保护的范围。
区块链是一个通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案,其具有去中心化、分布式存储、加密及可回溯的特性。由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成。
区块链由于其共识算法、加密算法等机制能够有效的进行数据资产类数据的管理,例如版权数据、合同数据、游戏道具等。
在金融领域,资产数据可以是属于普通个人或企业的数字财产,是一种能给企业及组织带来未来经济利益的数据资源。对于个人或企业来说,资产数据的保护都显得格外重要。在大数据的运行背景下,资产数据可以满足科研、教学的需求,也能够满足企业或个人使用数据进行相应的业务处理的需求。因此,企业与企业之间,企业与各个机构之间,以及企业/机构与个人之间,可以通过合作、交易等手段,获取彼此的资产数据。
但是在进行上述数据的传输时,由于数据的私密性,需要采用安全可信的方式进行传输。现有的实现中,涉及到私密性很高的数据需要进行传输时往往采用私网传输的方式,但是,采取私网传输的会导致区块链失去意义。可如果使用区块链网络进行传输,由于区块链的分布式网络中,每个节点上产生的数据都会通过分布式网络广播到其他节点,此时,就会存在传输过程中数据被泄露的风险。无法满足数据传输的安全性以及可信性。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
为了解决现有技术中的缺陷,本方案给出了以下实施例:
图1是本说明书实施例提供的一种可信数据传输方法流程图。从程序角度而言,流程的执行主体可以为搭载于应用服务器的程序或应用客户端。本实施例中,数据需要在多方之间共享、流转,数据的访问需要流程以及权限的管控。不同的参与方权限不同,权限管控需要灵活的机制且可跟踪、可审计。因此,需要一个能够统一管理数据传输流转的主体。
本实施例中的执行主体可以是一个部署在区块链链下的应用服务集群。该服务器集群中可以包括一个或多个应用服务,这些应用服务可以与区块链网络具有数据交互,该应用服务集群中可以部署分布式数字身份标识代理服务(Decentralized IdentifierService,简称DIS)、负责计算的应用服务器、授权服务合约等。
在一实施例中,负责对可信数据的传输与管理的主体还可以是隐私数据网络,该隐私数据网络就是该服务器集群,可以实现对可信数据的传输与管理。在实际应用中,也可以称作中转方或者代理服务方,后面的实施例中为了方便,执行主体统一用代理服务方进行说明。需要说明的是,该代理服务方属于区块链的授权服务方,属于可信服务,该可信服务能与区块链网络进行数据交互。
代理服务方在启动时,需要预设一些基础信息,主要可以包括:代理服务方的平台支持的数据类型,数据处理类型,安全应用程序的合约信息等;这些信息也可以开放给参与方。
如图1所示,该流程可以包括以下步骤:
步骤102:获取数据需求方的数据使用请求。
数据需求方也可以称作数据使用方,可以表示请求使用数据的用户,这里的用户可以是个人,也可以是企业、机构等组织。
数据使用请求可以只是一个请求指令,也可以是携带有其他信息的一条请求数据,该数据使用请求中可以包括请求的数据标识,数据类型等。在一些应用场景中,数据使用请求中还可以包括请求的数据的用途、需求方的用户标识、权限声明、请求的数据对应的数据类型等信息。对此,本实施例中不进行具体限定。数据类型可以表示不同机构提供的数据,也可以表示同一机构提供的类型不同的数据。例如:从银行中获取个人的工资流水、从房产中心获取个人的房产信息、从征信机构获取个人的征信报告,其中,工资流水、征信报告、房产信息就是三种不同类型的数据。不同的数据类型可以对应不同的数据采集方式或数据处理方式。
数据需求方想要使用数据持有方的数据时,可以向中间管理机构(也可以称作代理服务方)发送数据使用请求,代理服务方可以将该数据使用请求发送给数据持有方,需要说明的是,数据持有方可以有一个,也可以有多个。
另外,本实施例中传输的数据可以是可信数据,该可信数据可以指的是存储在可信设备上的数据。这些数据可以是个人的病历数据、照片视频、小说文档等。也可以是用来辅助办理业务的数据,比如:个人征信记录、流水数据等。可信数据还可以是各个公司具体的年度经营状况、资产收入、公司报表等数据。其中,可信设备可以包括各个银行、房产局等权威机构的区块链网络。也可以包括可信U盘、可信存储器、可信终端等硬件。
数据需求方请求的数据可以是数据请求方的原始数据,也可以是对原始数据进行处理后的数据,对此,本说明书实施例不作具体限定。
步骤104:获取数据持有方的授权信息。
数据持有方也可以称作数据属主方、数据所有方等。可以表示具有数据需求方所请求的数据的用户。
授权信息可以仅是一条表示同意或授权数据需求方使用数据的指令,也可以包含数字签名、授权声明或其他信息。本方案中,数据持有方的授权信息可以包括数据持有方的数字签名或数据持有方指定的数据使用范围等信息。
需要说明的是,代理服务方的应用系统中可以部署有事件监控的服务器,当监控到系统中有流程事件的发生时,可以通知系统有待授权事件,代理服务方向数据持有方转发数据使用请求。
步骤106:基于所述授权信息生成数据授权使用声明;所述数据授权使用声明用于表示所述数据持有方授权所述数据需求方使用数据。
代理服务方的系统中还可以部署有授权服务合约,授权服务合约中至少可以包括数据使用时应该执行的审批流程,比如:需要经过哪些对象的审批,审批之后需要进行签名等等。该授权服务合约可以是代理服务方设定的预设程序,对于任何权数据使用请求都可以触发相应的授权服务合约。
该授权服务合约既可以是设置在代理服务方系统中的程序,也可以是设置在区块链网络中的程序,其中可以由数据持有方设定权限审批流程,然后发送到区块链中进行共识后存储在各个节点的区块上。任何节点作为数据需求方都可以触发该授权服务合约。
代理服务方在接收到数据持有方的授权信息之后,可以生成数据授权使用声明。其中,数据授权使用声明也可以是区块链中的可验证声明(Verifiable Claim,VC),可以称作数据授权使用可验证声明(数据授权使用VC),数据授权使用声明可以表示数据持有方授权数据需求方使用数据。数据授权使用声明中可以包括授权数据的审批记录,比如:审批者的签名,还可以包括初始数据的数据获取地址等。即该VC中可以包括各个审批方的数字签名。任何用户都可以根据权限审批方的公钥对该VC进行验证。
步骤108:基于所述数据授权使用声明,获取初始数据。
代理服务方在获取到数据授权使用VC之后,可以根据数据授权使用VC到数据源处获取数据,此时,数据授权使用VC相当于一个获取数据的凭证。其中,数据源可以是数据授权VC中包含的数据获取地址对应的数据获取端口。
步骤110:对所述初始数据进行验证,得到验证通过后的目标数据;所述目标数据中携带有数据有效性声明;所述数据有效性声明用于表示所述目标数据的有效性。
在实际应用中,当代理服务方获取到初始数据之后,需要对初始数据的准确性以及有效性进行验证。此时,可以验证获取到的初始数据是否是数据需求方请求的数据,获取的数据是否是经过数据持有方授权同意的数据,以及初始数据。
即上述方法步骤,还可以包括:
获取所述数据需求方采用所述数据类型对应的数据采集方式获取初始数据;
验证所述初始数据的有效性;
若所述初始数据有效,则颁发数据有效性声明;
将携带有所述数据有效性声明的所述目标数据发送给所述数据需求方。
其中,验证所述初始数据的有效性,具体可以包括:
比对所述初始数据是否与所述数据使用请求中包括所需数据的数据类型一致,得到比对结果;
当所述比对结果表示所述初始数据的数据类型与所述数据使用请求中包括所需数据的数据类型一致,则验证所述初始数据是否具有所述数据持有方的数字签名;
当所述初始数据具有所述数据持有方的数字签名,则证明所述初始数据有效,生成数据有效性声明。
数据有效性声明中至少可以包括:所述初始数据的存储地址、所述初始数据的数据类型、所述初始数据的有效期以及所述初始数据的数据采集方式。其中,初始数据的有效期可以表示该初始数据的有效期。具体地,数据的有效期可以是由数据权限审批方来注明,也可以是由代理服务方来注明,还可以是由数据持有方来注明。
有效期的长短可以根据数据需求方注明的使用数据的用途进行确定,也可以根据数据需求方请求的数据的数据类型进行确定。
代理服务方在验证初始数据有效后,会将初始数据的数据类型、存储地址、有效期以及初始数据的数据采集方式等写入数据有效性声明中。
数据的数据类型可以与数据采集方式对应,在具体设置时,一种数据类型可以对应一种数据采集方式,也可以一种数据类型对应多种数据采集方式,还可以多种数据类型对应一种数据采集方式,对此,本说明书实施例对此不进行具体限定。
数据采集方式可以表示用于采集数据的应用程序类型、也可以表示用于采集数据的具体算法。在本实施例中,数据采集方式可以理解为不同的安全应用程序(TrustedApplication,TAPP),这种安全应用程序可以是基于可信执行环境(Trusted ExecutionEnvironment,简称TEE)来运行的。
每个区块链节点都可以通过虚拟机执行智能合约的创建和调用。包含智能合约的交易和交易的执行结果都存储在区块链账本上,或者是区块链中每个全量节点存储全部账本的方式,对于隐私保护来说是一个挑战。隐私保护可以通过多种技术来实现,例如密码学技术(如同态加密Homomorphic encryption,或零知识证明Zero-knowledge proof),再如硬件隐私技术和网络隔离技术等。其中硬件隐私保护技术典型的包括可信执行环境(Trusted Execution Environment, TEE)。
以Intel SGX(以下简称SGX)技术为例。区块链节点可以基于SGX技术创建enclave(围圈或飞地),以作为用于执行区块链交易的TEE。其中,区块链节点利用CPU中新增的处理器指令,在内存中可以分配一部分区域 EPC(Enclave Page Cache,围圈页面缓存或飞地页面缓存),以用于驻留上述的enclave。上述EPC对应的内存区域被CPU内部的内存加密引擎MEE(Memory Encryption Engine)加密,该内存区域中的内容(enclave中的代码和数据)只有在CPU内核中才能够被解密,且用于加解密的密钥只有在EPC启动时生成并存储在CPU中。可见,enclave的安全边界只包含其自身和CPU,无论是特权或非特权软件都无法访问enclave,即便是操作系统管理员和VMM(Virtual Machine Monitor,虚拟机监视器;或称为Hypervisor)也无法影响enclave中的代码和数据,因而具有极高的安全性,并且在上述安全性保障的前提下,CPU能够在enclave中对明文形式的区块链交易进行处理,具有极高的运算效率,从而兼顾了数据安全性和计算效率。而对于进、出TEE的数据,可以是加密的,从而保障数据的隐私。
可信执行环境可以创建在区块链上的节点中,也可以创建在区块链下的设备中。所述指定的安全应用程序通过所述可信执行环境中的代码中预先定义的接口采集初始数据。
步骤112:将所述目标数据发送给所述数据需求方。
目标数据中包括初始数据以及数据有效性声明。将所述目标数据发送给数据需求方。数据需求方根据数据有效性声明,可以确定该初始数据为有效数据。
图1中的方法,通过获取数据需求方的数据使用请求;获取数据持有方的授权信息;基于授权信息生成数据授权使用声明,基于所述数据授权使用声明,获取初始数据;对所述初始数据进行验证,得到验证通过后的目标数据;所述目标数据中携带有数据有效性声明;所述数据有效性声明用于表示所述目标数据的有效性;将所述目标数据发送给所述数据需求方。上述方法中,只有在获取数据授权使用声明之后,才能获取数据持有方的数据,即任何数据需求方在请求使用数据时,必须得到该数据的数据持有方的同意;传输给数据需求方的目标数据中携带有数据有效性声明,可以保证数据传输的有效性,以保证数据传输的安全性以及可信性。
基于图1的方法,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
可选的,所述数据使用请求中可以包括所需数据的数据类型,即数据需求方在请求使用数据时,可以注明所需数据对应的数据类型。
所述基于所述数据授权使用声明,获取初始数据,具体可以包括:
基于所述数据授权使用声明,采用所述数据类型对应的数据采集方式获取初始数据,所述数据采集方式包括用于采集数据的安全应用程序,所述安全应用程序运行在可信执行环境中。
在针对图1方法的论述中,数据的数据类型与数据的采集方式对应,例如:采集房产数据可以采用TAPP1,采集征信报告可以采用TAPP2,这里的“1”和“2”仅用于区分不同的安全应用程序,不具有数量上的实际意义。
可选的,所述基于所述数据授权使用声明,获取初始数据之前,还可以包括:
获取所述数据需求方指定的安全应用程序;所述安全应用程序可以运行在可信执行环境中;这里的可信执行环境可以是TEE环境。TEE是基于CPU硬件的安全扩展,且与外部完全隔离的可信执行环境。目前工业界十分关注TEE的方案,几乎所有主流的芯片和软件联盟都有自己的TEE解决方案,比如软件方面的TPM(Trusted Platform Module,可信赖平台模块)以及硬件方面的SGX(Software Guard Extensions, 软件保护扩展)、ARM Trustzone(信任区)和AMD PSP(Platform Security Processor,平台安全处理器)等。TEE可以起到硬件黑箱作用,在TEE中执行的代码和数据即便是操作系统层都无法偷窥,只有通过代码中预先定义的接口才能对其进行操作。在效率方面,由于TEE的黑箱性质,在TEE中进行运算的是明文数据,而不是同态加密中复杂的密码学运算,计算过程效率没有损失。因此,通过将区块链链下的安全应用程序部署在链下的TEE环境中,可以在性能损失相对较小的前提下很大程度上满足区块链链下场景中的隐私需求。
上述步骤中,为了实现数据的可控,将数据持有方的原始数据提供给数据需求方之后,通过安全应用程序,将初始数据传输给数据需求方。可以确保数据不被用在用户未授权的场景中。
一实施例中,如果数据需求方请求的数据不是数据持有方的原始数据,此时,上述方法步骤,还可以包括:
采用指定的安全应用程序采集初始数据;
采用指定的安全应用程序处理所述初始数据,得到处理结果;
将所述处理结果传输给所述数据需求方。
另外,在数据传输的过程中,为了进一步保证数据传输过程中的安全性,可以对原始数据进行加密。在加密时,可以采用以下两种方法:
方法一、数据需求方指定了安全应用程序,采用指定的安全应用程序对应的公钥对原始数据进行加密,数据需求方可以采用指定的安全应用程序对应的私钥进行解密。具体可以采用以下步骤实现:
所述获取初始数据,具体可以包括:
采用所述指定的安全应用程序采集初始数据;所述初始数据是采用与所述指定的安全应用程序对应的公钥进行加密后的数据。
可选的,所述将所述目标数据发送给所述数据需求方之后,还可以包括:
采用所述指定的安全应用程序对应的私钥对所述目标数据进行解密。
方法二、数据需求方未指定安全应用程序。
当所述数据需求方未指定安全应用程序时,所述初始数据是采用所述数据需求方的公钥或所述数据持有方的公钥进行加密后的数据。
当所述初始数据是采用所述数据需求方的公钥或所述数据持有方的公钥进行加密后的数据时,所述将所述目标数据发送给所述数据需求方之后,还可以包括:
当所述初始数据是采用所述数据需求方的公钥进行加密后的数据时,采用所述数据需求方的私钥对所述目标数据中的初始数据进行解密;
当所述初始数据是采用所述数据持有方的公钥进行加密后的数据时,所述数据授权使用VC中包含有所述数据持有方的私钥;
所述将所述目标数据发送给所述数据需求方之后,还可以包括:
采用所述数据持有方的私钥对所述目标数据中的初始数据进行解密。
在实际应用中,在对数据进行加密时,可以采用公钥加密,私钥解密。以确保信息的安全性;还可以使用数字签名的方式,用私钥加密,公钥解密,以确保数字签名的归属性。但是在一些特殊的应用场景中,数据持有方可以采用自己的公钥对数据进行加密,然后将自己的私钥通过安全的方式发给对应的数据持有方,数据持有方就可以用数据持有方的私钥对数据进行解密。本实施例中,可以在数据授权使用VC中包含数据持有方的私钥,然后传输给数据需求方。
通过上述两种方法,数据请求方在请求使用数据时,可以指定采集数据的安全应用程序,在得到数据持有方的授权后,代理服务方可以采用指定的安全应用程序采集初始数据,由于该安全应用程序只能运行在可信执行环境中,从而可以为采集数据提供安全的数据读取环境,另外,传输的初始数据是加密后的数据,从而可以保证数据获取和数据传输均为安全可信的,提高获取的数据内容的可信度。
另外,需要说明的是,上述方法步骤中提到的安全应用程序可以由各个用户(个人、机构、企业等)选择安装。安装哪些安全应用程序与每个用户的业务需求有关系。每个用户可以根据自己的业务需求选择需要安装的安全应用程序。每个安全应用程序可以有相应的描述信息,该描述信息可以是安全应用程序的名称、类型、版本号、功能信息或者摘要信息。通过描述信息可以确定安全应用程序的用途和作用。这些描述信息可以存储在区块链网络中,本方案中,代理服务方可以将安全应用程序的描述信息传输到区块链网络中进行存储。
可选的,所述获取数据需求方的数据使用请求之前,还可以包括:
获取所述数据持有方在区块链网络中发布的数据目录;所述数据目录中的数据为所述数据持有方允许公开的数据。
需要说明的是,在实际应用中,数据需求方在请求使用数据时,可以从数据目录中选择所要请求的数据。实体可以在区块链网络中发布自己持有的数据,在发布过程中,各个实体还可以声明自己持有的数据中哪些数据允许公开,这些公开的数据可以被其他实体请求使用。
上述方法中,获取所述数据持有方在区块链网络中发布的数据目录之前,还可以包括:
区块链网络获取各个实体发布的数据;
确定所述数据中具有标识的数据,所述标识用于表示携带标识的数据允许公开;
为所述携带标识的数据添加数据描述信息,将携带标识的数据以及对应的数据描述信息放入数据目录中。数据描述信息可以包括数据类型、数据的持有方信息、数据的采集方式等。
其中,所述数据目录可以存储在区块链网络中,每个实体的数据目录能同步展示给数据持有方以及其他实体。本方案中,代理服务方可以从区块链网络中获取数据目录,此时,为了保证数据的安全性,数据目录中可以仅包括数据的描述信息。数据需求方在请求数据时,可以仅根据数据目录中的描述信息选择所需数据。
可选的,所述获取数据持有方的授权信息,具体可以包括:
基于所述数据使用请求,向所述数据持有方发送授权请求通知,所述授权请求通知为URL地址;
获取所述数据持有方在所述URL地址对应的网页中所执行的操作行为;
当所述操作行为表示所述数据持有方同意所述数据需求方的数据使用请求时,获取所述数据持有方的授权信息。
代理服务方在接收到数据需求方的数据使用请求之后,可以直接将数据需求方的数据使用请求转发给数据持有方,也可以不给数据持有方发送数据使用请求,而是基于数据使用请求生成授权请求通知,将授权请求通知发送给数据持有方,此时,授权请求通知中可以包括:数据需求方的信息、数据需求方请求的数据、请求的数据的数据类型以及指定的安全应用程序等信息。在实际应用中,可以将授权请求通知按照统一资源定位符(UniformResource Locator,URL)的方式,给数据持有方发送该地址,数据持有方点击地址链接到相应的网页中,该网页中可以显示数据需求方的信息、数据需求方请求的数据、请求的数据的数据类型以及指定的安全应用程序等信息,然后设置有“同意”或“拒绝”的按钮,数据持有方如果同意数据需求方的数据使用请求,可以点击“同意”。当数据持有方同意数据请求方的数据使用请求时,可以生成授权信息(例如:数据持有方的数字签名)。
需要说明的是,数据授权使用声明,可以是代理服务方在接收到数据持有方的授权信息之后生成的,数据授权使用声明中,可以包括数据持有方的授权信息,也可以不包括数据持有方的授权信息。代理服务方生成数据授权使用声明,就可以证明数据持有方已同意数据需求方的数据使用请求。
在实际应用中,代理服务方颁发数据授权使用声明,还意味着数据需求方请求使用的数据已经通过审批,因此,数据授权使用声明中还可以包括审批记录。其中,审批流程的设置可以由区块链网络来完成,也可以由代理方服务来完成。
审批流程的设置,可以根据各个数据的所属方来设置,也可以根据数据的用途来设置,还可以根据数据的类型进行设置,本实施例对此不作具体限定。审批流程中可以包括:至少一个审批方、审批的标准、审批的顺序、审批通过与否对应的操作等等。例如:审批流程中定义了每个审批方审批通过后应该进行签名,定义了审批、转发、加签的流程等。
对于每个数据的审批记录可以保存在区块链网络中,以备后续进行查询。审批流程可以保存在授权服务合约中。
如果数据需求方指定了安全应用程序采集数据,则代理服务方可以将数据授权使用声明发送给指定的安全应用程序,该安全应用程序可以从数据授权使用声明中的数据获取地址采集初始数据。
可选的,所述获取所述安全应用程序从所述数据授权使用声明中的数据获取地址采集到的所述初始数据之前,还可以包括:
获取所述安全应用程序对所述数据授权使用声明的第一验证结果;
所述获取所述安全应用程序从所述数据授权使用声明中的数据获取地址采集到的所述初始数据,具体可以包括:
当所述第一验证结果表示所述数据授权使用声明有效时,向所述数据持有方发送数据获取请求;所述数据授权使用声明有效用于表示所述数据使用请求的审批记录有效;
接收所述数据持有方返回的初始数据。
可选的,所述数据获取请求中携带有所述安全应用程序的标识;所述接收所述数据持有方返回的初始数据之前,还可以包括:
接收所述数据持有方对所述安全应用程序的标识进行验证的第二验证结果;
所述接收所述数据持有方返回的初始数据,具体可以包括:
当所述第二验证结果表示所述安全应用程序的标识与所述指定的安全应用程序的标识一致时,接收所述数据持有方返回的初始数据。
可选的,所述方法,还可以包括:
获取所述数据需求方采用所述数据类型对应的数据采集方式获取初始数据;
验证所述初始数据的有效性,得到第三验证结果;
当所述第三验证结果表示所述初始数据有效时,颁发数据有效性声明;
将携带有所述数据有效性声明的所述目标数据发送给所述数据需求方。
需要说明的是,上述步骤中提到的审批记录有效可以指的是审批流程与预先设置的审批流程一致,包含了所有指定审批方的签名等。
在验证初始数据的有效性时,可以验证数据的采集方式、还可以验证采集到的初始数据是否是请求的数据,或者采集到的初始数据的数据类型是否与请求的数据类型一致。其中,验证数据的采集方式可以包括验证采集初始数据的安全应用程序的标识是否与数据需求方指定的标识一致或者是否与数据类型对应。
需要说明的是,对于安全应用程序的标识进行验证这一操作可以由代理方平台来执行,也可以由数据持有方来执行。
所述接收所述数据持有方对所述安全应用程序的标识进行验证的第二验证结果之前,还可以包括:
验证所述安全应用程序的标识是否与所述数据需求方指定的安全应用程序的标识一致,得到第二验证结果;
或者,验证所述安全应用程序的标识是否与所述数据需求方所需数据的数据类型对应的安全应用程序的标识一致,得到验证结果。
通过上述方法,在数据传输的过程中,代理服务方只有在得到了数据持有方的授权以及审批方的审批通过之后,才能选择相应的数据采集方式到数据授权使用声明中的数据获取地址进行数据采集。只有在采用指定的安全应用程序进行数据采集,且采集到的数据是数据需求方所需的数据(数据有效,具有数据有效性声明)之后,才能将采集到的数据与数据有效性声明传输给数据需求方,能够保证数据传输的安全性和可信性。
可选的,所述将所述目标数据发送给所述数据需求方之后,代理服务方可以监测所述数据需求方对于目标数据的使用信息;该使用信息可以包括使用范围以及使用时间;当监测到使用范围超出指定的数据使用范围时,撤销数据需求方对于目标数据的使用权限;或者,当监测到所述使用期限超出指定的有效期时,撤销所述数据需求方对于目标数据的使用权限。
通过上述方法,数据需求方使用目标数据的使用范围不能超出数据持有方指定的使用范围,使用时间也不能超出指定的有效期,从而保证数据的使用安全性。
上述实施例中的方法,可以结合附图2和附图3中的两种具体的方法进行实现:
方法一、数据需求方指定了安全应用程序,请求使用原始数据。
图2是本说明书实施例提供的指定安全应用程序时的可信数据传输方法流程图一。
如图2所示,数据传输的步骤可以包括:
步骤202:获取数据需求方的数据使用请求;所述数据使用请求中包括指定的安全应用程序。
步骤204:向数据持有方发送授权请求通知。
步骤206:接收数据持有方基于所述授权请求通知返回的授权信息。
步骤208:根据所述授权信息生成数据授权使用声明。
步骤210:将所述数据授权使用声明发送给指定的安全应用程序。
步骤212:接收所述指定的安全应用程序采集到的初始数据,所述初始数据是数据持有方加密后的数据。
步骤214:验证所述初始数据的有效性。
步骤216:验证通过后,生成数据有效性声明。
步骤218:将携带数据有效性声明的目标数据传输给数据需求方。
方法二、数据需求方指定了安全应用程序,请求使用处理后的数据。
图3是本说明书实施例提供的指定安全应用程序时的可信数据传输方法流程图二。
如图3所示,数据传输的步骤可以包括:
步骤302:获取数据需求方的数据使用请求;所述数据使用请求中包括指定的安全应用程序。
步骤304:向数据持有方发送授权请求通知。
步骤306:接收数据持有方基于所述授权请求通知返回的授权信息。
步骤308:根据所述授权信息生成数据授权使用声明。
步骤310:将所述数据授权使用声明发送给指定的安全应用程序。
步骤312:接收所述指定的安全应用程序采集并处理后的数据。
步骤314:验证处理后的数据的有效性。
步骤316:验证通过后,生成数据有效性声明。
步骤318:将携带数据有效性声明的目标数据(处理后的数据携带有效性声明)传输给数据需求方。
需要说明的是,采集数据的安全应用程序与处理数据的安全应用程序可以是同一个,也可以是不同的安全应用程序。采集数据的安全应用程序也可以有一个或多个,处理数据的安全应用程序也可以有一个或多个,对此,本说明书实施例不作具体限定。
方法三、数据需求方未指定安全应用程序。
图4是本说明书实施例提供的未指定安全应用程序时的可信数据传输方法流程图。
如图4所示,数据传输的步骤可以包括:
步骤402:获取数据需求方的数据使用请求;所述数据使用请求中包括所需数据的数据类型。
步骤404:向数据持有方发送授权请求通知。
步骤406:接收数据持有方基于所述授权请求通知返回的授权信息。
步骤408:根据所述授权信息生成数据授权使用声明。
步骤410:基于所述数据授权使用声明,获取初始数据。
步骤412:验证初始数据的有效性。
步骤414:验证通过后,生成数据有效性声明。
步骤416:将携带数据有效性声明的目标数据传输给数据需求方。
通过上述实施例中的方法步骤,本方案可以达到以下技术效果:
1)任何数据需求方想要使用数据,必须经过数据持有方的授权。
2)在调用数据时需要按照数据持有方、代理服务方或者区块链定义的条件进行调用。
3)数据的使用范围只能在数据持有方指定的范围内使用,不能超范围使用数据;只能在有效期内使用数据;以保证数据使用的安全性。
4)传输过程中负责转发和传输的代理方为区块链网络授权的可信应用,能够保证数据传输过程的安全性。
5)只有在获取数据授权使用声明之后,才能获取数据持有方的数据,即任何数据需求方在请求使用数据时,必须得到该数据的数据持有方的同意;传输给数据需求方的目标数据中携带有数据有效性声明,可以保证数据传输的有效性,以保证数据传输的安全性以及可信性。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图5是本说明书实施例提供的一种可信数据传输装置示意图。如图5所示,该装置可以包括:
数据使用请求获取模块502,用于获取数据需求方的数据使用请求;
授权信息获取模块504,用于获取数据持有方的授权信息;
数据授权使用声明生成模块506,用于基于所述授权信息生成数据授权使用声明;所述数据授权使用声明用于表示所述数据持有方授权所述数据需求方使用数据;
初始数据获取模块508,用于基于所述数据授权使用声明,获取初始数据;
目标数据获取模块510,用于对所述初始数据进行验证,得到验证通过后的目标数据;所述目标数据中携带有数据有效性声明;所述数据有效性声明用于表示所述目标数据的有效性;
目标数据传输模块512,用于将所述目标数据发送给所述数据需求方。
基于图5的装置,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
可选的,所述初始数据获取模块508,具体可以包括:
初始数据第一获取单元,用于基于所述数据授权使用声明,采用所述数据类型对应的数据采集方式获取初始数据,所述数据采集方式包括用于采集数据的安全应用程序,所述安全应用程序运行在可信执行环境中。
可选的,所述装置,还可以包括:
安全应用程序获取模块,用于获取所述数据需求方指定的安全应用程序;所述指定的安全应用程序运行在可信执行环境中;
所述初始数据获取模块508,具体可以包括:
初始数据第二获取单元,用于采用所述指定的安全应用程序采集初始数据;所述初始数据是采用与所述指定的安全应用程序对应的公钥进行加密后的数据。所述可信执行环境与操作系统层隔离。所述指定的安全应用程序通过所述可信执行环境中的代码中预先定义的接口采集初始数据。
可选的,所述装置,还可以包括:
第一解密模块,用于采用所述指定的安全应用程序对应的私钥对所述目标数据进行解密。
可选的,所述装置,还可以包括:
数据目录获取模块,用于获取所述数据持有方在区块链网络中发布的数据目录;所述数据目录中的数据为所述数据持有方允许公开的数据。
可选的,所述授权信息获取模块504,具体可以包括:
授权请求通知发送单元,用于基于所述数据使用请求,向所述数据持有方发送授权请求通知,所述授权请求通知为URL地址;
操作行为获取单元,用于获取所述数据持有方在所述URL地址对应的网页中所执行的操作行为;
授权信息获取单元,用于当所述操作行为表示所述数据持有方同意所述数据需求方的数据使用请求时,获取所述数据持有方的授权信息。
可选的,所述初始数据获取模块508,具体可以用于:
将所述数据授权使用声明发送给代理服务方设备中的所述安全应用程序;
获取所述安全应用程序从所述数据授权使用声明中的数据获取地址采集到的所述初始数据。
可选的,所述装置,还可以包括:
第一验证模块,用于获取所述安全应用程序对所述数据授权使用声明的第一验证结果;
所述初始数据获取模块,具体用于:
当所述第一验证结果表示所述数据授权使用声明有效时,向所述数据持有方发送数据获取请求;所述数据授权使用声明有效用于表示所述数据使用请求的审批记录有效;
接收所述数据持有方返回的初始数据。
可选的,所述装置,还可以包括:
第二验证模块,用于接收所述数据持有方对所述安全应用程序的标识进行验证的第二验证结果;
所述初始数据获取模块508,具体可以用于:
当所述第二验证结果表示所述安全应用程序的标识与所述数据采集方式中包括的用于采集数据的安全应用程序的标识一致时,接收所述数据持有方返回的初始数据。
可选的,当所述数据需求方未指定安全应用程序时,所述初始数据是采用所述数据需求方的公钥或所述数据持有方的公钥进行加密后的数据。
可选的,所述装置,还可以包括:
第二解密模块,用于当所述初始数据是采用所述数据需求方的公钥进行加密后的数据时,采用所述数据需求方的私钥对所述目标数据中的初始数据进行解密;
第三解密模块,用于当所述初始数据是采用所述数据持有方的公钥进行加密后的数据时,所述数据授权使用VC中包含有所述数据持有方的私钥;
采用所述数据持有方的私钥对所述目标数据中的初始数据进行解密。
可选的,所述装置,还可以用于:
获取所述数据需求方采用所述数据类型对应的数据采集方式获取初始数据;
验证所述初始数据的有效性,得到第三验证结果;
当所述第三验证结果表示所述初始数据有效时,颁发数据有效性声明;
将携带有所述数据有效性声明的所述目标数据发送给所述数据需求方。
可选的,所述数据授权使用声明中至少可以包括:所述初始数据的审批记录以及所述初始数据的数据获取地址;
所述数据有效性声明中至少可以包括:所述初始数据的存储地址、所述初始数据的数据类型、所述初始数据的有效期以及所述初始数据的数据采集方式;
所述授权信息中至少可以包括所述初始数据的指定使用范围。
可选的,所述装置,还可以包括:
监测模块,用于监测所述数据需求方对于所述目标数据的数据使用范围以及数据使用时间;
使用权限撤销模块,用于当监测到所述数据使用范围超出所述指定使用范围时,撤销所述数据需求方对于所述目标数据的使用权限;
或者,当监测到所述数据使用时间超出所述有效期时,撤销所述数据需求方对于所述目标数据的使用权限。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。
图6是本说明书实施例提供的一种可信数据传输设备示意图。如图6所示,设备600可以包括:
至少一个处理器610;以及,
与所述至少一个处理器通信连接的存储器630;其中,
所述存储器630存储有可被所述至少一个处理器610执行的指令620,所述指令被所述至少一个处理器610执行,以使所述至少一个处理器610能够:
获取数据需求方的数据使用请求;
获取数据持有方的授权信息;
基于所述授权信息生成数据授权使用声明;所述数据授权使用声明用于表示所述数据持有方授权所述数据需求方使用数据;
基于所述数据授权使用声明,获取初始数据;
对所述初始数据进行验证,得到验证通过后的目标数据;所述目标数据中携带有数据有效性声明;所述数据有效性声明用于表示所述目标数据的有效性;
将所述目标数据发送给所述数据需求方。
基于同样的思路,本说明书实施例还提供了上述方法对应的计算机可读介质。计算机可读介质上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现以下方法:
获取数据需求方的数据使用请求;
获取数据持有方的授权信息;
基于所述授权信息生成数据授权使用声明;所述数据授权使用声明用于表示所述数据持有方授权所述数据需求方使用数据;
基于所述数据授权使用声明,获取初始数据;
对所述初始数据进行验证,得到验证通过后的目标数据;所述目标数据中携带有数据有效性声明;所述数据有效性声明用于表示所述目标数据的有效性;
将所述目标数据发送给所述数据需求方。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字符系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字符助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字符多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。