IP Library Granted Patent US 7,457,412
Granted Patent B2
US 7,457,412 · App. 11/615,266 · Granted Nov 25, 2008

System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party

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 7,457,412
App. No.
11/615,266
Granted
Nov 25, 2008
Kind
B2
Abstract

In accordance with certain aspects, a computer system has a central processing unit (CPU) and an operating system (OS), the CPU having a pair of private and public keys and a software identity register that holds an identity of the operating system. An OS certificate is created including the identity from the software identity register, information describing the operating system, and the CPU public key. The created OS certificate is signed using the CPU private key.

Claims (43)

1. In a computer system having a central processing unit (CPU) and an operating system (OS), the computer system maintaining a boot log that holds identities of software components that are currently executing, and the CPU having a pair of private and public keys and a software identity register that holds an identity of the operating system, a method comprising:

creating an OS certificate including the identity from the software identity register, information describing the operating system, and the CPU public key;

signing the OS certificate using the CPU private key;

forming a generator seed from a CPU-specific secret, a user-supplied seed, and OS-specific data from the boot log; and

generating a storage key based on a function of the generator seed.

2. The method as recited in claim 1 , further comprising submitting the signed OS certificate over a network to a third party to prove an identity of the operating system to the third party.

3. The method as recited in claim 1 , wherein creating the OS certificate comprises forming the OS certificate with one or more items from the boot log.

4. The method as recited in claim 1 , wherein the software identity register holds, as the identity of the operating system, a public key of a boot block of the operating system.

5. The method as recited in claim 1 , wherein the software identity register holds, as the identity of the operating system, a cryptographic hash of code and one or more constants included in a boot block of the operating system.

6. The method as recited in claim 1 , wherein the software identity register holds the identity of the operating system if a boot block of the operating system was executed atomically, and holds a fake value if the boot block of the operating system was not executed atomically.

7. The method as recited in claim 1 , wherein the software identity register holds, as the identity of the operating system, a cryptographic digest of a data structure comprising a boot block of the operating system and contents of the boot log.

8. In a computer system having a central processing unit (CPU) and an operating system (OS), the CPU having a pair of private and public keys and a software identity register that holds an identity of the operating system, the computer system further maintaining a boot log that holds identities of software components that are currently executing, a method comprising:

forming a generator seed from a CPU-specific secret, a user-supplied seed, and OS-specific data from the boot log; and

generating a storage key based on a function of the generator seed;

the forming and generating comprising creating a storage key SK as follows:

SK=SHA(CPU-specific secret, OS-specific data, seed).

9. The method as recited in claim 8 , further comprising encrypting data using the storage key.

10. The method as recited in claim 8 , wherein the boot log includes both a public key of a boot block of the operating system and an identity for each software component that is loaded by the boot block.

11. The method as recited in claim 8 , wherein the boot log includes both a digest of a boot block of the operating system and an identity for each software component that is loaded by the boot block.

12. The method as recited in claim 8 , wherein the CPU-specific secret comprises a secret CPU-internal key.

13. The method as recited in claim 8 , wherein the OS-specific data comprises OS-specific data from the boot log and the identity of the operating system from the software identity register.

14. The method as recited in claim 8 , wherein the OS-specific data comprises both a public key of a boot block of the operating system and a version number.

15. For execution on a computer system having a central processing unit (CPU) and an operating system (OS), the CPU having a pair of private and public keys and a software identity register that holds an identity of the operating system, a computer program stored on one or more computer-readable storage media of the computer system, the program causing the CPU to, when executing the program:

form an OS certificate containing the identity from the software identity register, information describing the operating system, and the CPU public key;

sign the OS certificate using the CPU private key;

form a generator seed from a CPU-specific secret, a user-supplied seed, and the identity of the operating system from the software identity register; and

generate a storage key based on a function of the generator seed.

16. In a computer system having a central processing unit (CPU) and an operating system (OS), the CPU having a pair of private and public keys and a software identity register that holds an identity of the operating system, a method comprising:

creating an OS certificate including the identity from the software identity register, information describing the operating system, and the CPU public key;

signing the OS certificate using the CPU private key;

forming a generator seed from a CPU-specific secret, a user-supplied seed, and the identity of the operating system from the software identity register; and

generating a storage key based on a function of the generator seed.

17. The method as recited in claim 16 , further comprising submitting the signed OS certificate over a network to a third party to prove an identity of the operating system to the third party.

18. The method as recited in claim 16 , wherein creating the OS certificate comprises forming the OS certificate with one or more items from a boot log containing identities of software components that are executing on the CPU.

19. The method as recited in claim 16 , wherein the software identity register holds, as the identity of the operating system, a public key of a boot block of the operating system.

20. The method as recited in claim 16 , wherein the software identity register holds, as the identity of the operating system, a cryptographic hash of code and one or more constants included in a boot block of the operating system

21. The method as recited in claim 16 , wherein the software identity register holds the identity of the operating system a boot block of the operating system WM executed atomically, and holds a fake value if the boot block of the operating system was not executed atomically.

22. The method as recited in claim 16 , wherein the software identity register holds, as the identity of the operating system, a cryptographic digest of a data structure comprising a boot block of the operating system and contents of a boot log containing identities of software components that are executing on the CPU.

23. For execution on a computer system having a central processing unit (CPU) and an operating system (OS), the CPU having a pair of private and public keys and a software identity register that holds an identity of the operating system, the computer system further maintaining a boot log that holds identities of software components that are currently executing, a computer program stored on one or more computer-readable storage media of the computer system, the program causing the CPU to, when executing the program:

form an OS certificate containing the identity from the software identity register, information describing the operating system, and the CPU public key;

sign the OS certificate using the CPU private key;

form a generator seed from a CPU-specific secret, a user-supplied seed, and OS-specific data from the boot log; and

generate a storage key based on a function of the generator seed.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →