Claims
- 1. In a computer system having a central processing unit and a software identity register, a method comprising:
executing an atomic operation to set an identity of a piece of software into the software identity register, wherein if the atomic operation completes correctly, the software identity register contains the identity of the piece of software and if the atomic operation fails to complete correctly, the software identity register contains a value other than the identity of the piece of software; and examining the software identity register to verify the identity of the piece of software.
- 2. A method as recited in claim 1, wherein the piece of software comprises the operating system.
- 3. A method as recited in claim 1, wherein the piece of software comprises an operating system loader.
- 4. A method as recited in claim 1, wherein executing the atomic operation comprises executing the atomic operation at the start of an operating system loader.
- 5. A method as recited in claim 1, wherein executing the atomic operation comprises executing a BeginAuthenticatedBoot instruction.
- 6. A method as recited in claim 1, wherein the piece of software includes a boot block that includes a block of code.
- 7. A method as recited in claim 6, wherein the boot block further includes a BeginAuthenticatedBoot opcode.
- 8. A method as recited in claim 6, wherein the boot block further includes a length specifying a number of bytes in the block of code.
- 9. A method as recited in claim 6, wherein the boot block further includes:
a signature obtained from signing the block of code; and a public key from a key pair.
- 10. A method as recited in claim 6, wherein the boot block further includes one or more constants to be used to validate subsequent operating system components.
- 11. A method as recited in claim 1, wherein the identity comprises a public key of a correctly signed block of code from the piece of software, and the examining comprises verifying a signature of the signed block of code against the public key.
- 12. A method as recited in claim 1, wherein the identity comprises a hash digest of a block of code from the piece of software, and the examining comprises hashing the block of code.
- 13. A method as recited in claim 1, further comprising appending at least a portion of the identity to a boot log.
- 14. A method as recited in claim 1, further comprising authenticating additional blocks of code.
- 15. A method as recited in claim 1, further comprising:
appending at least a portion of the identity to a boot log; authenticating additional blocks of code; and appending identities of the additional blocks of code to the boot log.
- 16. In a computer system having a central processing unit (CPU), a piece of software, and a software identity register, a method comprising:
identifying a boot block of code associated with the piece of software that uniquely describes the piece of software; creating an identity of the piece of software from the boot block; and executing an atomic operation to set the identity of the piece of software into the software identity register, wherein if the atomic operation completes correctly, the software identity register contains the identity of the piece of software.
- 17. A method as recited in claim 16, wherein the piece of software comprises an operating system.
- 18. A method as recited in claim 16, wherein the piece of software comprises an operating system loader.
- 19. A method as recited in claim 16, wherein executing the atomic operation comprises executing the atomic operation at the start of an operating system loader.
- 20 A method as recited in claim 16, wherein the creating comprises signing the boot block using a private key from a key pair to form a signature, and wherein the signature and a corresponding public key from the key pair together form the identity of the piece of software.
- 21. A method as recited in claim 16, wherein the creating comprises hashing the boot block to form a digest, the digest forming the identity of the piece of software.
- 22. A method as recited in claim 16, further comprising appending at least a portion of the identity to a boot log.
- 23. A method as recited in claim 16, further comprising authenticating additional blocks of code.
- 24. A method as recited in claim 16, further comprising:
appending at least a portion of the identity to a boot log; authenticating additional blocks of code; and appending identities of the additional blocks of code to the boot log.
- 25. A method as recited in claim 16, wherein executing the atomic operation comprises executing a BeginAuthenticatedBoot instruction.
- 26. A computer comprising:
a nonvolatile memory having a piece of software stored therein, wherein the piece of software has a block of code; a software identity register; a central processing unit (CPU) coupled to the memory; and the piece of software being booted for execution on the CPU according to a sequence that begins with an atomic operation, wherein if the atomic operation completes correctly, the software identity register is set to the identity of the piece of software.
- 27. A computer as recited in claim 26, wherein the software identity register is included in the CPU.
- 28. A computer as recited in claim 26, wherein the piece of software comprises an operating system.
- 29. A computer as recited in claim 26, wherein the piece of software comprises an operating system loader.
- 30. A method as recited in claim 26, wherein the sequence includes an operating system loader.
- 31. A computer as recited in claim 26, wherein the identity comprises a digital signature on a block of code from the piece of software.
- 32. A computer as recited in claim 26, wherein the identity comprises a hash digest of a block of code from the piece of software.
- 33. A computer as recited in claim 26, wherein the CPU holds a manufacturer certificate signed by a manufacturer of the CPU.
- 34. A computer as recited in claim 26, further comprising a boot log, wherein the CPU appends the identity of the piece of software to the boot log in the event that the atomic operation completes correctly.
- 35. One or more computer readable memories having stored thereon a plurality of instructions that, when executed by one or more processors of a device, causes the one or more processors to:
execute an atomic operation to set an identity of a piece of software into a software identity register of one of the one or more processors, wherein if the atomic operation completes correctly, the software identity register contains the identity of the piece of software and if the atomic operation fails to complete correctly, the software identity register contains a value other than the identity of the piece of software; and examining the software identity register to verify the identity of the piece of software.
- 36. One or more computer readable memories as recited in claim 35, wherein the piece of software comprises an operating system.
- 37. One or more computer readable memories as recited in claim 35, wherein the piece of software comprises an operating system loader.
- 38. One or more computer readable memories as recited in claim 35, wherein the instructions that cause the one or more processors to execute the atomic operation comprises instructions that cause the one or more processors to execute the atomic operation at the start of an operating system loader.
- 39. One or more computer readable memories as recited in claim 35, wherein the plurality of instructions comprises an operating system loader.
- 40. One or more computer readable memories as recited in claim 35, wherein execution of the plurality of instructions that causes the one or more processors to execute the atomic operation is initiated by a BeginAuthenticatedBoot instruction.
- 41. One or more computer readable memories as recited in claim 35, wherein the identity of the piece of software comprises a hash digest of a block of code of the piece of software.
- 42. A method of generating a signed boot block for a piece of software, the method comprising:
signing, using a private key from a key pair, a block of code; and generating a signed boot block that includes:
a BeginAuthenticatedBoot opcode, a length specifying a number of bytes in the block of code, the block of code, the signature obtained from signing the block of code, and a public key from the key pair to be used to verify the signature.
- 43. A method as recited in claim 42, wherein the piece of software comprises an operating system.
- 44. A method as recited in claim 42, wherein the piece of software comprises an operating system loader.
- 45. A method as recited in claim 42, wherein the signed boot block further includes information to be used to validate subsequent operating system components.
- 46. A method as recited in claim 45, wherein the information comprises one or more keys.
- 47. One or more computer readable memories having stored thereon a plurality of instructions that, when executed by one or more processors of a device, causes the one or more processors to:
load a signed boot block for a piece of software, wherein the signed boot block includes,
a BeginAuthenticatedBoot opcode, a length specifying a number of bytes in a block of code, the block of code, a signature obtained from signing the block of code, and a public key from a key pair; and verify, using the public key, the signature of the boot block.
- 48. A method as recited in claim 47, wherein the piece of software comprises an operating system.
- 49. A method as recited in claim 47, wherein the piece of software comprises an operating system loader.
- 50. A method as recited in claim 47, wherein the instructions further cause the one or more processors to set the public key into a software identity register of one of the one or more processors if the signature of the boot block is verified, and otherwise set a predetermined false value into the software identity register.
- 51. A method as recited in claim 47, wherein a private key of the key pair was used to generate the signature.
- 52. A method comprising generating a boot block for a piece of software, wherein the boot block includes a block of code and a number specifying a length of the block of code.
- 53. A method as recited in claim 52, wherein the number specifies a number of bytes in the block of code.
- 54. A method as recited in claim 52, wherein the boot block further includes a BeginAuthenticatedBoot opcode.
- 55. A method as recited in claim 52, wherein the boot block further includes one or more constants to be used to validate subsequent operating system components.
- 56. A method as recited in claim 52, wherein the piece of software comprises an operating system.
- 57. A method as recited in claim 52, wherein each of the one or more constants comprises one or more keys.
- 58. One or more computer readable memories having stored thereon a plurality of instructions that, when executed by one or more processors of a device, causes the one or more processors to:
load a boot block for a piece of software, wherein the boot block includes a block of code; generate a value based on the block of code and the one or more constants; and set the value into a software identity register of one of the one or more processors.
- 59. One or more computer readable memories as recited in claim 58, wherein the boot block further includes a BeginAuthenticatedBoot opcode.
- 60. One or more computer readable memories as recited in claim 58, wherein the boot block further includes a length specifying a number of bytes in the block of code.
- 61. One or more computer readable memories as recited in claim 58, wherein the boot block further includes one or more constants to be used to validate subsequent operating system components.
- 62. One or more computer readable memories as recited in claim 58, wherein the piece of software comprises an operating system.
- 63. One or more computer readable memories as recited in claim 58, wherein the piece of software comprises an operating system loader.
- 64. One or more computer readable memories method as recited in claim 58, wherein the value comprises a cryptographic hash of the block of code and the one or more constants.
- 65. One or more computer readable memories method as recited in claim 58, wherein the value comprises a digest of the block of code and the one or more constants.
RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent application Ser. No. 09/227,568, filed Jan. 8, 1999, entitled “Key-Based Secure Storage”. U.S. patent application Ser. No. 09/227,568 is a continuation-in-part of U.S. provisional patent application serial No. 60/105,891 filed on Oct. 26, 1998, which is herein incorporated by reference, and is related to co-pending and co-filed U.S. patent application Ser. No. 09/266,207 titled “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”, Ser. No. 09/227,611 titled “Loading and Identifying a Digital Rights Management Operating System”, Ser. No. 09/227,559 titled “Digital Rights Management”, and Ser. No. 09/227,561 titled “Digital Rights Management Operating System”.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60105891 |
Oct 1998 |
US |
Continuations (1)
|
Number |
Date |
Country |
Parent |
09227568 |
Jan 1999 |
US |
Child |
10431012 |
May 2003 |
US |