本公开内容属于区块链技术领域,尤其涉及一种用于保护数据隐私的区块链防伪溯源的方法、一种用于保护数据隐私的区块链防伪溯源的设备及一种用于保护数据隐私的区块链防伪溯源的计算机可读存储介质。
背景技术:
区块链(blockchain)技术是一种基于去中心化的对等网络的技术,其将密码学原理与共识机制相结合来保障分布式各节点的数据连贯和持续,从而实现信息即时验证、可追溯、难篡改和无法屏蔽之目的,进而创造了一套隐私、高效、安全的共享价值体系。
区块链根据访问权限通常分为公有链、联盟链和私有链。其中,公有链是指任何人都可以根据协议接入并且参与共识的区块链;联盟链是指其共识过程受到预选节点控制的区块链;私有链是指所有权限都在一个组织中,并受该组织任意控制的区块链。
区块链防伪溯源是结合区块链、防伪标签、物联网等多种技术实现对农产品、工业品等商品的生产、加工、运输、流通、零售等全生命周期环节的追踪记录、商品防伪的综合性系统解决方案。它通过产业链上下游的各方广泛协同参与来实现。通常用一个溯源码(可以是二维码、rfid码等形式)作为商品的唯一标识,商品全流程的各个参与方将产生于该环节的各种信息与商品的溯源码进行绑定,在区块链上进行存证。各流转环节和消费者可以通过移动设备(例如,手机)或扫描枪等设备识别溯源码,从而根据该溯源码在区块链上获取商品的溯源信息。
然而,现有的区块链防伪溯源技术是将产品流通的各个环节的存证信息存于区块链上,但是缺少有效的数据隐私保护机制,这就意味着产品的溯源信息被完全公开,由此可能带来严重的数据隐私泄漏问题。
技术实现要素:
本公开内容的实施例提供了用于保护数据隐私的区块链防伪溯源的方法、设备和计算机可读存储介质,能够在实现产品的溯源信息保存于区块链的同时,有效地实现对溯源信息的隐私保护。
为此,本公开内容的第一方面提出了一种用于保护数据隐私的区块链防伪溯源的方法,所述方法包括:
基于产品的溯源码以及针对所述产品的流转动作,使用数据存证智能合约生成与所述溯源码相关的数据存证信息,其中,所述数据存证信息包括数据存证id以及数据存证内容,并且所述数据存证id与所述溯源码相对应;
将所述数据存证信息保存于与所述数据存证智能合约相对应的私有账本;
基于所述溯源码、所述数据存证id、以及所述数据存证智能合约的标识,使用存证目录智能合约生成与所述数据存证信息相关的存证目录信息;以及
将所述存证目录信息保存于全局账本。
另外,本公开内容的第二方面提出了一种用于保护数据隐私的区块链防伪溯源的方法,所述方法包括:
接收第一查询请求,其中,所述第一查询请求至少包括产品的溯源码;
验证所述第一查询请求;
在验证通过的情况下,使用存证目录智能合约从全局账本中返回至少一个存证目录信息,其中,所述存证目录信息包括与所述溯源码相对应的数据存证id以及相应的数据存证智能合约的标识;
接收至少一个第二查询请求,其中,所述第二查询请求包括所述数据存证id以及所述数据存证智能合约的标识;
验证所述第二查询请求;
在验证通过的情况下,使用所述数据存证智能合约从与所述数据存证智能合约相对应的私有账本中返回与所述溯源码相关的数据存证信息,其中,所述数据存证信息包括流转动作内容。
此外,本公开内容的第三方面提出了一种用于保护数据隐私的区块链防伪溯源的设备,所述设备包括:
处理器;以及
存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
基于产品的溯源码以及针对所述产品的流转动作,使用数据存证智能合约生成与所述溯源码相关的数据存证信息,其中,所述数据存证信息包括数据存证id以及数据存证内容,并且所述数据存证id与所述溯源码相对应;
将所述数据存证信息保存于与所述数据存证智能合约相对应的私有账本;
基于所述溯源码、所述数据存证id、以及所述数据存证智能合约的标识,使用存证目录智能合约生成与所述数据存证信息相关的存证目录信息;以及
将所述存证目录信息保存于全局账本。
并且,本公开内容的第四方面提出了一种用于保护数据隐私的区块链防伪溯源的设备,所述设备包括:
处理器;以及
存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
接收第一查询请求,其中,所述第一查询请求至少包括产品的溯源码;
验证所述第一查询请求;
在验证通过的情况下,使用存证目录智能合约从全局账本中返回至少一个存证目录信息,其中,所述存证目录信息包括与所述溯源码相对应的数据存证id以及相应的数据存证智能合约的标识;
接收至少一个第二查询请求,其中,所述第二查询请求包括所述数据存证id以及所述数据存证智能合约的标识;
验证所述第二查询请求;
在验证通过的情况下,使用所述数据存证智能合约从与所述数据存证智能合约相对应的私有账本中返回与所述溯源码相关的数据存证信息,其中,所述数据存证信息包括流转动作内容。
最后,本公开内容的第五方面提出了一种计算机可读存储介质,其具有存储在其上的计算机可读程序指令,所述计算机可读程序指令用于执行根据本公开内容的第一方面、第二方面所述的用于保护数据隐私的区块链防伪溯源的方法。
依据本公开内容的用于保护数据隐私的区块链防伪溯源的方法、设备以及相对应的计算机可读存储介质能够实现对产品的防伪溯源信息在该产品流经路径外不可见的原则下提供进一步的解决方案,从而进一步能够实现另外两种级别的保护:(1)流经路径内上下游流转环节完全公开;(2)流经路径内下游对上游不公开。
附图说明
结合附图并参考以下详细说明,本公开的各实施例的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实施例,在附图中:
图1为依据本公开内容的区块链的网络结构的示意图;
图2为依据本公开内容的产品流向图;
图3为依据本公开内容的用于保护数据隐私的区块链防伪溯源的方法的第一实施例的示例性流程图;
图4为依据本公开内容的用于保护数据隐私的区块链防伪溯源的方法的第一实施例的应用示意图;
图5为依据本公开内容的用于保护数据隐私的区块链防伪溯源的方法的第二实施例、第三实施例的示例性流程图;
图6为依据本公开内容的用于保护数据隐私的区块链防伪溯源的方法的第二实施例、第三实施例的应用示意图;
图7为依据本公开内容的用于保护数据隐私的区块链防伪溯源的方法的第三实施例的部分流程图;以及
图8为依据本公开内容的用于保护数据隐私的区块链防伪溯源的设备的示意图。
具体实施方式
以下参考附图详细描述本公开的各个示例性实施例。附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。
本文所使用的术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”,表示还可以包括其他内容。术语“基于”是“至少部分地基于"。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”,等等。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。对于附图中的各单元之间的连线,仅仅是为了便于说明,其表示至少连线两端的单元是相互通信的,并非旨在限制未连线的单元之间无法通信。
本公开内容的实施例主要关注以下技术问题:在产品的溯源信息保存于区块链上的情况下,如何实现对溯源信息的有效隐私保护。
为了解决上述技术问题,所公开的用于保护数据隐私的区块链防伪溯源的方法包括:首先,基于产品的溯源码以及针对产品的流转动作,使用数据存证智能合约生成与溯源码相关的数据存证信息;其次,将数据存证信息保存于与数据存证智能合约相对应的私有账本;再次,基于溯源码、数据存证id、以及数据存证智能合约的标识,使用存证目录智能合约生成与数据存证信息相关的存证目录信息;最后,将存证目录信息保存于全局账本。由此,实现了产品的流经路径外的其他环节不得获取该产品的任何溯源信息。
图1示出了依据本公开内容的区块链的网络结构100的示意图。从图1中可以看出,该区块链的网络结构100包括了区块链节点111、112、113、114、115、116。区块链节点111-116之间可以通过网络同步数据,该网络可以是任何有线和/或无线网络。
图2公开了本公开内容所保护的技术方案的示例性应用场景。在本实施例中,产品1-4的上游流转环节分别是流转环节a、流转环节b、流转环节c,随后,产品1经由下游流转环节(流转环节d1、流转环节e1)最终流转到消费者,产品2经由流转环节d1、流转环节e2最终流转到消费者,产品3经由流转环节d2、流转环节e3最终流转到消费者,产品4经由流转环节d2、流转环节e4最终流转到消费者。由此可知,例如,产品1的流经路径包括流转环节a、流转环节b、流转环节c、流转环节d1以及流转环节e1,产品3的流经路径包括流转环节a、流转环节b、流转环节c、流转环节d2以及流转环节e3等。
例如,针对产品1的流经路径而言,本文所保护的技术方案的最终实现效果是在确保其流经路径之外的环节(例如,流转环节d2、流转环节e2、流转环节e3以及流转环节e4等)不可见的前提下能够选择性的实现两种级别的溯源信息的保护:(1)产品1的溯源信息对流经路径内上下游的流转环节完全公开;(2)流经路径内下游的流转环节关于产品1的溯源信息对上游的流转环节不公开。
实施例1
如图3和图4所示,本实施例所公开的用于保护数据隐私的区块链防伪溯源的方法能够将流经路径中每个流转环节对产品的流转动作内容保存到区块链中,以实现流经路径之外的流转环节对产品的溯源信息不可见。在本实施例中应用的区块链可以采用联盟链类型的区块链。具体步骤如下:
步骤310:基于产品的溯源码以及针对该产品的流转动作,使用数据存证智能合约生成(例如,记录、保存)与溯源码相关的数据存证信息,其中,数据存证信息包括数据存证id以及数据存证内容,并且数据存证id与溯源码相对应;
针对产品的流转动作包括:报关、物流、出库以及入库中的一种或多种。
如图4所示,针对图2中产品1的流经路径而言,流转环节c和流转环节d1是分别对产品1作出流转动作的流转环节。例如,流转环节c基于产品1的溯源码x以及针对该产品1的流转动作,使用其流转环节c的数据存证智能合约c1生成与该溯源码相关的数据存证信息m1。
步骤320:将数据存证信息保存于与数据存证智能合约相对应的私有账本;其中,数据存证信息采用键值对(key-value)格式存储于私有账本。
数据存证信息中的键(key)是数据存证id的哈希值;数据存证信息中的值(value)是数据存证内容,其中,数据存证内容是与流转动作相关的信息。
例如,流转环节c使用数据存证智能合约c1所生成的关于产品1的溯源码的数据存证信息m1采用key-value格式存储于流转环节c的私有账本。具体地,该数据存证信息m1包括:与溯源码x相对应的数据存证id1以及数据存证内容(产品1在流转环节c处的操作(例如,报关、物流、出库以及入库中的一种或多种));其中,该数据存证信息m1中的key是该数据存证id1的哈希值,value是相应的数据存证内容。
步骤330:基于溯源码、数据存证id、以及数据存证智能合约的标识,使用存证目录智能合约生成(例如,记录、保存)与数据存证信息相关的存证目录信息。
例如,流转环节c基于溯源码x、数据存证id1、以及数据存证智能合约c1的标识,使用存证目录智能合约记录、保存与数据存证信息m1相对应的存证目录信息n1。
步骤340:将存证目录信息保存于全局账本。其中,存证目录信息采用键值对格式存储于全局账本。
存证目录信息中的键包括溯源码的哈希值以及数据存证id的哈希值;存证目录信息中的值是经溯源码加密处理的目录信息,目录信息包括数据存证id的明文以及数据存证智能合约的标识。
例如,流转环节c使用存证目录智能合约将生成的存证目录信息n1存入全局账本中。具体地,存证目录信息n1采用key-value格式存储于区块链的全局账本。具体地,该存证目录信息n1包括:溯源码x、数据存证id1以及数据存证智能合约c1的标识;其中,该存证目录信息n1中的key是溯源码x的哈希值和数据存证id1的哈希值,value是对数据存证智能合约c1的标识以及数据存证id1的明文的加密。在本实施例中,采用溯源码x生成的对称密钥对数据存证智能合约c1的标识以及数据存证id1的明文进行加密。
针对产品1的另一个流转环节d1,在产生相关的流转动作时,该流转环节d1使用流转环节d1的数据存证智能合约d1生成(例如,记录、保存)并存储相关的数据存证信息m2,然后使用存证目录智能合约生成(例如,记录、保存)并存储与该数据存证信息m2相对应的存在目录信息n2。
本实施例能够实现将任一产品的所有溯源信息基于其溯源码保存于区块链中,但是不同的流转环节仅能够用流经其本身的那些产品的溯源码解密与该产品有关产生的流转动作内容,由此使得未参与该产品的流经路径的其他流转环节无法获取该产品的溯源信息。
实施例2
如图5和图6所示,本实施例所公开的用于保护数据隐私的区块链防伪溯源的方法能够在流经路径中每个流转环节对产品的流转动作内容保存到区块链中的前提下,实现产品的溯源信息对仅流经路径内的流转环节公开。具体步骤如下:
步骤510:接收第一查询请求,其中,第一查询请求至少包括产品的溯源码。
如图6所示,鉴于实施例1所实现的产品的溯源信息的保存方法,与该产品1相关联的消费者、多个流转环节(例如,流转环节a、流转环节d1等)才能够基于产品1的溯源码x获取其溯源信息。具体地,消费者、流转环节a、流转环节d1等基于溯源码x生成第一查询请求,消费者将该第一查询请求发送到消费者存证查询服务接口,流转环节a将该第一查询请求发送到存证查询接口a,流转环节d1将该第一查询请求发送到存证查询接口d1。
步骤520:验证第一查询请求;该步骤具体包括:
步骤521:采用私钥对第一查询请求进行签名,使得签名后的第一查询请求包括溯源码以及与私钥相对应的证书,其中,在查询方是消费者时,私钥是消费者私钥,在查询方是除消费者之外的任一流转环节时,私钥是流转环节的私钥。
例如,在查询方是消费者时,消费者存证查询服务接口采用消费者私钥对第一查询请求进行签名,使得签名后的第一查询请求包括溯源码x以及与消费者私钥相对应的证书。
在查询方是流转环节a时,存证查询接口a采用该流转环节a的私钥对第一查询请求进行签名,使得签名后的第一查询请求包括溯源码x以及与流转环节a的私钥相对应的证书。
步骤522:使用存证目录智能合约基于证书对签名后的第一查询请求进行验证。
例如,在查询方是消费者时,消费者存证查询服务接口使用存证目录智能合约基于与消费者私钥相对应的证书对签名后的第一查询请求进行验证。在查询方是流转环节a时,存证查询接口a使用存证目录智能合约基于与流转环节a的私钥相对应的证书对签名后的第一查询请求进行验证。
步骤523:在验证通过的情况下,使用存证目录智能合约来确定证书是否存在于第一白名单,其中,第一白名单包括允许获取存证目录信息的消费者或流转环节的证书。
例如,第一白名单通过存证目录智能合约存储在区块链的全局账本中,并且该第一白名单随着产品流转环节的调整变化进行不断的更新。
步骤524:在确定证书存在于白名单中时,确定验证通过。
步骤530:在验证通过的情况下,使用存证目录智能合约从全局账本中返回至少一个存证目录信息,其中,存证目录信息包括与溯源码相对应的数据存证id以及相应的数据存证智能合约的标识;本步骤具体包括:
步骤531:使用存证目录智能合约在全局账本中查找与溯源码相关联的至少一个存证目录信息,其中,数据存证智能合约的标识被加密保存在存证目录信息中。
例如,在查询方是消费者时,消费者存证查询服务接口使用存证目录智能合约在全局账本中查找与溯源码x相关联的所有存证目录信息。在查询方是流转环节a时,存证查询服务接口a使用存证目录智能合约在全局账本中查找与溯源码x相关联的所有存证目录信息。其中,如实施例1所描述的,每一个存证目录信息中的key是溯源码x的哈希值和与溯源码x相对应的一个数据存证id的哈希值,value是对与数据存证id相对应的数据存证智能合约的标识以及数据存证id的明文的加密。
步骤532:采用溯源码对存证目录信息进行解密。
如实施例1所描述的,存证目录信息中的采用通过溯源码x生成的对称密钥对相关的数据存证智能合约的标识以及数据存证id的明文进行加密。因此,在本实施例中,采用通过溯源码x生成的对称密钥对存证目录信息中的value进行解密,以获得与溯源码x相对应的所有数据存证智能合约的标识以及数据存证id的明文。
步骤533:返回与溯源码相对应的数据存证id以及数据存证智能合约的标识。
步骤540:接收至少一个第二查询请求,其中,第二查询请求包括数据存证id以及数据存证智能合约的标识。
在本实施例中,由于经由第一查询请求,消费者或相关的流转环节可以获得与溯源码x相关联的所有数据存证id以及数据存证智能合约的标识,因此,消费者或相关的流转环节发送与溯源码x相关联的多个第二查询请求,其中,每一个第二查询请求包括与溯源码x相关联的一个数据存证id、与该数据存证id相对应的数据存证智能合约的标识。例如,一个第二查询请求包括:与溯源码x相关联的数据存证id3、与该数据存证id3相对应的数据存证智能合约c1的标识。
步骤550:验证第二查询请求;该步骤具体包括:
步骤551:采用私钥对第二查询请求进行签名,使得签名后的第二查询请求包括数据存证id以及与私钥相对应的证书。
例如,在查询方是消费者时,消费者存证查询服务接口采用消费者私钥对第二查询请求进行签名,使得签名后的第二查询请求包括数据存证id3以及与消费者私钥相对应的证书。
在查询方是流转环节a时,存证查询接口a采用该流转环节a的私钥对第二查询请求进行签名,使得签名后的第二查询请求包括数据存证id3以及与消费者私钥相对应的证书、数据存证智能合约c1的标识以及与流转环节a的私钥相对应的证书。
步骤552:第二查询请求被发送往相应的数据存证智能合约,后者基于证书对签名后的第二查询请求进行验证;
例如,在查询方是消费者时,消费者存证查询服务接口调用数据存证智能合约c1,后者基于第二查询请求中包含的证书对签名后的第二查询请求进行验证。在查询方是流转环节a时,存证查询接口a调用数据存证智能合约c1,后者基于第二查询请求中包含的证书对签名后的第二查询请求进行验证。
步骤553:在验证通过的情况下,使用数据存证智能合约来确定证书是否存在于第二白名单,其中,第二白名单包括允许获取流转动作内容的消费者或流转环节的证书。
例如,使用数据存证智能合约c1来确定证书是否存在于第二白名单,其中,第二白名单存储在流转环节a的私有账本中,并且该第二白名单是当流转环节a在区块链上部署其数据存证智能合约c1时创建的,并且随着产品流转环节的调整变化进行不断的更新。
步骤554:在确定证书存在于第二白名单中时,确定验证通过。
步骤560:在验证通过的情况下,使用数据存证智能合约从与数据存证智能合约相对应的私有账本中返回与溯源码相关的数据存证信息(即,该数据存证信息包括流转动作内容)。
例如,存证查询接口a使用数据存证智能合约c1从流转环节c的私有账本中返回与溯源码x相关的流转动作内容。
本实施例所公开的用于保护数据隐私的区块链防伪溯源的方法使得仅产品整个流经路径中的每个流转环节以及消费者能够获取产品在整个流经路径中产生的所有溯源信息。
实施例3
如图5-图7所示,本实施例所公开的用于保护数据隐私的区块链防伪溯源的方法能够在流经路径中每个流转环节对产品的流转动作内容保存到区块链中的前提下,实现产品的溯源信息仅对流经路径内的下游流转环节公开。具体步骤如下:
步骤510:接收第一查询请求,其中,第一查询请求至少包括产品的溯源码;流转动作内容包括:报关信息、物流信息、出库信息以及入库信息中的一种或多种。
步骤520:验证第一查询请求;采用消费者查询方式验证第一查询请求的步骤具体包括:
步骤5211’:接收验证码。具体地,消费者存证查询服务接口在接收到第一查询请求之后,向消费者发送验证码,以便于消费者将验证码输入该消费者存证查询服务接口。
步骤5212’:在验证码被验证通过的情况下,确定消费者的查询次数是否超过阈值。
例如,当图2所示的产品1的最上游的流转环节a冒充消费者利用消费者存证查询服务接口发送查询请求时,通过阈值限制查询次数,由此能够限制上游的流转环节对下游的流转环节产生的溯源信息的获取。
步骤5213’:在确定消费者的查询次数未超过阈值的情况下,采用消费者私钥对第一查询请求进行签名,使得签名后的第一查询请求包括溯源码以及与消费者私钥相对应的证书。该步骤类似于实施例2中的步骤521,在此不再赘述。
步骤5214’:使用存证目录智能合约基于证书对签名后的第一查询请求进行验证。该步骤类似于实施例2中的步骤522,在此不再赘述。
步骤5215’:在验证通过的情况下,使用存证目录智能合约来确定证书是否存在于第三白名单,其中,第三白名单包括允许获取存证目录信息的消费者或流转环节的证书。
在本实施例中,第三白名单类似于实施例2中的第一白名单存储于区块链的全局账本中,并随着产品流转环节的调整变化进行不断的更新。
步骤5216’:确定证书存在于第三白名单中时,确定验证通过。
采用流转环节查询方式验证第一查询请求进一步包括:
步骤521”:采用任一流转环节的私钥对第一查询请求进行签名,使得签名后的第一查询请求包括溯源码以及与流转环节的私钥相对应的证书。
例如,流转环节a向存证查询接口a发送第一查询请求之后,存证查询接口a采用流转环节a私钥对第一查询请求进行签名,使得签名后的第一查询请求包括溯源码x以及与流转环节a的私钥相对应的证书。
步骤522”:使用存证目录智能合约基于证书对签名后的第一查询请求进行验证。
例如,使用存证目录智能合约基于与流转环节a的私钥相对应的证书对签名后的第一查询请求进行验证。
步骤523”:在验证通过的情况下,使用存证目录智能合约来确定证书是否存在于第三白名单。
步骤524”:在确定证书存在于第三白名单中时,确定验证通过。
步骤530:在验证通过的情况下,使用存证目录智能合约从全局账本中返回至少一个存证目录信息,其中,存证目录信息包括与溯源码相对应的数据存证id以及相应的数据存证智能合约的标识;本步骤与实施例2中的步骤530类似,在此不再赘述。
步骤540:接收至少一个第二查询请求,其中,第二查询请求包括数据存证id以及数据存证智能合约的标识;
步骤550:验证第二查询请求。
针对于采用消费者查询方式验证第二查询请求的具体实现方式与实施例2中的步骤550类似,在此不再详细描述。针对采用流转环节查询方式,如图7所示,验证第二查询请求具体如下:
步骤710:采用流转环节的私钥对第二查询请求进行签名,使得签名后的第二查询请求包括数据存证id以及与流转环节的私钥相对应的证书。
例如,采用流转环节a的私钥对第二查询请求进行签名,使得签名后的某个第二查询请求包括存储于流经节点d1的私有账本的数据存证id4、数据存证智能合约d1的标识以及与流转环节a的私钥相对应的证书。
步骤720:使用数据存证智能合约基于证书对签名后的第二查询请求进行验证。
例如,使用数据存证智能合约d1对上述签名后的第二查询请求进行验证。
步骤730:在验证通过的情况下,使用数据存证智能合约来确定证书是否存在于黑名单,其中,黑名单包括不允许获取与溯源码相关的下游流转动作内容的上游流转环节的证书。
例如,使用数据存证智能合约d1验证与流转环节a的私钥相对应的证书存在于黑名单中,则不允许向流转环节a返回与上述第二查询请求相对应的流转动作内容。
在本实施例中,每个流转环节的私有账本中均部署一个本节点的黑名单,使得该黑名单确定位于该流转环节上游的所有流转环节,由此能够实现流经路径内下游流转环节对上游流转环节的溯源信息不公开。此外该黑名单是当流转环节在区块链上部署数据存证智能合约d1时创建的,并且随着该流转环节上游的流转环节的调整变化进行不断的更新
步骤740:在确定证书不存在于黑名单中时,确定验证通过。
步骤560:在验证通过的情况下,使用数据存证智能合约从与数据存证智能合约相对应的私有账本中返回与溯源码相关的数据存证信息(即,该数据存证信息包括流转动作内容)。
本实施例所公开的用于保护数据隐私的区块链防伪溯源的方法使得仅消费者都能够实现对产品在整个流经路径中产生的所有溯源信息的获取,并使得整个流经路径中的下游流转环节能够查看其上游流转环节的溯源信息,而上游流转环节不能够查询或获取其下游流转环节的溯源信息;由此实现了最严格的溯源信息的数据保护。
此外,替代地,上述方法能够通过计算机程序产品,即计算机可读存储介质来实现。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开内容的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
图8示出了依据本公开内容的用于保护数据隐私的区块链防伪溯源的设备800的方框图。从图8中可以看出,用于保护数据隐私的区块链防伪溯源的设备800包括处理器801和与处理器801耦接的存储器802。其中,存储器802存储有指令。指令在由处理器801执行时使得处理器801执行以下动作:
基于产品的溯源码以及针对产品的流转动作,使用数据存证智能合约生成(例如,记录、保存)与溯源码相关的数据存证信息,其中,数据存证信息包括数据存证id以及数据存证内容,并且数据存证id与溯源码相对应;
将数据存证信息保存于与数据存证智能合约相对应的私有账本;
基于溯源码、数据存证id、以及数据存证智能合约的标识,使用存证目录智能合约生成(例如,记录、保存)与数据存证信息相关的存证目录信息;以及
将存证目录信息保存于全局账本。
在依据本公开内容的一个实施例中,数据存证信息采用键值对格式存储于私有账本。数据存证信息中的键是数据存证id的哈希值;数据存证信息中的值是数据存证内容,其中,数据存证内容是与流转动作相关的信息。
在依据本公开内容的一个实施例中,存证目录信息采用键值对格式存储于全局账本。存证目录信息中的键包括溯源码的哈希值以及数据存证id的哈希值;存证目录信息中的值是经溯源码加密处理的目录信息,目录信息包括数据存证id的明文以及数据存证智能合约的标识。
在依据本公开内容的一个实施例中,针对产品的流转动作包括:报关、物流、出库以及入库中的一种或多种。
图8示出了依据本公开内容的用于保护数据隐私的区块链防伪溯源的设备800的方框图。从图8中可以看出,用于保护数据隐私的区块链防伪溯源的设备800包括处理器801和与处理器801耦接的存储器802。其中,存储器802存储有指令。指令在由处理器801执行时使得处理器801执行以下动作:
接收第一查询请求,其中,第一查询请求至少包括产品的溯源码;
验证第一查询请求;
在验证通过的情况下,使用存证目录智能合约从全局账本中返回至少一个存证目录信息,其中,存证目录信息包括与溯源码相对应的数据存证id以及相应的数据存证智能合约的标识;
接收至少一个第二查询请求,其中,第二查询请求包括数据存证id以及数据存证智能合约的标识;
验证第二查询请求;
在验证通过的情况下,使用数据存证智能合约从与数据存证智能合约相对应的私有账本中返回与溯源码相关的数据存证信息,其中,该数据存证信息包括流转动作内容。
在依据本公开内容的一个实施例中,在允许与溯源码相关的所有流转环节获取信息的情况下,验证第一查询请求进一步包括:
采用私钥对第一查询请求进行签名,使得签名后的第一查询请求包括溯源码以及与私钥相对应的证书,其中,在查询方是消费者时,私钥是消费者私钥,在查询方是除消费者之外的任一流转环节时,私钥是流转环节的私钥;
使用存证目录智能合约基于证书对签名后的第一查询请求进行验证;
在验证通过的情况下,使用存证目录智能合约来确定证书是否存在于第一白名单,其中,第一白名单包括允许获取存证目录信息的消费者或流转环节的证书;
在确定证书存在于白名单中时,确定验证通过。
在依据本公开内容的一个实施例中,验证第二查询请求进一步包括:
采用私钥对第二查询请求进行签名,使得签名后的第二查询请求包括数据存证id以及与私钥相对应的证书;
使用数据存证智能合约基于证书对签名后的第二查询请求进行验证;
在验证通过的情况下,使用数据存证智能合约来确定证书是否存在于第二白名单,其中,第二白名单包括允许获取流转动作内容的消费者或流转环节的证书;
在确定证书存在于第二白名单中时,确定验证通过。
在依据本公开内容的一个实施例中,使用存证目录智能合约从全局账本中返回与溯源码相关联的至少一个存证目录信息进一步包括:
使用存证目录智能合约在全局账本中查找与溯源码相关联的至少一个存证目录信息,其中,数据存证智能合约的标识被加密保存在存证目录信息中;
采用溯源码对存证目录信息进行解密;
返回与溯源码相对应的数据存证id以及数据存证智能合约的标识。
在依据本公开内容的一个实施例中,在仅允许与溯源码相关的下游流转环节获取流转动作内容的情况下,采用消费者查询方式验证第一查询请求进一步包括:
接收验证码;
在验证码被验证通过的情况下,确定消费者的查询次数是否超过阈值;
在确定消费者的查询次数未超过阈值的情况下,采用消费者私钥对第一查询请求进行签名,使得签名后的第一查询请求包括溯源码以及与消费者私钥相对应的证书;
使用存证目录智能合约基于证书对签名后的第一查询请求进行验证;
在验证通过的情况下,使用所述存证目录智能合约来确定所述证书是否存在于第三白名单,其中,所述第三白名单包括允许获取所述存证目录信息的消费者或流转环节的证书;
在确定所述证书存在于所述第三白名单中时,确定验证通过。
在依据本公开内容的一个实施例中,在仅允许与所述溯源码相关的下游流转环节获取流转动作内容的情况下,采用流转环节查询方式验证所述第一查询请求进一步包括:
采用任一流转环节的私钥对所述第一查询请求进行签名,使得签名后的第一查询请求包括所述溯源码以及与所述流转环节的私钥相对应的证书;
使用所述存证目录智能合约基于所述证书对所述签名后的第一查询请求进行验证;
在验证通过的情况下,使用所述存证目录智能合约来确定所述证书是否存在于所述第三白名单;
在确定所述证书存在于所述第三白名单中时,确定验证通过。
在依据本公开内容的一个实施例中,验证所述第二查询请求进一步包括:
采用所述流转环节的私钥对所述第二查询请求进行签名,使得签名后的第二查询请求包括所述数据存证id以及与所述流转环节的私钥相对应的证书;
使用所述数据存证智能合约基于所述证书对所述签名后的第二查询请求进行验证;
在验证通过的情况下,使用所述数据存证智能合约来确定所述证书是否存在于黑名单,其中,所述黑名单包括不允许获取与所述溯源码相关的下游流转动作内容的上游流转环节的证书;
在确定所述证书不存在于所述黑名单中时,确定验证通过。
在依据本公开内容的一个实施例中,所述流转动作内容包括:报关信息、物流信息、出库信息以及入库信息中的一种或多种。
综上所述,本文所提出的用于保护数据隐私的区块链防伪溯源的方法、设备以及相应的计算机可读存储介质一方面能够实现仅产品的整个流经路径中的流转环节和消费者能够获取该产品的溯源信息,另一方面能够进一步限定仅消费者能够获取该产品的所有溯源信息,而该产品的其他流转环节仅能够获取其上游的流转环节的溯源信息,以及限制上游的流转环节对其下游流转环节的溯源信息的获取。
以上所述仅为本公开的实施例可选实施例,并不用于限制本公开的实施例,对于本领域的技术人员来说,本公开的实施例可以有各种更改和变化。凡在本公开的实施例的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的实施例的保护范围之内。
虽然已经参考若干具体实施例描述了本公开的实施例,但是应该理解,本公开的实施例并不限于所公开的具体实施例。本公开的实施例旨在涵盖在所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
1.一种用于保护数据隐私的区块链防伪溯源的方法,所述方法包括:
基于产品的溯源码以及针对所述产品的流转动作,使用数据存证智能合约生成与所述溯源码相关的数据存证信息,其中,所述数据存证信息包括数据存证id以及数据存证内容,并且所述数据存证id与所述溯源码相对应;
将所述数据存证信息保存于与所述数据存证智能合约相对应的私有账本;
基于所述溯源码、所述数据存证id、以及所述数据存证智能合约的标识,使用存证目录智能合约生成与所述数据存证信息相关的存证目录信息;以及
将所述存证目录信息保存于全局账本。
2.根据权利要求1所述的方法,其中,所述数据存证信息采用键值对格式存储于所述私有账本。
3.根据权利要求2所述的方法,其中,所述数据存证信息中的键是所述数据存证id的哈希值;所述数据存证信息中的值是所述数据存证内容,其中,所述数据存证内容是与所述流转动作相关的信息。
4.根据权利要求1所述的方法,其中,所述存证目录信息采用键值对格式存储于所述全局账本。
5.根据权利要求4所述的方法,其中,所述存证目录信息中的键包括所述溯源码的哈希值以及所述数据存证id的哈希值;所述存证目录信息中的值是经所述溯源码加密处理的目录信息,所述目录信息包括所述数据存证id的明文以及所述数据存证智能合约的标识。
6.根据权利要求1所述的方法,其中,针对所述产品的所述流转动作包括:报关、物流、出库以及入库中的一种或多种。
7.一种用于保护数据隐私的区块链防伪溯源的方法,所述方法包括:
接收第一查询请求,其中,所述第一查询请求至少包括产品的溯源码;
验证所述第一查询请求;
在验证通过的情况下,使用存证目录智能合约从全局账本中返回至少一个存证目录信息,其中,所述存证目录信息包括与所述溯源码相对应的数据存证id以及相应的数据存证智能合约的标识;
接收至少一个第二查询请求,其中,所述第二查询请求包括所述数据存证id以及所述数据存证智能合约的标识;
验证所述第二查询请求;
在验证通过的情况下,使用所述数据存证智能合约从与所述数据存证智能合约相对应的私有账本中返回与所述溯源码相关的数据存证信息,其中,所述数据存证信息包括流转动作内容。
8.根据权利要求7所述的方法,其中,在允许与所述溯源码相关的所有流转环节获取信息的情况下,验证所述第一查询请求进一步包括:
采用私钥对所述第一查询请求进行签名,使得签名后的第一查询请求包括所述溯源码以及与所述私钥相对应的证书,其中,在查询方是消费者时,所述私钥是消费者私钥,在所述查询方是除所述消费者之外的任一流转环节时,所述私钥是所述流转环节的私钥;
使用所述存证目录智能合约基于所述证书对所述签名后的第一查询请求进行验证;
在验证通过的情况下,使用所述存证目录智能合约来确定所述证书是否存在于第一白名单,其中,所述第一白名单包括允许获取所述存证目录信息的消费者或流转环节的证书;
在确定所述证书存在于所述白名单中时,确定验证通过。
9.根据权利要求8所述的方法,其中,验证所述第二查询请求进一步包括:
采用所述私钥对所述第二查询请求进行签名,使得签名后的第二查询请求包括所述数据存证id、所述数据存证智能合约的标识以及与所述私钥相对应的证书;
使用所述数据存证智能合约基于所述证书对所述签名后的第二查询请求进行验证;
在验证通过的情况下,使用所述数据存证智能合约来确定所述证书是否存在于所述第二白名单,其中,所述第二白名单包括允许获取所述流转动作内容的消费者或流转环节的证书;
在确定所述证书存在于所述第二白名单中时,确定验证通过。
10.根据权利要求7所述的方法,其中,使用存证目录智能合约从全局账本中返回与所述溯源码相关联的至少一个存证目录信息进一步包括:
使用所述存证目录智能合约在所述全局账本中查找与所述溯源码相关联的至少一个存证目录信息,其中,所述数据存证智能合约的标识以及相应的数据存证id被加密保存在所述存证目录信息中;
采用所述溯源码生成的密钥对所述存证目录信息进行解密;
返回与所述溯源码相对应的数据存证id以及所述数据存证智能合约的标识。
11.根据权利要求7所述的方法,其中,在仅允许与所述溯源码相关的下游流转环节获取流转动作内容的情况下,采用消费者查询方式验证所述第一查询请求进一步包括:
接收验证码;
在所述验证码被验证通过的情况下,确定所述消费者的查询次数是否超过阈值;
在确定所述消费者的查询次数未超过所述阈值的情况下,采用消费者私钥对所述第一查询请求进行签名,使得签名后的第一查询请求包括所述溯源码以及与所述消费者私钥相对应的证书;
使用所述存证目录智能合约基于所述证书对所述签名后的第一查询请求进行验证;
在验证通过的情况下,使用所述存证目录智能合约来确定所述证书是否存在于第三白名单,其中,所述第三白名单包括允许获取所述存证目录信息的消费者或流转环节的证书;
在确定所述证书存在于所述第三白名单中时,确定验证通过。
12.根据权利要求11所述的方法,其中,在仅允许与所述溯源码相关的下游流转环节获取流转动作内容的情况下,采用流转环节查询方式验证所述第一查询请求进一步包括:
采用任一流转环节的私钥对所述第一查询请求进行签名,使得签名后的第一查询请求包括所述溯源码以及与所述流转环节的私钥相对应的证书;
使用所述存证目录智能合约基于所述证书对所述签名后的第一查询请求进行验证;
在验证通过的情况下,使用所述存证目录智能合约来确定所述证书是否存在于所述第三白名单;
在确定所述证书存在于所述第三白名单中时,确定验证通过。
13.根据权利要求12所述的方法,其中,验证所述第二查询请求进一步包括:
采用所述流转环节的私钥对所述第二查询请求进行签名,使得签名后的第二查询请求包括所述数据存证id以及与所述流转环节的私钥相对应的证书;
使用所述数据存证智能合约基于所述证书对所述签名后的第二查询请求进行验证;
在验证通过的情况下,使用所述数据存证智能合约来确定所述证书是否存在于黑名单,其中,所述黑名单包括不允许获取与所述溯源码相关的下游流转动作内容的上游流转环节的证书;
在确定所述证书不存在于所述黑名单中时,确定验证通过。
14.根据权利要求7所述的方法,其中,所述流转动作内容包括:报关信息、物流信息、出库信息以及入库信息中的一种或多种。
15.一种用于保护数据隐私的区块链防伪溯源的设备,所述设备包括:
处理器;以及
存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
基于产品的溯源码以及针对所述产品的流转动作,使用数据存证智能合约生成与所述溯源码相关的数据存证信息,其中,所述数据存证信息包括数据存证id以及数据存证内容,并且所述数据存证id与所述溯源码相对应;
将所述数据存证信息保存于与所述数据存证智能合约相对应的私有账本;
基于所述溯源码、所述数据存证id、以及所述数据存证智能合约的标识,使用存证目录智能合约生成与所述数据存证信息相关的存证目录信息;以及
将所述存证目录信息保存于全局账本。
16.根据权利要求15所述的设备,其中,所述数据存证信息采用键值对格式存储于所述私有账本。
17.根据权利要求16所述的设备,其中,所述数据存证信息中的键是所述数据存证id的哈希值;所述数据存证信息中的值是所述数据存证内容,其中,所述数据存证内容是与所述流转动作相关的信息。
18.根据权利要求15所述的设备,其中,所述存证目录信息采用键值对格式存储于所述全局账本。
19.根据权利要求18所述的设备,其中,所述存证目录信息中的键包括所述溯源码的哈希值以及所述数据存证id的哈希值;所述存证目录信息中的值是经所述溯源码加密处理的目录信息,所述目录信息包括所述数据存证id的明文以及所述数据存证智能合约的标识。
20.根据权利要求15所述的设备,其中,针对所述产品的所述流转动作包括:报关、物流、出库以及入库中的一种或多种。
21.一种用于保护数据隐私的区块链防伪溯源的设备,所述设备包括:
处理器;以及
存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
接收第一查询请求,其中,所述第一查询请求至少包括产品的溯源码;
验证所述第一查询请求;
在验证通过的情况下,使用存证目录智能合约从全局账本中返回至少一个存证目录信息,其中,所述存证目录信息包括与所述溯源码相对应的数据存证id以及相应的数据存证智能合约的标识;
接收至少一个第二查询请求,其中,所述第二查询请求包括所述数据存证id以及所述数据存证智能合约的标识;
验证所述第二查询请求;
在验证通过的情况下,使用所述数据存证智能合约从与所述数据存证智能合约相对应的私有账本中返回与所述溯源码相关的数据存证信息,其中,所述数据存证信息包括流转动作内容。
22.根据权利要求21所述的设备,其中,在允许与所述溯源码相关的所有流转环节获取信息的情况下,验证所述第一查询请求进一步包括:
采用私钥对所述第一查询请求进行签名,使得签名后的第一查询请求包括所述溯源码以及与所述私钥相对应的证书,其中,在查询方是消费者时,所述私钥是消费者私钥,在所述查询方是除所述消费者之外的任一流转环节时,所述私钥是所述流转环节的私钥;
使用所述存证目录智能合约基于所述证书对所述签名后的第一查询请求进行验证;
在验证通过的情况下,使用所述存证目录智能合约来确定所述证书是否存在于第一白名单,其中,所述第一白名单包括允许获取所述存证目录信息的消费者或流转环节的证书;
在确定所述证书存在于所述白名单中时,确定验证通过。
23.根据权利要求22所述的设备,其中,验证所述第二查询请求进一步包括:
采用所述私钥对所述第二查询请求进行签名,使得签名后的第二查询请求包括所述数据存证id、所述数据存证智能合约的标识以及与所述私钥相对应的证书;
使用所述数据存证智能合约基于所述证书对所述签名后的第二查询请求进行验证;
在验证通过的情况下,使用所述数据存证智能合约来确定所述证书是否存在于所述第二白名单,其中,所述第二白名单包括允许获取所述流转动作内容的消费者或流转环节的证书;
在确定所述证书存在于所述第二白名单中时,确定验证通过。
24.根据权利要求21所述的设备,其中,使用存证目录智能合约从全局账本中返回与所述溯源码相关联的至少一个存证目录信息进一步包括:
使用所述存证目录智能合约在所述全局账本中查找与所述溯源码相关联的至少一个存证目录信息,其中,所述数据存证智能合约的标识以及相应的数据存证id被加密保存在所述存证目录信息中;
采用所述溯源码生成的密钥对所述存证目录信息进行解密;
返回与所述溯源码相对应的数据存证id以及所述数据存证智能合约的标识。
25.根据权利要求21所述的设备,其中,在仅允许与所述溯源码相关的下游流转环节获取流转动作内容的情况下,采用消费者查询方式验证所述第一查询请求进一步包括:
接收验证码;
在所述验证码被验证通过的情况下,确定所述消费者的查询次数是否超过阈值;
在确定所述消费者的查询次数未超过所述阈值的情况下,采用消费者私钥对所述第一查询请求进行签名,使得签名后的第一查询请求包括所述溯源码以及与所述消费者私钥相对应的证书;
使用所述存证目录智能合约基于所述证书对所述签名后的第一查询请求进行验证;
在验证通过的情况下,使用所述存证目录智能合约来确定所述证书是否存在于第三白名单,其中,所述第三白名单包括允许获取所述存证目录信息的消费者或流转环节的证书;
在确定所述证书存在于所述第三白名单中时,确定验证通过。
26.根据权利要求25所述的设备,其中,在仅允许与所述溯源码相关的下游流转环节获取流转动作内容的情况下,采用流转环节查询方式验证所述第一查询请求进一步包括:
采用任一流转环节的私钥对所述第一查询请求进行签名,使得签名后的第一查询请求包括所述溯源码以及与所述流转环节的私钥相对应的证书;
使用所述存证目录智能合约基于所述证书对所述签名后的第一查询请求进行验证;
在验证通过的情况下,使用所述存证目录智能合约来确定所述证书是否存在于所述第三白名单;
在确定所述证书存在于所述第三白名单中时,确定验证通过。
27.根据权利要求26所述的设备,其中,验证所述第二查询请求进一步包括:
采用所述流转环节的私钥对所述第二查询请求进行签名,使得签名后的第二查询请求包括所述数据存证id以及与所述流转环节的私钥相对应的证书;
使用所述数据存证智能合约基于所述证书对所述签名后的第二查询请求进行验证;
在验证通过的情况下,使用所述数据存证智能合约来确定所述证书是否存在于黑名单,其中,所述黑名单包括不允许获取与所述溯源码相关的下游流转动作内容的上游流转环节的证书;
在确定所述证书不存在于所述黑名单中时,确定验证通过。
28.根据权利要求21所述的设备,其中,所述流转动作内容包括:报关信息、物流信息、出库信息以及入库信息中的一种或多种。
29.一种计算机可读存储介质,其具有存储在其上的计算机可读程序指令,所述计算机可读程序指令用于执行根据权利要求1至14中任一项所述的用于保护数据隐私的区块链防伪溯源的方法。
技术总结