CN112434269A - 文件的零知识证明方法、验证方法、计算设备和存储介质 - Google Patents
文件的零知识证明方法、验证方法、计算设备和存储介质 Download PDFInfo
- Publication number
- CN112434269A CN112434269A CN202011148813.7A CN202011148813A CN112434269A CN 112434269 A CN112434269 A CN 112434269A CN 202011148813 A CN202011148813 A CN 202011148813A CN 112434269 A CN112434269 A CN 112434269A
- Authority
- CN
- China
- Prior art keywords
- subfile
- hash value
- hash
- file
- certificate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种文件的零知识证明方法、验证方法、计算设备和存储介质,所述文件的零知识证明方法包括:A.将待证明文件切分为多个子文件;B.采用哈希算法计算各个子文件的哈希值;C.将至少一个子文件采用统一的证明密钥分别生成至少一个证明,所述证明密钥是根据所述哈希算法的哈希初值确定的;D.将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开,所述至少一个子文件的哈希值在计算时不产生中间哈希值。本发明技术方案能够实现零知识证明的有效性和高效性。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种文件的零知识证明方法、验证方法、计算设备和存储介质。
背景技术
零知识证明(ZeroKnowledge Proof)是20世纪80年代初提出的,它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。
目前,哈希函数可以与零知识证明进行非常好的结合,由于哈希函数的单向性,也就是无法通过哈希结果破解原文,所以哈希函数类似于复杂的多项式问题。通过哈希函数的零知识证明,验证者在不知道哈希原文的情况下,可以证明证明者知道哈希的原文。支持零知识证明的哈希函数过程如下:可由证明者或第三方平台生成证明密钥(Prove Key)和验证密钥(Verify Key),证明者通过Prove Key和原文可以生成证明(Proof),然后验证者通过Verify Key和Proof,就可以证明证明者知道原文的内容。
但是,现有的支持零知识证明的哈希函数有其一定的局限性,由于需要利用文件的每一个数据块(512位)的中间哈希来生成Prove Key,比如长度为1664位的文件,其中Hash0(哈希初值)、Hash1、Hash2和Hash3用来生成Prove Key。然后使用Prove Key和数据原文生成Proof,因此要对文件进行零知识证明时,每一个文件均需关联一个Prove Key和Verify Key;并且当文件原文比较大时,生成的Prove Key将会非常大,比如512位的文件长度,生成的Prove Key有10M。此外,现有的支持零知识证明的哈希函数只能对完整的文件进行零知识证明。
发明内容
本发明的实施例提供了一种文件的零知识证明方法、验证方法和计算设备。
本发明实施例提供一种文件的零知识证明方法,文件的零知识证明方法包括:A.将待证明文件切分为多个子文件;B.采用哈希算法计算各个子文件的哈希值;C.将至少一个子文件采用统一的证明密钥分别生成至少一个证明,所述证明密钥是根据所述哈希算法的哈希初值确定的;D.将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开,所述至少一个子文件的哈希值在计算时不产生中间哈希值。
本实施例所述方案中,通过将待证明文件拆分为多个独立的子文件,并对多个独立的子文件分别生成证明,使得在生成证明时能够使用统一的证明密钥,且该证明密钥仅与哈希算法的哈希初值相关,从而减小证明密钥所占用的存储空间;此外,证明密钥无需关联具体的待证明文件,实现零知识证明的有效性和高效性。
本发明实施例还提供一种计算设备,所述计算设备包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行以下步骤:A.将待证明文件切分为多个子文件;B.采用哈希算法计算各个子文件的哈希值;C.将至少一个子文件采用统一的证明密钥分别生成至少一个证明,所述证明密钥是根据所述哈希算法的哈希初值确定的;D.将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开,所述至少一个子文件的哈希值在计算时不产生中间哈希值。
本发明实施例还提供一种验证方法,验证方法包括:A.获取所述根哈希值以及待验证文件;B.将所述待验证文件切分为多个验证子文件,并计算各个验证子文件的哈希值;C.采用梅克尔树算法对各个验证子文件的哈希值计算确定验证根哈希值;D.如果所述验证根哈希值与所述根哈希值一致,则确定所述各个子文件来源于同一待证明文件。
本实施例所述方案能够通过对待验证文件计算验证根哈希值,并与待证明的各个子文件计算得到的根哈希值进行比较,如果两者一致,则表示待证明的各个子文件是由同一源文件(也即同一待证明文件)拆分得到的,进一步保证零知识证明的有效性和高效性。
本发明实施例还提供一种计算设备,所述计算设备包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行所述验证方法的步骤。
本发明实施例还提供一种文件的零知识证明方法,文件的零知识证明方法包括:A.获取至少一个子文件的哈希值以及所述至少一个子文件的证明,其中,证明者终端将待证明文件切分为多个子文件,采用哈希算法计算各个子文件的哈希值,将至少一个子文件采用统一的证明密钥分别生成至少一个证明,所述证明密钥是根据所述哈希算法的哈希初值确定的,将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开,所述至少一个子文件的哈希值在计算时不产生中间哈希值;B.利用验证密钥对所述至少一个子文件的证明进行验证,所述验证密钥是根据哈希算法的哈希初值确定的。
本实施例所述方案中,由于证明者终端公开的证明是对多个独立的子文件使用统一的证明密钥分别生成的,因此在验证时能够使用统一的验证密钥进行验证,且该验证密钥仅与哈希算法的哈希初值相关,从而减小验证密钥所占用的存储空间;此外,验证密钥无需关联具体的待证明文件,实现零知识证明的有效性和高效性。
本发明实施例还提供一种计算设备,所述计算设备包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行以下步骤:A.获取至少一个子文件的哈希值以及所述至少一个子文件的证明,其中,证明者终端将待证明文件切分为多个子文件,采用哈希算法计算各个子文件的哈希值,将至少一个子文件采用统一的证明密钥分别生成至少一个证明,所述证明密钥是根据所述哈希算法的哈希初值确定的,将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开,所述至少一个子文件的哈希值在计算时不产生中间哈希值;B.利用验证密钥对所述至少一个子文件的证明进行验证,所述验证密钥是根据哈希算法的哈希初值确定的。
本发明实施例还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行所述文件的零知识证明方法的步骤,或者执行权利要求9所述验证方法的步骤。
附图说明
图1是本发明实施例一种文件的零知识证明方法的流程图;
图2是本发明实施例一种具体应用场景的示意图;
图3是本发明实施例另一种具体应用场景的示意图;
图4是本发明实施例一种验证方法的流程图;
图5是本发明实施例一种文件的零知识证明方法的流程图。
具体实施方式
本申请发明人发现,现有的支持零知识证明的哈希函数有其一定的局限性,每一个文件均需关联一个Prove Key和Verify Key;并且当文件原文比较大时,生成的ProveKey将会非常大。此外,现有的支持零知识证明的哈希函数只能对完整的文件进行零知识证明。
本实施例所述方案中,通过将待证明文件拆分为多个独立的子文件,并对多个独立的子文件分别生成证明,使得在生成证明时能够使用统一的证明密钥,且该证明密钥仅与哈希算法的哈希初值相关,从而减小证明密钥所占用的存储空间;此外,证明密钥无需关联具体的待证明文件,实现零知识证明的有效性和高效性。
本实施例所述方案能够通过对待验证文件计算验证根哈希值,并与待证明的各个子文件计算得到的根哈希值进行比较,如果两者一致,则表示待证明的各个子文件是由同一源文件(也即同一待证明文件)拆分得到的,进一步保证零知识证明的有效性和高效性。
以下参考附图详细描述本公开的各个示例性实施例。附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者他们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。
本文所使用的术语“包含”、“包括”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”,表示还可以包括其他内容。在本公开内容中,术语“基于”是“至少部分地基于”;术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。
本文中出现的“待证明文件”是指:证明者所拥有的文件。待证明文件需要被验证者验证,以证明该证明者拥有该待证明文件。
本文中出现的“子文件”是指:对待证明文件进行拆分得到的文件。子文件的尺寸小于待证明文件的尺寸。更具体而言,子文件的大小是根据零知识证明所采用的哈希算法确定的。
本文中出现的“证明密钥(Prove Key)”是指:用于生成证明所采用的密钥。更具体而言,证明密钥是根据零知识证明所采用的哈希算法的哈希初值确定的。
本文中出现的“验证密钥(Verify Key)”是指:用于验证证明所采用的密钥。更具体而言,验证密钥是根据零知识证明所采用的哈希算法的哈希初值确定的。
本文中出现的“至少一个子文件的哈希值”是指对该至少一个子文件通过一次且仅有一次哈希计算得到的一个哈希值。
相应地,本文中出现的“中间哈希值”是指在子文件的哈希值是通过多次哈希计算得到的情况下,除哈希算法的哈希初值和子文件的哈希值之外的其他哈希值。
本发明实施例中出现的“位”的均是指比特。例如,子文件的大小小于等于447位是指子文件的大小小于等于447位比特。
应当理解,给出这些示例性实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开的实施例,而并非以任何方式限制发明的范围。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
图1是本发明实施例一种文件的零知识证明方法的流程图。
其中,图1所示文件的零知识证明方法可以在证明者终端侧执行,证明者终端可以是指由证明者所使用的终端设备,例如个人计算机(PC)、服务器、智能手机等。
具体地,在本实施例中,所述文件的零知识证明方法可以包括以下步骤:
步骤101.将待证明文件切分为多个子文件;
步骤102.采用哈希算法计算各个子文件的哈希值;
步骤103.将至少一个子文件采用统一的证明密钥分别生成至少一个证明,所述证明密钥是根据所述哈希算法的哈希初值确定的;
步骤104.将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开。
需要指出的是,本实施例中各个步骤的序号并不代表对各个步骤的执行顺序的限定。
在一个非限制性实施例中,哈希值可以是对需要处理的数据选用以下一种或多种算法计算得到的:密码杂凑算法(senior middle 3,简称SM3)、安全哈希算法(Secure HashAlgorithm,简称SHA)1、SHA224、SHA256、SHA384、SHA128、SHA2567等算法(以下统称为哈希算法)等。
本实施例中所称文件可以是任意可实施的形式,例如图片、音频、视频、数字化的文档等。
在步骤101的具体实施中,对于需要证明的待证明文件,可以将其切分为多个子文件,每个子文件的尺寸小于待证明文件的尺寸。其中,对于在后续步骤中需要生成证明的子文件(也即上述步骤S103中提到的至少一个子文件),其要求采用哈希算法仅计算出一个哈希值,也即在不产生中间哈希值的情况下计算出哈希值。换言之,所述至少一个子文件的哈希值在计算时不产生中间哈希值。这就要求子文件的尺寸符合哈希算法的要求,具体地,哈希算法在进行哈希计算时,会按照分组长度将文件拆分为多个数据块进行处理。例如对于哈希算法SHA256,其要求每个数据块的大小(也即该哈希算法的分组长度)为512位,那么本实施例中该子文件的大小(此处是指填充后的文件大小,下同)为512位。
需要说明的是,对于其他哈希算法,可以按照其算法要求确定子文件的大小,例如对于哈希算法SM3、SHA1、SHA224,其要求每个数据块的大小为512位,那么至少一个子文件中每个文件的大小为512位;对于哈希算法SHA384、SHA512,其要求每个数据块的大小为1024位,那么至少一个子文件中每个文件的大小为1024位。其他更多哈希算法的要求可参照现有技术,本发明实施例对此不再一一赘述。
相应地,对于无需在后续步骤中需要生成证明的子文件,其尺寸可以是任意大小。
本领域技术人员应当理解的是,由于哈希算法要求哈希的原文要进行填充(padding),因此填充后的子文件大小满足哈希算法的要求即可。例如,对于分组长度为512的哈希算法,如SHA256,其要求哈希的原文要至少有64位的填充,并且填充的位数至少为1,那么对于在后续步骤中需要生成证明的子文件,填充后的子文件大小为512位,填充前的子文件大小可以是447位,也即对待证明文件切分后直接得到的所述至少一个子文件的大小可以是447位。
在步骤102的具体实施中,采用哈希算法计算切分后的各个子文件的哈希值。每一子文件对应一个哈希值。
在步骤103的具体实施中,将至少一个子文件采用统一的证明密钥分别生成至少一个证明。所述至少一个子文件的数量小于等于所述多个子文件的数量,也就是说,所述至少一个子文件可以是所述多个子文件全部,也可以是所述多个子文件的一部分。
如前所述,子文件的尺寸符合哈希算法的要求,每个子文件能够采用哈希算法计算出一个哈希值,也即每个子文件可以由哈希算法采用哈希初值计算出一个哈希值。子文件的哈希值的计算过程中未产生中间哈希值,使得证明密钥可以直接根据哈希算法的哈希初值确定,无需关联具体的待证明文件。进而使得该证明密钥是一个统一的证明密钥,可以适用于所有的待证明文件。
需要说明的是,关于使用哈希初值计算证明密钥的具体计算方式以及使用证明密钥计算证明的具体实施方式可以参照现有技术,例如采用零知识简洁的非交互式知识论证(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge,zkSnark)算法,本发明实施例对此不作限制。
在步骤104的具体实施中,可以将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开。
在一个非限制性的实施例中,所述至少一个子文件可以是所述多个子文件全部,在这种情况下,可以将多个子文件的哈希值以及多个子文件的证明进行公开。
在另一个非限制性的实施例中,所述至少一个子文件可以是所述多个子文件的一部分,所述多个子文件的剩余部分为其他子文件。在这种情况下,图1所示文件的零知识证明方法还可以包括以下步骤:E.将所述多个子文件中除所述至少一个子文件之外的其他子文件的哈希值以及所述其他子文件的内容进行公开。
本实施例中,可以将多个子文件的一部分子文件的哈希值和证明进行公开,剩余部分子文件的哈希值和内容进行公开。避免了现有技术中仅能对完整的文件进行零知识证明,提升了零知识证明的灵活性;同时,通过公开文件的一部分内容,能够使得验证者更加确信证明者拥有完整的文件内容。
本领域技术人员应当理解的是,关于至少一个子文件和其他子文件可以结合子文件内容的重要程度来选取。例如,由于其他子文件的内容是进行公开的,因此可以选取重要程度较低的子文件作为其他子文件;相应地,可以选取重要程度较高的子文件作为所述至少一个子文件。
在一个具体例子中,请参照图2,待证明文件(图未示)可以切分为4个子文件:子文件1、子文件2、子文件3和子文件4。其中,子文件1、子文件2和子文件3需要生成证明,子文件4无需生成证明,其内容可以公开。在这种情况下,采用哈希算法和统一的证明密钥对子文件1、子文件2和子文件3分别生成对应的HASH1、Proof1、HASH2、Proof2、HASH3、Proof3,并进行公开。采用哈希算法对子文件4生成HASH4,并公开HASH4和子文件4。
在一个非限制性的实施例中,图1所示文件的零知识证明方法还可以包括以下步骤:F.采用梅克尔树算法对各个子文件的哈希值进行计算以确定根哈希值,或者直接对各个子文件的哈希值进行哈希确定所述根哈希值;G.将所述根哈希值进行公开。
由于待证明文件被拆分为多个子文件分别由验证者来证明,因此本发明实施例通过公开的根哈希值可以用于验证多个子文件是来源于同一文件的。根哈希值可以是采用梅克尔树算法计算得到的,也可以是对各个子文件的哈希值直接进行哈希得到的。
在一个具体例子中,请参照图3,图3示出了采用梅克尔树算法对子文件1、子文件2、子文件3和子文件4的哈希值HASH1、HASH2、HASH3和HASH4计算得到根哈希值(RootHASH)。其中,利用HASH1和HASH2计算得到HASH5,利用HASH3和HASH4计算得到HASH6,再利用HASH5和HASH6计算得到Root HASH。
在另一个具体例子中,可以直接对子文件1、子文件2、子文件3和子文件4的哈希值HASH1、HASH2、HASH3和HASH4进行哈希得到Root HASH,无需产生中间哈希值HASH5和HASH6。
本发明实施例还公开了一种计算设备。本领域技术人员理解,本实施例的计算设备用于实施上述图1所示实施例中所述的方法技术方案。具体地,在本实施例中,所述计算设备可以包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行以下步骤:将待证明文件切分为多个子文件;采用哈希算法计算各个子文件的哈希值;将至少一个子文件采用统一的证明密钥分别生成至少一个证明,所述证明密钥是根据所述哈希算法的哈希初值确定的;将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开。
在一个非限制性实施例中,所述处理器运行所述计算机程序时还执行以下步骤:将所述多个子文件中除所述至少一个子文件之外的其他子文件的哈希值以及所述其他子文件的内容进行公开。
在一个非限制性实施例中,所述处理器运行所述计算机程序时还执行以下步骤:采用梅克尔树算法对各个子文件的哈希值进行计算以确定根哈希值,或者直接对各个子文件的哈希值进行哈希确定所述根哈希值;将所述根哈希值进行公开。
关于所述计算设备的工作原理、工作方式的更多内容,可以参照上述图1中的相关描述,这里不再赘述。
在一个非限制性的实施例中,请参照图4,所述验证方法的各个步骤可以由第三方检测方或审计方所使用的终端设备来执行,以验证多个子文件是来源于同一文件的。
具体地,所述验证方法可以包括以下步骤:
步骤401.获取所述根哈希值以及待验证文件;
步骤402.将所述待验证文件切分为多个验证子文件,并计算各个验证子文件的哈希值;
步骤403.采用梅克尔树算法对各个验证子文件的哈希值计算确定验证根哈希值,或者直接对各个验证子文件的哈希值进行哈希确定所述验证根哈希值;
步骤404.如果所述验证根哈希值与所述根哈希值一致,则确定所述各个子文件来源于同一待证明文件。
在步骤401中,第三方检测方或审计方所使用的终端设备可以获取验证者公开的根哈希值,以及验证者提供的待验证文件。
在步骤402中,可以按照与待证明文件相同的子文件切分方式将待验证文件切分为多个验证子文件,并采用相同的哈希算法计算验证子文件的哈希值。
在步骤403和步骤404中,对各个验证子文件的哈希值计算确定验证根哈希值,并比较验证根哈希值与所述根哈希值是否一致。如果一致,则确定所述各个子文件来源于同一待证明文件。否则,所述各个子文件不是来源于同一待证明文件。
由于前述实施例中是针对子文件分别进行证明的,因此还需要对子文件是否来源于同一文件进行验证,本发明实施例通过设置根哈希值可以实现这一目的。
请参照图5,图5所示文件的零知识证明方法可以在验证者终端侧执行,验证者终端可以是指由验证者所使用的终端设备,例如个人计算机(PC)、服务器、智能手机等。
具体地,在本实施例中,所述文件的零知识证明方法可以包括以下步骤:
步骤501.获取至少一个子文件的哈希值以及所述至少一个子文件的证明;
步骤502.利用验证密钥对所述至少一个子文件的证明进行验证,所述验证密钥是根据哈希算法的哈希初值确定的。
其中,证明者终端将待证明文件切分为多个子文件,采用哈希算法计算各个子文件的哈希值,将至少一个子文件采用统一的证明密钥分别生成至少一个证明,所述证明密钥是根据所述哈希算法的哈希初值确定的,将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开。
需要说明的是,关于使用哈希初值计算验证密钥的具体计算方式以及使用验证密钥对证明进行验证的具体实施方式可以参照现有技术,例如采用零知识简洁的非交互式知识论证(zero knowledge succinct non-interactive ARgument of knowledge,zkSnark)算法,本发明实施例对此不作限制。
本实施例所述方案中,由于证明者终端公开的证明是对多个独立的子文件使用统一的证明密钥分别生成的,因此在验证时能够使用统一的验证密钥进行验证,且该验证密钥仅与哈希算法的哈希初值相关,从而减小验证密钥所占用的存储空间;此外,验证密钥无需关联具体的待证明文件,实现零知识证明的有效性和高效性。
本发明实施例还公开了一种计算设备。本领域技术人员理解,本实施例的计算设备用于实施上述图5所示实施例中所述的方法技术方案。
具体地,在本实施例中,所述计算设备可以包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行以下步骤:获取至少一个子文件的哈希值以及所述至少一个子文件的证明;利用验证密钥对所述至少一个子文件的证明进行验证,所述验证密钥是根据哈希算法的哈希初值确定的。
关于所述计算设备的工作原理、工作方式的更多内容,可以参照上述图1以及图5中的相关描述,这里不再赘述。
在一个具体应用场景中,在对数据隐私要求较高的应用领域中,例如合同存证、数字身份等领域,可以通过本发明实施例公开的零知识证明方法对该领域中的文件进行公开或验证。具体而言,可以由证明者终端设备执行图1所示方法的各个步骤,对需要验证的文件的证明进行公开;可以由验证者终端设备执行图5所示方法的各个步骤,对需要验证的文件的证明进行验证,以证明所述证明者终端设备拥有该文件。
本发明实施例还公开了一种存储介质,其上存储有计算机指令,所述计算机指令运行时可以执行图1、图4或图5中所示方法的步骤。所述存储介质可以包括ROM、RAM、磁盘或光盘等。所述存储介质还可以包括非挥发性存储器(non-volatile)或者非瞬态(non-transitory)存储器等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (13)
1.一种文件的零知识证明方法,其特征在于,包括:
A.将待证明文件切分为多个子文件;
B.采用哈希算法计算各个子文件的哈希值;
C.将至少一个子文件采用统一的证明密钥分别生成至少一个证明,所述证明密钥是根据所述哈希算法的哈希初值确定的;
D.将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开,所述至少一个子文件的哈希值在计算时不产生中间哈希值。
2.根据权利要求1所述的文件的零知识证明方法,其特征在于,还包括:
E.将所述多个子文件中除所述至少一个子文件之外的其他子文件的哈希值以及所述其他子文件的内容进行公开。
3.根据权利要求1所述的文件的零知识证明方法,其特征在于,还包括:
F.采用梅克尔树算法对各个子文件的哈希值进行计算以确定根哈希值,或者直接对各个子文件的哈希值进行哈希确定所述根哈希值;
G.将所述根哈希值进行公开。
4.根据权利要求1所述的文件的零知识证明方法,其特征在于,所述至少一个子文件的大小是根据所述哈希算法确定的。
5.根据权利要求4所述的文件的零知识证明方法,其特征在于,所述哈希算法的分组长度为512时,所述至少一个子文件中每个子文件的大小小于等于447位。
6.一种计算设备,其特征在于,所述计算设备包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行以下步骤:
A.将待证明文件切分为多个子文件;
B.采用哈希算法计算各个子文件的哈希值;
C.将至少一个子文件采用统一的证明密钥分别生成至少一个证明,所述证明密钥是根据所述哈希算法的哈希初值确定的;
D.将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开,所述至少一个子文件的哈希值在计算时不产生中间哈希值。
7.根据权利要求6所述的计算设备,其特征在于,所述处理器运行所述计算机程序时还执行以下步骤:
E.将所述多个子文件中除所述至少一个子文件之外的其他子文件的哈希值以及所述其他子文件的内容进行公开。
8.根据权利要求6所述的计算设备,其特征在于,所述处理器运行所述计算机程序时还执行以下步骤:
F.采用梅克尔树算法对各个子文件的哈希值进行计算以确定根哈希值,或者直接对各个子文件的哈希值进行哈希确定所述根哈希值;
G.将所述根哈希值进行公开。
9.基于权利要求3所述的文件的零知识证明方法的验证方法,其特征在于,包括:
A.获取所述根哈希值以及待验证文件;
B.将所述待验证文件切分为多个验证子文件,并计算各个验证子文件的哈希值;
C.采用梅克尔树算法对各个验证子文件的哈希值计算确定验证根哈希值,或者直接对各个验证子文件的哈希值进行哈希确定所述验证根哈希值;
D.如果所述验证根哈希值与所述根哈希值一致,则确定所述各个子文件来源于同一待证明文件。
10.一种计算设备,其特征在于,所述计算设备包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行权利要求9所述验证方法的步骤。
11.一种文件的零知识证明方法,其特征在于,包括:
A.获取至少一个子文件的哈希值以及所述至少一个子文件的证明,其中,证明者终端将待证明文件切分为多个子文件,采用哈希算法计算各个子文件的哈希值,将至少一个子文件采用统一的证明密钥分别生成至少一个证明,所述证明密钥是根据所述哈希算法的哈希初值确定的,将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开,所述至少一个子文件的哈希值在计算时不产生中间哈希值;
B.利用验证密钥对所述至少一个子文件的证明进行验证,所述验证密钥是根据哈希算法的哈希初值确定的。
12.一种计算设备,其特征在于,所述计算设备包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行以下步骤:
A.获取至少一个子文件的哈希值以及所述至少一个子文件的证明,其中,证明者终端将待证明文件切分为多个子文件,采用哈希算法计算各个子文件的哈希值,将至少一个子文件采用统一的证明密钥分别生成至少一个证明,所述证明密钥是根据所述哈希算法的哈希初值确定的,将所述至少一个子文件的哈希值以及所述至少一个子文件的证明进行公开,所述至少一个子文件的哈希值在计算时不产生中间哈希值;
B.利用验证密钥对所述至少一个子文件的证明进行验证,所述验证密钥是根据哈希算法的哈希初值确定的。
13.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行权利要求1至5中任一项所述文件的零知识证明方法的步骤,或者执行权利要求9所述验证方法的步骤,或者执行权利要求11所述文件的零知识证明方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011148813.7A CN112434269A (zh) | 2020-10-23 | 2020-10-23 | 文件的零知识证明方法、验证方法、计算设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011148813.7A CN112434269A (zh) | 2020-10-23 | 2020-10-23 | 文件的零知识证明方法、验证方法、计算设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112434269A true CN112434269A (zh) | 2021-03-02 |
Family
ID=74695971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011148813.7A Pending CN112434269A (zh) | 2020-10-23 | 2020-10-23 | 文件的零知识证明方法、验证方法、计算设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112434269A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113794567A (zh) * | 2021-09-13 | 2021-12-14 | 上海致居信息科技有限公司 | 一种sha256哈希算法零知识证明电路的合成加速方法及装置 |
CN115967493A (zh) * | 2021-10-12 | 2023-04-14 | 北京航空航天大学 | 基于国密sm3的哈希原像零知识证明电路生成方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170331631A1 (en) * | 2014-11-28 | 2017-11-16 | Katholieke Universiteit Leuven | A method and device for authentication |
CN108664221A (zh) * | 2018-05-11 | 2018-10-16 | 北京奇虎科技有限公司 | 一种数据持有证明方法、装置及可读存储介质 |
CN108737109A (zh) * | 2018-05-11 | 2018-11-02 | 北京奇虎科技有限公司 | 数据持有证明方法、装置及系统 |
CN109657499A (zh) * | 2018-10-31 | 2019-04-19 | 深圳市网心科技有限公司 | 元数据验证方法、系统服务器和计算机可读存储介质 |
CN109766705A (zh) * | 2018-12-10 | 2019-05-17 | 杭州隐知科技有限公司 | 一种基于电路的数据验证方法、装置及电子设备 |
CN111357026A (zh) * | 2020-02-03 | 2020-06-30 | 支付宝(杭州)信息技术有限公司 | 基于区块链的可信保函 |
-
2020
- 2020-10-23 CN CN202011148813.7A patent/CN112434269A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170331631A1 (en) * | 2014-11-28 | 2017-11-16 | Katholieke Universiteit Leuven | A method and device for authentication |
CN108664221A (zh) * | 2018-05-11 | 2018-10-16 | 北京奇虎科技有限公司 | 一种数据持有证明方法、装置及可读存储介质 |
CN108737109A (zh) * | 2018-05-11 | 2018-11-02 | 北京奇虎科技有限公司 | 数据持有证明方法、装置及系统 |
CN109657499A (zh) * | 2018-10-31 | 2019-04-19 | 深圳市网心科技有限公司 | 元数据验证方法、系统服务器和计算机可读存储介质 |
CN109766705A (zh) * | 2018-12-10 | 2019-05-17 | 杭州隐知科技有限公司 | 一种基于电路的数据验证方法、装置及电子设备 |
CN111357026A (zh) * | 2020-02-03 | 2020-06-30 | 支付宝(杭州)信息技术有限公司 | 基于区块链的可信保函 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113794567A (zh) * | 2021-09-13 | 2021-12-14 | 上海致居信息科技有限公司 | 一种sha256哈希算法零知识证明电路的合成加速方法及装置 |
CN113794567B (zh) * | 2021-09-13 | 2024-04-05 | 上海致居信息科技有限公司 | 一种sha256哈希算法零知识证明电路的合成加速方法及装置 |
CN115967493A (zh) * | 2021-10-12 | 2023-04-14 | 北京航空航天大学 | 基于国密sm3的哈希原像零知识证明电路生成方法及装置 |
CN115967493B (zh) * | 2021-10-12 | 2024-05-24 | 北京航空航天大学 | 基于国密sm3的哈希原像零知识证明电路生成方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101992270B1 (ko) | 디지털 서명 생성 방법 및 장치 | |
CN111066285A (zh) | 基于sm2签名恢复公钥的方法 | |
US9219602B2 (en) | Method and system for securely computing a base point in direct anonymous attestation | |
US9172530B2 (en) | Apparatus and method for generating secret key for ID-based encryption system and recording medium having program recorded thereon for causing computer to execute the method | |
JP6451938B2 (ja) | 暗号文照合システム、方法、およびプログラム | |
CN112380584B (zh) | 区块链数据更新方法、装置、电子设备和存储介质 | |
US20160149708A1 (en) | Electronic signature system | |
Bellare et al. | Deterring certificate subversion: efficient double-authentication-preventing signatures | |
CN112434269A (zh) | 文件的零知识证明方法、验证方法、计算设备和存储介质 | |
CN111859435B (zh) | 一种数据安全处理方法及装置 | |
CN112187469A (zh) | 一种基于密钥因子的sm2多方协同数字签名方法和系统 | |
CN114287003A (zh) | 保留隐私的签名 | |
JP5972181B2 (ja) | 改ざん検知装置、改ざん検知方法、およびプログラム | |
JP2014157354A (ja) | 線形準同型な構造保存署名を生成および検証する暗号学的装置および方法 | |
CN107947944B (zh) | 一种基于格的增量签名方法 | |
CN112541197B (zh) | 一种结果验证方法及装置 | |
KR102070061B1 (ko) | 묶음 검증 방법 및 장치 | |
CN117118637B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN108632043B (zh) | 一种优化的环签名方法及系统 | |
KR20210061194A (ko) | 구조화된 행렬들에 기초한 공개키 암호를 위한 방법과 장치 | |
KR102665448B1 (ko) | 하이브리드 전자서명 방법 | |
CN116318738B (zh) | 签名方法、系统、电子设备及存储介质 | |
KR102595938B1 (ko) | 다항식을 이용하여 데이터의 암복호화를 수행하는 암호화 시스템을 위한 다항식 역원 생성 장치 및 방법 | |
KR102600166B1 (ko) | 다항식을 이용하여 데이터의 암복호화를 수행하는 암호화 시스템에서 사용되는 다항식의 역원을 생성하기 위한 역원 생성 장치 및 방법 | |
Zhang et al. | OGPADSM2: oriented-group public auditing for data sharing with multi-user modification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210302 |
|
WD01 | Invention patent application deemed withdrawn after publication |