The field of technology is data processing, or, more specifically, methods, apparatuses, and products for utilizing a non-repeating identifier to encrypt data.
Storage systems often utilize a large number of storage devices for storing data. In many cases, the data stored on the storage devices may be confidential or otherwise proprietary. In such cases, there is a need to prevent access to the confidential or otherwise proprietary data by unauthorized users. In some cases, encryption may be used to protect data. While such an approach improves the security of the data, unauthorized persons may still seek ways to circumvent the encryption and gain access to the data.
Methods, apparatus, and products for utilizing a non-repeating identifier to encrypt data, including: receiving a request to write data to a storage device; selecting a segment-offset pair where the data will be stored, wherein the selected segment-offset pair is unique to every other segment-offset pair utilized during a lifetime of the storage device; and encrypting the data in dependence upon an identifier of the segment-offset pair.
The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular descriptions of example embodiments of the invention as illustrated in the accompanying drawings wherein like reference numbers generally represent like parts of example embodiments of the invention.
Example methods, apparatuses, and products for utilizing a non-repeating identifier to encrypt data in accordance with the present invention are described with reference to the accompanying drawings, beginning with
The computing devices (164, 166, 168, 170) in the example of
The local area network (160) of
The example storage arrays (102, 104) of
Each storage array controller (106, 112) may be implemented in a variety of ways, including as a Field Programmable Gate Array (‘FPGA’), a Programmable Logic Chip (‘PLC’), an Application Specific Integrated Circuit (‘ASIC’), or computing device that includes discrete components such as a central processing unit, computer memory, and various adapters. Each storage array controller (106, 112) may include, for example, a data communications adapter configured to support communications via the SAN (158) and the LAN (160). Although only one of the storage array controllers (112) in the example of
Each write buffer device (148, 152) may be configured to receive, from the storage array controller (106, 112), data to be stored in the storage devices (146). Such data may originate from any one of the computing devices (164, 166, 168, 170). In the example of
A ‘storage device’ as the term is used in this specification refers to any device configured to record data persistently. The term ‘persistently’ as used here refers to a device's ability to maintain recorded data after loss of a power source. Examples of storage devices may include mechanical, spinning hard disk drives, Solid-state drives (e.g., “Flash drives”), and the like.
The storage array controllers (106, 112) of
In an alternative embodiment, the storage devices (146, 150) themselves may be configured for utilizing a non-repeating identifier to encrypt data according to embodiments of the present invention. The storage devices (146, 150) may utilize a non-repeating identifier to encrypt data by receiving a request to write data to a storage device; selecting a segment-offset pair where the data will be stored, where the selected segment-offset pair is unique to every other segment-offset pair utilized during the lifetime of the storage device; and encrypting the data in dependence upon an identifier of the segment-offset pair, as will be described in greater detail below.
The arrangement of computing devices, storage arrays, networks, and other devices making up the example system illustrated in
Utilizing a non-repeating identifier to encrypt data in accordance with embodiments of the present invention is generally implemented with computers. In the system of
The storage array controller (202) of
The storage array controller (202) of
Stored in RAM (214) is an operating system (246). Examples of operating systems useful in storage array controllers (202) configured for utilizing a non-repeating identifier to encrypt data according to embodiments of the present invention include UNIX™, Linux™ Microsoft Windows™, and others as will occur to those of skill in the art. Also stored in RAM (236) is an encryption module (248), a module that includes computer program instructions for utilizing a non-repeating identifier to encrypt data according to embodiments of the present invention. The functionality of the encryption module (248) will be described in greater detail below, but readers will appreciate that while the encryption module (248) and the operating system (246) in the example of
The storage array controller (202) of
The storage array controller (202) of
The storage array controller (202) of
The storage array controller (202) of
Readers will recognize that these components, protocols, adapters, and architectures are for illustration only, not limitation. Such a storage array controller may be implemented in a variety of different ways, each of which is well within the scope of the present invention.
For further explanation,
The example method depicted in
The example method depicted in
Consider an example in which a particular storage device (326) included 4 gigabytes (‘GBs’) of storage. In such an example, the storage could be logically broken up, for example, into four segments of 1 GB each. In such an example, the first GB of storage could be associated with a segment identifier of “1,” the second GB of storage could be associated with a segment identifier of “2,” the third GB of storage could be associated with a segment identifier of “3,” and the fourth GB of storage could be associated with a segment identifier of “4.” In such an example, the offset value represents the displacement from the beginning of the segment identified in a segment-offset pair.
In the example method depicted in
The selected segment-offset pair (316) can be unique relative to every other segment-offset pair utilized during the lifetime of the storage device (326, 328, 330) because data may be written to the storage devices (326, 328, 330) in only one of two ways: 1) data may be written to free space in an existing segment, or 2) a new segment may be created and data may be written to the new segment. In the situation where data is written to free space in an existing segment, because the space is free, no other data has been written to that particular segment-offset location. In the situation where a new segment is created and data is written to the new segment, because segment identifiers are not reused, no other data has been written to that particular segment-offset location.
Readers will appreciate that as data in a particular segment becomes invalid (e.g., an updated version of the data has been written to another location), the invalid data may be erased and the underlying physical storage resources may be allocated to a new segment. In such an example, the valid data in the particular segment may be copied and written to another segment as described above: 1) by writing the valid data to free space in an existing segment, or 2) by creating a new segment and writing the valid data to the new segment.
Readers will further appreciate that while a particular segment-identifier pair maps to a single physical location within the storage device (326, 328, 330), multiple segment-identifier pairs may map to the same physical location within the storage device (326, 328, 330). As such, the same physical location within the storage device (326, 328, 330) may be referenced using multiple segment-identifier pairs during the lifetime of the storage device (326, 328, 330). Because each segment-offset pair (316) is unique relative to every other segment-offset pair utilized during the lifetime of the storage device (326, 328, 330), however, each segment-offset pair (316) contains unique values (e.g., a combination of a segment identifier and offset value) that will never been associated with any other data stored in the storage device (326, 328, 330) during the lifetime of the storage device (326, 328, 330).
The example method depicted in
For further explanation,
In the example method depicted in
In the example method depicted in
In the example method depicted in
In the example method depicted in
In the example method depicted in
Readers will appreciate that in still further embodiments, other methodologies may be utilized to ensure that the segment identifiers for newly created segments are unique relative to any other segment identifier that will be used during the lifetime of the storage device (326, 328, 330). For example, each process that may create a segment may be given non-overlapping ranges of segment identifiers that each process may use when creating a new segment. For example, a first process may be given a range of 0 to 1000 as the available segment identifiers that the first process may utilize when creating a new segment, while a second process may be given a range of 1001 to 2000 as the available segment identifiers that the second process may utilize when creating a new segment. In such an example, when a particular process runs out of available identifiers, a new non-overlapping range of segment identifiers may be provided to the process.
In the example method depicted in
In the example method depicted in
For further explanation,
In the example method depicted in
The example method depicted in
The example method depicted in
For further explanation,
In the example method depicted in
The example method depicted in
In the example method depicted in
Example embodiments of the present invention are described largely in the context of a fully functional computer system. Readers of skill in the art will recognize, however, that the present invention also may be embodied in a computer program product disposed upon computer readable media for use with any suitable data processing system. Such computer readable storage media may be any transitory or non-transitory media. Examples of such media include storage media for machine-readable information, including magnetic media, optical media, or other suitable media. Examples of such media also include magnetic disks in hard drives or diskettes, compact disks for optical drives, magnetic tape, and others as will occur to those of skill in the art. Persons skilled in the art will immediately recognize that any computer system having suitable programming means will be capable of executing the steps of the method of the invention as embodied in a computer program product. Persons skilled in the art will recognize also that, although some of the example embodiments described in this specification are oriented to software installed and executing on computer hardware, nevertheless, alternative embodiments implemented as firmware, as hardware, or as an aggregation of hardware and software are well within the scope of embodiments of the present invention.
It will be understood from the foregoing description that modifications and changes may be made in various embodiments of the present invention without departing from its true spirit. The descriptions in this specification are for purposes of illustration only and are not to be construed in a limiting sense. The scope of the present invention is limited only by the language of the following claims.
This application is a continuation application of and claims priority from U.S. Pat. No. 10,037,440, issued Jul. 31, 2018, which is a continuation application of and claims priority from U.S. Pat. No. 9,779,268, issued Oct. 3, 2017, which is a non-provisional application for patent entitled to a filing date and claiming the benefit of earlier-filed U.S. Provisional Patent Application Ser. No. 62/007,200, filed Jun. 3, 2014.
Number | Name | Date | Kind |
---|---|---|---|
5208813 | Stallmo | May 1993 | A |
5319453 | Copriviza | Jun 1994 | A |
5403639 | Belsan | Apr 1995 | A |
5940838 | Schmuck et al. | Aug 1999 | A |
6263350 | Wollrath et al. | Jul 2001 | B1 |
6412045 | DeKoning et al. | Jun 2002 | B1 |
6718448 | Ofer | Apr 2004 | B1 |
6757769 | Ofer | Jun 2004 | B1 |
6799283 | Tamai et al. | Sep 2004 | B1 |
6834298 | Singer et al. | Dec 2004 | B1 |
6850938 | Sadjadi | Feb 2005 | B1 |
6915434 | Kuroda | Jul 2005 | B1 |
6973549 | Testardi | Dec 2005 | B1 |
7028216 | Aizawa et al. | Apr 2006 | B2 |
7028218 | Schwarm et al. | Apr 2006 | B2 |
7039827 | Meyer et al. | May 2006 | B2 |
7216164 | Whitmore et al. | May 2007 | B1 |
7783682 | Patterson | Aug 2010 | B1 |
7873619 | Faibish et al. | Jan 2011 | B1 |
7913300 | Flank et al. | Mar 2011 | B1 |
7933936 | Aggarwal et al. | Apr 2011 | B2 |
7979613 | Zohar et al. | Jul 2011 | B2 |
8086652 | Bisson et al. | Dec 2011 | B1 |
8117464 | Kogelnik | Feb 2012 | B1 |
8200887 | Bennett | Jun 2012 | B2 |
8205065 | Matze | Jun 2012 | B2 |
8352540 | Anglin et al. | Jan 2013 | B2 |
8416954 | Raizen | Apr 2013 | B1 |
8527544 | Colgrove et al. | Sep 2013 | B1 |
8560747 | Tan et al. | Oct 2013 | B1 |
8621241 | Stephenson | Dec 2013 | B1 |
8700875 | Barron et al. | Apr 2014 | B1 |
8751463 | Chamness | Jun 2014 | B1 |
8806160 | Colgrove et al. | Aug 2014 | B2 |
8874850 | Goodson et al. | Oct 2014 | B1 |
8959305 | Lecrone et al. | Feb 2015 | B1 |
9081713 | Bennett | Jul 2015 | B1 |
9189334 | Bennett | Nov 2015 | B2 |
9311182 | Bennett | Apr 2016 | B2 |
9423967 | Colgrove et al. | Aug 2016 | B2 |
9436396 | Colgrove et al. | Sep 2016 | B2 |
9436720 | Colgrove et al. | Sep 2016 | B2 |
9454476 | Colgrove et al. | Sep 2016 | B2 |
9454477 | Colgrove et al. | Sep 2016 | B2 |
9513820 | Shalev | Dec 2016 | B1 |
9516016 | Colgrove et al. | Dec 2016 | B2 |
9552248 | Miller et al. | Jan 2017 | B2 |
9632870 | Bennett | Apr 2017 | B2 |
9684593 | Chen | Jun 2017 | B1 |
9779268 | Colgrove et al. | Oct 2017 | B1 |
10037440 | Colgrove et al. | Jul 2018 | B1 |
20020038436 | Suzuki | Mar 2002 | A1 |
20020087544 | Selkirk et al. | Jul 2002 | A1 |
20020178335 | Selkirk et al. | Nov 2002 | A1 |
20030140209 | Testardi | Jul 2003 | A1 |
20040049572 | Yamamoto et al. | Mar 2004 | A1 |
20050066095 | Mullick et al. | Mar 2005 | A1 |
20050216535 | Saika et al. | Sep 2005 | A1 |
20050223154 | Uemura | Oct 2005 | A1 |
20060074940 | Craft et al. | Apr 2006 | A1 |
20060136365 | Kedem et al. | Jun 2006 | A1 |
20060155946 | Ji | Jul 2006 | A1 |
20070067585 | Ueda et al. | Mar 2007 | A1 |
20070162954 | Pela | Jul 2007 | A1 |
20070171562 | Maejima et al. | Jul 2007 | A1 |
20070174673 | Kawaguchi et al. | Jul 2007 | A1 |
20070220313 | Katsuragi et al. | Sep 2007 | A1 |
20070245090 | King et al. | Oct 2007 | A1 |
20070266179 | Chavan et al. | Nov 2007 | A1 |
20080059699 | Kubo et al. | Mar 2008 | A1 |
20080065852 | Moore et al. | Mar 2008 | A1 |
20080134174 | Sheu et al. | Jun 2008 | A1 |
20080155191 | Anderson et al. | Jun 2008 | A1 |
20080178040 | Kobayashi | Jul 2008 | A1 |
20080209096 | Lin et al. | Aug 2008 | A1 |
20080244205 | Amano et al. | Oct 2008 | A1 |
20080275928 | Shuster | Nov 2008 | A1 |
20080285083 | Aonuma | Nov 2008 | A1 |
20080307270 | Li | Dec 2008 | A1 |
20090006587 | Richter | Jan 2009 | A1 |
20090037662 | La Frese et al. | Feb 2009 | A1 |
20090204858 | Kawaba | Aug 2009 | A1 |
20090228648 | Wack | Sep 2009 | A1 |
20090300084 | Whitehouse | Dec 2009 | A1 |
20100057673 | Savov | Mar 2010 | A1 |
20100058026 | Heil et al. | Mar 2010 | A1 |
20100067706 | Anan et al. | Mar 2010 | A1 |
20100077205 | Ekstrom et al. | Mar 2010 | A1 |
20100082879 | McKean et al. | Apr 2010 | A1 |
20100106905 | Kurashige et al. | Apr 2010 | A1 |
20100153620 | McKean et al. | Jun 2010 | A1 |
20100153641 | Jagadish et al. | Jun 2010 | A1 |
20100191897 | Zhang et al. | Jul 2010 | A1 |
20100250802 | Waugh et al. | Sep 2010 | A1 |
20100250882 | Hutchison et al. | Sep 2010 | A1 |
20100281225 | Chen et al. | Nov 2010 | A1 |
20100287327 | Li et al. | Nov 2010 | A1 |
20110072300 | Rousseau | Mar 2011 | A1 |
20110145598 | Smith et al. | Jun 2011 | A1 |
20110161559 | Yurzola et al. | Jun 2011 | A1 |
20110167221 | Pangal et al. | Jul 2011 | A1 |
20110238634 | Kobara | Sep 2011 | A1 |
20120023375 | Dutta et al. | Jan 2012 | A1 |
20120036309 | Dillow et al. | Feb 2012 | A1 |
20120117029 | Gold | May 2012 | A1 |
20120198175 | Atkisson | Aug 2012 | A1 |
20120317065 | Bernstein | Dec 2012 | A1 |
20120330954 | Sivasubramanian et al. | Dec 2012 | A1 |
20130042052 | Colgrove et al. | Feb 2013 | A1 |
20130046995 | Movshovitz | Feb 2013 | A1 |
20130047029 | Ikeuchi et al. | Feb 2013 | A1 |
20130091102 | Nayak | Apr 2013 | A1 |
20130124932 | Schuh | May 2013 | A1 |
20130205110 | Kettner | Aug 2013 | A1 |
20130227236 | Flynn et al. | Aug 2013 | A1 |
20130275391 | Batwara et al. | Oct 2013 | A1 |
20130275656 | Talagala | Oct 2013 | A1 |
20130283058 | Fiske | Oct 2013 | A1 |
20130290648 | Shao et al. | Oct 2013 | A1 |
20130318314 | Markus et al. | Nov 2013 | A1 |
20130339303 | Potter et al. | Dec 2013 | A1 |
20140052946 | Kimmel | Feb 2014 | A1 |
20140059278 | Schuh | Feb 2014 | A1 |
20140068791 | Resch | Mar 2014 | A1 |
20140089730 | Watanabe et al. | Mar 2014 | A1 |
20140101361 | Gschwind | Apr 2014 | A1 |
20140143517 | Jin et al. | May 2014 | A1 |
20140172929 | Sedayao et al. | Jun 2014 | A1 |
20140201150 | Kumarasamy et al. | Jul 2014 | A1 |
20140215129 | Kuzmin et al. | Jul 2014 | A1 |
20140229131 | Cohen et al. | Aug 2014 | A1 |
20140229452 | Serita et al. | Aug 2014 | A1 |
20140281308 | Lango et al. | Sep 2014 | A1 |
20140325115 | Ramsundar et al. | Oct 2014 | A1 |
20150234709 | Koarashi | Aug 2015 | A1 |
20150244775 | Vibhor et al. | Aug 2015 | A1 |
20150278534 | Thiyagarajan et al. | Oct 2015 | A1 |
20160012465 | Sharp | Jan 2016 | A1 |
20160019114 | Han et al. | Jan 2016 | A1 |
20160098191 | Golden et al. | Apr 2016 | A1 |
20160098199 | Golden et al. | Apr 2016 | A1 |
Number | Date | Country |
---|---|---|
103370685 | Oct 2013 | CN |
103370686 | Oct 2013 | CN |
104025010 | Nov 2016 | CN |
3066610 | Sep 2016 | EP |
3082047 | Oct 2016 | EP |
3120235 | Jan 2017 | EP |
2007-087036 | Apr 2007 | JP |
2007-094472 | Apr 2007 | JP |
2008-250667 | Oct 2008 | JP |
2010-211681 | Sep 2010 | JP |
WO-1995002349 | Jan 1995 | WO |
WO-1999013403 | Mar 1999 | WO |
WO-2008102347 | Aug 2008 | WO |
WO-2010071655 | Jun 2010 | WO |
Entry |
---|
Microsoft Corporation, “GCSettings.IsServerGC Property”, Retrieved Oct. 27,2013 via the WayBack Machine, 3 pages. |
Microsoft Corporation, “Fundamentals of Garbage Collection”, Retrieved Aug. 30, 2013 via the WayBack Machine, 11 pages. |
Number | Date | Country | |
---|---|---|---|
62007200 | Jun 2014 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15669279 | Aug 2017 | US |
Child | 16040575 | US | |
Parent | 14730202 | Jun 2015 | US |
Child | 15669279 | US |