Abstract:
A random number generation apparatus comprising a device configured to carry out an operation; a timer for timing how long it takes the device to carry out the operation; and a memory for storing the time to carry out the operation; the random number being generated based on the determination of the time taken to carry out the operation.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates to random numbered generation apparatus, methods for generating random numbers and to communication apparatuses and methods embodying the same. 
       BACKGROUND TO THE INVENTION 
       [0002]    In many applications, in particular relating to cryptography, the generation of random numbers is useful. The embodiments of the present invention aim to provide an improved random number generating apparatus and method. 
       SUMMARY OF THE INVENTION 
       [0003]    According to the present invention in a first aspect, there is provided a random number generation apparatus comprising a device configured to carry out an operation; a timer for timing how long it takes the device to carry out the operation; and a memory for storing the time to carry out the operation; the random number being generated based on the determination of the time taken to carry out the operation. 
         [0004]    Suitably, the device is a processor. 
         [0005]    Suitably, the operation is a predetermined operation. 
         [0006]    Suitably, the operation is the calculation of another random number. 
         [0007]    Suitably, the random number generated by timing how long the predetermined operation takes is combined with the random number generated from the predetermined operation to generate a third random number. 
         [0008]    Suitably, the third random number is output from the random number generation device. 
         [0009]    Suitably, the random number is used as a seed for a cryptographic operation. 
         [0010]    According to the present invention in a second aspect, there is provided a random number generation apparatus comprising a signal receiver, a received signal strength determiner and a memory, whereby the random number is generated by making a measurement of the received signal strength and storing it in memory. 
         [0011]    Suitably, the random number is used as a seed for a cryptographic operation. 
         [0012]    According to the present invention in a third aspect, there is provided a random number generation apparatus comprising a signal receiver, a received signal strength indicator and a memory, whereby the random number is generated by determining how many measurements of the RSSI are at a certain level before the level changes and using the string of numbers thereby generated for a random number. 
         [0013]    Suitably, the random number is used as a seed for a cryptographic operation. 
         [0014]    Any combination of the first to third aspects of the invention can be combined, for instance with an XOR operation, to arrive at a new random number. 
         [0015]    According to the present invention in a fourth aspect, there is provided a random number generation method comprising a device carrying out an operation; timing how long it takes the device to carry out the operation; and storing the time to carry out the operation; the random number being generated based on the determination of the time taken to carry out the operation. 
         [0016]    Suitably, the device is a processor. Suitably, the operation is a predetermined operation. 
         [0017]    Suitably, the operation is the calculation of another random number. 
         [0018]    Suitably, the random number generated by timing how long the predetermined operation takes is combined with the random number generated from the predetermined operation to generate a third random number. 
         [0019]    Suitably, the third random number is output. 
         [0020]    Suitably, the random number is used as a seed for a cryptographic operation. 
         [0021]    According to the present invention in a fifth aspect, there is provided a random number generation method comprising receiving a signal, a determining a received signal strength, whereby the random number is generated by making a measurement of the received signal strength at a point in time and storing it in memory. 
         [0022]    Suitably, the random number is used as a seed for a cryptographic operation. 
         [0023]    According to the present invention in a sixth aspect, there is provided a random number generation method comprising receiving a signal and determining a received signal strength over time, whereby the random number is generated by determining how many measurements of the received signal strength are at a certain level before the level changes and using the string of numbers thereby generated for a random number. 
         [0024]    Suitably, the random number is used as a seed for a cryptographic operation. 
         [0025]    Any combination of the fourth to sixth aspects of the invention can be combined, for instance with an XOR operation, to arrive at a new random number. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0026]    The present invention will now be described, by way of example only, with reference to the following drawings; in which: 
           [0027]      FIG. 1  is a schematic illustration of a security fault for use in a banking transaction. 
           [0028]      FIG. 2  is a schematic illustration of components within the fob illustrated in  FIG. 1 . 
           [0029]      FIG. 3  is a functional diagram illustrating a method of operation of the random number generation device illustrated in  FIG. 2  for a for a first and second random number. 
           [0030]      FIG. 4  is a functional diagram illustrating a method of operation of the random number generation device illustrated in  FIG. 2  for a third random number. 
           [0031]      FIG. 5  is a functional diagram illustrating a method of operation of the random number generation device illustrated in  FIG. 2  for a fourth random number. 
       
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0032]    The aspects and features of the present invention are described hereinafter with reference to sequence illustrations of user interfaces, methods, and computer program products according to exemplary embodiments of the present invention. It will be understood that each sequence and combinations of sequences in the illustrations, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the sequence. 
         [0033]    These computer program instructions may also be stored in a computer usable or computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer usable or computer-readable memory produce an article of manufacture including instruction means that implement the function specified in the sequence. 
         [0034]    The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions that execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the sequence. 
         [0035]    Furthermore, each sequence may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that in some alternative implementations, the functions noted in the sequence may occur out of the order. For example, two sequences shown in succession may in fact be executed substantially concurrently or the sequences may sometimes be executed in the reverse order, depending upon the functionality involved. 
         [0036]    Alternatively, embodiments of the present invention can be implemented in hardware, or using programmable logic such as complex programmable logic devices (“CPLD”) and field programmable gate arrays (“FPGA”). 
         [0037]    Referring to  FIG. 1  of the accompanying drawings, there is shown a security fob  2 , the security fob  2  comprising an LED indicator  4  and a key pad  6 . 
         [0038]    Referring to  FIG. 2  of the accompanying drawings, there is shown a functional diagram illustrating components of the fob of  FIG. 1 . 
         [0039]    The security fob  2  operates in one of many ways known to those skilled in the art to generate a random number for security purposes. Generating true randomness is the only way of ensuring that cryptographic material cannot be predicted and therefore preventing compromise in confidentiality and integrity in systems that use cryptographic material. 
         [0040]    Referring to  FIG. 2  there is shown a first main processor  20  a near-field wireless second processor  22 , a timer  24 , a memory  26 , a received signal strength indicator (“RSSI”) determiner  28 , an XOR operator  30  and an outputter  32 . 
         [0041]    The second processor  22  can, for instance be a Nordic Semiconductor nRF51822 System on Chip (“SoC”) device. This has the capability of generating random numbers based on thermal noise. This is a predetermined operation that generates a first random number. 
         [0042]    The timer  24  is a 16 MHz/32 bit free running timer configured to time the number of cycles of the timer for the second processor to generate a random number. 
         [0043]    The memory  26  stores data for use by the fob  2 . 
         [0044]    The RSSI determiner  28  is configured to determine the strength of a received Bluetooth Low Energy signal and to output a result. 
         [0045]    The XOR operator  30  carries out an XOR operation on data input to it. 
         [0046]    The outputter  32  is configured to output a produced random number to another component, 
         [0047]    Referring to 3 of the accompanying drawings there is shown a first novel method for generating a random number according to the present embodiment using the apparatus shown and described in relation to  FIGS. 1 and 2 . 
         [0048]    In step  300  the second processor generates a random number byte based on thermal noise as is known in the art. 
         [0049]    In step  302  timer  24  determines the number of cycles it takes for the second processor  22  to generate a random number and, in step  304 , divides the output result into four bytes which, in step  306 , are XORed together by XOR operator  30 . This outputs a random number byte which, in step  308 , is stored in memory  26 . When upper level software asks random number to use as security purposes, lower level software starts the hardware random number generator and at the same time it stores the starts time of generation. After hardware generator is finished to generate one random number, it stops the timer and calculates the difference between the start and stop time and stores it to memory and uses it as one random number 
         [0050]    Referring now to  FIG. 4  of the accompanying drawings, there is shown a second novel method of generating a random number. 
         [0051]    The second processor  22  receives Bluetooth low energy (“BLE”) 2.4 GHz radio wave signals as a signal receiver. As a form of electromagnetic radiation, BLE radio waves are affected by many phenomena. One of the main issues is path attenuation that may be due to any effects, such as free-space loss, refraction, diffraction, reflection, aperture-medium coupling loss, and absorption. Path attenuation is also influenced by different materials on the radio path, propagation medium (dry or moist air), the distance between the transmitter and the receiver, and the height and location of antennas. Also other devices with interfering radio signals at the same frequency affects the RSSI. 
         [0052]    The present apparatus uses the value of RSSI as the basis for the generation of another random number byte. 
         [0053]    In step  400 , the RSSI determiner  28  measures the RSSI at the instance of the command for the generation of a random number. At step  402  the last byte of the determined figure for the RSSI strength is selected as a random number and in step  404  this random byte is stored in the memory  26 . 
         [0054]    Referring to  FIG. 5  of the accompanying drawings there is shown a third novel method for generating a random number. 
         [0055]    The third novel method for random number generation relies upon the fact that the RSSI varies randomly over time. 
         [0056]    In step  500  the RSSI determiner  28  measures the RSSI periodically, for instance every 10 mS. This generates an output that in step  502  is stored in memory 
         [0057]    Let&#39;s assume that we have RSSI scale from A to F and our time resolution is one character in this text. 
         [0058]    BBBBCCCCCCCCCDDCCCCABBBBBBBB 
         [0059]    From this we get that there are 4×B 9×C 2×D 4×C 1×A and 8×B. In step  504  the time difference between every RSSI change is calculated, that is the time difference between signal variations, and that sequence of numbers is used as a random number. So in this example we get random number: 492418. To get one byte eight of the lowest bits of every value (AND 0×FF) are selected and XOR together. 
         [0060]    An API for a random library is very simple, requiring only three functions. 
         [0061]    1. void initrng(void); 
         [0062]    This initializes the random number generator and used timer. This must be call only once, when the device is woken up from sleep before initializing the BLE. This RNG and its timer does not preserve anything when the apparatus is in sleep mode. 
         [0063]    2. unsigned byte getrandombyte (void); 
         [0064]    For getting one random number byte. A byte will be available at variable times after all steps of calculation is done. Also to get the first number, a BLE radio link must be activated well before reading the numbers because of the required RSSI calculations. Latest RSSI and other values are stored to memory  26 , so this function can be called also after the BLE is shut down. The size of the buffer determines how many numbers can be read after shutting down of the BLE link. 
         [0065]    3. unsigned byte *getrandombyte (unsigned byte count); 
         [0066]    This is for getting array of random number bytes, count+1. Count is limited to 255. All restrictions from getrandombyte( )are valid. 
         [0067]    A final random number can be generated, if desired by XORing any combination of the random numbers generated according to first through fourth methods for generating a random number as described above. 
         [0068]    Any of the novel random numbers described above or any combination of them, with or without the random number generated by the RNG processor can be used as a seed for a cryptographic operation by the fob  2 . 
         [0069]    Although a few preferred embodiments have been shown and described, it will be appreciated by those skilled in the art that various changes and modifications might be made without departing from the scope of the invention, as defined in the appended claims. 
         [0070]    Attention is directed to all papers and documents which are filed concurrently with or previous to this specification in connection with this application and which are open to public inspection with this specification, and the contents of all such papers and documents are incorporated herein by reference. 
         [0071]    All of the features disclosed in this specification (including any accompanying claims, abstract and drawings), and/or all of the steps of any method or process so disclosed, may be combined in any combination, except combinations where at least some of such features and/or steps are mutually exclusive. 
         [0072]    Each feature disclosed in this specification (including any accompanying claims, abstract and drawings) may be replaced by alternative features serving the same, equivalent or similar purpose, unless expressly stated otherwise. Thus, unless expressly stated otherwise, each feature disclosed is one example only of a generic series of equivalent or similar features. 
         [0073]    The invention is not restricted to the details of the foregoing embodiment(s). The invention extends to any novel one, or any novel combination, of the features disclosed in this specification (including any accompanying claims, abstract and drawings), or to any novel one, or any novel combination, of the steps of any method or process so disclosed.