CN114978538A - 保护隐私的数据关系证明方法和系统 - Google Patents
保护隐私的数据关系证明方法和系统 Download PDFInfo
- Publication number
- CN114978538A CN114978538A CN202210536833.4A CN202210536833A CN114978538A CN 114978538 A CN114978538 A CN 114978538A CN 202210536833 A CN202210536833 A CN 202210536833A CN 114978538 A CN114978538 A CN 114978538A
- Authority
- CN
- China
- Prior art keywords
- value
- vector
- commitment
- character string
- generating
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 239000013598 vector Substances 0.000 claims abstract description 193
- 238000012795 verification Methods 0.000 claims abstract description 75
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 12
- 238000004590 computer program Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 16
- 238000004364 calculation method Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000007115 recruitment Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本说明书实施例提供一种保护隐私的数据关系证明的方法。根据该方法,证明方根据字符串u与字符串v,生成示性向量,在字符串u是字符串v的子串的情况下,示性向量通过连续的第一值元素示出子串的位置;字符串v预先使用承诺算法生成目标承诺值存储于公开数据源。然后,获取挑战数组;并根据示性向量,两个字符串以及挑战数组,生成两个向量多项式及其内积产生的结果多项式,并基于结果多项式的系数,生成第一组承诺值。此外还获取随机的变量值x,将其代入两个向量多项式和结果多项式,据此生成第二组承诺值。两组承诺值被发送给验证设备,验证设备根据字符串u以及目标承诺值,验证示性向量,进而验证字符串u是否为字符串v的子串。
Description
技术领域
本说明书一个或多个实施例涉及数据隐私保护,尤其涉及在保护隐私的情况下对数据关系进行证明的方法和系统。
背景技术
区块链技术是利用点对点传输、共识机制、加密算法等计算机技术实现数据分布式存储的一种应用模式。在区块链网络中,数据的存储和记录通过交易的方式实现。各个交易的交易内容由区块链网络的所有节点共同维护,任何一方无法对区块中的内容进行篡改。
由于区块链的不可篡改特点,常常将一些权威方认证过的信息,上传到区块链上进行存证。然而,上传到区块链的数据还具有透明可跟踪的特性,常规区块链中每条交易公开记录在区块中,任何节点均可以访问读取,这容易导致用户隐私数据的暴露。
因此,希望提供有效的方案,能够在保护隐私的情况下证明和验证数据关系。
发明内容
本说明书一个或多个实施例描述了一种保护隐私的数据关系证明的方法和装置,其中证明方设备可以通过零知识证明的方式,向验证设备证明,本次提供的声明片段字符串是承诺值对应的全量声明字符串的子串,进而证明本次的声明片段属于认证过的全量声明信息,由此实现对承诺后的全量声明信息进行最小化的按需披露,从而在保护隐私的情况下进行数据关系的证明。
根据第一方面,提供了一种保护隐私的数据关系证明方法,通过第一设备执行,包括:
根据第一长度的第一字符串与第二长度的第二字符串,生成第二长度的示性向量,在所述第一字符串是第二字符串的子串的情况下,所述示性向量通过连续第一长度的第一值元素示出所述子串在所述第二字符串中的位置;所述第二字符串预先使用承诺算法生成目标承诺值存储于公开的目标数据源;
获取挑战数组;
根据所述示性向量,所述第一字符串、第二字符串以及所述挑战数组,生成两个向量多项式及其内积产生的结果多项式,并基于所述结果多项式的系数,生成第一组承诺值;
获取随机的变量值x;
将所述变量值x代入所述两个向量多项式和结果多项式,得到两个验证向量和结果值,并生成第二组承诺值,其中至少包括所述结果值和所述两个验证向量;
所述第一组承诺值和第二组承诺值被发送给验证设备,以使验证设备根据所述第一字符串以及从所述目标数据源获得的所述目标承诺值,验证所述示性向量,进而验证所述第一字符串是否为第二字符串的子串。
根据一种实施方式,获取挑战数组包括,从所述验证设备接收其生成的挑战数组;获取随机的变量值x包括,从所述验证设备接收其生成的变量值x。
根据另一种实施方式,获取挑战数组包括,根据约定的第一生成器和公开的第一数据源,生成所述挑战数组;获取随机的变量值x包括,根据约定的第二生成器和公开的第二数据源,生成所述变量值x。
在一个实施例中,所述目标数据源为区块链。
根据一个示例,所述第二字符串包括,用户全量身份证明信息,所述第一字符串为,用户部分身份证明信息。
根据一种实施方式,所述两个向量多项式分别基于第一基础向量和第二基础向量而生成;其中,所述第一基础向量和第二基础向量的内积结果,等于第一运算值和第二运算值δ之和,其中,第一运算值依赖于所述第二字符串,第二运算值仅依赖于所述挑战数组和所述第一字符串。
进一步的,在一个实施例中,上述方法还包括:生成与所述示性向量具有预定关系的辅助向量;生成用于混淆所述示性向量和辅助向量的第一和第二盲化向量;根据所述示性向量、辅助向量生成基准值数组,根据所述第一和第二盲化向量,生成盲化值S。
在以上实施例的基础上,所述生成两个向量多项式具体包括:基于所述第一基础向量引入第一盲化向量和变量,得到第一向量多项式;基于所述第二基础向量引入第二盲化向量和变量,得到第二向量多项式。
进而,在一个示例中,验证所述示性向量,具体包括:根据所述基准值数组,所述盲化值S,所述挑战数组,所述目标承诺值以及所述第一字符串,计算得到第一计算值;根据所述两个验证向量,计算得到第二计算值;验证第一计算值是否等于第二计算值。
根据一个实施例,所述挑战数组包括第一挑战数y;生成第一组承诺值,包括:根据所述第一挑战数y和第二字符串,以及本地生成的第一随机数,生成第一承诺值T0;根据所述结果多项式的一次项系数,本地生成的第二随机数,生成第二承诺值T1;根据所述结果多项式的二次项系数,本地生成的第三随机数,生成第三承诺值T2。
进一步的,在一个示例中,生成第二组承诺值,包括:根据所述第一随机数、第二随机数、第三随机数、所述变量值x以及所述第一挑战数y,生成验证值τx;确定第二组承诺值,其中至少包括所述验证值τx,所述结果值,所述两个验证向量。
与以上示例对应的,验证所述示性向量可以包括:根据所述验证值τx,所述结果值,所述第二运算值δ,计算得到第三计算值;根据所述第一承诺值T0,第二承诺值T1,第三承诺值T2,所述变量值x,所述第一挑战数y,计算得到第四计算值;验证所述第三计算值和第四计算值是否相等。
根据一个实施例,所述第一字符串中包含通配符。
根据第二方面,提供了一种保护隐私的数据关系证明的装置,部署在第一设备中,包括:
示性向量生成单元,配置为根据第一长度的第一字符串与第二长度的第二字符串,生成第二长度的示性向量,在所述第一字符串是第二字符串的子串的情况下,所述示性向量通过连续第一长度的第一值元素示出所述子串在所述第二字符串中的位置;所述第二字符串预先使用承诺算法生成目标承诺值存储于公开的目标数据源;
第一获取单元,配置为获取挑战数组;
第一承诺单元,配置为根据所述示性向量,所述第一字符串、第二字符串以及所述挑战数组,生成两个向量多项式及其内积产生的结果多项式,并基于所述结果多项式的系数,生成第一组承诺值;
第二获取单元,配置为获取随机的变量值x;
第二承诺单元,配置为将所述变量值x代入所述两个向量多项式和结果多项式,得到两个验证向量和结果值,并生成第二组承诺值,其中至少包括所述结果值和所述两个验证向量;
发送单元,配置为将所述第一组承诺值和第二组承诺值发送给验证设备,以使验证设备根据所述第一字符串以及从所述目标数据源获得的所述目标承诺值,验证所述示性向量,进而验证所述第一字符串是否为第二字符串的子串。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算设备中执行时,计算设备执行第一方面的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面所述的方法。
在本说明书的实施例中,在证明方想要证明本次的声明片段属于已认证过的全量声明信息时,证明方第一设备生成零知识证明,该零知识证明不会泄露全量声明信息对应的全量字符串,且可以使得,验证设备在不知晓全量字符串即全量声明信息明文的情况下,验证声明片段的字符串是否为全量字符串的子串,从而验证声明片段是否属于全量声明信息。由此实现对承诺后的全量声明信息进行最小化的按需披露,保护用户隐私。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出可应用实施例方案的技术场景;
图2示出第一字符串u,第二字符串v和示性向量bL的对应关系;
图3示出根据一个实施例的验证数据关系的流程图;
图4示出根据一个实施例的数据关系证明装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
如前所述,在已有技术中,常常将权威机构认证过的信息存储于诸如区块链的开放数据源,以供后续验证使用。然而,这带来隐私安全问题。在一种方案中,当认证的信息涉及个人隐私或不宜公开时,并不将认证信息的明文存证于区块链,而是对其进行一定的隐私保护处理。例如,可以利用承诺技术,基于权威方认证过的信息生成承诺值,将承诺值记录于区块链中。然而,这样的情况下,如果某个数据持有方想要验证自己持有的数据是认证信息中的一部分,则会更加困难。例如,权威机构认证过的用户的身份声明包括其专业和证件号码两个信息,权威结构将身份声明的承诺值存证于区块链。根据已有技术,当用户想要向第三方机构证明自己的专业时,用户只能将完整的身份声明暴露给第三方机构,而无法根据自己的需求进行最小化的按需披露。
有鉴于此,发明人提出一种保护隐私的证明数据关系的方案,由此可以支持用户根据需要披露部分验证信息,即对承诺后的验证信息进行最小化的按需披露。
图1示出可应用实施例方案的技术场景。如图所示,用户首先将需要认证的全量声明信息发送给权威机构进行认证。权威机构对该全量声明信息中的各项信息进行认证,通过之后,为该全量声明信息生成背书。具体地,权威机构采用承诺技术,基于该全量声明信息生成一个承诺值,将该承诺值记录于可信的、开放的数据源,例如区块链。该承诺值不会泄露全量声明信息中的任何具体信息和数据。
当用户想要向第三方机构证明全量声明信息中的一部分信息,或称为声明片段时,他可以基于该声明片段与全量声明信息,生成零知识证明,并将该声明片段和生成的零知识证明发送给第三方机构。该第三方机构一方面可以从区块链获得上述全量声明信息对应的承诺值,一方面从用户处接收声明片段和零知识证明。于是,第三方机构可以基于该零知识证明,验证所接收的声明片段是否属于承诺值对应的全量声明信息,而不会获得全量声明信息中除声明片段外的其他信息。由此实现用户对承诺后的全量声明信息进行最小化的按需披露。
上述技术场景可应用于多种具体的应用示例。例如,在一个示例中,上述全量声明信息是用户的全量身份证明信息,其中包括,用户的证件号码,学历证明,薪资流水证明,个人资产证明等。用户例如在应聘时,可能需要向招聘企业(第三方机构)出示其学历证明,但又不想泄露其他信息,于是用户可以将学历证明部分作为上述声明片段,生成零知识证明,以使得招聘企业基于该零知识证明,验证用户提供的学历证明是否为验证过的全量声明信息中的一部分。如果是,则可以确定该学历证明经过权威机构的认证,真实可信。
在另一示例中,可以在隐私版权保护的场景中应用上述方案。在该场景下,上述全量声明信息可以是某主体(作为用户)的作品全文,例如,可以是某人的文字作品全文,某个公司开发的代码全文。该主体将作品全文发给版权机构(权威机构)进行保密认证。之后,若该主体发现其他方涉嫌使用了其保密版权中的一部分,例如发现其他人使用了其文字作品中的一个段落,或者发现其他公司使用了其代码全文中的一段代码,则该主体可以向相关机构证明,自己要求版权保护的作品中已经包含这个段落或这段代码,同时又不必泄露作品全文的其他部分。
上述技术场景还可以应用于更多具体示例,在此不一一枚举。下面描述上述技术场景中各个技术要点的具体实现和构思。
需理解,实践中,上述全量声明信息和声明片段,均可以实现为或转化为字符串的形式。在下文中,可以将全量声明信息记为长度为n的字符串v={v1,…,vn},将声明片段记为长度为m的字符串u={u1,…,um},m<n。如此,验证声明片段是否属于全量声明信息可以转化为,在仅知道字符串v的承诺值C的情况下,基于零知识证明σ,验证字符串u是否为字符串v的子串。
关于针对全量声明信息对应的字符串v生成承诺值的过程,可以采用现有技术中各种承诺协议,例如将其转化为多项式,采用多种多项式承诺协议。在一个具体实施例中,可以采用Pedersen Vector承诺算法。该算法中承诺的生成、打开包括以下步骤。
(二)承诺值的生成。具体地,随机选取r′∈Zp,则承诺值为
(三)承诺打开。该承诺协议的打开算法为,输入v和r′后,若得到C==hr′·gv,则输出1,否则输出0。
以上描述了Pedersen Vector承诺算法的几个阶段。然而需理解,在本说明书的实施例中,由于不希望暴露全量声明信息,即字符串v,因此,并不使用打开阶段的算法。在本说明书实施例的方案中,权威机构对全量声明信息验证后,针对对应的字符串v生成承诺值C(下文中又称为目标承诺值),将该目标承诺值C存储于可信的、公开的数据源,例如区块链。用户方(作为承诺协议参与方)也会保留上述公共参数和随机数r′,用于后续生成零知识证明σ。
如前所述,验证声明片段是否属于全量声明信息这一问题可以转化为,在仅知道字符串v对应的目标承诺值C的情况下,基于零知识证明σ,验证字符串u是否为字符串v的子串。下面描述本说明书实施例中针对子串验证生成零知识证明的技术构思和理论原理。
假定第一字符串u={u1,…,um}是第二字符串v={v1,…,vn}的子串,且u1对应于第二字符串v中第ind+1位。可以构造一示性向量bL,表示两个字符串之间的关系。具体地,可以令u在v中的示性向量,其包括n个元素(与第二字符串v长度相同),其中各个元素表示:
图2示出第一字符串u,第二字符串v和示性向量bL的对应关系。通过图2可以看到,若第一字符串u是第二字符串v的子串,且u1对应于第二字符串v中第ind+1位,那么示性向量的前ind位值均为0,从ind+1到ind+m位,这连续的m位值为1,表示有子串匹配;从ind+m+1位直到第n位,值均为0。也就是说,在第一字符串u是第二字符串v的子串的情况下,示性向量通过连续m位的特定值元素(上例中为1)示出子串在第二字符串v中的位置。
此外,根据式(2)中bL的定义,bL每个位置非0即1。根据这个条件,可以定义与示性向量bL具有特定关系的辅助向量bR:
式(4)中,yn=(1,y,…,yn-1),尖括号<a,b>表示向量a和b的内积。
另一方面,u为v的子字符串可以表示为如下条件:
类似的施加y,上面的式子(5)可以转化为:
需注意,式(6)中的yind是个标量,是y的ind次方;内积括号中的ym是个向量,ym=(1,y,…,ym-1)。
再构建表示bL为示性向量的条件:
<bL,yn>=yind·<1m,ym> (7)
上面式(6)和式(7)相除可以去掉ind,得到下面这个条件:
式(8)中A(u,y)=<u,ym>and B(y)=<1m,ym>
再加入bL中恰好有m个位置为1的条件:
<bL,1n>=m (9)
综合以上,u为v子字符串可以等价为证明下面的4个条件:
<bL,1n>=m (10)
上面的式子(11)又可以等价转换为:
式(12)中:
δ(u,w,y,z)=wz2·m-wz3·n-z3A(u,y)·<1n,yn>-wz2·<1n,wz·<1n,yn>,
可以看到,式(12)左侧为两个向量的内积,清楚方便起见,将其称为两个基础向量W1和W2,其中第一个基础向量W1和第二个基础向量W2分别为:
W1=bL-z·1n
这两个基础向量的内积等于第一运算值和第二运算值δ之和,其中第一运算值依赖于第二字符串v,第二运算值δ(u,w,y,z)则仅依赖于验证者选取的随机数组(又称为挑战数组)(w,y,z)和第一字符串u。由于其中不包含任何隐私信息(例如第二字符串v),故验证者可直接计算。
后续对子串关系的证明,即基于上式(12)示出的关系式进行。
图3示出根据一个实施例的验证数据关系的流程图。下面结合该流程图描述隐私保护情况下验证字符串关系的过程。
可以看到,图3涉及证明方所在的第一设备以及验证设备。证明方例如可以是个人用户,第一设备可以是用户设备;证明方也可以是企业型用户,第一设备可以是该企业的服务器;证明方也可以是其他主体,相应的,第一设备可以是该其他主体使用的设备。验证设备是验证方使用的设备,该验证方可以是各种对数据和信息具有验证需求的机构和实体,例如,图1所示的第三方机构。
在进行数据验证之前,需预先执行准备过程,在其中,证明方所在的第一设备,使得本方持有的全量信息对应的第二字符串v的目标承诺值C存储于公开的数据源。例如,第一设备可以将全量信息发给权威机构,权威结构对其进行认证,认证通过之后生成目标承诺值C。权威机构将该目标承诺值C发给第一设备,同时也将其存储于公开的数据源,例如区块链。该公开的数据源也可以是其他各方认为可信的数据源,例如,官方机构提供的公开数据源。
接下来描述第一设备向验证设备证明第一字符串u是第二字符串v子串的过程。
在步骤301,证明方所在的第一设备,根据第一长度(m位)的第一字符串u与第二长度(n位)的第二字符串v,生成第二长度(n位)的示性向量,在第一字符串u是第二字符串v的子串的情况下,所述示性向量通过连续第一长度的第一值元素示出所述子串在所述第二字符串中的位置。
该示性向量的定义如前述公式(2)所示,记为bL。典型的,若m位的第一字符串是n位的第二字符串的子串,那么n位的示性向量中包含连续m个1,其他元素均为0。
在步骤302,第一设备生成辅助向量,基准值数组,并实施盲化操作。
具体地,第一设备基于上述示性向量bL,按照以下关系式(13)生成与其具有预定关系的辅助向量bR:
bR=bL-1N (13)
显然,如此生成的辅助向量bR满足关系式(3)示出的预定关系。
根据以上生成的示性向量bL和辅助向量bR,可以生成两个基准值A1和A2,作为基准值数组。具体的,第一设备按照下面的公式(14)生成基准值数组:
式(14)中,α1和α2为选取的随机数。粗体标出的g,h,是以加密所基于的循环群中的生成元为元素,形成的N维向量,在此称为生成向量。其中生成向量g与公式(1)中生成目标承诺值时使用的生成向量相同。并且,公式(14)涉及对向量之间的指数操作,该指数操作如下定义:向量g=(g1,…,gN)的向量l=(l1,…,lN)次方表示为该操作与公式(1)中所示的运算一致。
此外,第一设备还执行盲化操作,针对示性向量bL和辅助向量bR分别生成用于对其进行混淆的第一盲化向量sL和第二盲化向量sR。具体的,第一设备可以随机生成n维向量,分别作为第一盲化向量sL和第二盲化向量sR。之后,根据第一和第二盲化向量,生成盲化值S。
具体的,第一设备按照下面的公式(15),根据第一和第二盲化向量生成盲化值S:
其中,ρ为第一设备随机选取的随机数,g,h为前述生成向量。
然后,在步骤303,第一设备可以向验证设备提供该基准值数组A1,A2,以及盲化值S。
接着,在步骤304,第一设备获取挑战数组;在步骤305,根据示性向量,第一和第二字符串以及上述挑战数组,生成第一组承诺值。
在一个实施例中,第一设备先获取第一挑战数y。具体的,可以由验证设备随机生成一个随机数y,发给第一设备。然后,第一设备根据该第一挑战数y和第二字符串v,以及本地生成的第一随机数,生成第一承诺值T0。在一个具体示例中,第一设备根据以下公式(16)生成第一承诺值:
式(16)中,τ0为第一设备生成的第一随机数,g为与h离散关系未知的另一生成元,y为第一挑战数,yn是基于y形成的向量,其定义与前述公式(4)一致,即:yn=(1,y,…,yn-1)。
第一设备于是可以将第一承诺值T0发送给验证设备。
此外,第一设备还获取第二挑战整数w和第三挑战数z。这两个挑战数也可以是由验证设备生成后,发送给第一设备。
于是,第一设备可以根据前述示性向量bL,第一和第二字符串以及挑战数组(w,y,z),生成两个向量多项式,并基于其内积生成结果多项式,然后基于该结果多项式的系数,生成第二承诺值T1和第三承诺值T2。
回忆对公式(12)的解释,该公式(12)反映了对子串关系的证明目标,其中,公式(12)左侧为两个基础向量W1和W2的内积。基于此,在一个实施例中,第一设备根据前述公式(12)示出的关系,分别在第一基础向量W1和第二基础向量W2的基础上引入盲化向量和变量X,从而生成两个向量多项式。具体而言,在一个例子中,可以基于第一基础向量W1引入第一盲化向量sL和变量X,得到第一向量多项式I(X)。例如,按照以下公式(17)构造第一向量多项式I(X):
l(X)=bL-z·1n+sL·X (17)
另一方面,基于第二基础向量W2,引入第二盲化向量sR和变量X,生成第二向量多项式r(X)。例如,按照以下公式(18)构造第二向量多项式r(X):
相应的,这两个向量多项式的内积所产生的结果多项式可表示为t(X):
t(X)=(l(X),r(X)>=t0+t1·X+t2·X2 (19)
可以理解,变量X是附加在盲化向量上的,因此,结果多项式t(X)中的常数项t0,即对应于第一基础向量W1和第二基础向量W2的内积,又根据公式(12)示出的关系,该常数项满足:
t0=z3·B(y)·<yn,u>δ(u,w,y,z) (20)
在得到上述结果多项式的基础上,第一设备基于该结果多项式的系数,生成第二和第三承诺值。
在一个具体实施例中,第一设备根据结果多项式的一次项系数t1,本地生成的第二随机数τ1,生成第二承诺值T1;根据结果多项式的二次项系数t2,本地生成的第三随机数t2,生成第三承诺值T2。在一个示例中,第二承诺值T1和第三承诺值T2分别表示为:
第一设备生成第二承诺值和第三承诺值后,也将这两个承诺值发给验证设备。
需理解,以上描述了第一设备先获取第一挑战数y,并据此生成第一承诺值T0,发给验证设备后,再获取第二和第三挑战数(w,z),据此生成第二和第三承诺值的示例过程。在另一实施例中,第一设备也可以一次性获取整个挑战数组(w,y,z),并生成三个承诺值(T0,T1,T2),构成第一组承诺值,发送给验证设备。以上两种实施方式,在图3中均以步骤306示出。
在将第一组承诺值发送给验证设备后,在步骤307,第一设备获取随机的变量值x。在图3所示的实施例中,由验证设备生成该变量值x,发送给第一设备。第一设备由此获得该变量值x。
于是,在步骤308,第一设备将该变量值x代入两个向量多项式和结果多项式,得到两个验证向量和结果值,并生成第二组承诺值。
具体的,第一设备将变量值x代入第一向量多项式I(X),得到第一验证向量l,即:
l=l(x)=bL-z·1n+sL·x (22)
将变量值x代入第二向量多项式r(X),得到第二验证向量r,即:
此外,第一设备还可以根据前述的第一随机数τ0、第二随机数τ1、第三随机数τ2、变量值x以及第一挑战数y,生成验证值τx。
例如,可以如下生成验证值τx:
τx=τ2·x2+τ1·x+z3B(y)·τ0 (24)
进一步的,第一设备还可以基于变量值x,挑战数组以及以上计算中使用的各个随机数生成辅助值μ。具体的,可以如下生成辅助值:
μ=α1+w*α2+ρ*x-z2B(y)*r′ (25)
其中,α1,α2是生成基准值数组A1,A2时使用的随机数,ρ是生成盲化值S时使用的随机数,r′是生成字符串v的目标承诺值C过程中使用的随机数(参见公式(1))。
于是在步骤309,第一设备将第二组承诺值提供给验证设备。
在步骤310,验证设备根据第一字符串u以及从目标数据源获得的目标承诺值C,验证示性向量bL,进而验证第一字符串u是否为第二字符串v的子串。需理解,上述验证示性向量bL,即验证示性向量bL的正确性。如前所述,若第一字符串u为第二字符串v的子串,则示性向量满足公式(10)所示的条件组,等价于满足公式(12)。后续的验证过程至少基于公式(12)展开。
在一个实施例中,验证设备还进行以下的第二验证过程。根据前述的基准值数组A1,A2,所述盲化值S,所述挑战数组(w,y,z),前述目标承诺值C以及所述第一字符串u,计算得到第一计算值P。例如,可以如下计算P:
另一方面,根据所述两个验证向量l,r,计算得到第二计算值Q。例如,可以如下计算Q:
Q=hμhl(g′)r (28)
然后验证第一计算值P是否等于第二计算值Q,即验证:
可以证明,如果第一设备按照前述流程,构建基准值数组A1,A2,盲化值S,两个验证向量l,r的话,以上关系式(29)必然是成立。具体的,将公式(1)中的目标承诺值C的形式代入式(27),并将公式(14)(15)中的基准值数组A1,A2和盲化值S代入公式(27),然后分别针对生成元h,生成向量h,g′,验证关系式(29)左右两侧的指数是否相等。
例如,针对生成元h,通过将C展开以及根据第一计算值P的计算过程,可以得到h的指数为α1+w*α2+ρ*x-z2B(y)*r′,而第二计算值Q中生成元的指数为μ;根据关系式(25),两者相等。针对生成向量h,通过第一计算值P的计算过程,可以得到g的指数为bL-z*1n+sL·x;而第二计算值Q中h的指数为l;根据关系式(22),两者相等。针对g′,可以进行类似的验证。
通过对关系式(29)的验证,可以确定第一设备是否按照约定构造了基准值数组,盲化值,和两个验证向量l,r。
在一个实施例中,验证设备还进行以下的第三验证过程。
另一方面,验证设备还可以根据获得的第一承诺值T0,第二承诺值T1,第三承诺值T2,所述变量值x,第一挑战数y,计算得到第四计算值V4。例如,可以如下计算V4:
然后,验证第三计算值V3与第四计算值V4是否相等,即验证:
可以证明,如果示性向量是按照约定规则生成的,则关系式(32)必然成立。
具体的,针对生成元h,通过第四计算值V4的计算过程,可以得到其指数为τ1x+τ2x2+z3·B(y)·τ0。而左侧的第三计算值V3中生成元h的指数为τx。结合公式(24),两者相等。
此外,根据(19)中对结果多项式的定义,结果值必然满足:
并且,根据公式(20)示出的关系,常数项t0的值等于z3·B(y)·<yn,v>+δ(u,w,y,z)因此,可以看到,关系式(32)左右两侧生成元g的指数也相等。
关系式(32)的成立依赖于关系式(20),而关系式(20)是根据关系式(12)得到的,因此,关系式(32)的成立,意味着关系式(12)成立,即意味着示性向量bL满足公式(10)示出的条件组。因此,若在关系式(29)成立的基础上关系式(32)也成立,则可以确定,示性向量是按照预定规则生成的,且满足连续m位为特定值(例如1)的要求,这意味着,第一字符串u是第二字符串v的子字符串。
以上结合示性向量中特定值元素为1描述了整个验证过程;然而,该特定值元素也可以设置为大于1的其他自然数k,此时,只需在对应公式中考虑k这个缩放因子即可。整个验证过程的思想仍然成立。
此外,上述方案还支持第一字符串中包含通配符,例如“*”的情况。在这样的情况下,将示性向量和第一字符串中对应于该通配符的位置均设置为0,则仍然可以适用上述验证过程。
回顾以上过程,第一设备生成且提供给验证设备的信息,从基准值数组A1和A2、盲化值S,到第一组承诺值和第二组承诺值,均不会泄露第二字符串v自身,由此使得,验证设备在不知晓第二字符串v,即全量声明信息明文的情况下,验证第一字符串u对应的声明片段是否属于全量声明信息,实现子串关系的零知识证明。
需要理解,图3示出了子串关系证明的一个完整实施示例,其中,第一设备通过与验证设备交互,获得挑战数组和变量值,并向其提供各个承诺值。在另一实施场景中,还可以通过非交互方式,实现上述证明过程。
具体的,证明各方可以约定一些数据生成器,例如伪随机数发生器,基于哈希函数的生成器,等。使用该约定的生成器,基于相同的数据源,可以生成相同的随机数。如此,在图3的步骤304,第一设备需要获得挑战数组时,第一设备可以根据约定的第一生成器和公开的第一数据源,生成挑战数组(y,w,z)。该公开的第一数据源,可以是双方都可访问的公开数据,也可以是第一设备之前计算的结果。例如,在第一设备计算得到基准值数组和盲化值S后,可以将该这些值作为随机种子,输入伪随机数发生器,得到挑战数组。类似的,在第一设备需要获得变量值x时,它可以根据约定的第二生成器和公开的第二数据源,生成该变量值x。该第二生成器与前述的第一生成器可以是相同的生成器,也可以是不同的生成器,在此不做限定。该第二数据源,可以是公开的数据,也可以是第一设备之前计算的结果,例如第一组承诺值。如此,第一设备可以以非交互的方式,获得挑战数组和变量值x。通过这样的方式,可以降低第一设备和验证向量之间的传输和通信成本,提升证明过程的效率。
根据另一方面的实施例,提供了一种保护数据隐私的数据关系证明的装置,该装置可部署于证明方使用的第一设备中,该第一设备可以体现为任何具有计算、处理能力的计算设备、平台或集群。图4示出根据一个实施例的数据关系证明装置的示意性框图。如图4所示,该装置400包括:
示性向量生成单元41,配置为根据第一长度的第一字符串与第二长度的第二字符串,生成第二长度的示性向量,在所述第一字符串是第二字符串的子串的情况下,所述示性向量通过连续第一长度的第一值元素示出所述子串在所述第二字符串中的位置;所述第二字符串预先使用承诺算法生成目标承诺值存储于公开的目标数据源;
第一获取单元42,配置为获取挑战数组;
第一承诺单元43,配置为根据所述示性向量,所述第一字符串、第二字符串以及所述挑战数组,生成两个向量多项式及其内积产生的结果多项式,并基于所述结果多项式的系数,生成第一组承诺值;
第二获取单元44,配置为获取随机的变量值x;
第二承诺单元45,配置为将所述变量值x代入所述两个向量多项式和结果多项式,得到两个验证向量和结果值,并生成第二组承诺值,其中至少包括所述结果值和所述两个验证向量;
发送单元46,配置为将所述第一组承诺值和第二组承诺值发送给验证设备,以使验证设备根据所述第一字符串以及从所述目标数据源获得的所述目标承诺值,验证所述示性向量,进而验证所述第一字符串是否为第二字符串的子串。
通过以上装置,第一设备可以通过零知识证明的方式,向验证设备证明,本次提供的声明片段字符串是承诺值对应的全量声明字符串的子串,进而证明本次的声明片段属于认证过的全量声明信息,由此实现对承诺后的全量声明信息进行最小化的按需披露。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行图3中第一设备和/或验证设备中执行的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现图3中第一设备和/或验证设备中执行的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (16)
1.一种保护隐私的数据关系证明方法,通过第一设备执行,包括:
根据第一长度的第一字符串与第二长度的第二字符串,生成第二长度的示性向量,在所述第一字符串是第二字符串的子串的情况下,所述示性向量通过连续第一长度的第一值元素示出所述子串在所述第二字符串中的位置;所述第二字符串预先使用承诺算法生成目标承诺值存储于公开的目标数据源;
获取挑战数组;
根据所述示性向量,所述第一字符串、第二字符串以及所述挑战数组,生成两个向量多项式及其内积产生的结果多项式,并基于所述结果多项式的系数,生成第一组承诺值;
获取随机的变量值x;
将所述变量值x代入所述两个向量多项式和结果多项式,得到两个验证向量和结果值,并生成第二组承诺值,其中至少包括所述结果值和所述两个验证向量;
所述第一组承诺值和第二组承诺值被发送给验证设备,以使验证设备根据所述第一字符串以及从所述目标数据源获得的所述目标承诺值,验证所述示性向量,进而验证所述第一字符串是否为第二字符串的子串。
2.根据权利要求1所述的方法,其中,
获取挑战数组包括,从所述验证设备接收其生成的挑战数组;
获取随机的变量值x包括,从所述验证设备接收其生成的变量值x。
3.根据权利要求1所述的方法,其中,
获取挑战数组包括,根据约定的第一生成器和公开的第一数据源,生成所述挑战数组;
获取随机的变量值x包括,根据约定的第二生成器和公开的第二数据源,生成所述变量值x。
4.根据权利要求1所述的方法,其中,所述目标数据源为区块链。
5.根据权利要求1所述的方法,其中,所述第二字符串包括,用户全量身份证明信息,所述第一字符串为,用户部分身份证明信息。
6.根据权利要求1所述的方法,其中,所述两个向量多项式分别基于第一基础向量和第二基础向量而生成;其中,所述第一基础向量和第二基础向量的内积结果,等于第一运算值和第二运算值δ之和,其中,第一运算值依赖于所述第二字符串,第二运算值仅依赖于所述挑战数组和所述第一字符串。
7.根据权利要求6所述的方法,还包括:
生成与所述示性向量具有预定关系的辅助向量;
生成用于混淆所述示性向量和辅助向量的第一和第二盲化向量;
根据所述示性向量、辅助向量生成基准值数组,根据所述第一和第二盲化向量,生成盲化值S。
8.根据权利要求7所述的方法,其中,所述生成两个向量多项式,包括:
基于所述第一基础向量引入第一盲化向量和变量,得到第一向量多项式;
基于所述第二基础向量引入第二盲化向量和变量,得到第二向量多项式。
9.根据权利要求8所述的方法,其中,验证所述示性向量,包括:
根据所述基准值数组,所述盲化值S,所述挑战数组,所述目标承诺值以及所述第一字符串,计算得到第一计算值;
根据所述两个验证向量,计算得到第二计算值;
验证第一计算值是否等于第二计算值。
10.根据权利要求6所述的方法,其中,所述挑战数组包括第一挑战数y;生成第一组承诺值,包括:
根据所述第一挑战数y和第二字符串,以及本地生成的第一随机数,生成第一承诺值T0;
根据所述结果多项式的一次项系数,本地生成的第二随机数,生成第二承诺值T1;
根据所述结果多项式的二次项系数,本地生成的第三随机数,生成第三承诺值T2。
11.根据权利要求10所述的方法,其中,生成第二组承诺值,包括:
根据所述第一随机数、第二随机数、第三随机数、所述变量值x以及所述第一挑战数y,生成验证值τx;
确定第二组承诺值,其中至少包括所述验证值τx,所述结果值,所述两个验证向量。
12.根据权利要求11所述的方法,其中,验证所述示性向量,包括:
根据所述验证值τx,所述结果值,所述第二运算值δ,计算得到第三计算值;
根据所述第一承诺值T0,第二承诺值T1,第三承诺值T2,所述变量值x,所述第一挑战数y,计算得到第四计算值;
验证所述第三计算值和第四计算值是否相等。
13.根据权利要求1所述的方法,其中,所述第一字符串中包含通配符。
14.一种保护隐私的数据关系证明的装置,部署在第一设备中,包括:
示性向量生成单元,配置为根据第一长度的第一字符串与第二长度的第二字符串,生成第二长度的示性向量,在所述第一字符串是第二字符串的子串的情况下,所述示性向量通过连续第一长度的第一值元素示出所述子串在所述第二字符串中的位置;所述第二字符串预先使用承诺算法生成目标承诺值存储于公开的目标数据源;
第一获取单元,配置为获取挑战数组;
第一承诺单元,配置为根据所述示性向量,所述第一字符串、第二字符串以及所述挑战数组,生成两个向量多项式及其内积产生的结果多项式,并基于所述结果多项式的系数,生成第一组承诺值;
第二获取单元,配置为获取随机的变量值x;
第二承诺单元,配置为将所述变量值x代入所述两个向量多项式和结果多项式,得到两个验证向量和结果值,并生成第二组承诺值,其中至少包括所述结果值和所述两个验证向量;
发送单元,配置为将所述第一组承诺值和第二组承诺值发送给验证设备,以使验证设备根据所述第一字符串以及从所述目标数据源获得的所述目标承诺值,验证所述示性向量,进而验证所述第一字符串是否为第二字符串的子串。
15.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算设备中执行时,计算设备执行权利要求1-13中任一项所述的方法。
16.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210536833.4A CN114978538B (zh) | 2022-05-17 | 2022-05-17 | 保护隐私的数据关系证明方法、装置、介质和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210536833.4A CN114978538B (zh) | 2022-05-17 | 2022-05-17 | 保护隐私的数据关系证明方法、装置、介质和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114978538A true CN114978538A (zh) | 2022-08-30 |
CN114978538B CN114978538B (zh) | 2023-11-14 |
Family
ID=82983997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210536833.4A Active CN114978538B (zh) | 2022-05-17 | 2022-05-17 | 保护隐私的数据关系证明方法、装置、介质和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114978538B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117278213A (zh) * | 2023-10-31 | 2023-12-22 | 杭州趣链科技有限公司 | 基于多项式承诺的方法、电子设备及可读存储介质 |
WO2024114477A1 (zh) * | 2022-12-01 | 2024-06-06 | 中国科学院深圳先进技术研究院 | 一种基于零知识证明的数据分享方法及终端设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111342962A (zh) * | 2020-04-01 | 2020-06-26 | 支付宝(杭州)信息技术有限公司 | 一种验证密文消息范围的方法和系统 |
CN111885079A (zh) * | 2020-07-31 | 2020-11-03 | 支付宝(杭州)信息技术有限公司 | 保护数据隐私的多方联合处理数据的方法及装置 |
CN112769548A (zh) * | 2019-11-05 | 2021-05-07 | 深圳市网心科技有限公司 | 一种区块链数值信息传输方法、系统、装置及计算机介质 |
CN113094633A (zh) * | 2021-04-21 | 2021-07-09 | 大连理工大学 | 一种基于标量等式内积的高效范围证明方法 |
US20210234840A1 (en) * | 2021-04-09 | 2021-07-29 | Polymath Inc. | Method and system for private identity verification |
-
2022
- 2022-05-17 CN CN202210536833.4A patent/CN114978538B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112769548A (zh) * | 2019-11-05 | 2021-05-07 | 深圳市网心科技有限公司 | 一种区块链数值信息传输方法、系统、装置及计算机介质 |
CN111342962A (zh) * | 2020-04-01 | 2020-06-26 | 支付宝(杭州)信息技术有限公司 | 一种验证密文消息范围的方法和系统 |
CN111885079A (zh) * | 2020-07-31 | 2020-11-03 | 支付宝(杭州)信息技术有限公司 | 保护数据隐私的多方联合处理数据的方法及装置 |
US20210234840A1 (en) * | 2021-04-09 | 2021-07-29 | Polymath Inc. | Method and system for private identity verification |
CN113094633A (zh) * | 2021-04-21 | 2021-07-09 | 大连理工大学 | 一种基于标量等式内积的高效范围证明方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024114477A1 (zh) * | 2022-12-01 | 2024-06-06 | 中国科学院深圳先进技术研究院 | 一种基于零知识证明的数据分享方法及终端设备 |
CN117278213A (zh) * | 2023-10-31 | 2023-12-22 | 杭州趣链科技有限公司 | 基于多项式承诺的方法、电子设备及可读存储介质 |
CN117278213B (zh) * | 2023-10-31 | 2024-02-09 | 杭州趣链科技有限公司 | 基于多项式承诺的方法、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114978538B (zh) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
De Feo et al. | SeaSign: compact isogeny signatures from class group actions | |
US8948388B2 (en) | Elliptic curve random number generation | |
JP2020502864A5 (zh) | ||
JP6016948B2 (ja) | 秘匿計算システム、演算装置、秘匿計算方法、およびプログラム | |
JP2020502856A5 (zh) | ||
Yu et al. | Remote data possession checking with enhanced security for cloud storage | |
US10270588B2 (en) | Method and system for additive homomorphic encryption scheme with operation error detection functionality | |
CN114978538A (zh) | 保护隐私的数据关系证明方法和系统 | |
JP2010072664A (ja) | 物理的解析によってコンピュータシステムを攻撃から保護する秘密鍵暗号化方法 | |
JP2002251136A (ja) | 分散ディジタル署名作成方法及び装置及び分散ディジタル署名付ディジタル文書作成方法及び装置及び分散ディジタル署名作成プログラム及び分散ディジタル署名作成プログラムを格納した記憶媒体 | |
JP2020520614A (ja) | サイドチャネル攻撃に安全な演算を実行するための装置および方法 | |
Yang et al. | A compressive integrity auditing protocol for secure cloud storage | |
CN111512590A (zh) | 用于密码认证的同态加密 | |
CN114092242A (zh) | 基于范围证明实现隐私交易的方法和系统 | |
WO2021222272A1 (en) | Adaptive attack resistant distributed symmetric encryption | |
EP2991265B1 (en) | Encrypted text matching system, method and program | |
JP5972181B2 (ja) | 改ざん検知装置、改ざん検知方法、およびプログラム | |
Hwang et al. | Balancing security and privacy in genomic range queries | |
WO2018216512A1 (ja) | 秘密改ざん検知システム、秘密改ざん検知装置、秘密改ざん検知方法、およびプログラム | |
Kuznetsov et al. | Merkle Trees in Blockchain: A Study of Collision Probability and Security Implications | |
CN114026586A (zh) | 用于授予对加密资产的访问权的零知识或有支付协议 | |
Ramaiah et al. | Complete privacy preserving auditing for data integrity in cloud computing | |
CN116722972A (zh) | 基于属性隐藏和匹配的属性隐私保护方法、设备和介质 | |
Arkin et al. | Ciphertext-policy attribute based encryption with selectively-hidden access policy | |
Gan et al. | A performance comparison of post-quantum algorithms in blockchain |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |