用于信息保护的系统和方法与流程

文档序号:18325005发布日期:2019-08-03 10:54阅读:181来源:国知局
用于信息保护的系统和方法与流程

本公开总体上涉及用于信息保护的方法和设备。



背景技术:

隐私对于各种用户之间的通信和数据传送是重要的。在没有保护的情况下,用户暴露于身份盗窃、非法转移或其它潜在损失的风险中。当在线实现通信和传送时,由于对在线信息的自由访问,风险甚至变得更大。



技术实现要素:

本发明的各种实施例包括用于信息保护的系统、方法和非暂态计算机可读介质。

根据一个方面,一种计算机实现的用于信息保护的方法包括:用承诺方案承诺交易的交易金额t以获取交易承诺值t,所述承诺方案至少包括交易盲因子r_t;用所述交易的接收方的公钥pk_b加密所述交易盲因子r_t和所述交易金额t的组合;以及向与所述接收方相关联的接收方节点发送所述交易承诺值t和所述加密的组合,以便所述接收方节点验证所述交易。

在一些实施例中,所述公钥pk_b是非对称加密密钥。

在一些实施例中,所述承诺方案包括pedersen承诺,所述pedersen承诺至少基于所述交易盲因子r_t并且具有所述交易金额t作为被承诺值。

在一些实施例中,所述交易盲因子r_t和所述交易金额t的组合包括所述交易盲因子r_t和所述交易金额t的级联。

在一些实施例中,向与所述接收方相关联的接收方节点发送所述交易承诺值t和所述加密的组合,以便所述接收方节点验证所述交易,包括:向与所述接收方相关联的接收方节点发送所述交易承诺值t和所述加密的组合,使得所述接收方节点:用所述接收方的私钥sk_b解密所述加密的组合,以获取所述交易盲因子r_t和所述交易金额t;以及至少基于所述交易承诺值t、所述交易盲因子r_t和所述交易金额t验证所述交易。

在一些实施例中,促使所述接收方节点至少基于所述交易承诺值t、所述交易盲因子r_t和所述交易金额t验证所述交易,包括使所述接收方节点:响应于基于所述交易盲因子r_t确定所述交易承诺值t与所述交易金额t的承诺方案不匹配,拒绝所述交易;以及响应于基于所述交易盲因子r_t确定所述交易承诺值t与所述交易金额t的承诺方案匹配,通过利用所述接收方的所述私钥sk_b对所述交易签名以生成接收方签名sigb来批准所述交易。

在一些实施例中,在向与所述接收方相关联的接收方节点发送所述加密的组合之前,还包括:用承诺方案承诺所述交易的找零y以获取找零承诺值y,所述承诺方案至少包括找零盲因子r_y,其中所述找零y是所述交易的发送方为所述交易动用的一个或多个资产减去所述交易金额t;以及用所述发送方的公钥pk_a加密所述找零盲因子r_y和所述找零y的另一组合。

在一些实施例中,所述方法还包括:响应于接收到所述接收方签名sigb,通过用所述发送方的私钥sk_a对所述交易签名以生成发送方签名siga来批准所述交易;以及向区块链网络中的一个或多个节点提交包括所述加密的组合、所述加密的另一组合、所述交易承诺值t、所述找零承诺值y、所述发送方签名siga和所述接收方签名sigb的所述交易,以便所述一个或多个节点验证所述交易。

在一些实施例中,向所述区块链网络中的一个或多个节点提交包括所述加密的组合、所述加密的另一组合、所述交易承诺值t、所述找零承诺值y、所述发送方签名siga和所述接收方签名sigb的所述交易以便所述一个或多个节点验证所述交易,包括:向所述区块链网络中的所述一个或多个节点提交包括所述加密的组合、所述加密的另一组合、所述交易承诺值t、所述找零承诺值y、所述发送方签名siga和所述接收方签名sigb的所述交易,使得所述一个或多个节点响应于成功验证所述交易,向所述接收方发布所述交易金额t、消除为所述交易动用的所述一个或多个资产、并向所述发送方发布所述找零y。

根据另一方面,一种非暂态计算机可读存储介质存储待由处理器执行以促使所述处理器执行操作的指令,所述操作包括:用承诺方案承诺交易的交易金额t以获取交易承诺值t,所述承诺方案至少包括交易盲因子r_t;用所述交易的接收方的公钥pk_b加密所述交易盲因子r_t和所述交易金额t的组合;以及向与所述接收方相关联的接收方节点发送所述交易承诺值t和所述加密的组合,以便所述接收方节点验证所述交易。

根据另一方面,一种用于信息保护的系统包括处理器和耦合至所述处理器的非暂态计算机可读存储介质,所述存储介质存储待由所述处理器执行以促使所述系统执行操作的指令,所述操作包括:用承诺方案承诺交易的交易金额t以获取交易承诺值t,所述承诺方案至少包括交易盲因子r_t;用所述交易的接收方的公钥pk_b加密所述交易盲因子r_t和所述交易金额t的组合;以及向与所述接收方相关联的接收方节点发送所述交易承诺值t和所述加密的组合,以便所述接收方节点验证所述交易。

根据另一方面,一种计算机实现的用于信息保护的方法包括:获取用交易的接收方的公钥pk_b加密的交易盲因子r_t和交易金额t的组合,并获取交易承诺值t,其中,由与所述交易的发送方相关联的发送方节点用承诺方案承诺所述交易金额t,以获取所述交易承诺值t,所述承诺方案至少包括所述交易盲因子r_t;用所述交易的接收方的私钥sk_b解密所述获取的组合,以获取所述交易盲因子r_t和所述交易金额t;以及至少基于所述交易承诺值t、所述交易盲因子r_t和所述交易金额t验证所述交易。

在一些实施例中,所述接收方的所述公钥pk_b和所述接收方的所述私钥sk_b是非对称加密密钥。

根据另一方面,非暂态计算机可读存储介质存储待由处理器执行以促使所述处理器执行操作的指令,所述操作包括:获取用交易的接收方的公钥pk_b加密的交易盲因子r_t和交易金额t的组合,并获取交易承诺值t,其中,由与所述交易的发送方相关联的发送方节点用承诺方案承诺所述交易金额t,以获取所述交易承诺值t,所述承诺方案至少包括所述交易盲因子r_t;用所述交易的接收方的私钥sk_b解密所述获取的组合,以获取所述交易盲因子r_t和所述交易金额t;以及至少基于所述交易承诺值t、所述交易盲因子r_t和所述交易金额t验证所述交易。

根据另一方面,一种用于信息保护的系统包括处理器和耦合至所述处理器的非暂态计算机可读存储介质,所述存储介质存储待由所述处理器执行以使所述系统执行操作的指令,所述操作包括:获取用交易的接收方的公钥pk_b加密的交易盲因子r_t和交易金额t的组合,并获取交易承诺值t,其中,由与所述交易的发送方相关联的发送方节点用承诺方案承诺所述交易金额t,以获取所述交易承诺值t,所述承诺方案至少包括所述交易盲因子r_t;用所述交易的接收方的私钥sk_b解密所述获取的组合,以获取所述交易盲因子r_t和所述交易金额t;以及至少基于所述交易承诺值t、所述交易盲因子r_t和所述交易金额t验证所述交易。

根据另一方面,一种计算机实现的用于信息保护的方法包括:用承诺方案承诺交易的交易金额t以获取交易承诺值t,所述承诺方案至少包括交易盲因子r_t;将所述交易金额t、所述交易盲因子r_t以及所述交易承诺值t发送至与所述交易的接收方关联的接收方节点,以便所述接收方节点验证所述交易,并用所述接收方的公钥pk_b加密所述交易盲因子r_t和所述交易金额t;从所述接收方节点获取所述交易盲因子r_t和所述交易金额t的加密的组合;以及向区块链中的多个节点传输所述加密的组合和所述交易承诺值t,以便所述多个节点验证所述交易。

根据另一方面,一种非暂态计算机可读存储介质存储待由处理器执行以促使所述处理器执行操作的指令,所述操作包括:用承诺方案承诺交易的交易金额t以获取交易承诺值t,所述承诺方案至少包括交易盲因子r_t;将所述交易金额t、所述交易盲因子r_t以及所述交易承诺值t发送至与所述交易的接收方关联的接收方节点,以便所述接收方节点验证所述交易,并用所述接收方的公钥pk_b加密所述交易盲因子r_t和所述交易金额t;从所述接收方节点获取所述交易盲因子r_t和所述交易金额t的加密的组合;以及向区块链中的多个节点传输所述加密的组合和所述交易承诺值t,以便所述多个节点验证所述交易。

根据另一方面,一种用于信息保护的系统包括处理器和耦合至所述处理器的非暂态计算机可读存储介质,所述存储介质存储待由所述处理器执行以使所述系统执行操作的指令,所述操作包括:用承诺方案承诺交易的交易金额t以获取交易承诺值t,所述承诺方案至少包括交易盲因子r_t;将所述交易金额t、所述交易盲因子r_t以及所述交易承诺值t发送至与所述交易的接收方关联的接收方节点,以便所述接收方节点验证所述交易,并用所述接收方的公钥pk_b加密所述交易盲因子r_t和所述交易金额t;从所述接收方节点获取所述交易盲因子r_t和所述交易金额t的加密的组合;以及向区块链中的多个节点传输所述加密的组合和所述交易承诺值t,以便所述多个节点验证所述交易。

根据另一方面,一种计算机实现的用于信息保护的方法包括:获取交易的交易金额t、交易盲因子r_t以及交易承诺值t;基于所述获取的交易金额t、所述获取的交易盲因子r_t以及所述获取的交易承诺值t验证所述交易;响应于成功验证所述交易,用所述交易的接收方的公钥pk_b加密所述交易盲因子r_t和所述交易金额t,以获取加密的组合;以及将所述加密的组合传输至与所述交易的发送方关联的发送方节点。

根据另一方面,一种非暂态计算机可读存储介质存储待由处理器执行以促使所述处理器执行操作的指令,所述操作包括:获取交易的交易金额t、交易盲因子r_t以及交易承诺值t;基于所述获取的交易金额t、所述获取的交易盲因子r_t以及所述获取的交易承诺值t验证所述交易;响应于成功验证所述交易,用所述交易的接收方的公钥pk_b加密所述交易盲因子r_t和所述交易金额t,以获取加密的组合;以及将所述加密的组合传输至与所述交易的发送方关联的发送方节点。

根据另一方面,一种用于信息保护的系统包括处理器和耦合至所述处理器的非暂态计算机可读存储介质,所述存储介质存储待由所述处理器执行以使所述系统执行操作的指令,所述操作包括:获取交易的交易金额t、交易盲因子r_t以及交易承诺值t;基于所述获取的交易金额t、所述获取的交易盲因子r_t以及所述获取的交易承诺值t验证所述交易;响应于成功验证所述交易,用所述交易的接收方的公钥pk_b加密所述交易盲因子r_t和所述交易金额t,以获取加密的组合;以及将所述加密的组合传输至与所述交易的发送方关联的发送方节点。

在参考附图考虑以下描述和所附权利要求书之后,本文公开的系统、方法和非暂态计算机可读介质的这些特征和其它特征,以及操作方法和结构的相关元件的功能以及部件的组合和制造的经济性将变得更加明显,所有附图形成本说明书的一部分,其中在各个附图中,相同的附图标记表示对应的部件。然而,应当清楚地理解,附图仅用于说明和描述的目的,而不意图作为对本发明的限制的定义。

附图说明

本技术的各种实施例的某些特征在所附权利要求中具体阐述。通过参考以下阐述了利用本发明原理的示例性实施例的详细说明以及附图,将获取对本技术的特征和优点的更好理解,其中,

图1示出了根据各种实施例的用于信息保护的示例性系统。

图2示出了根据各种实施例的交易发起和验证的示例性步骤。

图3a示出了根据各种实施例的用于信息保护的示例性方法的流程图。

图3b示出了根据各种实施例的用于信息保护的示例性方法的流程图。

图4a示出了根据各种实施例的用于信息保护的示例性方法的流程图。

图4b示出了根据各种实施例的用于信息保护的示例性方法的流程图。

图5示出了可实现本文所描述的任何实施例的示例性计算机系统的框图。

具体实施方式

因为操作由网络中的各个节点(例如,计算设备)执行,区块链可以被认为是去中心化的数据库,通常被称为分布式账本。任何信息都可以被写入并被保存至区块链中或从区块链被读取。任何人都可以建立服务器并作为节点加入区块链网络。任何节点都可以通过执行诸如哈希计算的复杂计算以向当前区块链添加区块,从而对维持区块链贡献计算能力,并且所添加的区块可以包含各种类型的数据或信息。可以用代币(例如,数字货币单位)对为所添加的区块贡献计算能力的节点进行奖励。由于区块链没有中心节点,所以每个节点是等同的,并且保存整个区块链数据库。

节点是例如支持区块链网络并保持其平稳运行的计算设备或大型计算机系统。有两种类型的节点,全量节点和轻量节点。全量节点保存区块链的完整副本。区块链网络上的全量节点验证它们接收的交易和区块,并将这些交易和区块中继到连接的对等点,以提供交易的共识验证。另一方面,轻量节点仅下载区块链的一小部分。例如,轻量节点用于数字货币交易。当轻量节点想要进行交易时,轻量节点将与全量节点通信。

这种去中心化属性可以帮助防止处于控制位置的管理中心出现。例如,比特币区块链的维护是由运行区域中(装有)比特币软件的通信节点组成的网络执行。本公开使用一个或多个区块链或数字货币,例如比特币和以太币。本领域普通技术人员应当理解,本公开中公开的技术方案可以使用或应用于其他类型的区块链和数字货币。也就是说,取代传统意义上的银行、机构或管理员,多个中间角色以执行比特币软件的计算机服务器的形式存在。这些计算机服务器形成经由因特网连接的网络,其中任何人都可能加入该网络。网络所容纳的交易可以具有以下形式:“用户a想要将z个比特币发送给用户b”,其中使用容易获得的软件应用程序将交易广播至网络。计算机服务器用作比特币服务器,该比特币服务器可操作以验证这些金融交易,并将这些金融交易的记录添加至其账本的副本中,接着向网络的其它服务器广播这些账本添加操作。

维护区块链被称为“挖矿”,并且进行这种维护的人被用如上所述的新创造的比特币和交易费进行奖励。例如,节点可以基于区块链网络已经同意的一组规则确定交易是否有效。矿工可位于任何大陆上,并通过验证每一交易是有效的以及将该交易添加至区块链中来处理支付。通过由多个矿工提供的共识实现这种验证,并且假定不存在系统串通。最后,所有数据将是一致的,因为计算必须满足某些要求才是有效的,并且所有节点将被同步以确保区块链是一致的。因此,数据可以被一致地存储在区块链节点的分布式系统中。

通过挖矿过程,交易诸如资产转移被网络节点验证并被添加至区块链的区块的增长链中。通过遍历整个区块链,验证可包括例如付款方是否有权访问转账资产、资产是否以前已经被花费、转账金额是否正确等。例如,在由发送方签发的假设交易(例如,根据utxo(未被花费的交易输出)模型的比特币交易,根据账户/余额模型的以太币交易)中,提出的交易可被广播至区块链网络以便挖矿。矿工需要根据区块链历史检查交易是否有资格被执行。如果根据现有的区块链历史,发送方的钱包余额具有足够的资金,则认为交易是有效的,并且可以将该交易添加至区块中。资产转移一旦被验证,其可以被包含于下一个待被添加至区块链的区块中。

区块非常像数据库记录。每次写入数据时创建一个区块。这些区块被链接并使用密码术被保护以成为互连的网络。每个区块都连接至前一区块,这也是名称“区块链”的起源。每个区块通常包含前一区块的加密哈希值、生成时间和实际数据。例如,每个区块包含两个部分:记录当前区块的特征值的区块头,以及记录实际数据(例如,交易数据)的主体。区块的链通过区块头链接。每个区块头可以包含多个特征值,例如版本、前一区块哈希值、默克尔(merkle)根、时间戳、难度目标和随机数。前一区块哈希值不仅包含前一区块的地址,而且包含前一区块内部的数据的哈希值,从而使得区块链不可变。随机数是当被包括时产生具有指定数量的前导零位的哈希值的数。

为了挖矿,节点获取新区块的内容的哈希值。随机数(例如,随机字符串)被附加到该哈希值,从而获得新字符串。新字符串被再次进行哈希处理。然后,将最终的哈希值与难度目标(例如,级别)进行比较,并确定最终的哈希值是否实际小于难度目标。如果最终的哈希值不小于难度目标,则改变随机数,并且再次重复该过程。如果最终的哈希值小于难度目标,则将所述区块添加至链中,更新公开账本并提醒所述添加。负责成功添加的节点获得比特币奖励,例如,通过向新区块添加对自身的奖励交易(称为造币生成)。

即,对于每个输出“y”,如果k是从最小熵(min-entropy)高的分布中选择的,则不可能找到输入x以使得h(k|x)=y,其中k是随机数,x是区块的哈希值,y是难度目标,并且“|”表示级联(concatenation)。由于加密哈希值基本上是随机的,由于加密哈希值的输出不能从其输入预测,仅存在一种找到随机数的已知方法:一个接一个地尝试整数,例如1、然后2、然后3、等等,这可以被称为蛮力。前导零的数量越大,找到必需的随机数y所花费的平均时间就越长。在一个示例中,比特币系统不断地调整前导零的数量,使得找到随机数的平均时间约为十分钟。这样,由于计算硬件的处理能力随着时间提高,接下来几年,比特币协议将只需要更多的前导零位,以使得实现挖矿总是花费大约十分钟的持续时间。

如上所述,哈希处理是区块链的重要基础。可以将哈希算法理解为将任何长度的消息压缩成固定长度消息摘要的函数。md5和sha是更常使用的。在一些实施例中,区块链的哈希值长度是256位,这意味着无论原始内容是什么,最终都计算256位的二进制数。并且只要原始内容不同,就可以保证相应的哈希值是唯一的。例如,字符串“123”的哈希值是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),其当被转换为二进制时具有256位,并且仅“123”具有这个哈希值。区块链中的哈希算法是不可逆的,即,正向计算是容易的(从“123”至a8fdc205a9f19cc1c7507a60c4f01b1c7507a60c4f01b13d11d7fd0),并且即使耗尽所有计算资源,也不能完成逆向计算。因此,区块链的每个区块的哈希值是唯一的。

此外,如果区块的内容改变,则其哈希值也将改变。区块和哈希值一一对应,并且针对区块头具体计算每个区块的哈希值。即,连接区块头的特征值以形成长字符串,然后为所述字符串计算哈希值。例如,“哈希值=sha256(区块头)”是区块哈希值计算公式,sha256是应用于区块头的区块链哈希算法。哈希值由区块头而不是区块主体唯一地确定。如上所述,区块头包含许多内容,包括当前区块的哈希值和前一区块的哈希值。这意味着如果当前区块的内容改变,或者如果前一区块的哈希值改变,则将导致当前区块中的哈希值改变。如果黑客修改了区块,则所述区块的哈希值改变。由于下一区块必须包含前一区块的哈希值,为了使后面的区块连接至被修改的区块,黑客必须依次修改所有随后的区块。否则,被修改的区块将脱离区块链。由于设计原因,哈希值计算是耗时的,几乎不可能在短时间内修改多个区块,除非黑客已经掌握了整个网络51%以上的计算能力。因此,区块链保证了其自身的可靠性,并且一旦数据被写入,数据就不能被篡改。

一旦矿工找到了新区块的哈希值(即,合格的签名或解决方案),矿工就将该签名广播至所有其它矿工(区块链中的节点)。现在,其它矿工依次验证所述解决方案是否与发送方的区块的问题相对应(即,确定哈希值输入是否实际上导致所述签名)。如果所述解决方案是有效的,则其它矿工将确认该解决方案,并同意可将新区块添加至区块链。因此,达成了新区块的共识。这也被称为“工作量证明”。已经达成共识的区块现在可以被添加至区块链中,并且与其签名一起被广播至网络上的所有节点。只要区块内的交易在所述时间点正确地对应于当前钱包余额(交易历史),节点就将接受该区块并将保存该区块于节点的交易数据。每当在所述区块的顶部添加新的区块时,所述添加还可算作为对其之前的区块的另一“确认”。例如,如果交易被包括在区块502中,并且区块链有507个区块,这意味着交易具有五个确认(对应于区块507至区块502)。交易具有越多的确认,攻击者就越难改变。

在一些实施例中,示例性区块链资产系统利用公钥密码术,其中生成两个密钥,一个公钥和一个私钥。可认为公钥是账号,而可认为私钥是所有权凭证。例如,比特币钱包是公钥和私钥的集合。可以用属于资产地址的私钥的知识来证明与该地址相关联的资产(例如,数字货币、现金资产、股票、股权、债券)的所有权。例如,比特币钱包软件,有时称为“比特币客户软件”,允许给定用户交易比特币。钱包程序生成并存储私钥,并与比特币网络上的对等点通信。公钥和私钥可以被称为非对称加密密钥(或非对称型加密密钥)。

在区块链交易中,通过付款人和收款人的公钥在区块链中识别付款人和收款人。例如,大多数当代比特币转移是从一个公钥到不同的公钥。实际上,这些密钥的哈希值被用于区块链中,并且被称为“比特币地址”。原则上,如果使用用户的比特币地址而不是他们的名字,假想的攻击者个人s可以通过简单地向区块链账本添加像“个人a向个人s支付100个比特币”一样的交易从个人a偷钱。比特币协议通过要求每次转账都用付款人的私钥进行数字签名防止这种盗窃,并且只有经签名的转账可以被添加至区块链账本中。由于个人s不能伪造个人a的签名,因此个人s不能通过向区块链添加相当于“个人a向个人s支付200个比特币”的条目来欺骗个人a。同时,任何人都可以使用他/她的公钥来验证个人a的签名,并因此在他/她是付款人的情况下验证他/她已经授权了区块链中的任何交易。

在比特币交易的情况下,为了向用户b转移一些比特币,用户a可以构造包含关于通过节点的交易的信息的记录。该记录可以签有用户a的签名密钥(私钥),并且包含用户a的公共验证密钥和用户b的公共验证密钥。签名用于确认交易来自用户a,并且一旦发布交易,还防止该交易被任何人更改。该记录与在新区块中的同一时间窗口中发生的其它记录一起可以被广播至全量节点。在接收到记录时,全量节点可以将记录合并到区块链系统中曾经发生的所有交易的账本中,通过上述挖矿过程将新区块添加至先前接受的区块链,并且针对网络的共识规则验证所添加的区块。

utxo(未被花费的交易输出)模型和账户/余额模型是用于实现区块链交易的两个示例性模型。utxo是区块链对象模型。根据utxo,资产由尚未被花费的区块链交易的输出表示,所述输出可以用作新交易中的输入。例如,用户a的待转移的资产可以是utxo的形式。为了花费(交易)资产,用户a必须用私钥签名。比特币是使用utxo模型的数字货币的示例。在有效的区块链交易的情况下,未被花费的输出可用于实现进一步的交易。在一些实施例中,在进一步的交易中可以仅使用未被花费的输出,以防止双花和欺诈。为此,区块链上的输入在交易发生时被删除,同时创建utxo形式的输出。这些未被花费的交易输出可以(由私钥持有者,例如,具有数字货币钱包的人)用于未来交易。

另一方面,账户/余额模型(或称为基于账户的交易模型)保持跟踪每个账户的余额作为全局状态。检查账户余额,以确定账户余额大于或等于花费的交易金额。以下提供了账户/余额模型如何在以太坊中工作的示例:

1.alice通过挖矿获得5个以太币。在该系统中记录alice具有5个以太币。

2.alice想给bob1个以太币,因此系统将首先从alice的账户中扣除1个以太币,因此alice现在具有4个以太币。

3.然后,系统给bob的账户增加1个以太币。该系统知道bob本来有2个以太币,因此bob的余额增加到3个以太币。

以太坊的记账方式可以与银行中的记账方式相似。类比是使用atm/借记卡。银行跟踪每张借记卡有多少钱,当bob需要花钱时,银行在批准交易之前检查其记录以确保bob具有足够的余额。

由于区块链和其它类似的账本是完全公开的,因此区块链本身没有隐私保护。p2p网络的公开特性意味着尽管使用它的人不是通过名字来识别的,但是将交易链接至个人和公司是可行的。例如,在跨境汇款中或在供应链中,交易金额具有极高级别的隐私保护值,这是因为使用交易金额信息可以推断交易方的特定位置和身份。交易的主题可以包括例如金钱、代币、数字货币、合同、契据、医疗记录、客户详细资料、股票、债券、权益或可以以数字形式描述的任何其他资产。尽管utxo模型可以例如通过门罗币(monero)中的环签名(ringsignature)和零知识密码术大零币(zcash)使得交易金额不公开,但是交易金额在账户/余额模型下仍然是不受保护的。因此,本公开所解决的技术问题是如何保护在线信息诸如交易金额的隐私。这样的交易可以采用账户/余额模型。

一些现有技术提出使用佩德森(pedersen)承诺方案加密交易金额并替换账户/余额模型。在该方案下,发送方通过区块链之外的的安全通道向收款人发送交易金额和对应于交易金额的pedersen承诺的随机数。收款人验证随机数与交易承诺是否匹配,并执行本地存储。例如,根据账户/余额模型,账户可被视为用于保存被汇总但未被合并的资产的钱包(账户)。每个资产可以对应于资产类型(例如,加密货币),并且账户的余额是资产价值的总和。即使是同一类型的资产也不被合并。在交易期间,可以指定转移资产的接收方,并且可以从钱包中移除相应资产以便为交易提供资金。区块链节点验证支付钱包是否具有足以覆盖交易的资产,然后节点从支付钱包中删除转移的资产,并将相应的资产添加至接收方钱包。

然而,这种方案仍然存在限制。首先,所述方案要求用户在本地维护永久存储器,以管理与加密账户余额对应的随机数和明文余额,管理实现是复杂的;其次,存储在单个本地节点中的与“pedersen资产”对应的盲因子(如随机数)和明文余额容易丢失或损坏,且由于账户余额频繁变化,多节点备份存储难以实现。

本公开中所提出的系统和方法可以克服上述限制,并且实现对承诺方案中的交易金额、资产价值和盲因子的稳健隐私保护。为此,可以使用公钥-私钥来加密/解密随机数和明文余额,从而提供方便的管理。此外,将加密信息存储在区块链中确保了承诺方案中的交易金额、资产价值和盲因子不容易丢失或被篡改。

在一些实施例中,承诺方案(例如,pedersen承诺)可以加密某个值a(例如,交易金额、资产价值、关键参数)如下:

pc(a)=r×g+a×h

其中,r是提供隐藏的随机盲因子(或者称为盲因子),g和h是达成共识的椭圆曲线的生成元/基点,并且可以是随机选择的,sn是承诺的值,c(sn)是用作承诺并被给予对方的曲线点,并且h是另一曲线点。也就是说,g和h可以是对于节点已知的参数。可通过利用从一个点映射到另一个点的哈希函数(h=哈希(g))对基点g进行哈希处理,生成h的“空袖数(nothingupmysleeve)”。h和g是给定系统的公共参数(例如,椭圆曲线上的随机生成的点)。尽管以上提供了椭圆曲线形式的pedersen承诺的示例,但是可以替代地使用各种其它形式的pedersen承诺或其它承诺方案。

承诺方案保持数据保密但承诺数据使得数据的发送方稍后不能改变数据。如果一方仅知道承诺值(例如,pc(a)),则它们不能确定哪些底层数据值(例如,a)已经被承诺。数据(例如,a)以及盲因子(例如,r)稍后可以(例如,由发起方节点)显露,承诺的接收方(例如,共识节点)可以运行该承诺,并验证该承诺的数据与所显露的数据相匹配。之所以存在这种盲因子,是因为如果没有这种盲因子,有人可能试图猜测数据。

承诺方案是发送方(承诺方)承诺一值(例如,a)使得承诺的值保持私有,但是可以在当承诺方透露承诺过程的必要参数的稍后时间显示该承诺的值的一种方式。强承诺方案可以是信息隐藏和计算绑定。隐藏是指给定值a和该值的承诺pc(a)应该是不相关的这一概念。即,pc(a)不应显露关于a的信息。在已知pc(a)、g和h的情况下,因为随机数r,几乎不可能知道a。如果几乎不存在使得两个不同的值可以导致相同承诺的方式,则承诺方案是绑定的。pedersen承诺在离散对数假设下是完全隐藏和计算绑定的。此外,在已知r、g、h和pc(a)的情况下,可以通过确定pc(a)=r×g+a×h是否成立来验证pc(a)。

pedersen承诺具有加法属性:可以将承诺相加,并且一组承诺的总和与对数据总和的承诺相同(其中盲因子设置为盲因子的总和):

pc(r1,data1)+pc(r2,data2)==pc(r1+r2,data1+data2);

pc(r1,data1)-pc(r1,data1)==0。

换句话说,承诺保留了加法并且交换属性适用,即,pedersen承诺是相加同态的,因为底层数据可以进行数学运算,就像它没有被加密一样。

在一个实施例中,用于加密输入值的pedersen承诺可以使用椭圆曲线点来构造。传统上,椭圆曲线密码(ecc)公钥是通过将用于群(g)的生成元与密钥(r)相乘来创建的:pub=rg。结果可以被序列化为33字节阵列。ecc公钥可以服从前面关于pedersen承诺所提到的相加同态属性。即:pub1+pub2=(r1+r2(modn))g。

可以通过为所述群挑选附加的生成元(h,在下面的等式中)来创建用于输入值的pedersen承诺,使得没有人知道第二生成元h相对于第一生成元g的离散对数(反之亦然),这意味着没有人知道使得rg=h的x。这可以例如通过使用g的加密哈希挑选h来完成:

h=to_point(sha256(encode(g)))。

给定两个生成元g和h,加密输入值的示例性承诺方案可以被定义为:承诺=rg+ah。这里,r可以是秘密盲因子,a可以是被承诺的输入值。因此,如果sn被承诺,则可以获得上述承诺方案pc(a)=r×g+a×h。pedersen承诺在信息理论上是私有的:对于任何承诺,存在使一数值与该承诺匹配的盲因子。因为任意映射是不可计算的,pedersen承诺可以从计算上对抗虚假承诺。

承诺该值的一方(节点)可以通过公开原始值a和完成承诺等式的因子r来公开该承诺。然后,希望公开值pc(a)的一方将再次计算承诺,以验证共享的原始值确实与最初接收的承诺pc(a)相匹配。因此,可以通过将资产类型信息映射至唯一的序列号,然后通过pedersen承诺对其进行加密来保护资产类型信息。当生成承诺时选择的随机数r使得任何人几乎不可能根据承诺值pc(a)推断出承诺的资产类型的类型。

在交易期间,信息保护对于保护用户隐私是重要的,并且交易金额是一种缺乏保护的信息类型。图1示出了根据各种实施例的用于信息保护的示例性系统100。如图所示,区块链网络可以包括多个节点(例如,在服务器、计算机等中实现的全量节点)。对于某些区块链平台(例如,neo),具有某级别投票权的全量节点可称为共识节点,共识节点承担交易验证的责任。在本公开中,全量节点、共识节点或其它等效节点可验证交易。

此外,如图1所示,用户a和用户b可以使用作为轻量节点的相应设备、诸如膝上型计算机和移动电话等执行交易。例如,用户a可能想要通过将用户a的账户中的某些资产转移到用户b的账户来与用户b交易。用户a和用户b可以使用安装有适当的交易用区块链软件的相应设备。用户a的设备可以称为发起方节点a,发起方节点a发起与被称为接收方节点b的用户b的设备的交易。节点a可以通过与节点1的通信访问区块链,而节点b可以通过与节点2的通信访问区块链。例如,节点a和节点b可以通过节点1和节点2向区块链提交交易,以请求向区块链添加交易。除了区块链,节点a和节点b可以具有其它通信信道(例如,不经过节点1和节点2的常规因特网通信)。

图1中的每个节点可以包括处理器和存储待由处理器执行以使得节点(例如,处理器)执行本文所述的用于信息保护的各种步骤的指令的非暂时性计算机可读存储介质。每个节点可以安装有软件(例如,交易程序)和/或硬件(例如,有线、无线连接)以与其它节点和/或其它设备通信。稍后参考图5描述节点硬件和软件的进一步细节。

图2示出了根据各种实施例的发送方节点a、接收方节点b以及一个或多个验证节点之间的交易和验证的示例性步骤。下面给出的操作旨在说明。取决于实现方式,示例性步骤可以包括以各种顺序执行的或并行执行的附加的、较少的或替代的步骤。

在各种实施例中,交易方(发送方用户a和接收方用户b)的账户被配置用于账户/余额模型。用户a和用户b可以执行以下步骤以经由一个或多个设备(例如他们的膝上型计算机、移动电话等)执行交易。这些设备可以安装有用于执行各种步骤的适当软件和硬件。每个账户可以与加密私钥(密钥)-公钥对相关联。私钥可以表示为sk=x,公钥可以表示为pk=xg,其中g是群的生成元。每个账户可以包含各种资产,每个资产表示为:(v=pc(r,v),e(k,r,v)),其中v表示资产的面值,v表示面值v的pedersen承诺,r是盲因子(例如,随机数),pc()是pedersen承诺算法,e()是加密算法(例如,非对称密钥加密算法),并且k是加密密钥。在一个示例中,每个资产可以表示为(v=pc(r,v),e(k,r||v)),其中||表示级联。每个资产还可以包括除了所列出的信息之外的信息,例如资产的源信息。

在一个示例中,在用户a在区块链验证的交易中成功地向用户b交易金额t之前,a的账户和b的账户中的资产的地址如下:

对于a的账户(账户a):

地址:(sk_a=a,pk_a=ag)

值a_1至值a_m的资产a_1至资产a_m分别表示为:

(a_1=pc(r_{a_1},a_1),e(pk_a,r_{a_1}||a_1)),

(a_2=pc(r_{a_2},a_2),e(pk_a,r_{a_2}||a_2)),

...

(a_m=pc(r_{a_m},a_m),e(pk_a,r_{a_m}||a_m))

对于b的账户(账户b):

地址:(sk_b=b,pk_b=bg)

值b_1至值b_n的资产b_1至资产b_n分别表示为:

(b_1=pc(r_{b_1},b_1),e(pk_b,r_{b_1}||b_1)),

(b_2=pc(r_{b_2},b_2),e(pk_b,r_{b_2}||b_2)),

...

(b_n=pc(r_{b_n},b_n),e(pk_b,r_{b_n}||b_n))

在一些实施例中,对于账户/余额模型下的每个账户,可以基于椭圆曲线ecp256k1生成密钥。例如,在以太坊ecp256k1上,1至2256-1之间的任何数字可以是有效私钥sk。在考虑足够的随机性的情况下,良好的库生成私钥。以太坊要求私钥sk长度为256位。使用ecc密码术的群运算完成公钥生成。为了导出公钥pk,私钥可以乘以g。用于导出公钥pk的乘法是不同于常规乘法的ecc乘法(椭圆曲线点乘法)。g是作为ecc密码术的域参数之一的生成元点。针对ecp256k1,g可以具有固定值。所述地址可以是例如公钥pk的哈希值的最后20字节。

在一些实施例中,在步骤201处,节点a可以发起与节点b的交易。例如,用户a和用户b可以协商从用户a的账户a到用户b的账户b的交易金额t。账户a和账户b可以对应于本文描述的“钱包”。账户a可具有一个或多个资产。资产可以包括例如货币、代币、数字货币、合同、契约、医疗记录、客户详细资料、股票、债券、权益或能够以数字形式描述的任何其它资产。账户b可以具有一个或多个资产或者不具有资产。每个资产可以与存储在区块链的区块中的各种区块链信息相关联,所述区块链信息包括例如表示资产类型的notetype、表示资产的唯一标识的noteid、表示资产价值的承诺(例如,pedersen承诺)值的承诺值、随机数和资产价值的加密等。

如针对账户a所描述的,在一些实施例中,资产a_1至资产a_m分别对应于资产价值a_1至资产价值a_m和随机数r_1至随机数r_m。基于随机数r_1至随机数r_m,节点a可将账户a中的资产价值交给承诺方案(例如,pedersen承诺)以获取加密的承诺值。例如,加密的承诺值可以是pc_1至pc_m,其中pc_i=pc(r_{a_i},a_i)=r_{a_i}×g+a_i×h,其中g和h是已知参数,i为1至m。除了第一字段pc(…)之外,每个资产还与第二字段e(…)相关联,如前所述。第二字段e(…)可以表示用密钥pk_a对相应的随机数和资产价值进行的加密。例如,加密可以是e(pk_a,r_{a_i}||a_i))。每个资产的pc(…)和e(…)可以从先前的交易继承。同一机制可以应用于账户b及其资产。

在一些实施例中,为了满足交易金额t,用户a可以使用私钥sk_a来解密来自账户a的总价值至少为t的一个或多个资产。例如,节点a可以动用资产a_1,a_2,…,a_k以用于此交易,其中k小于或等于m。账户a的剩余资产a_k+1,a_k+2,…,a_m未被动用。对应地,节点a可以从节点1读取资产pc(r_{a_1},a_1),pc(r_{a_2},a_2),…,pc(r_{a_k},a_k)。在随机数r_{a_1},r_{a_2},…,r_{a_k}被节点a已知的情况下,节点a可以解密读取的资产pc(r_{a_1},a_1),pc(r_{a_2},a_2),…,pc(r_{a_k},a_k)以获取资产值a_1,a_2,…,a_k以确保总和a_1+a_2+…+a_k不小于交易金额t。可以基于各种费率彼此交换账户内的不同资产。

在一些实施例中,如果所选资产价值的金额超过t,则设置为y作为找零。例如,节点a可确定找零y=(a_1+a_2+…+a_k)-t。节点a可以选择随机数r_t和随机数r_y作为盲因子,以生成针对t和y的pedersen承诺:

t=pc(r_t,t),y=pc(r_y,y)。

也就是说,节点a可针对t生成随机数r_t,针对y生成随机数r_y。节点a可将t和r_t交给承诺方案以获取承诺值t=pc(r_t,t),并将y和r_y交给承诺方案以获取承诺值:y=pc(r_y,y)。

此外,在一些实施例中,节点a可以使用用户b的公钥pk_b加密(r_t||t),这产生了加密e(pk_b,r_t||t),并且使用用户a的公钥pk_a来加密(r_y||y),这产生加密e(pk_a,r_y||y)。图3a和图3b可以遵循所述示例。作为通过节点a获取加密e(pk_b,r_t||t)的替代,用户a可以将r_t和t连同交易信息一起发送至节点b,从而促使节点b生成第二密钥以利用pk_b加密(r_t||t)。节点b向节点a发送密文以允许节点a验证。图4a和图4b可以遵循所述示例。尽管在本公开的各种示例中使用了级联,但是输入、输出或其他参数的替换组合可以用于加密函数或其他操作。

此外,在一些实施例中,如果t=pc(r_t,t)的值和y=pc(r_y,y)的值各自在有效范围内,则节点a可生成范围证据rp以向区块链节点进行证明。例如,为了具有t=pc(r_t,t)的有效值,交易金额t可以在有效范围[0,2n-1]内;并且为了具有y=pc(r_y,y)的有效值,找零y可以在有效范围[0,2n-1]内。在一个实施例中,节点a可使用区块证明技术,生成与(r_y,y,y,r_t,t,t)相关的范围证据rp,以供区块链节点(例如,共识节点)在稍后的步骤中基于范围证据来验证交易金额t和找零y是否在有效范围内。所述范围证据可以包括例如防弹(bulletproofs)、博罗米尔(borromean)环签名等。

在步骤202处,节点a可以将交易信息发送至节点b(例如,通过区块链之外的安全信道)。所发送的交易信息可以包括例如承诺值t=pc(r_t,t)、承诺值y=pc(r_y,y)、加密e(pk_b,r_t||t)、加密e(pk_a,r_y||y)、范围证据rp等。承诺值y=pc(r_y,y)、加密e(pk_a,r_y||y)和范围证据rp可以是可选的,因为节点b可以不关心发送回账户a的找零。在一些实施例中,经由区块链外的通信信道的交易可防止交易信息被记录在区块链中并防止除发送方节点a和接收方节点b之外的节点获得交易信息。e(pk_a,r_y||y)可能不需要被发送至节点b,但是由于所述找零y将被返回至账户a,因此用户a未来可能需要花费找零y。

在步骤203处,节点b可以验证随机数r_t、交易金额t和承诺值t。在一些实施例中,节点b可以使用私钥sk_b来解密加密e(pk_b,r_t||t)以获取r_t||t。从r_t||t中,节点b可以获取r_t和t,然后验证r_t和t与t=pc(r_t,t)是否匹配。也就是说,节点b可以根据pedersen承诺算法,基于随机数r_t和交易金额t验证承诺值t=pc(r_t,t)是否正确。如果匹配/验证失败,则节点b可以拒绝所述交易;如果匹配/验证成功,则在步骤204处,节点b可以对交易签名以答复节点a。

在步骤204处,节点b可以用用户b的私钥sk_b对交易签名以生成签名sigb。该签名可以遵循数字签名算法(dsa),例如椭圆曲线数字签名算法(ecdsa),由此签名的接收方可以用签名人的公钥验证签名,从而认证经签名的数据。签名sigb指示接收方节点b同意所述交易。

在步骤205处,节点b可以将经签名的交易与签名sigb一起发送回节点a。

在步骤206处,如果sigb未被成功验证,则节点a可以拒绝所述交易。如果sigb被成功验证,则节点a可以用用户a的私钥sk_a对交易签名,从而生成签名siga。类似地,签名可以遵循数字签名算法(dsa)。在一个实施例中,节点a可以用用户a的私钥sk_a对(e(pk_b,r_t||t);e(pk_a,r_y||y);y;t;rp)签名,从而生成签名siga。

在步骤207处,节点a可以向区块链提交交易,促使区块链节点验证交易并确定是否将所述交易添加至区块链。在一个实施例中,节点a可以经由节点1向区块链提交交易(e(pk_b,r_t||t);e(pk_a,r_y|d|y);y;t;r’;rp;siga;sigb)以执行该交易。r’=r_1+…+r_k-r_t-r_y。该交易可以包括附加参数,或者可以不包括所有列出的参数。该交易可以被广播至区块链中的一个或多个节点(例如,共识节点)用于验证。如果验证成功,则将所述交易添加至区块链。如果验证失败,则拒绝将所述交易添加至区块链。

在步骤208至步骤213处,一个或多个节点(例如,共识节点)对所提交交易的签名、范围证据和其它信息进行验证。如果验证失败,则节点拒绝所述交易。如果验证成功,则节点接受所述交易,分别更新用户a的账户和用户b的账户。

在一些实施例中,为了执行交易,可由各个区块链节点验证交易信息。交易信息可以包括交易地址txid、签名、输入和输出。txid可以包括交易内容的哈希值。签名可以包括发送方和接收方的密钥签名。输入可以包括发送方账户在区块链中的地址、从发送方的区块链账户为交易所动用的一个或多个资产等。输出可以包括接收方账户在区块链中的地址、接收方资产的资产类型、接收方资产的承诺值等。输入和输出可包括表格形式的索引信息。在一些实施例中,noteid值的值可以是“txid+输出中的资产的索引”。发送方的公钥pk_a可以作为账户a的地址,且接收方的公钥pk_b可以作为账户b的地址。

在一些实施例中,区块链的一个或多个节点可以验证所提交的交易(e(pk_b,r_t||t);e(pk_a,r_y||y);y;t;rp;siga;sigb)。

在步骤208处,节点可以使用防双花机制或防重放攻击机制验证是否已经执行所述交易。如果所述交易已经被执行,则节点可以拒绝所述交易;否则,所述方法可进入步骤209。

在步骤209处,节点可以检查签名siga和签名sigb(例如,分别基于a的公钥和b的公钥)。如果任何签名是不正确的,则节点可以拒绝所述交易;否则,所述方法可进入步骤210。

在可选步骤210处,节点可以验证资产类型是否一致。例如,节点可以验证针对a_1至a_k的notetype中的资产类型是否与交易金额t的资产类型一致。如果任何资产类型不一致,则节点可以拒绝所述交易;否则,所述方法可进入步骤211。在一些实施例中,钱包中的原始资产类型可能已经基于兑换汇率被转换为另一类型,可以跳过所述步骤。

在步骤211处,节点可检查范围证据rp以验证pc(r_t,t)的值和pc(r_y,y)的值。在一个实施例中,节点可检查范围证据rp以验证交易金额t是否不小于零,以及找零y是否不小于零。如果验证失败,则节点可以拒绝所述交易;否则,所述方法可进入步骤212。

在步骤212处,节点可以检查交易的输入和输出是否一致。在一个实施例中,r’可以基于同态属性对应于资产价值t’=a_1+…+a_k-t–y,其中r’=r_1+…+r_k-r_t-r_y。因为输入资产为a_1至a_k且输出为t+y,当输入与输出一致时:a_1+…a_k=t+y,t’=0。因此,对应于r’的承诺值为pc(r’,t’)=r’×g+t’×h=r’g。因为r’=r_1+…+r_k-r_t-r_y,节点可以通过验证r’g是否等于与r_1+…+r_k-r_t-r_y对应的pc_1+…+pc_k-t–y来确定输入与输出是否相等。如果r’g等于pc_1+…+pc_k-t–y,节点可以确定交易的输入与输出一致并进入下一步骤;否则,节点可以确定交易的输入与输出不一致并拒绝交易。

在步骤213处,节点可以验证节点a是否具有为交易动用的资产。在一个实施例中,节点可以基于存储在区块链中的信息,诸如对应于账户a的信息,执行所述验证。所述信息可以包括所有资产的先前交易信息。因此节点可以确定账户a是否具有用于交易的交易资产。如果确定结果为否,则节点可以拒绝所述交易;否则,所述方法可进入步骤214。

在步骤214处,节点可以更新账户a和账户b。例如,节点可以从账户a中移除金额为t的交易资产,并且将其添加至账户b。基于同态属性,由于y=pc(r_y,y)、且节点1知道r_y并可以从区块链访问承诺值y,因此节点1可以解密y以获得资产价值y并且将其返回至账户a。节点2在步骤202处从节点1获得随机数r_t,并且节点2可以从区块链获得承诺值t。因此,节点2可以解密t以获得资产价值t,并将其添加至账户b。

在一个示例中,在更新账户a和账户b之后,账户a接收针对所动用的资产a_1,a_2,…,a_k的找零y,并接收其未动用的资产a_k+1,a_k+2,…,a_m,且账户b接收交易金额t并接收其原始资产b_1,b_2,…,b_n。a的账户和b的账户中的资产如下:

对于a的账户(账户a),更新的资产被表示为:

(y=pc(r_y,y),e(pk_a,r_y||y)),

(a_k+1=pc(r_{a_k+1},a_k+1),e(pk_a,r_{a_k+1}||a_k+1))

(a_k+2=pc(r_{a_k+2},a_k+2),e(pk_a,r_{a_k+2}||a_k+2))

...

(a_m=pc(r_{a_m},a_m),e(pk_a,r_{a_m}||a_m))

对于b的账户(账户b),更新的资产被表示为:

(b_1=pc(r_{b_1},b_1),e(pk_b,r_{b_1}||b_1)),

(b_2=pc(r_{b_2},b_2),e(pk_b,r_{b_2}||b_2)),

...

(b_n=pc(r_{b_n},b_n),e(pk_b,r_{b_n}||b_n)),

(t=pc(r_t,t),e(pk_b,r_t||t))

尽管本公开使用节点a/用户a和节点b/用户b分别示出发送方和接收方,但是发送方和接收方可以是同一节点/用户。例如,交易的找零y(账户a中的被动用的总资产减去交易金额)可以被发送回交易的发送方。因此,如本文所述的由节点b执行的各种步骤可以替代地由节点a执行。

图3a示出了根据本公开的各种实施例的用于信息保护的示例性方法300的流程图。方法300可由图1的系统100的一个或多个组件(例如,节点a、节点1、节点a和节点1的组合)实现。方法300可由包括处理器和非暂时性计算机可读存储介质(例如,存储器)的系统或设备(例如,计算机、服务器)实现,所述存储介质存储将由处理器执行以使系统或设备(例如,处理器)执行方法300的指令。下面给出的方法300的操作旨在说明。取决于实现方式,示例性方法300可包括以各种顺序或并行执行的附加的、较少的或替代的步骤。

框301包括:用承诺方案承诺交易的交易金额t以获得交易承诺值t,所述承诺方案至少包括交易盲因子r_t。例如,如前所述,t=pc(r_t,t)。在一些实施例中,该承诺方案包括pedersen承诺,pedersen承诺至少基于交易盲因子r_t并且具有作为被承诺值的交易金额t。

框302包括:利用交易的接收方的公钥pk_b加密交易盲因子r_t和交易金额t的组合。例如,节点a可以使用密钥pk_b来加密(r_t||t),这产生了加密e(pk_b,r_t||t)。在一些实施例中,公钥pk_b是非对称密钥。在一些实施例中,交易盲因子r_t和交易金额t的组合包括交易盲因子r_t和交易金额t的级联。

框303包括:向与接收方关联的接收方节点发送交易承诺值t和加密的组合,以便接收方节点验证所述交易(例如,促使接收方节点验证交易)。在一些实施例中,向与接收方关联的接收方节点发送交易承诺值t和加密的组合,以便接收方节点验证所述交易包括向与接收方关联的接收方节点发送交易承诺值t和加密的组合,促使接收方节点:利用接收方的私钥sk_b解密加密的组合以获取交易盲因子r_t和交易金额t;并至少基于交易承诺值t、交易盲因子r_t和交易金额t验证所述交易。参见例如步骤203。

在一些实施例中,促使接收方节点至少基于交易承诺值t、交易盲因子r_t和交易金额t验证所述交易包括促使接收方节点:响应于基于交易盲因子r_t确定交易承诺值t与交易金额t的承诺方案不匹配,拒绝所述交易;以及响应于基于交易盲因子r_t确定交易承诺值t与交易金额t的承诺方案匹配,通过利用接收方的私钥sk_b对所述交易签名生成接收方签名sigb,以批准所述交易。

在一些实施例中,在向与接收方相关联的接收方节点传送加密的组合之前(框304),所述方法还包括:用承诺方案承诺交易的找零y以获取找零承诺值y,承诺方案至少包括找零盲因子r_y,该找零y是交易的发送方为交易动用的一个或多个资产减去交易金额t;以及用发送方的公钥pk_a加密找零盲因子r_y和找零y的另一组合。例如,节点a可以使用密钥pk_a加密(r_y||y),这产生加密e(pk_a,r_y||y)。

在一些实施例中,所述方法还包括:响应于接收到接收方签名sigb,通过使用发送方的私钥sk_a对交易签名生成发送方签名siga批准交易;以及向区块链网络中的一个或多个节点提交包括加密的组合、加密的另一组合、交易承诺值t、找零承诺值y、发送方签名siga和接收方签名sigb的交易,以便所述一个或多个节点验证所述交易。以上参考步骤208至步骤213描述了更多细节。

在一些实施例中,向区块链网络中的一个或多个节点提交包括加密的组合、加密的另一组合、交易承诺值t、找零承诺值y、发送方签名siga和接收方签名sigb的交易,以便所述一个或多个节点验证所述交易,包括:向区块链网络中的一个或多个节点提交包括加密的组合、加密的另一组合、交易承诺值t、找零承诺值y、发送方签名siga和接收方签名sigb的交易,使得所述一个或多个节点响应于成功验证所述交易,向所述接收方发布交易金额t、消除为所述交易动用的一个或多个资产、并向所述发送方发布找零y。以上参考步骤214描述了更多细节。

图3b示出了根据本公开的各种实施例的用于信息保护的示例性方法400的流程图。方法400可由图1的系统100的一个或多个组件(例如,节点b、节点2、节点b和节点2的组合等)实现。方法400可以由包括处理器和非暂时性计算机可读存储介质(例如,存储器)的系统或设备(例如,计算机、服务器)实现,所述存储介质存储将由处理器执行以使系统或设备(例如,处理器)执行方法400的指令。下面给出的方法400的操作旨在说明。取决于实现方式,示例性方法400可以包括以各种顺序或并行执行的附加的、较少的或替代的步骤。

框401包括:获取用交易的接收方的公钥pk_b加密的交易盲因子r_t和交易金额t的组合,并获取交易承诺值t,其中:由与交易的发送方相关联的发送方节点用承诺方案承诺交易金额t,以获取交易承诺值t,承诺方案至少包括交易盲因子r_t。

框402包括:利用交易的接收方的私钥sk_b解密获取的组合以获取交易盲因子r_t和交易金额t。在一些实施例中,接收方的公钥pk_b和接收方的私钥sk_b是非对称加密密钥。

框403包括:至少基于交易承诺值t、交易盲因子r_t和交易金额t验证所述交易。

替代在节点a处加密诸如(r_t||t)的组合(r_t,t),节点a可以将(r_t,t)发送至节点b,使得节点b加密组合(r_t,t),如下面参考图4a和图4b所描述的。图1至图3b的其它步骤和说明可类似地应用于图4a和图4b。

图4a示出了根据本公开的各种实施例的用于信息保护的示例性方法440的流程图。方法440可以由图1的系统100的一个或多个组件(例如,节点a、节点1、节点a和节点1的组合)实现。方法440可以由包括处理器和非暂时性计算机可读存储介质(例如,存储器)的系统或设备(例如,计算机、服务器)实现,所述存储介质存储将由处理器执行以使系统或设备(例如,处理器)执行方法440的指令。下面给出的方法440的操作旨在说明。取决于实现方式,示例性方法440可以包括以各种顺序或并行执行的附加的、较少的或替代的步骤。

框441包括:用承诺方案承诺交易的交易金额t以获得交易承诺值t,所述承诺方案至少包括交易盲因子r_t。

框442包括:向与交易的接收方相关联的接收方节点发送交易金额t、交易盲因子r_t和交易承诺值t,以便接收方节点验证所述交易,并用接收方的公钥pk_b加密交易盲因子r_t和交易金额t(例如,促使接收方节点验证交易并用接收方的公钥pk_b加密交易盲因子r_t和交易金额t)。例如,节点b可以验证t=pc(r_t,t)是否成立,并且节点b可以用公钥pk_a加密该组合以获取e(pk_b,r_t||t)。

框443包括:从接收方节点获取交易盲因子r_t和交易金额t的加密的组合(例如,e(pk_b,r_t||t))。

框444包括:将加密的组合和交易承诺值t传输到区块链中的多个节点以便所述多个节点验证交易(例如,促使所述多个节点验证交易)。

图4b示出了根据本公开的各种实施例的用于信息保护的示例性方法450的流程图。方法450可由图1的系统100的一个或多个组件(例如,节点b、节点2、节点b和节点2的组合等)实现。方法450可由包括处理器和非暂时性计算机可读存储介质(例如,存储器)的系统或设备(例如,计算机、服务器)实现,所述存储介质存储将由处理器执行以使系统或设备(例如,处理器)执行方法450的指令。下面给出的方法450的操作旨在说明。取决于实现方式,示例性方法450可以包括以各种顺序或并行执行的附加的、较少的或替代的步骤。

框451包括:获取交易的交易金额t、交易盲因子r_t和交易承诺值t。

框452包括:基于所获得的交易金额t、所获得的交易盲因子r_t和所获得的交易承诺值t验证所述交易。

框453包括:响应于成功地验证所述交易,用交易的接收方的公钥pk_b加密交易盲因子r_t和交易金额t以获取加密的组合(例如,e(pk_b,r_t||t))。

框454包括:向与所述交易的发送方相关联的发送方节点发送加密的组合。

如图所示,可以通过计算技术的各种改进保护交易金额的隐私。例如,账户结构包括一个或多个字段,诸如与资产价值的pedersen承诺相关联的第一字段(例如,第一字段是pc(r_{a_i},a_i),其中i为1至m),以及与pedersen承诺的随机数及资产价值相关联的第二字段(例如,第二字段是e(…))。第一字段和第二字段也用于交易步骤,并存储在区块链中。

对于另一个例子,账户的公钥-私钥系统(非对称加密)被再利用以用于加密每个pedersen承诺的随机数和相应的资产价值,并且将包括加密的随机数和资产价值的交易存储在区块链中。这种方式避免了对这种随机数的本地管理,并且基于分布式且共识的区块链存储提高了安全性。因此,用于承诺的随机数可以通过区块链被有效地存储,而不需要附加的加密系统。

对于又一示例,范围证据用于证明交易的预先存在的资产与新资产和该交易是相平衡的,以及每个新资产的价值在合理范围内。此外,交易各方可以通过安全的区块链外信道向接收方发送承诺的随机数和新资产的价值,以验证承诺的值是否与交易资产的价值相匹配。

这样,可以方便地管理pedersen承诺的随机数,且没有出错的风险,并且不会导致附加的密钥管理负担。因此,可以彻底地保护交易隐私,并且可以将交易金额保持为秘密。

本文描述的技术由一个或多个专用计算设备实现。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持设备、联网设备或任何其他设备,或包括硬连线和/或程序逻辑以实现所述技术的设备的组合。计算设备通常由操作系统软件控制和协调。传统的操作系统控制和调度用于执行的计算机进程,执行存储器管理,提供文件系统、联网、i/o服务,并提供用户界面功能、例如图形用户界面(gui)等等。

图5是示出了可以在其上实现本文描述的任何实施例的计算机系统500的框图。系统500可以在本文描述的任何节点中实现,并且被配置为执行用于信息保护方法的相应步骤。计算机系统500包括总线502或用于传送信息的其它通信机制、与总线502耦合的用于处理信息的一个或多个硬件处理器504。硬件处理器504可以是例如一个或多个通用微处理器。

计算机系统500还包括耦合至总线502的用于存储信息和要由处理器504执行的指令的主存储器506,诸如随机存取存储器(ram)、高速缓存和/或其他动态存储设备。主存储器506还可以用于存储在执行指令期间要由(一个或多个)处理器504执行的临时变量或其它中间信息。当这些指令被存储在处理器504可访问的存储介质中时,这些指令使计算机系统500呈现为专用机器,所述专用机器被定制为执行指令中所指定的操作。计算机系统500还包括耦合至总线502的用于存储用于处理器504的静态信息和指令的只读存储器(rom)508或其他静态存储设备。诸如磁盘、光盘或usb拇指驱动器(闪存驱动器)等的存储设备510被提供并耦合至总线502,用于存储信息和指令。

计算机系统500可以使用定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑实现本文描述的技术,所述固件和/或程序逻辑与计算机系统相结合使得计算机系统500成为专用机器或将计算机系统500编程为专用机器。根据一个实施例,计算机系统500响应于处理器504执行包含在主存储器506中的一个或多个指令的一个或多个序列,执行本文描述的操作、方法和过程。这些指令可以从另一存储介质诸如存储设备510读入主存储器506。执行包含在主存储器506中的指令序列使得处理器504执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路代替软件指令,或将硬连线电路与软件指令组合使用。

主存储器506、rom508和/或存储设备510可以包括非暂时性存储介质。如本文所使用的术语“非暂时性介质”和类似术语指的是存储用以使机器以特定方式操作的数据和/或指令的介质,所述介质不包括瞬态信号。这种非暂时性介质可包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备510。易失性介质包括动态存储器,例如主存储器506。非暂时性介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁性数据存储介质、cd-rom、任何其它光学数据存储介质、具有孔图案的任何物理介质、ram、prom和eprom、flash-eprom、nvram、任何其它存储芯片或存储盒、以及它们的联网版本。

计算机系统500还包括耦合至总线502的网络接口518。网络接口518提供耦合至一个或多个网络链路的双向数据通信,所述一个或多个网络链路连接至一个或多个本地网络。例如,网络接口518可以是综合业务数字网络(isdn)卡、电缆调制解调器、卫星调制解调器或提供至相应类型的电话线的数据通信连接的调制解调器。作为另一示例,网络接口518可以是提供至兼容局域网(lan)(或与wan通信的wan组件)的数据通信连接的lan卡。无线链路也可以被实现。在任何这样的实现方式中,网络接口518发送和接收承载表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。

计算机系统500可以通过网络、网络链路和网络接口518发送消息并接收数据,包括程序代码。在因特网示例中,服务器可以通过因特网、isp、本地网络和网络接口518传输所请求的用于应用程序的代码。

所接收的代码可以在被接收时由处理器504执行,和/或存储在存储设备510或其他非易失性存储设备中以供稍后执行。

在前述部分中描述的每个过程、方法和算法可以在由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码模块中实现,并且是完全自动化或部分自动化的。过程和算法可以在专用电路中部分或全部地被实现。

上述各种特征和过程可彼此独立地使用,或者可以各种方式组合。所有可能的组合和子组合都将落入本公开的范围内。另外,在一些实现方式中可以省略某些方法或过程框。本文描述的方法和过程也不限于任何特定次序,且与其相关的框或状态可以以其它适当的次序来执行。例如,所描述的框或状态可以以不同于具体公开的顺序来执行,或者多个框或状态可以被组合在单个框或状态中。示例性框或状态可以串行、并行或以一些其它方式执行。可以向所公开的示例性实施例添加框或状态或从所公开的示例性实施例中移除框或状态。本文所述的示例性系统和组件可与所述的不同地构造。例如,与所公开的示例性实施例相比,可以添加、去除或重新布置元件。

本文描述的示例性方法的各种操作可以至少部分地由算法执行。所述算法可以包括在存储在存储器(例如,上述的非暂时性计算机可读存储介质)中的程序代码或指令中。这种算法可以包括机器学习算法。在一些实施例中,机器学习算法可以不显式地编程计算机以执行功能,但可以从训练数据中学习以建立执行所述功能的预测模型。

本文描述的示例性方法的各种操作可以至少部分地由(例如,通过软件)被临时配置或永久地配置为执行相关操作的一个或多个处理器执行。无论是临时配置还是永久配置,这样的处理器可以构成操作以执行本文描述的一个或多个操作或功能的处理器实现的引擎。

类似地,本文描述的方法可以至少部分地由处理器实现,其中特定的一个或多个处理器是硬件的示例。例如,方法的至少一些操作可以由一个或多个处理器或者处理器实现的引擎来执行。此外,一个或多个处理器还可操作以支持“云计算”环境中的相关操作的性能,或作为“软件即服务”(saas)操作。例如,至少一些操作可以由一组计算机(例如,包括处理器的机器)执行,这些操作可以经由网络(例如,因特网)并经由一个或多个适当的接口(例如,应用程序接口(api))被访问。

某些操作性能可以分布在处理器之间,不仅驻留在单个机器内,而且跨多个机器部署。在一些示例性实施例中,处理器或处理器实现的引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器群内)。在其它示例性实施例中,处理器或处理器实现的引擎可以分布在多个地理位置上。

在整个说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。尽管将一个或多个方法的各个操作示出并描述为单独的操作,但是这些单个操作中的一个或多个可以同时执行,并且不要求这些操作按所示顺序执行。在示例性配置中作为单独组件呈现的结构和功能可以被实现为组合结构或组件。类似地,作为单个组件呈现的结构和功能可以被实现为单独的组件。这些和其它变化、修改、添加和改进都落入本文的主题的范围内。

尽管已经参考具体的示例性实施例描述了主题的概述,但是在不脱离本发明的实施例的更广范围的情况下,可以对这些实施例进行各种修改和改变。如果实际上公开了不只一个公开内容或概念,主题的这些实施例在本文中可单独或共同地由术语“发明”指代,这仅仅是为了方便,而不是旨在主动将本申请的范围限制到任何单个公开内容或概念。不应以限制性意义来理解具体实施方式,且各种实施例的范围仅由所附权利要求书连同所述权利要求书有权获得的等效物的全部范围来界定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1