1.多方协同隐私保护的区块链托管交易方法,其特征在于,包括:
用户节点拟定代理签名者的选择条件,向托管中心匿名发送多方协同签名请求;
托管中心从数据库中提取满足条件的签名公钥和身份标识,生成托管交易的随机参数,向用户节点回传所有能够执行协同签名的签名公钥列表、身份标识列表和随机参数;
用户节点广播包含签名公钥列表和身份标识列表的代理签名服务请求;
网络节点在确认代理签名服务请求中包含有自身的签名公钥和身份标识后,在允许提供服务的情况下向用户节点回传接受服务请求消息,消息中包含服务提供者的收款地址;
用户节点将所有服务提供者的收款地址和本地选定的主控地址添加到第一地址列表,并发送给各服务提供者;
服务提供者确认第一地址列表中包含自身的收款地址后,利用自身的签名私钥对第一地址列表签名后回传给用户节点;
用户节点生成本地签名私钥对第一地址列表的签名,在验证接收的各签名均合法后,将所有签名求和获得门限签名,向托管中心匿名发送包含门限签名的匿名存款请求;
托管中心验证门限签名合法后,向用户节点发送存款承诺,存款承诺中包含由托管中心对第一地址列表的签名;
用户节点利用主控地址和随机参数生成一次性随机地址,将一次性随机地址作为付款地址向托管中心指定的公共存款地址转款;
托管中心利用第一地址列表中各地址与随机参数生成第二地址列表,判断如果第二地址列表中包含有已付款的一次性随机地址,则向用户节点发送存款凭证,并向参与签名的所有服务提供者指定的收款地址支付服务费,该服务费从一次性随机地址的已转款金额中扣除。
2.根据权利要求1所述的多方协同隐私保护的区块链托管交易方法,其特征在于,所述代理签名者的选择步骤为:托管中心采用布隆过滤器存储所有合法签名公钥的比特向量,用户节点以比特向量为特征从布隆过滤器中提取符合要求的签名公钥和对应的身份标识作为代理签名者。
3.根据权利要求1所述的多方协同隐私保护的区块链托管交易方法,其特征在于,托管中心采用椭圆曲线门限签名算法为每个网络节点i分发签名公私钥对(bpk,i,bsk,i),其中签名私钥bsk,i=f(IDi),签名公钥bpk,i=bsk,iG,IDi为网络节点i的身份标识,f()为签名私钥生成算法,G表示椭圆曲线的基点;
根据多方协同签名请求生成随机因子rc,进一步计算得到随机参数Rc=rcG,并对签名公钥列表、身份标识列表和随机参数签名后发送给用户节点。
4.根据权利要求3所述的多方协同隐私保护的区块链托管交易方法,其特征在于,在验证托管中心的签名合法后,用户节点在本地生成加密公私钥对(apk,u,ask,u),将加密公钥apk,u添加到代理签名服务请求,并通过签名后广播到网络。
5.根据权利要求4所述的多方协同隐私保护的区块链托管交易方法,其特征在于,网络节点i生成接受服务请求消息的步骤为:在验证用户节点的签名合法后,生成随机数di,计算随机点值Di=diG,以用户节点的加密公钥apk,u对本地选择的收款地址和随机点值加密,将生成的地址密文添加到接受服务请求消息,并通过签名后发送给用户节点。
6.根据权利要求5所述的多方协同隐私保护的区块链托管交易方法,其特征在于,用户节点收到接受服务请求消息后,还包括执行的步骤为:在验证网络节点的签名合法后,利用加密私钥ask,u对地址密文解密后获得网络节点的收款地址和随机点值,从合法签名中选取门限t‑1个网络节点作为服务提供者,进一步计算点值 Du=duG,余数kt=μmodp;在本地生成主控公私钥地址对(αpk,αsk)和临时公私钥地址对(βpk,βsk),将所有服务提供者的收款地址和主控公钥地址αpk添加到第一地址列表,将余数kt、第一地址列表、所有签名者的身份标识列表和临时公钥地址βpk签名后发送给服务提供者。
7.根据权利要求6所述的多方协同隐私保护的区块链托管交易方法,其特征在于,服务提供者i对第一地址列表执行签名的步骤为:在验证用户节点的签名合法后,计算签名分量σi=(di+hktbsk,iQi)modp,其中 h表示余数kt、第一地址列表和临时公钥地址βpk的哈希值,将签名分量σi发送给用户节点。
8.根据权利要求7所述的多方协同隐私保护的区块链托管交易方法,其特征在于,用户节点接收到签名分量σi后执行的步骤为:验证签名分量σi是否合法,如果通过计算σiG‑Di=hktQibpk,i,则表明签名分量σi合法,否则表明签名分量σi不合法;在确认签名分量σi合法后,进一步计算门限签名 在本地生成一次性随机地址Ppk=Hash(αskRc)G+βpk,及对应的私钥Psk=Hash(αskRc)G+βsk;将门限签名σt添加到匿名存款请求后发送给托管中心。
9.根据权利要求8所述的多方协同隐私保护的区块链托管交易方法,其特征在于,托管中心接收到门限签名σt后执行的步骤为:验证门限签名σt是否合法,计算σtG‑hktBpk=(μ′,ω′),k′t=μ′modp,如果kt=k′t则表明门限签名σt合法,否则表明门限签名σt不合法;在确认门限签名σt合法后,选定存款公私钥地址对(addrIpk,addrIsk)和付款公私钥地址对(addrOpk,addrOsk),存款公钥地址addrIpk和付款公钥地址addrOpk分别为用户节点存款和向服务提供者支付服务费;将第一地址列表中各地址addrpk,i与临时公钥地址βpk两两组合,生成包含有t个一次性随机地址Ppk,i的第二地址列表,Ppk,i=Hash(addrpk,irc)G+βpk;将存款公钥地址addrIpk、付款公钥地址addrOpk、第一地址列表、随机参数Rc和临时公钥地址βpk一起添加到存款承诺,对存款承诺签名后发送给用户节点。
10.根据权利要求9所述的多方协同隐私保护的区块链托管交易方法,其特征在于,还包括问责阶段:如果服务提供者拒绝提供代理签名服务,用户节点通过公布服务提供者签名的接受服务请求消息向服务提供者问责;
如果服务提供者未收到服务费,通过公布用户节点签名的第一地址列表和本地收款地址的验证消息向用户节点问责;
如果用户节点在转款后未收到存款凭证或接收到服务提供者的问责消息,通过公布托管中心签名的存款承诺和主控公私钥地址对向托管中心问责。
11.多方协同隐私保护的区块链托管交易系统,其特征在于,包括用户节点、托管中心和授信的服务提供者;托管中心具体包括:签名密钥生成模块,采用门限签名算法为每个合法网络节点分配签名公私钥对;
签名密钥提取模块,从数据存储模块中提取满足条件的签名公钥和身份标识,该条件为用户节点拟定的代理签名者选择条件;
随机参数生成模块,根据用户节点发送的多方协同签名请求生成托管交易的随机参数;
签名模块,对向用户节点发送的数据进行签名;
验签模块,验证由用户节点构建的门限签名真伪;
第二地址列表生成模块,利用第一地址列表中各地址与随机参数生成第二地址列表;
交易结算模块,判断如果第二地址列表中包含有已付款的一次性随机地址,则向用户节点发送存款凭证,并向参与签名的所有服务提供者指定的收款地址支付服务费,该服务费从一次性随机地址的已转款金额中扣除;
数据存储模块,用于存储网络节点的签名公钥、身份标识和区块链交易数据;
用户节点具体包括:
第一地址列表生成模块,用于将所有服务提供者的收款地址和本地选定的主控地址添加到第一地址列表;
签名模块,生成本地签名私钥对第一地址列表的签名,将所有签名分量求和获得门限签名,对向服务提供者发送的数据进行签名;
验签模块,验证托管中心或服务提供者的签名真伪;
付款地址生成模块,利用主控地址和随机参数生成一次性随机地址,将一次性随机地址作为付款地址向托管中心指定的公共存款地址转款;
服务提供者具体包括:
参数交换模块,在允许提供服务的情况下向用户节点回传接受服务请求消息,消息中包含服务提供者的收款地址;
签名模块,利用自身的签名私钥对第一地址列表签名得到签名分量;
验签模块,验证用户节点的签名真伪。