Computing apparatus and method for verifying a firmware digital signature at boot time
AssigneeKioxia Corporation
InventorHajime Matsui
Life of this patent
Estimating the term…
Abstract
A controller calculates aP by multiplying an integer a being 2 or more and less than 2w and a coordinate value P; reads out, by w bits, a multiplication value k and generates a string of signed odd numbers d of w+1 bits; calculates dP by multiplying a head of the d and the P and inputs the dP to a variable; executes looping between processing for inputting, to the variable, a value obtained by doubling the variable w times and processing for calculating dP by multiplying the P and a second or after of the d and inputting, to the variable, an addition result of the dP and the variable; and calculates a value by multiplying the P and a value based on lower 2 bits of the k and outputs kP by adding the calculated value and the variable.
Claims14
A solid state drive (SSD) memory system comprising:
- at least one nonvolatile memory configured to store a message that is a computer program code of firmware, signature data associated with the message, and a coordinate value P;
- a random access memory (RAM) configured to receive the firmware at a time of starting the firmware:
- a host interface configured to execute transfer of user data between a host computer and the RAM;
- and
- a memory controller, implemented by processing circuitry, configured to
- execute the firmware loaded on the RAM:
- at he time of starting the firmware, read out the signature data, the coordinate value P, and the message from the at least one nonvolatile memory, generate a hash value of the message and generate a multiplication value k being a bit string of m-bit (m is an integer);
- calculate kP as a coordinate value based on the multiplication value k being the input bit string of m-bit input
- calculate aP by multiplying at least one integer a and the coordinate value P at a particular point together, the integer a being 2 or more and less than 2w (w is an integer satisfying w>1);
- read out the multiplication value k being the bit string of m-bit (m is an integer) by every w bits in order from a most significant bit to a least significant bit, and generate a string of signed odd numbers d of w+1 bits;
- and
- calculate dP by multiplying a head of the string of signed odd numbers d and the coordinate value P together, and inputs the dP to a variable;
- execute loop processing predetermined times, the loop processing including
- multiplication processing for inputting, to the variable, a value obtained by doubling the variable w times, and
- processing for calculating dP by multiplying the coordinate value P and a second, or after, of the string of signed odd numbers d, and inputting, to the variable, a result of adding the dP and the variable to each other;
- and
- calculate a value by multiplying the coordinate value P and a value, being based on lower 2 bits of the multiplication value, k, and obtain the kP as the coordinate value by adding the calculated value and the variable t, and
- the memory controller is configured to execute signature verification processing by using the coordinate value kP, the signature, and the hash value of the message,
- wherein the multiplication value k is non-confidential and the signature verification processing performed by the processing circuitry is constant time processing, such that a processing time becomes constant irrespective of a value of the secret key.
A solid state drive (SSD) memory system comprising:
- a nonvolatile memory configured to store a message that is a computer program code of firmware, signature data associated with the message, and a coordinate value P;
- a random access memory (RAM) configured to receive the firmware at a time of starting the firmware;
- a host interface configured to execute transfer of user data between a host computer and the RAM;
- and
- a memory controller, implemented by processing circuitry, configured to control the nonvolatile memory, wherein the memory controller is configured to:
- execute the firmware loaded on the RAM;
- at the time of starting the firmware, read out the signature data, the coordinate value P, and the message from the nonvolatile memory and generate a hash value of the message;
- calculate aP by multiplying at least one integer a and the coordinate value P at a particular point together, the integer a being 2 or more and less than 2w (w is an integer satisfying w>1);
- read out a multiplication value k being a bit string of m-bit (m is an integer) by every w bits in order from a most significant bit to a least significant bit, and generates a string of signed odd numbers d of w+1 bits;
- calculate dP by multiplying a head of the string of signed odd numbers d and the coordinate value P together, and inputs the dP to a variable;
- execute loop processing predetermined times, the loop processing including
- multiplication processing for inputting, to the variable, a value obtained by doubling the variable w times, and
- processing for calculating dP by multiplying the coordinate value P and a second, or after, of the string of signed odd numbers d, and inputting, to the variable, a result of adding the dP and the variable to each other;
- calculate a value by multiplying the coordinate value P and a value, being based on lower 2 bits of the multiplication value, k, and outputs, as kP, a value obtained by adding the calculated value and the variable to each other;
- and
- execute signature verification processing by using kP as a coordinate value, the signature, and the hash value of the message,
- wherein the multiplication value k is non-confidential and the signature verification processing performed is constant time processing, such that a processing time becomes constant irrespective of a value of the secret key.
Dependencies are inferred from the claim text.