The field relates generally to information security, and more particularly to techniques for providing adaptive re-keying of encrypted data in an information processing system.
Conventional information processing systems are often configured to implement so-called “data at rest” encryption. Data at rest typically refers to data that is currently in an inactive state and persistently stored. In contrast, two other typical data states include “data in use” (i.e., data that is currently being manipulated by a system or application program and is therefore considered active data and non-persistently stored) and “data in transit” (i.e., data that is currently being transferred from one storage location to another).
There has been wide adoption of data at rest encryption solutions in the past several years, driven by increasing demand for better data security. A controller-based drive encryption solution uses an encryption engine on the drive controller to encrypt data written to the storage drives with a unique cryptographic key for each drive. As a best practice of encryption, and as a common regulatory compliance requirement, encryption keys are periodically changed. The process of changing a cryptographic key is referred to as “re-keying.”
Re-keying the data encryption key protects against possible exposure of the initial or current encryption key. However, depending on the amount of data to encrypt, re-keying encrypted data volumes/drives can take a long time and require a significant amount of system computation resources. Existing approaches use a static re-key policy preconfigured in the storage system. The preconfigured policy typically sets the fixed dates or time intervals for the re-key events.
Illustrative embodiments of the invention provide techniques for adaptive re-keying of encrypted data in an information processing system.
For example, in one embodiment, a method comprises the following steps. Utilization information associated with a storage system is obtained, wherein the storage system comprises a set of storage devices. The method dynamically selects a re-keying process from a plurality of different re-keying processes based on at least a portion of the obtained utilization information. At least a portion of the set of storage devices are re-keyed in accordance with the selected re-keying process.
Further illustrative embodiments are provided in the form of a non-transitory processor-readable storage medium having embodied therein executable program code that when executed by a processor causes the processor to perform the above steps. Still further illustrative embodiments comprise an apparatus with a processor and a memory configured to perform the above steps.
Advantageously, illustrative embodiments provide an adaptive re-keying process that optimizes timing and execution of the re-keying to best use storage system resources, minimize system impact, and automatically maintain cryptographic key compliance requirements.
These and other features and advantages of embodiments described herein will become more apparent from the accompanying drawings and the following detailed description.
Illustrative embodiments of the present invention will be described herein with reference to exemplary information processing systems and associated processing devices. It is to be appreciated, however, that embodiments of the invention are not restricted to use with the particular illustrative system and device configurations shown. Accordingly, the term “information processing system” as used herein is intended to be broadly construed, so as to encompass, for example, a wide variety of different processing platforms including cloud-based processing platforms that include combinations of virtual and physical compute, network and storage resources.
The client devices 102 may comprise, for example, mobile telephones, laptop computers, tablet computers, desktop computers or other types of devices capable of sending and receiving data and/or messages over the network 104. Such devices are examples of what are more generally referred to herein as “processing devices.”
The client devices 102 in some embodiments comprise respective computers associated with a particular company, organization or other enterprise. In addition, at least portions of the information processing system 100 may also be referred to herein as collectively comprising an “enterprise network.” Numerous other operating scenarios involving a wide variety of different types and arrangements of processing devices and networks are possible, as will be appreciated by those skilled in the art.
Also, it is to be appreciated that the term “user” in this context and elsewhere herein is intended to be broadly construed so as to encompass, for example, human, hardware, software or firmware entities, as well as various combinations of such entities.
The network 104 is assumed to comprise a portion of a global computer network such as the Internet, although other types of networks can be part of the information processing system 100, including a wide area network (WAN), a local area network (LAN), a satellite network, a telephone or cable network, a cellular network, a wireless network such as a WiFi or WiMAX network, or various portions or combinations of these and other types of networks. The information processing system 100 in some embodiments therefore comprises combinations of multiple different types of networks each comprising processing devices configured to communicate using Internet Protocol (IP) or other related communication protocols.
As a more particular example, some embodiments may utilize one or more high-speed local networks in which associated processing devices communicate with one another utilizing Peripheral Component Interconnect express (PCIe) cards of those devices, and networking protocols such as InfiniBand, Gigabit Ethernet or Fibre Channel. Numerous alternative networking arrangements are possible in a given embodiment, as will be appreciated by those skilled in the art.
Storage system 110 implements data encryption techniques. Data encryption techniques implemented by storage system 110 are also referred to herein as “server-side” data encryption techniques, as the storage system 110 itself encrypts data items supplied to it in plaintext form by one or more of client devices 102. Such clients are also referred to herein as “tenants” of the storage system, where the term “tenant” as broadly used herein is intended to encompass, for example, clients that are members of a given domain of the storage system.
The storage system 110 in some embodiments may be part of a cloud storage system and the multiple tenants may comprise respective tenants of the cloud storage system. In such an arrangement, encrypted data storage is provided to the tenants as a service of the service provider operating the cloud storage system. The term “tenant” as used herein should not be viewed as limited to such cloud-based storage arrangements.
The storage system 100 in some embodiments may be implemented utilizing a VNX2® storage array or a Symmetrix VMAX® storage array, both commercially available from Dell EMC of Hopkinton, Mass. Alternatively, the storage system 110 can be implemented utilizing a flash-based storage array such as an XtremIO™ storage array or a Unity™ storage array, both also from Dell EMC.
The term “storage system” as used herein is intended to be broadly construed, and should not be viewed as being limited to storage arrays or any other storage system of a particular type. A given storage system as the term is broadly used herein can comprise, for example, network-attached storage (NAS), storage area networks (SANs), direct-attached storage (DAS) and distributed DAS, as well as combinations of these and other storage types, including software-defined storage.
Accordingly, storage system 110 in illustrative embodiments can include software-defined storage products such as ScaleIO™ and ViPR®, cloud storage products such as Elastic Cloud Storage (ECS), object-based storage products such as Atmos®, and scale-out NAS clusters comprising Isilon® platform nodes and associated accelerators, all from Dell EMC. Combinations of multiple ones of these and other storage products can also be used in implementing a given storage system in an illustrative embodiment. Storage system 110 may be comprised of one or more of what is more generally referred to herein as “processing devices.”
As another processing platform example, portions of a given processing platform in some embodiments can comprise converged infrastructure such as VxRail™, VxRack™ or Vblock® converged infrastructure commercially available from VCE, the Virtual Computing Environment Company, an EMC Federation Company.
The particular processing platforms described above are presented by way of example only, and a given information processing system such as system 100 may include additional or alternative processing platforms, as well as numerous distinct processing platforms in any combination, with each such platform comprising one or more computers, servers, storage devices or other processing devices.
Processing devices and other information processing system components can communicate with one another using a variety of different communication protocols and associated communication media. Components of an information processing system as disclosed herein can be implemented at least in part in the form of one or more software programs stored in memory and executed by a processor of a processing device.
As further shown, storage system 110 comprises storage drives 120-1, 120-2, 120-3, . . . 120-N, collectively referred to herein as storage drives 120 (or drives 120) or individually as storage drive 120 (or drive 120). In some embodiments, storage devices 120 are solid state drives (SSDs). Such SSDs are implemented using non-volatile memory (NVM) devices such as flash memory. Other types of NVM devices can be used as some or all of drives 120 such as non-volatile random access memory (NVRAM), phase-change RAM (PC-RAM) and magnetic RAM (MRAM). These and various combinations of multiple different types of NVM devices may also be used.
However, it is to be appreciated that still other types of storage devices can be used in other embodiments. For example, a given storage system as the term is broadly used herein can include a combination of different types of storage devices, as in the case of a multi-tier storage system comprising a flash-based fast tier and a disk-based capacity tier. In such an embodiment, each of the fast tier and the capacity tier of the multi-tier storage system comprises a plurality of storage devices with different types of storage devices being used in different ones of the storage tiers. For example, the fast tier may comprise flash drives while the capacity tier comprises hard disk drives. The particular storage devices used in a given storage tier may be varied in other embodiments, and multiple distinct storage device types may be used within a single storage tier. The term “storage device” as used herein is intended to be broadly construed, so as to encompass, for example, flash drives, solid state drives, hard disk drives, hybrid drives or other types of storage devices.
In the
As further shown in
The key generator 130 is utilized to generate data encryption keys for use in performing server-side encryption of data items for storage in the storage drives 120. The key generator 130 can also be used to generate secret keys that are utilized in generating data encryption keys. The encryption and decryption modules 132 and 134 are utilized to respectively encrypt and decrypt data items in conjunction with storage in and retrieval from the storage devices 120 and a cache as will be further explained below. In illustrative embodiments, each one of storage devices 120 may typically have its own data encryption key assigned.
As will be further explained below in illustrative embodiments, re-keying engine 136 is configured to provide adaptive re-keying of the data encryption keys used to initially or currently encrypt and decrypt the data items stored in the storage devices 120. More particularly, re-keying engine 136 provides a smart and self-managed re-keying process that optimizes timing and execution of the re-keying to best use storage system resources, minimize system impact, and automatically maintain compliant “crypto periods” (i.e., the time span during which a specific cryptographic key is authorized for use). It is to be appreciated that the re-keying engine 136 works in conjunction with the key generator 130 to determine when the key generator 130 generates new data encryption keys that are used to re-key data items (using encryption and decryption modules 132 and 134) stored in storage devices 120 and/or a cache associated with the storage system 110. All or a subset of components 130, 132, 134 and 136 may be referred to herein as a “re-keying manager.” Illustrative embodiments of the adaptive re-keying process performed by a re-keying manager will be described below on the context of
It is to be appreciated that this particular arrangement of components in the storage system 110 is presented by way of example only, and alternative arrangements can be used in other embodiments. For example, the functionality associated with the components 130, 132, 134 and 136 in other embodiments can be distributed across a larger number of modules, combined into a single module, or distributed in fewer modules than are illustratively depicted in
In some embodiments, components 130, 132, 134 and 136 are implemented in a cryptographic module of the storage system 110. The cryptographic module can be implemented at least in part utilizing a trusted platform module or other type of trusted hardware of the storage system 110. Such a trusted platform module provides highly secure storage for secret keys of the storage system 110 and in some embodiments comprises or is otherwise associated with a manager module configured to control secure storage of the secret keys of the storage system 110.
As mentioned previously, the storage system 110 in the
More particularly, in this illustrative embodiment, the storage system 110 comprises a processor 140 coupled to a memory 142 and a network interface 144. As shown, and as will be further explained below in the context of
The processor 140 illustratively comprises a microprocessor, a microcontroller, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a graphics processing unit (GPU) or other type of processing circuitry, as well as portions or combinations of such circuitry elements.
The memory 142 illustratively comprises random access memory (RAM), read-only memory (ROM), flash memory or other types of memory, in any combination. The memory 142 and other memories disclosed herein may be viewed as examples of what are more generally referred to as “processor-readable storage media” storing executable computer program code or other types of software programs.
Articles of manufacture comprising such processor-readable storage media are considered embodiments of the present invention. A given such article of manufacture may comprise, for example, a storage device such as a storage disk, an integrated circuit containing electronic memory, or a wide variety of other types of computer program products comprising processor-readable storage media. The term “article of manufacture” as used herein should be understood to exclude transitory, propagating signals.
The network interface 144 allows the storage system 110 to communicate with the client devices 102 over the network 104. The network interface 144 illustratively comprises one or more conventional transceivers.
Particular components of the storage system 110, such as one or more of key generator 130, encryption module 132, decryption module 134 and re-keying engine 136, are illustratively implemented at least in part in the form of software that is stored in memory 142 and executed by processor 140.
Cache 143 may illustratively comprise volatile memory such as, e.g., random access memory (RAM), dynamic random-access memory (DRAM), static random-access memory (SRAM), or any other kind of volatile memory. In some embodiments, cache 143 may support a variety of operations or functions of storage system 110 including, for example, write cache, read cache, temporary metadata storage, or other similar operations.
As mentioned previously, the components 130, 132, 134 and 136 are utilized in performing server-side encryption and decryption operations relating to the stored encrypted data items of the storage system 110. Such operations in the present embodiment illustratively involve generating data encryption keys and utilizing those data encryption keys to encrypt respective ones of the data items for storage in the storage system 110. The resulting encrypted data item is stored in the storage devices 120.
In some embodiments, asymmetric keys are used, such that different keys are used for encryption and decryption. Other embodiments can use symmetric keys, such that the same key used for encryption is also used for decryption. Various combinations of asymmetric and symmetric keys can be used. The term “key” as used herein is intended be broadly construed so as to encompass these and other arrangements of cryptographic information suitable for securing access to data. The term “data” as used herein is also intended to be broadly construed and is not restricted to any particular format or formats.
Illustrative embodiments, as mentioned above, provide a systematic, adaptive re-keying process for storage drives 120 in the storage system 110. More particularly, rather than having predefined re-key dates or time intervals as in the conventional approach, the re-keying engine 136 in one or more embodiments sets compliance limits (e.g., compliant crypto periods) for all the storage drive encryption keys, and collects system resources and performance data with which the re-keying engine 136 dynamically calculates the re-key order/priority of all Raid Groups (RGs), the timing of re-keying and a best re-keying procedure. The re-keying engine 136 continuously calculates to determine which RG to re-key next, when to start the process, what re-key procedure to use, and at what speed level. The re-keying engine 136 then communicates the re-keying instructions to the key generator 130 which generates new keys consistent with the instructions, and initiates re-keying through encryption module 132 and decryption module 134.
Furthermore, as will be further explained below, the re-keying engine 136 provides a self-managed RG re-key prioritization/scheduling approach in one or more illustrative embodiments. The re-keying engine 136 first prioritizes an RG re-key execution order according to the expiration dates of the drive encryption keys (i.e., data encryption key for each storage drive 120). Then, the re-keying engine 136 estimates a required total time to re-key all drives 120 based the data volume and a medium drive re-key speed. Based on that estimated total time, the re-keying engine 136 sets the start time of the prioritized RG to start the re-keying. As mentioned above, the re-keying instructions (e.g., which RG to re-key, when to start the process, what re-key procedure to use, and at what speed level) are provided by the re-keying engine 136 to the key generator 130 which implements the adaptive re-keying process consistent with the re-keying instructions.
Before starting a re-keying process on an RG, the re-keying engine 136 performs a pre-rekey system impact check to see whether a given RG is currently under high input/output (I/O) unitization. What threshold I/O workload constitutes “high I/O utilization” is determined by the system administrator and/or a utilization optimization algorithm according to one or more embodiments. For example, if the given RG is under high I/O utilization, the re-keying engine 136 reprioritizes the next RG in the priority queue.
Illustrative embodiments further provide for dynamic selection of a given re-keying procedure to minimize system impact. If the adaptive rekey engine 136 determines one or more storage drives 120 or one or more RGs will become non-compliant (e.g., crypto period will expire soon), the engine 136 alerts the affected client device(s) (one or more of clients 102 or tenants) and suggests several options along with corresponding consequences. For example, to stay compliant, one option may be to allow the re-keying engine 136 to consume more cache and suffer performance issues for some time period t.
Furthermore, an illustrative embodiment provides two procedures to rotate the drive encryption keys, one referred to as a data in place re-keying process (
The two illustrative re-keying procedures will now be described.
The rekey manager uses cache 202 (e.g., cache 143 in
In this approach, a watermark (depicted in data blocks 204 as “WM”) is used to keep track of the boundary between ciphertext encrypted with K1 and the ciphertext encrypted with K2. This watermark is utilized by the rekey manager to remember which addresses in the subject data blocks have been encrypted with K1 (light grey shaded blocks) versus K2 (darker grey shaded blocks). Any data in the set of data blocks 204 below the watermark WM is encrypted with K2, and the watermark address, and addresses above the watermark are still encrypted with K1. Note that host I/O 206 refers to data read and/or data write requests from a given client device 102. Thus, reads/write requests that come in during the re-keying process for addresses with data that is still encrypted with K1 are represented by 208, while reads/write requests for addresses with data that is encrypted with K2 are represented by 210. The data in place re-keying 200 consumes system cache, which may not be preferred when cache consumption is high.
For proactive sparing, an empty drive is required to migrate the data off one drive and onto the empty drive. By doing this, the data can be decrypted with K1 from drive n, and encrypted with K2 when written to the empty drive. The former empty drive is now relabeled as drive n.
As shown in
Thus, in Phase 1, Drives 1-3, labeled drives 310, 312 and 314 respectively, currently use data encryption key K1. To re-key drive 314, the data on drive 314 is re-keyed using key K2 and stored on spare drive 316 (which then becomes Drive 3). In Phase 2, to re-key drive 312, the data on drive 312 is re-keyed using key K2 and stored on another spare drive 318 (which then becomes Drive 2). In Phase 3, to re-key drive 310, the data on drive 310 is re-keyed using key K2 and stored on yet another spare drive 320 (which then becomes Drive 1).
Accordingly, this approach requires spare drives. If a spare drive is not available at each phase, then the proactive sparing re-keying approach is blocked.
Illustrative embodiments provide for dynamic selection of a given re-keying procedure from a plurality of re-keying process (e.g., process 200 and process 300) to minimize system impact.
As shown, the pseudocode 400 first checks whether a spare drive(s) is available and all drives are in a healthy condition (e.g., ready and able to be re-keyed). If so, then proactive sparing re-keying begins. If not, a check is made to determine whether cache utilization is above a percentage threshold value. In some embodiments, the percentage threshold value is a configurable parameter (e.g., specified by a user, a system and/or an algorithm). If so, then the pseudocode 400 enables the re-keying manager to wait for a period of time (e.g., one day) for a sparing drive(s) to be available and then performs proactive sparing re-keying if a spare drive becomes available.
If, however, pseudocode 400 determines cache utilization is not above the percentage threshold value (or the above wait period expires before a spare drive is available), data in place type re-keying (
Pseudocode 400 is intended to be a nonlimiting example, and one or more of the re-keying process choices and the conditions for selection may be different in alternative embodiments.
In step 502, a re-keying manager obtains utilization information associated with a storage system, wherein the storage system comprises a set of storage devices.
In step 504, the re-keying manager dynamically selects a re-keying process from a plurality of different re-keying processes based on at least a portion of the obtained utilization information.
In step 506, the re-keying manager re-keys, on a crypto period priority basis, at least a portion of the set of storage devices in accordance with the selected re-keying process. As mentioned above, the re-keying manager sends a non-compliance notification when appropriate.
Advantageously, adaptive re-keying according to illustrative embodiments has many advantages. For example, adaptive re-keying does not depend on a static re-keying policy preconfigured in the storage system. The static policy sets the dates or time intervals for the re-keying events. Adaptive re-keying dynamically manages the re-keying process of all drives in the storage system.
Further, adaptive re-keying according to illustrative embodiments dynamically selects the most suitable re-keying procedure, for example in the example above, either data-in-place re-keying or re-keying through proactive sparing, according to real-time available resources to minimize impact.
Still further, adaptive re-keying according to illustrative embodiments dynamically sets the re-keying schedule to maintain compliant crypto periods, and generates an alert for any predicted compliance violation based on re-keying speed and compliance rules.
It should again be emphasized that the above-described embodiments of the invention are presented for purposes of illustration only. Many variations and other alternative embodiments may be used. For example, the disclosed techniques are applicable to a wide variety of other types of information processing systems and associated processing devices. Also, the particular features of the illustrative embodiments of
Number | Name | Date | Kind |
---|---|---|---|
5146497 | Bright | Sep 1992 | A |
5164986 | Bright | Nov 1992 | A |
5542066 | Mattson | Jul 1996 | A |
6711264 | Matsumoto | Mar 2004 | B1 |
6721870 | Yochai | Apr 2004 | B1 |
7983423 | Agarwal | Jul 2011 | B1 |
8010810 | Fitzgerald | Aug 2011 | B1 |
8140851 | Mynam | Mar 2012 | B1 |
8170213 | Harwood | May 2012 | B1 |
8380928 | Chen | Feb 2013 | B1 |
8515079 | Asati | Aug 2013 | B1 |
8634560 | Ng | Jan 2014 | B1 |
8688878 | Dolan | Apr 2014 | B1 |
8799681 | Linnell | Aug 2014 | B1 |
9032218 | Iswandhi | May 2015 | B2 |
9330009 | Throop | May 2016 | B1 |
9389916 | Miller | Jul 2016 | B1 |
9659190 | Perlman et al. | May 2017 | B1 |
9720700 | Brown | Aug 2017 | B1 |
9779269 | Perlman | Oct 2017 | B1 |
9804966 | Sadanandan | Oct 2017 | B1 |
9811288 | Chen | Nov 2017 | B1 |
9830278 | Harwood | Nov 2017 | B1 |
9906361 | Perlman | Feb 2018 | B1 |
10152339 | Dong | Dec 2018 | B1 |
10256969 | Salinas | Apr 2019 | B1 |
10284534 | Perlman et al. | May 2019 | B1 |
10298551 | Perlman et al. | May 2019 | B1 |
10609070 | Farmer, III | Mar 2020 | B1 |
11240022 | Griffin | Feb 2022 | B1 |
20030097531 | Arimilli | May 2003 | A1 |
20050071279 | Asano | Mar 2005 | A1 |
20050120111 | Bailey | Jun 2005 | A1 |
20060136504 | Babutzka | Jun 2006 | A1 |
20070074047 | Metzger | Mar 2007 | A1 |
20080109811 | Krauthgamer | May 2008 | A1 |
20080240428 | Hobbet | Oct 2008 | A1 |
20090103724 | Tamai | Apr 2009 | A1 |
20090196414 | Mittal | Aug 2009 | A1 |
20090271638 | Kawakami | Oct 2009 | A1 |
20090323964 | Park | Dec 2009 | A1 |
20100091993 | Iwama | Apr 2010 | A1 |
20100191933 | Sonnekalb | Jul 2010 | A1 |
20110038477 | Bilodi | Feb 2011 | A1 |
20110087843 | Zhao | Apr 2011 | A1 |
20110116627 | Deng | May 2011 | A1 |
20110191595 | Damian | Aug 2011 | A1 |
20110225017 | Radhakrishnan | Sep 2011 | A1 |
20110231854 | Augenstein | Sep 2011 | A1 |
20110296122 | Wu | Dec 2011 | A1 |
20110299685 | Hall | Dec 2011 | A1 |
20110311049 | Amaudruz | Dec 2011 | A1 |
20120331293 | Ma | Dec 2012 | A1 |
20130173930 | Obligacion | Jul 2013 | A1 |
20130208892 | Moriguchi | Aug 2013 | A1 |
20140040410 | McDowell | Feb 2014 | A1 |
20140215126 | Avila | Jul 2014 | A1 |
20150033037 | Lidman | Jan 2015 | A1 |
20150052369 | Koning | Feb 2015 | A1 |
20150081978 | Daly | Mar 2015 | A1 |
20150086009 | Harjula | Mar 2015 | A1 |
20150139422 | Jover | May 2015 | A1 |
20150249467 | Nakanishi | Sep 2015 | A1 |
20160085696 | Chiu | Mar 2016 | A1 |
20160191412 | Min | Jun 2016 | A1 |
20160291882 | Wakhare | Oct 2016 | A1 |
20170061566 | Min | Mar 2017 | A1 |
20170230173 | Choi | Aug 2017 | A1 |
20170257214 | Stufflebeam | Sep 2017 | A1 |
20170331802 | Keshava | Nov 2017 | A1 |
20180150620 | Hensgen | May 2018 | A1 |
20180189193 | Bernat | Jul 2018 | A1 |
20180254901 | Egorov | Sep 2018 | A1 |
20180278418 | Chang | Sep 2018 | A1 |
20180287785 | Pfannenschmidt | Oct 2018 | A1 |
20180307418 | Brown | Oct 2018 | A1 |
20180359228 | Lerner | Dec 2018 | A1 |
20190087301 | M | Mar 2019 | A1 |
20190087353 | Isozaki | Mar 2019 | A1 |
20190196731 | Sapuntzakis | Jun 2019 | A1 |
20190238331 | Chandra | Aug 2019 | A1 |
20190340136 | Irwin | Nov 2019 | A1 |
20200012729 | Shaikh | Jan 2020 | A1 |
20200134202 | Sapuntzakis | Apr 2020 | A1 |
20200153616 | Savalle | May 2020 | A1 |
20200201785 | Hanna | Jun 2020 | A1 |
20200314174 | Dailianas | Oct 2020 | A1 |
Entry |
---|
U.S. Appl. No. 16/208,790 filed in the name of Radia J. Perlman et al. dated Dec. 4, 2018 and entitled “Client-Side Encryption Supporting Deduplication Across Single or Multiple Tenants in a Storage System.”. |
Number | Date | Country | |
---|---|---|---|
20200389305 A1 | Dec 2020 | US |