IP Library Granted Patent US 9,104,863
Granted Patent B2
US 9,104,863 · App. 12/982,378 · Granted Aug 11, 2015

Method and apparatus to harden a software execution in random access memory

Inventors: Wenbo Mao (Beijing, CN); Ziye Yang (Beijing, CN)
Assignee: EMC Corporation
G06F21/554G06F21/51G06F21/52G06F21/566G06F2221/033
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,104,863
App. No.
12/982,378
Filed
Dec 30, 2010
Granted
Aug 11, 2015
Kind
B2
Art Unit
2494
USPC
726/22
Abstract

Example embodiments of the present invention relate to a system, apparatus and methods for preserving the integrity of a code to prevent it from being modified, maliciously or inadvertently, while it is in execution in the RAM of a computer platform. This method also may be referred to as code hardening. Code to be hardened in example embodiments of the present invention may be referred to as protected code. Example embodiments of the present invention are able to externally detect unauthorized stoppage of the hypervisor by employing ( 1 ) a launch-time metric of the protected code; ( 2 ) a run-time metric of the protected code; and ( 3 ) a liveliness indicator of the protected code.

Claims (116)

1. A computer-implemented method comprising:

receiving, from a computer platform at an external verifier, a launch-time metric of stored protected code, wherein the launch-time metric comprises a first measurement of stored protected code in storage of the computer platform generated at a first launch time of the computer platform;

obtaining, from the computer platform at the external verifier, a run-time metric of the executed protected code, wherein the run-time metric comprises a second measurement of executed protected code in memory of the computer platform generated at a second run time after the first launch time but before a third validation time;

obtaining, from the computer platform at the external verifier, a liveliness indicator of the executed protected code, wherein the liveliness indicator is initialized according to a shared secret between the computer platform and the external verifier and is indicative of whether the executed protected code in memory of the computer platform has been stopped or altered between the second run time and the third validation time; and

validating, at the external verifier, the integrity of the executed protected code according to the launch-time metric, the run-time metric, and the liveliness indicator.

2. The method of claim 1 wherein validating, at the external verifier, the integrity of the executed protected code according to the launch-time metric, the run-time metric, and the liveliness indicator comprises:

determining whether the launch-time metric and the run-time metric are equivalent;

reporting an alert indicating compromise of the stored protected code if the launch-time metric and the run-time metric are not equivalent; and

determining whether the executed protected code is in a liveliness state if the launch-time metric and the run-time metric are equivalent.

3. The method of claim 2 wherein determining whether the executed protected code is in a liveliness state if the launch-time metric and the run-time metric are equivalent comprises:

determining if the liveliness indicator conforms to a liveliness protocol;

reporting an alert indicating compromise of the executed protected code if the liveliness indicator does not conform to the liveliness protocol; and

reporting validation of the executed protected code if the liveliness indicator does conform to the liveliness protocol.

4. The method of claim 3 wherein obtaining a liveliness indicator of the executed protected code from the computer platform comprises:

receiving an initialization seed from the computer platform;

initializing a one-way function of the liveliness protocol according to the initialization seed;

requesting the liveliness indicator from the computer platform if the launch-time metric and the run-time metric are equivalent; and

receiving the liveliness indicator.

5. The method of claim 4 wherein obtaining, from the computer platform at the external verifier, a run-time metric of the executed protected code comprises:

sending a request for the run-time metric from the external verifier to the computer platform; and

receiving the run-time metric from the computer platform at the external verifier, wherein the computer platform generates the run-time metric upon receipt of the request for the run-time metric by measuring the executed protected code at run time of the executed protected code.

6. A computer-implemented method comprising:

providing, from a computer platform to an external verifier, a launch-time metric of stored protected code, wherein the launch-time metric comprises a first measurement of stored protected code in storage of the computer platform generated at a first launch time of the computer platform;

providing, from a computer platform to an external verifier, a run-time metric of executed protected code, wherein the run-time metric comprises a second measurement of executed protected code in memory of the computer platform generated at a second run time after the first launch time but before a third validation time;

providing, from the computer platform to the external verifier, a liveliness indicator of the executed protected code, wherein the liveliness indicator is initialized according to a shared secret between the computer platform and the external verifier and is indicative of whether the executed protected code in memory of the computer platform has been stopped or altered between the second run time and the third validation time; and

receiving, from the external verifier at the computer platform, a notification regarding validity of the executed protected code determined according to the launch-time metric, the run-time metric, and the liveliness indicator.

7. The method of claim 6 wherein providing, from the computer platform to the external verifier, a liveliness indicator of the executed protected code comprises:

providing an initialization seed from the computer platform to the external verifier; and

initializing a one-way function of the liveliness protocol according to the initialization seed.

8. The method of claim 7

wherein providing, from a computer platform to an external verifier, a launch-time metric of stored protected code comprises:

measuring the stored protected code to generate the launch-time metric;

storing the launch-time metric in a physically protected environment; and

sending the launch-time metric from the computer platform to the external verifier;

wherein providing, from the computer platform to the external verifier, a run-time metric of executed protected code comprises:

receiving a request from the external verifier for the run-time metric;

measuring the executed protected code to generate the run-time metric; and

sending the run-time metric from the computer platform to the external verifier; and

wherein providing, from the computer platform to the external verifier, a liveliness indicator of the executed protected code further comprises:

receiving a request for the liveliness indicator from the external verifier if comparing the launch-time metric and the run-time metric at the external verifier succeeds;

calculating the liveliness indicator according to the liveliness protocol; and

sending the liveliness indicator from the computer platform to the external verifier.

9. An apparatus comprising:

a comparator unit configured to receive a launch-time metric of stored protected code from a computer platform and obtain a run-time metric of the executed protected code from the computer platform, wherein the launch-time metric comprises a first measurement of stored protected code in storage of the computer platform generated at a first launch time of the computer platform and wherein the run-time metric comprises a second measurement of executed protected code in memory of the computer platform generated at a second run time after the first launch time but before a third validation time; and

a verification unit configured to obtain a liveliness indicator of the executed protected code from the computer platform and validate the integrity of the executed protected code according to the launch-time metric, the run-time metric, and the liveliness indicator, wherein the liveliness indicator is initialized according to a shared secret between the computer platform and the external verifier and is indicative of whether the executed protected code in memory of the computer platform has been stopped or altered between the second run time and the third validation time.

10. The apparatus of claim 9

wherein the comparator unit is further configured to determine whether the launch-time metric and the run-time metric are equivalent and report an alert indicating compromise of the stored protected code if the launch-time metric and the run-time metric are not equivalent; and

wherein the verification unit is further configured to determine if the liveliness indicator conforms to a liveliness protocol, report an alert indicating compromise of the executed protected code if the liveliness indicator does not conform to the liveliness protocol, and report validation of the executed protected code if the liveliness indicator does conform to the liveliness protocol.

11. The apparatus of claim 10 wherein the verification unit is further configured to receive an initialization seed from the computer platform, initialize a one-way function of the liveliness protocol according to the initialization seed, request the liveliness indicator from the computer platform if the launch-time metric, and the run-time metric are equivalent, and receive the liveliness indicator.

12. An apparatus comprising:

a launch-time unit configured to provide a launch-time metric of stored protected code to an external verifier, wherein the launch-time metric comprises a first measurement of stored protected code in storage of the computer platform generated at a first launch time of the computer platform;

a run-time unit configured to provide a run-time metric of executed protected code to the external verifier, wherein the run-time metric comprises a second measurement of executed protected code in memory of the computer platform generated at a second run time after the first launch time but before a third validation time; and

a liveliness unit configured to provide a liveliness indicator of the executed protected code to the external verifier,

wherein the liveliness indicator is initialized according to a shared secret between the computer platform and the external verifier and is indicative of whether the executed protected code in memory of the computer platform has been stopped or altered between the second run time and the third validation time.

13. The apparatus of claim 12

wherein the launch-time unit is further configured to measure the stored protected code to generate the launch-time metric, store the launch-time metric in a physically protected environment, and send the launch-time metric to the external verifier;

wherein the run-time unit is further configured to receive a request from the external verifier for the run-time metric, measure the executed protected code to generate the run-time metric, and send the run-time metric to the external verifier; and

wherein the liveliness unit is further configured to provide an initialization seed to the external verifier, initialize a one-way function of a liveliness protocol according to the initialization seed, receive a request for the liveliness indicator from the external verifier if comparing the launch-time metric and the run-time metric at the external verifier succeeds, calculate the liveliness indicator according to the one-way function of the liveliness protocol initialized by the initialization seed, and provide the liveliness indicator to the external verifier.

14. A system comprising

a computer platform comprising:

a launch-time unit configured to provide a launch-time metric of stored protected code to an external verifier;

a run-time unit configured to provide a run-time metric of executed protected code to an external verifier; and

a liveliness unit configured to provide a liveliness indicator of the executed protected code to the external verifier; and an external verifier comprising:

a comparator unit configured to receive a launch-time metric of stored protected code from the computer platform and obtain a run-time metric of the executed protected code from the computer platform; and

a verification unit configured to obtain a liveliness indicator of the executed protected code from the computer platform and a validate the integrity of the executed protected code according to the launch-time metric, the run-time metric, and the liveliness;

wherein the launch-time metric comprises a first measurement of stored protected code in storage of the computer platform generated at a first launch time of the computer platform;

wherein the run-time metric comprises a second measurement of executed protected code in memory of the computer platform generated at a second time after the first launch time but before a third validation time; and

wherein the liveliness indicator is initialized according to a shared secret between the computer platform and the external verifier and is indicative of whether the executed protected code in memory of the computer platform has been stopped or altered between the second run time and the third validation time.

15. The system of claim 14

wherein the launch-time unit is further configured to measure the stored protected code to generate the launch-time metric, store the launch-time metric in a physically protected environment, and send the launch-time metric to the external verifier;

wherein the run-time unit is further configured to receive a request from the external verifier for the run-time metric, measure the executed protected code to generate the run-time metric, and send the run-time metric to the external verifier; and

wherein the liveliness unit is further configured to provide an initialization seed to the external verifier, initialize a one-way function of a liveliness protocol according to the initialization seed, receive a request for the liveliness indicator from the external verifier if comparing the launch-time metric and the run-time metric at the external verifier succeeds, calculate the liveliness indicator according to the one-way function of the liveliness protocol initialized by the initialization seed, and provide the liveliness indicator to the external verifier.

16. The system of claim 15

wherein the comparator unit is further configured to determine whether the launch-time metric and the run-time metric are equivalent, report an alert indicating compromise of the stored protected code if the launch-time metric and the run-time metric are not equivalent, and request the liveliness indicator if the launch-time metric and the run-time metric are equivalent; and

wherein the verification unit is further configured to receive an initialization seed from the computer platform, initialize the one-way function of a liveliness protocol according to the initialization seed, receive the liveliness indicator of the executed protected code from the computer platform according to the liveliness protocol, determine if the liveliness indicator conforms to the one-way function of the liveliness protocol initialized according to the initialization seed, report an alert indicating the compromise of the executed protected code if the liveliness indicator does not conform to the liveliness protocol, and report validation of the executed protected code if the liveliness indicator does conform to the liveliness protocol.

17. A computer program product having a non-transitory computer readable storage medium operable to store computer program logic embodied in computer program code encoded thereon for validating integrity of executed protected code in memory of a computer platform at an external verifier comprising:

computer program code for receiving, from the computer platform at the external verifier, a launch-time metric of stored protected code, wherein the launch-time metric comprises a first measurement of stored protected code in storage of the computer platform generated at a first launch time of the computer platform;

computer program code for obtaining, from the computer platform at the external verifier, a run-time metric of the executed protected code, wherein the run-time metric comprises a second measurement of executed protected code in memory of the computer platform generated at a second run time after the first launch time but before a third validation time;

computer program code for obtaining, from the computer platform at the external verifier, a liveliness indicator of the executed protected code, wherein the liveliness indicator is initialized according to a shared secret between the computer platform and the external verifier and is indicative of whether the executed protected code in memory of the computer platform has been stopped or altered between the second run time and the third validation time; and

computer program code for validating, at the external verifier, the integrity of the executed protected code at according to the launch-time metric, the run-time metric, and the liveliness indicator.

18. The computer program product of claim 17 wherein computer program code for validating, at the external verifier, the integrity of the executed protected code according to the launch-time metric, the run-time metric, and the liveliness indicator comprises:

computer program code for determining whether the launch-time metric and the run-time metric are equivalent;

computer program code for reporting an alert indicating compromise of the stored protected code if the launch-time metric and the run-time metric are not equivalent; and

computer program code for determining whether the executed protected code is in a liveliness state if the launch-time metric and the run-time metric are equivalent.

19. The computer program product of claim 18 wherein computer program code for determining whether the executed protected code is in a liveliness state if the launch-time metric and the run-time metric are equivalent comprises:

computer program code for determining if the liveliness indicator conforms to a liveliness protocol;

computer program code for reporting an alert indicating compromise of the executed protected code if the liveliness indicator does not conform to the liveliness protocol; and

computer program code for reporting validation of the executed protected code if the liveliness indicator does conform to the liveliness protocol.

20. The computer program product of claim 19 wherein computer program code for obtaining a liveliness indicator of the executed protected code from the computer platform comprises:

computer program code for receiving an initialization seed from the computer platform;

computer program code for initializing a one-way function of the liveliness protocol according to the initialization seed;

computer program code for requesting the liveliness indicator from the computer platform if the launch-time metric and the run-time metric are equivalent; and

computer program code for receiving the liveliness indicator.

21. The computer program product of claim 20 wherein computer program code for obtaining, from the computer platform at the external verifier, a run-time metric of the executed protected code comprises:

computer program code for sending a request for the run-time metric from the external verifier to the computer platform; and

computer program code for receiving the run-time metric from the computer platform at the external verifier, wherein the computer platform generates the run-time metric upon receipt of the request for the run-time metric by measuring the executed protected code at run time of the executed protected code.

22. A computer program product having a non-transitory computer readable storage medium operable to store computer program logic embodied in computer program code encoded thereon for validating integrity of executed protected code in memory of a computer platform with an external verifier comprising:

computer program code for providing, from the computer platform to the external verifier, a launch-time metric of stored protected code, wherein the launch-time metric comprises a first measurement of stored protected code in storage of the computer platform generated a first launch time of the computer platform;

computer program code for providing, from the computer platform to the external verifier, a run-time metric of executed protected code, wherein the run-time metric comprises a second measurement of executed protected code in memory of the computer platform generated at a second run time after the first launch time but before a third validation time; and

computer program code for providing, from the computer platform to the external verifier, a liveliness indicator of the executed protected code, wherein the liveliness indicator is initialized according to a shared secret between the computer platform and the external verifier and is indicative of whether the executed protected code in memory of the computer platform has been stopped or altered between the second run time and the third validation time.

23. The computer program product of claim 22 wherein computer program code providing, from the computer platform to the external verifier, a liveliness indicator of the executed protected code comprises:

computer program code for providing an initialization seed from the computer platform to the external verifier; and

computer program code for initializing a one-way function of the liveliness protocol according to the initialization seed.

24. The computer program product of claim 23

wherein computer program code for providing, from a computer platform to an external verifier, a launch-time metric of the stored protected code comprises:

computer program code for measuring the stored protected code to generate the launch-time metric;

computer program code for storing the launch-time metric in a physically protected environment; and

computer program code for sending the launch-time metric from the computer platform to the external verifier;

wherein computer program code for providing, from the computer platform to the external verifier, a run-time metric of the executed protected code comprises:

computer program code for receiving a request from the external verifier for the run-time metric;

computer program code for measuring the executed protected code to generate the run-time metric; and

computer program code for sending the run-time metric from the computer platform to the external verifier; and

wherein computer program code for providing, from the computer platform to the external verifier, a liveliness indicator of the executed protected code further comprises:

computer program code for receiving a request for the liveliness indicator from the external verifier if comparing the launch-time metric and the run-time metric at the external verifier succeeds;

computer program code for calculating the liveliness indicator according to the liveliness protocol; and

computer program code for sending the liveliness indicator from the computer platform to the external verifier.

Assignments (10)
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 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 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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/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: 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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2010
From: MAO, WENBO; YANG, ZIYE
To: EMC CORPORATION
Reel/Frame 025773/0857 →
Priority Claims (1)
CN 2010 1 0601493 · Dec 23, 2010 · national
Continuity (1)
Related Publication 20120167211A1 · Jun 28, 2012