发明内容
本申请的目的是提供一种区块链数值信息传输方法,其能在一定程度上解决如何提高区块链管理数值信息的灵活性的技术问题。本申请还提供了一种区块链系统及数值信息传输系统、装置、计算机可读存储介质。
为了实现上述目的,本申请提供一种区块链数值信息传输方法,应用于区块链系统中的目标区块链节点,所述区块链系统还包括监管节点,所述方法包括:
获取所述监管节点公布的离散密码群生成元及加密群元素,所述加密群元素包括所述监管节点基于预设格式对生成的第一随机数和所述离散密码群生成元运算后得到的密码群元素;
获取目标数值,并生成第二随机数;
基于所述离散密码群生成元、所述加密群元素、所述第二随机数对所述目标数值进行运算,得到承诺值;
按照预设拆分格式,将所述目标数值拆分为子目标数值;
选取预设数量的所述子目标数值作为目标子数值,并将所述第二随机数拆分为与所述目标子数值对应的子第二随机数;
将除所述目标子数值之外的其他所述子目标数值作为公开数值并公布;基于所述加密群元素对所述公开数值进行运算,得到第一运算结果并公布;
基于所述离散密码群生成元、所述加密群元素计算每一个所述目标子数值与对应的所述子第二随机数的第二运算结果和第三运算结果并公布;
基于所述加密群元素计算每一个所述目标子数值与对应的所述子第二随机数的第四运算结果并公布,以使所述监管节点基于所述第二运算结果、所述第四运算结果、所述公开数值及所述第一随机数确定所述目标数值。
优选的,所述区块链系统还包括验证区块链节点,所述基于所述加密群元素计算每一个所述目标子数值与对应的所述子第二随机数的第四运算结果并公布之后,还包括:
基于每一个所述目标子数值的所述第二运算结果、所述第三运算结果、所述第四运算结果计算每一个所述目标子数值的子公钥,并生成所述第四运算结果的合法性证明;
基于所述承诺值及所有的所述子公钥、所述子第二随机数计算所述承诺值的环签名结果;
将所述承诺值、所述第一运算结果、所述第二运算结果、所述第三运算结果、所述第四运算结果、所述合法性证明、所述公开数值及所述环签名结果作为所述目标数值的部分隐私可追踪区间证明结果;
传输所述部分隐私可追踪区间证明结果至所述验证区块链节点,以使所述验证区块链节点对所述部分隐私可追踪区间证明结果进行验证。
优选的,所述基于所述离散密码群生成元、所述加密群元素、所述第二随机数对所述目标数值进行运算,得到承诺值,包括:
通过承诺值运算公式,基于所述离散密码群生成元、所述加密群元素、所述第二随机数对所述目标数值进行运算,得到所述承诺值;
所述承诺值运算公式包括:
c=gyhb;
其中,c表示所述承诺值;y表示所述第二随机数;b表示所述目标数值;g表示所述离散密码群生成元;h表示所述加密群元素。
优选的,所述按照预设拆分格式,将所述目标数值拆分为子目标数值,包括:
通过第一拆分公式将所述目标数值拆分为所述子目标数值;
所述第一拆分公式包括:
b=b0+…+2ibi+…+2n-1bn-1;
所述将所述第二随机数拆分为与所述目标子数值对应的子第二随机数,包括:
通过第二拆分公式将所述第二随机数拆分为与所述目标子数值对应的子第二随机数;
所述第二拆分公式包括:
yk+1+…+yi+…+yn-1=y;
其中,bi表示第i个所述子目标数值,n表示所述子目标数值的总数量,bi的值为0或1;yi表示与第i个所述目标子数值对应的所述子第二随机数,并且k+1≤i≤n-1;k表示所述公开数值的个数。
优选的,所述基于所述加密群元素对所述公开数值进行运算,得到第一运算结果并公布,包括:
通过第一运算公式,基于所述加密群元素对所述公开数值进行运算,得到所述第一运算结果并公布;
所述第一运算公式包括:
其中,c0表示所述第一运算结果加密群元素;
所述基于所述离散密码群生成元、所述加密群元素计算每一个所述目标子数值与对应的所述子第二随机数的第二运算结果和第三运算结果,包括:
通过第二运算公式,基于所述离散密码群生成元、所述加密群元素计算每一个所述目标子数值与对应的所述子第二随机数的所述第二运算结果和所述第三运算结果;
所述第二运算公式包括:
其中,ci表示下标为i的所述第二运算结果;c′i表示下标为i的所述第三运算结果;
所述基于所述加密群元素计算每一个所述目标子数值与对应的所述子第二随机数的第四运算结果并公布,包括:
通过第三运算公式,基于所述加密群元素计算每一个所述目标子数值与对应的所述子第二随机数的所述第四运算结果并公布;
所述第三运算公式包括:
i∈[k+1,n-1];其中,TK
i表示下标为i的所述第四运算结果;
所述基于每一个所述目标子数值的所述第二运算结果、所述第三运算结果、所述第四运算结果计算每一个所述目标子数值的子公钥,包括:
通过第四运算公式,基于每一个所述目标子数值的所述第二运算结果、所述第三运算结果、所述第四运算结果计算每一个所述目标子数值的所述子公钥;
所述第四运算公式包括:
PKi=(ci,c′i),i∈[k+1,n-1];其中,PKi表示下标为i的所述子公钥;;
所述生成所述第四运算结果的合法性证明,包括:
通过π(ci,c′i,TKi)生成所述合法性证明;
基于所述承诺值及所有的所述子公钥、所述子第二随机数计算所述承诺值的环签名结果,包括:
通过第五运算公式,基于所述承诺值及所有的所述子公钥、所述子第二随机数计算所述环签名结果;
所述第五运算公式包括:
σ=RSIG(PKk+1,…,PKn-1,yk+1,…,yn-1,c);其中,σ表示所述环签名结果;RSIG表示环签名算法。
本申请提供的一种区块链数值信息传输方法,应用于区块链系统中的监管节点,所述区块链系统还包括目标区块链节点,所述方法包括:
获取离散密码群生成元,生成第一随机数并保存;
基于预设格式对所述第一随机数和所述离散密码群生成元运算,得到加密群元素;
公布所述离散密码群生成元及所述加密群元素;
获取所述目标区块链节点公布的与目标数值对应的公开数值、第二运算结果及第四运算结果;
对于每个所述第二运算结果,按照所述预设格式,通过所述第一随机数计算所述第二运算结果对应的第一运算值,判断所述第一运算值是否与所述第四运算结果相等,若是,则确定所述第二运算结果对应的目标子数值的值为0,若否,则确定所述第二运算结果的目标子数值的值为1;
按照所述预设拆分格式,基于所述公开数值及所述子目标数值确定所述目标数值;
其中,所述预设格式包括αβ,α表示密码群元素,β表示随机数。
本申请提供的一种区块链数值信息传输方法,应用于区块链系统中的验证区块链节点,所述区块链系统还包括目标区块链节点及监管节点,所述方法包括:
获取所述目标区块链节点生成的部分隐私可追踪区间证明结果,所述部分隐私可追踪区间证明结果包括承诺值、第一运算结果、公开数值、第二运算结果、第三运算结果、第四运算结果、所述第四运算结果的合法性证明及所述承诺值的环签名结果;获取所述监管节点公布的加密群元素;
验证每个所述第四运算结果的π(ci,c′i,TKi)是否正确;ci表示所述第二运算结果;c′i表示所述第三运算结果;TKi表示所述第四运算结果;π(ci,c′i,TKi)表示所述合法性证明;
若所有的π(c
i,c′
i,TK
i)均正确,则验证每个所述目标子数值的
是否正确;h表示所述加密群元素;
若所有的
均正确,则验证h
b′=c
0是否正确;其中,b'表示所述公开数值;c
0表示所述第一运算结果;
若h
b'=c
0正确,则验证
是否正确,П表示求和运算;c表示所述承诺值;
若所述环签名结果正确,则上链所述部分隐私可追踪区间证明结果。
为了实现上述目的,本申请进一步提供一种区块链数值信息传输系统,应用于区块链系统中的目标区块链节点,所述区块链系统还包括监管节点,所述系统包括:
第一获取模块,用于获取所述监管节点公布的离散密码群生成元及加密群元素,所述加密群元素包括所述监管节点基于预设格式对生成的第一随机数和所述离散密码群生成元运算后得到的密码群元素;
第二获取模块,用于获取目标数值,并生成第二随机数;
第一运算模块,用于基于所述离散密码群生成元、所述加密群元素、所述第二随机数对所述目标数值进行运算,得到承诺值;
第一拆分模块,用于按照预设拆分格式,将所述目标数值拆分为子目标数值;
第一选取模块,用于选取预设数量的所述子目标数值作为目标子数值,并将所述第二随机数拆分为与所述目标子数值对应的子第二随机数;
第二运算模块,用于将除所述目标子数值之外的其他所述子目标数值作为公开数值并公布;基于所述加密群元素对所述公开数值进行运算,得到第一运算结果并公布;
第三运算模块,用于基于所述离散密码群生成元、所述加密群元素计算每一个所述目标子数值与对应的所述子第二随机数的第二运算结果和第三运算结果并公布;
第四运算模块,用于基于所述加密群元素计算每一个所述目标子数值与对应的所述子第二随机数的第四运算结果并公布,以使所述监管节点基于所述第二运算结果、所述第四运算结果、所述公开数值及所述第一随机数确定所述目标数值。
为了实现上述目的,本申请进一步提供一种区块链系统,其特征在于,包括至少一个监管节点和至少二个目标区块链节点,其中,所述监管节点用于执行如上所述应用于监管节点的方法,所述目标区块链节点用于执行如上所述应用于目标区块链节点的方法。
优选的,所述系统还包括验证区块链节点,所述验证区块链节点用于执行如上所述应用于验证区块链节点的方法。
为了实现上述目的,本申请进一步提供一种区块链数值信息传输装置,所述装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的区块链数值信息传输程序,所述区块链数值信息传输程序被所述处理器执行时实现如上任一所述的方法。
为了实现上述目的,本申请进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有区块链数值信息传输程序,所述区块链数值信息传输程序可被一个或者多个处理器执行,以实现如上任一所述的区块链数值信息传输方法。
本申请提供的一种区块链数值信息传输方法,应用于区块链系统中的目标区块链节点,区块链系统还包括监管节点,该方法中,获取监管节点公布的离散密码群生成元及加密群元素,加密群元素包括监管节点基于预设格式对生成的第一随机数和离散密码群生成元运算后得到的密码群元素;获取目标数值,并生成第二随机数;基于离散密码群生成元、加密群元素、第二随机数对目标数值进行运算,得到承诺值;按照预设拆分格式,将目标数值拆分为子目标数值;选取预设数量的子目标数值作为目标子数值,并将第二随机数拆分为与目标子数值对应的子第二随机数;将除目标子数值之外的其他子目标数值作为公开数值并公布,基于加密群元素对公开数值进行运算,得到第一运算结果并公布;基于离散密码群生成元、加密群元素计算每一个目标子数值与对应的子第二随机数的第二运算结果和第三运算结果并公布;基于加密群元素计算每一个目标子数值与对应的子第二随机数的第四运算结果并公布,以使监管节点基于第二运算结果、第四运算结果、公开数值及第一随机数确定目标数值。本申请提供的一种区块链数值信息传输方法,目标区块链节点对目标数值中的公开数值之外的其他数值,也即隐私数值,进行加密运算,保护了隐私数据的安全性,此外,使得监管节点可以基于从目标区块链节点获取的与隐私数值对应的第二运算结果、第四运算结果、公开数值及自身的第一随机数确定出目标数值,从而使得目标区块链节点可以决定目标数值的具体隐藏情况,并且使得监管节点可以对目标区块链节点的目标数值进行监管,提高了区块链管理数值信息的灵活性。本申请提供的一种区块链数值信息传输系统、装置及计算机可读存储介质也解决了相应技术问题。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
请参阅图1,图1为本申请实施例提供的区块链系统10的结构示意图。在本申请中,区块链系统10包括监管节点111、验证区块链节点112及普通区块链节点113;监管节点111、区块链验证节点112及普通区块链节点113各自的数量可以根据实际需要确定。并且普通区块链节点113发送信息时便成为本申请所描述的目标区块链节点。
应当指出,本申请所提供的区块链数值信息传输方法涉及到目标区块链节点传输信息、验证区块链节点对信息进行相应验证并决定是否对信息上链、监管节点对上链的信息进行监管这三个过程。下面,本申请分别从目标区块链节点、验证区块链节点、监管节点三个角度对本申请提供的区块链监管方法进行描述。
本申请提供一种区块链数值信息传输方法。
请参照图2,图2为本申请第一实施例的流程示意图。
在第一实施例中,本申请提供的一种区块链数值信息传输方法,应用于目标区块链节点,可以包括以下步骤:
步骤S101:获取监管节点公布的离散密码群生成元及加密群元素,加密群元素包括监管节点基于预设格式对生成的第一随机数和离散密码群生成元运算后得到的密码群元素。
实际应用中,监管节点可以先选取离散密码群生成元,再生成第一随机数,最后再按照预设格式对第一随机数及离散密码群生成元进行运算,得到加密群元素;之后,监管节点保存第一随机数,并公布离散密码群生成元及加密群元素至区块链系统,以使区块链系统中的区块链节点基于离散密码群生成元及加密群元素对目标数值进行处理。应当指出,本申请中的监管节点的类型可以根据实际需要确定,比如监管节点可以为接入区块链系统中的银行节点,接入区块链系统中的金融管理节点等;离散密码群生成元为在椭圆曲线上选取的能够实现加解密要求的点;目标区块链节点指的是区块链系统中用于传输数值信息的区块链节点;目标数值的类型可以根据具体应用场景确定,比如目标数值可以为交易金额、交易密码、交易日期等。
具体的,预设格式可以包括αβ,α表示密码群元素,β表示随机数。
步骤S102:获取目标数值,并生成第二随机数。
实际应用中,目标区块链节点在获取离散密码群生成元及加密群元素后,便可以获取目标数值,并生成用于对目标数值进行处理的第二随机数。
步骤S103:基于离散密码群生成元、加密群元素、第二随机数对目标数值进行运算,得到承诺值。
实际应用中,目标区块链节点在获取目标数值并生成第二随机数后,可以基于离散密码群生成元、加密群元素、第二随机数对目标数值进行运算,得到相应的承诺值,本申请所涉及的承诺值与现有的金额承诺的原理与功能相同,在此不再赘述。此外,目标区块链节点可以按照预设格式,基于离散密码群生成元、加密群元素及第二随机数对目标数值进行运算。
步骤S104:按照预设拆分格式,将目标数值拆分为子目标数值。
实际应用中,由于目标数值在传输过程中,可能被拆分为不同的数值进行保护,比如在门罗币中,一个数值会被拆分为多个数值进行传输,所以目标区块链节点可以按照预设拆分格式,将目标数值拆分为子目标数值。
步骤S105:选取预设数量的子目标数值作为目标子数值,并将第二随机数拆分为与目标子数值对应的子第二随机数。
实际应用中,目标区块链节点在对目标数值进行隐藏时,可以只对目标数值中的部分数据进行隐藏,而对目标数值中的剩余数值无需隐藏,为了便于描述,可以将目标数值中需要隐藏的数值称为隐私数值,而目标数值中无需隐藏的数值称为公开数值。由于第二随机数是用来对目标数值进行加密隐藏的,而公开数值无需进行隐藏,所以可以将第二随机数用于对隐私数值进行隐藏,则目标区块链节点可以选取预设数量的子目标数值作为目标子数值,并将第二随机数拆分为与目标子数值对应的子第二随机数。选取的预设数量的子目标数值也即由隐私数值拆分得到的数值。
步骤S106:将除目标子数值之外的其他子目标数值作为公开数值并公布,基于加密群元素对公开数值进行运算,得到第一运算结果并公布。
实际应用中,为了便于目标数值在区块链系统中的传输,目标区块链节点可以将除目标子数值之外的其他子目标数值作为公开数值并公布,基于加密群元素对公开数值进行运算,得到第一运算结果并公布。具体的,目标区块链节点可以按照预设格式,基于加密群元素对除目标子数值之外的其他子目标数值进行运算,得到第一运算结果。
步骤S107:基于离散密码群生成元、加密群元素计算每一个目标子数值与对应的子第二随机数的第二运算结果和第三运算结果并公布。
实际应用中,目标区块链节点在基于子第二随机数对相应的目标子数值进行保护时,可以基于离散密码群生成元、加密群元素计算每一个目标子数值与对应的子第二随机数的第二运算结果和第三运算结果,具体的,可以按照预设格式,基于离散密码群生成元、加密群元素计算每一个目标子数值与对应的子第二随机数的第二运算结果和第三运算结果。
步骤S108:基于加密群元素计算每一个目标子数值与对应的子第二随机数的第四运算结果并公布,以使监管节点基于第二运算结果、第四运算结果、公开数值及第一随机数确定目标数值。
实际应用中,在对隐私数值进行隐藏时,可以基于加密群元素计算每一个目标子数值与对应的子第二随机数的第四运算结果并公布,以使监管节点基于第二运算结果、第四运算结果、公开数值及第一随机数确定目标数值。
具体的,目标区块链节点可以按照预设格式,基于加密群元素计算每一个目标子数值与对应的子第二随机数的第四运算结果;监管节点可以按照预设格式,基于第二运算结果、第四运算结果及第一随机数确定隐私数值。在此过程中,由于加密群元素为监管节点按照预设格式对第一随机数及离散密码群生成元运算后得到的密码群元素,而第二运算结果和第三运算结果为基于离散密码群生成元、加密群元素、目标子数值、子第二随机数计算得到的结果,第四运算结果为基于加密群元素、目标子数值、子第二随机数计算得到的结果,所以加密群元素、第二运算结果、第三运算结果及第四运算结果间存在格式统一性,且存在关联性;那么,监管节点可以按照预设格式对第二运算结果及第一随机数进行运算,得到相应的运算结果,将该运算结果与第四运算结果进行比较,进而确定目标子随机数的值,最后按照预设拆分格式对目标子随机数进行运算,得到隐私数值,在将隐私数值与公开数值相加,得到目标数值。
本申请提供的一种区块链数值信息传输方法,应用于目标区块链节点,获取监管节点公布的离散密码群生成元及加密群元素,加密群元素包括监管节点基于预设格式对生成的第一随机数和离散密码群生成元运算后得到的密码群元素;获取目标数值,并生成第二随机数;基于离散密码群生成元、加密群元素、第二随机数对目标数值进行运算,得到承诺值;按照预设拆分格式,将目标数值拆分为子目标数值;选取预设数量的子目标数值作为目标子数值,并将第二随机数拆分为与目标子数值对应的子第二随机数;将除目标子数值之外的其他子目标数值作为公开数值并公布,基于加密群元素对公开数值进行运算,得到第一运算结果并公布;基于离散密码群生成元、加密群元素计算每一个目标子数值与对应的子第二随机数的第二运算结果和第三运算结果并公布;基于加密群元素计算每一个目标子数值与对应的子第二随机数的第四运算结果并公布,以使监管节点基于第二运算结果、第四运算结果、公开数值及第一随机数确定目标数值。本申请提供的一种区块链数值信息传输方法,目标区块链节点对目标数值中的公开数值之外的其他数值,也即隐私数值,进行加密运算,保护了隐私数据的安全性,此外,使得监管节点可以基于从目标区块链节点获取的与隐私数值对应的第二运算结果、第四运算结果、公开数值及自身的第一随机数确定出目标数值,从而使得目标区块链节点可以决定目标数值的具体隐藏情况,并且使得监管节点可以对目标区块链节点的目标数值进行监管,提高了区块链管理数值信息的灵活性。
在第一实施例中,在区块链的应用过程中,为了保证目标数值的隐私性,一个区块链节点在传输数值时,会与其他区块链节点进行配合,比如与其他区块链节点对目标数值进行环签名,由此使得目标数值的发送方难以确定,此时监管节点需按照本申请提供的区块链信息传输方法对一定数量的区块链节点进行识别,以确定出目标数据的发送方。本申请所涉及的环签名(Ring signature)是一种特殊的数字签名方案,签名者使用自己和其用户的公钥生成一个公钥集合,然后用自己的私钥进行签名,验证者在验证签名的合法性后,只能知道该签名来自公钥集合的某个用户,但无法得知该用户的具体身份,实现了签名者的身份隐私保护。
所以在第一实施例中,为了保证数值的安全传输,可以采用环签名的方式对数值进行环签名,以此隐藏相应数值及发送方的信息,则目标区块链节点基于加密群元素计算每一个目标子数值与对应的子第二随机数的第四运算结果并公布之后,还可以:
基于每一个目标子数值的第二运算结果、第三运算结果、第四运算结果计算每一个目标子数值的子公钥,并生成第四运算结果的合法性证明;
基于承诺值及所有的子公钥、子第二随机数计算承诺值的环签名结果;
将承诺值、第一运算结果、第二运算结果、第三运算结果、第四运算结果、合法性证明、公开数值及环签名结果作为目标数值的部分隐私可追踪区间证明结果;
传输部分隐私可追踪区间证明结果至验证区块链节点,以使验证区块链节点对部分隐私可追踪区间证明结果进行验证。
在第一实施例中,为了提高运算效率,目标区块链节点基于离散密码群生成元、加密群元素、第二随机数对目标数值进行运算,得到承诺值的过程,可以具体为:
通过承诺值运算公式,基于离散密码群生成元、加密群元素、第二随机数对目标数值进行运算,得到承诺值;
承诺值运算公式包括:
c=gyhb;
其中,c表示承诺值;y表示第二随机数;b表示目标数值;g表示离散密码群生成元;h表示加密群元素。
在第一实施例中,为了提高运算效率,目标区块链节点按照预设拆分格式,将目标数值拆分为子目标数值的过程,可以具体为:
通过第一拆分公式将目标数值拆分为子目标数值;
第一拆分公式包括:
b=b0+…+2ibi+…+2n-1bn-1;
相应的,将第二随机数拆分为与目标子数值对应的子第二随机数的过程,可以具体为:
通过第二拆分公式将第二随机数拆分为与目标子数值对应的子第二随机数;
第二拆分公式包括:
yk+1+…+yi+…+yn-1=y;
其中,bi表示第i个子目标数值,n表示子目标数值的总数量,bi的值为0或1;yi表示与第i个目标子数值对应的子第二随机数,并且k+1≤i≤n-1;k表示公开数值的个数。应当指出,本申请中,为了保证公式的简洁性,将公开数值作为目标数值拆分得到的前k个子目标数值,当然,子目标数值中公开数值与目标子数值的排列可以根据实际需要调整,相应的,也需要对本申请提供的公式进行相应修改。
在第一实施例中,为了提高运算效率,目标区块链节点基于加密群元素对公开数值进行运算,得到第一运算结果并公布的过程,可以具体为:
通过第一运算公式,基于加密群元素对公开数值进行运算,得到第一运算结果并公布;
第一运算公式包括:
其中,c0表示第一运算结果加密群元素;b0、b1、…、bk表示公开的子目标数值;
相应的,基于离散密码群生成元、加密群元素计算每一个目标子数值与对应的子第二随机数的第二运算结果和第三运算结果的过程,可以具体为:
通过第二运算公式,基于离散密码群生成元、加密群元素计算每一个目标子数值与对应的子第二随机数的第二运算结果和第三运算结果;
第二运算公式包括:
其中,ci表示下标为i的第二运算结果;c′i表示下标为i的第三运算结果;
相应的,基于加密群元素计算每一个目标子数值与对应的子第二随机数的第四运算结果并公布的过程,可以具体为:
通过第三运算公式,基于加密群元素计算每一个目标子数值与对应的子第二随机数的第四运算结果并公布;
第三运算公式包括:
i∈[k+1,n-1];其中,TK
i表示下标为i的第四运算结果;
相应的,基于每一个目标子数值的第二运算结果、第三运算结果、第四运算结果计算每一个目标子数值的子公钥的过程,可以具体为:
通过第四运算公式,基于每一个目标子数值的第二运算结果、第三运算结果、第四运算结果计算每一个目标子数值的子公钥;
第四运算公式包括:
PKi=(ci,c′i),i∈[k+1,n-1];其中,PKi表示下标为i的子公钥;
生成第四运算结果的合法性证明,包括:
通过π(ci,c′i,TKi)生成合法性证明;
相应的,基于承诺值及所有的子公钥、子第二随机数计算承诺值的环签名结果的过程,可以具体为:
通过第五运算公式,基于承诺值及所有的子公钥、子第二随机数计算环签名结果;
第五运算公式包括:
σ=RSIG(PKk+1,…,PKn-1,yk+1,…,yn-1,c);其中,σ表示环签名结果;RSIG表示环签名算法。
现结合区块链系统中的门罗币来对本申请提供的区块链数值信息传输方法进行解释说明。
门罗币(Monero)是当前成熟的隐私数字货币体系,其在比特币的基础上,使用了UTXO模型,通过可链接环签名技术实现了交易身份的隐藏,通过区间证明实现了交易金额的隐藏,其应用过程如下:
门罗币中每笔UTXO包含币的公私钥(PK、SK)以及金额承诺(COM),该笔钱的所有者掌握币私钥(SK),币公钥(PK)以及金额承诺(COM)公开。每次消费时,用户随机选取链上的其他UTXO,结合自己要花的UTXO一起生成公钥集合(L={PK 1,PK 2,,PKn}),使用自己的随机数与接收者的私钥生成新的币公钥,并且新的币公钥只有接收者才能计算得到,将新的金额承诺、新的金额承诺的区间证明以及其他账单信息一起进行关于L的环签名并发布到区块链上。交易验证者检查是否为双花交易,如果不是双花则验证区间证明的合法性和环签名的合法性,全部通过后,将交易打包出块。而验证者无法获取交易双方的身份信息及金额信息。交易接收者对于链上新出块的全部交易,用自己的私钥检查是否存在给自己的转账,如果有,则计算新的UTXO的私钥,并将钱存入自己的钱包。
在上述过程中,还涉及非对称加密、数字签名等;其中,UTXO指的是当前区块链上已确认但未花费的数字货币,即未花费的一笔钱;双花(Doublespending)指的是区块链上的不重视用户对一笔钱交易进行两次花费;非对称加密算法(Asymmetric encryptionsystem)是区别于传统的对称加密算法,基于加密、解密过程中计算复杂度的非对称性来保证安全的一类算法,在非对称加密系统中,加密方要生成私钥及公钥对,私钥自己保留,公钥可以发送给对方;数字签名(Digital signature)是非对称密码的一个分支,用户生成公私钥,自己保留私钥,对任意消息,用户使用私钥签名,验证者使用公钥即可验证签名的合法性,数字签名实现了身份的认证和数据完整性的验证;可链接环签名(Linkable ringsignature)是一种特殊的环签名方案,用户在进行环签名时要提供一个标签信息,当用户进行非法签名(或双花等非法交易时),通过比对交易标签就可以判断是否是非法签名(双花交易),实现了安全的交易保障;区间证明(Range proof)是给出某个金额数量属于指定的区间,而不透露具体金额信息的零知识证明体系。
由门罗币的使用过程可知,区块链节点无法获取交易金额并且无法确定某一交易金额的发送方,从而使得门罗币不具有监管及追踪功能,而本申请提供的第一实施例实现了对数值的追踪,并且实现了对部分数值的隐藏与追踪,其本质是提供了一种部分隐私可追踪区间证明,可追踪区间证明(Traceablerange proof)指的是给出某个金额数量属于指定的区间的证明体系,对于普通验证用户,该证明满足零知识性(不泄露金额信息),并且可以通过证明求解出具体的数额,实现了监管功能的证明;部分隐私可追踪区间证明(PartialTraceable range proof)指的是公开部分交易金额,仅保护部分交易金额的隐私性,同时对隐私的部分有完全的监管功能。
实际应用中,应用本申请提供的可追踪可链接环签名及可追踪区间证明的门罗币应用过程可以如下:
区块链体系存在监管节点,监管节点生成系统参数(离散密码群生成元),陷门Trapdoor(第一随机数)和陷门公钥MPK(加密群元素);
对于每一笔UTXO,用户自己生成私钥SK,然后按照MPK加入公钥生成算法中,得到公钥PK=Gen(SK,MPK),公钥的验证者可以验证该笔UTXO的公钥是否按照规定的方式生成;
用户按照与门罗币相同的交易框架进行交易,在交易过程中,用户在对交易金额的区间证明中,将门罗币原有的区间证明替换为本申请的部分隐私可追踪区间证明;
在验证交易环节,验证者进行与门罗币相同的验证工作,即检验区间证明的正确性,检验环签名的正确性,检验交易是否可链接(是否双花),全部通过验证后确认交易并出块;
链上的监管节点不负责交易合法性的确认,也不负责打包交易和出块工作,仅仅在需要监管时工作,监管节点使用自己保管的陷门Trapdoor对交易中的区间证明和环签名进行追踪计算,得到具体的交易金额和签名者身份,实现了完全的监管功能,但是监管节点不掌握用户私钥,无法伪造用户签名,也无法将用户的钱转走,实现了只监管不干涉的功能,实现了多层次的监管功能。
此外,借助本申请提供的区块链数值信息传输方法,用户不必再对自身的每笔交易均进行隐藏,而是可以有选择性的对交易进行隐藏,与现有的每笔交易均隐藏的技术相比,提高了用户对自身交易信息的管理灵活性;此外,借助本申请提供的区块链数值信息传输方法,监管节点可以只对用户隐藏的交易进行监管、追踪,而无需对用户公开的交易进行监管、追踪,降低了监管节点的服务压力,可以提高监管节点的运行效率。
请参照图3,图3为本申请第二实施例的流程示意图。
本申请提供的一种区块链数值信息传输方法,应用于如上任一实施例所涉及的监管节点,用于对目标数值进行追踪时,可以包括以下步骤:
步骤S201:获取离散密码群生成元,生成第一随机数并保存。
步骤S202:基于预设格式对第一随机数和离散密码群生成元运算,得到加密群元素。
步骤S203:公布离散密码群生成元及加密群元素。
步骤S204:获取目标区块链节点公布的与目标数值对应的公开数值、第二运算结果及第四运算结果。
步骤S205:对于每个第二运算结果,按照预设格式,通过第一随机数计算第二运算结果对应的第一运算值,判断第一运算值是否与第四运算结果相等,若是,则确定第二运算结果对应的目标子数值的值为0,若否,则确定第二运算结果的目标子数值的值为1。
步骤S206:按照预设拆分格式,基于公开数值及子目标数值确定目标数值。
本实施例中各个步骤的描述可以参阅上述实施例,在此不再赘述。此外,本实施例中,预设格式可以包括αβ,α表示密码群元素,β表示随机数。
本申请提供的一种区块链数值信息传输方法,应用于如上实施例所涉及的验证区块链节点,用于对目标数值的上链过程进行安全性验证时,可以包括以下步骤:
获取目标区块链节点生成的部分隐私可追踪区间证明结果,部分隐私可追踪区间证明结果包括承诺值、第一运算结果、公开数值、第二运算结果、第三运算结果、第四运算结果、第四运算结果的合法性证明及承诺值的环签名结果;获取监管节点公布的加密群元素;
验证每个第四运算结果的π(ci,c′i,TKi)是否正确;ci表示第二运算结果;c′i表示第三运算结果;TKi表示第四运算结果;π(ci,c′i,TKi)表示合法性证明;
若所有的π(c
i,c′
i,TK
i)均正确,则验证每个目标子数值的
是否正确;h表示加密群元素;
若所有的
均正确,则验证h
b′=c
0是否正确;其中,b'表示公开数值;c
0表示第一运算结果;
若h
b'=c
0正确,则验证
是否正确,Π表示求和运算;c表示承诺值;
若环签名结果正确,则上链部分隐私可追踪区间证明结果。
实际应用中,在验证每个第四运算结果的π(ci,c′i,TKi)是否正确时,可以通过一个证明一次性验证所有第四运算结果的合法性,提高验证效率。
本实施例中各个步骤的描述可以参阅上述实施例中的相应步骤,在此不再赘述。
由上述描述可知,本申请提供的一种区块链数值信息传输方法实现了对隐私数值的监管,避免了因隐私数值不可被获知而导致的区块链系统隐层不法分子违法交易的缺点,可以适用于区块链应用场景下的犯罪追查、数据统计、资金冻结等具体应用场景下;此外,用户自己的私钥完全由用户自身掌握,包括监管节点在内的任何人均无法伪造用户签名,仿冒用户交易,最大程度的保留了区块链“去中心化”的要求;并且监管节点不需要负责交易验证,也不需要复杂打包交易和出块等工作,仅仅在需要监管时出现,有效减少了监管节点的计算和通信压力,与现有的交易均需经过监管节点的技术相比,提高了区块链系统的交易效率。
另一方面,本申请提供一种区块链数值信息传输系统。
请参阅图4,图4为本申请一实施例揭露的区块链数值信息传输系统的结构示意图。
本申请实施例提供的一种区块链数值信息传输系统,应用于目标区块链节点,可以包括:
第一获取模块101,用于获取监管节点公布的离散密码群生成元及加密群元素,加密群元素包括监管节点基于预设格式对生成的第一随机数和离散密码群生成元运算后得到的密码群元素;
第二获取模块102,用于获取目标数值,并生成第二随机数;
第一运算模块103,用于基于离散密码群生成元、加密群元素、第二随机数对目标数值进行运算,得到承诺值;
第一拆分模块104,用于按照预设拆分格式,将目标数值拆分为子目标数值;
第一选取模块105,用于选取预设数量的子目标数值作为目标子数值,并将第二随机数拆分为与目标子数值对应的子第二随机数;
第二运算模块106,用于将除目标子数值之外的其他子目标数值作为公开数值并公布,基于加密群元素对公开数值进行运算,得到第一运算结果并公布;
第三运算模块107,用于基于离散密码群生成元、加密群元素计算每一个目标子数值与对应的子第二随机数的第二运算结果和第三运算结果并公布;
第四运算模块108,用于基于加密群元素计算每一个目标子数值与对应的子第二随机数的第四运算结果并公布,以使监管节点基于第二运算结果、第四运算结果、公开数值及第一随机数确定目标数值。
本申请实施例提供的一种区块链数值信息传输系统中各个模块的相关描述请参阅上述实施例,在此不再赘述。
另一方面,本申请提供一种区块链数值信息传输装置。
参照图5,图5为本申请一实施例揭露的区块链数值信息传输装置的内部结构示意图。
本实施例中,视区块链数值信息传输装置1可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机、智能路由器、矿机、网络存储设备终端设备。
该区块链数值信息传输装置1可以是组成区块链网络的节点。
该区块链数值信息传输装置1可以包括存储器11、处理器12和总线13。
其中,存储器11至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是区块链数值信息传输装置1的内部存储单元,例如该区块链数值信息传输装置1的硬盘。存储器11在另一些实施例中也可以是区块链数值信息传输装置1的外部存储设备,例如区块链数值信息传输装置1上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括区块链数值信息传输装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于区块链数值信息传输装置1的应用软件及各类数据,例如区块链数值信息传输程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行区块链数值信息传输程序01等。
该总线13可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,区块链数值信息传输装置还可以包括网络接口14,网络接口14可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该装置1与其他电子设备之间建立通信连接。
可选地,该区块链数值信息传输装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在区块链数值信息传输装置1中处理的信息以及用于显示可视化的用户界面。
图5仅示出了具有组件11-14以及区块链数值信息传输程序01的区块链数值信息传输装置1,本领域技术人员可以理解的是,图5示出的结构并不构成对区块链数值信息传输装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
本申请提供的一种计算机可读存储介质,计算机可读存储介质上存储有区块链数值信息传输程序,区块链数值信息传输程序可被一个或者多个处理器执行,以实现如上任一实施例所描述的区块链数值信息传输方法。
这里所涉及的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。