throbber
RIV-1017
`Riverbed Technology v. Silver Peak Systems
`IPR2014-00245 / Page 1 of 13
`
`

`

`US 8,386,797 B1
`
`Page 2
`
`
`
`6,473,861
`6,477,624
`6,516,397
`6,662,333
`6,691,209
`6,704,871
`6,718,444
`6,742,116
`6,763,458
`6,804,162
`6,857,076
`6,898,707
`6,968,424
`6,981,141
`7,051,152
`7,058,769
`7,082,530
`7,096,370
`7,117,421
`7,152,156
`7,215,774
`7,231,050
`7,242,768
`7,278,016
`7,606,364
`2001/0050989
`2002/0029315
`2002/0073298
`2002/0099950
`2002/0138747
`2003/0037248
`2003/0046529
`
`U.S. PATENT DOCUMENTS
`31 *
`10/2002
`Stokes .......................... 713/193
`31
`11/2002
`Kedem et a1.
`32
`2/2003
`Roy et a1.
`31
`12/2003
`Zhang et al.
`31
`2/2004
`O’Connell
`31 *
`3/2004
`Kaplan et a1.
`31
`4/2004
`Hughes
`................. 713/ 171
`31 *
`5/2004
`Matsui et a1.
`31
`7/2004
`Watanabe et a1.
`31
`10/2004
`Eldridge et a1.
`
`31 *
`2/2005
`Klein ..................... 713/189
`31 *
`5/2005
`Sit etal.
`........................ 713/167
`31
`11/2005
`Danilak
`31 *
`12/2005
`Mahne et a1.
`31
`5/2006
`Danilak
`31
`6/2006
`Danilak
`
`713/153
`.
`31*
`7/2006
`Diamant
`31 *
`8/2006
`Klein ............................ 713/193
`31
`10/2006
`Danilak
`31
`12/2006
`Babbitt et al.
`32 *
`5/2007
`Onagawa
`31
`6/2007
`Harris
`32
`7/2007
`Challener
`31
`10/2007
`Detrick et al.
`31 *
`10/2009
`Shih ............................. 380/42
`A1
`12/2001
`Zakiya
`A1
`3/2002
`Williams et a1.
`A1
`6/2002
`Geiger et a1.
`A1*
`7/2002
`Smith ........................... 7 13/200
`A1*
`9/2002
`Clarke .......................... 713/189
`A1*
`2/2003
`Launchbury et a1.
`......... 713/ 193
`A1
`3/2003
`Loison et a1.
`
`................. 713/192
`
`................. 713/165
`
`11111111111111111 380/210
`
`2003/0058873 A1
`2003/0065925 A1*
`2003/0084308 A1*
`2003/0108196 A1*
`2003/0115472 A1*
`2003/0177401 A1*
`2003/0188179 A1
`2003/0212868 A1
`2007/0140486 A1
`2007/0143611 A1
`2008/0232581 A1*
`2009/0319782 A1
`2010/0005289 A1
`
`3/2 03
`/2 03
`5/2 03
`6/2 03
`/2 03
`/2 03
`10/2 03
`11/2 03
`6/2 07
`/2 07
`/2 08
`12/2 09
`1/2 10
`
`Geiger et a1.
`................. 713/178
`Shindo et al.
`Van Rijnswou .
`.. 713/189
`
`Kirichenko ..
`380/37
`Chang ..........
`.. 713/182
`Arnold et al.
`................. 713/202
`Challener et a1.
`Alfieri et a1.
`Haran
`Arroyo et al.
`Elbaz et a1.
`Lee
`Devanand et a1.
`
`..................... 380/42
`
`
`
`OTHER 3UBL1CATIONS
`
`Haran et a1, “CTR Mode for Encryption”, 2002, grouper.ieee.org/
`groups/802/3/efnflpublic/ju102/p2mp/haranip2mp7270702.pdf.*
`Bryant, Randal. O’Hallaron David, Computer Systems, A Program-
`mers Perspective, 2001, pp. 1-763.*
`Chodowiec. Pawel, “Comparison of the Hardware Performance of
`the AES Candidates Using Reconfigurable Hardware”, George
`Mason University, 2002, pp. 1-141.*
`Gobioff, Howard. “Security for a High Performance Commodity
`Storage Subsystem”, 1999, Carnegie Mellon University, p. 1-222.*
`Schneier. Bruce, Applied Cryptography, 1996. Wiley& Sons. p. 173.
`Wagner, et a1. “Comments to NIST Concerning AES-modes of
`Operations: CTR-mode Encryption”.
`In Symmetric Key Block
`Cipher Modes of Operation Workshop, Baltimore, Maryland, US,
`Oct. 20, 2000. p. 1-4.
`
`* cited by examiner
`
`IPR2014-00245 I Page 2 of 13
`
`RIV-1017
`
`RIV-1017
`IPR2014-00245 / Page 2 of 13
`
`

`

`ILS.Patent
`
`Faxzmzms
`
`Shmtlflfi
`
`USS§8¢797B1
`
`SOFTWARE
`PROGRAMS
`
`fl? 11.1
`
`0’5
`
`_.————————.————————-—p—_——'-———
`
`MAIN MEMORY
`
`
`
`1—62
`
`
`HOST
`SYSTEM
`
`132
`
`
` STORAGE
`
`PROCESSOR
`1L6 DATA
`
`STORAGE
`
`MEDIUM
`
`
`
`KEY REGISTER(S)
`
`
`149
`
`
`MEMORY figngROLLER
`
`ENCRYPTION/
`DECRYPTION
`ENGINE
`
`
` 15g
`
`NETWORK PROCESSOR
`UNIT
`
`17_0
`
`NETWORK
`
`.11_8
`NETWORK
`
`
`PROCESSOR
`
`u:
`
`
`FIGURE 1
`
`IPR2014-00245 I Page 3 of 13
`
`RIV-1017
`
`RIV-1017
`IPR2014-00245 / Page 3 of 13
`
`

`

`U.S. Patent
`
`Feb. 26, 2013
`
`Sheet 2 of6
`
`US 8,386,797 B1
`
`£9 E
`
`A MEMORY CONTROLLER RECEIVES A REQUEST (WITH PASSWORD) FROM
`A SOFTWARE PROGRAM TO STORE DATA ON A STORAGE MEDIUM
`210
`
`MEMORY CONTROLLER VERIFIES THE PASSWORD AND UNLOCKS
`ENCRYPTION KEY
`
`3g
`
`ENCRYPT THE DATA USING A KEY STORED IN HARDWARE COUPLED TO
`THE MEMORY CONTROLLER
`220
`
`THE MEMORY CONTROLLER TRANSFERS THE DATA TO THE STORAGE
`MEDIUM TO BE STORED THEREON
`
`230
`
`
`
`
`THE MEMORY CONTROLLER READS THE DATA FROM THE STORAGE
`MEDIUM, IN RESPONSE TO A REQUEST (WITH PASSWORD) FOR THE DATA
`
`
`240
`
`
`MEMORY CONTROLLER VERIFIES THE PASSWORD AND UNLOCKS
`ENCRYPTION KEY
`
`2g
`
`DECRYPT THE DATA IN A HARDWARE ENCRYPTIONIDECRYPTION ENGINE
`USING THE KEY
`
`252
`
`THE MEMORY CONTROLLER TRANSFERS THE DATA TO MAIN MEMORY
`260
`
`IPR2014-00245 I Page 4 of 13
`
`RIV-1017
`
`“ F
`
`IGURE 2
`
`RIV-1017
`IPR2014-00245 / Page 4 of 13
`
`

`

`U.S. Patent
`
`Feb. 26, 2013
`
`Sheet 3 of6
`
`US 8,386,797 B1
`
`M
`
`
`ENCRYPT A KEY WITH USER SUPPLIED PASSWORD TO
`PRODUCE ENCRYPTED KEYS
`
`310
`
`
`
`
`REPEAT AS
`NEEDED
`
`STORE THE ENCRYPTED KEY ON STORAGE MEDIUM
`
`320
`
`
`
`IN RESPONSE TO RECEIVING ONE OF THE PASSWORDS,
`RETRIEVE THE CORRESPONDING ENCRYPTED KEY FROM
`
`
`STORAGE MEDIUM AND DECRYPT IT WITH THE PASSWORD
`
`
`TO PRODUCE THE KEY
`330
`
`
`
`
`
`
`
`ACCESS DATA FROM STORAGE MEDIUM AND DECRYPT IN
`HARDWARE ENCRYPTIONIDECRYPTION UNIT
`
`:49
`
`FIGURE 3
`
`IPR2014-00245 I Page 5 of 13
`
`RIV-1017
`
`RIV-1017
`IPR2014-00245 / Page 5 of 13
`
`

`

`U.S. Patent
`
`Feb. 26, 2013
`
`Sheet 4 of6
`
`US 8,386,797 B1
`
`M
`
`A MEMORY CONTROLLER RECEIVES A PASSWORD FROM A BASIC
`
`INPUT OUTPUT SYSTEM (BIOS) WHEN A COMPUTER SYSTEM
`COUPLED TO A STORAGE DEVICE IS BOOTED
`
`4_12
`
`«.142
`
`THE MEMORY CONTROLLER DECRYPTS A KEY STORED IN
`
`HARDWARE USING THE PASSWORD
`420
`
`THE MEMORY CONTROLLER READS DATA COMPRISING AT LEAST
`
`A PORTION OF AN OPERATING SYSTEM PROGRAM ON THE
`STORAGE DEVICE
`430
`
`THE MEMORY CONTROLLER DECRYPTS THE DATA USING THE
`
`KEY, WHEREIN THE OPERATING SYSTEM PROGRAM IS
`AVAILABLE TO BE LOADED IN THE COMPUTER SYSTEM
`
`FIGURE 4
`
`IPR2014-00245 I Page 6 of 13
`
`RIV-1017
`
`RIV-1017
`IPR2014-00245 / Page 6 of 13
`
`

`

`U.S. Patent
`
`Feb. 26, 2013
`
`Sheet 5 of 6
`
`US 8,386,797 B1
`
`&
`
`PARTITIONS (STORE MAPPING IN A TABLE IN MEMORY
`CONTROLLER)
`fig
`
`GENERATE A PLURALITY OF UNIQUE KEYS
`520
`
` MAP A DATA STORAGE DEVICE INTO A PLURALITY OF
`
`STORE THE PLURALITY OF UNIQUE KEYS IN A MEMORY
`CONTROLLER COUPLED TO THE STORAGE DEVICE
`530
`
`ENCRYPT DATA USING THE APPROPRIATE KEY
`540
`
`STORE THE ENCRYPTED DATA IN THE APPROPRIATE PARTITION
`
`550
`
`HGURE5
`
`IPR2014-00245 I Page 7 of 13
`
`RIV-1017
`
`RIV-1017
`IPR2014-00245 / Page 7 of 13
`
`

`

`U.S. Patent
`
`Feb. 26, 2013
`
`Sheet 6 of6
`
`US 8,386,797 B1
`
`/W
`
`ENCRYPTION
`
`@
`
`S/W
`
`ENCRYPTION
`
`&
`
`115
`
`HARDWARE ENCRYPTION/DECRYPTION
`
`USING AES IN CTR MODE BASED ON BLOCK
`
`NUMBER AND ADDRESS OF BYTE-ALIGNED BLOCK
`
`PASSED THROUGH A TRANSFORM FUNCTION
`
`IPR2014-00245 I Page 8 of 13
`
`RIV-1017
`
`RIV-1017
`IPR2014-00245 / Page 8 of 13
`
`

`

`US 8,386,797 B1
`
`1
`SYSTEM AND METHOD FOR TRANSPARENT
`DISK ENCRYPTION
`
`2
`
`protect data on a hard drive without impacting system perfor-
`mance or relying too heavily on user interaction.
`
`FIELD OF THE INVENTION
`
`SUMMARY OF THE INVENTION
`
`The present invention relates to the field of data storage.
`Specifically, embodiments of the present invention relate to
`encrypting data on a data storage device at a hardware level
`such that the encryption is transparent to the operating system
`and application programs.
`
`10
`
`BACKGROUND ART
`
`The proliferation of laptop computers has made it more
`important than ever to protect the data on a hard drive from 15
`theft. For example, if a laptop is stolen, the contents of the
`hard drive are extremely vulnerable, even if steps are taken to
`protect the data. Considering that many corporate and gov-
`ernment employees routinely take their laptops home, the
`contents may contain extremely valuable and sensitive infor- 20
`mation, which an unauthorized user or a thief may be willing
`0 go to significant lengths to extract.
`One technique for protecting the data on a hard drive is a
`password-locked hard drive. In this case, a software routine
`allows access to the data only if the proper user code and 25
`oassword are entered. While this may provide some measure
`of protection, a moderately computer savvy thief can easily
`‘ecover the contents of the hard drive that are stored without
`
`
`
`encryption. For example, the thief may read the contents of
`he hard drive by either physically removing the hard drive 30
`and attaching it to another host computer or by using special-
`ized disk recovery equipment. In this fashion, the contents
`nay be dumped sector by sector and read without the pass-
`word.
`
`Another technique to protect data on a hard drive is an 35
`operating system encrypting selected files to be stored to the
`hard drive. In this case, files are encrypted on a file-by-file
`basis. For example, the operating system may have an option
`that prompts the user to encrypt files. However, the user may
`decide to leave the encryption option offbecause it may be too 40
`time consuming or inconvenient. Moreover, when the user
`does turn on the encryption option, the user may choose not to
`encrypt some files that should be. Hence, much of the data is
`vulnerable and this option relies too heavily on user interac-
`tion.
`
`45
`
`Furthermore, it may be impossible to use the operating
`system encryption option for some types of files and/or appli-
`cations. Examples of files for which this encryption may be
`unavailable are compressed files, memory mapped files, swap
`files, and garbage files. For example, the hard drive may 50
`receive a temporary file that is not encryptable by this method.
`Therefore, the operating system encryption option is unus-
`able with certain types of files and data connected to certain
`applications.
`Additionally, the operating system encryption option may 55
`consume substantial central processor unit (CPU) time (e.g.,
`25% of CPU utilization) during encryption and decryption.
`Thus, this method severely impacts system performance.
`Therefore, it would be advantageous to provide a way to
`protect data on a hard drive. It would also be advantageous to 60
`protect data on a hard drive via a method that is not vulnerable
`to theft by simply bypassing a password. It would also be
`advantageous to protect data on a hard drive via a method that
`does not require the user to painstakingly encrypt files on a
`file-by-file basis. It would also be advantageous to protect all
`types of files stored on a hard drive and data connected with
`any application. Furthermore, it would be advantageous to
`
`65
`
`The present invention protects data on a hard drive by
`performing encryption at a hardware level transparently to
`system software (e.g., operating system software). Embodi-
`ments ofthe present invention protect data on a hard drive via
`a method that is not vulnerable to theft by simply bypassing a
`password.
`Embodiments of the present invention also protect data on
`a hard drive without requiring the user to painstakingly
`
`encrypt files on a file-by-file basis. Embodiments of the
`present invention protect all types of files stored on a hard
`drive and files connected with any application. Embodiments
`of the present invention protect data on a hard drive without
`impacting system performance or relying on human interac-
`tion. The present invention provides these advantages and
`others not specifically mentioned above but described in the
`sections to follow.
`
`A data storage system providing transparent encryption is
`disclosed. In one embodiment, the data storage system has a
`hardware encryption/decryption engine and a
`register
`coupled to the hardware encryption/decryption engine. The
`register is for securely storing a key for encrypting and
`decrypting data. The key may not be read from outside the
`data storage system. More specifically, the key may not be
`read by the operating system. The user does not have access to
`the encryption key, but may have a password that is passed to
`a controller coupled to the encryption/decryption engine. The
`controller verifies the password and causes data received
`from main memory to be encrypted by the hardware encryp-
`tion/decryption engine using the key. The controller also
`transfers the encrypted data to the data storage device.
`Another embodiment of the present invention provides for
`a method of performing encryption and decryption. The
`method starts with a controller receiving a request, along with
`a password, from a program to store data on a storage
`medium. The controller verifies the password and causes a
`hardware encryption/decryption engine to encrypt the data
`using a key stored in hardware. Then, the memory controller
`transfers the data to the storage medium. At some later time,
`the controller reads the encrypted data from the storage
`medium, in response to a request for the data. Then, the
`hardware encryption/decryption engine decrypts the data
`using the key. Finally, the controller transfers the data to main
`memory. Thus, the encryption’decryption is transparent to the
`requesting program.
`In another embodiment, file-by-file encryption performed
`by an operating system is combined with the method of per-
`forming encryption and decryption of the previous embodi-
`ment.
`
`In another embodiment, a data storage device is mapped
`into multiple partitions, with the mapping stored in a control-
`ler coupled to the data storage device. A unique key is gener-
`ated for each partition and the keys are securely stored in the
`controller. In response to a request from a software program,
`data is encrypted in a hardware encryption/decryption engine
`coupled to the controller using one of the keys and the
`encrypted data is stored in the corresponding partition of the
`data storage device.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`The accompanying drawings, which are incorporated in
`and form a part of this specification, illustrate embodiments
`
`IPR2014-00245 I Page 9 of 13
`
`RIV-1017
`
`RIV-1017
`IPR2014-00245 / Page 9 of 13
`
`

`

`US 8,386,797 B1
`
`3
`
`4
`
`of the invention and, together with the description, serve to
`explain the principles of the invention.
`FIG. 1 is a block diagram of a system for encrypting/
`decrypting data on a storage medium, according to an
`embodiment of the present invention.
`FIG. 2 is a flowchart illustrating steps of a process of
`performing encryption at a hardware level, according to an
`embodiment of the present invention.
`FIG. 3 is a flowchart illustrating steps of a process of
`encrypting data on a hard drive with multiple users sharing a 10
`common key, according to an embodiment of the present
`invention.
`
`5
`
`FIG. 4 is a flowchart illustrating steps of a process of
`booting a computer system whose hard drive is encrypted,
`according to an embodiment of the present invention.
`FIG. 5 is a flowchart illustrating steps of a process storing
`encrypted data on a hard drive in multiple partitions, accord-
`ing to an embodiment of the present invention.
`FIG. 6 is a block diagram illustrating files encrypted at both
`a software and a hardware level, according to an embodiment 20
`of the present invention.
`
`15
`
`
`
`DETAILED DESCRIPTION OF THE INVENTION
`
`In the following detailed description of the present inven- 25
`tion, a method and system for transparent encryption/decryp-
`tion, numerous specific details are set forth in order to provide
`a thorough understanding of the present invention. However,
`it will be recognized by one skilled in the art that the present
`invention may be practiced without these specific details or 30
`with equivalents thereof. In other instances, well-known
`methods, procedures, components, and circuits have not been
`described in detail as not to unnecessarily obscure aspects of
`the present invention.
`Embodiments of the present invention perform encryption 35
`at a hardware level and are thus transparent to all software
`layers (e.g., transparent to the operating system). Referring
`now to the embodiment of FIG. 1, a card, embedded system,
`or peripheral component 115 has a hardware encryption/
`decryption engine 150 for encrypting and decrypting data. 40
`The card 115 may be, for example, a graphics card, although
`embodiments of the present invention are not so limited. The
`card 115 may also be referred to as a data storage system. The
`card 115 has a memory controller for accessing a data storage
`medium 130 (e.g., hard drive). The memory controller 120 45
`also has one or more key registers 140 for storing a key(s) for
`encrypting and decrypting data. Public key encryption may
`be used.
`
`The card 115 receives requests from, for example, a soft-
`ware program 111 or an operating system 112 to store data 50
`(e.g., from main memory 160) to the data storage medium
`130. Along with the request, the card 115 may receive a
`pas sword, which may be used to unlock a key in a key register
`140. The data is encrypted in the hardware encryption/de-
`cryption engine 150 with the key before it is transferred to the 55
`data storage medium 130. The memory controller 120 may
`receive the data and send it to the hardware encryption/de-
`cryption engine 150 or cause the data to be transferred
`directly from main memory 160 to the hardware encryption/
`decryption engine 150. Upon chip reset the encryption mode 60
`may be off, wherein encryption is enabled by, for example, a
`command from the operating system 112. However, this is not
`required. Upon a request from the software program 111 or
`operating system 112 containing a valid password,
`the
`memory controller 120 accesses the data from the data stor-
`age medium 13 0 and has it decrypted by the hardware encryp-
`tion/decryption engine 150 using the key and passed back to
`
`65
`
`main memory 160. In this fashion, the encryption/decryption
`is transparent to the requesting program.
`Referring still to FIG. 1, the memory controller 120 may
`share the encryption/decryption engine 150 with another
`component. For example, a network processor 117 in a net-
`work processing unit 170 for interfacing with a network 118
`may be coupled to the encryption/decryption engine 150. The
`memory controller 120 may have a storage processor 116
`coupled to the encryption/decryption engine 150. In this fash-
`ion, the network processor 117 and the storage processor 116
`share the hardware encryption/decryption engine 150.
`Still referring to FIG. 1, the encryption/decryption engine
`150 may be implemented in hardware in order to process data
`at a sufficient speed. For example, 1 GB/s network traffic
`maybe 125 MB/s in filll duplex and 125 MB/s for encryption
`and 125 MB/s for decryption. There may be, for example, two
`memory controllers 120, each supporting, for example, 133
`MB/s. The encryption/decryption engine 150 may be config-
`urable such that it may be used for both encryption and
`decryption simultaneously. Thus, this embodiment provides a
`low cost and low gate count solution.
`FIG. 2, is a flowchart illustrating a process 200 in which
`data is encrypted and decrypted in a fashion that is transparent
`to a program (111, 112) requesting that data be stored on a
`data storage medium 130. In step 210, a memory controller
`120 receives a request from the program (111, 112) to store
`data on a data storage medium 130. The request may be for
`any data that is to be stored on the data storage medium 130.
`The requesting program (111, 112) need not be aware that the
`data is to be encrypted when stored on the data storage
`medium 130, although optionally it may be so informed. The
`data may already be encrypted when received or not, may be
`compressed or uncompressed, and may be associated with
`any requesting program (111, 112). Thus, embodiments of
`the present invention may be used along with encryption
`performed in software, for example, by the operating system
`112. A password to unlock the encryption key may also be
`passed to the memory controller 120.
`In step 215, the memory controller 120 verifies the pass-
`word and unlocks the encryption key stored in the key register
`140. For example, the memory controller 120 forwards the
`key to the hardware encryption/decryption engine 150.
`If the password is invalid, the memory controller 120 may
`refuse to forward the key and/or refuse to transfer data to the
`data storage medium 130. In one embodiment, the data is
`always encrypted even if no password is received.
`In step 220, the data is encrypted at a hardware level using
`the key stored in hardware and to which the memory control-
`ler 120 has access. For example, the memory controller 130
`may route the data to the hardware encryption/decryption
`engine 150. To produce the key, a random number may be
`generated by the hardware (e.g., in the memory controller
`120). In one embodiment, the unencrypted key carmot be read
`from outside the hardware (e.g., calmot be read outside to
`card 115) and never leaves the hardware.
`In step 230,
`the memory controller 120 transfers the
`encrypted data to the data storage medium 130 to be stored
`thereon. In contrast to prior art,
`the entire data storage
`medium 130 may be encrypted, not just files. For example,
`rather than encrypting on a file-by-file basis, the memory
`controller 120 may encrypt all data that is to be stored. How-
`ever,
`it
`is not required that all data be encrypted. Also,
`embodiments of the present invention provide for using dif-
`ferent keys to encrypt different data.
`At some later point in time, the memory controller 120
`reads the encrypted data from the data storage medium 130, in
`response to a request for the data, in step 240. The memory
`
`IPR2014-00245/ Page 10 of 13
`
`RIV-1017
`
`RIV-1017
`IPR2014-00245 / Page 10 of 13
`
`

`

`US 8,386,797 B1
`
`5
`
`6
`
`5
`
`controller 120 also receives a password to unlock the encryp-
`tion key. For example, the key is transferred to the hardware
`encryption/decryption engine 150. The password may be the
`same password received in step 210. However,
`in one
`embodiment different users may have their own passwords,
`and hence this may be a different password than received in
`step 210. The operating system 112 and device drivers issue
`commands to the memory controller 120 as if no encryption
`were being done. Thus, process 200 is transparent to software
`layers (e.g., software programs 111, operating system 112).
`In step 245, the memory controller 120 verifies the pass-
`word and unlocks the encryption key stored in the key register
`140. For example, the memory controller 120 forwards the
`key to the hardware encryption/decryption engine 150. If the
`password is invalid, the memory controller 120 may refuse to 15
`forward the key.
`The data is then decrypted, in step 250. The memory con-
`troller 120 may route the data to the hardware encryption/
`decryption engine 150 either directly from the data storage
`device 130 or after passing though the memory controller 20
`120. Of course, the hardware encryption/decryption engine
`150 may reside within the memory controller 120, in one
`embodiment.
`
`10
`
`In step 260, the memory controller 120 transfers the data to
`main memory 160, such that it is available to the requesting 25
`program (111, 112). In this fashion, the encryption is per-
`formed at a hardware level and is transparent to all layers of
`software. Process 200 then ends.
`
`Embodiments of the present invention allow for one or
`more user supplied passwords to be involved with the encryp- 30
`tion process. In this fashion, a single user or a group of users
`may have access to all or a selected portion of data (e.g., file
`or partition) on the data storage medium 130. For example,
`many of today’s BIOS (Basic Input/Output System) imple-
`mentations support password protection. In one implementa- 35
`tion, this password (or another password) may be used as a
`base for the encryption/decryption key. However, if the user
`loses his or her password, the encrypted content of the data
`storage medium 130 may be lost. Furthermore, if the user
`changes the password, the encrypted data needs to be re- 40
`encrypted with the new password.
`Therefore,
`instead of using the password directly to
`encrypt the data, the encryption key may be randomly gener-
`ated, with the password being used to encrypt and decrypt the
`encryption key, in one embodiment. In order to store data, the 45
`user supplies the password, which is used to decrypt the key,
`which in turn is used to encrypt the data. Because the data is
`always encrypted with just the encryption key (e. g.,
`the
`encryption does not directly use the password), if the user
`wishes to change the password the data does not need to be 50
`re-encrypted. Only the key needs to be re-encrypted using the
`new password. However, because the encryption key is ran-
`domly generated, if the user loses the password, the data
`cannot be recovered. Also, this embodiment protects against
`the event that the user may leave the company and refuse to 55
`provide the password.
`Thus, rather than encrypting the data with a key that is
`unique for each user, the data may be encrypted with an
`encryption key that is known by an administrator, in one
`embodiment. This known key is encrypted/decrypted with 60
`the user password. If the user leaves the company or forgets
`the password, the data may be recovered using the known
`password.
`There are times when a user may desire to share with
`several others the information encrypted on the data storage 65
`medium 130. While all the users could share a password, this
`is undesirable because users may tend to use the same or
`
`similar passwords for a variety ofendeavors. FIG. 3 illustrates
`a process 300 in which multiple users share a common key but
`use their 0an personal passwords to encrypt the key. Each
`user supplies a unique personal password. This may be imple-
`mented as a BIOS option, but is not so limited. In step 310, the
`encryption key is encrypted with one of the user personal
`passwords. The encryption key may be randomly generated
`within the hardware in which the memory controller 120
`resides.
`
`In step 320, the encrypted personal password is stored on
`the data storage medium 13 0. For example, the encrypted key
`may be stored on the first sector of the data storage medium
`130. However, the personal password is not stored on the data
`storage medium 130. Furthermore, the key is neither stored
`nor transferred outside the hardware “in the clear.” Steps 310
`and 320 are repeated for each user personal password and
`may be performed at any time. Furthermore, the personal
`passwords may be changed at any time without re-encrypting
`data on the data storage medium 130. Only the encrypted key
`on the data storage medium 130 has to be re-encrypted.
`In step 330, the memory controller 120 retrieves one ofthe
`personal password encrypted keys from the data storage
`medium 130 and causes the key to be decrypted by the hard-
`ware encryption/decryption engine 150 using a personal
`password supplied from a user.
`In step 340, the memory controller 120 accesses encrypted
`data from the data storage medium 130 and causes it to be
`decrypted by the hardware encryption/decryption engine 150
`using the just decrypted key. The memory controller 120 then
`causes the decrypted data to be sent to main memory 160.
`Process 300 then ends.
`
`In the rare event that two users have the same password
`(which may be used to encrypt the key), the encrypted key
`would be the same unless extra precautions are taken. This is
`undesirable, as it makes it possible for someone to decipher
`another’s password by noting that the key encrypted to the
`same value.
`
`An embodiment ofthe present invention all but ensures that
`this will not happen by adding a random number to the key
`before encrypting it. Thus, even ifthe same two passwords are
`used, a different encrypted key will result. When decrypting
`the password-encrypted key, the random numbers are thrown
`away. Thus, the same encryption key is used by everyone in
`the group.
`In the event that all the data the entire data storage medium
`130 is encrypted, then there needs to be a way to decrypt the
`data at boot-up time. Referring now to step 410 ofprocess 400
`in FIG. 4, in one embodiment, the memory controller 120
`receives a password from, for example, the BIOS while the
`computer is begin booted. In some cases, a user may enter the
`password at boot-up time. In other cases, the password may
`be received from over a network 118. For example, the com-
`puter system may be a rack-mounted or a blade server, for
`which remote boot-up is important. In this case, the number of
`unsuccessful logins may be limited to prevent someone from
`hacking in.
`In step 420, the memory controller 120 uses this password
`to decrypt a key stored in hardware (e.g., a key register 140).
`In this fashion, only a user who knows the password may
`enable the encryption/decryption key.
`The memory controller 120 uses this password to decrypt
`data from the storage device during boot-up, in step 430. For
`example, the memory controller 120 receives requests to load
`data on the storage medium 130 for the operating system and
`other programs, such as, device drivers, a boot-up program,
`etc.
`
`IPR2014-00245/ Page 11 of 13
`
`RIV-1017
`
`RIV-1017
`IPR2014-00245 / Page 11 of 13
`
`

`

`US 8,386,797 B1
`
`7
`
`8
`
`In step 440, the memory controller 120 decrypts the data
`(e.g., operating system) using the key. In this fashion, the
`operating system is available during boot-up even though it
`was encrypted while stored on the data storage medium 130.
`Clearly, systems that require the operating system to perform
`encryption are incapable of this feat.
`In another embodiment, the encryption of the data storage
`medium 130 may be on a partition basis. For example, the key
`that is used to encrypt the data depends on which portion of
`the data storage medium 130 is accessed. In this embodiment,
`the data storage medium 130 is partitioned into sections that
`are encrypted using unique keys. Referring now to process
`500 of FIG. 5, in step 510 the data storage medium 130 is
`mapped into a number of partitions. This mapping may be
`stored in the memory controller 120. The operating system
`portion may be unencrypted (allowing for boot without pass-
`word via BIOS) or may be encrypted with its own unique key,
`in which case boot-up may be according process 400 of FIG.
`4.
`
`In step 520, a number of unique keys are generated. Any
`suitable mechanism may exist for generating tmique keys for
`the various partitions. For example, the operating system 112
`may direct the memory controller 120 to generate keys for
`each partition.
`In step 530, the keys are stored in the memory controller
`120. There is no need to encrypt the keys and store them on the
`data storage medium 130.
`In step 540, the memory controller 120 receives a request to
`store data on the data storage medium 130 in a particular
`partition, using a particular key. The operating system 112
`may forward the proper password to the memory controller
`120 when a user (e.g., engineering, marketing) desires to
`access the data storage medium 130. The memory controller
`120 encrypts and stores the data, in response to this request.
`An embodiment of the present invention provides for an
`encryption API (Application Programming Interface), which
`may be used by, for example, the operating system 112 or
`software programs 111. The encryption API allows data to be
`read from a specified main memory 160 location and written
`to a specified main memory 160 location. The two locations
`may be the same,
`in which case an in—place encryption
`decryption function is provided. As discussed herein, the
`actual encryption/decryption is performed in the hardware
`encryption/decryption engine 150. The operating system 120
`may have a special driver or extension for accessing the
`encryption AFI.
`Embodiments of the present invention may be used with
`file-by-file encryption performed in software (e.g., performed
`by the operating system). Referring now to FIG. 6, two sepa-
`rate files 602 (file 1 and file 2) are encrypted separately via
`software encryption 604. The encryption keys may be differ-
`ent and the encryption may be performed at separate times. A
`third file 602 (file 3) is not encrypted at the software level. The
`files 602 are passed to the card 115, which performs hardware
`encryption decryption. However, at the hardware level the
`same key may be used irrespective of which file 602 is being
`processed, although separate keys maybe used, if desired.
`For a given input data block, the same encrypted result will
`always occur. Given that some input data blocks are more
`common than are others, the same output pattern may appear
`with greater frequency. For example, an input data block ofall
`zeroes may be common. Hence, its encrypted counterpart will
`also appear more frequently. This may be undesirable as it
`may provide clues as to the nature ofthe encryption algorithm
`and/or the stored data. Furthermore, using the AES (advanced
`encryption standard) in CBC (cipher block chaining) mode
`(or feedback mode) may create scalability issues (e.g., as
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`defined by the critical feedback path in AES) or additional
`latency (e.g., multiple unites operating at lower speed and
`sub-cluster sizes near the end may be aggregated together).
`Therefore, AES may be used in CTR (counter) mode to avoid
`the above-mentioned issues. The counter may be based on
`block number

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket