Extracting entropy from the vibration of multiple machines

Generating a pool of random numbers for use by computer applications. Vibration sensors are placed throughout a machine and collect entropy data from the measurements of the vibration sensors. The data is then filtered and sent via secure connection to a second machine to be added to the second machine's entropy pool. Applications needing a random number may acquire a number from the pool. A method, computer program product and system to generate the pool are provided.

BACKGROUND

Random number generators are required by computing applications and many security relevant features of cryptography applications.

SUMMARY

In an embodiment a method to utilize the vibration of a machine for random number generation is provided. The method includes:acquiring, by at least one sensor on a first machine, analog vibration data;converting, by a computer processor of the first machine, the analog vibration data to digital data form; filtering, by the computer processor of the first machine, the digital data; transmitting the filtered vibration data to a second machine; andstoring the filtered data within a memory unit of the second machine to form a random number pool from which random numbers may be selected.

In another embodiment, a computer program product for random number generation is provided. The computer program product includes: computer readable storage medium having program code embodied therewith, the program code readable by a computer processor to perform a method which includes:acquiring, by at least one sensor on a first machine, analog vibration data;converting, by a computer processor of the first machine, the analog vibration data to digital data form; filtering, by the computer processor of the first machine, the digital data; transmitting the filtered vibration data to a second machine; andstoring the filtered data within a memory unit of the second machine to form a random number pool from which random numbers may be selected.

In yet another aspect, a computer system to generate random numbers is provided. The system includes: a computer processor on a first machine; and at least one sensor in communication with the processor for acquiring analog vibration data from the first machine. The computer processor is configured to:convert analog vibration data to digital data form; filter the digital data; andtransmit the filtered vibration data to a second machine for storage by the second machine.

DETAILED DESCRIPTION

Current electronic systems require a constant flow of new random numbers for a number of various operations. Electronic security features often utilize random numbers to generate cryptographic keys, for example, in Secure Socket Layer “SSL” protocols, encryption and signatures, to generate unique initialization values and numbers used once, also known as “nonces” to keep encryption unique for each message.

Non aptly chosen random values may compromise security, which may break RSA keys of many appliances due to limited randomness of the keys generated by the devices, thereby making it easier to decipher the key(s).

Utilizing a good random number generator is important, and there exist several mechanisms that attempt to generate or retrieve random numbers. Information theory entropy (sometimes called Shannon entropy) defines the amount of randomness measured in bits. Computers typically collect randomness into an entropy pool from which requests for random numbers can be served. On machines such as servers, in this example, without interactive input output streams, there are little sources for random data. In particular, at system start up there is hardly any random data available. As described below, an embodiment enables a pre-collected pool of entropy values to be collected as a source of random numbers at machine startup. Software random number generators may not generate true random numbers. For example, pseudo random number generators are completely deterministic and not random.

Quantum mechanics may generate true random numbers. Use of quantum mechanics as a source for random number generation is further discussed in “The Physics of Quantum Mechanics, Binner and Skinner, copyright 2008” which is hereby incorporated by reference.

A noise-generator diode may be used in random number generation but reliability may be uncertain because it is difficult to confirm that the diode is still issuing random noise after it is exposed to temperature extremes such as heat or cold or other environmental factors such as exposure to radiation. Furthermore, though the diode itself is a simple component the circuitry to ensure its proper working makes it complex. Another mechanism employed to generate random numbers is the timing of input output ‘I/O” events such as interrupts. However, only few interrupt types qualify as non-forgeable sources of randomness. For example, for some Linux implementations, only disk I/O is considered non-forgeable I/O. Such I/O events are also scarcely available at system startup.

Pseudo random number generators utilizing software are sometimes employed as random number generators but in reality do not generate randomness. While the results may appear random they are completely deterministic if the seed can be determined. In other words, one can recreate the “random number” with the “seed” that was used. This is because the pseudo random number generator (PRNG) is only a deterministic algorithm that is used with a number (the so called “seed”) as input value. The return value of the algorithm is the pseudo random number. So if one knows the algorithm and the seed, the “random” number can be reproduced.

Disclosed is a method to utilize machine vibration measurements for random number generation. In the examples that follow, the machine selected is a server. However, other machines ranging from a laptop to an automobile may be used. The vibrations may be generated by moving components internal to the machine frame such as cooling fans or come from an external source such as external vibration. The method utilizes accelerometer sensors physically attached to the machine to measure the vibration and uses the measured vibration data as real random data. In an embodiment, the vibration of a mainframe computer is used as entropy input for an entropy pool maintained by the system. The data may be stored in a Motor Drive Assembly “MDA” or additional chip such as a smartcard. The collected random data is preferably stored in a non volatile memory pool so that the data is immediately available when needed.

In one embodiment, vibration data is collected during the manufacturing process and shipment process of a machine, in this case, a mainframe server, to fill an initial entropy pool. The machine thus arrives at a location with an initial entropy pool populated. Values from the entropy pool are then used and replenished while the machine is powered on.

The collection during manufacturing means that the vibration data is collected during the manufacturing work such as the installation and verification of the setup for a customer before the machine is shipped. With this collected data the random pool is prefilled for customer usage and the customer can directly use random data at system startup without needing to wait.

After the machine is setup and operational, entropy data is fed continuously into the entropy pool by continuously measuring machine vibrations during operation.

In an embodiment, vibration sensors are installed on the machine, in this example, a server. The vibration sensors may be installed in motor drive assemblies “MDAs”. MDAs may also perform other functions such as controlling power on and off and adjusting the rotation speed of cooling units.

In an embodiment, both a first machine and a second machine may be in communication with one another. The first machine records, converts and filters its entropy/vibration data and sends the random number data to the second machine for addition to the entropy pool of the second machine. The second machine acts as a collector of random numbers and its pool is used as the central repository of random numbers. In such an example, conversion and filtering of entropy input data is preferably done at the detecting machine, in this case, the first machine. The first machine for entropy input data “knows” about its specific expected vibration and therefore best knows which bits in the measured values are “most random” and which should be filtered. For example, if the machine is a server that measures vibration generated by its fans then the order of magnitude of the vibration measurement is known by the manufacturer. If, on the other hand, the machine is a hand held device like a cell phone then vibrations with much higher amplitudes are to be expected; vibration data must be analyzed to detect when the machine is at rest and does not provide valuable entropy input. Hence it is better to let the first machine for input entropy data perform the conversion and filtering especially if the first machine and second machine are two different types. More than one machine may feed random numbers to the random number pool of the second machine.

In another embodiment, a first machine obtains raw vibration data from a second machine and filters the numbers, and stores those numbers in an entropy pool on the first machine. For example, the first machine may act as a random number server in a distributed computing environment, providing random numbers to clients.

This first machine may be configured to collect vibration/entropy data from the second machine, collect vibration/entropy data from its own local hardware, or obtain data from a combination of both sources. The advantage of an embodiment in which the first machine collects raw data from the second machine is that it reduces the required data processing capabilities of the second machine such that the second machine would just need a vibration source, a vibration sensor and a transmitter.

In an embodiment, a random number server may extract data from its entropy pool(s) to fulfill a request for a random number from a random number client.

In another embodiment, there may be a server for entropy input data that produces entropy input (e.g. vibration data) and sends it to a client for entropy input data that collects and aggregates entropy input data in its own entropy pool. Hence a client for entropy input data may function as a server for random numbers. In addition, a server for entropy input data may also act as a client for random numbers.

Entropy input data is obtained from the client machines and may then be fed to a central server or cloud where they are kept in the pool. Such an embodiment using multiple sources (servers) of entropy input data increases robustness of the entropy pool since there are multiple sources of entropy input, reducing exposure to a single source failing and reducing the ability of a single source of entropy input to forge entropy data. The amount of generated and consumed random data can be balanced across a set of systems, i.e. a system that consumes more random data than it produces can get additional random data from a system that consumes less random data than it produces.

The system may forward random data generated from vibration data (either raw or filtered) that it does not put in its own entropy pool to another system. The system may also accept random data from another trusted system that generates random data from vibration data and aggregate that data into its own entropy pool.

The communication channels to send random data must be secure. That is, shielded from eavesdropping (e.g. by encryption) and have a non-forgeable source of entropy input data (e.g. by the data being signed by a trusted source). Secure and trusted connections can be set up using standard methods from cryptography for encrypting signing data including key negotiation based on asymmetric key cryptography (e.g. RSA, DH).

Each piece of entropy input data may be used only in one entropy pool, either the system's own pool or the pool of one other system since for security reasons, no two systems should generate the same or similar random numbers. Aggregation of entropy input data from different sources may for example be done by merging pieces of entropy input data of different sources or by functionally combining (e.g. via a bit wise xor operation) entropy input data.

The MDA is connected to a processor and related circuitry which polls vibration measurements at periodic intervals. The processor then analyzes the vibration measurements when the machine is powered on and no vibration is read from one the sensor, different options are available. For example, failure switching may occur in which case the processor then attempts to collect vibration data from other acceleration sensors. In another example, the processor may also indicate an exception and/or send out an alert.

If vibration measurements are able to be recorded, entropy measurements contained in the vibration measurements are fed into an entropy pool using a first in, first out “FIFO” structure. As such, once a given number in the entropy pool is selected it is no longer available in the pool and must be replaced by another entropy value. Other orders such as last in first out “LIFO” may be used, and using the FIFO queue is just an example for a possible embodiment.

Referring now toFIG. 1, vibration detection unit (vibration sensor)110monitors all movements of the machine in terms of a vibration. In this example, the vibration detection unit is part of a motor drive assembly (MDA). The MDA is initially inactive in115and is powered on to active status120. In125, the MDA detects vibration. The vibration can originate from within or outside the machine. The raw data is processed by the computer processor random number formatter130where the data is converted from analog to digital form and filtered, such as removing leading zeros as described above. After a number is filtered, it is added to entropy pool135, managed by the computer processor. Client applications as depicted by140,145and150can then access the entropy pool to select a random value. The vibration sensor can be integrated into a MDA for example. After turning on the sensor it will continuously collecting vibration data and send it to a random number formatter, which will translate the raw data into a random number. This random number will be stored in an entropy pool until it gets used by any client which needs a true random number, for example the Crypto Card. A system interface may utilize software to extract entropy from the entropy pool. Entropy polling works in two modes, coarse grained and fine grained.

During manufacturing, initial entropy input is collected in the entropy pool in “coarse grained” mode but no entropy is consumed, that is, no random numbers are used. Manufacturing mode is meant to be used while the hardware is not yet in normal operation but experiences strong vibration from the environment like during earth quake resistance testing or shipment of the hardware. Since in this situation vibration measurements differ a lot a larger range of bits (medium to low significant bits) can be extracted at rather long time intervals and fed into the entropy pool. Once the pool is full no further entropy data needs to be collected in “coarse grained” mode.

Once the system is started in normal operation entropy collection enters “fine grained mode”. In that mode, vibration mainly stems from air moving devices and fluctuation between vibration values is comparatively small. Therefore only bits with low significance will be extracted from the vibration measurements and fed into the entropy pool. During normal operations entropy will not only fed into the entropy pool but programs will also consume entropy, hence the pool must continuously be refilled. During phases where the entropy pool is and remains full entropy generation may pause.

Raw data that is collected is formatted prior to being added to the entropy pool. In an embodiment, leading Os are removed from raw data measurement. For example, if a collected raw data reading is 0.000312456 g where g is gravitational acceleration, formatting the data involves ignoring all leading Os when storing the entropy value; only “312456” is stored since the rest is predictable and so not useful. It is also possible to delete additional predictable parts of the raw data. This is done to remove the unwanted predictable part of the number.

FIG. 2. is an example of obtained stochastic acceleration data (also called vibration data) that may be filtered and fed into the entropy pool in memory. The value shown by210corresponds to a recorded measurement of 0.03429187. Dropping leading zeros and using non zero digits yield a filtered value of 3429187 to be added to the entropy pool.

As an example, vibration magnitude data can be shown in a time domain or a frequency domain. Typical vibration magnitude—acceleration in G (Gravitational acceleration) vs. time in second is shown inFIG. 3.

A chart showing typical data in the frequency domain is show inFIG. 4. As shown in the example, a fan spinning at 1900 rpm is expected to have a frequency of 31.6 Hz, which would appear as a peak410.

Utilizing time domain vibration data is preferred because the acceleration magnitude of cooling components in a server rack as a time domain data cannot be predicted. This is due to the fact that the magnitude depends on all fans operating at different phase angles as a result of cooling components starting at different times so even though there are running at similar rotation speeds the phase difference makes the future value unpredictable The sensor will detect adjacent fans running at different frequencies.

The processor may utilize three axis data i.e. one in the vertical direction and two horizontal directions to obtain additional unpredictable vibration data.

Other factors such as server component temperatures e.g. Bulk Power Fan (BPF), Radiator fans, IO fans affect fans may affect speed add unpredictable nature of vibration data. The vibration data is hard to predict and therefore provides a reliable source of randomness due to fans moving there will always be some level of vibration within the server rack.

Broken sensor parts can be detected quickly since a broken sensor will deliver close to zero vibration. Once the processor detects a broken sensor the data from that sensor can be ignored, an exception can be raised, or the processor can attempt to poll another sensor to obtain data.

As discussed earlier, one aspect provides for an entropy input data server in connection with a random number server. Turning now toFIG. 5, a machine510functions as the entropy input data server i.e. the machine from which vibration data is obtained and processed. Processor520performs the data conversion of analog vibration data into digital vibration data and the filtering of bits from the digital vibration data that do not contribute to entropy, receiving vibration data from sensor515. More than one sensor may be used. The random number data is transmitted across trusted connection525to a second machine, random number server530. A data aggregation component535in the random number generator aggregates entropy input data received from entropy input data server510into the entropy pool545. The random number generator530also runs a random number extractor component that upon a request for a random number extracts sufficient bits from the entropy pool to build a random number returns that random number to serve the request of another system550that is a random number client.

530functions as a random number server and is accessed, in this example, by client550when the client needs a random number. Multiple clients may be configured to obtain random numbers from530.

FIG. 6depicts an example of how data may flow through an exemplary system embodiment. At610, analog vibration data615is collected and converted to digital form by the system processor in620. The digital data625is then filtered by the processor in630. The subsequent entropy input data635is then sent to the second system640. The data is aggregated in645and placed in entropy pool650.

Upon a request for a random number the bits required to assemble that random number are extracted in655from the entropy pool650and used to assemble the requested random number660.

This disclosure provides a method, an apparatus and a system to acquire random numbers and maintain a continuous pool of random numbers The embodiment may also be implemented as a computer system such as a random number server to provide continuous random numbers to other computer systems or implemented in a multi computer system environment, providing continuous random numbers to other computer systems in a random number cloud/cluster configuration. The aforementioned are examples and other implementations are feasible.

The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below, if any, are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention through various embodiments and the various modifications thereto which are dependent on the particular use contemplated.