1.一种基于区块链的多用户众包任务匹配方法,其特征在于,包括:步骤S1,密钥管理中心初始化系统参数,结合可搜索加密算法和秘密共享算法基于初始化后的系统参数生成系统密钥、公钥和每个用户的私钥;
步骤S2,任务发布设备基于任务发布者的任务内容和公钥生成任务密文,通过调用区块链的任务发布智能合约在区块链上发布所述任务密文;
步骤S3,用户设备基于用户的关键字和私钥生成用户的陷门,调用区块链的任务匹配智能合约对用户的陷门和任务密文进行匹配,将匹配结果上传区块链并返回用户;
所述步骤S1包括:
步骤S101,执行初始化系统参数:选取素数阶为p的素数阶群G1和G2,获取素数阶群G1的*生成元;选取哈希函数H:{0,1}→G1;选取第一随机数、第二随机数和第三随机数,获得系统密钥;
步骤S102,基于系统密钥设置秘密多项式函数;
步骤S103,基于素数阶群G1的生成元、系统密钥和秘密多项式函数生成公钥;
步骤S104,选取第四随机数,为每个用户选取一个私钥生成随机数,基于私钥生成随机数、第三随机数、第四随机数、素数阶群G1的生成元和秘密多项式函数生成用户的私钥;
所述公钥为: 其中,g为素数阶群G1的生成元;f()表示秘密多项式函数,f(t)=a+bt,a、b、t分别为第一随机数、第二随机数、第三随机数, 表示在模p的剩余类中所有可逆元素的模p同余类所构成的群;
第i个用户的私钥为:
其中,i表示用户索引,为正整数;τi表示第i个用户的用户集合,τi={t,ti},ti表示第i个用户的私钥生成随机数,t表示第三随机数;s表示第四随机数;g为素数阶群G1的生成元;
f()表示秘密多项式函数,f(ti)=a+bti,f(t)=a+bt,a、b分别为第一随机数、第二随机数,表示在模p的剩余类中所有可逆元素的模p同余类所构成的群;
和 均为拉格朗日项,
在所述步骤S2中,基于任务发布者的任务内容和公钥生成任务密文具体包括:步骤S201,选取任务发布者的任务内容;
步骤S202,选取任务发布随机数,利用公钥和任务发布随机数对所述任务内容进行加密获得任务密文,所述任务密文为:其中,C1表示任务密文的第一项,C2表示任务密文的第二项,H(w)表示对任务内容w求取的哈希函数值,r1表示任务发布随机数,所述步骤S3中,基于用户的关键字和私钥生成用户的陷门具体包括:步骤S301,获取用户的关键字,所述用户的关键字表征用户的兴趣和/或能力;
步骤S302,为每个用户选取用户随机参数,基于用户的私钥和关键字计算用户的陷门,第i个用户的陷门为:其中,Ti1表示第i个用户的陷门的第一项,Ti2表示第i个用户的陷门的第二项,H(qi)表示对第i个用户的关键字qi求取的哈希函数值,r2i表示第i个用户的用户随机参数,在所述步骤S3中,利用任务匹配智能合约对用户的陷门和任务密文进行匹配的过程为:对于第i个用户,判断是否满足e(C1,Ti2)=e(Ti1,C2),若满足e(C1,Ti2)=e(Ti1,C2),则认为第i个用户的陷门和任务密文匹配,若不满足e(C1,Ti2)=e(Ti1,C2),则认为第i个用户的陷门和任务密文不配,其中,e(,)表示双线性映射,定义双线性映射e:G1×G1→G2。
2.一种多用户众包任务匹配系统,其特征在于,包括:
密钥管理中心,用于初始化系统参数,结合可搜索加密算法和秘密共享算法基于初始化后的系统参数生成系统密钥、公钥和每个用户的私钥,密钥管理中心具体执行:步骤S101,执行初始化系统参数:选取素数阶为p的素数阶群G1和G2,获取素数阶群G1的*生成元;选取哈希函数H:{0,1}→G1;选取第一随机数、第二随机数和第三随机数,获得系统密钥;
步骤S102,基于系统密钥设置秘密多项式函数;
步骤S103,基于素数阶群G1的生成元、系统密钥和秘密多项式函数生成公钥;
步骤S104,选取第四随机数,为每个用户选取一个私钥生成随机数,基于私钥生成随机数、第三随机数、第四随机数、素数阶群G1的生成元和秘密多项式函数生成用户的私钥;所述公钥为: 其中,g为素数阶群G1的生成元;f()表示秘密多项式函数,f(t)=a+bt,a、b、t分别为第一随机数、第二随机数、第三随机数, 表示在模p的剩余类中所有可逆元素的模p同余类所构成的群;第i个用户的私钥为:其中,i表示用户索引,为正整数;τi表示第i个用户的用户集合,τi={t,ti},ti表示第i个用户的私钥生成随机数,t表示第三随机数;s表示第四随机数;g为素数阶群G1的生成元;
f()表示秘密多项式函数,f(ti)=a+bti,f(t)=a+bt,a、b分别为第一随机数、第二随机数,表示在模p的剩余类中所有可逆元素的模p同余类所构成的群;
和 均为拉格朗日项,
任务发布设备,基于任务发布者的任务内容和公钥生成任务密文,通过调用区块链的任务发布智能合约在区块链上发布所述任务密文,任务发布设备具体执行:步骤S201,选取任务发布者的任务内容;
步骤S202,选取任务发布随机数,利用公钥和任务发布随机数对所述任务内容进行加密获得任务密文,所述任务密文为:其中,C1表示任务密文的第一项,C2表示任务密文的第二项,H(w)表示对任务内容w求取的哈希函数值,r1表示任务发布随机数,用户设备,基于用户的关键字和私钥生成用户的陷门,调用区块链的任务匹配智能合约对用户的陷门和任务密文进行匹配,用户设备具体执行:步骤S301,获取用户的关键字,所述用户的关键字表征用户的兴趣和/或能力;
步骤S302,为每个用户选取用户随机参数,基于用户的私钥和关键字计算用户的陷门,第i个用户的陷门为:其中,Ti1表示第i个用户的陷门的第一项,Ti2表示第i个用户的陷门的第二项,H(qi)表示对第i个用户的关键字qi求取的哈希函数值,r2i表示第i个用户的用户随机参数,区块链,利用任务发布智能合约在区块链上发布所述任务密文,利用任务匹配智能合约对用户的陷门和任务密文进行匹配,将匹配结果上传区块链并返回用户,利用任务匹配智能合约对用户的陷门和任务密文进行匹配的过程为:对于第i个用户,判断是否满足e(C1,Ti2)=e(Ti1,C2),若满足e(C1,Ti2)=e(Ti1,C2),则认为第i个用户的陷门和任务密文匹配,若不满足e(C1,Ti2)=e(Ti1,C2),则认为第i个用户的陷门和任务密文不配,其中,e(,)表示双线性映射,定义双线性映射e:G1×G1→G2。