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