CN116635847A - 实现弹性确定性加密 - Google Patents

实现弹性确定性加密 Download PDF

Info

Publication number
CN116635847A
CN116635847A CN202180082513.XA CN202180082513A CN116635847A CN 116635847 A CN116635847 A CN 116635847A CN 202180082513 A CN202180082513 A CN 202180082513A CN 116635847 A CN116635847 A CN 116635847A
Authority
CN
China
Prior art keywords
instance
plaintext
initialization vector
computer
secret key
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
CN202180082513.XA
Other languages
English (en)
Inventor
G·A·雅克塔
D·哈尼克
W·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 CN116635847A publication Critical patent/CN116635847A/zh
Pending legal-status Critical Current

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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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
    • 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
    • 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/20Manipulating the length of blocks of bits, e.g. padding or block truncation
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • 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/30Compression, e.g. Merkle-Damgard construction

Landscapes

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

Abstract

一种计算机实现的方法,包括:利用明文实例和机密秘钥来创建初始化向量;利用初始化向量、机密密钥和明文实例对明文实例进行加密;将初始化向量与经加密的明文实例组合以创建密文串;以及向执行去重的存储设备发送密文串。

Description

实现弹性确定性加密
背景技术
本发明涉及数据加密,并且更具体地涉及实现促进数据去重的数据的确定性加密。
确定性加密在数据存储装置中是有用的,因为它允许在这样的数据存储装置内标识和移除经加密的数据的副本。长度保留压缩(LPC)是使得存储系统能够对已经在主机处持久加密的数据执行数据的去重的概念。然而,LPC实现的当前方法导致可以通过已知方法规避的系统。因此,期望一种避免这样的规避的改进的确定性加密解决方案。
发明内容
根据一个方面的计算机实现的方法,包括:利用明文实例和机密秘钥来创建初始化向量;利用初始化向量、机密密钥和明文实例对明文实例进行加密;将初始化向量与经加密的明文实例组合以创建密文串;以及向执行去重的存储设备发送密文串。
根据另一个方面,初始化向量作为元数据被添加到经加密的明文实例。
根据另一个方面,初始化向量和经加密的明文实例被组合成在执行读操作时被解析的单个数据块。
以此方式,可以针对数据实例创建并存储完全确定性的密文串,并且由于利用机密密钥计算初始化向量和经加密的明文实例两者,因此避免了安全漏洞。
根据另一个方面,一种用于实现弹性确定性加密的计算机程序产品,该计算机程序产品包括具有随其被体现的程序指令的计算机可读存储介质,其中计算机可读存储介质本身不是暂态信号,并且其中程序指令由处理器可执行以使处理器执行包括以下项的方法,:由处理器利用明文的实例和机密密钥来创建初始化向量;由处理器利用初始化向量、机密密钥和明文实例对明文实例进行加密;由处理器将初始化向量与经加密的明文实例组合以创建密文串;以及由处理器向执行去重的存储设备发送密文串。
根据另一个方面,一种系统,包括:处理器;以及与处理器集成、由处理器可执行、或者与处理器集成并且由处理器可执行的逻辑,其中逻辑被配置为:利用明文实例和机密密钥来创建初始化向量;使用初始化向量、机密密钥及明文实例对明文实例进行加密;将初始化向量与经加密的明文实例组合以创建密文串;以及向执行去重的存储设备发送密文串。
根据另一个方面,一种计算机实现的方法,包括:分析数据存储装置中的多个密文串,其中多个密文串中的每个密文串通过将初始化向量和经加密的明文实例组合而被创建,经加密的明文实例利用初始化向量、机密密钥和明文实例来而被加密,并且初始化向量利用明文实例和机密密钥而被创建;以及基于分析,从数据存储装置移除一个或多个冗余密文串。
根据以下具体实施方式,本发明的其它方面和实施例将变得清楚明白,当结合附图时,以下具体实施方式通过示例的方式示出了本发明的原理。
附图说明
图1示出了根据本发明一个方面的云计算环境。
图2示出了根据本发明的一个方面的抽象模型层。
图3示出了根据本发明一个方面的云计算节点。
图4示出了根据本发明的一个方面的分层数据存储系统。
图5示出了根据本发明的一个方面的用于实现弹性确定性加密的方法的流程图。
图6示出了根据本发明的一个方面的用于执行数据去重的方法的流程图。
图7示出了根据本发明的一个方面的用于执行数据解密的方法的流程图。
具体实施方式
以下描述是为了说明本发明的一般原理,而不是为了限制本文中所要求保护的发明概念。此外,本文所述的特定特征可以与其它所述特征以各种可能的组合和排列组合使用。
除非本文中另有明确定义,否则所有术语将被给予其最广泛的可能解释,包括从说明书暗示的含义以及由本领域技术人员理解的和/或在词典、论文等中定义的含义。
还必须注意,如在说明书和所附权利要求中使用的,单数形式“一”、“一个”和“该”包括复数对象,除非另有说明。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定所述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
以下描述公开了实现弹性确定性加密的若干方面。
在一个一般方面,一种计算机实现的方法,包括:利用明文实例和机密秘钥来创建初始化向量;利用初始化向量、机密密钥和明文实例对明文实例进行加密;将初始化向量与经加密的明文实例组合以创建密文串;以及向执行去重的存储设备发送将密文串。
在另一个一般方面,初始化向量作为元数据被添加到经加密的明文实例。
在另一个一般方面,初始化向量和经加密的明文实例被组合成在执行读操作时被解析的单个数据块。
以此方式,可以针对数据实例创建并且存储完全确定性的密文串,并且由于利用机密密钥计算初始化向量和经加密的明文实例两者都,因此避免了安全漏洞。
在另一个一般方面,一种用于实现弹性确定性加密的计算机程序产品,该计算机程序产品包括具有随其被体现的程序指令的计算机可读存储介质,其中计算机可读存储介质本身不是暂态信号,并且其中程序指令由处理器可执行以使处理器执行包括以下项的方法:由处理器利用明文的实例和机密密钥来创建初始化向量;由处理器利用初始化向量、机密密钥和明文实例对明文实例进行加密;由处理器将初始化向量与经加密的明文实例组合以创建密文串;以及由处理器向执行去重的存储设备发送密文串。
在另一个一般方面,一种系统,包括:处理器;以及与处理器集成、由处理器可执行、或者与处理器集成并且由处理器可执行的逻辑,其中逻辑被配置为:利用明文实例和机密密钥来创建初始化向量;使用初始化向量、机密密钥及明文实例对明文实例进行加密;将初始化向量与经加密的明文实例组合以创建密文串;以及向执行去重的存储设备发送密文串。
在另一个一般方面,一种计算机实现的方法,包括:分析数据存储装置中的多个密文串,其中该多个密文串中的每个密文串通过将初始化向量与经加密的明文实例组合而被创建,经加密的明文实例利用初始化向量、密钥和明文实例而被加密,并且初始化向量利用明文实例和机密密钥而被创建;以及基于分析,从数据存储装置移除一个或多个冗余密文串。
应当理解,尽管本公开包括关于云计算的详细描述,但是本文中所述的教导的实现不限于云计算环境。相反,本发明的各方面能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
云计算是一种服务递送的模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储装置、应用、虚拟机和服务)的共享池的方便的按需网络访问,可配置计算资源可以以最小的管理努力或与服务的提供方的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下:
按需自服务:云消费方可以单方面地自动根据需要提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供方进行人工交互。
广域网接入:能力在网络上可用,并且通过促进由异构的薄或厚客户端平台(例如,移动电话、膝上型计算机和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。
现在参看图3,示出了云计算节点的示例的示意图。云计算节点10仅是合适的云计算节点的一个示例,并且不旨在对本文所述的本发明的各方面的使用范围或功能提出任何限制。无论如何,云计算节点10能够被实现和/或执行上文阐述的任何功能。
在云计算节点10中,存在计算机系统/服务器12,其可与许多其他通用或专用计算系统环境或配置操作。适合与计算机系统/服务器12使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、薄客户端、厚客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统、以及包括上述系统或设备中的任意项的分布式云计算环境等。
计算机系统/服务器12可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图3中所示,云计算节点10中的计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28以及将包括系统存储器28的各种系统组件耦合到处理器16的总线18。
总线18表示若干类型的总线结构中的任何类型的总线结构的一个或多个总线结构,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任何总线架构的处理器或局部总线。作为示例而非限制,这样的架构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围组件互连(PCI)总线。
计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器12可访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和非可移动介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或缓存存储器32。计算机系统/服务器12还可以包括其他可移动/非可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统34可以被提供用于从非可移动、非易失性磁介质(未示出,并且通常被称为“硬盘驱动”)读取和向其写入。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动,以及用于从诸如CD-ROM、DVD-ROM或其它光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动。在这种情况下,每一个都可以通过一个或多个数据介质接口连接到总线18。如下面将进一步描绘和描述的,存储器28可以包括至少一个程序产品,该至少一个程序产品具有被配置为执行本发明的各方面的功能的一组(例如,至少一个)程序模块。
具有一组(至少一个)程序模块42的程序/实用程序40,以及操作系统、一个或多个应用程序、其它程序模块和程序数据,可以作为示例而非限制的方式存储在存储器28中。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现。程序模块42通常执行本文所述的本发明的各方面的功能和/或方法。
计算机系统/服务器12还可以与以下项通信:一个或多个外部设备14,诸如键盘、指示设备、显示器24等;使得用户能够与计算机系统/服务器12交互的一个或多个设备;和/或使得计算机系统/服务器12能够与一个或多个其它计算设备通信的任何设备(例如,网卡、调制解调器等)。这样的通信可以经由输入/输出(I/O)接口22发生,然而,计算机系统/服务器12可以经由网络适配器20与一个或多个网络通信,所述网络诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网)。如图所示,网络适配器20经由总线18与计算机系统/服务器12的其它组件通信,应当理解,尽管未示出,其它硬件和/或软件组件可以与计算机系统/服务器12结合使用,示例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动和数据档案存储系统等。
现在参看图4,示出了根据一个方面的存储系统400。注意,根据各个方面,图4中所示的一些元件可以被实现为硬件和/或软件。存储系统400可以包括用于与至少一个较高存储层402和至少一个较低存储层406上的多个介质通信的存储系统管理器412。(多个)较高存储层402优选地可以包括一个或多个随机存取和/或直接存取介质404,例如硬盘驱动(HDD)中的硬盘、非易失性存储器(NVM)、固态驱动(SSD)中的固态存储器、闪存、SSD阵列、闪存阵列等,和/或本文中提到的或本领域已知的其它介质。(多个)较低存储层406优选地可以包括一个或多个较低性能的存储介质408,包括顺序存取介质,例如磁带驱动中的磁带和/或光学介质、较慢存取的HDD、较慢存取的SSD等,和/或本文提到的或本领域已知的其它介质。一个或多个附加存储层416可包括系统400的设计者所期望的存储存储器介质的任何组合。而且,较高存储层402和/或较低存储层406中的任何一个可以包括存储设备和/或存储介质的某种组合。
存储系统管理器412可以通过网络410,例如图4所示的存储区域网络(SAN),或一些其它适当的网络类型,与较高存储层402和较低存储层406上的存储介质404、408通信。存储系统管理器412还可以通过主机接口414与一个或多个主机系统(未示出)通信,主机接口可以是或可以不是存储系统管理器412的一部分。存储系统管理器412和/或存储系统400的任何其它组件可以以硬件和/或软件实现,并且可以利用用于执行本领域已知类型的命令的处理器(未示出),诸如中央处理单元(CPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等。当然,可以使用存储系统的任何布置,如本领域技术人员在阅读本说明书时将显而易见的。
在更多方面,存储系统400可以包括任何数目的数据存储层,并且可以在每个存储层内包括相同或不同的存储存储器介质。例如,每个数据存储层可以包括相同类型的存储存储器介质,例如HDD、SSD、顺序存取介质(磁带驱动中的磁带、光盘驱动中的光盘等)、直接存取介质(CD-ROM、DVD-ROM等)或介质存储类型的任何组合。在一个这样的配置中,较高存储层402可以包括用于在较高性能存储环境中存储数据的SSD存储介质的大部分,并且包括较低存储层406和附加存储层416的剩余存储层可以包括用于在较低性能存储环境中存储数据的SSD、HDD、磁带驱动等的任何组合。这样,更频繁访问的数据、具有更高优先级的数据、需要更快访问的数据等可以存储到更高存储层402,而不具有这些属性之一的数据可以存储到包括更低存储层406的附加存储层416。当然,本领域技术人员在阅读本说明书时,可以根据本文所呈现的方面设计存储介质类型的许多其他组合以实现为不同的存储方案。
根据一些方面,存储系统(诸如,400)可以包括被配置为接收打开数据集的请求的逻辑、被配置为确定在多个相关联的部分中所请求的数据集是否被存储到分层数据存储系统400的较低存储层406的逻辑、被配置为将所请求的数据集的每个相关联的部分移动到分层数据存储系统400的较高存储层402的逻辑、以及被配置为从相关联的部分将所请求的数据集组合到分层数据存储系统400的较高存储层402上的逻辑。
当然,根据各个方面,该逻辑可以被实现为任何设备和/或系统上的方法或者计算机程序产品。
现在参看图5,其示出了根据一个方面的方法500的流程图。在各个方面,方法500可根据本发明在图1-4中所描绘的任何环境中执行。当然,如本领域技术人员在阅读本说明书时将理解的,方法500中可以包括比在图5中具体描述的操作更多或更少的操作。
方法500的每个步骤可以由操作环境的任何合适的组件执行。例如,在各个方面,方法500可以部分地或完全地由一个或多个服务器、计算机或其中具有一个或多个处理器的某个其他设备执行。可以在任何设备中利用处理器(例如,以硬件和/或软件实现的并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)来执行方法500的一个或多个步骤。说明性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合或本领域已知的任何其它合适的计算设备。附加的示例性组件包括一个或多个协处理器或加速器,其可以与CPU在同一芯片上或者可以不与CPU在同一芯片上或者封装在同一基板或模块上。
如图5所示,方法500可从操作502开始,其中利用数据实例和机密密钥来创建初始化向量(IV)。在一个方面,数据实例可以包括要加密的数据。在另一方面,数据实例可包括明文实例。
另外,在一个方面,可以压缩数据实例,并且可基于经压缩的数据实例来计算IV。在另一方面,机密密钥可以包括用于加密的、不可公开获得的信息(例如,由执行数据实例的加密的实体持有的信息)。在又一方面,机密密钥也可被称为私钥。
此外,在一个方面,IV可以是带密钥的散列的全部或子集。例如,带密钥的散列可以通过将密码散列函数应用于机密密钥和明文而产生。在另一示例中,散列函数可以任何次序应用于机密密钥和明文(例如,首先应用于机密密钥,然后应用于明文,或者首先应用于明文,然后应用于机密密钥)。在又一示例中,散列函数可以将机密密钥和明文映射到构成带密钥的散列的固定大小的散列值。在一个方面,散列函数可以包括一种类型的安全散列算法-256(SHA-256)密码散列函数,诸如SHA2-256或SHA3-256。
此外,在一个方面,IV可以包括涉及散列密钥和明文的带密钥散列消息认证码/基于散列的消息认证码(HMAC)计算。在另一方面,散列密钥可以与用于加密数据的机密密钥相同,或者可以通过密钥推导与机密密钥相关联(例如,散列密钥可以从机密密钥推导,或者机密密钥可以从散列密钥推导),并且可以使用密码散列或使用加密算法,或者通过使用散列与加密的组合,来计算带密钥的散列。
例如,可以通过利用散列加密密钥对明文的散列进行加密来确定带密钥的散列。散列加密密钥是一种类型的散列密钥,因此可以与用于加密数据的机密密钥相同,或者可以通过密钥推导与机密密钥相关。当使用散列加密密钥时,所使用的加密算法可以与高级加密标准(AES)加密算法的使用128比特密钥(即,ECB-AES-128)的电子码本(ECB)模式一样简单。在另一方面,散列密钥也可以独立于机密密钥生成,并且如果是,则散列密钥将需要被保存,使得它可以与机密密钥用于在相同密钥下执行进一步加密以允许数据去重。独立生成的散列密钥可以有助于IV的唯一性。如果IV将被检查为匹配通过使用该IV创建的密文的解密的明文结果是,则独立生成的散列密钥也将必须被保存。
此外,方法500可继续进行操作504,其中利用IV、机密密钥和数据实例来加密数据实例。在一个方面,加密数据实例可以产生经加密的数据实例(例如,密文等)。在另一方面,经加密的数据实例可以包括利用IV和机密密钥将加密模式(例如,加密算法)应用于数据实例。
另外,在一个方面,加密模式可以包括取决于IV或诸如CBC、PCBC、CFB、OFB、OCB、CTR、CCM或GCM等一次性数(nonce)的加密模式。例如,基于计数器的加密模式(例如,CTR、GCM等)可以将IV与任意计数器值组合以创建第一值。然后,只要需要,就可以递增该第一值以创建计数流。然后,可以利用机密密钥对计数流进行块密码加密(例如,高级加密标准(AES)加密等),以创建密码流。然后,数据实例可以与密码流组合(例如,使用异或(XOR)运算)以创建经加密的数据实例。
此外,在一个方面,加密模式可以包括伽罗瓦/计数器模式(GCM)加密模式。例如,GCM加密模式可以确定数据实例内的块的数目。块的数目可以与IV组合以创建第一值。然后可以利用机密密钥对第一值执行块密码加密(例如,高级加密标准(AES)加密等)以创建第二值。然后,数据实例可以与第二值组合(例如,使用XOR运算)以创建经加密的数据实例。
此外,在一个方面,加密模式可以包括使用IV密码块链接消息认证码(CCM)加密模式。在另一方面,可以将带密钥的散列的长度与用于加密数据实例的加密模式的所需要的IV长度进行比较。
例如,响应于确定带密钥的散列的长度等于加密模式所需要的最小IV长度(以使得散列冲突的机会足够可忽略),带密钥的散列可以被用作IV来利用加密模式执行加密。在另一个示例中,响应于确定带密钥的散列的长度大于加密模式所需要的IV长度,可以使用带密钥的散列的预定子集(例如,其第一字节、预定长度等)来利用加密模式执行加密。
而且,在一个方面,数据实例可以在被加密之前被压缩。在另一方面,经加密的数据实例可以包括密文实例(例如,通过将加密算法应用于明文而得到的经加密的文本等)。
此外,方法500可以继续进行操作506,其中IV和经加密的数据实例被组合以创建密文串。在一个方面,IV可以被连接到经加密的数据实例以创建密文串。在另一方面,IV可作为元数据被添加到经加密的数据实例。在又一方面,IV和经加密的数据实例可以被组合成在执行读操作时被解析的单个数据块。
此外,在一个方面,可以利用经加密的数据实例和IV来实现长度保留压缩(LPC)。例如,数据实例可以在被加密之前被压缩以创建经加密的压缩数据实例。在另一个示例中,指示经加密的压缩数据实例的长度的长度值、经加密的压缩数据实例和零填充字段(高度可压缩且可容易检测的模式,诸如全零)可以以任何预定(或者,自描述)次序连接以创建密文串,该密文串的长度与压缩之前的原始数据实例的长度相同。
而且,在一个方面,可以扩展LPC以实现去重。例如,数据实例可以在被加密之前被压缩以创建经加密的压缩数据实例。在另一示例中,IV(利用经压缩的数据实例和机密密钥来创建)、MAC(利用经压缩的数据实例和机密密钥来创建)、指示经加密的压缩数据实例的长度的长度值、和/或零填充字段可以被附加到经加密的压缩数据实例以创建密文串,该密文串的长度与原始数据实例在压缩之前的长度相同。
此外,方法500可以继续进行操作508,其中密文串被发送到执行去重的存储设备。在一个方面,密文串存储设备可以包括数据库、分布式存储系统、云计算环境等。在另一个示例中,密文串可以经由一个或多个网络发送到一个或多个用户、一个或多个设备、一个或多个远程存储系统等。此外,可以在存储设备内执行数据去重。
这样,可以为数据实例创建和存储完全确定性的密文串。密文串是完全确定性的,因为使用上述技术,如果第一数据实例与第二数据实例相同并且第一密钥与第二密钥相同,则使用第一密钥为第一数据实例创建的第一密文串可以与使用第二密钥为第二数据实例创建的第二密文串相同。结果是,复制密文串可以在硬件存储装置内被标识并且可以被移除,从而增加硬件存储装置内的可用存储空间,并且改进硬件存储装置的有效存储容量和性能,同时经由鲁棒加密来维持所存储的数据的安全性。
更具体地说,由于IV和经加密的数据实例都是用机密密钥计算的,因此避免了安全漏洞。
现在参看图6,示出了根据一个方面的用于执行数据去重的方法600的流程图。在各个方面,方法600可以根据本发明在图1-4中所描绘的任何环境中执行。当然,如本领域技术人员在阅读本说明书时将理解的,方法600中可以包括比图6中具体描述的操作更多或更少的操作。
方法600的每个步骤可以由操作环境的任何合适的组件执行。例如,在各个方面,方法600可以部分地或完全地由一个或多个服务器、计算机或其中具有一个或多个处理器的某个其他设备执行。可以在任何设备中利用处理器(例如,以硬件和/或软件实现的并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)来执行方法600的一个或多个步骤。说明性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合或本领域已知的任何其它合适的计算设备。附加的示例性组件包括一个或多个协处理器或加速器,其可以与CPU在同一芯片上或者可以不与CPU在同一芯片上或者封装在同一基板或模块上。
如图6所示,方法600可以开始于操作602,其中分析数据存储装置中的多个密文串。在一个方面,数据存储装置可以包括数据库、分布式存储系统、云计算环境等。在另一方面,分析可以包括将数据存储装置内的单个密文串与数据存储装置内的其他密文串进行比较,以确定数据存储装置内是否存在任何匹配(例如,副本)。如果是,则两个实例中的一个实例可以由指向实现数据去重的重复实例的指针来替换。
在又一方面,多个密文串中的每个密文串可以通过将IV和经加密的数据实例组合来创建。在另一方面,经加密的数据实例可以使用IV、机密密钥和数据实例来加密。在又一方面,IV可以利用数据实例和机密密钥来创建。
另外,在一个方面,可以将单个密文串的一部分与数据存储装置内的其他密文串的部分进行比较。例如,密文串可以包括连接到加密数据实例的IV。在另一个示例中,IV可以具有预定大小,并且可以从密文串提取,并且与从其他存储的密文串提取的其他IV进行比较。
此外,方法600可以继续进行操作604,其中基于该分析,从数据存储装置移除一个或多个冗余密文串。在一个方面,响应于确定在数据存储装置内对于给定密文串找到一个或多个匹配/副本,可以从数据存储装置移除(例如,删除、迁移等)给定密文串的一个或多个实例,并且利用指向所保留实例的指针来替换。在另一方面,可以从数据存储装置移除重复的密文串,使得密文串的单个实例保留在数据存储装置中。
结果是,可在数据存储装置内执行去重,这可使数据存储装置内的可用存储空间的有效量最大化,由此提高数据存储装置的存储容量。
现在参看图7,示出了根据一个方面的用于执行数据解密的方法700的流程图。在各个方面,方法700可以根据本发明在图1-4中所描述的任何环境中执行。当然,如本领域技术人员在阅读本说明书时将理解的,方法700中可以包括比图7中具体描述的操作更多或更少的操作。
方法700的每个步骤可以由操作环境的任何合适的组件来执行。例如,在各个方面,方法700可以部分地或完全地由一个或多个服务器、计算机或其中具有一个或多个处理器的某个其他设备来执行。可以在任何设备中利用处理器(例如,以硬件和/或软件实现的并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)来执行方法700的一个或多个步骤。说明性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合或本领域已知的任何其它合适的计算设备。附加的示例性组件包括一个或多个协处理器或加速器,其可以与CPU在同一芯片上或者可以不与CPU在同一芯片上或者封装在同一基板或模块上。
如图7所示,方法700可以开始于操作702,其中接收密文串。在一个方面,密文串可以从数据存储装置(例如,数据库、分布式存储系统、云计算环境等)中检索。
另外,方法700可以继续进行操作704,其中利用机密密钥对密文串进行解密。在一个方面,如果密文串包括MAC,则可以检查MAC以查看其是否有效。在另一方面,如果MAC无效,则可使用机密密钥对密文进行解密。
在另一方面,密文串可以通过将IV和经加密的数据实例组合来创建。在另一方面,经加密的数据实例可以使用IV、机密密钥和数据实例来加密。在又一方面,IV可以利用数据实例和机密密钥来创建。
此外,在一个方面,对密文串进行解密可以产生数据实例以及第一IV。在另一方面,解密密文串可以包括利用机密密钥和IV来解密密文内的IV。
此外,在一个方面,对密文串进行解密可以包括反转加密模式用来对数据实例进行加密的步骤。在另一个实施例中,扇区解密的前两个步骤可以包括解析密文串以检测密文串是否在扇区的已知位置(例如,第一或最后一个字段)包括足够长度的零填充字段。根据字段的预定次序,如果存在零填充,则在解析扇区的其余部分之前,零填充是潜在地可检测的。在另一方面,可以利用数据实例和机密密钥来计算第二IV。
而且,在一个方面,可以将第一IV与第二IV进行比较,以确定密文串是否被修改。例如,如果第一IV与第二IV相匹配,则可以确定密文串在其被创建之后没有被修改。在另一示例中,如果第一IV与第二IV不匹配,则可以确定密文串在其被创建之后被破坏或修改。
弹性确定性加密
长度保留压缩(LPC)是一种概念,如果被适当扩展,则其有希望作为一种使得存储系统能够对已经在主机处持久加密的数据执行数据去重的方式。通过所述方式,LPC实现的过于简单化的方法可能导致系统容易被已知攻击破坏。因此,提供了一种确定性加密解决方案,其改进了易受这种攻击的两种其他类型的确定性加密。这种解决方案可以被认为是收敛加密的派生。
当前的实现对于某些攻击是不安全的。例如,利用有限数目的输入填写的很大程度上固定的表格可以创建有限数量的IV(以及由此的密文),这些IV然后都可以由攻击方生成并且与通过收敛加密来创建的IV(或者,全密文)进行比较。如果存在匹配,则可确定明文。
概念上类似的加密概念(即在实现上不同)也被称为收敛加密。该实现要求明文的简单散列,以替代地用作基于计数器模式的加密(例如,计数器(CTR)加密、伽罗瓦/计数器模式(GCM)加密等)的IV。这个概念是一种也易受攻击的确定性加密形式。
因此,提供了一种方法,其实现收敛加密而不会受到上述攻击的攻击。该方法使用带密钥的散列作为IV。该带密钥的散列可以是跨数据和散列密钥计算的散列、基于数据和散列密钥计算的HMAC、或者明文数据的简单密码散列的加密(例如,使用电子码本(ECB)加密等)。散列密钥可以与用于加密主机数据的密钥具有密钥推导关系,或者可以独立于其生成。然后,在加密期间,使用带密钥的散列或其子集作为IV。该IV通常(例如,在LPC的情况下)将与所得到的密文一起发送。
通过在计算带密钥的散列(其被用作IV)时包括具有独立于主机数据的高熵的散列密钥,该实现消除了上述弱点,因为IV和所得密文都是用攻击方不具有的机密密钥来加密地创建的。这种新的实现被称为弹性确定性加密(RDE)。
加密
对于使用机密密钥Kd利用RDE对明文P进行加密,一个示例性方面将包括创建带密钥的散列(例如,基于Kd),然后将该带密钥的散列用作针对使用IV和Kd两者的加密模式的初始化向量(IV)。
在一个方面,Kd可以与特定租户相关联,作为安全多租户解决方案的一部分。在另一方面,Kd可以与给定租户的操作内的用户和/或应用(例如,人力资源、财务等)的子集相关联。
下面描述了一种类型的带密钥的散列Hk的生成:
Hk=hash(Kd||P)
合适的密码“散列”函数的示例将是SHA2-256、SHA3-256或另一标准化密码散列。下面描述加密结果CX的生成:
CX=encrypt_data(Kd,Hk,P)
“encrypt_data”函数可以是CTR(密钥,IV,明文)加密,如果要创建并附加消息认证码(MAC)则可以是GCM,或者是需要IV或一次性数的其它密码模式。
如果“散列”函数输出大于所需要的IV,或者所选择的加密模式将被接受,则可以使用散列的子集。例如,IV可以被设置为三十二字节SHA-256输出中的前十二(或者,十六,取决于需要)个字节。如果使用诸如GCM的认证加密模式,则CX还包括结尾MAC(例如,GCM-MAC)。在任一情况下,CX都比被加密的P长(例如,至少长IV,并且可能也长MAC)。
存储/传输
在生成加密结果CX之后,传输或存储CX。如所构造的CX对于机密密钥(Kd)和明文(P)的任何给定组合是完全确定性的,这允许从相同明文的不同实例创建的不同密文串(CXs)被相互去重。
解密
下面描述使用密钥Kd对加密结果CX进行解密以获得初始化向量IV和明文P:
decrypt_data(Kd,CX)=>IV和P
在一个方面中,如果使用经认证模式(例如,GCM)来进行加密,那么仅响应于确定已确认集成MAC有效而传递IV和P的值或将其信任为有效。
在另一方面,IV可以用于确认加密结果CX中没有任何内容被修改。更具体地说,给定机密密钥Kd和明文P,加密结果CX的接收/读取器能够计算机密密钥Kd和明文P的带密钥的散列(例如,散列(Kd||P)),以查看它是否与接收的IV相匹配。如果所计算的散列与IV相匹配,则可以确认加密结果CX的完整性。
在所使用的加密模式未被认证(例如,标准CTR或CBC)的情况下,该完整性检查可以充当一种在明文上计算并在加密之前应用的MAC,如果使用适当的加密模式,则这是安全的。
其他方面
在一个方面,可以调整散列计算的顺序。例如,下面描述使用替换顺序的带密钥的散列Hk的生成:
Hk=hash(P||Kd)
通常,可以以任何次序将机密密钥Kd和明文P置于散列函数中。
在另一方面,可以通过散列的加密来计算带密钥的散列。例如,可以从机密密钥Kd推导附加密钥Kh。然后,可以通过以下过程计算带密钥的散列Hk:
encrypt_hash(Kh,hash(P)),
其中“encrypt_hash”可以包括电子码本(ECB)高级加密标准(AES),例如:
ECB_AES_128_encrypt(key,hash(P))。
在另一方面,可以独立于机密密钥Kd生成附加密钥Kh,并且机密密钥Kd和附加密钥Kh都必须被保持以使得能够对加密结果CX进行解密。
在一个方面,一种用于数据的确定性加密的方法包括创建(作为带密钥的散列的形式)数据的加密散列,并且采用该加密散列(或者,其子集)作为用于加密数据的IV。在另一方面,用于创建IV的散列密钥和用于加密主机数据的加密密钥彼此不同。
此外,在一方面,通过将经加密的散列的第一部分用作IV来调整经加密的IV和散列的长度。在另一方面,IV和数据被解密,确定经解密的数据的散列,并且将该散列与IV进行比较以确保数据未被更改。
本发明可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或者,多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(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.一种计算机实现的方法,包括:
利用明文实例和机密密钥来创建初始化向量;
利用所述初始化向量、所述机密密钥和所述明文实例对所述明文实例进行加密;
将所述初始化向量与经加密的所述明文实例组合以创建密文串;以及
向执行去重的存储设备发送所述密文串。
2.根据权利要求1所述的计算机实现的方法,其中所述初始化向量作为元数据被添加到经加密的所述明文实例。
3.根据权利要求1所述的计算机实现的方法,其中所述初始化向量和经加密的所述明文实例被组合成单个数据块,所述单个数据块在执行读操作时被解析。
4.根据权利要求1所述的计算机实现的方法,其中所述明文实例被压缩,并且所述初始化向量基于经压缩的所述明文实例而被创建。
5.根据权利要求1所述的计算机实现的方法,其中所述初始化向量包括通过以已知的次序在所述机密密钥和所述明文实例上应用散列函数而产生的带密钥的散列。
6.根据权利要求1所述的计算机实现的方法,其中用于散列的密钥通过密钥推导与所述机密密钥相关联,并且所述初始化向量包括使用加密算法和用于散列的所述密钥而被计算的带密钥的散列。
7.根据权利要求1所述的计算机实现的方法,其中用于散列的密钥独立于所述机密密钥被生成,并且所述初始化向量包括使用加密算法和用于散列的所述密钥而被计算的带密钥的散列。
8.根据权利要求1所述的计算机实现的方法,其中对所述明文实例进行加密包括利用所述初始化向量和所述机密密钥将加密模式应用于所述明文实例。
9.根据权利要求1所述的计算机实现的方法,其中所述初始化向量的长度被与针对被用于对所述明文实例进行加密的加密模式的所需要的初始化向量长度比较,并且:
响应于确定所述初始化向量的长度小于或等于针对所述加密模式的所述所需要的初始化向量长度,所述初始化向量被用于执行利用所述加密模式的加密,以及
响应于确定所述初始化向量的长度大于针对所述加密模式的所述所需要的初始化向量长度,所述初始化向量的子集被用于执行利用所述加密模式的加密。
10.根据权利要求1所述的计算机实现的方法,其中所述明文实例在被加密之前被压缩。
11.根据权利要求1所述的计算机实现的方法,其中所述初始化向量被连接到经加密的所述明文实例以创建所述密文串。
12.一种用于实现弹性确定性加密的计算机程序产品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有随其被体现的程序指令,其中所述计算机可读存储介质本身不是暂态信号,所述程序指令由处理器可执行以使所述处理器执行包括以下项的方法:
由所述处理器利用明文实例和机密密钥来创建初始化向量;
由所述处理器利用所述初始化向量、所述机密密钥和所述明文实例对所述明文实例进行加密;
由所述处理器将所述初始化向量与经加密的所述明文实例组合以创建密文串;以及
由所述处理器向执行去重的存储设备发送所述密文串。
13.根据权利要求12所述的计算机程序产品,其中所述初始化向量作为元数据被添加到经加密的所述明文实例。
14.根据权利要求12所述的计算机程序产品,其中所述初始化向量和经加密的所述明文实例被组合成在执行读操作时被解析的单个数据块。
15.根据权利要求12所述的计算机程序产品,其中所述明文实例被压缩,并且所述初始化向量基于经压缩的所述明文实例而被创建。
16.根据权利要求12所述的计算机程序产品,其中所述初始化向量包括通过首先将散列函数应用于所述机密密钥并且接着应用于所述明文实例而产生的带密钥的散列。
17.根据权利要求12所述的计算机程序产品,其中所述初始化向量包含通过以已知的次序在所述机密密钥和所述明文实例上应用散列函数而产生的带密钥的散列。
18.根据权利要求12所述的计算机程序产品,其中用于散列的密钥通过密钥推导与所述机密密钥相关联,且所述初始化向量包括使用加密算法和用于散列的所述密钥而被计算的带密钥的散列。
19.根据权利要求12所述的计算机程序产品,其中用于散列的密钥独立于所述机密密钥被生成,并且所述初始化向量包括使用加密算法和用于散列的所述密钥而被计算的带密钥的散列。
20.根据权利要求12所述的计算机程序产品,其中对所述明文实例进行加密包括利用所述初始化向量和所述机密密钥将加密模式应用于所述明文实例。
21.根据权利要求12所述的计算机程序产品,其中所述初始化向量的长度被与针对被用于对所述明文实例进行加密的加密模式的所需要的初始化向量长度比较,并且:
响应于确定所述初始化向量的长度小于或等于针对所述加密模式的所述所需要的初始化向量长度,所述初始化向量被用于执行利用所述加密模式的加密,以及
响应于确定所述初始化向量的长度大于针对所述加密模式的所述所需要的初始化向量长度,所述初始化向量的子集被用于执行利用加密模式的加密。
22.根据权利要求12所述的计算机程序产品,其中所述明文实例在被加密之前被压缩。
23.根据权利要求12所述的计算机程序产品,其中所述初始化向量被连接到经加密的所述明文实例以创建所述密文串。
24.一种系统,包括:
处理器;以及
与所述处理器集成的、由所述处理器可执行的、或者与所述处理器集成并且由所述处理器可执行的逻辑,所述逻辑被配置为:
利用明文实例和机密密钥来创建初始化向量;
利用所述初始化向量、所述机密密钥和所述明文实例对所述明文实例进行加密;
将所述初始化向量与经加密的所述明文实例组合以创建密文串;以及
向执行去重的存储设备发送所述密文串。
25.一种计算机实现的方法,包括:
分析数据存储装置中的多个密文串,其中:
所述多个密文串中的每个密文串通过将初始化向量与经加密的明文实例组合而被创建,
所述经加密的明文实例利用所述初始化向量、机密密钥和明文实例而被加密,并且
所述初始化向量利用所述明文实例和所述机密密钥而被创建;以及
基于所述分析,从所述数据存储装置移除一个或多个冗余密文串。
CN202180082513.XA 2020-12-07 2021-11-04 实现弹性确定性加密 Pending CN116635847A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/114,058 2020-12-07
US17/114,058 US11695541B2 (en) 2020-12-07 2020-12-07 Implementing resilient deterministic encryption
PCT/CN2021/128720 WO2022121573A1 (en) 2020-12-07 2021-11-04 Implementing resilient deterministic encryption

Publications (1)

Publication Number Publication Date
CN116635847A true CN116635847A (zh) 2023-08-22

Family

ID=81849588

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180082513.XA Pending CN116635847A (zh) 2020-12-07 2021-11-04 实现弹性确定性加密

Country Status (6)

Country Link
US (2) US11695541B2 (zh)
JP (1) JP2023551462A (zh)
CN (1) CN116635847A (zh)
DE (1) DE112021005561T5 (zh)
GB (1) GB2617733A (zh)
WO (1) WO2022121573A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11695541B2 (en) 2020-12-07 2023-07-04 International Business Machines Corporation Implementing resilient deterministic encryption
US11818207B1 (en) * 2022-07-08 2023-11-14 T-Mobile Innovations Llc Methods and systems for ledger based content delivery using a mobile edge computing (MEC) server
US11792259B1 (en) 2022-09-28 2023-10-17 T-Mobile Innovations Llc Methods and systems for distributing rendering across devices in a customer premise
CN116192365B (zh) * 2023-01-18 2024-03-22 无锡航天江南数据系统科技有限公司 基于电文服务系统的PPP-B2b信号传输方法及系统

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778395A (en) 1995-10-23 1998-07-07 Stac, Inc. System for backing up files from disk volumes on multiple nodes of a computer network
US6983365B1 (en) 2000-05-05 2006-01-03 Microsoft Corporation Encryption systems and methods for identifying and coalescing identical objects encrypted with different keys
US7406595B1 (en) * 2004-05-05 2008-07-29 The United States Of America As Represented By The Director, National Security Agency Method of packet encryption that allows for pipelining
US8634549B2 (en) * 2008-05-07 2014-01-21 Red Hat, Inc. Ciphertext key chaining
EP2197144A1 (en) * 2008-12-15 2010-06-16 Thomson Licensing Methods and devices for a chained encryption mode
US8218759B2 (en) 2009-04-17 2012-07-10 Oracle America, Inc. System and method for encrypting data
JP5875441B2 (ja) * 2012-03-29 2016-03-02 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データを暗号化する装置及び方法
DE102012208836A1 (de) 2012-05-25 2013-11-28 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur Erzeugung kryptographisch geschützter redundanter Datenpakete
US9673983B2 (en) * 2012-09-14 2017-06-06 Qualcomm Incorporated Apparatus and method for protecting message data
US9419791B2 (en) * 2012-09-21 2016-08-16 Mitsubishi Electric Corporation Hash value calculation device, hash value calculation method, and non-transitory computer-readable storage medium including computer executable instruction
US9407437B1 (en) 2014-03-25 2016-08-02 Amazon Technologies, Inc. Secure initialization vector generation
CA2958913A1 (en) * 2014-08-20 2016-02-25 Electronic Commodities Exchange, L.P. Methods, apparatus and articles of manufacture for a ring advisor system
US9635011B1 (en) * 2014-08-27 2017-04-25 Jonetix Corporation Encryption and decryption techniques using shuffle function
WO2016050287A1 (en) * 2014-09-30 2016-04-07 Nec Europe Ltd. Method and system for at least partially updating data encrypted with an all-or-nothing encryption scheme
US10148424B2 (en) * 2016-09-26 2018-12-04 Bank Of America Corporation Progressive key rotation for format preserving encryption (FPE)
US20180191492A1 (en) 2017-01-04 2018-07-05 International Business Machines Corporation Decryption-Side Initialization Vector Discovery
US10044509B1 (en) * 2017-08-14 2018-08-07 Fmr Llc Method for encrypting and storing data
CN108200172B (zh) 2018-01-03 2020-12-08 西安电子科技大学 一种支持安全数据去重与删除的云存储系统及方法
US11018859B2 (en) 2018-12-30 2021-05-25 EMC IP Holding Company, LLC Deduplication of client encrypted data
US11463242B2 (en) * 2020-05-19 2022-10-04 International Business Machines Corporation Padding oracle elimination in RSA encryption
US20210377016A1 (en) * 2020-05-29 2021-12-02 EMC IP Holding Company LLC Key rollover for client side encryption in deduplication backup systems
US11917072B2 (en) * 2020-12-03 2024-02-27 International Business Machines Corporation Implementing opportunistic authentication of encrypted data
US11601257B2 (en) * 2020-12-04 2023-03-07 International Business Machines Corporation Creating deterministic ciphertext using wide-block encryption
US11695541B2 (en) 2020-12-07 2023-07-04 International Business Machines Corporation Implementing resilient deterministic encryption

Also Published As

Publication number Publication date
US20230291542A1 (en) 2023-09-14
WO2022121573A1 (en) 2022-06-16
JP2023551462A (ja) 2023-12-08
GB202310208D0 (en) 2023-08-16
US11695541B2 (en) 2023-07-04
US20220182217A1 (en) 2022-06-09
GB2617733A (en) 2023-10-18
US11930099B2 (en) 2024-03-12
DE112021005561T5 (de) 2023-08-17

Similar Documents

Publication Publication Date Title
US20200076585A1 (en) Storage device key management for encrypted host data
US11930099B2 (en) Implementing resilient deterministic encryption
US11917072B2 (en) Implementing opportunistic authentication of encrypted data
TWI773960B (zh) 用於以加密金鑰指令計算數位簽章驗證標記之電腦程式產品、電腦系統及電腦實施方法
US11601257B2 (en) Creating deterministic ciphertext using wide-block encryption
US11295028B2 (en) Multi-key encrypted data deduplication
US11265144B2 (en) Consistent ciphertext creation
WO2023052869A1 (en) Secure encryption of partial blocks
WO2021033072A1 (en) Opaque encryption for data deduplication
AU2021274544B2 (en) Identification of a creator of an encrypted object
US11120140B2 (en) Secure operations on encrypted data
US20220284110A1 (en) Multi-key secure deduplication using locked fingerprints
US11372983B2 (en) Employing a protected key in performing operations
US11201730B2 (en) Generating a protected key for selective use
US11165760B2 (en) Increasing security of objects in cloud environments by using a two-part encryption scheme
US10680801B2 (en) Data distribution against credential information leak
US11803648B2 (en) Key in lockbox encrypted data deduplication

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