支持低成本隐私保护的可链接去中心化众包方法及系统

未命名 08-27 阅读:112 评论:0


1.本发明属于区块链/隐私保护的技术领域,具体涉及一种支持低成本隐私保护的可链接去中心化众包方法及系统。


背景技术:

2.众包模式是一种通过互联网平台向大众征集解决方案的新型技术,随着互联网技术的高速发展,众包概念自2006年被提出以来,被作为一种分布式解决问题的机制,逐渐成为主流的商业模式。然而传统的众包应用大多依赖于中心化的系统架构,因此不可避免地会产生单点故障、数据泄露等缺陷,同时也容易受到分布式拒绝服务攻击和女巫攻击。近年来,随着区块链的高速发展,其去中心化的特性使其为解决众包系统中心化问题提供了可能性,因此基于区块链的众包系统成为了当前的研究热点。然而区块链具有公开透明的特性,严重威胁着众包系统参与者的隐私数据;同时由于在区块链上进行操作需要一定的开销,当众包系统的参与者规模增大时,会产生系统总开销过大、系统性能降低等问题。如论文《crowdbc:a blockchain-based decentralized framework for crowdsourcing》中,作者提出了一个基于区块链的去中心化众包系统的框架,实现了在没有可信第三方的情况下完成众包系统流程的具体方案,然而该方案并没有考虑到对任务内容、工人信息的隐私保护,特别是在如医疗、金融等场景下,任务内容本身也是一种需要保护的隐私数据。
3.在当前具有隐私保护的去中心化众包系统方案中,虽然实现了对隐私数据的保护,但其使用了复杂的密码算法,导致链上的计算成本大大增加,使得系统的可拓展性较差;如论文《zebralancer:private and anonymous crowdsourcing system atop open blockchain》中,作者提出了一种可链接身份认证的方案,在不诚实的工人重复提交时,其身份信息将被公开链接,结合零知识证明技术,解决了数据泄露和身份泄露两个基本挑战;然而,作为保护隐私的代价,其产生的链上成本过高,在参与的人群规模增加时,其性能将会大大降低,并不适用于大型众包系统。而在降低链上成本的方案中,又忽视了对用户隐私数据的保护,同时部分方案涉及到区块链底层构造的改动,无法兼容主流区块链例如以太坊;如论文《nf-crowd:nearly-free blockchain-based crowdsourcing》中,作者在基于区块链的去中心化众包系统中引入一个上传者的角色,提出链下聚合、链上验证的系统架构,在理想情况下,系统总开销将由o(n)复杂度降低为o(1)复杂度;然而该方案同样不具有隐私保护的功能,工人提交的解决方案并没有被保护,同时只要有一个不诚实的用户出现,系统开销又会降低至o(n)复杂度。
4.由此可见,现有技术对去中心化众包系统中的隐私保护研究还不够完善,并且因为效率和开销问题而不够实用,可拓展性差;同时没有考虑到链上成本问题,而部分降低成本的方案又牺牲了匿名性。因此现有方法中,如何在区块链上实现隐私保护和链上成本平衡的去中心化众包系统仍未有理想的解决方案。


技术实现要素:

5.基于以上现有技术的缺点与不足,本发明提出了一种支持低成本隐私保护的可链接去中心化众包方法及系统,本发明在保护区块链上数据隐私的同时,将系统总开销降低至常数级别的复杂度,同时引入防作弊的机制,允许任何人对作弊行为进行揭示,保证诚实用户匿名性的目的。
6.为了达到上述目的,本发明提供一种支持低成本隐私保护的可链接去中心化众包方法,包括下述步骤:
7.建立众包系统,确定交互实体;所述交互实体包括授权中心、任务请求者、工人及任务收集者;
8.众包系统各交互实体运行初始化及密钥生成算法,进行系统注册;
9.任务请求者设置任务,通过智能合约发布到区块链上并指定任务收集者进行任务收集;
10.工人接收任务,将完成任务得到的解决方案在区块链下发送给任务收集者;
11.任务收集者对收集的解决方案进行身份验证及有效数据筛选,并将结果通过智能合约发布到区块链上公开;
12.引入防作弊机制,各交互实体对发布在智能合约上的结果进行作弊揭示,若检查有作弊则将作弊结果通过智能合约发布到区块链上进行揭示;
13.任务收集者收集最终结果提交给任务请求者,任务请求者分发任务奖励。
14.作为优选的技术方案,所述众包系统各实体运行初始化及密钥生成算法,具体为:
15.令h(m)为安全的哈希函数,λ为访问策略,s为属性集合,定义λ(s)=1为s满足λ;
16.令cp=(cp.setup,cp.keygen,cp.encrypt,cp.decrypt)为密文策略基于属性的加密处理,即cp处理;其中,cp.setup(λ,u)为cp处理的设置算法,输入为安全参数λ和属性空间描述u,输出为公开参数mpk和主私钥msk,用于初始化cp处理;cp.keygen(msk,si)是cp处理的秘钥生成算法,输入为主私钥msk和用户i的属性集合si={id,s1,...,sn},输出属性秘钥用于生成属性秘钥;cp.encrypt(mpk,m,λ)是cp处理的加密算法,输入为公开参数mpk、需要加密的明文消息m和由任务请求者制定的访问策略λ,输出为发布任务的密文ct,所述密文只有满足访问策略λ的工人才能解密,用于加密任务内容;是cp处理的解密算法,输入为公开参数mpk、发布任务的密文ct和属性秘钥输出为发布任务的明文内容m或错误符号

,用于解密已加密的任务;
17.令zk=(zk.setup,zk.prover,zk.verifier)为zk-snark零知识证明处理,即zk处理,其中,为zk处理的设置算法,输入安全参数λ和np语言输出公共参考字符串crs,用于初始化zk处理;zk.prover(x,w,crs)为zk处理的证明算法,输入声明x、秘密w和公共参考字符串crs,输出证明π,用于生成证明;zk.verifier(x,π,crs)为zk处理的验证算法,输入声明x、证明π和公共参考字符串crs,输出0或1,用于验证证明的有效性;
18.所述授权中心运行cp.setup(λ,u)设置算法,生成公开参数mpk和主私钥msk;运行设置算法,生成公共参考字符串crs;
19.所述任务请求者及工人通过授权中心进行系统注册。
20.作为优选的技术方案,所述进行系统注册,具体为:
21.授权中心运行cp.keygen(msk,si)密钥生成算法,为工人wi生成与其自身属性集合si={id,s1,...,sn}所对应的属性秘钥并分发给工人wi;
22.授权中心运行密钥生成算法,为任务请求者ri生成与其自身属性集合对应的属性秘钥并分发给任务请求者ri;
23.所述任务收集者ci是工人,其注册方式与工人一致,仅用于进行任务收集。
24.作为优选的技术方案,所述任务请求者设置任务,通过智能合约发布到区块链上并指定任务收集者进行任务收集,具体为:
25.任务请求者设置任务标识符为tid的任务明文task和访问策略λ,运行cp.encrypt(mpk,task,λ)加密算法,获得任务task的密文ct
task
,将ct
task
上传至星际文件系统ipfs获得内容地址cid
task

26.运行cp.encrypt(mpk,cid
task
,λ)加密算法获得cid
task
的密文ct
cid
,设置任务奖励reward、押金deposit、任务截止时间ddl、任务最大被接受数量max,并连同ct
cid
一起通过智能合约构建一笔交易发送到区块链上并指定任务收集者ci进行任务收集。
27.作为优选的技术方案,所述工人接收任务,将完成任务得到的解决方案在区块链下发送给任务收集者,具体为:
28.工人wi捕获到任务请求者发布的任务信息后,首先判断访问策略λ是否满足λ(s)=1;
29.若访问策略满足时,工人运行解密算法,获得密文ct
cid
对应的内容地址cid
task
,从该地址下载获得任务密文ct
task
,再次运行解密算法,获得任务明文task;
30.工人在任务截止时间ddl之前完成任务,运行cp.encrypt(mpk,sln,λ)加密算法,获得任务解决方案sln的密文ct
sln
,将ct
sln
上传至星际文件系统ipfs获得内容地址cid
sln
,其中访问策略λ只有该任务请求者满足要求;
31.计算工人的一次性标识符输入消息m=cid
task
||uid||cid
sln

32.计算t1=h(cid
task
,uid),t2=h(cid
task
,uid,cid
sln
);
33.令秘密声明x=(t1,t2,λ,mpk,uid),对于np语言:
[0034][0035]
其中,tid为任务标识符,h()为哈希函数;t1为工人身份认证信息η的第一标签,t2为工人身份认证信息η的第二标签,∧为逻辑与运算;
[0036]
工人wi运行zk.prover(x,w,crs)生成证明π,获得身份认证信息η=(t1,t2,π),并将解决方案的元数据τi=(m,η)在区块链下发送给任务收集者ci。
[0037]
作为优选的技术方案,任务收集者ci收集完工人在区块链下发送的解决方案元数据后,运行zk.verifier(x,π,crs)验证算法对所有解决方案元数据t={τ1,

,τn}中的身份认证信息η进行身份验证,过滤掉所有输出为0的不具有合法身份认证信息的元数据,保留
输出为1的具有合法认证信息的元数据;
[0038]
对于保留的具有合法认证信息的元数据,对任意两个工人的身份认证信息对于保留的具有合法认证信息的元数据,对任意两个工人的身份认证信息计算若输出为1,则代表两者相等,说明其来自于同一工人的提交,将其全部过滤掉;若两者不相等,则代表来自不同工人的提交,为有效元数据进行保留;
[0039]
任务收集者将筛选出的有效元数据和过滤掉的元数据分别整合为两棵merkle树,将两棵merkle树上传至星际文件系统ipfs获得内容地址cid
tree
,将两棵merkle树的根和cid
tree
通过智能合约发送到区块链上进行公开。
[0040]
作为优选的技术方案,所述防作弊机制具体为:
[0041]
各交互实体从cid
tree
下载获得完整的merkle树,运行zk.verifier(x,π,crs)对所有叶子节点的值,即解决方案元数据t={τ1,...,τn}中的身份认证信息η,筛选出所有输出为0的不具有合法身份认证信息的元数据,再对任意两个叶子节点的值为0的不具有合法身份认证信息的元数据,再对任意两个叶子节点的值计算筛选出所有输出为1的重复提交数据,将筛选出的不具有合法身份认证信息的元数据和重复提交数据通过智能合约在区块链上进行揭示;
[0042]
同时,工人wi从cid
tree
下载获得完整的merkle树,检查其中是否存在自身提交的解决方案元数据;若不存在,则通过智能合约在区块链上提交解决方案元数据τi=(m,η)给任务收集者ci,此处产生的开销将由工人wi和任务收集者ci共同承担。
[0043]
作为优选的技术方案,所述任务收集者任务收集前在智能合约中预存押金;所述预存押金与任务请求者设置的押金数额相等;
[0044]
所述任务请求者分发任务奖励,具体为:
[0045]
任务请求者根据最终结果,检查区块链上是否有与该任务关联的作弊揭示;
[0046]
若没有作弊,则任务奖励reward全额发送给任务收集者并退返预存押金;
[0047]
若有交互实体揭示作弊,则交互实体进行作弊揭示所产生的开销将全数由被揭示作弊的任务收集者承担,从该任务收集者的预存押金中扣除并发放给交互实体;同时任务请求者发放减去扣除押金的任务奖励及剩余押金给该任务收集者;
[0048]
若有工人揭示任务收集者未收集其提交的解决方案,则工人在区块链上提交解决方案元数据所产生的开销由工人和该任务收集者各自承担50%,该任务收集者承担部分从预存押金中扣除并发放给工人;任务请求者发放扣除承担押金的任务奖励及剩余押金给该任务收集者。
[0049]
另一方面,本发明提供一种支持低成本隐私保护的可链接去中心化众包系统,应用于上述的支持低成本隐私保护的可链接去中心化众包方法,包括系统建立模块、初始注册模块、任务发布模块、任务解决模块、任务收集模块、作弊揭示模块及奖励分发模块;
[0050]
所述系统建立模块用于建立众包系统,确定交互实体;所述交互实体包括授权中心、任务请求者、工人及任务收集者;
[0051]
所述初始注册模块用于众包系统各交互实体运行初始化及密钥生成算法,进行系统注册;
[0052]
所述任务发布模块用于任务请求者设置任务,通过智能合约发布到区块链上并指
定任务收集者进行任务收集;
[0053]
所述任务解决模块用于工人接收任务,将完成任务得到的解决方案在区块链下发送给任务收集者;
[0054]
所述任务收集模块用于任务收集者对收集的解决方案进行身份验证及有效数据筛选,并将结果通过智能合约发布到区块链上公开;
[0055]
所述作弊揭示模块用于引入防作弊机制,各交互实体均可对发布在智能合约上的结果进行作弊揭示,若检查有作弊则将作弊结果通过智能合约发布到区块链上进行揭示;
[0056]
所述奖励分发模块用于任务收集者收集最终结果提交给任务请求者,任务请求者分发任务奖励。
[0057]
还一方面,提供一种计算机可读存储介质,存储有程序,所述程序被处理器执行时,实现上述的支持低成本隐私保护的可链接去中心化众包方法。
[0058]
本发明与现有技术相比,具有如下优点和有益效果:
[0059]
1、本发明针对当前去中心化众包系统方案的访问控制需求,使用密文策略基于属性加密(cp-abe)方法,允许任务请求者对任务设置访问策略,保证其发布的任务明文内容是加密的,实现只允许属性满足访问策略的用户才能获得任务明文内容的目的。
[0060]
2、本发明针对降低链上计算开销的需求,将链上提交任务并提供证明的复杂行为转移到链下进行,由于任务收集者在链下聚合工人提交的解决方案元数据,仅需在链上公开一个常数级别大小的证明,以证明任务收集者已正确聚合链下收集的信息,在理想的情况下可将o(n)复杂度的系统成本降低至o(1)复杂度,实现降低系统链上开销的目的。
[0061]
3、本发明针对链下身份认证的隐私保护和可验证的需求,根据zk-snark零知识证明方案,使得工人只有根据所领取任务的和自身的证书生成的身份认证信息才能被视为有效的,并使得其身份认证信息不会泄露工人的任何身份信息,不仅拥有可验证性,还具有保证用户隐私的效果。
[0062]
4、本发明针对防止工人链下重复提交解决方案行为的需求,实现重复提交公开可链接的特性;允许任何人在不借助第三方帮助的情况下,辨别出同一工人在同一任务中的重复提交,同时可以揭示其身份认证信息;若某一工人在同一任务仅进行一次提交或在不同的任务中进行提交,则其身份认证信息无法被关联和链接,实现在不诚实工人的重复提价行为可以被公开揭示的前提下,依然能够保证诚实工人匿名性的效果。
[0063]
5、本发明针对防止任务收集者链下作弊的需求,通过在公示期内任何人都可以辨别和揭示任务收集者的不诚实行为,并且揭示产生的开销将由任务收集者承担的机制,实现了任务奖励的公平性和防作弊的效果。
附图说明
[0064]
为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0065]
图1为本发明实施例中支持低成本隐私保护的可链接去中心化众包方法的流程图;
[0066]
图2为本发明实施例中众包系统的应用场景示意图;
[0067]
图3为本发明实施例中支持低成本隐私保护的可链接去中心化众包系统的结构图;
[0068]
图4为本发明实施例中计算机可读存储介质的结构示意图。
具体实施方式
[0069]
为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0070]
在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本技术所描述的实施例可以与其它实施例相结合。
[0071]
当前基于区块链的去中心化众包系统方案中,具有隐私保护的方案由于其复杂的加解密而难以兼顾链上开销的控制,可拓展性差,难以应用到大型众包任务中;而具有良好可拓展性的方案中,又牺牲了隐私保护功能。为解决以上的难题,本发明提出了一种支持低成本隐私保护的可链接去中心化众包方法,如图1所示,包括下述步骤:
[0072]
s1、建立众包系统,确定交互实体;本方法设计四个交互实体,分别为:授权中心(registration authority,ra)、任务请求者(requester)、工人(worker)及任务收集者(collecter);
[0073]
s2、众包系统各交互实体运行初始化及密钥生成算法,进行系统注册;
[0074]
s3、任务请求者设置任务,通过智能合约发布到区块链上并指定任务收集者进行任务收集;
[0075]
s4、工人接收任务,将完成任务得到的解决方案在区块链下发送给任务收集者;
[0076]
s5、任务收集者对收集的解决方案进行身份验证及有效数据筛选,并将结果通过智能合约发布到区块链上公开;
[0077]
s6、引入防作弊机制,各交互实体均可对发布在智能合约上的结果进行作弊揭示,若检查有作弊则将作弊结果通过智能合约发布到区块链上进行揭示;
[0078]
s7、任务收集者收集最终结果提交给任务请求者,任务请求者分发任务奖励。
[0079]
具体的,步骤s1中,授权中心负责收集和验证用户的身份及凭证;任务请求者是为了获得合适的解决方案而需要发布任务的人或组织;工人是通过领取任务并在规定的时间内完成和提交解决方案以获得任务奖励的大众;任务收集者属于广义的工人,在本方法中主要负责任务收集。
[0080]
如图2所示,在一种一对一对多的应用场景中,设置一个授权中心、一个任务请求者、一个任务收集者和多个用户,来实现区块链众包系统的构建。
[0081]
步骤s2中,首先在众包系统中进行初始化,令h(m)为安全的哈希函数,λ为访问策略,s为属性集合,定义λ(s)=1为s满足λ;
[0082]
令cp=(cp.setup,cp.keygen,cp.encrypt,cp.decrypt)为密文策略基于属性的
加密处理,即cp处理;其中,cp.setup(λ,u)为cp处理的设置算法,输入为安全参数λ和属性空间描述u,输出为公开参数mpk和主私钥msk,用于初始化cp处理;cp.keygen(msk,si)是cp处理的秘钥生成算法,输入为主私钥msk和用户i的属性集合si={id,s1,...,sn},输出属性秘钥用于生成属性秘钥;cp.encrypt(mpk,m,λ)是cp处理的加密算法,输入为公开参数mpk、需要加密的明文消息m和由任务请求者制定的访问策略λ,输出为发布任务的密文ct,所述密文只有满足访问策略λ的工人才能解密,用于加密任务内容;是cp处理的解密算法,输入为公开参数mpk、发布任务的密文ct和属性秘钥输出为发布任务的明文内容m或错误符号

,用于解密已加密的任务;其中i是正整数,错误符号

用于标识解密错误的情况。
[0083]
令zk=(zk.setup,zk.prover,zk.verifier)为zk-snark零知识证明处理,即zk处理,其中,为zk处理的设置算法,输入安全参数λ和np语言输出公共参考字符串crs,用于初始化zk处理;zk.prover(x,w,crs)为zk处理的证明算法,输入声明x、秘密w和公共参考字符串crs,输出证明π,用于生成证明;zk.verifier(x,π,crs)为zk处理的验证算法,输入声明x、证明π和公共参考字符串crs,输出0或1,用于验证证明的有效性;
[0084]
接着进行系统注册,授权中心运行cp.setup(λ,u)设置算法初始化cp处理,生成公开参数mpk和主私钥msk;运行设置算法初始化zk处理,生成公共参考字符串crs;
[0085]
然后任务请求者及工人通过授权中心进行系统注册,具体的:
[0086]
授权中心运行cp.keygen(msk,si)密钥生成算法,为工人wi生成与其自身属性集合si={id,s1,...,sn}所对应的属性秘钥并分发给工人wi;
[0087]
授权中心运行密钥生成算法,为任务请求者ri生成与其自身属性集合对应的属性秘钥并分发给任务请求者ri;
[0088]
由于任务收集者ci本质上是工人,所以其注册方式与工人一致,仅用于进行任务收集。
[0089]
进一步的,步骤s3中,任务请求者设置任务标识符为tid的任务明文task和访问策略λ,运行cp.encrypt(mpk,task,λ)加密算法,获得任务task的密文ct
task
,将ct
task
上传至星际文件系统ipfs获得内容地址cid
task

[0090]
运行cp.encrypt(mpk,cid
task
,λ)加密算法获得cid
task
的密文ct
cid
,设置任务奖励reward、押金deposit、任务截止时间ddl、任务最大被接受数量max,并连同ct
cid
一起通过智能合约构建一笔交易发送到区块链上并指定任务收集者ci进行任务收集。
[0091]
步骤s4中,通过任务收集者这个角色将本应在区块链上进行的解决方案提交转移至区块链下进行实现,具体为:
[0092]
工人wi捕获到任务请求者发布的任务信息后,首先判断访问策略λ是否满足λ(s)=1;
[0093]
若访问策略满足时,工人运行解密算法,获得密文ct
cid
对应的内容地址cid
task
,从该地址下载获得任务密文ct
task
,再次运行
解密算法,获得任务明文task;
[0094]
工人在任务截止时间ddl之前完成任务,运行cp.encrypt(mpk,sln,λ)加密算法,获得任务解决方案sln的密文ct
sln
,将ct
sln
上传至星际文件系统ipfs获得内容地址cid
sln
,其中访问策略λ只有该任务请求者满足要求;
[0095]
计算工人的一次性标识符输入消息m=cid
task
||uid||cid
sln

[0096]
计算t1=h(cid
task
,uid),t2=h(cid
task
,uid,cid
sln
);
[0097]
令秘密声明x=(t1,t2,λ,mpk,uid),对于np语言:
[0098][0099]
其中,tid为任务标识符,h()为哈希函数;t1为工人身份认证信息η的第一标签,t2为工人身份认证信息η的第二标签,∧为逻辑与运算;
[0100]
工人wi运行zk.prover(x,w,crs)生成证明π,获得身份认证信息η=(t1,t2,π),并将解决方案的元数据τi=(m,η)在区块链下发送给任务收集者ci。
[0101]
进一步的,步骤s5中,任务收集者ci收集完工人在区块链下发送的解决方案元数据后,运行zk.verifier(x,π,crs)验证算法对所有解决方案元数据t={τ1,

,τn}中的身份认证信息η进行身份验证,过滤掉所有输出为0的不具有合法身份认证信息的元数据,保留输出为1的具有合法认证信息的元数据;
[0102]
对于保留的具有合法认证信息的元数据,对任意两个工人的身份认证信息对于保留的具有合法认证信息的元数据,对任意两个工人的身份认证信息计算若输出为1,则代表两者相等,说明其来自于同一工人的提交,将其全部过滤掉;若两者不相等,则代表来自不同工人的提交,为有效元数据进行保留;
[0103]
任务收集者将筛选出的有效元数据和过滤掉的元数据分别整合为两棵merkle树,将两棵merkle树上传至星际文件系统ipfs获得内容地址cid
tree
,将两棵merkle树的根和cid
tree
通过智能合约发送到区块链上进行公开。
[0104]
进一步的,在区块链下收集完任务后,由于任务收集者可能会出现不诚实行为,例如故意排除一些工人的解决方案,或者没有对收集结果进行检查,造成结果不准确,因此步骤s6引入防作弊机制,具体为:
[0105]
各交互实体从cid
tree
下载获得完整的merkle树,运行zk.verifier(x,π,crs)对所有叶子节点的值,即解决方案元数据t={τ1,...,n}中的身份认证信息η,筛选出所有输出为0的不具有合法身份认证信息的元数据,再对任意两个叶子节点的值0的不具有合法身份认证信息的元数据,再对任意两个叶子节点的值计算筛选出所有输出为1的重复提交数据,将筛选出的不具有合法身份认证信息的元数据和重复提交数据通过智能合约在区块链上进行揭示;
[0106]
同时,工人wi从cid
tree
下载获得完整的merkle树,检查其中是否存在自身提交的解决方案元数据;若不存在,则通过智能合约在区块链上提供解决方案元数据τi=(m,η)给任务收集者ci,此处产生的开销将由工人wi和任务收集者ci共同承担。
[0107]
因为引入了防作弊机制,因此任何人都可以代替任务收集者对收集结果进行检查,若检查出不诚实行为,则其可以从任务收集者任务收集前在智能合约中预存的押金中获取一部分作为揭示作弊行为的奖励,任务请求者也可以在任务奖励中扣除这一部分以对任务收集者进行惩罚;其中,任务收集者预存押金与任务请求者设置的押金数额相等。
[0108]
步骤s7分发奖励的步骤具体为:
[0109]
任务请求者根据最终结果,检查区块链上是否有与该任务关联的作弊揭示;
[0110]
若没有作弊,则任务奖励reward全额发送给任务收集者并退返预存押金;
[0111]
若有交互实体揭示作弊,则交互实体进行作弊揭示所产生的开销将全数由被揭示作弊的任务收集者承担,从该任务收集者的预存押金中扣除并发放给交互实体;同时任务请求者发放减去扣除押金的任务奖励及剩余押金给该任务收集者;
[0112]
若有工人揭示任务收集者未收集其提交的解决方案,则工人在区块链上提交解决方案元数据所产生的开销由工人和该任务收集者各自承担50%,该任务收集者承担部分从预存押金中扣除并发放给工人;任务请求者发放扣除承担押金的任务奖励及剩余押金给该任务收集者。
[0113]
与当前基于区块链的去中心化众包系统相比,本发明通过设置访问策略,保证了匿名的基本需求;同时引入任务收集者角色在区块链下将解决方案进行收集,解决了区块链上成本过高的问题,将随着人群增长而线性增长的系统总开销降低至常数级别,并且引入防作弊机制,允许所有交互实体对工人提交的解决方案进行检查,若有不诚实的工人在同个任务中多次提交,则其可以被公开链接;而对诚实工人来说,在不同的任务中各自提交解决方案是不会被任何人链接到同一个身份上的,实现访问控制、隐私保护和成本控制的目的。
[0114]
需要说明的是,对于前述的各方法实施例,为了简便描述,将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。
[0115]
基于与上述实施例中的支持低成本隐私保护的可链接去中心化众包方法相同的思想,本发明还提供支持低成本隐私保护的可链接去中心化众包系统,该系统可用于执行上述支持低成本隐私保护的可链接去中心化众包方法。为了便于说明,支持低成本隐私保护的可链接去中心化众包系统实施例的结构示意图中,仅仅示出了与本发明实施例相关的部分,本领域技术人员可以理解,图示结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0116]
如图3所示,本发明另一个实施例提供了一种支持低成本隐私保护的可链接去中心化众包系统,包括系统建立模块、初始注册模块、任务发布模块、任务解决模块、任务收集模块、作弊揭示模块及奖励分发模块;
[0117]
其中,系统建立模块用于建立众包系统,确定交互实体;所述交互实体包括授权中心、任务请求者、工人及任务收集者;
[0118]
初始注册模块用于众包系统各交互实体运行初始化及密钥生成算法,进行系统注册;
[0119]
任务发布模块用于任务请求者设置任务,通过智能合约发布到区块链上并指定任务收集者进行任务收集;
[0120]
任务解决模块用于工人接收任务,将完成任务得到的解决方案在区块链下发送给任务收集者;
[0121]
任务收集模块用于任务收集者对收集的解决方案进行身份验证及有效数据筛选,并将结果通过智能合约发布到区块链上公开;
[0122]
作弊揭示模块用于引入防作弊机制,各交互实体均可对发布在智能合约上的结果进行作弊揭示,若检查有作弊则将作弊结果通过智能合约发布到区块链上进行揭示;
[0123]
奖励分发模块用于任务收集者收集最终结果提交给任务请求者,任务请求者分发任务奖励。
[0124]
需要说明的是,本发明的支持低成本隐私保护的可链接去中心化众包系统与本发明的支持低成本隐私保护的可链接去中心化众包方法一一对应,在上述支持低成本隐私保护的可链接去中心化众包方法的实施例阐述的技术特征及其有益效果均适用于支持低成本隐私保护的可链接去中心化众包系统的实施例中,具体内容可参见本发明方法实施例中的叙述,此处不再赘述,特此声明。
[0125]
此外,上述实施例的支持低成本隐私保护的可链接去中心化众包系统的实施方式中,各程序模块的逻辑划分仅是举例说明,实际应用中可以根据需要,例如出于相应硬件的配置要求或者软件的实现的便利考虑,将上述功能分配由不同的程序模块完成,即将所述支持低成本隐私保护的可链接去中心化众包系统的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分功能。
[0126]
如图4所示,在一个实施例中,提供了一种计算机可读存储介质,存储有程序于存储器中,所述程序被处理器执行时,实现所述的支持低成本隐私保护的可链接去中心化众包方法,具体为:
[0127]
建立众包系统,确定交互实体,包括授权中心、任务请求者、工人及任务收集者;
[0128]
众包系统各交互实体运行初始化及密钥生成算法,进行系统注册;
[0129]
任务请求者设置任务,通过智能合约发布到区块链上并指定任务收集者进行任务收集;
[0130]
工人接收任务,将完成任务得到的解决方案在区块链下发送给任务收集者;
[0131]
任务收集者对收集的解决方案进行身份验证及有效数据筛选,并将结果通过智能合约发布到区块链上公开;
[0132]
引入防作弊机制,各交互实体均可对发布在智能合约上的结果进行作弊揭示,若检查有作弊则将作弊结果通过智能合约发布到区块链上进行揭示;
[0133]
任务收集者收集最终结果提交给任务请求者,任务请求者分发任务奖励。
[0134]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。
[0135]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0136]
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

技术特征:
1.支持低成本隐私保护的可链接去中心化众包方法,其特征在于,包括下述步骤:建立众包系统,确定交互实体;所述交互实体包括授权中心、任务请求者、工人及任务收集者;众包系统各交互实体运行初始化及密钥生成算法,进行系统注册;任务请求者设置任务,通过智能合约发布到区块链上并指定任务收集者进行任务收集;工人接收任务,将完成任务得到的解决方案在区块链下发送给任务收集者;任务收集者对收集的解决方案进行身份验证及有效数据筛选,并将结果通过智能合约发布到区块链上公开;引入防作弊机制,各交互实体对发布在智能合约上的结果进行作弊揭示,若检查有作弊则将作弊结果通过智能合约发布到区块链上进行揭示;任务收集者收集最终结果提交给任务请求者,任务请求者分发任务奖励。2.根据权利要求1所述的支持低成本隐私保护的可链接去中心化众包方法,其特征在于,所述众包系统各实体运行初始化及密钥生成算法,具体为:令h(m)为安全的哈希函数,λ为访问策略,s为属性集合,定义λ(s)=1为s满足λ;令cp=(cp.setup,cp.keygen,cp.encrypt,cp.decrypt)为密文策略基于属性的加密处理,即cp处理;其中,cp.setup(λ,u)为cp处理的设置算法,输入为安全参数λ和属性空间描述u,输出为公开参数mpk和主私钥msk,用于初始化cp处理;cp.keygen(msk,s
i
)是cp处理的秘钥生成算法,输入为主私钥msk和用户i的属性集合s
i
={id,s1,...,s
n
},输出属性秘钥用于生成属性秘钥;cp.encrypt(mpk,m,λ)是cp处理的加密算法,输入为公开参数mpk、需要加密的明文消息m和由任务请求者制定的访问策略λ,输出为发布任务的密文ct,所述密文只有满足访问策略λ的工人才能解密,用于加密任务内容;是cp处理的解密算法,输入为公开参数mpk、发布任务的密文ct和属性秘钥输出为发布任务的明文内容m或错误符号

,用于解密已加密的任务;令zk=(zk.setup,zk.prover,zk.verifier)为zk-snark零知识证明处理,即zk处理,其中,为zk处理的设置算法,输入安全参数λ和np语言输出公共参考字符串crs,用于初始化zk处理;zk.prover(x,w,crs)为zk处理的证明算法,输入声明x、秘密w和公共参考字符串crs,输出证明π,用于生成证明;zk.verifier(x,π,crs)为zk处理的验证算法,输入声明x、证明π和公共参考字符串crs,输出0或1,用于验证证明的有效性;所述授权中心运行cp.setup(λ,u)设置算法,生成公开参数mpk和主私钥msk;运行设置算法,生成公共参考字符串crs;所述任务请求者及工人通过授权中心进行系统注册。3.根据权利要求2所述的支持低成本隐私保护的可链接去中心化众包方法,其特征在于,所述进行系统注册,具体为:授权中心运行cp.keygen(msk,s
i
)密钥生成算法,为工人w
i
生成与其自身属性集合s
i
={id,s1,...,s
n
}所对应的属性秘钥并分发给工人w
i
;授权中心运行密钥生成算法,为任务请求者r
i
生成与其自身属性集合对应的属性秘钥并分发给任务请求者r
i

所述任务收集者c
i
是工人,其注册方式与工人一致,仅用于进行任务收集。4.根据权利要求3所述的支持低成本隐私保护的可链接去中心化众包方法,其特征在于,所述任务请求者设置任务,通过智能合约发布到区块链上并指定任务收集者进行任务收集,具体为:任务请求者设置任务标识符为tid的任务明文task和访问策略λ,运行cp.encrypt(mpk,task,λ)加密算法,获得任务task的密文ct
task
,将ct
task
上传至星际文件系统ipfs获得内容地址cid
task
;运行cp.encrypt(mpk,cid
task
,λ)加密算法获得cid
task
的密文ct
cid
,设置任务奖励reward、押金deposit、任务截止时间ddl、任务最大被接受数量max,并连同ct
cid
一起通过智能合约构建一笔交易发送到区块链上并指定任务收集者c
i
进行任务收集。5.根据权利要求4所述的支持低成本隐私保护的可链接去中心化众包方法,其特征在于,所述工人接收任务,将完成任务得到的解决方案在区块链下发送给任务收集者,具体为:工人w
i
捕获到任务请求者发布的任务信息后,首先判断访问策略λ是否满足λ(s)=1;若访问策略满足时,工人运行解密算法,获得密文ct
cid
对应的内容地址cid
task
,从该地址下载获得任务密文ct
task
,再次运行解密算法,获得任务明文task;工人在任务截止时间ddl之前完成任务,运行cp.encrypt(mpk,sln,λ)加密算法,获得任务解决方案sln的密文ct
sln
,将ct
sln
上传至星际文件系统ipfs获得内容地址cid
sln
,其中访问策略λ只有该任务请求者满足要求;计算工人的一次性标识符输入消息m=cid
task
||uid||cid
sln
;计算t1=h(cid
task
,uid),t2=h(cid
task
,uid,cid
sln
);令秘密声明x=(t1,t2,λ,mpk,uid),对于np语言:其中,tid为任务标识符,h()为哈希函数;t1为工人身份认证信息η的第一标签,t2为工人身份认证信息η的第二标签,λ为逻辑与运算;工人w
i
运行zk.prover(x,w,crs)生成证明π,获得身份认证信息η=(t1,t2,π),并将解决方案的元数据τ
i
=(m,η)在区块链下发送给任务收集者c
i
。6.根据权利要求5所述的支持低成本隐私保护的可链接去中心化众包方法,其特征在于,任务收集者c
i
收集完工人在区块链下发送的解决方案元数据后,运行zk.verifier(x,π,crs)验证算法对所有解决方案元数据t={τ1,...,τ
n
}中的身份认证信息η进行身份验证,过滤掉所有输出为0的不具有合法身份认证信息的元数据,保留输出为1的具有合法认证信息的元数据;对于保留的具有合法认证信息的元数据,对任意两个工人的身份认证信息对于保留的具有合法认证信息的元数据,对任意两个工人的身份认证信息计算若输出为1,则代表两者相等,说明其来自于同一工人的提交,将其全部过滤掉;若两者不相等,则代表来自不同工人的提交,为有效元数据进行保留;
任务收集者将筛选出的有效元数据和过滤掉的元数据分别整合为两棵merkle树,将两棵merkle树上传至星际文件系统ipfs获得内容地址cid
tree
,将两棵merkle树的根和cid
tree
通过智能合约发送到区块链上进行公开。7.根据权利要求6所述的支持低成本隐私保护的可链接去中心化众包方法,其特征在于,所述防作弊机制具体为:各交互实体从cid
tree
下载获得完整的merkle树,运行zk.verifier(x,π,crs)对所有叶子节点的值,即解决方案元数据t={τ1,...,τ
n
}中的身份认证信息η,筛选出所有输出为0的不具有合法身份认证信息的元数据,再对任意两个叶子节点的值不具有合法身份认证信息的元数据,再对任意两个叶子节点的值计算筛选出所有输出为1的重复提交数据,将筛选出的不具有合法身份认证信息的元数据和重复提交数据通过智能合约在区块链上进行揭示;同时,工人w
i
从cid
tree
下载获得完整的merkle树,检查其中是否存在自身提交的解决方案元数据;若不存在,则通过智能合约在区块链上提交解决方案元数据τ
i
=(m,η)给任务收集者c
i
,此处产生的开销将由工人w
i
和任务收集者c
i
共同承担。8.根据权利要求7所述的支持低成本隐私保护的可链接去中心化众包方法,其特征在于,所述任务收集者任务收集前在智能合约中预存押金;所述预存押金与任务请求者设置的押金数额相等;所述任务请求者分发任务奖励,具体为:任务请求者根据最终结果,检查区块链上是否有与该任务关联的作弊揭示;若没有作弊,则任务奖励reward全额发送给任务收集者并退返预存押金;若有交互实体揭示作弊,则交互实体进行作弊揭示所产生的开销将全数由被揭示作弊的任务收集者承担,从该任务收集者的预存押金中扣除并发放给交互实体;同时任务请求者发放减去扣除押金的任务奖励及剩余押金给该任务收集者;若有工人揭示任务收集者未收集其提交的解决方案,则工人在区块链上提交解决方案元数据所产生的开销由工人和该任务收集者各自承担50%,该任务收集者承担部分从预存押金中扣除并发放给工人;任务请求者发放扣除承担押金的任务奖励及剩余押金给该任务收集者。9.支持低成本隐私保护的可链接去中心化众包系统,其特征在于,应用于权利要求1-8中任一项所述的支持低成本隐私保护的可链接去中心化众包方法,包括系统建立模块、初始注册模块、任务发布模块、任务解决模块、任务收集模块、作弊揭示模块及奖励分发模块;所述系统建立模块用于建立众包系统,确定交互实体;所述交互实体包括授权中心、任务请求者、工人及任务收集者;所述初始注册模块用于众包系统各交互实体运行初始化及密钥生成算法,进行系统注册;所述任务发布模块用于任务请求者设置任务,通过智能合约发布到区块链上并指定任务收集者进行任务收集;所述任务解决模块用于工人接收任务,将完成任务得到的解决方案在区块链下发送给任务收集者;所述任务收集模块用于任务收集者对收集的解决方案进行身份验证及有效数据筛选,并将结果通过智能合约发布到区块链上公开;
所述作弊揭示模块用于引入防作弊机制,各交互实体均可对发布在智能合约上的结果进行作弊揭示,若检查有作弊则将作弊结果通过智能合约发布到区块链上进行揭示;所述奖励分发模块用于任务收集者收集最终结果提交给任务请求者,任务请求者分发任务奖励。10.一种计算机可读存储介质,存储有程序,其特征在于,所述程序被处理器执行时,实现权利要求1-8任一项所述的支持低成本隐私保护的可链接去中心化众包方法。

技术总结
本发明公开一种支持低成本隐私保护的可链接去中心化众包方法及系统,方法为:建立众包系统,确定交互实体;运行初始化及密钥生成算法,进行系统注册;任务请求者设置任务,通过智能合约发布到区块链上并指定任务收集者进行任务收集;工人接收任务,将解决方案在区块链下发送给任务收集者;任务收集者进行身份验证及有效数据筛选,并将结果发布到区块链上公开;引入防作弊机制,各交互实体对发布在智能合约上的结果进行作弊揭示;任务收集者收集最终结果提交给任务请求者,任务请求者分发任务奖励。本发明在保护区块链上数据隐私的同时,将系统总开销降低至常数级别的复杂度,同时引入防作弊机制,允许对作弊行为进行揭示,保证诚实用户的匿名性。诚实用户的匿名性。诚实用户的匿名性。


技术研发人员:赖俊祚 黄连冠 李鹏 朱易明
受保护的技术使用者:暨南大学
技术研发日:2023.04.23
技术公布日:2023/8/24
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐