[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN110637441A - 应用于数据重复数据删除的加密密钥生成 - Google Patents

应用于数据重复数据删除的加密密钥生成 Download PDF

Info

Publication number
CN110637441A
CN110637441A CN201880033117.6A CN201880033117A CN110637441A CN 110637441 A CN110637441 A CN 110637441A CN 201880033117 A CN201880033117 A CN 201880033117A CN 110637441 A CN110637441 A CN 110637441A
Authority
CN
China
Prior art keywords
commitment
key
proof
server
client computer
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
Application number
CN201880033117.6A
Other languages
English (en)
Other versions
CN110637441B (zh
Inventor
A.德卡罗
E.戈什
A.索尼奥蒂
J.卡梅尼施
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN110637441A publication Critical patent/CN110637441A/zh
Application granted granted Critical
Publication of CN110637441B publication Critical patent/CN110637441B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3218Cryptographic 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
    • H04L9/3221Cryptographic 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 interactive zero-knowledge proofs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3271Cryptographic 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 challenge-response
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

密钥的生成是确定性地从客户端数据导出的,客户端计算机证明该客户端数据的知识以便获得密钥。一种客户端计算机提供客户端数据并且适于定义具有多个数据块的向量,所述多个数据块具有索引,并与客户端数据相对应。所述客户端计算机还适于生成对所述向量的第一非隐藏向量承诺和第二隐藏向量承诺,并且生成对所述第一承诺的第三承诺。客户端计算机将第二和第三承诺发送到密钥服务器,并且针对索引的子集,向密钥服务器提供第二和第三承诺中的向量的对应数据块的第一知识证明。密钥服务器存储秘密服务器密钥,并且适于以密钥生成协议与客户端计算机接合。

Description

应用于数据重复数据删除的加密密钥生成
背景技术
本发明一般涉及加密密钥的生成,更具体地,涉及确定性地从使用密钥的计算机保存的数据导出的密钥生成。本发明的实施例可以应用于重复数据删除系统。
发明内容
根据本发明的至少一个实施例,提供了一种系统,包括客户端计算机和适于经由网络进行通信的密钥服务器。客户端计算机提供客户端数据并适于定义向量x,向量x具有索引i=1到n的n个数据块xi,对应于客户端数据。客户端计算机还适于生成对向量x的第一承诺和生成对向量x的第二承诺,该第一承诺为非隐藏向量承诺,该第二承诺为隐藏向量承诺,并生成对向量x的第三承诺。客户端计算机将第二和第三承诺发送给密钥服务器,并且向密钥服务器提供第二和第三承诺中的向量x的对应数据块xi的索引i的子集的第一知识证明。密钥服务器存储秘密服务器密钥k,并且响应于第一证明证明的验证,适于以密钥生成协议与客户端计算机进行交互。在该协议中,客户端计算机适于向密钥服务器发送第一承诺的盲函数,并向密钥服务器提供第二承诺的第二证明,该第一承诺在该盲法函数和第三承诺中。响应于第二证明证明的验证,密钥服务器适于从上述盲法函数生成包括第一承诺和服务器密钥k的盲函数的盲密钥K',并发送盲密钥K'到客户端计算机。客户端计算机还适于解盲盲密钥K'以获得包括第一承诺和服务器密钥k的确定性函数的客户密钥K。
附图说明
图1是根据本发明的一个实施例的系统框图;
图2是根据本发明的一个实施例的用于生成客户端密钥的操作步骤的流程图;
图3是示出根据一个实施例的用于存储客户端数据的操作步骤的流程图;
图4A和4B是说明根据本发明另一个实施例的用于生成客户端密钥的操作步骤的流程图;
图5是根据本发明的一个实施例的图1的计算机系统的内部和外部组件的框图;
图6是根据本发明一个实施例的云计算环境的框图;和
图7是根据本发明的一个实施例的抽象模型层的框图。
具体实施方式
生成加密密钥作为在计算机处提供的数据的确定性函数是安全重复数据删除系统的基础。重复数据删除是一种用于通过确保存储系统仅存储特定数据项的一个副本(例如文件)来降低存储要求的过程。如果请求存储先前存储的文件的第二副本,则存储服务器通常通过将文件的散列与服务器已存储的文件的散列进行比较来检测。如果检测到匹配,则不存储新文件,并且服务器仅存储指向先前存储的匹配文件的指针。
在客户端计算机将数据发送到其信任域之外的存储服务器(例如,基于云的存储提供商)的情况下,安全性要求数据在被发送用于存储之前被加密。为了允许重复数据删除,加密过程可以是确定性的(即,相同的数据加密到相同的密文),以便可以检测匹配。此外,要求使用相同的加密密钥对相同的数据进行加密。对于有效的跨用户重复数据删除,存储服务器对不同客户端计算机发送的数据执行重复数据删除,所有客户端计算机可能能够派生相同的密钥来加密同一文件。
通常,用于密钥导出的方案可以仅取决于客户端数据的公共散列而不取决于数据本身。因此,恶意方可以通过仅知道文件的散列来获得文件的加密密钥。因此,任何部署此类方案的系统在实际安全模型中都是不安全的:由于存储服务器或恶意存储提供商本身的任何损害而获取文件密码的攻击者可能会使用密钥对其进行解密。
附图中的流程图和框图示出了根据本发明的各种实施例的系统,方法和计算机程序产品的可能实现的体系结构,功能和操作。在这方面,流程图或框图中的每个框可以表示模块,段或指令的一部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中提到的功能可以不按图中所示的顺序发生。例如,连续示出的两个方框实际上可以基本上同时执行,或者这些方框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图说明中的每个框以及框图和/或流程图说明中的框的组合可以通过执行特定功能或操作或完成或执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现该功能。
图1是根据本发明实施例的系统100的框图。系统100包括多个客户端计算机102,密钥服务器103和存储服务器104。客户端计算机102可以适于经由网络105与密钥服务器103和存储服务器104通信,其中网络105可以包括一个或多个组件网络和/或包括互联网在内的互联网络。在系统100的操作中,客户端计算机102经由网络105发送客户端数据(例如,数据文件)以供存储服务器104存储。存储服务器104可能在客户端计算机102的信任域之外,使得所有文件在传输到存储服务器104之前由客户端加密。存储服务器104可以将从客户端计算机102接收的加密文件存储在存储器中,由数据库106表示,可操作地耦合到存储服务器104。存储服务器104对存储在数据库106中的加密文件执行重复数据删除。例如,重复数据删除的粒度可以是整个加密文件。因此,存储服务器104可以将任何给定加密文件的一个副本存储在数据库106中。存储服务器104可以检测是否从客户端计算机102之一接收到先前存储的加密文件的第二副本,如下面更详细描述的。存储服务器104可以不再次存储加密文件,而是可以将指向相同的先前存储的文件的指针发送到所讨论的客户端计算机102之一。
客户端计算机102中的每一个可以使用由K表示的用于该文件的客户端密钥来加密文件以进行存储。为了允许跨客户端计算机102进行文件的重复数据删除,相同的客户端文件可以加密到相同的密文,并且可以使用相同的加密密钥加密。因此,如果不同的客户端计算机102加密相同的文件,则每个客户端计算机102可以使用相同的客户端密钥用于该文件。客户端计算机102通过与密钥服务器103的交互来获得客户端密钥K。密钥服务器103可以存储对密钥服务器103是秘密的密码密钥k。为了获得客户端密钥K,客户端计算机102可以参与和密钥服务器103的密码协议,其中客户端计算机102之一获得密钥K,密钥K是服务器密钥k和要加密的客户端文件的确定性功能。该协议可能要求客户端计算机102证明客户端文件的知识以便获得密钥K。因此,客户端密钥可以仅由拥有客户端文件本身而不是文件的短散列的客户端计算机102之一获,。密钥服务器103可以不受客户端计算机102的信任,使得可以在没有密钥服务器103学习客户端文件和/或得到客户端密钥K的情况下执行协议。
密钥服务器103可以由由向客户端计算机102(例如,云服务提供商)提供密钥生成服务的实体操作的计算机来实现。存储服务器104可以类似地由存储服务提供商(例如,云存储提供商)操作的计算机实现。数据库106可以包括任何数据存储装置,包括一个或多个数据存储介质,并且可以由云存储环境中的分布式存储装置实现。典型的存储装置可以包括磁盘存储装置,该磁盘存储装置包括一个或多个磁盘,例如磁盘或光盘,它们可以在计算机内部(例如,在硬盘驱动器中),或者由外部可访问的磁盘装置提供(例如,在磁盘驱动器阵列中,例如独立磁盘的冗余阵列)。
客户端计算机102可以由例如台式计算机,膝上型计算机,平板电脑,笔记本电脑,掌上电脑,移动电话,PDA(个人数字助理),个人音乐播放器等用户计算机实现,或者使用远程存储器存储数据的任何其他计算机。
通常,系统100的客户端计算机102,密钥服务器103,存储服务器104可以由一个或多个通用或专用计算机实现,其可以包括一个或多个真实和/或虚拟机,提供用于实现这里描述的操作。该功能可以由以硬件或软件或其组合实现的逻辑提供。可以在由计算机设备执行的计算机系统可执行指令,例如程序模块,的一般上下文中描述这种逻辑。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程,程序,对象,组件,逻辑,数据结构等。计算设备可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,数据和程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
图2是根据本发明的实施例的用于生成客户端密钥的操作步骤的流程图。当客户端计算机102发送客户端文件F用于存储时,客户端计算机102首先联系密钥服务器103以获得该文件的客户端密钥K。在步骤30中,客户端计算机102定义向量x,其具有索引i=1到n的n个数据块xi,对应于其文件F。在步骤30中,客户端计算机102可以将文件F划分为n个具有任意长度的数据块x1,x2,...xn,或者可以编码文件F,如下面更详细描述的,然后将得到的编码文件分成n个块xi。在步骤31中,客户端计算机102生成对向量x的第一加密承诺。由c1表示的该第一承诺是非隐藏向量承诺(NHVC),如下面更详细描述的。在步骤32中,客户端计算机102还可以生成对向量x的第二加密承诺。由c2表示的第二承诺是隐藏向量承诺(HVC),如下面更详细描述的。另外,在步骤33中,客户端计算机102生成对第一承诺c1的由c3表示第三承诺。第三承诺c3是“正常”加密承诺(即具有加密承诺的通常隐藏和绑定属性),如下面更详细描述的。客户端计算机102将第二和第三承诺c2和c3发送到密钥服务器103,如步骤34所示。此外,在步骤35中,客户端计算机102向密钥服务器103提供第一密码证明(PoK),由∏1表示,这证明了客户计算机102对于第二和第三承诺c2和c3中的向量x的对应数据块x的索引i的子集的知识。该第一证明∏1可以在不同阶段实现,如下面例示的。在其他实施例中,可以由客户端计算机102选择进行证明∏1的索引i的子集。在一个实施例中,可以由密钥服务器103随机选择该子集以增强安全性。可以根据需要调整,修改和/或调整子集的大小,如下面更详细描述的。
在步骤36中,密钥服务器103在继续进行之前验证关于c2和c3的第一证明∏1。如果证明无效(“N”分支,判定块37),则密钥服务器103在步骤38中止协议,并且操作终止。因此,密钥服务器103可以向客户端计算机102发送指示验证失败的适当消息。在成功验证П1(“Y”分支,判定块37)之后,密钥服务器103前进到步骤39,在这里启动密钥生成协议。密钥服务器103可以与客户端计算机102通信以在该步骤中发起协议,并且可以发送密钥生成过程所需的数据,如下面更详细地描述的。
假设启动密钥生成协议,在步骤40中,客户端计算机102生成第一承诺c1的由B表示的盲函数。客户端计算机102在步骤41中将盲函数B发送到密钥服务器103,并且在步骤42中,客户端计算机102向密钥服务器103提供由∏2表示的第二密码学知识证明。第二证明∏2证明客户计算机102关于在步骤34中发送的盲函数B和第三承诺c3中的第一承诺c1的知识。密钥服务器103在步骤43中验证关于B和c3的第二证明∏2。如果验证失败(“N”分支,判定块44),那么操作返回到步骤38,在这里协议被中止并且操作终止。响应于∏2(“Y”分支,判定框44)的验证,操作前进到步骤45,在这里密钥服务器103从在步骤41中接收的盲函数B生成盲密钥K′。该盲密钥K′包括第一承诺c1和秘密服务器密钥k的盲函数。密钥服务器103然后在步骤46中将盲密钥K′发送到客户端计算机102。在接收时,客户端计算机102对盲密钥K′的揭盲以获得最终客户密钥K。
由于前述协议的操作,得到的客户密钥K是第一承诺c1和秘密服务器密钥k的确定性函数。由于第一承诺是对向量x的非隐藏向量承诺,因此客户密钥K是向量x和服务器密钥k的确定性函数。然而,虽然c1是非隐藏的,但是密钥服务器103仅接收该承诺的盲函数B并不学习c1本身(这将揭示关于客户端文件F的信息)。因此,客户端密钥K可以通过密钥服务器103明显地生成,而密钥服务器103不学习客户端文件F或最终客户端密钥K,其仅在客户端计算机102下揭盲之后获得。此外,客户端计算机102可以仅证明该密钥所基于的实际文件F的数据块xi的知识之后获取客户端密钥。承诺和知识证明的特定组合确保客户密钥K只能为与已证明其数据块知识的相同的文件F生成。特别地,第二隐藏向量承诺c2允许生成证明文件块xi的知识而不向密钥服务器103揭示该文件块,并且第一证明∏1证明相同的向量x是该第二承诺c2和第三承诺c3的基础。该第三承诺c3对第一承诺c1承诺,其又提供(当在功能B中变盲时)客户输入到步骤39至47的密钥生成协议。第二证明∏2然后证明第三承诺c3是从与密钥生成协议中的盲函数B相同的值(c1)计算来的。因此,第三承诺c3用于链接协议的两个部分(即,文件块和密钥生成的知识证明),而整个承诺和证明集允许密钥服务器103在不知不觉中执行协议的每个部分。
图3是根据一个实施例的用于存储客户端数据的操作步骤的流程图。在步骤50中,客户计算机102通过图2的过程获得其文件F的客户密钥K。在步骤51,客户计算机102使用客户密钥K通过对称加密方案加密文件F,以产生密文(即,加密文件)CF。在步骤52中,客户端计算机102然后经由网络105将密文CF发送到存储服务器104。在步骤53中,存储服务器104将散列函数H应用于密文CF以获得散列值H(CF)。为了允许重复数据删除,存储服务器104维护一个散列表,该散列表为存储在数据库106的每个加密文件CF指示该文件的散列值H(CF)和在数据库106中的文件位置。在另一实施例中,存储服务器104还可以存储附加数据(例如,诸如文件lD,客户端lD等的lD数据),用于存储文件以及访问控制可能需要的任何其他数据。在步骤54中,存储服务器104将在步骤53中获得的散列值与表中的所有散列值进行比较,以确定是否存在匹配。如果未找到匹配(“N”分支,判定块55),则在步骤56中,存储服务器104将接收到的密文CF存储在数据库106中。在步骤57中,存储服务器104用新的散列值H(CF)和CF的存储位置更新散列表。在步骤58,存储服务器104然后向客户端计算机102发送到其存储的文件CF的链接,并且操作完成。返回到判定块55,如果找到匹配(“Y”分支,判定块55),则相同的加密文件CF已经存储在数据库106中。此外,在步骤59中,存储服务器104向客户端计算机102发送链接到数据库106中先前存储的相同文件的地址,并且不需要再次存储CF。
客户端计算机102中的每一个存储用于文件的客户端密钥K,以便当随后通过访问上面步骤58或59中提供的链接从存储服务器104检索时能够解密相应的密文。客户端密钥K可以存储在客户端计算机102处,或者可以以加密的形式存储在远程位置(例如,在存储服务器104处),并且在客户端计算机102需要时检索。通常,由于每个客户端密钥K是密钥服务器103密钥k和在该客户密钥下加密的文件F的确定性功能,所有客户端计算机102可以获得相同文件的相同客户密钥,并且将获得相同文件的相同密文CF,从而允许在存储服务器104进行重复数据删除并且由一个客户端计算机解密由另一个客户端计算机102存储的相同文件。然而,由于可以证明拥有文件本身而不仅仅是短散列来获得客户端密钥,因此存储服务器104可能不会通过作为具有密钥服务器103的客户端来获得客户端密钥。
在另一实施例中,可以在客户端计算机102处计算加密文件的散列值H(CF),并在步骤52中将其而不是密文CF发送到存储服务器104。在该实施例中,省略步骤53。如果在步骤55中没有识别出匹配的预先存储的文件,则存储服务器104在步骤56中从客户端计算机102请求加密文件CF以进行存储。因此,这里,将加密文件CF发送到存储服务器的步骤是取决于在步骤55没有找到匹配,并且只有加密给定文件F的第一客户端计算机102将需要将CF发送到存储服务器104。
图4A和4B示出根据本发明另一实施例的用于生成客户端密钥的操作步骤的流程图。图4A的步骤60至63对应于图2的步骤30至33。在步骤64,客户端计算机102生成由∏s1表示的第一子证明,证明客户计算机102具有第三承诺c3中的第一承诺c1的知识。在步骤65中,客户端计算机102生成由∏s2表示的第二子证明,证明第二和第三承诺c2和c3是从公共值计算的。两个承诺可以从相同的向量x导出,尽管这里的公共值可以是x的函数,如下面例示的。在步骤66中,客户端计算机102将第一和第二子证明∏s1,∏s2以及第二和第三承诺c2和c3发送到密钥服务器103。在步骤67中,密钥服务器103验证与c2和c3有关的子证明∏∏s1,∏s2。如果验证失败(在判定框68处为“否”),则密钥服务器103在步骤69中中止协议并且操作终止。如果成功验证(在判定框68处为“是”),在步骤70中,密钥服务器103选择位置索引i=1到n的子集I={j1,...jt},其中子集I中的索引的数量t可以基于安全性和效率限制根据需要选择。密钥服务器103在步骤71中将所选择的子集I发送到客户端计算机102。在接收子集I时,在步骤72中,客户端计算机102生成第三子证明,由∏s3表示。该子证明∏s3证明了对于子集I中的每个位置索引i在第二承诺c2中向量x的位置i处的数据块xi的知识。客户端计算机102在步骤73中将第三子证明∏s3发送到密钥服务器103。密钥服务器103在步骤74中验证与c2有关的子证明∏s3
因此,在该实施例中,图2中的第一知识证明∏1由三个子证明∏s1到∏s3实现,并且密钥服务器103对第三个子证明∏s3的验证完成了对证明f∏1的验证。实际上,第一子证明∏s1证明了c3的内容的知识,第二个子证明∏s2链接了c2和c3的内容,并且第三子证明∏s3证明了在c2(以及因此c3)之下的向量x中的文件块的知识(因此c3通过较早的子证明),从而完成证明∏1。这里的三个子证明提供了对将为其生成客户密钥的文件的所需知识证明的有效实现,而不向密钥服务器103揭示关于文件本身的任何信息。如果∏s3的验证失败(在判定框75处为“否”),密钥服务器103中止并且操作终止。如果验证成功(在判定框75处为“是”),则密钥服务器103进行到图4A的密钥生成协议。
在图4B的步骤80中,密钥服务器103通过同态加密方案HES在该方案的公钥/私钥对(epk,esk)的公钥epk下对其密钥k进行加密。通常,同态加密方案具有同态属性,从而存在在密文HES.Encepk(m)上对公钥epk下的消息m进行加密的有效操作⊙,使得如果C1∈HES.Encepk(m1)和C2∈HES.Encepk(m2),那么C1⊙C2∈HES.Encepk(m1·m2)用于组操作“·”。在步骤81,密钥服务器103将结果加密密钥[k]=HES.Encepk(k)送到客户计算机102。在步骤82,客户计算机102通过加密方案HES在公钥epk下加密第一承诺c1以产生加密承诺[c1]=HES.Encepk(c1)。在另一个实施例中,公钥epk通常可以由密钥服务器103发布并且可供所有客户端计算机102使用。然而,为了增强优选实施例中的安全性,密钥对(epk,esk)是由密钥服务器在步骤80新生成的,并且在步骤81中将公钥epk发送到客户计算机102。在步骤83,客户端计算机102通过使用随机数N盲化[k]和[c1]的函数来产生第一承诺c1的盲函数B。在步骤84,客户端计算机102计算第二知识证明∏2,其证明在图4A的步骤66中发送的盲函数B和第三承诺c3中的第一承诺c1的知识。在步骤85,客户计算机102将B和∏2发送到密钥服务器103。在步骤86,密钥服务器103验证与B和c3相关的第二证明∏2。如果在判定块87验证失败,则密钥服务器103在步骤88中止,并且操作终止。如果∏2的验证成功,则在步骤89中,密钥服务器103使用对应于公钥epk的私钥(秘密密钥)esk,通过解密方案HES的解密算法HES.Dec来解密盲函数B,获得解密值y=HES.Decesk(B)。在步骤90中,密钥服务器103从解密值V生成隐蔽密钥K′。由于加密方案的同态属性,所得到的隐蔽密钥K′包括c1的盲函数(用随机数N盲化)和在步骤83中经由盲函数B引入的服务器密钥K。下面更详细地说明这一点,其中盲密钥K′包括c1和k的盲法伪随机函数(PRF)。在步骤91,密钥服务器103将盲密钥K′发送到客户计算机102。最后,在步骤92,客户计算机102通过使用随机数N揭盲盲密钥K′来获得客户密钥K。因此,作为服务器密钥K和承诺c1(并且因此其知识已被证明)的确定性函数,有效地导出所得到的客户端密钥,而无需密钥服务器学习关于向量x或最终客户端密钥K的任何信息。
以下详细描述上述方案的示例性实施方式和初步概念的介绍。
证明系统(PoK):
PoK{(w):statement(w)}表示证人w的知识的通用交互式零知识证明协议,使得statement(w)为真。PoK系统实现完整性,零知识和模拟声音的可提取性。PoK系统可能包含两个协议PK.Setup和PK.Prove。在输入安全参数1λ时,PK.Setup1λ)输出(parPK)。Prove(parPK,·)是证明者和statement(w)为真的验证者之间的交互协议。证明者持有的额外输入是该声明(statement)的证人W。
对于PoK的具体实现(即广义Schnorr签名证明,参见“关于广义Schnorr证明的可移植性”,Camenisch等,EUROCRYPT 2009,LNCS第5479卷,425-442页,2009年4月),使用符号,例如如“大群体的高效群签名方案”所述(扩展摘要),Camenisch&Stadler,CRYPTO′97,LNCS第1294卷,第410-424页,1997年8月。
承诺计划(CS):
可以实例化具有佩德森(Pedersen)承诺的CS,其满足正确性,隐藏和绑定属性。此外,佩德森的承诺是同态的。承诺方案可以在复合订单组中实例化,以与将要使用的其他原语兼容。
CS.Setup(1λ):设置算法选择两个λ比特安全素数p,q使得gcd(p-1,q-1,7)=1,设置N=pq并将消息空间和随机性空间分别设置为:然后,算法选择素数ρ,使得ρ=2kN+1,其中k是小素数。令G=<G>=<H>为组的N阶(order-N)子组,其中G和H是G的两个随机生成器,使得lognG是未知的。注意,G是N阶的循环子组,并且所有操作都将发生modρ(即,指数中的约化mod N)。最后,算法输出公共参数
CS.Commit(par,m,r):计算(Compute)com←GmHr modρ.输出(Output)(com,open=r).
CS.Verify(par,com,m,open):如果com←GmHopen modρ,则输出1,否则输出0。
伪随机函数(PRF):
可以使用PRF方案,如“具有自适应OT和集合交集安全计算应用的高效遗忘伪随机函数”(Jarecki&Liu,TCC2009,LNCS的卷5444,577-594页,2009年3月)和“DéiàQ:使用双重系统重新审视q型假设”(Chase&Meiklejohn,EURO-CRYPT2014,LNCS第8441卷,第622-639页,2014年5月)所描述的,这是Dodis-Yampolskiy的PRF计划的变体(“具有短证明和密钥的可证实的随机函数”(PKC 2005,LNCS第3386卷,第416-431页,2005年1月),基于Boneh-Boyen不可预测的函数(“没有随机神谕的短签名”,EUROCRYPT 2004,LNCS的第3027卷,第56-73页,2004年5月),在复合订单组而不是主要订单组上实例化。事实证明,这种PRF对于仅基于子组隐藏的任意大小的域是安全的。用素数阶分组实例化的原始PRF的证明仅允许在安全参数中多项式大小(polynomially-sized)的域。在该实施例中,任意大小的域是为了不允许诚实但好奇(honest-but-curious)的密钥服务器进行离线强力(brute-force)攻击。参见下面的PRF定义。
PRF.Setup(1λ):在输入安全参数λ,时,设置算法选择两个λ比特安全素数p,q并设置N=pq,然后生成组其中是G的子组。在一个实施例中,组G的候选可以是没有有效配对的复合阶(composite-order)椭圆曲线组或复合阶双线性组的目标组。最后,设置算法选择并设置并输出
PRF.KeyGen(1λ,par):在输入安全参数和公共参数λ,par,时,密钥生成算法选择k←K并输出k。
PRF.Evaluate(par,k,m):在输入公共参数par,keyk∈K和输入m∈D时,评估算法执行以下操作:如果gcd((k+m),N)≠1则输出⊥(其中⊥表示错误符号),否则输出
同态加密方案(HES):
客观式Paillier加密方案在“可组合承诺和零知识证明的有效构造”(Dodis等人,CRYPTO2008,LNCS第5157卷,第515-535页,2008年8月)和“离散对数的实用可验证加密和解密”(Camenisch&Shoup,CRYPTO 2003,LNCS第2729卷,第126-144页,2003年8月)中提出。该方案保留了Paillier加密的同态属性,但具有一组密集的公钥。
HES.Setup(1λ):在输入安全参数λ时,设置算法选择两个λ比特安全素数p,q并设置N=pq。(这样的N可以以分布式方式生成,如“用于生成共享安全素数产品的共享秘密的有效计算模式”,Algesheimer等人,CRYPTO 2002,LNCS第2442卷,第417-432页,2002年8月)中所述。然后它生成一个随机元素并设置N阶的特殊元素。最后,算法输出par:=(N,g,h)。
HES.KeyGen(par):在输入公共参数par时,密钥生成算法选择随机t∈[N/4]并计算epk←gtmod mod N2。最后,算法输出(epk,esk:=t)。
HES.Enc(epk,m):在输入公钥epk和消息m时,加密算法选择随机r∈[N/4]并计算u←grmod N2;v←epkrhmmod N2。最后,算法输出密文ct:=(u,v)。在一些实施例中,[m]用于表示m的加密。
HES.Dec(esk,ct):在输入密钥esk和密文ct时,解密算法计算m′←v/ueskmod N2。如果对于某些n∈[N],m′的形式为(1+Nm mod N2),则输出m。否则输出⊥。
抗冲突散列函数(CRHF):
如果没有有效的算法可以在输入上发现随机两个不同的输入x≠y,使得H(x)=H(y)(除了在安全参数中可忽略不计的概率之外),则函数的族是抗冲突的。如在″二元多项式模复合及其应用″(Boneh&Corrigan-Gibbs、ASIACRYPT2014、部分I、LNCS的卷8873、第42-62页、December2014)中所描述的,可以实现CRHF。
Merkle散列树(MHT):
Merkle散列树(参见“经认证的数字签名”,Merkle,CRYPTO′89,LNCS第435卷,第218-238页,1990年8月)提供了对矢量的简洁承诺,以便以后可以打开并验证矢量中的各个值而不打开整个矢量。给定向量x=(x1,...,xn),在其上构造MHT如下:成对地对值进行分组,然后使用CRHF来散列每对。然后,散列值再次成对分组,并且每个对被进一步散列,并且重复该过程直到仅剩下单个散列值。这导致了具有对应于向量的块的叶子和对应于最后剩余散列值的根的二叉树。根用作对x的承诺,并且可以打开稍后的各个位置,使得可以针对根验证开口。
矢量承诺(VC):
矢量承诺(参见“矢量承诺及其应用”,Catalano&Fiore,PKC 2013,LNCS第7778卷,第55-72页,2013年)允许人们以这样的方式提交消息向量,以便以后可以打开对其中一条消息的承诺(即,提供证明xi确实是承诺向量x中的第i个值的证人)。承诺和开口的大小与向量的长度无关。在该实施例中,效率要求由VC修改。例如,设n是承诺向量的长度。因此,承诺的大小可能需要独立于n,但开口的大小应小于n,即o(n)。VC可以是非隐藏(NHVC)或隐藏(HVC)。对于NHVC,安全要求具有约束力。换句话说,该属性要求一旦对手提出VC,它可能无法证明关于该VC的相同位置的两个不同值。对于HVC,隐藏是额外的安全要求。换句话说,该要求指出VC应该隐藏承诺的向量(即,对手不应该能够区分向量x还是向量y创建了VC,其中x≠y)。隐藏可以定义为标准承诺。
算法的大多数输入对于HVC和NHVC是共同的。下面将更详细地讨论专门用于HVC的输入。
VC.Setup(1λ,n):输入安全参数1λ和矢量大小的上限n,生成承诺方案par的参数,包括消息空间的描述和描述随机空间
VC.Commit(par,x):在输入公共参数par和向量时,算法输出对x的约束com。
VC.Prove(par,i,x):在输入公共参数par,位置索引i和向量x上,算法为xi生成证人w并输出(w,xi)。
VC.Verify(par,i,com,w,x):输入公共参数par,位置索引i,承诺com和x的证人w,如果w是x在位置i的有效证人,则算法输出1,否则为0。
下面定义了两个算法(VC.RandCommitment,VC.RandWitness)。VC.RandCommitment可以允许将NHVC更新为HVC one,并且VC.RandWitness可以允许将NHVC证人更新为HVC one。
VC.RandCommitment(par,com,r):在输入公共参数par,非隐藏承诺com和r∈上,输出HVC com′。
VC.RandWitness(par,com,i,r,w):在输入公共参数par,NHVC证人w,非隐藏承诺com和r∈R上,输出HVC证人w′。
协议:
在可信CRS(公共参考字符串)模型中设计协议,使得每一方,密钥服务器103(KS)和客户端计算机102(Ci)从可信方接收该方案的公共参数。密钥服务器103另外为PRF选择密钥。
该协议有两个主要构建块,即VC和PRF。在该实施例中,KS将为Ci的输入文件生成的客户端密钥是:(1)密钥应该是随机的,因此难以被对手猜测,但是(2)它对于一个文件应该是唯一的(即,KS应该能够为同一个文件生成相同的密钥),尽管是无状态的,并且(3)密钥不应该是公开可计算的(即,只有拥有秘密信息的KS应该能够计算一个文件的密钥)。所有这些属性在这里通过使客户密钥成为对向量x的简短的非隐藏和绑定的承诺的PRF评估来提供。这个简短的承诺用s表示。
PRF评估可能会被遗忘,因为KS不应该学习有关Ci输入的信息。在该实施例中,针对上述PRF的KS(保持k)和Ci(保持s)之间的遗忘PRF评估协议。此外,协议的该部分可以利用上述同态加密方案HES。在一个实施例中,Ci可以是恶意的。因此,确保Ci在KS参与计算PRF之前承诺其输入并证明其开放(PoK∏2)可能是有益的。
利用VC的属性以允许客户端有效地证明s的原像的知识。VC让Ci证明了原像的一些随机位置的知识。在该实施例中,通过允许KS挑战Ci证明其输入的t个随机位置的知识来利用该属性,其中t可以远小于x的长度n。关于t值的决定取决于给定协议可接受的健全性错误。
施工:
设置:在输入设置请求设置和设置ID sid以进行特定的安装调用时,KS执行:
1.从可靠来源接收(par),其中par=(paFPRF,parVC,parCS,parPK,parHES),即上面的PRF.Setup,VC.Setup,CS.Setup,PK.Setup和HES.Setup的par值。(在这些选定的方案中,这些都在共享参数的相同设置中工作。为了简化表示法,当从上下文中清除所使用的原语时,可以引用par,而不是该原语的特定参数。)
2.运行k←PRF.KeyGen(1λ,par)并且存储k.
3.输出(Setup,sid).
评估:在Ci(其中qid是Evaluate的特定调用的查询标识符)的输入上,在Ci和KS之间执行以下协议。
1.从受信任的来源接收(par)=(paFPRF,parVC,parCS,parPK,parHES)。
2.Ci选择随机并计算s←VC.Commit(par,x)以及s′←VC.RandCommitment(par,s,r1).
另外,Ci执行以下:
(a)选择随机
(b)计算com←CS.Commit(par,s,r2).
(c)然后Ci生成如下知识证明
s1:=PoK{(s,r2):com=CS.Commit(par,s,r2)}
(d)此外,Ci计算如下知识证明
并向KS发送(s′,com,∏s1,∏s2)。
3.KS验证∏s1和∏s2。如果验证成功,则KS继续进行下一步。
4.KS随机地从[1,n]中挑选索引的子集I={j1,...,jt},并将l发送到Ci
5.对于每个挑战的索引j∈l,Ci计算
(wj,xi)←VC.Prove(par,j,x)
(w′j)←VC.RandWitness(par,s,j,r1,wj)
并生成如下知识证明
πj=PoK{(w′j,xj):1=VC.Verify(par,j,s′,w′j,xj)}
让∏s3={πj|j∈I}.Ci将∏s3发送回KS.
6.KS验证∏s3,并且如果验证成功,KS进行到下一步。
7.KS选择(epk,esk)←HES.KeyGen(par),计算[k]←HES.Enc(epk,k)并将(epk,[k])发送给Ci.
8.然后Ci选择并且计算
其中[s]←HES.Enc(epk,s)
9.下一步,Ci生成如下知识证明:
Ci将(ct,∏2)发送给KS.
10.KS验证∏2并且如果验证成功,KS继续。
11.KS计算V←HES.Dec(esk,ct)
12.然后KS计算K′←g1/V并且将K′发送给Ci.
13.如果输出否则计算并输出K.(这里,随机性r3用具有在该结构中选择的适当共域的代数PRF抵消)。
在上述结构中,承诺s,s′和com分别对应于图.4A和4B中的第一,第二和第三承诺c1,c2和c3,随机值r3对应于这些图中的随机数N。第二子证明∏s2证明c2和c3是从公共值计算的,即c1。这里的同态加密方案HES是加性同态方案,其中,如果C1=HES.Encepk(m1)并且C2=HES.Encepk(m2),则C1⊙C2=HES.EnCepk(m1+m2),以及(HES.EnCepk(m))r=HES.EnCepk(r·m),其中⊙对应于此处的乘法。因此,在步骤8中:
由此,在步骤11中,V=r3(k+s)。在步骤12中,其中在步骤13中K=对应于先前定义的PRF。密钥服务器103不学习向量x或最终客户密钥K,并且客户端不获得关于服务器密钥k的信息。
参数t是一个调整参数,用于交换通信带宽以提高效率。可以根据需要设置该参数,以给出证明者(即,客户端)拥有整个文件的所需置信度。为了最小化健全性错误,可以首先对客户端文件F进行擦除编码,并且通过将擦除编码文件划分为n个块来定义向量x。如果擦除码对于高达α位分数的擦除是有弹性的并且∈是期望的健全性限制,则可以选择t作为最小整数,使得(1-α)t<∈。
基于以上构造的实施例中使用的矢量承诺方案的两个示例如下。
基于Merkle树的矢量承诺:
该VC方案基于“双变量多项式模复合及其应用”(Boneh et al。,ASIACRYPT 2014,Partl,LNCS第8873卷,第42-62页,2014年12月)中提出的累加器结构。在一个实施例中,可以使用相同的Merkle Hash树(MHT),基于结构,但是可以不必隐藏树叶的索引位置,从而提供效率增强。
VC.Setup(1λ,n):在输入安全参数1λ和上限n上,算法调用CS.Setup(1λ)。设CS.Setup(1λ)返回该算法在元组中附加抗冲突散列函数定义为:H(x,y)=x7+3y7mod N并将其作为参数返回。
VC.Commit(par,x):在输入公共参数par和输入x=(x1,...,xn),时,算法使用H(·,·),递归地在x上构建Merkle散列树。(如果n不是2的幂,则将“虚拟”元素插入x,直到n为2的完美幂。)让MR成为MHT的根。算法输出承诺com=MR。
VC.Prove(par,i,x):在输入公共参数par,位置索引i和输入x=(x1,...,xn)时,算法执行以下操作:让我们将MHT中沿着从具有值MR的根节点到具有值x[i]的叶节点的路径的节点值表示为注意,p0=MR,pd=x[i]。设的兄弟路径(注意p0没有兄弟)。然后,算法计算并输出证人
VC.Verify(par,i,com,w,x):输入公共参数par,position indexi,commitmentcom=MR,证人(w,x),算法解析w为并设置pd=x。对于每个j=d,...,1,算法通过对左右子进行散列来递归地计算内部节点。设p0=H(p1,p′1)(如果fp1是左兄弟,否则H(p′1,p1))。该算法检查是否MR=p0。如果相等,则输出1,否则输出0。对于NHVC的实现,w必须被解析为其余步骤保持不变。在最后一步中,算法将检查是否CS.Verify(par,comMR,MR,openMR)=1,而不是检查是否MR=p0。算法将在等式成立时输出1,否则为0。
VC.RandCommitment(par,com,r):在输入公共参数par,非隐藏向量承诺com=MR和随机性r∈R时,算法调用CS.Commit(par,MR,r)。让CS.Commit(par,MR,r)返回(comMR,openMR)。输出com′com′=comMR
VC.RandWitness(par,com,i,r,w):在输入公共参数par,非隐藏向量承诺com=MR,位置i,随机性和部分证人w,算法解析w为用(comMR,openMR)附加w,其中(comMR,openMR)=CS.Commit(par,MR,r),,并输出
基于Merkle树的矢量承诺的知识证明:
在该实施例中,可能需要有效地实现三个伴随的PoK。下面更详细地描述所有PoK的完整实现。这里描述的是对于该VC实例化可以避免的证明并且需要更多的关注。请注意,VC.RandCommitment与CS.Commit算法相同,后者计算Pedersen对NHVC MR的承诺。因此,∏s2将只是平等的标准证明。实际上,可以进行以下优化:在整个协议中使用s′作为com并跳过∏s2
对于证明πj
PoK{(w′,x):1=HVC.Verify(par,j,com,w′,x)},
证明这些关系更为复杂,需要采取以下步骤。
1.算法解析w′为
2.沿着从具有值MR的根节点到具有值xi的叶节点的路径的节点值在MHT中被表示为 所述算法在上使用H(·,·)来递归地自下而上恢复该路径。索引位置j在每个步骤唯一地决定左孩子和右孩子。
3.如果该算法承诺于(commits to)该路径中的每个值pj以及MHT中pj的左和右子节点的值,即,如果lj是左子节点,而rj是右子节点,则该算法计算
(Pj,sj)←CS.Commit(par,pj,sj),
(Lj,s′j)←CS.Commit(par,lj,s′j),
(Rj,s″j)←CS.Commit(par,rj,s″j).
4.然后,该算法生成证明P0,其确实是对根的承诺(为了清楚起见,忽略CS.commit在输出中的打开):
5.接下来,对于j=0,...,d-1,以下知识证明每个三元组(Pj,Lj,Rj)形成良好。注意,Lj(or Rj)用作Pj+1.。
该证明需要以下子步骤。
(a)该证明使用Pedersen承诺方案的同态性质和PoKmult的子协议用于两个值的乘法。该协议使用标准技术进行实例化,并由PoKmult简洁地表示如下:
(b)该证明者计算
(c)该证明者在以下三元组的每一个唤醒PoKmult以证明承诺的正确性:
(d)验证者可使用作为(使用同态)来计算
(e)证明者将所有这些承诺和PoKmult′s发送到验证者。
6.设d=logn是MHT的深度。完整的证明包括一组承诺前一子步骤中的10d辅助承诺和8d+1PoK′s。证明的总大小为O(d)=O(logn)。注意,每个PoKj的10个承诺和8个PoKmult′s在符号PoKj中被吸收。
基于RSA的矢量承诺:
该方案基于在“向量承诺及其应用”(Catalano et al。,PKC 2013,LNCS第7778卷,第55-72页,2013年)中提出的基于RSA的非隐藏VC方案,具有两个主要变化:(1)承诺方案被配置为隐藏和(2)添加PoK以证明第i个索引而不是直接提供值和证人。
VC.Setup(1λ,n):在输入安全参数1λ和上限n上,算法执行以下操作:
1.选取两个λ位的安全素数p=2p′+1和q=2q′+1q以及设N=pq。
2.选取l=poly(λ)为消息长度的上界。
3.选择n,l+1618比特的素数e1,...,en,不除φ(N)。
4.选择随机数
5.对于j=1ton,计算
6.设
7.输出参数
VC.Commit(par,x):在输入公共参数par和输入x=(x1,...,xn)时,算法计算 并输出承诺com。
VC.Prove(par,i,x):在输入公共参数par,位置i和x=(x1,...,xn)时,算法计算 输出证人(w,xi)。
VC.Verify(par,i,com,w,x):在输入公共参数par,positioni,承诺com和证人(w,x)时,如果并且则算法输出1,否则输出0。对于HVC和NHVC,验证算法是相同的,除了算法将com′而不是com作为输入。
VC.RandCommitment(par,com,r):在输入公共参数par,非隐藏向量承诺com和随机性时,算法计算并输出com′。
VC.RandWitness(par,com,i,r,w):在输入公共参数par,非隐藏向量承诺com,位置i,随机性和部分证人w,算法计算并输出w′。
以下给出了上面使用的PoK协议的具体实现。CRS包含Camenisch-Shoup加密方案的CPA版本的公钥(前面提到的“离散对数的实际可验证加密和解密”)。在该实施例中,获取CRS中的模数N,其中N是可以以分布方式生成的两个安全素数的乘积。设g′和y′是CRS中包含的的随机元素,并设置g=g′2N,y=y′2N,并且h=1+N mod N2。首先,描述了PoK′s的实现,这些实现对于上述VC实例都是通用的,然后给出每个VC特定的实现。如本领域所公知的,所有PoK′s可以根据需要作为交互式或非交互式证明来执行。
PoK对两种VC方案都很常见:
s1:=PoK{(s,r):com=CS.Commit(par,s,r)}
这是通过首先计算r1和r2是随机从[N/4]中取出的,将这些值发送给验证者,然后用验证者执行以下证明协议:
其中为了简洁省略了modρ和mod N2d。
按照如下所述执行
.让我们表示[k]=(e1,e2)。证明者首先计算其中ur是从[N/4]随机抽取出的,将这些值发送给验证者,and然后用验证者执行以下证明协议:
这里,项示出tw=sr3,并且因此其中B是示证者用来随机化加密的值。
用于MHT-VC的PoK:
这些证明实现了∏s3(如上所述,这里可以省略∏s2)。
PoKMR{(MR,r,s):com=CSCommit(par,MR,r)∧
P0=CSCommit(par,MR,s)}
首先由计算 而完成,其中r1,r2andr3从[N/4]随机抽取,将这些值发送给验证者,然后用验证者执行以下证明协议:
GSPK{(MR,r,s,r1,r2,r3):com=GMRHr∧P0=GMRHr
其中为了简洁省略了modρ和mod N2
PoKmu1t{(x,y,z,sx,sy,sz):Cx=CSCommit(par,x,sx)∧
Cy=CSCommit(par,y,sy)∧Cz=CSCommit(par,cz,sz)∧z=x·y}
通过首先计算而完成,其中r1和r2从[N/4]随机抽取,将这些值发送给验证者,然后用验证者执行以下证明协议:
在一个实施例中,可能不需要可验证地加密证人z,因为这可以从x和y计算。类似地,当在散列树路径的较大证明中组合这些证明时,可以丢弃多个加密。
用于RSA-VC的PoKs
该语句证明s′是向量承诺的随机化版本,而coms依次(in turn)向其承诺。换言之,对于r0的某个值以及对于coms中承诺的s成立。这种陈述可以通过以下证明协议证明
这里r′2吸收随机性但是可能不需要证明关于r′2的任何东西。该方案在二元挑战下工作,因为它涉及″双离散对数″关系(因此用于GSPK01的后缀01)。
πj=PoK{(w,x):1=VC.Verify(par,com′,j,x,w)}
对于该证明,CRS可能需要包含来自指令(oder)p′q′的的元素z1,z2和z3,使得w可以相对于z1可验证地ElGamal加密(ElGamal-encrypted),并且针对w相对于z2和z3进行范围证明。
从而,证明者首先计算 其中ux和r从[N/4]随机抽取,将E1,E2,E′和Ex发送给验证者,然后用验证者执行以下证明协议:
该证明显示是x的证人并且x在要求的范围内。
可以看出,上述实施例允许异常安全和有效地生成适合于重复数据删除应用的客户端密钥,并且只能由拥有生成密钥的文件的客户端获得。然而,应该理解,所描述的密钥生成过程可以应用于需要无意生成密钥的任何应用中,该密钥确定性地从客户证明知识获得密钥的数据导出。
可以对所描述的示例性实施例进行许多其他改变和修改。例如,虽然上面描述了存储服务器4的文件级重复数据删除,但是重复数据删除粒度可以是数据块,对象或其他实施例中的任何其他数据单元。此外,由于密钥服务器103在与客户端的交互中不学习任何内容,因此在一些实施例中可以合并密钥服务器103和存储服务器104的功能。然而,优选地,将服务器103和104实现为单独的实体,以提供针对离线暴力攻击的额外保护。
虽然已经描述了特别有效的实现,但是可以设想其他方案用于密钥生成协议中的无关密钥生成以及用于构造各种证明。
通常,流程图的步骤可以以与所示顺序不同的顺序执行,并且一些步骤可以适当地同时执行。
已经出于说明的目的给出了对本发明的各种实施例的描述,但是并不旨在穷举或限制于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择这里使用的术语是为了最好地解释实施例的原理,实际应用或对市场中发现的技术的技术改进,或者使本领域普通技术人员能够理解本文公开的实施例。
图5是根据本发明的实施例的计算机系统500的内部和外部组件的框图,其代表图1的计算机系统。应该理解的是,图5仅提供了一个实现的说明,并未暗示关于可以实现不同实施例的环境的任何限制。通常,图5中所示的组件代表能够执行机器可读程序指令的任何电子设备。通常,图5中所示的组件代表能够执行机器可读程序指令的任何电子设备。可以由图5中所示的组件表示的计算机系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、膝上型计算机系统、平板计算机系统、蜂窝电话(例如,智能电话)、多处理器系统、基于微处理器的系统、网络PC、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境。
计算机系统500包括通信结构502,其提供一个或多个处理器504,存储器506,永久存储器508,通信单元512和一个或多个输入/输出(I/O)接口514之间的通信。通信结构502可以用任何架构来实现,该架构被设计用于在处理器(诸如微处理器,通信和网络处理器等),系统存储器,外围设备和系统内的任何其他硬件组件之间传递数据和/或控制信息。例如,通信结构502可以用一个或多个总线实现。
存储器506和永久存储器508是计算机可读存储介质。在该实施例中,存储器506包括随机存取存储器(RAM)516和高速缓冲存储器518。通常,存储器506可包括任何合适的易失性或非易失性计算机可读存储介质。软件存储在永久存储器508中,用于由一个或多个相应处理器504经由存储器506的一个或多个存储器执行和/或访问。
永久存储器508可以包括例如多个磁性硬盘驱动器。作为替代,或除了磁性硬盘驱动器之外,永久存储器508可以包括一个或多个固态硬盘驱动器,半导体存储设备,只读存储器(ROM),可擦除可编程只读存储器(EPROM),闪存,或者能够存储程序指令或数字信息的任何其他计算机可读存储介质。
永久存储器508使用的介质也可以是可移除的。例如,可移动硬盘驱动器可以用于永久存储器508。其它示例包括光盘和磁盘、拇指驱动器和智能卡,它们被插入驱动器中以便传送到也是永久存储器508的一部分的另一计算机可读存储介质上。
通信单元512经由网络(例如,网络105)提供与其他计算机系统或设备的通信。在该示例性实施例中,通信单元512包括网络适配器或接口,诸如TCP/IP适配器卡,无线Wi-Fi接口卡,或3G或4G无线接口卡或其他有线或无线通信链路。网络可以包括例如铜线,光纤,无线传输,路由器,防火墙,交换机,网关计算机和/或边缘服务器。用于实践本发明实施例的软件和数据可以通过通信单元512下载(例如,通过因特网,局域网或其他广域网)。从通信单元512,可以将软件和数据加载到永久存储器508上。
一个或多个I/O接口514允许与可以连接到计算机系统500的其他设备输入和输出数据。例如,I/O接口514可以提供到一个或多个外部设备520的连接,例如键盘,计算机鼠标,触摸屏,虚拟键盘,触摸板,指示设备或其他人机接口设备。外部设备520还可以包括便携式计算机可读存储介质,例如拇指驱动器,便携式光盘或磁盘,以及存储卡。I/O接口414还连接到显示器522。
显示器522提供向用户显示数据的机制,并且可以是例如计算机监视器。显示器522也可以是并入的显示器,并且可以用作触摸屏,例如平板电脑的内置显示器。
本发明可以是任何可能的技术细节集成级别的系统,方法和/或计算机程序产品。该计算机程序产品可以包括计算机可读存储介质(或介质),其上具有计算机可读程序指令,用于使处理器执行本发明的各方面。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是--但不限于--电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言-诸如Smalltalk、C++等,以及过程式编程语言-诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络-包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当理解,尽管本公开包括关于云计算的详细描述,但是本文所述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其他类型的计算环境来实现。
云计算是服务递送的模型,用于实现对可配置计算资源的共享池(例如,网络,网络带宽,服务器,处理,存储器,存储,应用,虚拟机和服务)可以通过最少的管理工作或与服务提供商的交互来快速供应和发布。该云模型可以包括至少五个特征,至少三个服务模型和至少四个部署模型。
特征包括:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图6,描绘了说明性云计算环境10。如图所示,云计算环境10包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点1,所述本地计算设备例如是个人数字助理(PDA)或蜂窝电话14A、台式计算机14B、膝上型计算机14C和/或汽车计算机系统14N。节点1可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境10提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图6中所示的计算设备14A-N的类型仅旨在说明,并且计算节点1和云计算环境10可以通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参考图7,示出了由云计算环境10(图6)提供的一组功能抽象层。应当预先理解,图7中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层600包括硬件和软件组件。硬件组件的示例包括:主机601;基于RISC(精简指令集计算机)架构的服务器602;服务器603;刀片服务器604;存储设备605;以及网络和联网组件606。在一些实施例中,软件组件包括网络应用服务器软件607和数据库软件608。
虚拟化层700提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器701;虚拟存储器702;虚拟网络703,包括虚拟专用网络;虚拟应用和操作系统704;以及虚拟客户机705。
在一个示例中,管理层800可以提供以下描述的功能。资源供应801提供了对被用来在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价802提供了在云计算环境中利用资源时的成本跟踪,以及用于消耗这些资源的开账单或开发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户803为消费者和系统管理员提供对云计算环境的访问。服务级别管理804提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(SLA)规划和履行805提供对云计算资源的预安排和采购,其中根据SLA预期未来需求。
工作负载层900提供了云计算环境可以被利用的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图绘制和导航901;软件开发和生命周期管理902;虚拟教室教育传送903;数据分析处理904;交易处理905;以及系统906。

Claims (24)

1.一种系统,包括:
用于提供客户端数据的客户端计算机,其中所述客户端计算机被配置为:
定义向量x,包括索引i=1到n的n个数据块xi,对应于所述客户端数据;
生成对所述向量x的第一承诺,其中所述第一承诺是非隐藏向量承诺;
生成对所述向量x的第二承诺,其中所述第二承诺是隐藏向量承诺;
生成对所述第一承诺的第三承诺;
将所述第二承诺和所述第三承诺发送给所述密钥服务器;
针对索引i的子集,向所述密钥服务器提供所述第二承诺和所述第三承诺中的所述向量x的所述对应数据块xi的第一知识证明;
一种用于通过网络进行通信的密钥服务器,其中,所述密钥服务器被配置为:
存储秘密服务器密钥K;
响应于验证所述第一证明,在密钥生成协议与所述客户端计算机进行约定,其中所述客户端计算机在所述约定期间被配置为:
向所述密钥服务器发送所述第一承诺的盲函数,并且向所述密钥服务器提供所述盲函数和所述第三承诺中的所述第一承诺的第二知识证明;
其中,所述密钥服务器在所述约定期间被配置为:
响应于验证所述第二证明,从所述盲函数生成包括所述第一承诺的所述盲函数和所述服务器密钥K的盲密钥K';
将所述盲密钥K'发送到所述客户端计算机;以及
其中客户端计算机在约定期间被配置为对盲密钥K'揭盲以获得包括第一承诺的确定性函数和服务器密钥K的客户端密钥K。
2.根据权利要求1所述的系统,其中在所述密钥生成协议期间,所述系统还包括:
所述密钥服务器,其被配置为在加密方案的公钥下经由同态加密方案对服务器密钥K进行加密以产生加密密钥,并且将所述加密密钥发送到客户端计算机;
所述客户端计算机,其被配置为经由所述加密方案在所述公钥下加密所述第一承诺,通过使用随机数对所述加密密钥的函数和所述加密承诺进行盲运算来产生所述第一承诺的所述盲函数;
所述密钥服务器,其被配置成使用对应于所述公钥的私钥经由所述加密方案的解密算法来解密所述第一承诺的所述盲函数以获得解密值V,并且从所述解密值V生成所述盲密钥K';以及
所述客户端计算机,其被配置为通过使用所述随机数对所述盲密钥K'揭盲来获得所述客户端密钥K。
3.根据权利要求2所述的系统,其中,所述密钥服务器被配置为生成所述盲密钥K',使得所述客户端密钥K包括所述第一承诺的伪随机函数和所述服务器密钥k。
4.如权利要求1所述的系统,其中,所述系统还包括:
第一知识证明包括第一子证明,其证明第三承诺中的第一承诺的知识,第二子证明,其证明第二承诺和第三承诺是根据共同值计算的,以及第三子证明;
所述客户端计算机,其被配置为将第一子证明,第二子证明,第二承诺和第三承诺发送给密钥服务器;
所述密钥服务器,其被配置为响应于验证第一子证明和第二子证明,选择索引i的子集并将所述子集发送到客户端计算机;
所述客户端计算机,其被配置生成第三子证明,其为子集的每个索引i证明了第二承诺中的向量x的数据块xi的知识,并将该第三子证明发送给密钥服务器;
所述密钥服务器,其被配置成验证所述第三子证明以验证所述第一知识证明。
5.如权利要求4所述的系统,其中所述第二承诺是根据所述第一承诺来计算的,并且所述共同值还包括所述第一承诺。
6.根据权利要求1所述的系统,其中所述系统包括多于一个的所述客户端计算机,所述多于一个的客户端计算机中的每一个适于经由所述网络与所述密钥服务器通信。
7.根据权利要求6所述的系统,其中所述多于一个客户端计算机中的每一个还被配置为使用其客户端密钥K来加密所述客户端数据以产生密文,并且发送所述密文以便远程存储在所述网络中。
8.根据权利要求7所述的系统,其中所述系统还包括:
存储服务器,其连接到所述网络,用于存储从所述一个以上客户端计算机接收的密文,并且所述存储服务器被配置为对所述密文实施去重过程。
9.一种方法,包括:
由客户端计算机定义向量x,包括索引i=1到n的n个数据块xi,对应于所述客户端计算机处的客户端数据;
由所述客户端计算机生成对所述向量x的第一承诺,其中所述第一承诺是非隐藏向量承诺;
由所述客户端计算机生成对所述向量x的第二承诺,其中所述第二承诺是隐藏向量承诺;
由所述客户端计算机生成对所述第一承诺的第三承诺;
由所述客户端计算机将所述第二承诺和所述第三承诺发送至密钥服务器;
由所述客户端计算机向所述密钥服务器提供针对所述索引i的子集的、所述第二承诺和所述第三承诺中的所述向量x的所述对应数据块xi的第一知识证明;以及
响应于由所述密钥服务器验证所述第一证明:
通过由所述客户端计算机向所述密钥服务器发送所述第一承诺的盲函数并且在所述盲函数中和在所述第三承诺中向所述密钥服务器提供所述第一承诺的第二知识证明,从所述密钥服务器接收从所述盲函数生成的并且包括所述第一承诺的所述盲函数和所述密钥服务器的秘密服务器密钥K的盲密钥K',并且对所述盲密钥K'进行揭盲以获得包括所述第一承诺的确定性函数和所述服务器密钥K的所述客户端密钥K,来执行密钥生成协议。
10.根据权利要求9所述的方法,其中所述执行密钥生成协议包括:
由所述客户端计算机从所述密钥服务器接收通过在加密方案的公钥下经由同态加密方案加密所述服务器密钥而产生的加密密钥;
由所述客户端计算机经由所述加密方案在所述公钥下加密所述第一承诺以产生经加密的承诺;
由所述客户端计算机通过使用随机数对所述加密密钥的函数和所述加密承诺进行盲处理来产生所述第一承诺的所述盲函数;以及
响应于接收到在所述密钥服务器处从通过解密所述第一承诺的所述盲函数而获得的解密值V产生的所述盲密钥K',由所述客户端计算机经由所述加密方案的解密算法使用与所述公钥相对应的私钥,并且使用所述随机数对所述盲密钥K'进行揭盲。
11.如权利要求9所述的方法,其中所述第一知识证明包括第一子证明、第二子证明和第三子证明,所述第一子证明证明了在所述第三承诺中所述第一承诺的知识,所述第二子证明证明了所述第二承诺和所述第三承诺是根据共同值计算的,并且所述方法还包括:
由所述客户端计算机将第一子证明,第二子证明,第二承诺和第三承诺发送给所述密钥服务器;
响应于由所述密钥服务器验证所述第一子证明和所述第二子证明,由所述客户端计算机从所述密钥服务器接收所述索引i的所述子集;
由所述客户端计算机生成所述第三子证明,其为子集的每个索引i证明了第二承诺中的向量x的数据块xi的知识;以及
由所述客户端计算机将所述第三子证明发送到所述密钥服务器。
12.根据权利要求11所述的方法,还包括:
由所述客户端计算机根据所述第一承诺计算所述第二承诺,其中,所述共同值包括所述第一承诺。
13.根据权利要求9所述的方法,还包括:
由所述客户端计算机使用所述客户端密钥K对所述客户端数据进行加密以产生密文;以及
由所述客户端计算机将所述密文发送到存储服务器,所述存储服务器连接到所述网络并且适于实现针对所存储的密文的去重过程。
14.如权利要求10所述的方法,其中所述第一知识证明包括第一子证明、第二子证明和第三子证明,所述第一子证明证明了在所述第三承诺中所述第一承诺的知识,所述第二子证明证明了所述第二承诺和所述第三承诺是根据共同值计算的,并且所述方法还包括:
由所述客户端计算机将所述第一子证明,所述第二子证明,所述第二承诺和所述第三承诺发送给所述密钥服务器;
响应于由所述密钥服务器验证所述第一子证明和所述第二子证明,由所述客户端计算机从所述密钥服务器接收所述索引i的所述子集;
由所述客户端计算机生成所述第三子证明,其为所述子集中的每个索引i,证明在所述第二承诺中的向量x的数据块xi的知识;
由所述客户端计算机将所述第三子证明发送到所述密钥服务器;
由所述客户端计算机使用所述客户端密钥K对所述客户端数据进行加密以产生密文;以及
由所述客户端计算机将所述密文发送到存储服务器,所述存储服务器连接到所述网络并且被配置为实现针对所存储的密文的去重复过程。
15.一种用于向客户端计算机提供客户端密钥K的方法,其中所述客户端计算机提供客户端数据并且适于定义与所述客户端数据相对应的向量x,所述向量x具有n个索引为i=1至n的数据块xi,并且适于生成对所述向量x的第一承诺,所述第一承诺是非隐藏向量承诺,所述方法包括,在适于经由网络与所述客户端计算机通信的密钥服务器处:
存储秘密服务器密钥K;
从所述客户端计算机接收对所述向量x的第二承诺和对所述第一承诺的第三承诺,所述第二承诺是隐藏向量承诺;
从所述客户端计算机接收针对所述索引i的子集的、所述第二和第三承诺中的所述向量x的所述对应数据块xi的第一知识证明;
验证所述第一证明;以及
在响应于第一证明的验证而执行的密钥生成协议中,从客户端计算机接收第一承诺的盲函数和在所述盲函数和所述第三承诺中的所述第一承诺的第二知识证明,验证所述第二证明,并且响应于第二证明,从所述第一承诺的所述盲函数生成包括第一承诺的盲函数和服务器密钥K的盲密钥K',并且将盲密钥K'发送到客户端计算机以在客户端计算机处揭盲,以获得包括第一承诺和服务器密钥K的确定性函数的客户端密钥K。
16.根据权利要求15所述的方法,包括在所述密钥生成协议的所述密钥服务器处:
在所述方案的公钥下,通过同态加密方案加密服务器密钥K,以产生加密密钥;
通过经由所述加密方案在所述公钥下加密所述第一承诺以产生加密的承诺,并且使用随机数来盲化所述加密的密钥和所述加密的承诺的函数,来将所述加密的密钥发送到所述客户端计算机以用于产生所述第一承诺的所述盲函数;
使用对应于所述公钥的私钥,经由所述加密方案的解密算法来解密所述第一承诺的所述盲函数,以获得解密值V;以及
从所述解密值V生成所述隐蔽密钥K',使得所述客户端计算机能够通过使用所述随机数对所述盲密钥K'揭盲来获得所述客户端密钥K。
17.根据权利要求16所述的方法,其包括:产生所述盲密钥K'使得所述客户端密钥K包括所述第一承诺的伪随机函数及所述服务器密钥K。
18.如权利要求15所述的方法,其中所述第一知识证明包括第一子证明、第二子证明和第三子证明,所述第一子证明证明了在所述第三承诺中所述第一承诺的知识,所述第二子证明证明了所述第二承诺和所述第三承诺是根据共同值计算的,所述方法包括在所述密钥服务器处:
从所述客户端计算机接收所述第一子证明,所述第二子证明,第二承诺和所述第三承诺;
验证第一和第二子证明,并响应于此,选择索引i的子集并将该子集发送到客户计算机;
从所述客户端计算机接收针对所述子集中的每个索引i的、所述第二承诺中的向量x的数据块xi的第三子知识证明;以及
验证所述第三子证明以验证所述第一知识证明。
19.如权利要求16所述的方法,其中所述第一知识证明包括第一子证明、第二子证明和第三子证明,所述第一子证明证明在所述第三承诺中有所述第一承诺的知识,所述第二子证明证明所述第二承诺和所述第三承诺是根据共同值计算的,所述方法包括在所述密钥服务器处:
从具有第二和第三承诺的客户计算机接收第一和第二子证明;
验证第一和第二子证明,并响应于此,选择索引i的子集并将该子集发送到客户计算机;
从所述客户端计算机接收对所述子集中的每个索引i证明所述第二承诺中的向量x的数据块xi的知识的第三子证明;
验证所述第三子证明以验证所述第一知识证明;以及
在所述密钥产生协议中,产生所述盲密钥K',使得所述客户端密钥K包括所述第一承诺的伪随机函数及所述服务器密钥K。
20.一种用于在适于经由网络与密钥服务器通信的客户端计算机处获得客户端密钥K的计算机程序产品,所述计算机程序产品包括其中包含有程序指令的计算机可读存储介质,所述程序指令可由所述客户端计算机执行,所述程序指令包括:
用于定义向量x的程序指令,所述向量x具有索引i=1至n的n个数据块xi,对应于所述客户端计算机处的客户端数据;
用于生成对所述向量x的第一承诺的程序指令,所述第一承诺是非隐藏向量承诺;
用于生成对所述向量x的第二承诺的程序指令,所述第二承诺是隐藏向量承诺;
用于生成对所述第一承诺的第三承诺的程序指令;
用于将所述第二承诺和所述第三承诺发送给所述密钥服务器的程序指令;
用于向所述密钥服务器提供针对所述索引i的子集的、所述第二和第三承诺中的所述向量x的所述对应数据块xi的第一知识证明的程序指令;以及
在响应于由所述密钥服务器对所述第一证明的验证而执行的密钥生成协议中,用于向所述密钥服务器发送所述第一承诺的盲函数,并且向所述密钥服务器提供所述第一承诺在所述盲函数和所述第三承诺中的第二知识证明,用于从所述密钥服务器接收从所述盲函数生成的并且包括所述第一承诺的盲函数和所述密钥服务器的秘密服务器密钥K的盲密钥K',并且用于对所述盲密钥K'进行揭盲以获得包括所述第一承诺的确定性函数和服务器密钥K的客户端密钥K的程序指令。
21.根据权利要求20所述的计算机程序产品,其中,所述第一知识证明包括:第一子证明,证明所述第一承诺在所述第三承诺中的的知识;第二子证明,其证明所述第二承诺和第三承诺是从共同值计算得出的,以及第三子证明,其中存储在一个或多个计算机可读存储介质上的程序指令还包括:
将第一和第二子证明及第二和第三承诺发送给密钥服务器的程序指令;
响应于密钥服务器对第一和第二子证明的验证,从密钥服务器接收索引i的子集的程序指令;
生成第三子证明的程序指令,所述第三子证明为子集的每个索引i证明了第二承诺中的向量x的数据块xi的知识;
将第三子证明发送到密钥服务器的程序指令;和
在密钥生成协议中,从密钥服务器接收通过在所述方案的公共密钥下通过同态加密方案对服务器密钥进行加密而生成的加密密钥的程序指令,通过所述加密方案在公共密钥下对第一承诺进行加密以产生加密的承诺的程序指令;通过使用随机数对加密密钥的函数和加密承诺进行盲化来产生第一承诺的盲函数的程序指令;响应于接收到在密钥服务器上从解密值V产生的盲密钥K',通过加密方案的解密算法,使用对应于公密钥的私密钥,使用所述随机数来揭盲所述盲密钥K',其中该解密值V通过解密所述第一承诺的所述盲函数来获得的程序指令。
22.根据权利要求21所述的计算机程序产品,其中,存储在所述一个或多个计算机可读存储介质上的程序指令还包括:
使用客户密钥K加密客户数据以产生密文的程序指令;和
用于将密文发送到连接到网络并适于对存储的密文实施重复数据删除过程的存储服务器的程序指令。
23.一种用于将客户端密钥K提供给客户端计算机的计算机程序产品,该客户端计算机适于经由网络与密钥服务器进行通信,其中,所述客户端计算机提供客户端数据并且适于定义向量x,该向量x具有索引i=1至n的n个数据块xi,对应于客户端数据并生成对向量x的第一承诺(作为非隐藏向量承诺),该计算机程序产品包括计算机可读存储介质,在其中包含程序指令,该程序指令可由密钥服务器执行,该程序指令包括:
存储秘密服务器密钥k的程序指令;
用于从客户端计算机接收对向量x的第二承诺(即隐藏向量承诺)和对第一承诺的第三承诺的程序指令;
用于从客户端计算机接收第二承诺和第三承诺中向量x的对应数据块xi的索引i的子集的第一知识证明的程序指令;
验证第一证明的程序指令;和
在响应于对第一证明的验证而执行的密钥生成协议中,从客户端计算机接收第一承诺的盲函数以及在所述盲函数和第三承诺中的第一承诺的第二知识证明,响应于此,验证第二证明,从第一承诺的盲函数中生成包括第一承诺的盲函数和服务器密钥k的盲密钥K',并将盲密钥K'发送给客户端用于在客户端计算机上揭盲以获得客户端密钥K的程序指令,该客户端密钥K包括第一承诺的确定性函数和服务器密钥k。
24.根据权利要求23所述的计算机程序产品,其中,所述第一知识证明包括:第一子证明,第二子证明和第三子证明,所述第一子证明证明所述第一承诺在所述第三承诺中的知识,所述第二子证明证明所述第二承诺和所述第三承诺是根据共同值计算得出,并且其中存储在一个或多个计算机可读存储介质上的程序指令还包括:
从客户端计算机接收第一和第二子证明及第二和第三承诺的程序指令;
验证第一和第二子证明,并响应于此,选择索引i的子集并将该子集发送到客户端计算机的程序指令;
针对所述子集中的每个索引i,从所述客户端结算机接收第三子证明的程序指令,其中第三子证明证明了对于子集的每个索引i在所述第二承诺中的向量x的数据块xi的知识;
验证第三子证明以验证第一知识证明的程序指令;和
在密钥生成协议中,在该方案的公钥下通过同态加密方案对服务器密钥k进行加密,以生成加密密钥,并将加密后的密钥发送到客户端计算机以通过经由所述加密方案在所述公钥下加密所述第一承诺,通过使用随机数对所述加密密钥的函数和所述加密承诺进行盲运算来产生所述第一承诺的所述盲函数;使用对应于所述公钥的私钥经由所述加密方案的解密算法来解密所述第一承诺的所述盲函数以获得解密值V,并且从所述解密值V生成所述盲密钥K'使得所述客户端计算机能通过使用所述随机数对所述盲密钥K'揭盲来获得所述客户端密钥K的程序指令。
CN201880033117.6A 2017-05-19 2018-05-17 应用于数据重复数据删除的加密密钥生成 Active CN110637441B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/600,142 2017-05-19
US15/600,142 US10277395B2 (en) 2017-05-19 2017-05-19 Cryptographic key-generation with application to data deduplication
PCT/IB2018/053465 WO2018211446A1 (en) 2017-05-19 2018-05-17 Cryptographic key-generation with application to data deduplication

Publications (2)

Publication Number Publication Date
CN110637441A true CN110637441A (zh) 2019-12-31
CN110637441B CN110637441B (zh) 2023-05-02

Family

ID=64272724

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880033117.6A Active CN110637441B (zh) 2017-05-19 2018-05-17 应用于数据重复数据删除的加密密钥生成

Country Status (6)

Country Link
US (1) US10277395B2 (zh)
JP (1) JP6959994B2 (zh)
CN (1) CN110637441B (zh)
DE (1) DE112018001285B4 (zh)
GB (1) GB2576289B (zh)
WO (1) WO2018211446A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111338572A (zh) * 2020-02-18 2020-06-26 电子科技大学 一种可调节加密重复数据删除方法
CN112822009A (zh) * 2021-01-26 2021-05-18 西安邮电大学 一种支持密文去重的属性密文高效共享系统
CN114223175A (zh) * 2020-02-06 2022-03-22 谷歌有限责任公司 在防止获取或操控时间数据的同时生成网络数据的序列

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10536267B2 (en) * 2017-09-15 2020-01-14 Visa International Service Association Cryptographic services utilizing commodity hardware
US10897357B2 (en) * 2018-04-04 2021-01-19 International Business Machines Corporation Computation using lattice-based cryptography
KR102602119B1 (ko) * 2018-04-06 2023-11-15 주식회사 크립토랩 블록체인 및 동형암호 기술을 이용하여 데이터를 공유하는 사용자 장치와 전자장치 및 그 방법들
PL3545640T3 (pl) * 2018-11-07 2021-10-18 Advanced New Technologies Co., Ltd. Ochrona danych łańcucha bloków przy zastosowaniu szyfrowania homomorficznego
US10447475B1 (en) * 2018-11-08 2019-10-15 Bar Ilan University System and method for managing backup of cryptographic keys
CN109543451B (zh) * 2018-11-28 2023-05-09 中共中央办公厅电子科技学院 一种基于模分量同态的隐私保护处理方法
JP6811334B2 (ja) 2018-12-21 2021-01-13 アドバンスド ニュー テクノロジーズ カンパニー リミテッド 汎用アカウントモデルおよび準同型暗号に基づくブロックチェーンデータ保護
KR102193551B1 (ko) 2018-12-21 2020-12-23 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 제네릭 계정 모델 및 준동형 암호화에 기반한 블록체인 데이터 보호
CN111092715B (zh) * 2019-12-27 2023-06-16 山东师范大学 一种网约车信息安全处理方法、系统及设备
US12099997B1 (en) 2020-01-31 2024-09-24 Steven Mark Hoffberg Tokenized fungible liabilities
CN113590020A (zh) * 2020-04-30 2021-11-02 伊姆西Ip控股有限责任公司 用于数据管理的方法、设备和计算机程序产品
WO2022144966A1 (ja) * 2020-12-28 2022-07-07 富士通株式会社 情報処理システム、制御方法、情報処理装置および制御プログラム
CN112947855B (zh) * 2021-02-01 2022-10-14 电子科技大学 一种基于硬件安全区的高效加密重复数据删除方法
US12010237B2 (en) 2022-01-25 2024-06-11 QPQ Ltd. System and method for digital proof generation
CN116484443B (zh) * 2023-06-19 2023-09-15 深圳市优博生活科技有限公司 一种基于鸿蒙系统的可信安全存储方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103997407A (zh) * 2013-02-15 2014-08-20 汤姆逊许可公司 用于生成和验证线性同态签名中的承诺的加密设备和方法
JP2015022318A (ja) * 2013-07-16 2015-02-02 日本電気株式会社 暗号化装置、復号装置、暗号化方法および暗号化プログラム
CN104717067A (zh) * 2013-12-17 2015-06-17 中国移动通信集团辽宁有限公司 基于非交互式零知识的安全验证方法、设备及系统
CN105491006A (zh) * 2015-11-13 2016-04-13 河南师范大学 云外包密钥共享装置及方法
WO2016155804A1 (en) * 2015-03-31 2016-10-06 Nec Europe Ltd. Method for verifying information

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197142B2 (en) 2001-08-24 2007-03-27 Alten Alexander I System and methods for a vernam stream cipher
JP2007157021A (ja) * 2005-12-08 2007-06-21 Nippon Telegr & Teleph Corp <Ntt> 耐タンパ証明携帯プログラム配信システム及びその方法
AU2007351552B2 (en) * 2006-11-07 2010-10-14 Security First Corporation Systems and methods for distributing and securing data
US8189769B2 (en) * 2007-07-31 2012-05-29 Apple Inc. Systems and methods for encrypting data
US8281143B1 (en) * 2008-09-29 2012-10-02 Symantec Operating Corporation Protecting against chosen plaintext attacks in untrusted storage environments that support data deduplication
US10372918B2 (en) 2015-02-13 2019-08-06 Nec Corporation Method for storing a data file of a client on a storage entity

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103997407A (zh) * 2013-02-15 2014-08-20 汤姆逊许可公司 用于生成和验证线性同态签名中的承诺的加密设备和方法
JP2015022318A (ja) * 2013-07-16 2015-02-02 日本電気株式会社 暗号化装置、復号装置、暗号化方法および暗号化プログラム
CN104717067A (zh) * 2013-12-17 2015-06-17 中国移动通信集团辽宁有限公司 基于非交互式零知识的安全验证方法、设备及系统
WO2016155804A1 (en) * 2015-03-31 2016-10-06 Nec Europe Ltd. Method for verifying information
CN105491006A (zh) * 2015-11-13 2016-04-13 河南师范大学 云外包密钥共享装置及方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114223175A (zh) * 2020-02-06 2022-03-22 谷歌有限责任公司 在防止获取或操控时间数据的同时生成网络数据的序列
CN114223175B (zh) * 2020-02-06 2024-07-30 谷歌有限责任公司 在防止获取或操控时间数据的同时生成网络数据的序列
US12069157B2 (en) 2020-02-06 2024-08-20 Google Llc Generating sequences of network data while preventing acquisition or manipulation of time data
CN111338572A (zh) * 2020-02-18 2020-06-26 电子科技大学 一种可调节加密重复数据删除方法
CN112822009A (zh) * 2021-01-26 2021-05-18 西安邮电大学 一种支持密文去重的属性密文高效共享系统
CN112822009B (zh) * 2021-01-26 2022-07-22 西安邮电大学 一种支持密文去重的属性密文高效共享系统

Also Published As

Publication number Publication date
CN110637441B (zh) 2023-05-02
GB2576289A (en) 2020-02-12
GB201917321D0 (en) 2020-01-15
DE112018001285B4 (de) 2020-11-19
US10277395B2 (en) 2019-04-30
JP2020521369A (ja) 2020-07-16
DE112018001285T5 (de) 2019-12-19
WO2018211446A1 (en) 2018-11-22
GB2576289B (en) 2020-08-12
US20180337775A1 (en) 2018-11-22
JP6959994B2 (ja) 2021-11-05

Similar Documents

Publication Publication Date Title
CN110637441B (zh) 应用于数据重复数据删除的加密密钥生成
US12067575B2 (en) Method, system, and computer program product for determining solvency of a digital asset exchange
US11239996B2 (en) Weighted partial matching under homomorphic encryption
Wang et al. Oruta: Privacy-preserving public auditing for shared data in the cloud
Wang et al. Privacy-preserving public auditing for data storage security in cloud computing
Boneh et al. Using level-1 homomorphic encryption to improve threshold DSA signatures for bitcoin wallet security
US11374975B2 (en) TLS integration of post quantum cryptographic algorithms
AU2021370924B2 (en) Certificate based security using post quantum cryptography
JP2022547876A (ja) メッセージの署名のためのシステムおよび方法
Jayapandian et al. Secure and efficient online data storage and sharing over cloud environment using probabilistic with homomorphic encryption
US11991271B2 (en) System and method for quantum resistant public key encryption
US20200044860A1 (en) System and method for quantum resistant digital signature
Rabaninejad et al. An identity-based online/offline secure cloud storage auditing scheme
Akinyele et al. Machine-generated algorithms, proofs and software for the batch verification of digital signature schemes
US20220173915A1 (en) Post-quantum certificate binding
Mishra et al. Dynamic large branching hash tree based secure and efficient dynamic auditing protocol for cloud environment
Zhang et al. IPad: ID-based public auditing for the outsourced data in the standard model
Koziel et al. An exposure model for supersingular isogeny Diffie-Hellman key exchange
KR102070061B1 (ko) 묶음 검증 방법 및 장치
CN114257366A (zh) 信息同态处理方法、装置、设备及计算机可读存储介质
Jain et al. Confidentiality enhanced security model for cloud environment
Sjöberg Post-quantum algorithms for digital signing in Public Key Infrastructures
Awadallah et al. Verifiable homomorphic encrypted computations for cloud computing
Noel et al. Review and analysis of classical algorithms and hash-based post-quantum algorithm
Ma et al. A practical NIZK argument for confidential transactions over account-model 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