发布信息

用于保护和验证记录的状态信息的方法和设备与流程

作者:admin      2022-08-27 12:47:03     728



计算;推算;计数设备的制造及其应用技术1.本技术总体上涉及计算机技术,更具体地,涉及用于保护和验证记录的状态信息的方法和设备。背景技术:2.区块链系统,也称为分布式账本系统(dls)或共识系统,可以使各个参与方的数据以安全且不可篡改的方式进行存储。在不涉及任何特定用例的情况下,区块链系统可以包括任何dls并且可以用于公共区块链网络、私有区块链网络和联盟区块链网络。公共区块链网络向所有实体开放,供其使用该系统并参与共识处理。私有区块链网络针对特定实体提供,该特定实体集中控制读写权限。联盟区块链网络针对选择的实体组群提供,该实体组群控制共识处理,并且联盟区块链网络包括访问控制层。3.区块链系统使用点对点(p2p)网络实现,其中节点彼此直接通信,例如,无需固定的中央服务器。p2p网络中的每个节点可以发起与p2p网络中的另一个节点的通信。区块链系统维护一个或多个区块链。区块链是用于存储数据(例如,交易)的数据结构,可以防止恶意方篡改和操纵数据。4.区块链系统的用户可以利用区块链系统进行各种类型的交易。例如,甲、乙双方可能都拥有记录在区块链系统中维护的区块链上的资产。甲方和乙方可以签订协议,以兑换或交换他们在区块链上的资产。此类协议通常使用智能合约来执行,智能合约是以计算机代码的形式实现的计算机协议,这些计算机代码被并入区块链,以促进、验证或实施合约的谈判或履行。在另一示例中,甲方可以向区块链提交文档,例如发票,并要求乙方对区块链上的该文档进行审核或背书。5.一些区块链应用可以使用各种状态对记录在其中的资产或文档进行建模,这些状态可以基于对记录的资产或文档执行的操作进行转换。例如,可以为新提交的文档分配“已提交”状态,当文档被背书时,该状态可以转换为“已背书”状态。具有“已背书”状态的文档的所有者可以使用该文档来完成某些任务,这些任务可能使用仅具有“已提交”状态的文档无法完成。例如,假设文档是发票,并且发票的所有者希望使用该发票来担保融资(例如,以应收账款借款),如果该发票仅处于“已提交”状态,金融机构可能会拒绝批准该发票用于融资目的。例如,金融机构可以推行禁止直接从“已提交”状态转换到“已批准”状态的状态转换规则,以防止文档的所有者绕过背书流程。6.通常,记录在区块链上的资产和文档的内容被加密以保护隐私。然而,使用各种状态对记录在其中的资产或文档进行建模的区块链应用通常以明文形式记录关于状态以及与这些状态相关联的操作的信息。7.以这种方式暴露关于状态和操作的信息可能会为恶意方提供深入了解记录在区块链上的资产和文档的机会。例如,如果恶意方可以从区块链中得知,记录在区块链上的文档已经通过了“已提交”状态和“已背书”状态,并且目前正在被金融机构“审核”,则恶意方可以推断该文档可能包含可用于担保融资的资产或发票的描述。技术实现要素:8.在一个方面中,一种计算机实现的用于验证记录的状态转换的方法,包括:接收用户提交的交易,所述交易包括所述记录的标识、表示对所述记录进行操作之后所述记录的状态的受保护状态值、以及所述用户准备的证明;通过确定所述证明是否指示所述用户拥有至少部分基于执行所述操作之后所述记录的所述状态的明文值生成的信息,来确定所述证明是否可接受;响应于确定所述证明不可接受,拒绝处理所述用户提交的所述交易;以及响应于确定所述证明是可接受的,将所述记录的记录状态设置为所述受保护状态值。9.在另一方面中,一种用于验证记录的状态转换的设备,包括:一个或多个处理器;以及一个或多个计算机可读存储器,其耦合到所述一个或多个处理器,并且其上存储有指令,所述指令可由所述一个或多个处理器执行以:接收用户提交的交易,所述交易包括所述记录的标识、表示对所述记录进行操作之后所述记录的状态的受保护状态值、以及所述用户准备的证明;通过确定所述证明是否指示所述用户拥有至少部分基于执行所述操作之后所述记录的所述状态的明文值生成的信息,来确定所述证明是否可接受;响应于确定所述证明不可接受,拒绝处理所述用户提交的所述交易;以及响应于确定所述证明是可接受的,将所述记录的记录状态设置为所述受保护状态值。10.在又一方面中,一种非暂时性计算机可读介质存储有指令,当所述指令由设备的处理器执行时使所述设备执行用于提供分散式身份验证的方法。所述方法包括:接收用户提交的交易,所述交易包括所述记录的标识、表示对所述记录进行操作之后所述记录的状态的受保护状态值、以及所述用户准备的证明;通过确定所述证明是否指示所述用户拥有至少部分基于执行所述操作之后所述记录的所述状态的明文值生成的信息,来确定所述证明是否可接受;响应于确定所述证明不可接受,拒绝处理所述用户提交的所述交易;以及响应于确定所述证明是可接受的,将所述记录的记录状态设置为所述受保护状态值。附图说明11.并入并构成本说明书的一部分的附图示出了实施例。在参照附图的以下描述中,除非另有说明,不同附图中的相同标号表示相同或相似的元件。12.图1是根据实施例的区块链系统的示意图。13.图2是根据实施例的用于实现区块链系统中的节点的计算设备的示意图。14.图3是描绘根据实施例的示例状态图的图示。15.图4是根据实施例的用于保护和验证记录的状态信息的方法的流程图。16.图5是根据实施例的用于保护和验证记录的状态信息的方法的流程图。17.图6是根据实施例的用于保护和验证记录的状态信息的装置的框图。具体实施方式18.本说明书的实施例提供了用于保护和验证记录(例如,记录的资产或文档)的状态信息的方法和设备。这些方法和设备可以利用加密方案或承诺方案来保护关于记录的记录状态的信息。这些方法和设备还可以利用区块链系统来验证关于记录的记录状态的信息的有效性。可以检测到无效的状态信息,并且可以防止绕过某些状态的欺诈性尝试。以这种方式,这些方法和设备可以确保在实施施加于状态的状态转换规则的同时状态信息受到保护。19.本说明书中公开的实施例具有一种或多种技术效果。在一些实施例中,这些方法和设备允许用户保护关于记录的记录状态的信息。这允许这些方法和设备保护此类信息的隐私。在一些实施例中,这些方法和设备要求用户提交证明以便验证关于记录的记录状态的信息。这允许这些方法和设备检测无效的状态转换并防止绕过某些状态的欺诈性尝试。在一些实施例中,这些方法和设备支持使用区块链系统验证状态信息。这允许这些方法和设备将状态信息以能够防止恶意方篡改和操纵的数据结构进行存储。这也允许这些方法和设备利用区块链系统以公开的方式验证状态转换,而不向公众透露任何私有信息。20.区块链是以可以防止恶意方篡改和操纵数据的方式存储数据(例如,交易)的数据结构。以这种方式存储的交易可以是不可篡改的并且随后被验证。区块链包括一个或多个区块。每个区块通过包括区块链中在其紧前面的前一区块的加密哈希值而链接到该前一区块。每个区块还可以包括时间戳、其自身的加密哈希值以及一个或多个交易。通常已经由区块链系统的节点验证的交易可以被哈希处理并编码成数据结构,例如默克尔(merkle)树。在merkle树中,树的叶节点处的数据被哈希处理,并且树的每个分支中的所有哈希值可以在该分支的根处级联(concatenate)。此处理沿着树持续一直到整颗树的根,其存储了代表树中所有数据的哈希值。声称是存储在树中的交易的哈希值可以通过确定该哈希值是否与树的结构一致来快速验证。21.区块链系统包括管理、更新和维护一个或多个区块链的计算节点网络。该网络可以是公共区块链网络、私有区块链网络或联盟区块链网络。例如,众多实体(诸如数百、数千甚至数百万个实体)可以在公共区块链网络中操作,并且每个实体操作公共区块链网络中的至少一个节点。因此,公共区块链网络可以被认为是关于参与实体的公共网络。有时,大多数实体(节点)必须对每个区块进行签名,以使该区块有效并被添加到区块链网络的区块链中。公共区块链网络的示例包括利用分布式账本(称为区块链)的特定点对点支付网络。22.一般来说,公共区块链网络可以支持公共交易。公共交易由公共区块链网络中的所有节点共享,并存储在全局区块链中。全局区块链是跨所有节点复制的区块链,所有节点对于全局区块链都处于完全共识状态。为了达成共识(例如,同意向区块链添加区块),在公共区块链网络中实施共识协议。共识协议的示例包括工作量证明(pow)(例如,在一些加密货币网络中实施)、权益证明(pos)和授权证明(poa)。23.一般来说,可以为特定实体提供私有区块链网络,该特定实体集中控制读写权限。实体控制哪些节点能够参与区块链网络。因此,私有区块链网络通常被称为许可网络,对允许谁参与网络以及其参与程度(例如,仅在某些交易中)施加限制。可以使用各种类型的访问控制机制(例如,现有参与者对添加新实体进行投票,监管机构可以控制准入)。24.一般来说,联盟区块链网络在参与实体之间可以是私有的。在联盟区块链网络中,共识过程由一组经授权的节点控制,一个或多个节点由相应实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体操作联盟区块链网络中的至少一个节点。因此,联盟区块链网络可被视为关于参与实体的私有网络。在一些示例中,每个实体(节点)必须对每个区块进行签名来使该区块有效并被添加到区块链中。在一些示例中,至少一个子集的实体(节点)(例如,至少7个实体)必须对每个区块签名来使该区块有效并被添加到区块链中。25.图1示出了根据实施例的区块链系统100的示意图。参照图1,区块链系统100可以包括被配置为对区块链120操作的多个节点,例如节点102至110。节点102至110可以形成网络112,例如点对点(p2p)网络。节点102至110中的每个节点可以是被配置为存储区块链120的副本的计算设备,例如计算机或计算机系统,或者可以是在计算设备上运行的软件,例如进程或应用。节点102至110中的每个节点可以具有唯一标识。26.区块链120可以包括以数据区块形式不断增长的记录列表,例如图1中的区块b1-b5。区块b1-b5中的每个区块可以包括时间戳、前一区块的加密哈希值和当前区块的数据,这些数据可以是诸如货币交易之类的交易。例如,如图1所示,区块b5可以包括时间戳、区块b4的加密哈希值和区块b5的交易数据。此外,例如,可以对前一区块执行哈希操作以生成前一区块的加密哈希值。哈希操作可以通过哈希算法(例如,sha-256)将各种长度的输入转换为固定长度的加密输出。27.节点102至110可以被配置为对区块链120执行操作。例如,当节点(例如,节点102)想要将新数据存储到区块链120上时,该节点可以生成要添加到区块链120的新区块,并向网络112中的其他节点(例如,节点104至110)广播该新区块。基于新区块的合法性,例如,其签名和交易的有效性,其他节点可以确定接受新区块,使得节点102和其他节点可以将新区块添加到其各自的区块链120的副本中。随着此过程的重复,越来越多的数据区块可以添加到区块链120。28.图2示出了根据实施例的用于在区块链系统中实现节点(例如,节点102(图1))的计算设备200的示意图。参照图2,计算设备200可以包括通信接口202、处理器204和存储器206。29.通信接口202可以促进计算设备200与实现网络中的其他节点(例如,节点104至110(图1))的设备之间的通信。在一些实施例中,通信接口202被配置为支持一个或多个通信标准,例如互联网标准或协议、综合业务数字网(isdn)标准等。在一些实施例中,通信接口202可以包括局域网(lan)卡、电缆调制解调器、卫星调制解调器、数据总线、电缆、无线通信信道、基于无线电的通信信道、蜂窝通信信道、基于互联网协议(ip)的通信设备,或用于有线和/或无线通信的其他通信设备中的一个或多个。在一些实施例中,通信接口202可以基于公共云基础设施、私有云基础设施、混合公共/私有云基础设施。30.处理器204可以包括一个或多个专用处理单元、专用集成电路(asic)、现场可编程门阵列(fpga)或各种其他类型的处理器或处理单元。处理器204与存储器206耦合并且被配置为执行存储在存储器206中的指令。31.存储器206可以存储处理器可执行指令和数据,例如区块链120(图1)的副本。存储器206可以包括任何类型的易失性或非易失性存储器设备或其组合,例如静态随机存取存储器(sram)、电可擦除可编程只读存储器(eeprom)、可擦除可编程只读存储器(eprom)、可编程只读存储器(prom)、只读存储器(rom)、磁存储器、闪存或磁盘或光盘。当处理器204执行存储器206中的指令时,计算设备200可以对区块链120执行操作。32.区块链系统(例如,区块链系统100)的用户可以利用区块链系统100进行各种类型的交易。例如,用户可以拥有在区块链系统100中维护的区块链(例如,区块链120)上记录的资产,并且签订协议以兑换或交换他们在区块链120上的资产。用户还可以创建文档并将其提交给区块链120以供记录,并将记录的文档用于各种目的,包括例如发票融资等。33.在一些实施例中,区块链120可以使用各种状态对记录在其中的资产或文档进行建模,这些状态可以基于对资产或文档执行的操作从一种状态转换到另一种状态。例如,如果创建记录的用户想要发布记录,则区块链120可以实施为管理记录在区块链120上的记录(例如,资产或文档)的状态而定义的状态转换规则集。图3示出了描绘用于发布记录的过程的示例状态图300。应当理解,状态图300仅作为示例提供,并不意味着限制。34.如图3所示,状态图300可以包括例如五个状态s0-s4和四个操作f0-f3。状态图300还定义了转换,其指定某些操作如何触发从一种状态到另一种状态的某些转换。未在状态图300中定义的转换可能是非法的。例如,从s0到s3的转换可能是非法的,因为没有可以触发这种转换的适用操作。同样,将操作f1应用于状态s0也可能是非法的,因为操作f1不适用于状态s0。35.出于说明目的,状态图300中定义的状态和操作可以表示为:[0036][0037][0038]其中s和s*分别是转换之前和转换之后的状态,f是触发从s到s*的转换的操作。[0039]如下文将进一步描述的,诸如状态图300的状态图可用于验证状态转换的有效性。例如,如果用户尝试绕过某些操作或以其他方式规避状态图300中定义的转换规则,则本文公开的方法和设备可以检测到这种尝试并防止在区块链120上执行这种尝试。然而,应当理解,下面对状态图300的引用仅仅是示例,并不意味着限制。[0040]图4示出了根据实施例的用于保护和验证状态信息的方法400的流程图。出于说明目的,在图4中示出了区块链,例如区块链120(图1)。区块链可以被实现为支持各种类型的用户或各方,包括例如个人、企业、银行、金融机构、医院以及其他类型的公司、组织等。[0041]出于说明目的,在图4中示出了被称为客户端的用户。客户端可以向区块链提交记录(例如,资产或文档)以被区块链记录。记录可以是各种格式的,并且可以包含各种类型的数据。在一些实施例中,提交给区块链的整个记录可以被加密。在一些实施例中,提交给区块链的记录可以被部分加密。在一些实施例中,提交给区块链的记录可以是明文形式。[0042]继续上面的示例,假设客户端对发布记录感兴趣,并进一步假设区块链实施状态图300中定义的状态转换规则来管理该发布过程期间记录的状态,则每次客户端尝试更改记录的当前状态(表示为状态s),区块链可以要求客户端提交关于要执行的操作f的信息,以及要求客户端指示在执行操作f之后记录的下一状态(表示为状态s*)应该是什么。以这种方式,如果客户端提交了标识未在状态图300中定义的操作f的信息,或者如果所标识的操作f不适用于记录的当前状态s(例如,如果当记录的当前状态为s1时客户端将f0标识为操作),区块链可以拒绝让客户端继续进行。类似地,如果没有从当前状态s到下一状态s*的有效转换(例如,如果当记录的当前状态为s0时客户端将s2指示为下一状态),或者如果将所识别的操作f应用到当前状态s不会将当前状态s转换到下一状态s*(例如,如果当记录的当前状态为s0时客户端将f0标识为操作,并将s2指示为下一状态),区块链可以拒绝让客户端继续进行。[0043]在一些实施例中,为了保护隐私,区块链可以允许客户端加密或以其他方式保护关于当前状态s和下一状态s*的信息,并且仅向区块链提交受保护的状态信息。以这种方式,区块链可以有效地降低恶意方能够观察与记录相关联的状态信息并深入了解记录的可能性。然而,允许客户端保护状态信息可能会使区块链执行验证处理和实施如上所述的状态转换规则相对困难。缺乏实施状态转换规则的能力可能会为记录的所有者提供操纵记录的状态的机会,例如,通过单方面将状态从“已提交”更改为“已发布”,从而欺诈性地绕过图3所示的实际批准流程。此外,由于当前状态s和下一状态s*都是受保护的(例如,加密的),因此其他人可能无法检测到所有者执行的欺诈性绕过。[0044]因此,在一些实施例中,如果客户端选择仅向区块链提交受保护的状态信息,则区块链可以要求客户端也向区块链提交证明,以证明受保护的状态信息表示有效状态s*,该有效状态s*对应于在执行有效操作f之后记录的下一状态应该是什么。在一些实施例中,假设客户端同意根据图4所示的流程生成证明,则区块链可能愿意接受证明,而不要求客户端以明文形式披露关于当前状态s和下一状态s*的信息。[0045]在步骤402,客户端可以生成关于当前状态s和下一状态s*的受保护的状态信息。在一些实施例中,客户端可以使用加密方案生成受保护的状态信息。可替换地或附加地,客户端可以使用承诺方案(例如,pedersen承诺)或单向函数来生成受保护的状态信息。本领域的普通技术人员将理解,函数g:是单向的,如果给定随机元素则难以计算使得g(y)=x。换句话说,难以从单向函数的输出变量的值计算单向函数的输入变量的值,使得该函数实际上无法求逆,因此,该函数被称为“单向的”。诸如sha 256的哈希函数是单向函数的示例。[0046]例如,假设区块链实施在定义总共n个状态和m个操作的状态图中定义的状态转换规则(例如,状态图300定义n=5个状态和m=4个操作),客户端可以生成关于当前状态s的受保护的状态信息作为受保护的当前状态值s=e(s,r1),s∈[0,n-1]。客户端也可以生成关于下一状态s*的受保护的状态信息作为受保护的下一状态值s*=e(s*,r2),s*∈[0,n-1]。应当理解,e()可以表示由客户端选择的加密方案或承诺方案,或单向函数,以保护关于当前状态s和下一状态s*的信息。r1和r2可以表示可以在e()中使用的随机数。[0047]客户端还可以在步骤402生成证明。可以生成证明以向区块链证明受保护的下一状态值s*对应于在执行有效操作之后可以从当前状态s转换的有效的下一状态s*。[0048]在一些实施例中,该证明的生成可以取决于在状态图中定义的转换规则集,例如,由区块链实施的状态图300。该转换规则集表示为ω,可以用(s,f)→s*的格式表示,表示将操作f应用于当前状态s,以将当前状态s转换到下一状态s*。因此,在状态转换图300中定义的转换规则集ω可以表示为:[0049][0050]在一些实施例中,客户端可以将证明生成为零知识证明,零知识证明是指允许证明者向验证者证明陈述是真实的而不泄露任何超出陈述本身的有效性的信息的技术。客户端可以尝试通过指示以下内容来证明这一点:(1)客户端知道当前状态s的明文值,并且如果使用r1生成受保护的当前状态值s,则客户端知道r1的明文值;(2)客户端知道下一状态s*的明文值,并且如果使用r2生成受保护的下一状态值s*,则客户端知道r2的明文值;(3)操作f是可以将当前状态s转换到下一状态s*的有效操作。[0051]在一些实施例中,为了证明客户端知道s和r1的明文值,客户端可以向区块链证明s=e(s,r1)。为了证明客户端知道s*和r2的明文值,客户端可以向区块链证明s*=e(s*,r2)。此外,为了证明操作f是可以将当前状态s转换到下一状态s*的有效操作,客户端可以向区块链证明(s,f)→s*是转换规则集ω的成员。[0052]在一些实施例中,客户端和区块链可以同意实施零知识证明技术,例如零知识简洁非交互式知识论证(zk-snark)等。客户端可以向区块链证明客户端知道秘密输入w,使得对于公共输入x,x与w之间的某种关系成立。在一些实施例中,可以将该关系定义为算术电路。在一些实施例中,可以基于能够基于x和w进行评估的多项式方程来定义算术电路。在一些实施例中,可以在设置阶段基于算术电路和为零知识证明建立的一个或多个安全参数生成证明密钥和验证密钥。本领域普通技术人员将理解,设置阶段可以由受信方执行,或者由多个独立方使用多方计算协作执行。[0053]在一些实施例中,客户端可以将公共输入x设置为基于f的明文值和受保护值s和s*生成的值,并将秘密输入w设置为基于s、s*、r1和r2的明文值生成的值。例如,客户端可以通过将f、s和s*级联在一起来设置x的值,通过将s、s*、r1和r2级联在一起来设置w的值。以这种方式,客户端可以使用秘密输入和公共输入以及证明密钥来生成证明,以向区块链证明客户端拥有秘密输入w。例如,如果公共输入x与秘密输入w之间的关系可以基于多项式方程定义,例如a(x)w(x)=b(x)c(x),则a()可以设置为证明密钥,b()c()可以设置为验证密钥。客户端可以通过计算多项式a(x)w(x)来生成证明,以向区块链证明客户端拥有秘密输入w。[0054]在一些实施例中,区块链可以使用公共输入x和验证密钥来验证证明。继续上面的示例,区块链可以通过确定多项式方程a(x)w(x)=b(x)c(x)是否成立来验证证明。例如,区块链可以计算多项式b(x)c(x)的值,并检查该值是否等于客户端提交的证明。如果等式成立,则区块链可以接受客户端拥有秘密输入w的客户端证明,并且区块链可以接受客户端的陈述是真实的。然而,如果等式不成立,区块链可以拒绝接受客户端证明。[0055]应当理解,以上描述的多项式方程、证明密钥和验证密钥仅作为示例呈现,并不意味着限制。可以设想,公共输入x与秘密输入w之间的关系可以使用各种类型的方程来定义,并且证明密钥和验证密钥可以基于公共输入x与秘密输入w之间的关系来相应地定义。在一些实施例中,也可以将证明转换为sigma协议,可以使用fiat-shamir变换将sigma协议转换为非交互式零知识知识证明。[0056]在步骤404,客户端可以向区块链提交交易,具有包含{记录_id,s*,f,证明}的有效载荷的交易,其中记录_id用于标识要更新的记录。出于说明目的,该交易可称为“更新”交易,客户端可以使用“更新”交易来更新由记录_id标识的记录的状态。可以设想,客户端还可以在更新交易中包括附加数据字段。这样的数据字段可以包括例如记录的内容或对记录的内容的更新。[0057]在步骤406,区块链可以检查更新交易中包含的证明,以确定客户端是否拥有秘密输入w。在一些实施例中,区块链可以利用在区块链上执行的一个或多个智能合约来提供该确定。智能合约是以计算机代码的形式实现的计算机协议,这些计算机代码被并入区块链,以促进、验证或实施合约的谈判或履行。例如,区块链的用户可以使用c++、java、solidity、python等编程语言将商定的条款编程为智能合约,当满足条款时,智能合约可以在区块链上自动执行,例如,执行交易。又例如,智能合约可以包括多个子例程或函数,每个子例程或函数可以是执行特定任务的程序指令序列。智能合约可以是在没有人工交互的情况下完全或部分执行的操作代码。[0058]在一些实施例中,可以将智能合约并入区块链以确定证明是否可接受。智能合约可以使用公共输入和验证密钥来验证证明。如果无法验证证明,智能合约可以拒绝让客户端继续进行。另一方面,如果可以验证证明,则智能合约可以确定证明是可接受的,并在步骤408继续将记录在区块链上的记录的当前状态设置为由客户端指定的s*。在步骤408之后,s*变成记录的当前状态,并且s*的受保护值(在上面的描述中表示为s*)变成记录在区块链上的记录的当前状态。[0059]在一些实施例中,每次客户端尝试更新记录的状态时,可以重复图4所示的流程。以这种方式,即使状态信息已被客户端加密或以其他方式保护,区块链也可以检测到无效的状态转换,并防止客户端绕过某些状态的欺诈性尝试。此外,以这种方式,区块链可以允许公众验证对记录执行的状态转换的有效性,但公众可能无法破译记录的当前或先前状态是什么,从而保护了客户端的隐私。[0060]图5示出了根据实施例的用于保护和验证记录的状态信息的方法500的流程图。方法500可以由区块链系统中的一个或多个节点(例如,区块链系统100(图1)中的节点102至110)执行。区块链系统100中的节点102至110可以对区块链(例如,区块链120(图1))执行操作。区块链120可以实现为上述示例中的区块链。[0061]在步骤502,节点(例如,节点102)可以接收用户提交的交易。用户可以是例如客户端(图4),并且用户提交的交易可以包括“更新”交易(图4)。在一些实施例中,交易可以包括记录的标识(例如,记录_id)、表示在对记录执行操作f之后记录的状态s*的受保护状态值(例如,s*)以及用户准备的证明。在一些实施例中,可以基于表示状态s*的明文值生成(例如,使用加密方案、承诺方案、单向函数等)受保护状态值s*。在一些实施例中,节点102可以不从用户接收状态s*的明文值。[0062]在步骤504,节点102可以确定证明是否可接受。在一些实施例中,节点102可以基于证明是否指示用户拥有诸如秘密输入w(至少部分地基于状态s*的明文值生成)之类的信息来确定证明是否可接受。在一些实施例中,证明可以是零知识证明。在这些实施例中,节点102可以在不访问状态s*的明文值的情况下确定证明是否可接受。在一些实施例中,证明可以由用户生成,以证明受保护状态值s*表示在执行有效操作f之后可以从有效的第一(当前)状态s转换的有效的第二(下一)状态s*。[0063]在一些实施例中,节点102可以基于证明是否可以表明用户知道记录的第一状态s来确定证明是否可接受。节点102还可以基于证明是否可以表明用户知道记录的第二状态s*来确定证明是否可接受。节点102还可以基于证明是否可以表明用户知道要对记录执行的操作f来确定证明是否可接受。节点102还可以基于证明是否可以表明操作f是将记录从第一状态s转换到第二状态s*的有效操作来确定证明是否可接受。[0064]在一些实施例中,用户可以向节点102证明用户知道秘密输入w,使得对于公共输入x,x与w之间的某种关系成立。如上所述,节点102可以通过使用公共输入x和验证密钥验证证明来确定证明是否可接受。在一些实施例中,如果节点102接受用户拥有秘密输入w的用户证明,则节点102可以接受用户的陈述是真实的。[0065]在步骤506,响应于确定证明不可接受,节点102可以拒绝处理用户提交的交易。以这种方式,节点102可以检测到无效的状态转换,并防止用户绕过某些状态的欺诈性尝试。[0066]在步骤508,响应于确定证明是可接受的,节点102可以将记录的记录状态设置为受保护状态值s*。以这种方式,节点102可以验证对记录执行的状态转换的有效性,而无需破译操作f的明文值和状态s*的明文值。在一些实施例中,可以在每次用户尝试更新记录的状态时重复方法500。[0067]图6是根据实施例的状态转换验证装置600的框图。状态转换验证装置600可以是软件处理的实现,并且可以对应于方法500(图5)。参照图6,状态转换验证装置600可以包括接收模块602、确定模块604、拒绝模块606和记录模块608。[0068]接收模块602可以接收用户提交的交易。交易可以包括“更新”交易(图4),其可以包括记录的标识(例如,记录_id)、表示在对记录执行操作f之后记录的状态s*的受保护状态值(例如,s*)以及用户准备的证明。接收模块602可以将接收到的交易提供给确定模块504。[0069]确定模块604可以确定该证明是否可接受。响应于确定证明不可接受,确定模块604可以请求拒绝模块606拒绝处理用户提交的交易。否则,确定模块604可以将交易提供给记录模块608,记录模块608可以将记录的记录状态设置为受保护状态值s*。以这种方式,状态转换验证装置600可以检测到无效的状态转换,并防止用户绕过某些状态的欺诈性尝试。状态转换验证装置600还可以验证对记录执行的状态转换的有效性,而无需破译状态s*的明文值,从而保护了用户的隐私。[0070]上述模块中的每一个可实现为软件、或硬件、或软件和硬件的组合。例如,上述模块中的每一个可以使用执行存储在存储器中的指令的处理器来实现。此外,例如,上述每个模块可以使用一个或多个专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器、或其他电子部件来实现,用于执行所述方法。进一步举例来说,上述模块中的每一个可通过使用计算机芯片或实体来实现,或通过使用具有特定功能的产品来实现。在一个实施例中,装置600可以是计算机,并且该计算机可以是个人计算机、膝上型计算机、蜂窝电话、照相手机、智能手机、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏机、平板电脑、可穿戴设备、或者这些设备的任何组合。[0071]对于装置600中每个模块的功能和作用的实现过程,可以参考上述方法中的相应步骤。为了简单起见,这里省略了细节。[0072]在一些实施例中,计算机程序产品可以包括在其上具有计算机可读程序指令的非暂时性计算机可读存储介质,用于使处理器执行上述方法。[0073]计算机可读存储介质可以是可存储指令供指令执行设备使用的有形设备。计算机可读存储介质可以是,例如,但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或上述的任何适当组合。计算机可读存储介质的更具体示例的非详尽列表包括:便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备(例如,穿孔卡或槽中的凸起结构,其上记录有指令)、以及其任何适当组合。[0074]用于执行上述方法的计算机可读程序指令可以是汇编指令、指令集体系结构(isa)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据、或以一种或多种编程语言(包括面向对象的编程语言)和常规过程编程语言的任意组合编写的源代码或目标代码。计算机可读程序指令可以作为独立软件包完全在计算设备上执行,或者部分在第一计算设备上执行,部分在远离第一计算设备的第二计算设备上执行。在后一种情况下,第二远程计算设备可以通过包括局域网(lan)或广域网(wan)的任何类型的网络连接到第一计算设备。[0075]计算机可读程序指令可提供给通用或专用计算机或其他可编程数据处理装置的处理器,以产生机器,使得通过计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现上述方法的装置。[0076]附图中的流程图和图表说明了根据本说明书的各种实施例的设备、方法和计算机程序产品的可能实现的架构、功能和操作。在这方面,流程图或示意图中的块可以表示软件程序、段或部分代码,其包括用于实现特定功能的一个或多个可执行指令。还应注意,在一些替代实施方式中,块中记录的功能可能与图中记录的顺序不符。例如,连续示出的两个块实际上可以基本上同时执行,或者有时可以根据所涉及的功能以相反顺序执行这些块。还将注意,示意图和/或流程图的每个块以及示意图和流程图中的块的组合可以由执行指定功能或动作的基于专用硬件的系统或者专用硬件和计算机指令的组合来实现。[0077]应理解,为清楚起见,本说明书中的在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合提供。相反,为简洁起见,本说明书中的在单个实施例的上下文中描述的各种特征也可以单独地或在任何合适的子组合中提供,或在本说明书的任何其他描述的实施例中适当地提供。在各种实施例的上下文中描述的某些特征不是这些实施例的基本特征,除非这样指出。[0078]尽管已经结合具体实施例描述了本说明书,但是对于本领域技术人员来说,许多替代方案、修改和变化是显而易见的。因此,随附权利要求涵盖了在权利要求条款范围内的所有这些替代、修改和变化。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部