CN116888597A - 使用锁定指纹的多密钥安全去重 - Google Patents

使用锁定指纹的多密钥安全去重 Download PDF

Info

Publication number
CN116888597A
CN116888597A CN202280017842.0A CN202280017842A CN116888597A CN 116888597 A CN116888597 A CN 116888597A CN 202280017842 A CN202280017842 A CN 202280017842A CN 116888597 A CN116888597 A CN 116888597A
Authority
CN
China
Prior art keywords
fingerprint
encrypted
key
data
encrypting
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
Application number
CN202280017842.0A
Other languages
English (en)
Inventor
S·R·赫特兹勒尔
J·S·贝斯特
W·海因曼
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 CN116888597A publication Critical patent/CN116888597A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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/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/3236Cryptographic 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 cryptographic hash functions
    • H04L9/3242Cryptographic 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 cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种计算机实现的方法包括计算数据块的指纹,使用指纹密钥对指纹进行加密,以及使用基密钥和经加密的指纹来加密所述数据块。该方法还包括使用用户密钥来加密经加密的指纹以生成双重加密指纹,并将加密的数据块和该双重加密指纹发送到存储系统。存储系统不能访问基密钥、指纹密钥和用户密钥。一种计算机实现的方法包括计算数据块的指纹并使用基密钥和该指纹来加密数据块。该方法还包括使用用户密钥来加密该指纹并将加密的数据块和加密的指纹发送到存储系统。存储系统不能访问基密钥和用户密钥。

Description

使用锁定指纹的多密钥安全去重
背景技术
本发明涉及安全去重(deduplication),更具体地说,本发明涉及在云存储系统和网络中使用锁定指纹的多密钥安全去重。
诸如去重和/或压缩的常规数据缩减技术在应用于加密的数据时不提供有意义的缩减。对各自用唯一加密密钥加密的多个数据集的去重在各种加密算法阻止常规去重过程标识重复数据块的情况下失灵。传统的数据缩减技术也没有在客户端和存储系统之间提供足够的数据隐私性。
例如,一种已知的自带密钥(bring your own key,BYOK)加密技术涉及多方信任系统。尽管所有的数据缩减功能可以由能够访问所有数据的存储系统提供,但是传统的BYOK系统在存储系统和客户端之间不提供数据隐私性,因为存储系统能够访问客户端密钥。第三方密钥服务也可以访问用于加密客户端数据的共享加密密钥。对于这种形式的BYOK加密,数据隐私性只存在于用户之间。
常规静止加密用存储系统已知的密钥对未加密的输入数据进行加密。存储系统可以解密所有数据并对系统中的所有数据执行去重。然而,静止加密不提供数据隐私性。
传统的完全客户端侧加密利用存储系统未知的密钥来加密数据。存储系统仅对用公共密钥加密的数据进行去重。完全客户端侧去重提供了相对较高的数据隐私性,但阻碍了去重效率。
发明内容
根据一个方案,一种计算机实现的方法包括计算数据块的指纹,用指纹密钥加密该指纹,以及用基密钥和经加密的指纹加密该数据块。该方法还包括用用户密钥加密该经加密的指纹以生成双重加密指纹,并将经加密的数据块和双重加密指纹发送到存储系统。存储系统不能访问基密钥、指纹密钥和用户密钥。前述方法为具有不同用户密钥的用户提供了跨密钥集合的去重的益处,同时提供了用户之间的数据隐私性。
该计算机实现的方法可选地包括存储系统被配置为对经加密的数据块执行去重操作。该可选方法使得能够使用利用唯一用户密钥加密的指纹来对经加密的数据进行安全去重。
根据另一个方案,一种系统包括处理器和与处理器集成的、可由处理器执行的、或者与处理器集成并可由处理器执行的逻辑。该逻辑被配置为执行前述方法。
根据另一个方案,一种计算机程序产品包括一个或多个计算机可读存储介质,以及共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令包括用于执行前述方法的程序指令。
根据一个方案,一种计算机实现的方法包括计算数据块的指纹并用基密钥和该指纹来加密数据块。该方法还包括用用户密钥加密指纹并将经加密的数据块和经加密的指纹发送到存储系统。存储系统不能访问基密钥和用户密钥。前述方法提供了以针对攻击的增强保护对经加密的数据进行安全去重的能力。
该计算机实现的方法可选地包括用基密钥加密该数据块,并且指纹使用XTS模式AES加密。该可选方案提供了针对将经加密的块从一个位置移动到另一位置的攻击者的保护,并且作为对数据块进行加密的一部分隐式地加密了初始化向量。
根据另一个方案,一种计算机程序产品包括一个或多个计算机可读存储介质,以及共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令包括用于执行前述方法的程序指令。
从以下详细描述中,本发明的其它方面和方案将变得显而易见,当结合附图时,以下详细描述通过示例的方式示出了本发明的原理。
附图说明
图1示出了根据本发明一个方面的云计算环境。
图2示出了根据本发明的一个方面的抽象模型层。
图3是根据本发明的一个方面的高级架构的图。
图4是根据本发明的一个方面的高级架构的图。
图5是根据本发明的一个方面的方法的流程图。
图6是根据本发明的一个方面的方法的流程图。
具体实施方式
以下描述是为了说明本发明的一般原理,而不是为了限制这里要求保护的发明概念。此外,本文所述的特定特征可与其它描述的特征按照各种可能的组合和排列中的每一种使用。
除非本文另有明确定义,所有术语将被给予其最广泛的可能解释,包括说明书中暗示的含义以及本领域技术人员理解的和/或词典、论文等中定义的含义。
还必须注意,如在说明书和所附权利要求中所使用的,单数形式“一”、“一个”和“该”包括复数指示物,除非另有说明。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
以下描述公开了使用锁定指纹的多密钥安全去重的若干方面。
在一个一般方面,一种计算机实现的方法包括计算数据块的指纹,用指纹密钥加密该指纹,以及用基密钥和经加密的指纹加密该数据块。该方法还包括用用户密钥加密经加密的指纹以生成双重加密指纹,并将经加密的数据块和双重加密指纹发送到存储系统。存储系统不能访问基密钥、指纹密钥和用户密钥。
在另一个一般方面,一种系统包括处理器和与处理器集成、可由处理器执行、或者与处理器集成并可由处理器执行的逻辑。该逻辑被配置为执行前述方法。
在另一个一般方面,一种计算机程序产品包括一个或多个计算机可读存储介质,以及共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令包括用于执行前述方法的程序指令。
在又一个一般方面,一种计算机实现的方法包括计算数据块的指纹并用基密钥和该指纹加密数据块。该方法还包括用用户密钥加密指纹并将经加密的数据块和经加密的指纹发送到存储系统。存储系统不能访问基密钥和用户密钥。
在另一个一般方面,一种计算机程序产品包括一个或多个计算机可读存储介质,以及共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令包括用于执行前述方法的程序指令。
应当理解,尽管本公开包括关于云计算的详细描述,但是本文所记载的教导的实现不限于云计算环境。相反,本发明的各方面能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便的按需网络访问,所述可配置计算资源可以以最小的管理努力或与服务的提供者的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助:云消费者可以单方面地自动地根据需要提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者进行人工交互。
广域网接入:能力在网络上可用,并且通过促进由异构的薄或厚客户端平台(例如,移动电话、膝上型计算机和PDA)使用的标准机制来访问。
资源池化:供应商的计算资源被集中以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。
快速弹性:在一些情况下,可以快速且弹性地提供快速向外扩展的能力和快速向内扩展的能力。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用服务的提供者和消费者两者提供透明性。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。应用程序可通过诸如web浏览器(例如,基于web的电子邮件)等瘦客户端界面从各种客户端设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至个别应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的应用部署到云基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其它基本计算资源,所述软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储、部署的应用的控制,以及可能对选择的联网组件(例如,主机防火墙)的有限控制。
部署模型如下:
私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于建筑物内或建筑物外。
社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公共云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
混合云:云基础设施是两个或更多云(私有、共同体或公共)的组合,所述云保持唯一实体,但是通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。
云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
现在参考图1,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,所述本地计算设备例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图1中所示的计算设备54A-N的类型仅旨在说明,并且计算节点10和云计算环境50可以通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参考图2,示出了由云计算环境50(图1)提供的一组功能抽象层。应当预先理解,图2中所示的组件、层和功能仅旨在说明,本发明的各方面不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储装置65;以及网络和网络组件66.在一些方面,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其它资源的动态采购。计量和定价82提供了在云计算环境中利用资源时的成本跟踪,以及用于消耗这些资源的开帐单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务级别管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(SLA)规划和履行85提供对云计算资源的预安排和采购,其中根据SLA预期未来需求。
工作负载层90提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:绘图和导航91;软件开发和生命周期管理92;虚拟教室教育传送93;数据分析处理94;交易处理95;以及使用锁定指纹的多密钥安全去重96。
诸如去重和/或压缩的常规数据缩减技术在应用于加密的数据时不提供有意义的缩减。对各自用唯一加密密钥加密的多个数据集的去重在各种加密算法阻止常规去重过程标识重复数据块的情况下失灵。传统的数据缩减技术也没有在客户端和存储系统之间提供足够的数据隐私性。
用于安全去重的自留密钥(keep your own key,KYOK)方法实现了加密数据的去重,而无需访问任何其他客户端的加密密钥。来自客户端密钥的数据可以对照该密钥中的其它数据被去重。本公开的各个方面向具有不同用户密钥的用户提供跨密钥集合的去重的益处,同时提供用户之间的数据隐私性。本公开使得能够使用利用唯一用户密钥加密的指纹来安全地去重加密数据,而存储系统不能访问共享密钥或用户密钥,并且不在用户之间共享用户密钥。
本公开的至少一些方面提供了KYOK安全去重的附加能力,其允许客户端使用多个密钥来加密数据。各个方面通过增加去重能够操作的数据集来改进KYOK的去重。与传统的加密和/或去重技术相比,本文描述的各种方法保持数据隐私性并提高了数据隐私性。使用锁定指纹的多密钥加密数据去重的各种操作提供了比传统的完全客户端侧加密相对更好的数据缩减,以及比客户端侧去重更少的客户端开销。
本公开的各方面使得能够对加密数据进行数据去重,而无需去重层访问加密密钥。当在主机处加密数据且不与存储装置共享数据加密密钥时,增强了数据的安全性。在常规系统中,一旦数据被加密,则去重和/或压缩数据的能力显著降低。与之鲜明对比的是,本公开的至少一些方面利用用不同密钥创建的锁定指纹来实现对加密数据的数据去重以提供密码隔离。由本文描述的各个方面提供的优点是基本上没有向数据所有者泄露关于去重的信息,同时提供了提高的数据隐私性和数据完整性。
至少由于本文所述的原因,加密数据的去重对于存储行业来说是有问题的。用于对加密数据进行去重的常规方法包括收敛性或确定性的加密,其中对相同的明文数据进行加密以便提供相同的密文。此外,常规的收敛性加密不提供对使用不同密钥加密的数据进行去重的能力,因为以不同密钥加密的相同明文将不产生相同密文。在常规的去重过程中,如果主机系统向存储系统发送加密数据,则对以不同密钥加密的相同明文数据的去重将失败(例如,不发生去重),因为这些常规过程不针对相同明文输入创建相同密文。传统的收敛性加密是一种加密形式,其对于相同的明文输入创建相同的密文,但是不允许在用户之间提供密码隔离的不同密钥。本公开允许具有这种收敛特性的加密数据的去重,同时需要不同的密钥来解密。
这里描述的至少一些操作可以与对称密钥加密和/或非对称密钥加密(例如,公钥基础设施(PKI))一起使用。本领域普通技术人员应当理解,PKI加密可以根据本领域已知的任何配置来执行。例如,PKI中的公钥不是秘密密钥,并且用公钥加密数据需要对应的秘密私钥来解密。
遍及本公开的各个方面的客户端与具有单独的数据访问权限的一组进程、用户、其他实体等相关联。如本领域普通技术人员将理解的,主机系统可以具有经由主机系统向存储系统写入/读取数据的任何数量的用户。在各个方面,假定不相交组件之间的所有通信都发生在相互认证的安全(例如,加密的)会话上。
图3是根据各种配置的高级架构的图。架构300可根据本发明在各种配置的图1-2和4-6中描述的任何环境等中实现。当然,如本领域技术人员在阅读本说明书时将理解的,在架构300中可以包括比图3中具体描述的元件更多或更少的元件。
架构300示出了用于使用利用唯一用户密钥加密的指纹来对加密数据进行安全去重的示例性方法。架构300示出了用于安全去重的示例性写入操作。架构300包括主机系统302和存储系统304。存储系统304可以是本领域已知的任何类型的存储系统。本领域普通技术人员应当理解,存储系统304可以具有比这里列出的更多或更少的组件。存储系统304优选地执行本文描述的各种去重操作。
在各个方面,存储系统304被配置为使用本领域已知的任何数据去重技术来执行数据去重。存储系统304优选地通过计算数据上的指纹并检查数据块的指纹是否与另一数据块的指纹匹配来对输入数据块执行去重,这将在下面进一步详细描述。响应于确定数据块的指纹匹配,可对数据块进行去重(例如,以本领域已知的方式,仅存储数据块的一个副本,并且具有匹配指纹的任何其他数据块指向所存储的数据块)。
主机系统302包括密钥组306(例如,一组密钥)。密钥组306包括基密钥kb 308、指纹密钥kf 310以及用户密钥k0 312、k1 314和k2 316。在由属于密钥组306的用户密钥k0312、k1 314和k2 316的持有者所写入的数据之间允许去重。在以不属于密钥组306的密钥写入的数据之间不允许去重。在各个方面中,指纹密钥和基密钥在密钥组中的用户之间共享。用户密钥不在密钥组中的用户之间共享。在各个方面,不允许针对被写入为明文的数据进行去重。
对于写入操作318,写入数据320被传递到分块器322。分块器322将写入数据320分成数据块。在优选方面,分块器322将写入数据320分成固定长度数据块。在其它方面,考虑到预期的应用和/或设计,分块器322以本领域已知的方式将写入数据320分成可变大小的长度的数据块。在操作324中,输出数据块被传递到指纹生成器326,然后在操作328中,被发送到第一指纹加密器/解密器330。指纹生成器326以本领域已知的方式生成数据块的指纹。在优选方面,指纹生成器326使用本领域中的任何密码散列算法(包括MD5、SHA-1、SHA-256等)来计算指纹。第一指纹加密器/解密器330以本领域已知的方式使用指纹密钥kf 310来加密和/或解密指纹。在优选方面,第一指纹加密器/解密器330使用指纹密钥kf 310加密和/或解密指纹,以生成加密的指纹。
在各个方面中,使用带密钥散列消息验证码(HMAC)来计算指纹。HMAC在RFC 2104中定义,并且是密钥、消息和加密散列的函数。HMAC有效地计算由密钥加密的消息的指纹。如图3所示,HMAC可以将由指纹生成器326生成的指纹与由第一指纹加密器/解密器330加密的加密元素(例如,加密的指纹)进行组合。HMAC消息将是数据块明文(例如,如在操作324中传递的数据块中那样),并且密钥是指纹密钥kf 310。
在操作332中,加密的指纹被发送到第二指纹加密器/解密器334,以便以用户密钥进一步加密。用户密钥优选地是不与密钥组中的其他用户共享的密钥。如图所示,(例如,执行写入操作的)用户与用户密钥k1 314相关联,并且第二指纹加密器/解密器334以本领域已知的方式利用用户密钥k1 314对加密的指纹进行加密,以生成双重加密指纹。在各个方面,双重加密指纹可以被可互换地称为“锁定指纹”。
在至少一些方法中,对于固定块存储,将(例如,写入数据320的)明文块的逻辑块地址用作用于加密指纹的用户密钥加密的初始化向量(IV)(例如,或用于微调密码模式的“微调(tweak)”)。逻辑块地址可以在操作333中被发送到第二指纹加密器/解密器334以用作初始化向量,如图3所示。在至少一些方面,可以使用AES-XTS类型的加密。AES-XTS加密提供了针对将加密块从一个位置移动到另一位置的攻击者的保护。
如图3所示,在操作336中,双重加密指纹(例如,锁定指纹,其是用指纹密钥加密然后用用户密钥加密的数据块的指纹)被发送到元数据存储338。在一种方法中,如图3所示,元数据存储338与数据存储340分离地存储在分开的存储设备中。在另一种方法中,元数据存储338可以与数据存储340组合。
在一些方法中,在操作342中,写入数据320的数据块被发送至压缩单元344。压缩单元344以本领域已知的方式压缩数据,以便为相同的输入产生相同的压缩输出。在操作346中,将压缩的数据块发送到数据加密器/解密器348。数据加密器/解密器348可以是AES-XTS类型的。在替代方法中,由数据加密器/解密器348执行的数据加密可以是嵌套类型的,其中首先使用基密钥kb 308或使用加密的指纹(其由第一指纹加密器/解密器330输出并在操作350中被发送到数据加密器/解密器348)作为指纹密钥来加密写入数据320的输入数据块,然后使用基密钥kb 308或加密的指纹中的另一个作为加密密钥来进一步加密数据块。在一种方法中,以本领域已知的方式,将基密钥kb 308用作加密密钥,并将在操作350中发送的加密的指纹用作IV。在操作352中,输出密文数据块被发送到数据存储340。
如上所述,在优选方面,数据加密器/解密器348以需要基密钥kb308和加密的指纹两者来解密数据块并恢复明文数据块的方式操作。数据加密器/解密器348具有输入数据块产生相同的加密数据块(例如,如本文所述,其在操作352中被输出并发送到数据存储340)的属性。该属性允许存储系统304出于去重的目的来识别数据(例如,存储系统304能够以本领域已知的方式识别对于去重而言“匹配”的加密数据块,即使存储系统304看不到明文数据(例如,明码的数据))。
写入输入数据的结果是存储系统304存储加密的数据块和相关联的双重加密指纹(例如,在第一指纹加密器/解密器330处使用指纹密钥kf 310加密,然后在第二指纹加密器/解密器334处使用用户密钥k1 314进一步加密)。存储系统304可以以维持该关系的方式存储加密的数据块和相关联的双重加密指纹。例如,加密的指纹(例如,双重加密指纹)可被存储在将双重加密指纹与加密的数据块相关联的元数据存储338中。
在其他方法中,存储系统包括加密的数据块和双重加密指纹,其中“双重加密”是指在第一指纹加密器/解密器330处使用指纹密钥kf 310加密、然后在第二指纹加密器/解密器334处通过本文描述的AES-XTS类型加密来加密的指纹。在一种方法中,以本领域普通技术人员在阅读本公开后将变得显而易见的方式,存储系统304是块存储,并且元数据可以包括数据块的逻辑块地址作为关联信息。
在一些方法中,以本领域普通技术人员在阅读本公开后将变得显而易见的方式,存储系统将静止加密应用于数据和/或元数据,而不影响多密钥安全去重的操作。静止加密有利地为数据和/或元数据提供了附加的安全级别。例如,如本领域普通技术人员将理解的,获得物理数据访问(例如,诸如通过从存储系统窃取存储设备)的攻击者将需要拥有客户端加密密钥、客户端共享密钥、客户端非共享密钥和存储加密密钥以绕过附加静止加密。
图4是根据各种配置的高级架构的图。根据本发明,可以在图1-3和5-6中描述的任何环境中以各种配置来实现架构400。当然,如本领域技术人员在阅读本描述时将理解的,在架构400中可以包括比图4中具体描述的元件更多或更少的元件。
架构400示出了用于使用利用唯一用户密钥加密的指纹来对加密数据进行安全去重的示例性方法。架构400示出了用于安全去重的示例性读取操作。架构400包括主机系统302和存储系统304。存储系统304可以是本领域已知的任何类型的存储系统。本领域普通技术人员应当理解,存储系统304可以具有比这里列出的更多或更少的组件。存储系统304优选地执行本文描述的各种去重操作。
在各个方面,存储系统304被配置为使用本领域已知的任何数据去重技术来执行数据去重。存储系统304优选地通过计算数据上的指纹并检查数据块的指纹是否与另一数据块的指纹匹配来对输入数据块执行去重,这将在下面进一步详细描述。响应于确定数据块的指纹匹配,可对数据块进行去重(例如,以本领域已知的方式,仅存储数据块的一个副本,并且具有匹配指纹的任何其他数据块指向所存储的数据块)。
主机系统302包括密钥组306(例如,一组密钥)。密钥组306包括基密钥kb 308、指纹密钥kf 310以及用户密钥k0 312、k1 314和k2 316。在由属于密钥组306的用户密钥k0312、k1 314和k2 316的持有者所写入的数据之间允许去重。在以不属于密钥组306的密钥写入的数据之间不允许去重。在各个方面中,指纹密钥和基密钥在密钥组中的用户之间共享。用户密钥不在密钥组中的用户之间共享。在各个方面,不允许针对被写入为明文的数据进行去重。
在操作402,发出对数据的读取请求。在固定块存储的情况下,读取是在一组逻辑块地址处的数据。在操作404,将读请求传递至数据存储340以读取数据(例如,与读取请求相关联的加密的数据块),并且在操作406,将读取请求传递至元数据存储338以读取相关联的元数据(例如,与和读取请求相关联的数据块相关联的双重加密指纹)。在操作408,将加密的数据块发送到数据加密器/解密器348,其以本领域普通技术人员在阅读本公开时将理解的方式,使用用于加密/解密的基密钥kb 308和IV来解密加密的数据块。
在操作410,将相关联的元数据(例如,与加密的数据块相关联的双重加密指纹)发送到第二指纹加密器/解密器334,其以本领域普通技术人员在阅读本公开时将理解的方式,使用用户密钥k1 314来解密双重加密指纹,以产生加密的指纹(例如,用指纹密钥kf310加密的单一加密指纹)。第二指纹加密器/解密器334可以以适当的用户密钥(例如,与数据相关联的用户)对数据指纹进行加密或解密,如本领域普通技术人员在阅读本公开时将理解的。例如,如果用户拥有用户密钥k1 314,则第二指纹加密器/解密器334利用用户密钥k1 314解密双重加密指纹,以取回加密的指纹。在各种方法中,在操作412中将数据块的位置信息(例如,固定块存储的逻辑块地址)发送至第二指纹加密器/解密器334,其中位置信息是用于加密/解密的IV。
在操作414中,将由第二指纹加密器/解密器334输出的加密指纹(例如,单一加密指纹)作为IV发送到数据加密器/解密器348。数据加密器/解密器348使用基密钥kb 308作为解密密钥,并在操作416中输出数据块。
在可选的方法中,解压缩技术用于以本领域普通技术人员在阅读本公开时将理解的方式,使用解压缩单元418来解压缩数据块以提供明文数据块。在操作420中,将明文数据块发送到去块器(dechunker)422。
可通过在操作424中将输出数据块发送到指纹生成器326来测试端到端数据完整性。指纹生成器326与第一指纹加密器/解密器330一起操作,如以上参考图3关于写入操作所描述的。指纹生成器326产生解密的数据块的加密指纹。在操作428中,将该生成的加密指纹发送到比较器426。在操作430中,另一加密指纹(由第二指纹加密器/解密器334输出)被发送到比较器426。比较器426以本领域已知的方式比较加密指纹。如果没有错误和/或没有篡改,则加密指纹的两个值应该相同,这对于本领域的普通技术人员在阅读本公开时将变得显而易见。在操作432中,将比较结果发送到去块器422。如果比较成功(例如,加密指纹匹配),则去块器422可以本领域公知的方式响应于读取请求将读取数据434转发给用户。如果比较不成功,则可以以本领域已知的方式输出错误,并且不转发数据。系统可以采取适当的动作,包括进一步的确定技术,用于识别不匹配是否是错误、篡改、攻击等的结果。系统可以尝试通过其它手段来恢复数据,诸如经由复制品、纠删码等,如果这种恢复技术可用的话。
现在参看图5,示出了根据一个方面的方法500的流程图。在各个方面,方法500可根据本发明在图1-4和6中描述的任何环境中执行。当然,如本领域技术人员在阅读本说明书时将理解的,方法500中可以包括比图5中具体描述的操作更多或更少的操作。
方法500的每个步骤可以由操作环境的任何合适的组件来执行。例如,在各个方面,方法500可以部分地或完全地由计算机或其中具有一个或多个处理器的某其它设备来执行。可以在任何设备中利用处理器(例如,以硬件和/或软件实现的并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)来执行方法500的一个或多个步骤。说明性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合、或本领域已知的任何其它合适的计算设备。
如图5所示,方法500包括操作502。操作502包括计算数据块的指纹。在各个方面,响应于写入请求,可以以本领域已知的任何方式将写入数据分成数据块。数据块可以是固定长度的,或者可以是可变长度的。根据本领域的任何密码散列算法,包括MD5、SHA-1、SHA-256等,为每个数据块计算指纹。数据块的指纹可以以本领域已知的任何方式来计算。
操作504包括用指纹密钥加密指纹。在优选方面,指纹密钥是主机系统上的密钥组的一部分。密钥组可以包括指纹密钥、基密钥和至少一个用户密钥。在优选方面,指纹密钥和基密钥在密钥组的用户之间共享,以便能够对以密钥组中的任何密钥写入的数据进行去重。用户密钥不在密钥组的用户之间共享。优选地,允许在由属于密钥组的用户密钥的持有者写入的数据之间进行去重,这对于本领域普通技术人员在阅读本公开时将变得显而易见。指纹密钥加密器可以利用指纹密钥加密指纹,如本领域普通技术人员在阅读本公开时将理解的。
在一些方法中,操作502和操作504可以被组合成基本上一个过程。例如,计算指纹和加密指纹可以是HMAC的一部分,其中HMAC消息是数据块明文并且加密密钥是指纹密钥。
操作506包括用基密钥和加密指纹来加密数据块。基密钥可以属于如上所述的密钥组。如本领域普通技术人员在阅读本公开时将理解的,用基密钥和加密指纹来加密数据块优选地包括使用基密钥作为加密密钥并使用加密指纹作为第一初始化向量。
在一种方法中,在用基密钥和加密指纹进行加密之前,可使用本领域已知的任何数据压缩技术来压缩数据块。在一些方法中,可以在分块之前和/或之后应用各种压缩技术。在一种配置中,预分块压缩可以是一种提高分块性能的压缩类型。在另一配置中,可将分块后压缩调整为使所得块大小最小化。
在优选方面,需要基密钥和加密指纹两者来解密数据块(例如,响应于读取请求来恢复明文数据块)。相同的数据块产生相同的加密数据块(例如,用基密钥和加密指纹加密的数据块)。该性质使得存储系统能够出于去重的目的而识别数据,如本领域普通技术人员在阅读本公开之后将变得显而易见的。
操作508包括用用户密钥来加密经加密的指纹以生成双重加密指纹。在各个方面,双重加密指纹可以被可互换地称为“锁定指纹”。在优选方面,用户密钥是密钥组的成员,其使得能够对以属于密钥组的密钥写入的数据进行去重,如上所述。用户密钥优选地是不与属于密钥组的其他用户(例如,具有作为密钥组的一部分的用户密钥的其他用户)共享的密钥。在各个方面中,双重加密指纹是指首先用指纹密钥加密(例如,以如操作504中那样生成加密指纹)并且随后用用户密钥再次加密(例如,加密指纹被加密)(例如,以生成双重加密指纹)的指纹。
在一个可选方法中,用用户密钥加密经加密的指纹以生成双重加密指纹包括以本领域普通技术人员在阅读本公开时将理解的方式使用逻辑块地址作为第二初始化向量。逻辑块地址优选地是数据块的逻辑块地址。在至少一些方法中,逻辑块地址可以包括与数据块相关联的一组逻辑块地址。在各个方面,逻辑块地址可以用作初始化向量,用于通过将假数据或移动的数据替换到存储系统中来防止不良行为人读取数据。作为初始化向量的逻辑块地址提供了对正在被写入/读取的数据的位置的附加验证。例如,如果存储系统试图响应于读取请求而从错误位置返回数据,则因为位置(例如,逻辑块地址)是加密的一部分,所以替换不起作用。
操作510包括将加密的数据块和双重加密指纹发送到存储系统。存储系统不能访问基密钥、指纹密钥和用户密钥中的任何一个。加密的数据块和双重加密指纹可以以本领域已知的方式被发送到存储系统。存储系统被配置为出于去重的目的而识别数据。例如,存储系统能够以本领域已知的方式识别对于去重而言“匹配”的加密数据块,即使存储系统看不到明文数据(例如,明码的数据)或不能访问密钥组中的任何密钥。
存储系统可以以维持该关系的方式存储加密的数据块和相关联的双重加密指纹。例如,经加密的指纹(例如,双重加密指纹)可被存储在将双重加密指纹与数据块相关联的元数据存储中。在一种方法中,双重加密指纹的元数据存储与加密数据块的数据存储分开存储(例如,分开的存储设备)。在另一种方法中,元数据存储可以与数据存储相结合。在组合用于加密数据块和双重加密指纹的存储时存在很少风险或不存在风险,其中存储系统不能访问指纹密钥、基密钥和用户密钥中的任何一个。存储系统优选地不能访问任何共享密钥。存储系统不能访问任何非共享密钥(例如,用户密钥)。
在其他方法中,存储系统包括加密的数据块和双重加密指纹,其中“双重加密”是指使用指纹密钥加密、然后通过本文描述的AES-XTS类型加密来加密的指纹。在一种方法中,以本领域普通技术人员在阅读本公开后将变得显而易见的方式,存储系统是块存储,并且元数据可以包括数据块的逻辑块地址作为关联信息。
在示例性说明性方面,第一用户可以使用第一用户密钥k0存储数据,并且第二用户可以使用第二用户密钥k1存储相同的数据。用户密钥k0和k1是同一密钥组的一部分。指纹和数据块被如上详细描述的那样加密并存储。在该说明性方面,在存储系统中对共同的加密数据块进行去重,并且第一用户和第二用户各自在存储系统处存储双重加密指纹(其中每个双重加密指纹分别用第一用户密钥k0和第二密钥k1加密)。第一用户和第二用户可以各自响应于对存储系统的读取请求而检索共同的加密数据块,并使用他们的相关联的用户密钥对加密数据块及其双重加密指纹进行解密。使用第三用户密钥k2的第三用户将不能解密加密数据块(其在第一用户和第二用户之间是共同的),其中第三用户不能访问正确的用户密钥以解密双重加密指纹中的任一个,即使第三用户是共享指纹密钥和基密钥的密钥组的一部分。
在各种方法中,存储系统可以接收对存储在存储系统中的数据的读取请求。响应于读取请求,存储系统可以将与读取请求相关联的(多个)加密数据块和(多个)双重加密指纹返回到请求数据的主机系统。主机系统使用用户密钥对双重加密指纹进行解密以产生加密指纹(例如,用指纹密钥加密的单一加密指纹)。主机系统使用加密指纹作为IV,以基密钥作为解密密钥来输出解密的数据块。在可选的方面,可解压缩数据块。在各种方法中,可以以如上所述的方式在输出数据块上计算指纹,并且可以将计算的指纹与加密指纹(例如,利用指纹密钥加密的单一加密指纹)进行比较以测试端到端数据完整性。如果没有错误并且没有篡改,则两个加密指纹应该是相同的。如果加密指纹匹配,则可以返回数据,如对于本领域普通技术人员在阅读本公开时将变得显而易见的。主机系统可以采取适当的动作,包括进一步的确定技术,用于识别任何不匹配是否是错误、篡改、攻击等的结果。主机系统可尝试通过其它手段来恢复数据,诸如经由复制品、纠删码等,如果这种恢复技术可用的话。
现在参看图6,示出了根据一个方面的方法600的流程图。在各个方面,方法600可以根据本发明在图1-5中所描绘的任何环境中执行。当然,如本领域技术人员在阅读本说明书时将理解的,方法600中可以包括比图6中具体描述的操作更多或更少的操作。
方法600的每个步骤可以由操作环境的任何合适的组件来执行。例如,在各个方面,方法600可以部分地或完全地由计算机或其中具有一个或多个处理器的某其它设备来执行。可以在任何设备中利用处理器(例如,以硬件和/或软件实现的并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)来执行方法600的一个或多个步骤。说明性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合、或本领域已知的任何其它合适的计算设备。
如图6所示,方法600包括操作602。操作602包括计算数据块的指纹。在各个方面,响应于写入请求,可以以本领域已知的任何方式将写入数据分成数据块。数据块可以是固定长度的,或者可以是可变长度的。根据本领域的任何密码散列算法,包括MD5、SHA-1、SHA-256等,为每个数据块计算指纹。数据块的指纹可以以本领域已知的任何方式来计算。
操作604包括用基密钥和指纹来加密数据块。在优选方面,基密钥是主机系统上的密钥组的一部分。所述密钥组可以包括基密钥和至少一个用户密钥。在优选方面,在密钥组的用户之间共享基密钥,以便能够对以属于密钥组的密钥写入的数据进行去重。如本领域普通技术人员在阅读本公开时将理解的,用基密钥和指纹来加密数据块优选地包括使用基密钥作为加密密钥并使用指纹作为第一初始化向量。
在各个方面,利用基密钥和作为IV的指纹来加密数据使用XTS模式AES加密。使用XTS模式利用基密钥和作为IV的指纹来加密数据隐式地加密IV作为加密数据块的一部分。指纹(例如,用作对数据块进行加密的输入IV的未加密指纹)保持未加密,如本领域普通技术人员在阅读本公开后将显而易见的。
操作606包括用用户密钥对指纹进行加密。在优选方面,用户密钥是密钥组的成员,其使得能够对以属于密钥组的密钥写入的数据进行去重,如上所述。用户密钥优选地是不与属于密钥组的其他用户(例如,具有作为密钥组的一部分的用户密钥的其他用户)共享的密钥。如在操作606中用用户密钥来加密指纹优选地生成加密的指纹,其中指纹以用户密钥来加密(例如,单一加密)。在这些方法中,以本领域普通技术人员在阅读本公开后将变得显而易见的方式,用用户密钥加密指纹以生成单一加密指纹可包括使用与数据块相关联的逻辑块地址作为用于使用用户密钥来加密指纹的第二初始化向量。
操作608包括将加密的数据块和加密的指纹发送到存储系统。存储系统不能访问基密钥和用户密钥中的任何一个。可以以本领域已知的方式将加密的数据块和加密的指纹发送到存储系统。存储系统被配置为出于去重的目的而识别数据。例如,存储系统能够以本领域已知的方式识别对于去重而言“匹配”的加密数据块,即使存储系统看不到明文数据(例如,明码的数据)或不能访问密钥组中的任何密钥。
存储系统可以以维持该关系的方式存储加密的数据块和相关联的加密指纹。例如,加密指纹可被存储在将加密指纹与数据块相关联的元数据存储中。在一种方法中,用于加密指纹的元数据存储与用于加密数据块的数据存储分开存储(例如,分开的存储设备)。在另一种方法中,元数据存储可以与数据存储组合。在组合用于加密数据块和加密指纹的存储时存在很少风险或不存在风险,其中存储系统不能访问基密钥和用户密钥中的任何一个。存储系统优选地不能访问任何共享密钥。存储系统不能访问任何非共享密钥(例如,用户密钥)。
这里描述的使用锁定指纹的加密方法的益处包括以针对攻击的增强保护对加密数据进行安全去重的能力。例如,如果不良行为人试图访问存储系统中的数据,即使他们已经访问了用于对数据或指纹加密的共享密钥之一(例如,基密钥或指纹密钥),不良行为人也将不能在没有访问在加密中使用的初始化向量(例如,加密指纹、HMAC、逻辑块地址等)的情况下访问明码的数据。此外,如果不良行为人能够访问非共享用户密钥,则他们将仍然需要知道逻辑块地址以解密元数据(例如,双重加密指纹)以便访问明文数据。本文描述的至少一些方面提供了若干保护级别和数据隐私性,同时使得能够对以不同用户密钥加密的数据进行去重。
本发明可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk、C++等)和过程编程语言(例如“C”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以作为一个步骤来实现,同时、基本同时、以部分或全部时间重叠的方式执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
此外,根据各种实施例的系统可以包括处理器和与处理器集成和/或可由处理器集成的逻辑,该逻辑被配置为执行本文所述的过程步骤中的一个或多个。所谓与其集成,是指处理器具有与其一起嵌入的逻辑作为硬件逻辑,诸如专用集成电路(ASIC)、FPGA等。通过可由处理器执行,意味着逻辑是硬件逻辑;软件逻辑,例如固件、操作系统的一部分、应用程序的一部分;等等,或者硬件和软件逻辑的某种组合,其可由处理器访问并且被配置成使处理器在由处理器执行时执行某种功能。软件逻辑可以存储在任何存储器类型的本地和/或远程存储器上,如本领域所公知的。可以使用本领域已知的任何处理器,诸如软件处理器模块和/或硬件处理器,诸如ASIC、FPGA、中央处理单元(CPU)、集成电路(IC)、图形处理单元(GPU)等。
很清楚,前述系统和/或方法的各种特征可以以任何方式组合,从而从以上所呈现的描述中产生多个组合。
还应当理解,本发明的实施例可以以代表客户部署的服务的形式提供,以便按需提供服务。
已经出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。

Claims (25)

1.一种计算机程序产品,所述计算机程序产品包括:
一个或多个计算机可读存储介质,以及共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令包括:
用于计算数据块的指纹的程序指令,
用于使用指纹密钥(310)对所述指纹进行加密的程序指令,
用于使用基密钥(308)和加密的指纹来加密所述数据块的程序指令,
用于使用用户密钥(314)来加密所述加密的指纹以生成双重加密指纹的程序指令;以及
用于将加密的数据块和所述双重加密指纹发送到存储系统的程序指令,其中所述存储系统不能访问所述基密钥(308)、所述指纹密钥(310)和所述用户密钥(314)。
2.根据权利要求1所述的计算机程序产品,其中,计算所述指纹和加密所述指纹是使用带密钥散列消息验证码来执行的。
3.根据权利要求1所述的计算机程序产品,其中,使用所述基密钥(308)和所述加密的指纹来加密所述数据块包括使用所述加密的指纹作为第一初始化向量来加密所述数据块。
4.根据权利要求1所述的计算机程序产品,其中,使用所述用户密钥(314)来加密所述加密的指纹以生成所述双重加密指纹包括使用逻辑块地址作为第二初始化向量。
5.根据权利要求1所述的计算机程序产品,其中所述存储系统被配置为对所述加密的数据块执行去重操作。
6.一种计算机程序产品,所述计算机程序产品包括:
一个或多个计算机可读存储介质,以及共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令包括:
用于计算数据块的指纹的程序指令;
用于使用基密钥(308)和所述指纹来加密所述数据块的程序指令;
用于使用用户密钥(314)来加密所述指纹的程序指令;以及
用于将加密的数据块和加密的指纹发送到存储系统的程序指令,其中所述存储系统不能访问所述基密钥(308)和所述用户密钥(314)。
7.根据权利要求6所述的计算机程序产品,其中,利用所述基密钥(308)和所述指纹来加密所述数据块包括使用所述指纹作为第一初始化向量来加密所述数据块。
8.根据权利要求6所述的计算机程序产品,其中,使用所述用户密钥(314)来加密所述指纹以生成加密的指纹包括使用逻辑块地址作为第二初始化向量。
9.根据权利要求6所述的计算机程序产品,其中,所述存储系统被配置为对所述加密的数据块执行去重操作。
10.根据权利要求6所述的计算机程序产品,其中,使用所述基密钥(308)和所述指纹来加密所述数据块使用XTS模式AES加密。
11.一种计算机实现的方法,包括:
计算数据块的指纹,
使用指纹密钥(310)来加密所述指纹,
使用基密钥(308)和加密的指纹来加密所述数据块,
使用用户密钥(314)来加密所述加密的指纹以生成双重加密指纹;以及
将加密的数据块和所述双重加密指纹发送到存储系统,其中所述存储系统不能访问所述基密钥(308)、所述指纹密钥(310)和所述用户密钥(314)。
12.根据权利要求11所述的方法,其中,计算所述指纹和加密所述指纹是使用带密钥散列消息验证码来执行的。
13.根据权利要求11所述的方法,其中,使用所述基密钥(308)和所述加密的指纹来加密所述数据块包括使用所述加密的指纹作为第一初始化向量来加密所述数据块。
14.根据权利要求11所述的方法,其中,使用所述用户密钥(314)来加密所述加密的指纹以生成所述双重加密指纹包括使用逻辑块地址作为第二初始化向量。
15.根据权利要求11所述的方法,其中,所述存储系统被配置为对所述加密的数据块执行去重操作。
16.一种计算机实现的方法,包括:
计算数据块的指纹,
使用基密钥(308)和所述指纹来加密所述数据块,
使用用户密钥(314)来加密所述指纹;以及
将加密的数据块和加密的指纹发送到存储系统,其中所述存储系统不能访问所述基密钥(308)和所述用户密钥(314)。
17.根据权利要求16所述的方法,其中,使用所述基密钥(308)和所述指纹来加密所述数据块包括使用所述指纹作为第一初始化向量来加密所述数据块。
18.根据权利要求16所述的方法,其中,使用所述用户密钥(314)来加密所述指纹以生成加密的指纹包括使用逻辑块地址作为第二初始化向量。
19.根据权利要求16所述的方法,其中,所述存储系统被配置为对所述加密的数据块执行去重操作。
20.根据权利要求16所述的方法,其中,使用所述基密钥(308)和所述指纹来加密所述数据块使用XTS模式AES加密。
21.一种系统,包括:
处理器;以及
与处理器集成的、能由处理器执行的、或者与处理器集成并且能由处理器执行的逻辑,该逻辑被配置为:
计算数据块的指纹,
使用指纹密钥(310)来加密所述指纹,
使用基密钥(308)和加密的指纹来加密所述数据块,
使用用户密钥(314)来加密所加密的指纹以生成双重加密指纹;以及
将加密的数据块和所述双重加密指纹发送到存储系统,其中所述存储系统不能访问所述基密钥(308)、所述指纹密钥(310)和所述用户密钥(314)。
22.根据权利要求21所述的系统,其中,计算所述指纹和加密所述指纹是使用带密钥散列消息认证码来执行的。
23.根据权利要求21所述的系统,其中,使用所述基密钥(308)和所述加密的指纹来加密所述数据块包括使用所述加密的指纹作为第一初始化向量来加密所述数据块。
24.根据权利要求21所述的系统,其中,使用所述用户密钥(314)来加密所加密的指纹以生成所述双重加密指纹包括使用逻辑块地址作为第二初始化向量。
25.根据权利要求21所述的系统,其中,所述存储系统被配置为对所述加密的数据块执行去重操作。
CN202280017842.0A 2021-03-03 2022-02-25 使用锁定指纹的多密钥安全去重 Pending CN116888597A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/191,430 US20220284110A1 (en) 2021-03-03 2021-03-03 Multi-key secure deduplication using locked fingerprints
US17/191,430 2021-03-03
PCT/EP2022/054845 WO2022184591A1 (en) 2021-03-03 2022-02-25 Multi-key secure deduplication using locked fingerprints

Publications (1)

Publication Number Publication Date
CN116888597A true CN116888597A (zh) 2023-10-13

Family

ID=80952327

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280017842.0A Pending CN116888597A (zh) 2021-03-03 2022-02-25 使用锁定指纹的多密钥安全去重

Country Status (5)

Country Link
US (1) US20220284110A1 (zh)
EP (1) EP4302218A1 (zh)
JP (1) JP2024507647A (zh)
CN (1) CN116888597A (zh)
WO (1) WO2022184591A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11620393B1 (en) * 2022-05-14 2023-04-04 Aswath Premaradj System and method for facilitating distributed peer to peer storage of data

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070143212A1 (en) * 2005-11-09 2007-06-21 Electronic Arts Inc. Online product distribution using fingerprint and encryption
US8479304B1 (en) * 2009-03-31 2013-07-02 Symantec Corporation Selectively protecting against chosen plaintext attacks in untrusted storage environments that support data deduplication
US8799367B1 (en) * 2009-10-30 2014-08-05 Netapp, Inc. Using logical block addresses with generation numbers as data fingerprints for network deduplication
US8930686B2 (en) * 2009-12-23 2015-01-06 International Business Machines Corporation Deduplication of encrypted data
US8661259B2 (en) * 2010-12-20 2014-02-25 Conformal Systems Llc Deduplicated and encrypted backups
US9116849B2 (en) * 2013-03-13 2015-08-25 Intel Corporation Community-based de-duplication for encrypted data
US9537657B1 (en) * 2014-05-29 2017-01-03 Amazon Technologies, Inc. Multipart authenticated encryption
US10248800B2 (en) * 2014-10-22 2019-04-02 Openeye Scientific Software, Inc. Secure comparison of information
US9813248B2 (en) * 2015-05-27 2017-11-07 Quest Software Inc. Content-based encryption keys
US11144227B2 (en) * 2017-09-07 2021-10-12 Vmware, Inc. Content-based post-process data deduplication
US10963177B2 (en) * 2018-04-30 2021-03-30 EMC IP Holding Company LLC Deduplication using fingerprint tries

Also Published As

Publication number Publication date
WO2022184591A1 (en) 2022-09-09
US20220284110A1 (en) 2022-09-08
EP4302218A1 (en) 2024-01-10
JP2024507647A (ja) 2024-02-21

Similar Documents

Publication Publication Date Title
US11930099B2 (en) Implementing resilient deterministic encryption
CN116491098A (zh) 使用后量子密码学的基于证书的安全性
US11917072B2 (en) Implementing opportunistic authentication of encrypted data
US11295028B2 (en) Multi-key encrypted data deduplication
US11632246B2 (en) Hybrid key derivation to secure data
US11265144B2 (en) Consistent ciphertext creation
WO2021033072A1 (en) Opaque encryption for data deduplication
GB2546612A (en) Password-authenticated public key encryption and decryption
AU2021274544B2 (en) Identification of a creator of an encrypted object
US11743241B2 (en) Secure data movement
CN116888597A (zh) 使用锁定指纹的多密钥安全去重
US11165760B2 (en) Increasing security of objects in cloud environments by using a two-part encryption scheme
US10680801B2 (en) Data distribution against credential information leak
US12019767B2 (en) Image encryption
US11683182B2 (en) Message embedment in random values

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