A method and system for generating a secure random seed uses chemical processes in a battery of an information handling system as an entropy source for randomness. The secure random seed may be used by a pseudo-random number generator to create a secure pseudorandom bit stream usable to generate secure encryption keys.
|
11. Non-transitory computer readable memory media storing instructions executable by a processor for:
determining a first cell voltage of a battery of an information handling system as a 16-bit value;
determining a second cell voltage of the battery as a 16-bit value;
concatenating the first cell voltage and the second cell voltage to obtain a cell voltage value as a 32-bit value;
determining a remaining battery capacity of the battery as a 16-bit value;
determining a battery voltage of the battery as a 16-bit value;
determining a relative state of charge (soc) of the battery as a 32-bit value;
determining an absolute soc of the battery as a 32-bit value;
performing an exclusive or (xor) of the cell voltage value with the remaining battery capacity to generate a first value as a 32-bit value;
performing an xor of the first value with the battery voltage to generate a second value as a 32-bit value;
performing an xor of the relative soc left-shifted by one bit with the absolute soc to generate a third value as a 32-bit value;
shifting the third value to most significant bits of a 64-bit value to generate a fourth value; and
performing an xor of the fourth value with the second value to generate a 64-bit secure random seed, wherein an entropy source for the secure random seed includes the battery.
1. An information handling system, comprising:
a main processor;
a battery;
an embedded controller (ec) further comprising an ec processor; and
memory media accessible to the ec processor and storing instructions executable by the ec processor for:
determining a first cell voltage of the battery as a 16-bit value;
determining a second cell voltage of the battery as a 16-bit value;
concatenating the first cell voltage and the second cell voltage to obtain a cell voltage value as a 32-bit value;
determining a remaining battery capacity of the battery as a 16-bit value;
determining a battery voltage of the battery as a 16-bit value;
determining a relative state of charge (soc) of the battery as a 32-bit value;
determining an absolute soc of the battery as a 32-bit value;
performing an exclusive or (xor) of the cell voltage value with the remaining battery capacity to generate a first value as a 32-bit value;
performing an xor of the first value with the battery voltage to generate a second value as a 32-bit value;
performing an xor of the relative soc left-shifted by one bit with the absolute soc to generate a third value as a 32-bit value;
shifting the third value to most significant bits of a 64-bit value to generate a fourth value; and
performing an xor of the fourth value with the second value to generate a 64-bit secure random seed, wherein an entropy source for the secure random seed includes the battery.
6. A method for secure communication, the method comprising:
determining a first cell voltage of a battery of an information handling system as a 16-bit value;
determining a second cell voltage of the battery as a 16-bit value;
concatenating the first cell voltage and the second cell voltage to obtain a cell voltage value as a 32-bit value;
determining a remaining battery capacity of the battery as a 16-bit value;
determining a battery voltage of the battery as a 16-bit value;
determining a relative state of charge (soc) of the battery as a 32-bit value;
determining an absolute soc of the battery as a 32-bit value;
performing an exclusive or (xor) of the cell voltage value with the remaining battery capacity to generate a first value as a 32-bit value;
performing an xor of the first value with the battery voltage to generate a second value as a 32-bit value;
performing an xor of the relative soc left-shifted by one bit with the absolute soc to generate a third value as a 32-bit value;
shifting the third value to most significant bits of a 64-bit value to generate a fourth value;
performing an xor of the fourth value with the second value to generate a 64-bit secure random seed, wherein an entropy source for the secure random seed includes the battery;
inputting the secure random seed to a pseudo-random number generator to generate a 64-bit pseudorandom bit stream;
generating an encryption key using the 64-bit pseudo-random bit stream as an input; and
using the encryption key to encrypt a network communication sent by the information handling system.
2. The information handling system of
obtaining a cell voltage in Volts from a measurement of the first cell; and
using least significant 16-bits of the cell voltage as the first cell voltage.
3. The information handling system of
obtaining a cell voltage in Volts from a measurement of the second cell; and
using least significant 16-bits of the cell voltage as the second cell voltage.
4. The information handling system of
obtaining a remaining battery capacity value in milliwatt hours from a measurement of the battery; and
using least significant 16-bits of the remaining battery capacity value as the remaining battery capacity.
5. The information handling system of
obtaining a battery voltage value in Volts from a measurement of the battery; and
using least significant 16-bits of the battery voltage value as the battery voltage.
7. The method of
obtaining a cell voltage in Volts from a measurement of the first cell; and
using least significant 16-bits of the cell voltage as the first cell voltage.
8. The method of
obtaining a cell voltage in Volts from a measurement of the second cell; and
using least significant 16-bits of the cell voltage as the second cell voltage.
9. The method of
obtaining a remaining battery capacity value in milliwatt hours from a measurement of the battery; and
using least significant 16-bits of the remaining battery capacity value as the remaining battery capacity.
10. The method of
obtaining a battery voltage value in Volts from a measurement of the battery; and
using least significant 16-bits of the battery voltage value as the battery voltage.
12. The memory media of
obtaining a cell voltage in Volts from a measurement of the first cell; and
using least significant 16-bits of the cell voltage as the first cell voltage.
13. The memory media of
obtaining a cell voltage in Volts from a measurement of the second cell; and
using least significant 16-bits of the cell voltage as the second cell voltage.
14. The memory media of
obtaining a remaining battery capacity value in milliwatt hours from a measurement of the battery; and
using least significant 16-bits of the remaining battery capacity value as the remaining battery capacity.
15. The memory media of
obtaining a battery voltage value in Volts from a measurement of the battery; and
using least significant 16-bits of the battery voltage value as the battery voltage.
16. The memory media of
|
This disclosure relates generally to information handling systems and, more particularly, to a method and system of secure random seed generation for a cryptographically secure pseudo-random number generator (PRNG).
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Examples of information handling systems include portable devices such as notebook computers, media players, personal data assistants, digital cameras, cellular phones, cordless phones, smart phones, tablet computers, and 2-in-1 tablet-laptop combination computers. A portable device may generally be any device that a user may carry for handheld use and that includes a processor. Typically, portable devices are powered using a rechargeable battery and include a display device.
Furthermore, user of information handling systems use cryptography to protect data, which is a key aspect for the transaction of business using digital technology. A fundamental component of a cryptographic system and method is a random number generator. Random numbers are used for cryptographic functions such as key generation and nonce creation. Generating suitable random numbers, however, is a significant challenge for a deterministic machine, such as an information handling system. Furthermore, insufficiently secure random numbers may be a security vulnerability and may facilitate malicious hacking of cryptographic algorithms.
In one aspect, a disclosed information handling system includes a main processor, a battery, and an embedded controller (EC). The EC may further include an EC processor and memory media accessible to the EC processor and storing instructions executable by the EC processor. The instructions may include instructions for determining a first cell voltage of the battery as a 16-bit value, determining a second cell voltage of the battery as a 16-bit value, and concatenating the first cell voltage and the second cell voltage to obtain a cell voltage value as a 32-bit value. The instructions may further include instructions for determining a remaining battery capacity of the battery as a 16-bit value, determining a battery voltage of the battery as a 16-bit value, determining a relative state of charge (SOC) of the battery as a 32-bit value, and determining an absolute SOC of the battery as a 32-bit value. Based on the determined values, the instructions may further include instructions for performing an exclusive or (XOR) of the cell voltage value with the remaining battery capacity to generate a first value as a 32-bit value, performing an XOR of the first value with the battery voltage to generate a second value as a 32-bit value, performing an XOR of the relative SOC left-shifted by one bit with the absolute SOC to generate a third value as a 32-bit value, shifting the third value to most significant bits of a 64-bit value to generate a fourth value, and performing an XOR of the fourth value with the second value to generate a 64-bit secure random seed, wherein an entropy source for the secure random seed includes the battery.
In any of the disclosed implementations of the information handling system, determining the first cell voltage may further include obtaining a cell voltage in Volts from a measurement of the first cell, and using least significant 16-bits of the cell voltage as the first cell voltage.
In any of the disclosed implementations of the information handling system, determining the second cell voltage may further include obtaining a cell voltage in Volts from a measurement of the second cell, and using least significant 16-bits of the cell voltage as the second cell voltage.
In any of the disclosed implementations of the information handling system, determining the remaining battery capacity may further include obtaining a remaining battery capacity value in milliwatt hours from a measurement of the battery, and using least significant 16-bits of the remaining battery capacity value as the remaining battery capacity.
In any of the disclosed implementations of the information handling system, determining the battery voltage may further include obtaining a battery voltage value in Volts from a measurement of the battery, and using least significant 16-bits of the battery voltage value as the battery voltage.
In another aspect, a method for secure communication is disclosed. The method may include determining a first cell voltage of a battery of an information handling system as a 16-bit value, determining a second cell voltage of the battery as a 16-bit value, and concatenating the first cell voltage and the second cell voltage to obtain a cell voltage value as a 32-bit value. The method may further include determining a remaining battery capacity of the battery as a 16-bit value, determining a battery voltage of the battery as a 16-bit value, determining a relative state of charge (SOC) of the battery as a 32-bit value, and determining an absolute SOC of the battery as a 32-bit value. Based on the values determined, the method may include performing an exclusive or (XOR) of the cell voltage value with the remaining battery capacity to generate a first value as a 32-bit value, performing an XOR of the first value with the battery voltage to generate a second value as a 32-bit value, performing an XOR of the relative SOC left-shifted by one bit with the absolute SOC to generate a third value as a 32-bit value, shifting the third value to most significant bits of a 64-bit value to generate a fourth value, and performing an XOR of the fourth value with the second value to generate a 64-bit secure random seed. In the method, an entropy source for the secure random seed may include the battery. Based on the secure random seed, the method may further include inputting the secure random seed to a pseudo-random number generator to generate a 64-bit pseudorandom bit stream, generating an encryption key using the 64-bit pseudo-random bit stream as an input, and using the encryption key to encrypt a network communication sent by the information handling system.
In any of the disclosed implementations of the method, determining the first cell voltage may further include obtaining a cell voltage in Volts from a measurement of the first cell, and using least significant 16-bits of the cell voltage as the first cell voltage.
In any of the disclosed implementations of the method, determining the second cell voltage may further include obtaining a cell voltage in Volts from a measurement of the second cell, and using least significant 16-bits of the cell voltage as the second cell voltage.
In any of the disclosed implementations of the method, determining the remaining battery capacity may further include obtaining a remaining battery capacity value in milliwatt hours from a measurement of the battery, and using least significant 16-bits of the remaining battery capacity value as the remaining battery capacity.
In any of the disclosed implementations of the method, determining the battery voltage may further include obtaining a battery voltage value in Volts from a measurement of the battery, and using least significant 16-bits of the battery voltage value as the battery voltage.
In yet another aspect, non-transitory computer readable memory media storing instructions executable by a processor are disclosed. In the memory media, the instructions may include instructions for determining a first cell voltage of a battery of an information handling system as a 16-bit value, determining a second cell voltage of the battery as a 16-bit value, and concatenating the first cell voltage and the second cell voltage to obtain a cell voltage value as a 32-bit value. In the memory media, the instructions may further include instructions for determining a remaining battery capacity of the battery as a 16-bit value, determining a battery voltage of the battery as a 16-bit value, determining a relative state of charge (SOC) of the battery as a 32-bit value, determining an absolute SOC of the battery as a 32-bit value, performing an exclusive or (XOR) of the cell voltage value with the remaining battery capacity to generate a first value as a 32-bit value, performing an XOR of the first value with the battery voltage to generate a second value as a 32-bit value, performing an XOR of the relative SOC left-shifted by one bit with the absolute SOC to generate a third value as a 32-bit value, shifting the third value to most significant bits of a 64-bit value to generate a fourth value; and performing an XOR of the fourth value with the second value to generate a 64-bit secure random seed. An entropy source for the secure random seed may include the battery.
In any of the disclosed implementations of the memory media, determining the first cell voltage may further include obtaining a cell voltage in Volts from a measurement of the first cell, and using least significant 16-bits of the cell voltage as the first cell voltage.
In any of the disclosed implementations of the memory media, determining the second cell voltage may further include obtaining a cell voltage in Volts from a measurement of the second cell, and using least significant 16-bits of the cell voltage as the second cell voltage.
In any of the disclosed implementations of the memory media, determining the remaining battery capacity may further include obtaining a remaining battery capacity value in milliwatt hours from a measurement of the battery, and using least significant 16-bits of the remaining battery capacity value as the remaining battery capacity.
In any of the disclosed implementations of the memory media, determining the battery voltage may further include obtaining a battery voltage value in Volts from a measurement of the battery, and using least significant 16-bits of the battery voltage value as the battery voltage.
In any of the disclosed implementations of the memory media, the processor may be an embedded controller processor in an information handling system that further comprises a main processor.
For a more complete understanding of the present invention and its features and advantages, reference is now made to the following description, taken in conjunction with the accompanying drawings, in which:
In the following description, details are set forth by way of example to facilitate discussion of the disclosed subject matter. It should be apparent to a person of ordinary skill in the field, however, that the disclosed embodiments are exemplary and not exhaustive of all possible embodiments.
For the purposes of this disclosure, an information handling system may include an instrumentality or aggregate of instrumentalities operable to compute, classify, process, transmit, receive, retrieve, originate, switch, store, display, manifest, detect, record, reproduce, handle, or utilize various forms of information, intelligence, or data for business, scientific, control, entertainment, or other purposes. For example, an information handling system may be a personal computer, a PDA, a consumer electronic device, a network storage device, or another suitable device and may vary in size, shape, performance, functionality, and price. The information handling system may include memory, one or more processing resources such as a central processing unit (CPU) or hardware or software control logic. Additional components or the information handling system may include one or more storage devices, one or more communications ports for communicating with external devices as well as various input and output (I/O) devices, such as a keyboard, a mouse, and a video display. The information handling system may also include one or more buses operable to transmit communication between the various hardware components.
For the purposes of this disclosure, computer-readable media may include an instrumentality or aggregation of instrumentalities that may retain data and instructions for a period of time. Computer-readable media may include, without limitation, storage media such as a direct access storage device (e.g., a hard disk drive or floppy disk), a sequential access storage device (e.g., a tape disk drive), compact disk, CD-ROM, DVD, random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), and flash memory (SSD); as well as communications media such wires, optical fibers, microwaves, radio waves, and other electromagnetic or optical carriers; or any combination of the foregoing.
As noted, information handling systems and related networking technologies may use cryptography for secure communications and other operations. In order to perform cryptography, or encryption, a key may be generated using various different key generation algorithms. One or more keys may be used for symmetric or asymmetric encryption methods, among others. The key generation algorithms typically receive as input a so-called “seed” that is a random number. Thus, in order to generate a key for an encryption operation, a random number is first generated and supplied as input to the key generation algorithm. The security of the key used for encryption may accordingly depend on the quality of the random number generated and used as input.
In many typical applications, random numbers are digitally generated by information handling systems using algorithms available in the public domain. The security of the particular algorithm may rests not in the algorithm itself, but in the seed (random number) that is input to the algorithm. Accordingly, it is desirable and advantageous to use a secure seed in order to implement cryptographically strong random number generator algorithms. For example, the security of many real world applications and situations may depend on the quality of the random number used as a seed, such as but not limited to, session key generation, generation of keys for public key encryption using a cryptosystem, such as RSA, generation of a keystream for a stream cipher, and creation of a random nonce to prevent replay attacks.
However, in actuality, information handling systems that use digital processing are not typically capable of generating so-called “true” random numbers that originate from the variability of the physical world, which is ultimately based on entropy of matter. Because information handling systems operate in a deterministic manner and use deterministic algorithms to create random numbers, the random numbers generated by information handling system are not true random numbers, and such algorithms are referred to as “pseudo random number generators” or PRNG, in contrast to “true random number generators” or TRNG. Despite the deviation from a true random number, a pseudo random number can nonetheless pass many tests of randomness and can be useful for cryptography.
Accordingly, a TRNG typically involves a binary conversion of some analog source of entropy, which is the disorder, randomness, or variability in a closed system. An entropy source may thus be a noise source that produces random bit strings for use by a random number generator. Desirable characteristics of a TRNG include being non-deterministic and aperiodic, while undesirable characteristics of a TRNG include computational inefficiency for digital generation of the true random number.
In contrast to a TRNG, a PRNG may involve digital generation by a seed that is a bit string used as input to the PRNG algorithm. The seed will determine a portion of the internal state of the PRNG, while the entropy of the seed should be sufficient to support a desired level of security strength of the PRNG. Desirable characteristics of a PRNG include relative computational efficiency for digital generation of the pseudo-random number, while undesirable characteristics of a PRNG include being deterministic and periodic, at least to a certain degree.
As noted, quality random numbers are desirable for secure cryptography. While there is no single test or evaluation to prove true randomness of a bit string, there are nonetheless certain collections of tests that indicate a level of confidence or a relative measure of randomness of the bit string. These random number tests apply certain well-defined statistical properties to evaluate the quality of the bit string. For example, a distribution of the frequency of 0 and 1 in the bit string may be evaluated for uniformity, to prove that 0 and 1 occur with approximately equal frequency. The independence of certain subsequences in the bit string may be evaluated to determine that no single subsequence can be inferred from other subsequences. A forward unpredictability for elements in the bit string may verify that, if the seed is unknown, the next output bit in the bit string is unpredictable despite knowledge of previous bits in the bit string. A backward unpredictability for elements in the bit string may verify that the seed cannot be determined from knowledge of any generated values.
Thus, even though an information handling system does not employ TRNG, the information handling system can employ a cryptographically secure PRNG. With the cryptographically secure PRNG, an adversary who does not know the seed should be unable to determine the pseudo-random bit string, even when the PRNG algorithm is known. In the same way that the security of a cryptographic algorithm rests in the key, and not with the cryptographic algorithm (which is typically in the public domain), the security of a PRNG rests in the security of the seed, and not with the PRNG algorithm (which, also, is typically in the public domain). For these reasons, it is desirable and advantageous to use a secure seed in order to implement a cryptographically strong PRNG.
As described herein, a method and system of secure random seed generation for a cryptographically secure PRNG is disclosed. The method and system of secure random seed generation for a cryptographically secure PRNG disclosed herein may combine the speed and efficiency of a PRNG with the security and entropy of a TRNG. The method and system of secure random seed generation for a cryptographically secure PRNG disclosed herein may use a TRNG based on an entropy source that is a battery of an information handling system. The method and system of secure random seed generation for a cryptographically secure PRNG disclosed herein may leverage the natural variability of chemical compounds in the battery to generate true random numbers for use by cryptographic algorithms. The method and system of secure random seed generation for a cryptographically secure PRNG disclosed herein may generate a secure random seed with the TRNG using the entropy source as input. The method and system of secure random seed generation for a cryptographically secure PRNG disclosed herein may generate a pseudorandom bit stream with the PRNG using the secure random seed as input. The method and system of secure random seed generation for a cryptographically secure PRNG disclosed herein may operate based on the physical environment of the computer, rather than a user-dependent input, such as keystroke timing and mouse movements. The method and system of secure random seed generation for a cryptographically secure PRNG disclosed herein may be implemented in an embedded manner during pre-boot of an information handling system, in contrast to measuring sound input to the information handling system, for example. The method and system of secure random seed generation for a cryptographically secure PRNG disclosed herein may be implemented without specialized equipment, such as customized sensors to measure disk electrical activity and leaky capacitors.
Particular embodiments are best understood by reference to
Turning now to the drawings,
As shown in
As depicted in
In
Also in
In
In
In information handling system 100, I/O subsystem 140 may comprise a system, device, or apparatus generally operable to receive and transmit data to or from or within information handling system 100. I/O subsystem 140 may represent, for example, a variety of communication interfaces, graphics interfaces, video interfaces, user input interfaces, and peripheral interfaces. In various embodiments, I/O subsystem 140 may be used to support various peripheral devices, such as a touch panel, a display adapter, a keyboard, an accelerometer, a touch pad, a gyroscope, or a camera, among other examples. In some implementations, I/O subsystem 140 may support so-called ‘plug and play’ connectivity to external devices, in which the external devices may be added or removed while portable information handling system 100 is operating.
Also shown in
In some embodiments, EC firmware 186 may include pre-boot instructions executable by EC processor 182. For example, EC firmware 186 may be operable to prepare information handling system 100 to boot by activating various hardware components in preparation of launching an operating system for execution. Accordingly, in some embodiments, EC firmware 186 may include a basic input/output system (BIOS). In certain embodiments, EC firmware 186 includes a Unified Extensible Firmware Interface (UEFI) according to a specification promulgated by the UEFI Forum (uefi.org). Embedded controller 180 may execute EC firmware 186 on EC processor 182 even when other components in information handling system 100 are inoperable or are powered down. Furthermore, EC firmware 186 may be in control of EC communication interface(s) 188, which may represent one or more input/output interfaces or signals that embedded controller 180 can use to communicate with other elements of information handling system 100, such as processor subsystem 120 or I/O subsystem 140, among others.
As illustrated in
As used herein, “top-of-charge voltage” (or “TOC” voltage) refers to a voltage threshold used during a charge cycle of a battery to determine a 100% charge level. It is noted that the top-of-charge voltage set on a given battery may be lower than a “maximum charge voltage”, which may specify a maximum voltage that a given battery having a given battery chemistry can safely endure during charging without damage. As used herein, the terms “state of charge”, “SOC”, or “charge level” refer to an actual charge level of a battery, from 0% to 100%, for example, based on the currently applied top-of-charge voltage. The SOC may be correlated to an actual voltage level of the battery, for example, depending on a particular battery chemistry.
In some embodiments, internal battery 171 illustrated in
In various embodiments, internal battery 171 illustrated in
In various embodiments, internal battery 171 may include at least certain portions of a main power circuit across positive and negative terminals, a current sensor, a voltage sensor, one or more battery cells, a fuse, and a power switch (not shown). The current sensor may represent a shunt resistor, or other current sensing element, over which a voltage that is directly proportional to the current flowing through the main power circuit is measured. The battery cells may store and output electrical energy based on a given electrochemical composition internal to the battery cells. The voltage sensor may enable voltage measurement of individual battery cells, or measurement of an aggregate voltage for the battery including all battery cells operating together. The temperature sensor may be located in proximity to the battery cells to provide an accurate indication of a temperature within the battery. The fuse may be a safety element for limiting current flowing through the main power circuit. The power switch may be an electronically controlled switching element that closes or opens the main power circuit, and thereby allows the battery to operate for charging or discharging.
In
In some embodiments, parameters monitored by a BMU 170 may include a charging current, a voltage, a battery impedance, and a temperature associated with internal battery 171. More specifically, the parameters monitored by the BMU 170 may include any or all of the cell configuration and chemistry of battery cells within internal battery 171, the total voltage of internal battery 171, the voltages of individual battery cells in internal battery 171, minimum or maximum cell voltages, the average temperature of internal battery 171 as a whole, the temperatures of individual battery cells in internal battery 171, the SOC of internal battery 171, the depth of discharge of internal battery 171, the current flowing into internal battery 171, the current flowing out of internal battery 171, and any other measurement of the overall condition of internal battery 171, in various embodiments. In some embodiments, monitoring the SOC may include continuous or periodic monitoring of output current, voltage, or both for internal battery 171. In some cases, Coulomb counting, in which the charge delivered or stored by a battery is tracked, is used for monitoring of internal battery 171. In some embodiments, a battery temperature may be monitored through the use of periodic voltage measurements, a thermometer, or any other method to detect or correct for variations in temperature. In some embodiments, at least some of the parameters monitored by BMU 170 may be used internally by BMU 170 for internal battery management operations. In some embodiments, at least some of the parameters monitored by BMU 170 may be provided to battery PRNG 185 to implement the methods disclosed herein for secure random seed generation for a cryptographically secure PRNG.
In some embodiments, BMU 170 may calculate additional values, based on the monitored battery parameters or other information obtained from a battery, for example, in order to make decisions related to the charging and operation of the battery. For example, BMU 170 may calculate any or all of a charge current limit (CCL), a discharge current limit (DCL), a total amount of energy delivered, an amount of energy delivered since the last charge, an amount of charge delivered or stored, a number of charging cycles, a total operating time, and an operating time since the last charge. In some embodiments, BMU 170, or another component of portable information handling system 100, may analyze and compare monitored parameter values to historic values or predicted models relative to an SOC of the battery, and may calculate the remaining battery life. Remaining battery life may refer to a duration or a fraction of a time period remaining that a battery may safely provide electrical power, an amount or a fraction of a voltage drop remaining over which a battery may safely provide electrical power, or an amount or fraction of a discharge capacity remaining that a battery may safely provide electrical power. For example, a remaining battery capacity may be measured in mWh by BMU 170. Based on the obtained and calculated values, BMU 170 may detect various alert conditions associated with a battery, conditions such as battery charge full, battery charge empty, battery charging, battery discharging, battery over temperature, battery over current, other battery system status conditions, or various combinations thereof.
In certain embodiments, BMU 170 may include a processor and memory (not shown). The memory may store instructions executable by the processor to perform one or more of the methods described herein for obtaining and calculating values related to the operation and charging of a battery and for controlling the operation and charging of the battery. The memory may also store data, obtained and calculated values, thresholds, and parameters related to the methods described herein. In particular, the memory may store values related to secure random seed generation for a cryptographically secure PRNG, as disclosed herein.
As will be described in further detail herein, in operation, a method and system of secure random seed generation for a cryptographically secure PRNG generates the secure random seed from the natural entropy of the chemical compounds found in information handling system batteries, such as Li-ion batteries. The method of secure random seed generation for a cryptographically secure PRNG may be executed by EC processor 182 executing battery PRNG 185. The secure random seed may be used by EC 160 exclusively, such as for cryptographic operations to establish a root-of-trust in information handling system 100. For example, the UEFI Specification, § 35 describes an interface for a random number generator that UEFI implementations, such as EC firmware 186, may implement. In some implementations, the secure random seed may be exposed to OS 132 for use by applications executed by processor subsystem 120.
In particular, the method and system of secure random seed generation for a cryptographically secure PRNG disclosed herein may generate a 64-bit secure random seed, which is commonly used in cryptographic systems, such as the American National Standards Institute (ANSI) X9.17, Blum-Blum-Shub, and the Federal Information Processing Standard (FIPS) 186, among other PRNGs that may receive the secure random seed disclosed herein.
Furthermore, the method and system of secure random seed generation for a cryptographically secure PRNG disclosed herein has been evaluated using standards published by the National Institute of Standards and Technology (NIST). Specifically, NIST publication SP 800-22 Rev 1a discloses a suite of tests that can be performed to evaluate the randomness of a bit stream. In addition, NIST publication SP 800-22 Rev 1a provides source code for the NIST Statistical Test Suite program that can run the tests on popular PRNGs, or a custom RNG. The results of the NIST Statistical Test Suite v2.1.2 for the method of secure random seed generation for a cryptographically secure PRNG disclosed herein are shown below in Table 1. The results in Table 1 were obtained using real-world battery data collected from the field, and include benchmarks against several popular PRNGs.
TABLE 1
Results of NIST Statistical Test Suite v2.1.2
APPROX.
LINEAR
RNG
FREQ.
RUNS
DFT
ENTROPY
COMPLEXITY
METHOD
TEST
TEST
TEST
TEST
TEST
Present
29726
29912
29878
29736
854
Disclosure
Blum-Blum-
29802
29709
29923
29669
375
Shub
Linear-
29812
29666
29921
29659
384
Congruential
Cubic-
29811
29703
29916
29662
421
Congruential
Quadratic-
29785
29672
29930
29607
236
Congruential-
1
Quadratic-
29811
29686
29924
29654
413
Congruential-
2
Micali-
29799
29656
29909
29613
443
Schnorr
G using
28615
16508
29792
12697
0
SHA-1
In Table 1, five (5) tests from the NIST Statistical Test Suite v2.1.2 on 30,000 random number samples are shown for the present disclosure (bold) and for seven other random number generation (RNG) algorithms. In addition, a Universal Statistical Test scored all RNG methods shown in Table 1 with a pass result. The results in Table 1 indicate that the methods of secure random seed generation for a cryptographically secure PRNG disclosed herein scored above all other RNG methods tested for 3 tests (Runs Test, Approximate Entropy Test, and Linear Complexity Test).
Referring now to
In data flow diagram 200, a first cell voltage 202 an a second cell voltage 204 are obtained as 16-bit values. In one example, first cell voltage 202 may be obtained from a measurement of a cell voltage of a first cell in internal battery 171, while second cell voltage 204 may be obtained from a measurement of a cell voltage of a second cell in internal battery 171. In another example, such as when the battery has a single cell, first cell voltage 202 may be obtained from a first measurement of a cell voltage, while second cell voltage 204 may be obtained from a second measurement of the cell voltage. Various other procedures and combinations of measurements from one or more cells may be used to obtain first cell voltage 202 and second cell voltage 204. Furthermore, in different implementations, other measured values from internal battery 171 that are indicative of the entropy of internal battery 171 may be used in place of first cell voltage 202 and second cell voltage 202. For example, one or more battery temperatures may be used in place of first cell voltage 202 or second cell voltage 202. In another example, an internal impedance of internal battery 171 may be used in place of first cell voltage 202 and second cell voltage 202. From the cell voltages, a respective digital value using the least significant digits or bits may be used to generate the respective 16-bit values 202, 204. Then, at append node 206, first cell voltage 202 and second cell voltage 204 are appended (or concatenated) to generate a cell voltage value 208 that is a 32-bit value. A remaining battery capacity (measured in mWh) 210 as a 16-bit value of least significant bits may then be sent to an exclusive or (XOR) node 212 along with cell voltage value 208, which outputs first value 213 as a 32-bit value. A battery voltage 218 may be sent to an XOR node 216 along with first value 213, which outputs a second value 234 as a 32-bit value. A relative SOC 218 may be obtained as a 32-bit value from a measurement of internal battery 171 and may be relative to a currently actual battery capacity of internal battery 171. At node 224, relative SOC 218 is bit shifted left by 1 bit and the result sent to an XOR node 226, along with an absolute SOC 222 of internal battery 171 as a 32-bit value, which outputs a third value 227 as a 32-bit value. Third value 227 is appended at node 230 with a 32-bit zero value 228, which results in a fourth value 232 as a 64-bit value. At XOR node 236, second value 234 and fourth value 232 are received and result in secure random seed 240 as a 64-bit value.
Referring now to
Method 300 may begin at step 302 generating a secure random seed using a battery as an entropy source. Step 302 may be performed using operations described in data flow diagram 200 in
As disclosed herein, a method and system for generating a secure random seed uses chemical processes in a battery of an information handling system as an entropy source for true randomness. The secure random seed may be used by a pseudorandom number generator to create a secure pseudorandom bit stream usable to generate secure encryption keys.
The above disclosed subject matter is to be considered illustrative, and not restrictive, and the appended claims are intended to cover all such modifications, enhancements, and other embodiments which fall within the true spirit and scope of the present disclosure. Thus, to the maximum extent allowed by law, the scope of the present disclosure is to be determined by the broadest permissible interpretation of the following claims and their equivalents, and shall not be restricted or limited by the foregoing detailed description.
Leara, William D., Thompson, Richard Christopher, Vichare, Nikhil Manohar
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
10007488, | Oct 10 2016 | International Business Machines Corporation | Secured pseudo-random number generator |
5206905, | May 15 1989 | Maxim Integrated Products, Inc | Password protected device using incorrect passwords as seed values for pseudo-random number generator for outputting random data to thwart unauthorized accesses |
7007050, | May 17 2001 | WSOU Investments, LLC | Method and apparatus for improved pseudo-random number generation |
7512241, | Sep 05 2003 | Nagravision SA | Method for generating pseudo-random keys |
8019802, | Aug 24 2005 | Qualcomm Incorporated | Cryptographically secure pseudo-random number generator |
8510571, | Mar 24 2003 | ARXAN TECHNOLOGIES, INC | System and method for inserting security mechanisms into a software program |
8752156, | Mar 30 2012 | RSA SECURITY USA, LLC | Detecting soft token copies |
20020172359, | |||
20030128843, | |||
20070230694, | |||
20100036900, | |||
20130287270, | |||
20130287271, | |||
20160112518, | |||
20180101360, | |||
20180270045, | |||
JP2009031853, |
Date | Maintenance Fee Events |
Feb 22 2023 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Sep 03 2022 | 4 years fee payment window open |
Mar 03 2023 | 6 months grace period start (w surcharge) |
Sep 03 2023 | patent expiry (for year 4) |
Sep 03 2025 | 2 years to revive unintentionally abandoned end. (for year 4) |
Sep 03 2026 | 8 years fee payment window open |
Mar 03 2027 | 6 months grace period start (w surcharge) |
Sep 03 2027 | patent expiry (for year 8) |
Sep 03 2029 | 2 years to revive unintentionally abandoned end. (for year 8) |
Sep 03 2030 | 12 years fee payment window open |
Mar 03 2031 | 6 months grace period start (w surcharge) |
Sep 03 2031 | patent expiry (for year 12) |
Sep 03 2033 | 2 years to revive unintentionally abandoned end. (for year 12) |