掌桥专利:专业的专利平台
掌桥专利
首页

环机密交易的签名验证方法、系统、设备及可读存储介质

文献发布时间:2023-06-19 19:28:50


环机密交易的签名验证方法、系统、设备及可读存储介质

技术领域

本发明涉及区块链技术领域,尤其涉及一种环机密交易的签名验证方法、系统、设备及可读存储介质。

背景技术

在一些基于区块链的交易场景下,交易上链区块之前需要对交易内容的相关信息进行隐藏,如隐藏交易的发送方和交易的金额等,同时也需要保证上链交易内容的合法性,对于此场景的需求,目前通常都是通过环机密技术来实现的,环机密技术是基于环签名与帕德森承诺构造环机密来保证“隐藏”发送方与金额,此过程需要在环中构建三元公钥信息矩阵,并提供三元公钥信息矩阵中对应帕德森承诺差值对应的盲因子之差,矩阵复杂度高,提供结构的元素较多,验证较复杂,造成签名效率低下,从而影响区块链上链效率。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。

发明内容

本发明的主要目的在于提供一种环机密交易的签名验证方法、系统、设备及可读存储介质,旨在解决目前环机密交易的签名验证方式效率较低的技术问题。

为实现上述目的,本发明提供一种环机密交易的签名验证方法,应用于交易发起方,所述环机密交易的签名验证方法包括以下步骤:

获取交易发起方的第一地址公钥和所述第一地址公钥对应的地址私钥,以及获取第一混淆公钥集,其中,所述第一混淆公钥集包括除所述交易发起方以外的其他各用户的第二地址公钥;

生成第一承诺值公钥和所述第一承诺值公钥对应的承诺值私钥,以及生成第二混淆公钥集,其中,所述第二混淆公钥集包括所述其他各用户的第二承诺值公钥,所述第一承诺值公钥根据所述交易发起方的第一已验证输出承诺值和所述第一已验证输出承诺值的伪承诺值生成,各所述第二承诺值公钥根据所述其他各用户的第二已验证输出承诺值和所述伪承诺值生成;

根据所述交易发起方的交易内容生成待验证输出承诺值,其中,各所述待验证输出承诺值的盲因子之和与各所述伪承诺值的第一随机盲因子之和相等,其中,所述待验证输出承诺值的数量至少为1,所述伪承诺值的数量至少为1;

根据所述第一地址公钥、所述第一混淆公钥集和所述地址私钥对各所述伪承诺值进行环签名得到第一签名内容;

根据存在关联的所述第一承诺值公钥、所述第二混淆公钥集和承诺值私钥对各所述伪承诺值进行环签名得到各第二签名内容;

将各所述待验证输出承诺值、各所述伪承诺值、所述第一签名内容和各所述第二签名内容发送至验证方进行验证。

进一步的,当所述交易内容中交易输出的数量为1时,所述根据所述交易发起方的交易内容生成待验证输出承诺值的步骤包括:

基于各所述第一随机盲因子的和以及所述交易输出的金额进行帕德森承诺计算得到所述待验证输出承诺值。

进一步的,当所述交易输出的数量大于1时,所述待验证输出承诺值包括随机待验证输出承诺值和被构建待验证输出承诺值,所述根据所述交易发起方的交易内容生成待验证输出承诺值的步骤还包括:

从所述交易内容中获取任一交易输出作为待构建交易输出;

基于所述交易内容中除所述待构建交易输出以外的剩余交易输出的金额生成随机待验证输出承诺值,其中,所述随机待验证输出承诺值的第二随机盲因子为随机生成;

基于所述第一随机盲因子与所述第二随机盲因子确定待构建盲因子;

基于所述待构建盲因子和所述待构建交易输出的金额进行帕德森承诺计算得到所述被构建待验证输出承诺值。

进一步的,所述基于所述第一随机盲因子与所述第二随机盲因子确定待构建盲因子的步骤包括:

若所述第一随机盲因子的数量为1且所述第二随机盲因子的数量为1,则将所述第一随机盲因子与所述第二随机盲因子的差作为所述待构建盲因子;

若所述第一随机盲因子的数量为1且所述第二随机盲因子的数量大于1,则将所述第一随机盲因子与各所述第二随机盲因子和的差作为所述待构建盲因子;

若所述第一随机盲因子的数量大于1且所述第二随机盲因子的数量为1,则将各所述第一随机盲因子和与所述第二随机盲因子的差作为所述待构建盲因子;

若所述第一随机盲因子的数量大于1且所述第二随机盲因子的数量大于1,则将各所述第一随机盲因子和与各所述第二随机盲因子和的差作为所述待构建盲因子。

进一步的,当所述伪承诺值的数量为1时,所述生成第二混淆公钥集的步骤包括:

从所述其他各用户的链上信息中各获取一个所述第二已验证输出承诺值;

将各个所述第二已验证输出承诺值分别与所述伪承诺值作差,得到各个所述第二承诺值公钥,将各所述第二承诺值公钥作为所述第二混淆公钥集。

进一步的,当所述伪承诺值的数量大于1时,所述生成第二混淆公钥集的步骤还包括:

从所述其他各用户的链上信息中各获取与所述伪承诺值相同数量的所述第二已验证输出承诺值;

对于所述其他各用户中的任意一个目标用户,将所述目标用户的各所述第二承诺值公钥作为同源第二承诺值公钥组;

每次从同源第二承诺值公钥组中抽取一个所述第二承诺值公钥与从伪承诺值组中抽取的一个所述伪承诺值作差得到所述第二承诺值公钥,直至所述同源第二承诺值公钥组和所述伪承诺值组均为空,得到所述目标用户的各所述第二承诺值公钥,其中,所述伪承诺值组包括各伪承诺值;

基于所述其他各用户的所述第二承诺值公钥组成各所述第二混淆公钥集,其中,所述第二混淆公钥集中各所述第二承诺值公钥具有相同伪承诺值,且所述第二混淆公钥集与存在相同伪承诺值的所述第一承诺值公钥对应。

此外,为实现上述目的,本发明提供一种环机密交易的签名验证方法,应用于交易验证方,所述环机密交易的签名验证方法包括以下步骤:

接收交易发起方发送的各待验证输出承诺值、各伪承诺值、第一签名内容和各第二签名内容;

对所述第一签名内容和各所述第二签名内容进行环签名验证;

若所述第一签名内容和所述第二签名内容的环签名验证均验证通过,且各所述伪承诺值的和与各所述待验证输出承诺值的和相等,则判定当前交易合法。

此外,为实现上述目的,本发明还提供一种环机密交易的签名验证系统,所述环机密交易的签名验证系统包括:

交易发起方,用于获取交易发起方的第一地址公钥和所述第一地址公钥对应的地址私钥,以及获取第一混淆公钥集,其中,所述第一混淆公钥集包括除所述交易发起方以外的其他各用户的第二地址公钥;

生成第一承诺值公钥和所述第一承诺值公钥对应的承诺值私钥,以及生成第二混淆公钥集,其中,所述第二混淆公钥集包括所述其他各用户的第二承诺值公钥,所述第一承诺值公钥根据所述交易发起方的第一已验证输出承诺值和所述第一已验证输出承诺值的伪承诺值生成,各所述第二承诺值公钥根据所述其他各用户的第二已验证输出承诺值和所述伪承诺值生成;

根据所述交易发起方的交易内容生成待验证输出承诺值,其中,各所述待验证输出承诺值的盲因子之和与各所述伪承诺值的第一随机盲因子之和相等,其中,所述待验证输出承诺值的数量至少为1,所述伪承诺值的数量至少为1;

根据所述第一地址公钥、所述第一混淆公钥集和所述地址私钥对各所述伪承诺值进行环签名得到第一签名内容;

根据存在关联的所述第一承诺值公钥、所述第二混淆公钥集和承诺值私钥对各所述伪承诺值进行环签名得到各第二签名内容;

将各所述待验证输出承诺值、所述第一签名内容和各所述第二签名内容发送至验证方进行验证;

交易验证方,用于接收交易发起方发送的各待验证输出承诺值、第一签名内容和各第二签名内容;

对所述第一签名内容和各所述第二签名内容进行环签名验证,并从所述第一签名内容中获取各伪承诺值或者从任意一所述第二签名内容中获取各所述伪承诺值;

若各所述伪承诺值的和与各所述待验证输出承诺值的和相等且所述第一签名内容和所述第二签名内容的环签名验证均合法,则判定当前交易合法。

此外,为实现上述目的,本发明还提供一种环机密交易的签名验证设备,所述环机密交易的签名验证设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的环机密交易的签名验证程序,所述环机密交易的签名验证程序被所述处理器执行时实现如上的环机密交易的签名验证方法的步骤。

此外,为实现上述目的,本发明还提供一种可读存储介质,所述可读存储介质上存储有环机密交易的签名验证程序,所述环机密交易的签名验证程序被处理器执行时实现如上述的环机密交易的签名验证方法的步骤。

本发明实施例提出的一种环机密交易的签名验证方法、系统、设备及可读存储介质。

所述方法应用于交易发起方,方法包括:获取交易发起方的第一地址公钥和所述第一地址公钥对应的地址私钥,以及获取第一混淆公钥集,其中,所述第一混淆公钥集包括除所述交易发起方以外的其他各用户的第二地址公钥;生成第一承诺值公钥和所述第一承诺值公钥对应的承诺值私钥,以及生成第二混淆公钥集,其中,所述第二混淆公钥集包括所述其他各用户的第二承诺值公钥,所述第一承诺值公钥根据所述交易发起方的第一已验证输出承诺值和所述第一已验证输出承诺值的伪承诺值生成,各所述第二承诺值公钥根据所述其他各用户的第二已验证输出承诺值和所述伪承诺值生成;根据所述交易发起方的交易内容生成待验证输出承诺值,其中,各所述待验证输出承诺值的盲因子之和与各所述伪承诺值的第一随机盲因子之和相等,其中,所述待验证输出承诺值的数量至少为1,所述伪承诺值的数量至少为1;根据所述第一地址公钥、所述第一混淆公钥集和所述地址私钥对各所述伪承诺值进行环签名得到第一签名内容;根据存在关联的所述第一承诺值公钥、所述第二混淆公钥集和承诺值私钥对各所述伪承诺值进行环签名得到各第二签名内容;将各所述待验证输出承诺值、所述第一签名内容和各所述第二签名内容发送至验证方进行验证。

所述方法应用于交易验证方,方法包括:接收交易发起方发送的各待验证输出承诺值、第一签名内容和各第二签名内容;对所述第一签名内容和各所述第二签名内容进行环签名验证,并从所述第一签名内容中获取各伪承诺值或者从任意一所述第二签名内容中获取各所述伪承诺值;若各所述伪承诺值的和与各所述待验证输出承诺值的和相等且所述第一签名内容和所述第二签名内容的环签名验证均合法,则判定当前交易合法。

对于交易发起方,相比于环机密方案需要构建三元公钥信息矩阵,本发明取消了三元公钥信息矩阵中的第三元公钥信息,构建两元公钥信息矩阵,即第一公钥与第一混淆公钥集作为一元,第二公钥与第二混淆公钥作为另一元。同时,通过构建待验证输出承诺值的盲因子替换掉原来随机生成待验证输出承诺值的盲因子,使得可直接基于输出承诺值验证来交易的输入与输出平衡,从而达到原来三元公钥信息矩阵中第三元公钥信息的作用。可以理解的,本发明可以达到隐藏交易发起方的地址与交易的金额且保证交易合法的情况下,取消原来的第三元公钥信息,从而可以减少完成签名是的数据量,减少一次环签名操作(无需对第三元公钥信息进行环签名),无需向验证方提供第三元公钥信息的盲因子之差,故可以大大提高签名速度,从而提高上链效率。

对于交易验证方,相比于现有环机密方案,本发明无需基于第三元公钥信息的盲因子之差验证交易中的输入与输出平衡,减少了一次环签名验证的步骤,从而加快上链速度。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;

图2为本发明环机密交易的签名验证方法的第一实施例的流程示意图;

图3为本发明环机密交易的签名验证方法的第二实施例的流程示意图;

图4为本发明环机密交易的签名验证方法的第三实施例的流程示意图;

图5为本发明环机密交易的签名验证方法的第四实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。

本发明实施例设备可以是服务器,也可以是智能手机、PC、平板电脑、便携计算机等具有数据处理功能的电子终端设备。

如图1所示,该设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Di sp l ay)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储系统。

可选地,设备还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

本领域技术人员可以理解,图1中示出的设备结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及环机密交易的签名验证程序。

在图1所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的环机密交易的签名验证程序,并执行以下操作:

应用于交易发起方包括:

获取交易发起方的第一地址公钥和所述第一地址公钥对应的地址私钥,以及获取第一混淆公钥集,其中,所述第一混淆公钥集包括除所述交易发起方以外的其他各用户的第二地址公钥;

生成第一承诺值公钥和所述第一承诺值公钥对应的承诺值私钥,以及生成第二混淆公钥集,其中,所述第二混淆公钥集包括所述其他各用户的第二承诺值公钥,所述第一承诺值公钥根据所述交易发起方的第一已验证输出承诺值和所述第一已验证输出承诺值的伪承诺值生成,各所述第二承诺值公钥根据所述其他各用户的第二已验证输出承诺值和所述伪承诺值生成;

根据所述交易发起方的交易内容生成待验证输出承诺值,其中,各所述待验证输出承诺值的盲因子之和与各所述伪承诺值的第一随机盲因子之和相等,其中,所述待验证输出承诺值的数量至少为1,所述伪承诺值的数量至少为1;

根据所述第一地址公钥、所述第一混淆公钥集和所述地址私钥对各所述伪承诺值进行环签名得到第一签名内容;

根据存在关联的所述第一承诺值公钥、所述第二混淆公钥集和承诺值私钥对各所述伪承诺值进行环签名得到各第二签名内容;

将各所述待验证输出承诺值、各所述伪承诺值、所述第一签名内容和各所述第二签名内容发送至验证方进行验证。

进一步地,处理器1001可以调用存储器1005中存储的环机密交易的签名验证程序,还执行以下操作:

当所述交易内容中交易输出的数量为1时,所述根据所述交易发起方的交易内容生成待验证输出承诺值的步骤包括:

基于各所述第一随机盲因子的和以及所述交易输出的金额进行帕德森承诺计算得到所述待验证输出承诺值。

进一步地,处理器1001可以调用存储器1005中存储的环机密交易的签名验证程序,还执行以下操作:

当所述交易输出的数量大于1时,所述待验证输出承诺值包括随机待验证输出承诺值和被构建待验证输出承诺值,所述根据所述交易发起方的交易内容生成待验证输出承诺值的步骤还包括:

从所述交易内容中获取任一交易输出作为待构建交易输出;

基于所述交易内容中除所述待构建交易输出以外的剩余交易输出的金额生成随机待验证输出承诺值,其中,所述随机待验证输出承诺值的第二随机盲因子为随机生成;

基于所述第一随机盲因子与所述第二随机盲因子确定待构建盲因子;

基于所述待构建盲因子和所述待构建交易输出的金额进行帕德森承诺计算得到所述被构建待验证输出承诺值。

进一步地,处理器1001可以调用存储器1005中存储的环机密交易的签名验证程序,还执行以下操作:

所述基于所述第一随机盲因子与所述第二随机盲因子确定待构建盲因子的步骤包括:

若所述第一随机盲因子的数量为1且所述第二随机盲因子的数量为1,则将所述第一随机盲因子与所述第二随机盲因子的差作为所述待构建盲因子;

若所述第一随机盲因子的数量为1且所述第二随机盲因子的数量大于1,则将所述第一随机盲因子与各所述第二随机盲因子和的差作为所述待构建盲因子;

若所述第一随机盲因子的数量大于1且所述第二随机盲因子的数量为1,则将各所述第一随机盲因子和与所述第二随机盲因子的差作为所述待构建盲因子;

若所述第一随机盲因子的数量大于1且所述第二随机盲因子的数量大于1,则将各所述第一随机盲因子和与各所述第二随机盲因子和的差作为所述待构建盲因子。

进一步地,处理器1001可以调用存储器1005中存储的环机密交易的签名验证程序,还执行以下操作:

当所述伪承诺值的数量为1时,所述生成第二混淆公钥集的步骤包括:

从所述其他各用户的链上信息中各获取一个所述第二已验证输出承诺值;

将各个所述第二已验证输出承诺值分别与所述伪承诺值作差,得到各个所述第二承诺值公钥,将各所述第二承诺值公钥作为所述第二混淆公钥集。

进一步地,处理器1001可以调用存储器1005中存储的环机密交易的签名验证程序,还执行以下操作:

当所述伪承诺值的数量大于1时,所述生成第二混淆公钥集的步骤还包括:

从所述其他各用户的链上信息中各获取与所述伪承诺值相同数量的所述第二已验证输出承诺值;

对于所述其他各用户中的任意一个目标用户,将所述目标用户的各所述第二承诺值公钥作为同源第二承诺值公钥组;

每次从同源第二承诺值公钥组中抽取一个所述第二承诺值公钥与从伪承诺值组中抽取的一个所述伪承诺值作差得到所述第二承诺值公钥,直至所述同源第二承诺值公钥组和所述伪承诺值组均为空,得到所述目标用户的各所述第二承诺值公钥,其中,所述伪承诺值组包括各伪承诺值;

基于所述其他各用户的所述第二承诺值公钥组成各所述第二混淆公钥集,其中,所述第二混淆公钥集中各所述第二承诺值公钥具有相同伪承诺值,且所述第二混淆公钥集与存在相同伪承诺值的所述第一承诺值公钥对应。

进一步地,处理器1001可以调用存储器1005中存储的环机密交易的签名验证程序,还执行以下操作:

应用于交易验证方:

接收交易发起方发送的各待验证输出承诺值、各伪承诺值、第一签名内容和各第二签名内容;

对所述第一签名内容和各所述第二签名内容进行环签名验证;

若所述第一签名内容和所述第二签名内容的环签名验证均验证通过,且各所述伪承诺值的和与各所述待验证输出承诺值的和相等,则判定当前交易合法。

为清楚的说明本发明方案的实施过程,对相关现有技术进行简单说明。

在本发明中,所发生的交易是基于UTXO(Unspent Transaction output,未花费的交易输出)模型进行的,在此模型下每笔交易都有输入和输出,例如,其他人付给自己的钱可称为“交易输入”,自己收到的钱则可称为“交易输出”,但自己没支付出去之前都称为“未花费的交易输出”,一旦支付出去,就变成了真正的“交易输出”。

环签名是指在已知目标公钥私钥的前提下将目标公钥放置在n个其他公钥中,并基于已知的私钥结合目标公钥和其他公钥构建环,环签名的接收方对环签名进行过验证后,可确定接收到的消息来自于环签名中的公钥但不确定是哪个公钥,从而达到隐藏目标公钥目的,例如,交易发起方的基于自身公钥(地址)的私钥与其他用户的公钥构建环,从而隐藏交易的发送方。

例如,签名者已知一个公钥Pi以及和该公钥的密钥xi。存在一组公钥如下:

PK=[P

式中,PK为公钥合集。

签名者再生成n个随机数r,对应n个公钥,如下:

R=[r

式中,R为随机数合集,其中,rn与Pn对应,但需说明的是,对于签名者本身的公钥Pi对应的随机数将在后续步骤中计算得到,并非随机生成。

设置一个随机数k和一个标量ci满足以下公式:

k*G=r

式中,G为生成元(即椭圆曲线上的点)、Pi为签名者的公钥、ri为签名者公钥对应的随机数(目前还未知)。

环签名构成环的计算公式如下:

c

式中,c

c

c

c

c

c

式中,对于哈希值c

k*G=r

式中,k、G、P

环签名验证,验证方在接收到上述签名内容之后,可基于上述构建公式:

c

从c

此外,具体的环签名构建过程也可参考现有方案。

帕德森承诺(Pedersen承诺),本发明中,帕德森承诺可用于隐藏交易的具体金额,帕德森承诺的计算公式如下:

C(x,a)=x*G+a*H

式中,a为真实的金额,x为盲因子,G和H为生成元(即为椭圆曲线上不同的点),C(x,a)为结合x和a计算得到承诺值。可以理解的是,在仅公开C(x,a)的情况下是不知道真实金额a的值。

环机密,是基于环签名与帕德森承诺构造来保证“隐藏”发送方和交易真实金额的技术。在环机密中需要构建多层环签名,在现有的方案中,会基于一个当前交易内容的三元公钥组进行环签名。三元公钥组如下:

式中,P为当前交易中发起方的地址,C

矩阵中,当前交易内容的相关信息为在P

在目前环机密方案中,签名时需要构建上述三元公钥信息矩阵并基于每一元公钥信息进行环签名,且需要向验证方提供输出和输入的盲因子差值进行验证。从而造成签名效率低下,影响区块链上链效率。

在本发明中将减少公钥信息矩阵的维度,构建特定的二元公钥信息矩阵实现交易的发送方和交易的金额隐藏,并证明交易内容的合法性,提高签名效率,从而提高区块链上链效率。

参照图2,本发明环机密交易的签名验证方法的第一实施例,所述环机密交易的签名验证方法应用于交易发起方,所述方法包括:

步骤S10,获取交易发起方的第一地址公钥和所述第一地址公钥对应的地址私钥,以及获取第一混淆公钥集,其中,所述第一混淆公钥集包括除所述交易发起方以外的其他各用户的第二地址公钥;

在本实施例中,交易的发起方将对自身(即交易发起发)和交易中所涉及的具体金额进行隐藏。首先获取发起方的地址作为第一地址公钥,对应包括第一地址公钥预设的地址私钥。第一地址公钥为真实的发起方的地址。为混淆发起方的地址(第一地址公钥),获取第一混淆公钥集,第一混淆公钥集由除交易发起方以外的其他各用户的第二地址公钥组成。如参照上述三元公钥信息矩阵中,除P

步骤S20,生成第一承诺值公钥和所述第一承诺值公钥对应的承诺值私钥,以及生成第二混淆公钥集,其中,所述第二混淆公钥集包括所述其他各用户的第二承诺值公钥,所述第一承诺值公钥根据所述交易发起方的第一已验证输出承诺值和所述第一已验证输出承诺值的伪承诺值生成,各所述第二承诺值公钥根据所述其他各用户的第二已验证输出承诺值和所述伪承诺值生成;

具体的,上述第一承诺值公钥是根据交易发起方的第一已验证输出承诺值和所述第一已验证输出承诺值的伪承诺值构建生成。第一已验证输出承诺值可以认为是“未花费的交易输出”或者发起方的一笔未消费的金额(第一已验证输出承诺值是已经过验证上传到链上的公开信息)。可以理解的是,由于UTXO模型的特性,第一已验证输出承诺值的数量可以是一个也可是多个,例如假设发起方有一个真实金额为10的已验证输出承诺值C

进一步的,第一已验证输出承诺值的伪承诺值的生成过程包括:随机生成所述随机盲因子;基于所述第一已验证输出承诺值的金额和所述随机盲因子进行帕德森承诺计算得到所述伪承诺值。可以理解的是,伪承诺值用于代替发起方真实的承诺值进行交易以掩盖发起方,则伪承诺值所代表的金额应当与真实的承诺值所代表的金额相同,所以每个第一已验证输出承诺值应当对应有一个伪承诺值。生成伪承诺值时,随机生成盲因子(即随机盲因子,随机盲因子与计算得到第一已验证输出承诺值时的盲因子应当是不同的,否则伪承诺值将与真实承诺值相同)。例如参考上述三元公钥信息矩阵中当前交易内容的信息(即P

进一步的,所述第一承诺值公钥的生成过程包括:将所述第一已验证输出承诺值与对应伪承诺值作差得到所述第一承诺值公钥。第一承诺值公钥对应的承诺值私钥的生成过程包括:将所述第一已验证输出承诺值的已验证盲因子与所述第一随机盲因子之差作为承诺值私钥。

在本实施例中,将第一已验证输出承诺值与对应伪承诺值之差作为第一承诺值公钥。同样基于上述例子,对于一对真伪承诺值C(r

同样的,为混淆第一承诺值公钥,生成第二混淆公钥集,第二混淆公钥集包括其他各用户的第二承诺值公钥,其他各用户的第二承诺值公钥同样由其他各用户的第二已验证输出承诺值和伪承诺值构建。在此需要说明的是,现有环机密方案中,对于其混淆作用的第二混淆公钥所对应的伪承诺值是随机生成的,如参考上述三元公钥矩阵信息P

参照本实施例中的三元公钥信息矩阵和二元公钥信息矩阵可以看出,二元公钥信息矩阵中各第二已验证输出承诺值与对应第一已验证输出承诺值的伪承诺值保持一致。

进一步的,当所述伪承诺值的数量为1时,所述生成第二混淆公钥集的步骤包括:

步骤S211,从除所述其他各用户的链上信息中各获取一个所述第二已验证输出承诺值;

步骤S212,将各个所述第二已验证输出承诺值分别与所述伪承诺值作差,得到各个所述第二承诺值公钥,将各所述第二承诺值公钥作为所述第二混淆公钥集。

需要说明的是,由于交易具体情况不同,所涉及的伪承诺值数量也可能不同。具体的,在伪承诺值的数量为1时(对应的第一已验证输出承诺值的数量也为1),从其他各用户的链上信息(储存在区块链上已经公开的信息)中各获取一个所述第二已验证输出承诺值。将各个第二已验证输出承诺值分别与伪承诺值作差,从而得到第二承诺值公钥,再将得到的各第二承诺值公钥作为第二混淆公钥集。如可参照上述二元公钥矩阵,上述示例的二元公钥矩阵,实际为伪承诺值数量为2时的场景,以伪承诺值为C(r'

进一步的,当所述伪承诺值的数量大于1时,所述生成第二混淆公钥集的步骤还包括:

步骤S221,从所述其他各用户的链上信息中各获取与所述伪承诺值相同数量的所述第二已验证输出承诺值;

步骤S222,对于所述其他各用户中的任意一个目标用户,将所述目标用户的各所述第二承诺值公钥作为同源第二承诺值公钥组;

步骤S223,每次从同源第二承诺值公钥组中抽取一个所述第二承诺值公钥与从伪承诺值组中抽取的一个所述伪承诺值作差得到所述第二承诺值公钥,直至所述同源第二承诺值公钥组和所述伪承诺值组均为空,得到所述目标用户的各所述第二承诺值公钥,其中,所述伪承诺值组包括各伪承诺值;

步骤S224,基于所述其他各用户的所述第二承诺值公钥组成各所述第二混淆公钥集,其中,所述第二混淆公钥集中各所述第二承诺值公钥具有相同伪承诺值,且所述第二混淆公钥集与存在相同伪承诺值的所述第一承诺值公钥对应。

具体的,在伪承诺值的数量大于1时,同样参考上述示例的二元公钥矩阵,发起方存在的第一已验证输出承诺值包括:C(r

步骤S30,根据所述交易发起方的交易内容生成待验证输出承诺值,其中,各所述待验证输出承诺值的盲因子之和与各所述伪承诺值的第一随机盲因子之和相等,其中,所述待验证输出承诺值的数量至少为1,所述伪承诺值的数量至少为1;

在本实施例中,各待验证输出承诺值的盲因子之和与各伪承诺值的第一随机盲因子之和保持一致,待验证输出承诺值的实际金额则基于实际交易情况设置,例如发起方有两个第一已验证输出承诺值,真实金额分别为10和5,而发起方需要花出的金额为15,对应的待验证输出承诺值的金额为15,若发起方需要花出的金额为12,则一个待验证输出承诺值的金额为12,另一个找零的待验证输出承诺值的金额为3,且这两个待验证输出承诺值的盲因子之和与金额分别为10和5的两个第一已验证输出承诺值的盲因子之和相同。可以理解的是,按照帕德森承诺计算公式,生成待验证输出承诺值时需要盲因子和金额,其中,可将伪承诺值的第一随机盲因子作为生成待验证输出承诺值时的盲因子(若存在多个第一随机盲因子和多个待验证输出承诺值,则保证第一随机盲因子的和与各待验证输出承诺值盲因子的和相同),可以理解的是,由于,在本发明中各伪承诺值的金额之和与各第二已验证输出承诺值的金额之和相等,且各伪承诺值的第一随机盲因子之和与各第二已验证输出承诺值的盲因子之和相等,故各伪承诺值的和与各第二已验证输出承诺值的和相等,基于此种方式即可证明当前交易中的金额输出与金额输入守恒,故相比于现有环机密技术需要依据第三元公钥信息以及第三元公钥信息对应的盲因子之差,来证明当前交易中金额输出与金额输入守恒,本发明省去了三元公钥信息矩阵中的第三元公钥信息,也省去了向验证方提供第三元公钥信息对应的盲因子之差的数据,从而加快了签名速度,减少了向验证方提供的数据量,实现上链速度的提高。

步骤S40,根据所述第一地址公钥、所述第一混淆公钥集和所述地址私钥对各所述伪承诺值进行环签名得到第一签名内容;

可以理解的是,当已知一组公钥(即第一地址公钥和第一混淆公钥集组成的一组公钥),以及该组公钥中任意一个公钥的私钥(即第一地址公钥对应的地址私钥),即可进行环签名,上述伪承诺值将作为被签名的消息,可以理解的是,环签名的具体签名过程可参考现有方案,此处不再赘述。而第一签名内容通常包括,首个哈希值(编号为1的哈希值),一组公钥,一组与公钥存在对应关系的数。

步骤S50,根据存在关联的所述第一承诺值公钥、所述第二混淆公钥集和承诺值私钥对各所述伪承诺值进行环签名得到各第二签名内容;

同样的,可参考步骤S40,第一承诺值公钥和对应第二混淆公钥集组成一组公钥(第一承诺值公钥中伪承诺值和第二混淆公钥集中的第二承诺值公钥的为承诺值相同即可表示关联),并基于与第一承诺值公钥对应的承诺值私钥完成环签名。承诺值私钥则为对应第一已验证输出承诺的已验证盲因子与伪承诺值的第一随机盲因子之差。若存在多组关联的第一承诺值公钥、所述第二混淆公钥集和承诺值私钥,则进行多次环签名,得到多个第二签名内容即可。

步骤S60,将各所述待验证输出承诺值、各所述伪承诺值、所述第一签名内容和各所述第二签名内容发送至验证方进行验证。

具体的,将生成的各待验证输出承诺值、各伪承诺值、第一签名内容和各第二签名内容发送至验证方进行验证。验证方将接收交易发起方发送的各待验证输出承诺值、第一签名内容和各第二签名内容;对所述第一签名内容和各所述第二签名内容进行环签名验证;若所述第一签名内容和所述第二签名内容的环签名验证均验证通过,且各所述伪承诺值的和与各所述待验证输出承诺值的和相等,则判定当前交易合法。可以理解的是,对于验证方验证当前交易输入与输出平衡(交易合法),只需将各待验证输出承诺值的和与各所述伪承诺值和相减,当相减得到的差为零即可验证当前交易输入与输出平衡。对于第二签名内容,可以验证伪承诺值所代表的金额与发起方的第一已验证输出承诺值所代表的金额相同,并隐藏发起方的第一已验证输出承诺值。对于第一签名内容,可以隐藏发起方的地址。从而实现隐藏交易发起方的地址与交易的金额,且保证交易合法。

在本实施例中,获取交易发起方的第一地址公钥和所述第一地址公钥对应的地址私钥,以及获取第一混淆公钥集,其中,所述第一混淆公钥集包括除所述交易发起方以外的其他各用户的第二地址公钥;生成第一承诺值公钥和所述第一承诺值公钥对应的承诺值私钥,以及生成第二混淆公钥集,其中,所述第二混淆公钥集包括所述其他各用户的第二承诺值公钥,所述第一承诺值公钥根据所述交易发起方的第一已验证输出承诺值和所述第一已验证输出承诺值的伪承诺值生成,各所述第二承诺值公钥根据所述其他各用户的第二已验证输出承诺值和所述伪承诺值生成;根据所述交易发起方的交易内容生成待验证输出承诺值,其中,各所述待验证输出承诺值的盲因子之和与各所述伪承诺值的第一随机盲因子之和相等,其中,所述待验证输出承诺值的数量至少为1,所述伪承诺值的数量至少为1;根据所述第一地址公钥、所述第一混淆公钥集和所述地址私钥对各所述伪承诺值进行环签名得到第一签名内容;根据存在关联的所述第一承诺值公钥、所述第二混淆公钥集和承诺值私钥对各所述伪承诺值进行环签名得到各第二签名内容;将各所述待验证输出承诺值、所述第一签名内容和各所述第二签名内容发送至验证方进行验证。相比于环机密方案需要构建三元公钥信息矩阵。本发明取消了三元公钥信息矩阵中的第三元公钥信息,构建两元公钥信息矩阵,即第一公钥与第一混淆公钥集作为一元,第二公钥与第二混淆公钥作为另一元。同时,通过构建待验证输出承诺值的盲因子替换掉原来随机生成待验证输出承诺值的盲因子,使得可直接基于输出承诺值验证来交易的输入与输出平衡,从达到原来三元公钥信息矩阵中第三元公钥信息的作用。可以理解的,本发明可以达到隐藏交易发起方的地址与交易的金额且保证交易合法的情况下,取消原来的第三元公钥信息,从而可以减少完成签名是的数据量,减少一次环签名操作(无需对第三元公钥信息进行环签名),无需向验证方提供第三元公钥信息的盲因子之差,故可以大大提高签名速度,从而提高上链效率。

参考图3,基于本发明环机密交易的签名验证方法的第一实施例提出本发明环机密交易的签名验证方法的第二实施例。在实施例中与上述实施例相同或相似的内容,可以参考上文介绍,后续不再赘述,当所述交易内容中交易输出的数量为1时,所述根据所述交易发起方的交易内容生成待验证输出承诺值的步骤包括:

步骤S310,基于各所述第一随机盲因子的和以及所述交易输出的金额进行帕德森承诺计算得到所述待验证输出承诺值。

在本实施例中,上述交易输出是指发起方完成当前交易所需要进行的金额输出,例如发起方有两个第一已验证输出承诺值,对应真实金额分别为10和5,而发起方向一个接收方花费的金额(交易输出的金额)为15,则交易输出的数量为一,若存在有两个接收方,分别需要花费的金额为12和3,则交易输出的数量为二。对应的,则基于各伪承诺的第一随机盲因子和与交易输出的金额完成帕德森承诺计算得到待验证输出承诺值。如假设有两个伪承诺值分别为C(r'

参考图4,基于本发明环机密交易的签名验证方法的第一实施例提出本发明环机密交易的签名验证方法的第三实施例。在实施例中与上述实施例相同或相似的内容,可以参考上文介绍,后续不再赘述,当所述交易输出的数量大于1时,所述待验证输出承诺值包括随机待验证输出承诺值和被构建待验证输出承诺值,所述根据所述交易发起方的交易内容生成待验证输出承诺值的步骤还包括:

步骤S321,从所述交易内容中获取任一交易输出作为待构建交易输出;

步骤S322,基于所述交易内容中除所述待构建交易输出以外的剩余交易输出的金额生成随机待验证输出承诺值,其中,所述随机待验证输出承诺值的第二随机盲因子为随机生成;

步骤S323,基于所述第一随机盲因子与所述第二随机盲因子确定待构建盲因子;

进一步的,所述基于所述第一随机盲因子与所述第二随机盲因子确定待构建盲因子的步骤包括:若所述第一随机盲因子的数量为1且所述第二随机盲因子的数量为1,则将所述第一随机盲因子与所述第二随机盲因子的差作为所述待构建盲因子;若所述第一随机盲因子的数量为1且所述第二随机盲因子的数量大于1,则将所述第一随机盲因子与各所述第二随机盲因子和的差作为所述待构建盲因子;若所述第一随机盲因子的数量大于1且所述第二随机盲因子的数量为1,则将各所述第一随机盲因子和与所述第二随机盲因子的差作为所述待构建盲因子;若所述第一随机盲因子的数量大于1且所述第二随机盲因子的数量大于1,则将各所述第一随机盲因子和与各所述第二随机盲因子和的差作为所述待构建盲因子。

步骤S324,基于所述待构建盲因子和所述待构建交易输出的金额进行帕德森承诺计算得到所述被构建待验证输出承诺值。

可以理解的是,在本实施例中,生成的各个待验证输出承诺值的盲因子之和与各第一随机盲因子之和相等。具体的,待验证输出承诺值可分为两种,一种为随机待验证输出承诺值(随机待验证输出承诺值中的盲因子是随机生成的),另一种为被构建待验证输出承诺值(被构建待验证输出承诺值中的盲因子是构建得到)。当交易输出数量大于1时,表示有多个交易输出。例如,交易输出数量为三(通常情况下发起方除正常交易花费外,还需要为自身进行找零以及需要支付手续费,所以交易输出的数量也通常在三个以上),假设其对应生成的待验证输出承诺值分别为Cout(r1,a)、Cout(r2,b)和Cout(r3,c),其中,a、b、c分别为交易输出对应的金额,假设待构建交易输出的待验证输出承诺值为Cout(r1,a),故基于当前交易内容中剩余交易输出的金额随机生成的随机待验证输出承诺值分别为Cout(r2,b)和Cout(r3,c),其中,r2和r3为第二随机盲因子均可以随机生成。需要说明的是,第一随机盲因子的数量可以是一个也可以是多个。基于第一随机盲因子的和、r2、r3确定待构建盲因子r1,如只有一个第一随机盲因子,将第一随机盲因子与r2+r3(即各第二随机盲因子的和)之间的差作为所述待构建盲因子r1,若存在多个第一随机盲因子,则将各第一随机盲因子的和与r2+r3(即各第二随机盲因子的和)之间的差作为所述待构建盲因子r1,其他数量的第二随机盲因子可参照次过程,此处不再赘述。最后,在根据待构建盲因子和待构建交易输出的金额进行帕德森承诺计算得到被构建待验证输出承诺值。可以理解的是,本实施例中,各待验证输出承诺值的盲因子的和与各第一随机盲因子的和是相同,故当各待验证输出承诺值的和与各伪承诺值的和相同时,则可以表示待验证输出承诺值的金额的和与伪承诺值的金额的和相同,从而证明当前交易的输入与输出平衡,取代原第三元公钥信息矩阵的中第三元公钥信息。

参考图5,基于本发明环机密交易的签名验证方法的第一实施例提出本发明环机密交易的签名验证方法的第四实施例。在实施例中与上述实施例相同或相似的内容,可以参考上文介绍,后续不再赘述。所述环机密交易的签名验证方法应用于交易验证方,所述方法包括:

步骤B10,接收交易发起方发送的各待验证输出承诺值、第一签名内容和各第二签名内容;

步骤B20,对所述第一签名内容和各所述第二签名内容进行环签名验证;

步骤B30,若所述第一签名内容和所述第二签名内容的环签名验证均验证通过,且各所述伪承诺值的和与各所述待验证输出承诺值的和相等,则判定当前交易合法。

具体的,交易验证方将接收交易发起方发送的各待验证输出承诺值、第一签名内容和各第二签名内容。其中,交易发起方生成上述内容的过程包括:获取交易发起方的第一地址公钥和所述第一地址公钥对应的地址私钥,以及获取第一混淆公钥集,其中,所述第一混淆公钥集包括除所述交易发起方以外的其他各用户的第二地址公钥;生成第一承诺值公钥和所述第一承诺值公钥对应的承诺值私钥,以及生成第二混淆公钥集,其中,所述第二混淆公钥集包括所述其他各用户的第二承诺值公钥,所述第一承诺值公钥根据所述交易发起方的第一已验证输出承诺值和所述第一已验证输出承诺值的伪承诺值生成,各所述第二承诺值公钥根据所述其他各用户的第二已验证输出承诺值和所述伪承诺值生成;根据所述交易发起方的交易内容生成待验证输出承诺值,其中,各所述待验证输出承诺值的盲因子之和与各所述伪承诺值的第一随机盲因子之和相等,其中,所述待验证输出承诺值的数量至少为1,所述伪承诺值的数量至少为1;根据所述第一地址公钥、所述第一混淆公钥集和所述地址私钥对各所述伪承诺值进行环签名得到第一签名内容;根据存在关联的所述第一承诺值公钥、所述第二混淆公钥集和承诺值私钥对各所述伪承诺值进行环签名得到各第二签名内容;将各所述待验证输出承诺值、各所述伪承诺值、所述第一签名内容和各所述第二签名内容发送至验证方进行验证。此外,对于各步骤具体过程可参照上述实施例,此次不再再赘述。

验证方对第一签名内容和各第二签名内容进行环签名验证的过程,可参照现有方案,此处不再赘述。若第一签名内容和各第二签名内容环签名验证验证通过,则表示交易发起方属于环签名中所涉及的用户中的一个,且伪承诺值可代替真实承诺值进行交易。对于验证方验证此次交易的输入与输出是否平衡,可通过计算各待验证输出承诺值的和以及计算各伪承诺值的和,再判断得到的两个和是否相等,若相等则可判断本次交易中金额(输入与输出)守恒。当第一签名内容和所述第二签名内容的环签名验证均合验证通过,且各伪承诺值的和与各待验证输出承诺值的和相等,则可判定交易合法,即可将对应的交易内容进行上链储存。

可以理解的是,相比于现有方案,本发明无需基于第三元公钥信息的盲因子之差验证交易中的输入与输出平衡,减少了一次环签名验证的步骤,从而加快上链速度。

此外,本发明实施例还提供一种环机密交易的签名验证系统,所述系统包括:

交易发起方,用于获取交易发起方的第一地址公钥和所述第一地址公钥对应的地址私钥,以及获取第一混淆公钥集,其中,所述第一混淆公钥集包括除所述交易发起方以外的其他各用户的第二地址公钥;

生成第一承诺值公钥和所述第一承诺值公钥对应的承诺值私钥,以及生成第二混淆公钥集,其中,所述第二混淆公钥集包括所述其他各用户的第二承诺值公钥,所述第一承诺值公钥根据所述交易发起方的第一已验证输出承诺值和所述第一已验证输出承诺值的伪承诺值生成,各所述第二承诺值公钥根据所述其他各用户的第二已验证输出承诺值和所述伪承诺值生成;

根据所述交易发起方的交易内容生成待验证输出承诺值,其中,各所述待验证输出承诺值的盲因子之和与各所述伪承诺值的第一随机盲因子之和相等,其中,所述待验证输出承诺值的数量至少为1,所述伪承诺值的数量至少为1;

根据所述第一地址公钥、所述第一混淆公钥集和所述地址私钥对各所述伪承诺值进行环签名得到第一签名内容;

根据存在关联的所述第一承诺值公钥、所述第二混淆公钥集和承诺值私钥对各所述伪承诺值进行环签名得到各第二签名内容;

将各所述待验证输出承诺值、所述第一签名内容和各所述第二签名内容发送至验证方进行验证;

交易验证方,用于接收交易发起方发送的各待验证输出承诺值、第一签名内容和各第二签名内容;

对所述第一签名内容和各所述第二签名内容进行环签名验证,并从所述第一签名内容中获取各伪承诺值或者从任意一所述第二签名内容中获取各所述伪承诺值;

若各所述伪承诺值的和与各所述待验证输出承诺值的和相等且所述第一签名内容和所述第二签名内容的环签名验证均合法,则判定当前交易合法。

本发明提供的环机密交易的签名验证系统,采用上述实施例中的环机密交易的签名验证方法,旨在解决目前目前环机密交易的签名验证方式效率较低的技术问题。与现有技术相比,本发明实施例提供的环机密交易的签名验证系统的有益效果与上述实施例提供的环机密交易的签名验证方法的有益效果相同,且该环机密交易的签名验证系统中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。

此外,为实现上述目的,本发明还提供一种环机密交易的签名验证设备,所述环机密交易的签名验证设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的环机密交易的签名验证程序,所述环机密交易的签名验证程序被所述处理器执行时实现如上述的环机密交易的签名验证方法的步骤。

本发明环机密交易的签名验证设备的具体实施方式与上述环机密交易的签名验证方法各实施例基本相同,在此不再赘述。

此外,为实现上述目的,本发明还提供一种可读存储介质,所述介质为计算机介质,所述可读存储介质上存储有环机密交易的签名验证程序,所述环机密交易的签名验证程序被处理器执行时实现如上述的环机密交易的签名验证方法的步骤。

本发明介质具体实施方式与上述环机密交易的签名验证方法各实施例基本相同,在此不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 在线直播交易方法、系统、电子设备以及可读存储介质
  • 存储设备的系统重置方法、装置、系统及可读存储介质
  • 一种交易流水数据检测方法、装置、设备及可读存储介质
  • 一种基于金融时间序列特征的异常交易识别方法,设备及可读存储介质
  • 艺术品交易方法、装置、设备及可读存储介质
  • NFT交易方法、交易系统、计算机可读存储介质及终端设备
  • 电商交易数据处理方法、设备、可读存储介质及交易系统
技术分类

06120115920161