Boot blocks for software
AssigneeMicrosoft Corporation
InventorsButler W. Lampson, John D. DeTreville, Paul England
Life of this patent
Estimating the term…
Abstract
In accordance with one aspect of boot blocks for software, in a computer system that has a central processing unit and a software identity register, an atomic operation is executed to set an identity of a piece of software into the software identity register. If the atomic operation completes correctly, then the software identity register contains the identity of the piece of software; otherwise, the software identity register contains a value other than the identity of the piece of software.
Claims65
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.
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.
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.
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.
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.
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.
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.
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.
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.
Dependencies are inferred from the claim text.