IP Library Granted Patent US 9,208,105
Granted Patent B2
US 9,208,105 · App. 13/905,200 · Granted Dec 8, 2015

System and method for intercept of UEFI block I/O protocol services for BIOS based hard drive encryption support

Inventors: Anand Prakash Joshi (Round Rock, TX); Richard M. Tonry (Austin, TX)
Assignee: Dell Products, LP
G06F12/1408G06F21/72G06F21/78G06F21/10G06F21/71G06F21/85H04L9/08H04L63/0428
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,208,105
App. No.
13/905,200
Filed
May 30, 2013
Granted
Dec 8, 2015
Kind
B2
Art Unit
2497
USPC
713/189
Abstract

An information handling system and method performs Unified Extensible Firmware Interface (UEFI) interception and pre-processing of data associated with block input/output (I/O) commands targeting encrypted storage devices. A UEFI interceptor block (IB) I/O driver intercepts each block I/O command targeting block addresses on a storage device and identifies whether any of the target block addresses is encrypted. In response to identifying an encrypted block address among the target block addresses, the UEFI IB I/O driver forwards data associated with the encrypted block address to an encryption-decryption module to perform one of an encryption and a decryption of the data. Final handling of the block I/O command is performed using a block I/O driver chained to the UEFI IB I/O driver. Data associated with I/O commands targeting encrypted block addresses is first processed by the encryption-decryption module before final handling of the I/O command is performed by the block I/O driver.

Claims (68)

1. A method for performing Unified Extensible Firmware Interface (UEFI) block input/output (I/O) access to storage devices that can be encrypted, the method comprising:

installing a block I/O driver during UEFI-initiated storage device discovery;

installing an interceptor block I/O driver in response to determining that a discovered storage device is at least partially encrypted, wherein the block I/O driver is chained through the interceptor block I/O driver, which also is communicatively connected to an encryption-decryption module;

intercepting, by a UEFI interceptor block I/O driver, a caller-initiated block I/O command for I/O access to one or more target block addresses on a storage device;

identifying whether any of the one or more target block addresses is for an encrypted storage block;

in response to identifying an encrypted storage block among the one or more target block addresses, forwarding data associated with the encrypted target storage block to the encryption-decryption module to perform one of an encryption and a decryption of corresponding data; and

performing final handling of the block I/O command and associated data using the block I/O driver;

wherein I/O data stored within the encrypted storage block targeted by the block I/O command is first identified by the UEFI interceptor block I/O driver and processed by the encryption-decryption module before final handling of the block I/O command is performed by the block I/O driver.

2. The method of claim 1 , further comprising:

identifying the block I/O command as a write command including unencrypted write data; and

in response to at least a portion of the unencrypted write data being forwarded for storage to an identified encrypted storage block, triggering the encryption-decryption module to encrypt the portion of the unencrypted data that is to be stored within the identified encrypted storage block to generate encrypted data.

3. The method of claim 2 , wherein the performing final handling of the block I/O command comprises:

writing the encrypted data to the identified encrypted storage block; and

writing any remaining unencrypted data to a corresponding block address that is not for an encrypted storage block.

4. The method of claim 2 , further comprising:

placing the encrypted data within a first section of a write buffer; and

placing any remaining unencrypted data within a second section of the write buffer; and

wherein performing final handling of the block I/O commands comprises writing all data content of the write buffer to their associated block addresses targeted by the block I/O command.

5. The method of claim 1 , further comprising:

identifying the block I/O command as a read command for return of read data that includes at least some encrypted data stored within corresponding encrypted storage blocks;

in response to at least a portion of the read data being encrypted data:

triggering the encryption-decryption module to decrypt the encrypted data to generate unencrypted data; and

performing final handling of the block I/O command by: providing the unencrypted data processed by the encryption-decryption module to a caller that issued the block I/O command; and providing any remaining read data that was not stored within an encrypted block address to the caller.

6. The method of claim 5 , wherein providing the unencrypted data and providing the remaining read data comprises:

placing the any remaining read data within a first section of a read buffer; and

placing the unencrypted data within a second section of the read buffer; and

wherein performing final handling of the block I/O comments comprises forwarding the read buffer to a caller that issued the I/O block command.

7. The method of claim 1 , wherein the encryption-decryption module is an encryption-decryption card and forwarding data to the encryption-decryption module comprises forwarding the data with specific processing instructions to the encryption-decryption card.

8. The method of claim 1 , wherein identifying whether any of the one or more block addresses targeted by the block I/O command is encrypted comprises: accessing a high water mark record stored in a master boot record of the storage device; and comparing the block addresses targeted by the block I/O command to the high water mark.

9. The method of claim 1 , wherein performing final handling of the block I/O commands comprises:

receiving a completion signal from the encryption-decryption module that indicates that processing by the module of data associated with a targeted encrypted block address has completed; and

in response to receiving the completion signal, forwarding the block I/O command along with the processed data to the block I/O driver.

10. An information handling system comprising:

a storage device;

a memory device

a processor communicatively coupled to the storage device and the memory device and which: installs a block I/O driver during UEFI-initiated storage device discovery; and installs an interceptor block I/O driver in response to determining that a discovered storage device is at least partially encrypted, wherein the block I/O driver is chained through the interceptor block I/O driver, which also is communicatively connected to the encryption-decryption module

an encryption-decryption module accessible to the processor; and

a block input/output (I/O) driver maintained on the memory device and which can execute on the processor; and

a Unified Extensible Firmware Interface (UEFI) that executes on the processor and which includes the UEFI interceptor block I/O driver that:

intercepts a caller-initiated block I/O command for I/O access to one or more target block addresses on a storage device;

identifies whether any of the one or more target block addresses is for an encrypted storage block;

in response to identifying an encrypted storage block among the storage accessed by the one or more target block addresses, forwards data associated with the encrypted block address to an encryption-decryption module to perform one of an encryption and a decryption of the data; and

performs final handling of the block I/O command and associated data using the block I/O driver;

wherein I/O data stored within the encrypted storage block targeted by the block I/O command is first identified by the UEFI interceptor block I/O driver and processed by the encryption-decryption module before final handling of the block I/O command is performed by the block I/O driver.

11. The information handling system of claim 10 , wherein the interceptor block I/O driver further:

identifies the block I/O command as a write command including unencrypted write data; and

in response to at least a portion of the unencrypted write data being forwarded for storage to an identified encrypted storage block, triggers the encryption-decryption module to encrypt the portion of the unencrypted data that is to be stored within the identified encrypted storage block to generate encrypted data.

12. The information handling system of claim 11 , wherein performing the final handling of the block I/O command comprises the block I/O driver configuring the processor to:

write the encrypted data to the identified encrypted storage block; and

write any remaining unencrypted data to a corresponding block address that is not an address of an encrypted storage block.

13. The information handling system of claim 11 , wherein the block I/O driver:

places the encrypted data within a first section of a write buffer;

places any remaining unencrypted data within a second section of the write buffer; and

performs final handling of the block I/O commands by writing all data content of the write buffer to their associated block addresses targeted by the block I/O command.

14. The information handling system of claim 10 , wherein the UEFI interceptor block I/O driver further:

identifies the block I/O command as a read command for return of read data that includes at least some encrypted data stored within corresponding encrypted block addresses; and

in response to at least a portion of the read data being encrypted data:

triggers the encryption-decryption module to decrypt the encrypted data to generate unencrypted data; and

performs final handling of the block I/O command by: providing the unencrypted data processed by the encryption-decryption module to a caller that issued the block I/O command; and providing any remaining read data that was not stored within an encrypted storage block to the caller.

15. The information handling system of claim 14 , wherein to provide the unencrypted data and provide the remaining read data comprises configuring the processor to:

place the any remaining read data within a first section of a read buffer; and

place the unencrypted data within a second section of the read buffer; and

wherein to perform final handling of the block I/O comments the processor forwards the read buffer to a caller that issued the I/O block command.

16. The information handling system of claim 14 , wherein the encryption-decryption module is an encryption-decryption card and forwarding data to the encryption-decryption module comprises forwarding the data with specific processing instructions to the encryption-decryption card.

17. The information handling system of claim 10 , wherein to identify whether any of the one or more block addresses targeted by the block I/O command is encrypted, the interceptor block I/O driver: accesses a high water mark record stored in a master boot record of the storage device; and compares the block addresses targeted by the block I/O command to the high water mark.

18. The information handling system of claim 10 , wherein to perform final handling of the block I/O commands the UEFI interceptor block I/O driver:

receives a completion signal from the encryption-decryption module that indicates that processing by the module of data associated with a targeted encrypted block address has completed; and

in response to receiving the completion signal, forwards the block I/O command along with the processed data to the block I/O driver.

Assignments (15)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0618 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040040/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLANT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0216 →
PATENT SECURITY AGREEMENT (ABL) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 031898/0001 →
PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 031899/0261 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jan 2, 2014
From: APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 031897/0348 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 30, 2013
From: JOSHI, ANAND PRAKASH; TONRY, RICHARD M.
To: DELL PRODUCTS L.P.
Reel/Frame 030509/0991 →
Continuity (1)
Related Publication 20140359302A1 · Dec 4, 2014