US20160026582A1 - Encrypt data of storage device - Google Patents
Encrypt data of storage device Download PDFInfo
- Publication number
- US20160026582A1 US20160026582A1 US14/707,530 US201514707530A US2016026582A1 US 20160026582 A1 US20160026582 A1 US 20160026582A1 US 201514707530 A US201514707530 A US 201514707530A US 2016026582 A1 US2016026582 A1 US 2016026582A1
- Authority
- US
- United States
- Prior art keywords
- data
- request
- buffer
- storage device
- plaintext
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Definitions
- Storage device controllers may receive data and encrypt the received data before writing the encrypted data to a storage device.
- a host seeking to write data to or read data from the storage device may send a request to the storage device controller in order to access the storage device.
- FIG. 1 is an example block diagram of a device to encrypt data of a storage device
- FIG. 2 is another example block diagram of a device to encrypt data of a storage device
- FIG. 3 is an example block diagram of a computing device including instructions for encrypting data of a storage device
- FIG. 4 is an example flowchart of a method for encrypting data of a storage device.
- Some types of storage device controllers may only encrypt data being received, such as data crossing a Peripheral Component interconnect Express (PCIE) boundary as it is transferred from a host's memory to the storage device controller.
- PCIE Peripheral Component interconnect Express
- the storage device controller may then write the encrypted data to a storage device.
- any new data to be written to the storage device may be encrypted by the storage device controller, old or existing data on the storage device may not be encrypted by the storage device controller.
- modifying or adding hardware of the storage device controller so that the storage device controller can directly encrypt data of the storage device may prove difficult and/or cost prohibitive.
- Examples of the present techniques may dynamically borrow the host's buffer to store plaintext data of the storage device and then write back the plaintext data from the buffer to the storage device in encrypted form.
- a device may include an interface unit, a transfer unit and an encryption unit.
- the interface unit may receive a request from a host requesting data from a storage device.
- the transfer unit may write plaintext data of the storage device into a buffer of the host, in response to the request.
- the encryption unit may encrypt the plaintext data and write the encrypted data back to the storage device. Then, the interface unit may write the requested data of the request to the buffer after the encrypted data is written back to the storage device.
- examples may allow for existing data of the storage device to be encrypted by a storage device controller that is limited to encrypting only data to be written to the storage device, at a low cost and/or latency.
- FIG. 1 is an example block diagram of a device 100 to encrypt data of a storage device 150 .
- the device 100 may couple to or be included in any type of computing device or controller that interfaces with a memory, such as a secure microprocessor, a storage device controller, a notebook computer, a desktop computer, an all-in-one system, a server, a network device, a wireless device and the like.
- device 100 interfaces with a host 140 and the storage device 150 .
- the device 100 may communicate with the storage device 150 via a Serial Attached SCSI (SAS) connection and may communicate with the host 140 via a Peripheral Component Interconnect (PCI) connection, Ethernet or IP protocol connection.
- SAS Serial Attached SCSI
- PCI Peripheral Component Interconnect
- the host 140 may refer to any type of device that seeks to access the storage device 150 , such as a main processor of a computer or a computer connected to a computer network.
- the storage device 150 may be any electronic, magnetic, optical, or other physical storage device that stores data, such as a hard disk drive (HDD), solid-state drive (SSD) and the like.
- the storage device 150 may include one or more physical drives (not shown) and one or more logical data volumes spanning one or more of the drives.
- the device 100 is shown to include an interface unit 110 , a transfer unit 120 and an encryption unit 130 .
- the interface, transfer and encryption units 110 , 120 and 130 may include, for example, a hardware device including electronic circuitry for implementing the functionality described below, such as control logic and/or memory.
- the interface, transfer and encryption units 110 , 120 and 130 may be implemented as a series of instructions encoded on a machine-readable storage medium and executable by a processor.
- the interface unit 110 may receive a request from the host 140 requesting data from a storage device 150 .
- the request may be a read type request, a sense type request or any other type of request related to a transfer of data from the storage device 150 to the host 140 .
- the read request may relate to accessing data at a location of the storage device 150 indicated by the read request.
- the location may include one or more addresses of the storage device 150 .
- the sense request may relate to accessing sense data at a location of the storage device 150 indicated by the sense request.
- the sense data may include status/error information related to the data and indicate a success/normal condition, simple problems such as no disk being loaded, serious hardware failures, and the like.
- the device 100 may transfer the data and/or sense data thereof from the storage device 150 to the buffer 142 in response to the read or sense type request of the host 140 .
- the transfer unit 120 may write plaintext data of the storage device 150 into a buffer 142 of the host 140 , in response to the request.
- plaintext may refer to an unaltered representation of data before any action has been taken to conceal, compress, or modify it in another manner.
- plaintext does not necessarily refer to text nor data that is plain.
- An amount of the plaintext data written to the buffer 142 may be based on a size allocated for the buffer 142 by the host 140 for the requested data. For example, if the host 140 requested to read 512 bytes or a block of data of the storage device 150 via the read request, then the host 140 may have allocated the buffer 142 to be 512 bytes or a block long. Further, the host 140 may have a plurality of buffers allocated based on a plurality of outstanding requests to the storage device 150 .
- the plaintext data written to the buffer 142 by the transfer unit 120 may not be the data requested by the host 140 via the request. Instead, the plaintext data may simply be data which the device 200 seeks to write back to the storage device 150 in encrypted form.
- the transfer unit 120 may, for example, read plaintext from the storage device 150 that the device 100 seeks to encrypt, in response to the request, such as the read or sense type request.
- the plaintext data is shown to be read from a first location 152 that is different from a second location 154 where the actual requested data is stored in the storage device 150 .
- the plaintext data may be read sequentially or iteratively from a disc of a storage volume (not shown) of the storage device 150 .
- the host 140 may only allocate the buffer 142 when the host 140 expects to receive data in response to the request, the host 140 may not allocate the buffer 142 when sending a write request.
- the device 100 may not send the plaintext data to the host 140 for the write request. Nonetheless, the device 100 may still process the write request by writing data from the host 140 to the storage device 150 .
- the encryption unit 130 may encrypt the plaintext data and may write the encrypted data back to the storage device 150 . As shown in FIG. 1 , for example, the encryption unit 130 may receive the plaintext data from the buffer 142 via the interface unit 110 , encrypt the plaintext data, and then output the encrypted data to the storage device 150
- Encryption may refer to a process of encoding data in such a way that unauthorized parties may not decipher the data while authorized parties may decipher the data.
- the plaintext may be encrypted using a cryptographic algorithm, turning it into an unreadable ciphertext.
- an encryption key which specifies how the message is to be encoded.
- the key may be a piece of information or parameter that determines a functional output of a cryptographic algorithm.
- the cryptographic algorithm may be a symmetric or asymmetric key algorithm.
- symmetric algorithms include Twofish, Serpent, AES (Rijndael), Blowfish, CAST5, Rivest Cipher 4 (RC4), Triple Data Encryption Algorithm (3DES), International Data Encryption Algorithm (IDEA) and the like.
- asymmetric algorithms include Diffie-Hellman key exchange protocol, Digital Signature Standard (DSS), ElGamal, Paillier cryptosystem, RSA encryption algorithm and Cramer-Shoup cryptosystem, and the like. These algorithms may include a procedure for performing encryption or decryption.
- the encrypted data may be written to the same first location 152 as the plaintext data from which the encrypted data was derived.
- the interface unit 110 may write the requested data of the request to the buffer 142 after the encrypted data is written back to the storage device 150 . This way, the encrypted data may be not lost before it can be written back to the storage device 150 . After the requested data is written to the buffer 142 , the request may be considered completed.
- the encryption unit 130 is located at the device 100 , and not the host 140 or the storage device 150 . Further, the encryption unit 130 may only be able to encrypt data received externally via the interface unit 110 .
- the host 140 may only be connected to the storage device 150 via the device 100 . Thus, the device 100 may encrypt the plaintext data after reading the plaintext data from the buffer 142 of the host 140 and before writing the plaintext data to the storage device 150 .
- FIG. 2 is another example block diagram of a device 200 to encrypt data of a storage device.
- the device 200 may couple to or be included in any type of computing device or controller that interfaces with a memory, such as a secure microprocessor, a storage device controller, a notebook computer, a desktop computer, an all-in-one system, a server, a network device, a wireless device and the like.
- the device 200 of FIG. 2 may include at least the functionality and/or hardware of the device 100 of FIG. 1 .
- the device 200 of FIG. 2 includes the interface unit 110 and the encryption unit 130 of the device 200 of FIG. 1 .
- a transfer unit 220 included in the device 200 may have at least the functionality and/or hardware of the transfer unit 120 of FIG. 1 .
- the device 200 further includes a determination unit 130 . Similar to FIG. 1 , the device 200 also interfaces with the host 140 and the storage device 150 .
- the determination unit 210 may include, for example, a hardware device including electronic circuitry for implementing the functionality described below, such as control logic and/or memory. In addition or as an alternative, the determination unit 210 may be implemented as a series of instructions encoded on a machine-readable storage medium and executable by a processor. The determination unit 210 may determine which of the requests received by the interface unit 110 include the at least one of read and sense type request and forward this determination to the transfer unit 220 . The transfer unit 220 may carry out the above operations described in FIG. 1 , if the request is the read or sense type request.
- the transfer unit 220 may further store a progress 222 of the encrypted data written back to the storage device 150 at a non-volatile memory (not shown).
- the progress 222 may be a percentage number indicating what percent of the storage device 150 or a volume thereof is encrypted or remains to be encrypted.
- the progress 222 may be a log recording each logical block address (LBA) after the encrypted data has been written to that LBA.
- LBA logical block address
- the transfer unit 220 may reference the stored progress 222 , for instance, if a power failure occurs at the device 200 before all of the encrypted data at the buffer 142 is written back to the storage device 150 .
- the device 200 may be also to resume transferring the encrypted data from the buffer 142 to the storage device 150 from a current point at which the device 200 previously stopped.
- the device 200 may be able to reduce or prevent redundant encryption of plaintext data and/or redundant transfer of encrypted data.
- the transfer unit 220 may send a complete message after the requested data is written to the buffer 154 , to indicate to the host 140 that the request has been completed. The host 140 may then be free to reallocate the buffer 142 and/or overwrite the buffer 142 after the complete message is received. The complete message may be sent from the transfer unit 220 to the host 140 via the interface unit 110 .
- FIG. 3 is an example block diagram of a computing device 300 including instructions for encrypting data of a storage device.
- the computing device 300 includes a processor 310 and a machine-readable storage medium 320 .
- the machine-readable storage medium 320 further includes instructions 321 , 323 , 325 , 327 and 329 for encrypting the data of the storage device.
- the computing device 300 may be, for example, a secure microprocessor, a notebook computer, a desktop computer, an all-in-one system, a server, a network device, a wireless device, or any other type of user device capable of executing the instructions 321 , 323 , 325 , 327 and 329 .
- the computing device 300 may include or be connected to additional components such as memories, sensors, displays, etc.
- the processor 310 may be, at least one central processing unit (CPU), at least one semiconductor-based microprocessor, other hardware devices suitable for retrieval and execution of instructions stored in the machine-readable storage medium 320 , or combinations thereof.
- the processor 310 may fetch, decode, and execute instructions 321 , 323 , 325 , 327 and 329 to implement encrypting the data of the storage device.
- the processor 310 may include at least one integrated circuit (IC), other control logic, other electronic circuits, or combinations thereof that include a number of electronic components for performing the functionality of instructions 321 , 323 , 325 , 327 and 329 .
- IC integrated circuit
- the machine-readable storage medium 320 may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions.
- the machine-readable storage medium 320 may be, for example, Random Access Memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage drive, a Compact Disc Read Only Memory (CD-ROM), and the like.
- RAM Random Access Memory
- EEPROM Electrically Erasable Programmable Read-Only Memory
- CD-ROM Compact Disc Read Only Memory
- the machine-readable storage medium 320 can be non-transitory.
- machine-readable storage medium 320 may be encoded with a series of executable instructions for encrypting the data of the storage device.
- the instructions 321 , 323 , 325 , 327 and 329 when executed by a processor can cause the processor to perform processes, such as, the process of FIG. 4 .
- the receive instructions 321 may be executed by the processor 310 to receive a request from a host (not shown).
- the determine instructions 323 may be executed by the processor 310 to determine if the request is related to requesting first data from a storage device (not shown).
- the write second data instructions 325 may be executed by the processor 310 to write second data of the storage device to a buffer (not shown) of the host based on the determination.
- the encrypt instructions 327 may be executed by the processor 310 encrypt and write the second data back from the buffer to the storage device after the second data is transmitted.
- the write first data instructions 329 may be executed by the processor 310 write the first data to the buffer after the encrypted data is written back to the storage device.
- the second data may be read from the buffer before the second data is encrypted and written to the storage device. Further, the second data may be encrypted at the device 300 .
- FIG. 4 is an example flowchart of a method 400 for encrypting data of a storage device.
- execution of the method 400 is described below with reference to the device 200 , other suitable components for execution of the method 400 can be utilized, such as the device 100 .
- the components for executing the method 400 may be spread among multiple devices (e.g., a processing device in communication with input and output devices). In certain scenarios, multiple devices acting in coordination can be considered a single device to perform the method 400 .
- the method 400 may be implemented in the form of executable instructions stored on a machine-readable storage medium, such as storage medium 320 , and/or in the form of electronic circuitry.
- the device 200 determines if a request received from a host 140 requests data of the storage device 150 to be sent to the host 140 , such as read and sense type requests.
- a request received from a host 140 requests data of the storage device 150 to be sent to the host 140 , such as read and sense type requests.
- the method 400 flows back to block 410 .
- the request such as a write request, is still processed by the device 200 via a separate process (not shown).
- the method 400 proceeds to block 430 .
- the device 200 writes first data of the storage device 150 to a buffer 142 of the host 140 associated with the request.
- the buffer 142 may be memory space allocated by the host 140 for data to be returned from the storage device 150 in response to the request.
- the first data may include iteratively read blocks of plaintext data of a disk of a storage volume of the storage device 150 .
- the device 200 reads the first data from the buffer after the first data has been written to the buffer 142 .
- the device 200 encrypts and writes the read first data back to the storage device 150 .
- the device 200 may overwrite the first data at the storage device 150 with the encrypted data.
- the device 200 may write second data of the storage device 150 to the buffer 142 after the encrypted data has been written back to the storage device 150 .
- the second data may be associated with the requested data of the request while the first data may not be associated with requested data of the request.
- the request may still be active or pending at the host 140 while the device 200 is writing and reading the first data to and from the buffer 142 .
- the request may be not active or completed at the host 140 after the second data is written to the buffer 142 .
- embodiments provide a method and/or device for dynamically borrowing the host's buffer to store plaintext data of the storage device and then writing back the plaintext data from the buffer to the storage device in encrypted form.
- embodiments may allow for existing data of the storage device to be encrypted by a storage device controller that is limited to encrypting only data to be written to the storage device, at a low cost and/or latency.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
Abstract
Description
- This is a continuation of U.S. application Ser. No. 13/870,820, filed Apr. 25, 2013, which is hereby incorporated by reference.
- Storage device controllers may receive data and encrypt the received data before writing the encrypted data to a storage device. A host seeking to write data to or read data from the storage device may send a request to the storage device controller in order to access the storage device.
- The following detailed description references the drawings, wherein:
-
FIG. 1 is an example block diagram of a device to encrypt data of a storage device; -
FIG. 2 is another example block diagram of a device to encrypt data of a storage device; -
FIG. 3 is an example block diagram of a computing device including instructions for encrypting data of a storage device; and -
FIG. 4 is an example flowchart of a method for encrypting data of a storage device. - Specific details are given in the following description to provide an understanding of examples of the present techniques. However, it will be understood that examples of the present techniques may be practiced without these specific details. For example, systems may be shown in block diagrams in order not to obscure examples of the present techniques in unnecessary detail. In other instances, well-known processes, structures and techniques may be shown without unnecessary detail in order to avoid obscuring the examples of the present techniques.
- Some types of storage device controllers may only encrypt data being received, such as data crossing a Peripheral Component interconnect Express (PCIE) boundary as it is transferred from a host's memory to the storage device controller. Upon encrypting the received data, the storage device controller may then write the encrypted data to a storage device. Thus, while any new data to be written to the storage device may be encrypted by the storage device controller, old or existing data on the storage device may not be encrypted by the storage device controller. Moreover, modifying or adding hardware of the storage device controller so that the storage device controller can directly encrypt data of the storage device may prove difficult and/or cost prohibitive.
- Examples of the present techniques may dynamically borrow the host's buffer to store plaintext data of the storage device and then write back the plaintext data from the buffer to the storage device in encrypted form. For example, in an example, a device may include an interface unit, a transfer unit and an encryption unit. The interface unit may receive a request from a host requesting data from a storage device. The transfer unit may write plaintext data of the storage device into a buffer of the host, in response to the request. The encryption unit may encrypt the plaintext data and write the encrypted data back to the storage device. Then, the interface unit may write the requested data of the request to the buffer after the encrypted data is written back to the storage device. Thus, examples may allow for existing data of the storage device to be encrypted by a storage device controller that is limited to encrypting only data to be written to the storage device, at a low cost and/or latency.
- Referring now to the drawings,
FIG. 1 is an example block diagram of adevice 100 to encrypt data of astorage device 150. Thedevice 100 may couple to or be included in any type of computing device or controller that interfaces with a memory, such as a secure microprocessor, a storage device controller, a notebook computer, a desktop computer, an all-in-one system, a server, a network device, a wireless device and the like. In the example ofFIG. 1 ,device 100 interfaces with ahost 140 and thestorage device 150. For example, thedevice 100 may communicate with thestorage device 150 via a Serial Attached SCSI (SAS) connection and may communicate with thehost 140 via a Peripheral Component Interconnect (PCI) connection, Ethernet or IP protocol connection. - The
host 140 may refer to any type of device that seeks to access thestorage device 150, such as a main processor of a computer or a computer connected to a computer network. Thestorage device 150 may be any electronic, magnetic, optical, or other physical storage device that stores data, such as a hard disk drive (HDD), solid-state drive (SSD) and the like. For example thestorage device 150 may include one or more physical drives (not shown) and one or more logical data volumes spanning one or more of the drives. - In
FIG. 1 , thedevice 100 is shown to include aninterface unit 110, atransfer unit 120 and anencryption unit 130. The interface, transfer andencryption units encryption units - The
interface unit 110 may receive a request from thehost 140 requesting data from astorage device 150. The request may be a read type request, a sense type request or any other type of request related to a transfer of data from thestorage device 150 to thehost 140. The read request may relate to accessing data at a location of thestorage device 150 indicated by the read request. The location may include one or more addresses of thestorage device 150. The sense request may relate to accessing sense data at a location of thestorage device 150 indicated by the sense request. The sense data may include status/error information related to the data and indicate a success/normal condition, simple problems such as no disk being loaded, serious hardware failures, and the like. For example, thedevice 100 may transfer the data and/or sense data thereof from thestorage device 150 to thebuffer 142 in response to the read or sense type request of thehost 140. - The
transfer unit 120 may write plaintext data of thestorage device 150 into abuffer 142 of thehost 140, in response to the request. The term plaintext may refer to an unaltered representation of data before any action has been taken to conceal, compress, or modify it in another manner. The term plaintext does not necessarily refer to text nor data that is plain. - An amount of the plaintext data written to the
buffer 142 may be based on a size allocated for thebuffer 142 by thehost 140 for the requested data. For example, if thehost 140 requested to read 512 bytes or a block of data of thestorage device 150 via the read request, then thehost 140 may have allocated thebuffer 142 to be 512 bytes or a block long. Further, thehost 140 may have a plurality of buffers allocated based on a plurality of outstanding requests to thestorage device 150. - However, the plaintext data written to the
buffer 142 by thetransfer unit 120 may not be the data requested by thehost 140 via the request. Instead, the plaintext data may simply be data which thedevice 200 seeks to write back to thestorage device 150 in encrypted form. Thus, thetransfer unit 120 may, for example, read plaintext from thestorage device 150 that thedevice 100 seeks to encrypt, in response to the request, such as the read or sense type request. For example, inFIG. 1 the plaintext data is shown to be read from afirst location 152 that is different from asecond location 154 where the actual requested data is stored in thestorage device 150. - In one embodiment, the plaintext data may be read sequentially or iteratively from a disc of a storage volume (not shown) of the
storage device 150. As thehost 140 may only allocate thebuffer 142 when thehost 140 expects to receive data in response to the request, thehost 140 may not allocate thebuffer 142 when sending a write request. Thus, thedevice 100 may not send the plaintext data to thehost 140 for the write request. Nonetheless, thedevice 100 may still process the write request by writing data from thehost 140 to thestorage device 150. - The
encryption unit 130 may encrypt the plaintext data and may write the encrypted data back to thestorage device 150. As shown inFIG. 1 , for example, theencryption unit 130 may receive the plaintext data from thebuffer 142 via theinterface unit 110, encrypt the plaintext data, and then output the encrypted data to thestorage device 150 - Encryption may refer to a process of encoding data in such a way that unauthorized parties may not decipher the data while authorized parties may decipher the data. In an encryption scheme, the plaintext may be encrypted using a cryptographic algorithm, turning it into an unreadable ciphertext. This is usually done with the use of an encryption key, which specifies how the message is to be encoded. For instance, the key may be a piece of information or parameter that determines a functional output of a cryptographic algorithm. The cryptographic algorithm may be a symmetric or asymmetric key algorithm. Examples of symmetric algorithms include Twofish, Serpent, AES (Rijndael), Blowfish, CAST5, Rivest Cipher 4 (RC4), Triple Data Encryption Algorithm (3DES), International Data Encryption Algorithm (IDEA) and the like. Examples of asymmetric algorithms include Diffie-Hellman key exchange protocol, Digital Signature Standard (DSS), ElGamal, Paillier cryptosystem, RSA encryption algorithm and Cramer-Shoup cryptosystem, and the like. These algorithms may include a procedure for performing encryption or decryption.
- As shown in
FIG. 1 , the encrypted data may be written to the samefirst location 152 as the plaintext data from which the encrypted data was derived. Thus, by allowing the plaintext data to be overwritten with the encrypted data, the plaintext data may effectively become encrypted. Theinterface unit 110 may write the requested data of the request to thebuffer 142 after the encrypted data is written back to thestorage device 150. This way, the encrypted data may be not lost before it can be written back to thestorage device 150. After the requested data is written to thebuffer 142, the request may be considered completed. - The
encryption unit 130 is located at thedevice 100, and not thehost 140 or thestorage device 150. Further, theencryption unit 130 may only be able to encrypt data received externally via theinterface unit 110. Thehost 140 may only be connected to thestorage device 150 via thedevice 100. Thus, thedevice 100 may encrypt the plaintext data after reading the plaintext data from thebuffer 142 of thehost 140 and before writing the plaintext data to thestorage device 150. -
FIG. 2 is another example block diagram of adevice 200 to encrypt data of a storage device. Thedevice 200 may couple to or be included in any type of computing device or controller that interfaces with a memory, such as a secure microprocessor, a storage device controller, a notebook computer, a desktop computer, an all-in-one system, a server, a network device, a wireless device and the like. - The
device 200 ofFIG. 2 may include at least the functionality and/or hardware of thedevice 100 ofFIG. 1 . For example, thedevice 200 ofFIG. 2 includes theinterface unit 110 and theencryption unit 130 of thedevice 200 ofFIG. 1 . Atransfer unit 220 included in thedevice 200 may have at least the functionality and/or hardware of thetransfer unit 120 ofFIG. 1 . Thedevice 200 further includes adetermination unit 130. Similar toFIG. 1 , thedevice 200 also interfaces with thehost 140 and thestorage device 150. - The
determination unit 210 may include, for example, a hardware device including electronic circuitry for implementing the functionality described below, such as control logic and/or memory. In addition or as an alternative, thedetermination unit 210 may be implemented as a series of instructions encoded on a machine-readable storage medium and executable by a processor. Thedetermination unit 210 may determine which of the requests received by theinterface unit 110 include the at least one of read and sense type request and forward this determination to thetransfer unit 220. Thetransfer unit 220 may carry out the above operations described inFIG. 1 , if the request is the read or sense type request. - Here, the
transfer unit 220 may further store aprogress 222 of the encrypted data written back to thestorage device 150 at a non-volatile memory (not shown). For example, theprogress 222 may be a percentage number indicating what percent of thestorage device 150 or a volume thereof is encrypted or remains to be encrypted. Alternatively or additionally, theprogress 222 may be a log recording each logical block address (LBA) after the encrypted data has been written to that LBA. - The
transfer unit 220 may reference the storedprogress 222, for instance, if a power failure occurs at thedevice 200 before all of the encrypted data at thebuffer 142 is written back to thestorage device 150. In this case, thedevice 200 may be also to resume transferring the encrypted data from thebuffer 142 to thestorage device 150 from a current point at which thedevice 200 previously stopped. Thus, thedevice 200 may be able to reduce or prevent redundant encryption of plaintext data and/or redundant transfer of encrypted data. - The
transfer unit 220 may send a complete message after the requested data is written to thebuffer 154, to indicate to thehost 140 that the request has been completed. Thehost 140 may then be free to reallocate thebuffer 142 and/or overwrite thebuffer 142 after the complete message is received. The complete message may be sent from thetransfer unit 220 to thehost 140 via theinterface unit 110. -
FIG. 3 is an example block diagram of acomputing device 300 including instructions for encrypting data of a storage device. In the embodiment ofFIG. 3 , thecomputing device 300 includes aprocessor 310 and a machine-readable storage medium 320. The machine-readable storage medium 320 further includesinstructions - The
computing device 300 may be, for example, a secure microprocessor, a notebook computer, a desktop computer, an all-in-one system, a server, a network device, a wireless device, or any other type of user device capable of executing theinstructions computing device 300 may include or be connected to additional components such as memories, sensors, displays, etc. - The
processor 310 may be, at least one central processing unit (CPU), at least one semiconductor-based microprocessor, other hardware devices suitable for retrieval and execution of instructions stored in the machine-readable storage medium 320, or combinations thereof. Theprocessor 310 may fetch, decode, and executeinstructions processor 310 may include at least one integrated circuit (IC), other control logic, other electronic circuits, or combinations thereof that include a number of electronic components for performing the functionality ofinstructions - The machine-
readable storage medium 320 may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. Thus, the machine-readable storage medium 320 may be, for example, Random Access Memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage drive, a Compact Disc Read Only Memory (CD-ROM), and the like. As such, the machine-readable storage medium 320 can be non-transitory. As described in detail below, machine-readable storage medium 320 may be encoded with a series of executable instructions for encrypting the data of the storage device. - Moreover, the
instructions FIG. 4 . For example, the receiveinstructions 321 may be executed by theprocessor 310 to receive a request from a host (not shown). The determineinstructions 323 may be executed by theprocessor 310 to determine if the request is related to requesting first data from a storage device (not shown). The writesecond data instructions 325 may be executed by theprocessor 310 to write second data of the storage device to a buffer (not shown) of the host based on the determination. - The
encrypt instructions 327 may be executed by theprocessor 310 encrypt and write the second data back from the buffer to the storage device after the second data is transmitted. The writefirst data instructions 329 may be executed by theprocessor 310 write the first data to the buffer after the encrypted data is written back to the storage device. The second data may be read from the buffer before the second data is encrypted and written to the storage device. Further, the second data may be encrypted at thedevice 300. -
FIG. 4 is an example flowchart of amethod 400 for encrypting data of a storage device. Although execution of themethod 400 is described below with reference to thedevice 200, other suitable components for execution of themethod 400 can be utilized, such as thedevice 100. Additionally, the components for executing themethod 400 may be spread among multiple devices (e.g., a processing device in communication with input and output devices). In certain scenarios, multiple devices acting in coordination can be considered a single device to perform themethod 400. Themethod 400 may be implemented in the form of executable instructions stored on a machine-readable storage medium, such asstorage medium 320, and/or in the form of electronic circuitry. - At
block 410, thedevice 200 determines if a request received from ahost 140 requests data of thestorage device 150 to be sent to thehost 140, such as read and sense type requests. Next atblock 420, if the request does not request for data of thestorage device 150 to be sent to thehost 140, themethod 400 flows back to block 410. However, the request, such as a write request, is still processed by thedevice 200 via a separate process (not shown). - Otherwise, if the request does request for data of the
storage device 150 to be sent to thehost 140, themethod 400 proceeds to block 430. Atblock 430, thedevice 200 writes first data of thestorage device 150 to abuffer 142 of thehost 140 associated with the request. - For example, the
buffer 142 may be memory space allocated by thehost 140 for data to be returned from thestorage device 150 in response to the request. The first data may include iteratively read blocks of plaintext data of a disk of a storage volume of thestorage device 150. Then, atblock 440, thedevice 200 reads the first data from the buffer after the first data has been written to thebuffer 142. Next, atblock 450, thedevice 200 encrypts and writes the read first data back to thestorage device 150. For example, thedevice 200 may overwrite the first data at thestorage device 150 with the encrypted data. - Lastly, at
block 460, thedevice 200 may write second data of thestorage device 150 to thebuffer 142 after the encrypted data has been written back to thestorage device 150. The second data may be associated with the requested data of the request while the first data may not be associated with requested data of the request. The request may still be active or pending at thehost 140 while thedevice 200 is writing and reading the first data to and from thebuffer 142. The request may be not active or completed at thehost 140 after the second data is written to thebuffer 142. - According to the foregoing, embodiments provide a method and/or device for dynamically borrowing the host's buffer to store plaintext data of the storage device and then writing back the plaintext data from the buffer to the storage device in encrypted form. Thus, embodiments may allow for existing data of the storage device to be encrypted by a storage device controller that is limited to encrypting only data to be written to the storage device, at a low cost and/or latency.
Claims (19)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/707,530 US20160026582A1 (en) | 2013-04-25 | 2015-05-08 | Encrypt data of storage device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/870,820 US9058295B2 (en) | 2013-04-25 | 2013-04-25 | Encrypt data of storage device |
US14/707,530 US20160026582A1 (en) | 2013-04-25 | 2015-05-08 | Encrypt data of storage device |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/870,820 Continuation US9058295B2 (en) | 2013-04-25 | 2013-04-25 | Encrypt data of storage device |
Publications (1)
Publication Number | Publication Date |
---|---|
US20160026582A1 true US20160026582A1 (en) | 2016-01-28 |
Family
ID=51790349
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/870,820 Active 2033-08-23 US9058295B2 (en) | 2013-04-25 | 2013-04-25 | Encrypt data of storage device |
US14/707,530 Abandoned US20160026582A1 (en) | 2013-04-25 | 2015-05-08 | Encrypt data of storage device |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/870,820 Active 2033-08-23 US9058295B2 (en) | 2013-04-25 | 2013-04-25 | Encrypt data of storage device |
Country Status (1)
Country | Link |
---|---|
US (2) | US9058295B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180034787A1 (en) * | 2016-08-01 | 2018-02-01 | Vormetric, Inc. | Data encryption key sharing for a storage system |
US20180217943A1 (en) * | 2017-01-30 | 2018-08-02 | Lenovo (Singapore) Pte. Ltd. | Automatic Encryption of Failing Drives |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5638299A (en) * | 1995-06-22 | 1997-06-10 | Miller; Keith | Light weight, self-contained programmable data-acquisition system |
US20130036258A1 (en) * | 2011-08-05 | 2013-02-07 | Phison Electronics Corp. | Memory storage device, memory controller thereof, and method for programming data thereof |
US8386798B2 (en) * | 2008-12-23 | 2013-02-26 | Unisys Corporation | Block-level data storage using an outstanding write list |
US8484720B2 (en) * | 2009-05-22 | 2013-07-09 | Sandisk Il Ltd. | Service binding method and system |
US20140040639A1 (en) * | 2011-04-29 | 2014-02-06 | Lsi Corporation | Encrypted-transport solid-state disk controller |
US8798312B2 (en) * | 2010-12-24 | 2014-08-05 | Olympus Corporation | Memory and image generation apparatus |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9111524D0 (en) | 1991-05-29 | 1991-07-17 | Hewlett Packard Co | Data storage method and apparatus |
CA2121852A1 (en) | 1993-04-29 | 1994-10-30 | Larry T. Jost | Disk meshing and flexible storage mapping with enhanced flexible caching |
US6405256B1 (en) | 1999-03-31 | 2002-06-11 | Lucent Technologies Inc. | Data streaming using caching servers with expandable buffers and adjustable rate of data transmission to absorb network congestion |
JP4734585B2 (en) | 2001-09-28 | 2011-07-27 | ハイ デンスィティ デバイスィズ アクシエセルスカプ | Method and apparatus for data encryption / decryption in mass storage device |
US20080040536A1 (en) | 2006-05-26 | 2008-02-14 | Jih-Liang Juang | Method and apparatus for device to request and operate an external buffer provided from the host |
-
2013
- 2013-04-25 US US13/870,820 patent/US9058295B2/en active Active
-
2015
- 2015-05-08 US US14/707,530 patent/US20160026582A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5638299A (en) * | 1995-06-22 | 1997-06-10 | Miller; Keith | Light weight, self-contained programmable data-acquisition system |
US8386798B2 (en) * | 2008-12-23 | 2013-02-26 | Unisys Corporation | Block-level data storage using an outstanding write list |
US8484720B2 (en) * | 2009-05-22 | 2013-07-09 | Sandisk Il Ltd. | Service binding method and system |
US8798312B2 (en) * | 2010-12-24 | 2014-08-05 | Olympus Corporation | Memory and image generation apparatus |
US20140040639A1 (en) * | 2011-04-29 | 2014-02-06 | Lsi Corporation | Encrypted-transport solid-state disk controller |
US20130036258A1 (en) * | 2011-08-05 | 2013-02-07 | Phison Electronics Corp. | Memory storage device, memory controller thereof, and method for programming data thereof |
Also Published As
Publication number | Publication date |
---|---|
US20140325242A1 (en) | 2014-10-30 |
US9058295B2 (en) | 2015-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10503934B2 (en) | Secure subsystem | |
KR101457451B1 (en) | Encrypted transport solidstate disk controller | |
CN104252426B (en) | Using the method and system of the data from encryption driver encryption disk drive | |
EP2803012B1 (en) | Using storage controller bus interfaces to secure data transfer between storage devices and hosts | |
US9323943B2 (en) | Decrypt and encrypt data of storage device | |
TWI679554B (en) | Data storage device and operating method therefor | |
US9032218B2 (en) | Key rotation for encrypted storage media using a mirrored volume revive operation | |
WO2019067463A1 (en) | Management of encryption agents in data storage systems | |
KR101496975B1 (en) | Solid-state-disk and input/output method thereof | |
WO2022086602A1 (en) | Data storage device encryption | |
US9058295B2 (en) | Encrypt data of storage device | |
KR20230063170A (en) | Storage device inclduing storage controller and operating method thereof | |
TW202011248A (en) | Data storage device and operating method therefor | |
US20240211612A1 (en) | Data Storage Method and Apparatus, Device, and Readable Medium | |
KR20230056920A (en) | Method of operating storage device and method of operating storage system using the same | |
CN114969850A (en) | Data transmission method and storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:THOMPSON, MARK J;REEL/FRAME:036334/0303 Effective date: 20130425 |
|
AS | Assignment |
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001 Effective date: 20151027 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |