Encryption and compression of data for storage
AssigneeNetApp, Inc.
InventorsHristo Bojinov, Yuval Frandzel, Robert Paul Wood
Life of this patent
Estimating the term…
Abstract
Described is a process for encrypting and compressing data for storage by computing systems. A data stream received by a computing system is separated into data chunks for storage on a storage device using a data layout format. Each data chunk is examined and if possible, compressed to produce a compressed data chunk. Whether or not the data chunk can be compressed, the data chunk is encrypted and stored on the storage device in addition to metadata that describes the data chunk. When reading the stored data chunk from the storage device, the metadata identifies the starting location of the stored data chunk and provides metadata information to the computing system for decryption and decompression processing.
Claims23
A computer-implemented method for writing a data stream to a storage device serviced by a computer, comprising:
- receiving at a memory of the computer the data stream and partitioning the data stream into a plurality of data chunks;
- compressing one or more of the plurality of data chunks;
- encrypting one or more of the plurality of data chunks;
- creating, by a security subsystem, metadata for each data chunk of the plurality of data chunks, wherein the metadata identifies whether the data chunk is compressed or uncompressed, whether the data chunk is encrypted or unencrypted, a type of compression used if the data chunk is compressed, a type of file information associated with the data chunk, and a cryptographic signature to determine whether the data chunk is authentic;
- storing each of the plurality of data chunks with the metadata on the storage device using a data layout format;
- and
- determining a starting location of a first data chunk stored on the storage device by examining first metadata stored with the first data chunk on the storage device.
A computer system configured to write data to a storage device of the computer system, comprising:
- a processor;
- a compression module configured to compresses a data chunk of a data stream received at a memory of the computer system;
- an encryption module configured to encrypt the compressed data chunk;
- an operating system executed by the processor and configured to,
- create metadata for each data chunk of the plurality of data chunks, wherein the metadata identifies whether the data chunk is compressed or uncompressed, whether the data chunk is encrypted or unencrypted, a type of compression used if the data chunk is compressed, a type of file information associated with the data chunk, and a cryptographic signature to determine whether the data chunk is authentic,
- store each of the plurality of data chunks with the metadata on the storage device using a data layout format, and
- the operating system further configured to examine first metadata stored with a first data chunk on the storage device to determine a starting location of the first data chunk stored on the storage device.
A non-transitory computer-readable storage medium stored with executable program instructions for execution by a processor, comprising:
- program instructions that partition a received a data stream at a memory into a plurality of data chunks;
- program instructions that compress one or more of the plurality of data chunks;
- program instructions that encrypt one or more of the plurality of data chunks;
- program instructions that create metadata for each data chunk of the plurality of data chunks, wherein the metadata identifies whether the data chunk is compressed or uncompressed, whether the data chunk is encrypted or unencrypted, a type of compression used if the data chunk is compressed, a type of file information associated with the data chunk, and a cryptographic signature to determine whether the data chunk is authentic;
- program instructions that store each of the plurality of data chunks with the metadata on a storage device using a data layout format;
- and
- program instructions that determine a starting location of a first data chunk stored on the storage device by examining first metadata stored with the first data chunk on the storage device.
Dependencies are inferred from the claim text.