A method, apparatus, and software implemented on a computer for generating random numbers based on genetic information
By utilizing DNA or RNA sequences to generate random numbers through a pseudorandom number generator seeded with an entropy source, the method addresses the unpredictability issues of existing generators, providing secure and verifiable true random numbers.
Patent Information
- Application Number
- JP2025501429
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-07-12
- Filing Date
- 2023-07-12
- Publication Date
- 2025-07-30
AI Technical Summary
Existing random number generators, particularly pseudo-random number generators, fail to provide truly unpredictable outputs, which are essential for secure cryptographic applications, and hardware-based generators require careful calibration and controlled environments, making them unsuitable for the growing demand in the Internet era.
Generate random numbers using genetic information from DNA or RNA sequences, leveraging the inherent unpredictability of these sequences to create true random numbers through a pseudorandom number generator seeded with an entropy source, selecting positions and encoding values to produce unpredictable outputs.
The method generates truly random numbers that pass rigorous testing suites, provides a potentially infinite source of random numbers, and ensures security and integrity by allowing verification of the generation process, while maintaining confidentiality of genetic information.
Smart Images

Figure 2025524639000001_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to the generation of random numbers. In particular, the present disclosure provides a method, an apparatus, and a computer program product for generating random numbers based on genetic information.
Background Art
[0002] Random numbers are required in large quantities to support a wide range of technical applications, from games and gambling, statistical modeling, to cryptographic techniques such as the generation of cryptographic keys for providing security in the financial and communication fields. There is a great desire to be able to utilize a random number generator as a source of random numbers for such applications.
[0003] Each application generally requests that the numerical values provided by the random number generator be truly random, i.e., completely unpredictable, no better or worse than by random chance. The generated random numbers may need to conform to a specific distribution and coverage (usually uniformly covering a specified number space).
[0004] Generally, the use of a pseudo-random number generator may be insufficient for such applications because it does not provide truly unpredictable output.
[0005] The random number generator uses a source that is the core of "true" randomness, usually a physical source of statistically random and unpredictable noise (such as hardware noise, thermal noise, those utilizing quantum phenomena, etc.) to generate numerical values that meet these requirements. Then, the signals from these noise sources are processed and further entropy is added to generate random numbers that satisfy the requirements of a specific application.
[0006] Generally, these hardware random number generators need to be carefully calibrated and operated in a controlled environment. Otherwise, they may be subject to external influences and characteristic behaviors, resulting in unpredictable outputs and losing their true randomness. Therefore, providing random numbers using these random number generators is not straightforward, and it is unclear whether, in the rapidly expanding Internet with increasing applications, it can meet the growing demand for truly random numbers.
[0007] Furthermore, after random numbers are generated, these hardware random number generators do not track the core noise sources. For this reason, the recipient of the random numbers may not be able to verify that the random numbers were generated by a true noise source, which may damage the trust in the source of the random numbers and raise security concerns for systems that rely on the random number generator as the source of random numbers.
[0008] This disclosure was devised based on the above background.
Summary of the Invention
[0009] Viewed from one aspect, this disclosure provides a computer-implemented method for generating random numbers based on gene information from a biological data source that includes at least gene information sequenced from an organism. This method, in response to receiving a request for random numbers in a computing device by the computing device, obtains a seed value from an entropy source accessible by the computing device, initializes a pseudo-random number generator using the seed to determine a pseudo-random number output, searches a biological data source accessible by the computing device for a series of values derived from the gene information of a biological organism, selects a position in the sequence of values derived from the gene information, reads the value at the selected position of the value sequence derived from the gene information, encodes the value into bit pairs using an encoding scheme, comprising assembling bit pairs to provide a bit sequence as a random number At least one of the selection of the positions of the sequence of values derived from the genetic information and the selection of the encoding scheme is based on a pseudo-random output.
[0010] By sequencing a deoxyribonucleic acid (DNA) sequence or ribonucleic acid (RNA) sequence obtained from an organism using a gene sequencer and processing the sequence of values derived from genetic information such as nucleobases thus obtained according to the method described herein, it has been found that true random numbers that are unpredictable can be generated by utilizing the randomness found in DNA and RNA sequences. In particular, in response to receiving a request for a random number that takes a value that cannot be controlled in advance, by using the output of a pseudo-random number generator seeded with a seed value obtained, a set of randomized positions within the sequence of values derived from genetic information that represents a physical source of values that are themselves inherently random and unpredictable is selected and combined to generate an unpredictable true random number output.
[0011] This method has been demonstrated to pass a number of random number test suites, such as the NIST SP800-22 test suite, the Dieharder test suite, the TestU01 Small Crush test suite, the TestU01 Alphabit test suite, the TestU01 Rabbit test suite, etc. Considering the amount of genetic information available from gene sequencers, the emergence of third-generation sequencing technology has made it possible to implement whole-genome sequencing for personalized medicine, and the method described herein can, as a by-product, provide a potentially infinite source of true random numbers that are easy to generate and maintain without the need for careful hardware verification or a controlled environment to maintain statistical unpredictability.
[0012] Furthermore, since gene information for generating random numbers is easy to retain, after each random number is generated, the gene information can be processed in the same way and the generation process of the random number can be audited and verified by reproducing the original random number. In this way, the random numbers generated by the method described in this specification are unpredictable beforehand, but after they are generated, it can be easily verified that they were indeed generated by the method described in this application. This can enhance the security and integrity of systems that rely on random number generation methods for cryptographic purposes.
[0013] Furthermore, the gene information used to generate random numbers is generated quickly by a gene sequencer or by post-processing for generating reads and can be stored in large quantities in a biological data store. Thus, the method described in this specification can be used to quickly generate truly random numbers of any size in large quantities.
[0014] Furthermore, although the gene information generated from organisms may need to be treated confidentially (in fact, by keeping the gene information confidential at least before random number generation, the unpredictability can be further enhanced), it can be used as a physical source of random numbers for generating true random numbers and as a source for securely verifying subsequent random number generation without compromising the confidentiality of the gene information.
[0015] In this way, appropriately processed gene information can be easily created and can provide an almost infinite verifiable source that reliably generates truly random numbers. Furthermore, the use of gene information as a physical source of randomness provides further valuable technical uses of this information. By the method described in this specification, the value can be controlled and its use can be technically utilized for cryptographic purposes. By sharing it, it further encourages the provision of biological body samples for sequencing, accelerates the development and deployment of personalized medicines, and can promote other scientific and therapeutic benefits provided by capturing gene information.
[0016] In an embodiment, the method may further include transmitting a random number in response to a received request.
[0017] In an embodiment, the method may further comprise the following. Using a random number as the original seed value used as the seed of the pseudorandom number generator, an additional seed value obtained from an entropy source accessible by the computing device, an identifier of a random number request in the computing device, an entropy source provided by a user, a hash of a random number request in the computing device, hashing one or more of the above and the method further comprises transmitting a hash in response to the received request. By hashing a truly random number together with some of the information used to generate the random number, the generated hash is also truly random and unpredictable, and at the same time, the original random number generated from the genetic information can be hidden. This helps to maintain the secrecy of the genetic information selected to generate the random number, and also helps to verify the random number after it is generated, and further can build evidence indicating that the random number was generated using the method.
[0018] In an embodiment, the entropy source accessible by the computing device may be the time of the computing device measured using the system clock of the computing device. In an embodiment, the system clock may provide time with a sub-microsecond resolution. In other embodiments, the system clock may provide time with a nanosecond resolution. By seeding the pseudorandom number generator with the time of the system clock of the arithmetic unit at such a high resolution, the pseudorandom number output used to select a value from the value sequence derived from the genetic information can be made unpredictable before receiving the random number request. In this way, by selecting an unpredictable and random value from unpredictable and random genetic information, it is guaranteed that the generated random number is truly random and unpredictable before it is generated.
[0019] In an embodiment, searching for a sequence of genetic information of a biological organism from a biological data source accessible by a computing device may include randomly selecting a sequence of genetic information from a plurality of available sequences of genetic information retrieved from the biological data source. In this way, by randomly selecting from the sequences of genetic information available at the time of random number generation, the unpredictability of the random numbers generated by selecting values from random positions in the randomly selected sequences is further enhanced.
[0020] In an embodiment, after obtaining a sequence of genetic information from a biological data source and using the sequence when generating a random number, the sequence of genetic information may not be reused to generate another different random number. By using each sequence only once and avoiding reuse, the unpredictability of the random numbers generated in this way is further increased. This can be achieved by including a method in which a simple flag indicating that a particular sequence has already been used to generate a random number is marked in a field of the biological data source, and only sequences that have not already been used to generate a random number are selected.
[0021] In an embodiment, a sequence of values derived from the genetic information of an organism may be composed of sequenced bases of genetic information obtained from a sequencing device. The read value may be a base read from a selected base position in the sequence of genetic information, and the encoding scheme encodes the base into bit pairs. In this way, the output from, for example, a third-generation gene sequencer processed by the "base calling" method of sequencing the nucleobases in DNA or RNA in a sample from an organism can be used to truly generate random numbers. The sequence used for random number generation may be obtained from those stored, used as is the sequence generated in real time by a gene sequencer, or used as the output by a subsequent "base calling" process.
[0022] Since there are four distinguishable nucleobases (adenine (“A”), cytosine (“C”), guanine (“G”), and thymine (“T”)), each nucleobase can be mapped to any of four different bit pairs using a suitable encoding scheme (e.g., A:00, C:01, G:10, and T:11), and there are 24 possible encoding schemes based on the number of permutations that map the four nucleobases to four bit pairs. In embodiments, encoding a base into a set of bits using an encoding scheme can consist of randomly selecting an encoding scheme from the available set of encoding schemes that map bases to sets of bits. In embodiments, the random selection can be based on the output of a pseudorandom number generator. Randomly selecting an encoding scheme from the number of available encoding schemes based on a pseudorandom output can provide an alternative means or additional mechanism for making the generated random numbers unpredictable.
[0023] In embodiments, the method can further comprise storing at least one item of the following information used to generate a random number for later use to verify the generation of the random number. The original seed value used as the seed of the pseudorandom number generator when generating the random number, The sequence of genetic information used to generate the random number, The representation of the encoding scheme used to generate the random number, Optionally, additional information hashed with the random number, Storing the random number so that it can be verified later and the method used to generate the random number. The above information can be stored in a data store accessible to a computing device used to generate random numbers and a user computing device that desires to receive the generated random numbers and verify them. Also, at least a portion of the above information can be transmitted to the recipient of the random number (or a random hash generated therefrom) so that the user computing device can use a portion of the information to verify that the random number was truly generated by a random number generation process.
[0024] In an embodiment, the method may further comprise the following. Receive a request to verify the generation of a random number, the request indicating at least the random number to be verified, In response to the request, obtain the information used in the generation of the random number, Re-initialize the pseudo-random number generator with the original seed value and generate a pseudo-random number output, Based on the pseudo-random number output, select a position within a sequence of values derived from the genetic information used to generate the random number, Read the value at the selected position of the sequence of values derived from the genetic information used to generate the random number, Encode the value into bit pairs using the encoding scheme used to generate the random number to generate a recreated random number, Verify the random number based on the recreated random number and the verification request for random number generation. In this way, it can be verified that the random numbers were generated using a method that provides truly unpredictable random numbers at the time of generation. This can be achieved by recreating the random numbers using the saved seed of the pseudo-random number generator and the sequence of values derived from the genetic information used to generate the random numbers. Alternatively, instead of reseeding the pseudo-random number generator, the positions where values were selected from the sequence of values obtained from the genetic information can be saved and used to recreate the random numbers. The verification process itself can be performed on the same computing system that generates the random numbers, or on any computing system that can access the information used to generate the random numbers and, if necessary, the same pseudo-random number generator.
[0025] In an embodiment, in response to receiving a request for a random number, obtaining a seed value from an entropy source accessible by a computing device and selecting a random position from a new, previously unused sequence of values derived from randomly selected genetic information from a biological data source, guarantees that the random number is not known or predicted prior to the request for the random number being received.
[0026] In an embodiment, the sequence of values derived from the genetic information may be kept secret and not revealed to the requester of the random number or the requester for verifying the generation of the random number. Thus, the genetic information used to generate the random numbers can be kept secret to maintain privacy, yet be used to generate true random numbers and verify the generation of true random numbers.
[0027] In an embodiment, the biological data source can consist of a store of biological data stored in the memory of one or more servers, or the biological data source can consist of a stream of biological data generated when a gene sequencer processes gene information sequenced from a biological organism. Thus, the random numbers can be generated "on the fly" in the sequencing workflow or can be generated by processing previously sequenced gene information stored in a data store (such as a server).
[0028] Viewed from one aspect, the present disclosure provides a computing device comprising the following. One or more processors, and a memory storing instructions that configure the device to obtain a seed value from an entropy source accessible to the computing device in response to receiving a request for a random number in the computing device when executed by one or more of the processors, initialize a pseudorandom number generator using the seed and determine a pseudorandom number output, obtain a series of values derived from the gene information of a biological organism from a biological data source accessible to the computing device, select positions in the series of values derived from the gene information, read the values at the selected positions of the sequence of values derived from the gene information, encode the values into bit pairs using an encoding scheme, and assemble the bit pairs to provide the bit sequence as a random number. Here, the computing device is further configured by instructions to select at least one of a position in the sequence of values derived from the gene information and an encoding scheme based on the pseudorandom number output.
[0029] Viewed from one aspect, the present disclosure provides a non-transitory computer-readable storage medium that, when executed by one or more processors of a computing device, comprises instructions that cause one or more of the processors to perform the following in response to receiving a request for a random number in the computing device Obtain a seed value from an entropy source accessible by the computing device, Initialize a pseudorandom number generator using the seed and determine a pseudorandom number output, Obtain a series of values derived from genetic information about an organism from a biological data source accessible by the computing device, Select positions in the series of values derived from the genetic information, Read the values at the selected positions in the sequence of values derived from the genetic information, Encode the values into bit pairs using an encoding scheme, and Assemble the bit pairs to provide the bit sequence as a random number. Here, the instructions further configure one or more of the processors to select at least one of a position in the sequence of values derived from the genetic information and an encoding scheme based on the pseudorandom output.
[0030] Viewed from one aspect, the present disclosure provides a computer-implemented method for a computing device to verify a random number generated by the method described herein, the computer-implemented method comprising Receiving a request to verify the generation of a random number, the request indicating at least the random number to be verified, In response to the request, obtaining information used to generate the random number, including obtaining a series of values derived from the genetic information of an organism from a biological data source accessible by the computing device, Obtaining selected positions within a sequence of values derived from the genetic information used to generate the random number, Obtain the encoding scheme used for generating random numbers, Read the value at a selected position in a sequence of values derived from gene information used to generate a random number, Encode the value into bit pairs using the encoding scheme used to generate the random number, generate a recreated random number, and verify the random number using at least information based on the recreated random number. Comprising.
[0031] In an embodiment, retrieving information used to generate a random number may include at least one of retrieving at least a portion of the information from a data store located at a location accessible by a computing device, the information having been stored at that location in response to the generation of the random number, and retrieving at least a portion of the information from a request received to verify the generation of the random number.
[0032] In an embodiment, obtaining a selected position in a sequence of values derived from gene information used to generate a random number may Re-initialize a pseudorandom number generator with an original seed value and generate a pseudorandom number output, Based on the pseudorandom number output, select a position within the sequence of values derived from the gene information used to generate the random number. May comprise:
[0033] In an embodiment, obtaining the encoding scheme used to generate a random number may Re-initialize a pseudorandom number generator with an original seed value and generate a pseudorandom number output, Based on the pseudorandom number output, select the encoding scheme to use for generating the random number. May comprise.
[0034] Viewed from one aspect, the present disclosure provides a computing device configured to verify a random number generated by these methods described herein, the computing device comprising one or more processors, a memory storing instructions that, when executed by the one or more processors, configure the apparatus as follows, the instructions include, receiving a request to verify generation of a random number, the request indicating at least the random number to be verified, in response to the request, obtaining information used to generate the random number, including obtaining a sequence of values derived from genetic information of a biological organism from a biological data source accessible by a computing device, obtaining a selected position within the sequence of values derived from the genetic information used to generate the random number, obtaining the encoding scheme used to generate the random number and reading the value at the selected position of the sequence of values derived from the genetic information used to generate the random number, encoding the value into bit pairs using the encoding scheme used to generate the random number to generate a recreated random number, using at least information based on the recreated random number to verify the random number.
[0035] In one aspect, the present disclosure provides a non-transitory computer-readable storage medium storing instructions for verifying a random number generated by the method described herein, the instructions, when executed by one or more processors of a computing device, cause one or more of the processors to, receive a request to verify generation of a random number, the request indicating at least the random number to be verified, in response to the request, obtain information used to generate the random number, including obtaining a sequence of values derived from genetic information of a biological organism from a biological data source accessible by a computing device, obtain a selected position within the sequence of values derived from the genetic information used to generate the random number, Obtain the encoding scheme used for generating random numbers, Read the value at the selected position of the sequence of values derived from the gene information used to generate random numbers, Encode the value into pairs of bits using the encoding scheme used to generate random numbers, and generate a recreated random number, Use at least information based on the recreated random number to verify the random number, Cause it to be done.
[0036] Many modifications and other embodiments of the inventions described herein will come to mind to those skilled in the art to which these inventions pertain, in light of the teachings presented herein. Accordingly, it is to be understood that the disclosure herein is not to be limited to the specific embodiments disclosed herein. Further, the descriptions provided herein are to provide exemplary embodiments in the context of a particular combination of elements, but steps and / or functions may be provided by alternative embodiments without departing from the scope of the invention.
[0037] Next, specific embodiments of the present invention will be described only by way of example with reference to the accompanying drawings.
Brief Description of the Drawings
[0038]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6A
Figure 6B
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11A
Figure 11B
Figure 12
[0039] Hereinafter, embodiments of the present disclosure will be described with reference to the accompanying drawings. However, it should be understood that the present disclosure is not limited to the embodiments, and all modifications and / or equivalents or their replacements also belong to the scope of the present disclosure. The same or similar reference notations may be used to refer to the same or similar elements throughout the present specification and drawings.
[0040] In this specification, terms such as "having", "may have", "including", or "may include" with respect to a certain feature (e.g., a component such as a number, function, operation, or part) indicate the presence of that feature and do not exclude the presence of other features.
[0041] For example, "A or B", "at least one of A and B", "at least one of A or B" can all indicate (1) including at least one A, (2) including at least one B, or (3) including at least one A and at least one B.
[0042] In this specification, the terms "first" and "second" can modify various components regardless of importance and do not limit the components. These terms are only used to distinguish one component from another. For example, a first user device and a second user device can indicate different user devices regardless of the order or importance of the devices. For example, without departing from the scope of the present disclosure, a first component can be denoted as a second component, and vice versa.
[0043] When an element (e.g., a first element) is referred to as being "coupled / connected (operatively or communicatively)" to another element (e.g., a second element), it will be understood that it can be coupled or connected directly to the other element or via a third element. In contrast, when an element (e.g., a first element) is said to be "directly coupled / connected" to another element (e.g., a second element), it will be understood that no other element (e.g., a third element) intervenes between that element and the other element.
[0044] As used herein, the term "configured (or set) to" may, depending on the context, be used interchangeably with the terms "suitable for", "capable of", "designed to", "adapted to", "made to", or "able to". The term "configured (or set) to" does not essentially mean "specially designed in hardware". Rather, the term "configured to" may mean that the device can perform operations together with other devices or components in some cases.
[0045] For example, the term "a processor configured (or set) to execute A, B, and C" may mean a general-purpose processor (e.g., a CPU or an application processor) that can execute operations by executing one or more software programs stored in a memory device, or a dedicated processor (e.g., an embedded processor) for executing operations.
[0046] The terms used in this specification are provided merely to describe some embodiments thereof and are not intended to limit the scope of other embodiments of the present disclosure. It should be understood that the singular forms "a", "an", and "the" include the plural forms as well, unless the context clearly dictates otherwise. All terms, including technical and scientific terms used in this specification, have the same meaning as commonly understood by one of ordinary skill in the technical field to which the embodiments of the present disclosure belong. Further, terms defined as in a commonly used dictionary should be interpreted to have a meaning that coincides with the meaning in the context of the relevant art and should not be interpreted in an idealized or overly formal sense unless explicitly so defined herein. It is understood that in some cases, the terms defined in this specification may be interpreted to exclude embodiments of the present disclosure.
[0047] FIG. 1 shows an exemplary system 100 of connected devices for generating random numbers based on genetic information in accordance with an aspect of the present disclosure.
[0048] System 100 consists of a gene sequencer 102 for extracting genetic information from a sample tube 108 containing a polynucleotide chain from an organism 104 (in this case, a human subject). That is, sample tube 108 may contain a sample of DNA or RNA of organism 104 that has been appropriately prepared for sequencing by gene sequencer 102.
[0049] The gene sequencer 102 provides output data including the gene information contained in the sample tube 108 to a base calling computing device 118 that is used to process the gene information by "base calling" to generate one or more sequenced bases. As seen in FIG. 1, alternatively or additionally, the gene sequencer 102 provides output data including the gene information contained in the sample tube 108 to a random number generator computing device 106, and this random number generator computing device 106 may instead be used to process the gene information by "base calling" to generate one or more sequenced bases. As described herein, the random number generator computing device 106 is used to generate random numbers using a sequence of values derived from the gene information.
[0050] In an embodiment, the illustrated gene sequencer 102 represents a third-generation nanopore sequencer such as those available from Oxford Nanopore Technologies (https: / / nanoporetech.com / ). However, the gene information used in the random number generator computing device 106 for generating random numbers can be obtained from any suitable source and is not limited to this sequencing technology, and gene information provided by second-generation sequencers, and sequences of values derived from gene information such as base sequences of biological origin provided in any suitable form can be used.
[0051] In the gene sequencer 102, the transmembrane pore 110 (e.g., nanopore) is used as an electrical biosensor for sensing genetic information in the form of the sequence of polynucleotides in a DNA or RNA strand from a biological sample housed in the sample tube 108. Such a transmembrane pore 110 can be used, for example, to identify small molecules and folded proteins or to monitor chemical reactions and enzymatic reactions at approximately the single-molecule level by sending an ion current across the transmembrane pore 110 as a DNA / RNA strand passes through the pore. The interaction between the analyte and the transmembrane pore 110 can result in characteristic changes in the ion current (e.g., characteristic current profile) as the analyte moves through the nanopore. That is, the ion current (e.g., electron current / current) through the transmembrane pore 110 can be measured under a potential difference applied across the transmembrane pore 110.
[0052] A graph plotting an example of the raw data output 200 output by the gene sequencer 102 over time is shown at the top of FIG. 2, and details 202 of a part of the data are shown below it. As can be seen, the plot shows the raw data output 200 in the form of ion flow / current signal information, and the form is characteristic of the analyte passing through the transmembrane pore 110.
[0053] For example, when a polynucleotide strand such as DNA passes through the transmembrane pore 110, the nucleobases of the DNA passing through the transmembrane pore 110 (i.e., adenine (A), cytosine (C), guanine (G), and thymine (T)) result in a characteristic current profile depending on which combination of 4 to 5 nucleobases as part of the DNA strand passes through the sequencer at any given moment. As seen in the raw data output 200 of FIG. 2, this generates a current signal that drops to different levels as each base leaves the pore and a new base enters at the top. By interpreting the changes in the current, the sequence of nucleobases on the DNA strand can be inferred through the process of "base calling". The results of the base calling show the prediction of the called bases 204 for different segments of the raw data and are overlaid on top of the details 202 of the section of the raw data output 200 shown in the lower pane of FIG. 2.
[0054] The signal information generated by a gene sequencer (such as a nanopore sequencer) is typically very noisy, for example due to electrical and environmental interference. Furthermore, the signal measured by the current passing through the pore reflects the presence of 4-5 nucleotides that are part of the DNA strand. Therefore, the task of base calling to identify the polynucleotide sequence (i.e., determine the "read") from the signal information of the raw data output 200 is a computationally intensive task and often requires processing by an artificial neural network to analyze the raw data output 200. Therefore, in order to identify the nucleotide bases in the raw data, it is necessary to process the raw data output 200. This is done by base calling using a computationally intensive process such as a deep neural network, which provides a prediction of the nucleotide bases due to the raw data.
[0055] Therefore, the raw data output 200 output by the gene sequencer 102 is passed to a suitable computing device for base calling, such as the base calling computing device 118 (or the random number generator computing device 106 if configured to perform base calling), to determine the sequence of nucleobases of the DNA / RNA molecules in the sample tube 108. The resulting gene sequence of the bases is stored in a server 114 accessible via the Internet 112 or passed directly to the random number generator computing device 106 and used for random number generation.
[0056] When a DNA / RNA read is created through base calling, the base calling computing device 118 (or the random number generator computing device 106 if configured to execute base calling) can store the nucleobase read sequence in a suitable standard data structure such as FAST5 or other formats as shown in the example of FIG. 3.
[0057] As shown in FIG. 3, the base called read data 300 includes a header 302 indicating an identifier ("@5d08ebdf-4b02-45bf-ac72-8e5716ca468d" in this example) and a run identifier ("runid=3b55a2b916b3c56c641a45f4898b156692a08534" in this example), and further includes information regarding the sample, read size, start time, etc. The base called read is stored in a payload indicating a sequence 304 of nucleotides arranged as adjacent sequenced base pairs. 16 pairs are arranged in one line and continue until the Nth base pair is reached at the end of the read.
[0058] A base called "Data 300" that represents the sequence of base values derived from genetic information may be transmitted by the base call computing device 118 to the server 114 via the Internet 112, and the server 114 can store the base call data 300 for later acquisition. For example, it may be acquired by the random number generator computing device 106. A base called data for all reads from the sample tube 108 may be transmitted by the base call computing device 118 to the server 114.
[0059] Alternatively, additionally, the base call computing device 118 (or the random number generator computing device 106 if configured to perform base calling) may transmit the raw data output 200 output by the gene sequencer 102 to the server 114 via the Internet 112, and this server stores the raw data output 200 output by the gene sequencer 102 and uses it later for base call processing by other computing devices. In this case, the base call computing device 118 or the random number generator computing device 106 may execute the base call process at a later time. The base call computing device 118 may function as a server or may function as one or more servers 114.
[0060] The base call computing device 118 (or, if configured to perform base calls, the random number generator computing device 106) receives and processes the raw data output 200 from the gene sequencer 102, stores the raw data output 200 and / or the base call data 300 in the server 114, and then the random number generator computing device 106 may receive a request for a random number. Alternatively, if the random number generator computing device 106 is configured to receive and process the raw data output 200 from the gene sequencer 102, the random number request may be received simultaneously with the read from the gene sequencer 102 to the random number generator computing device 106, or during the processing of the raw data output 200 and the base call processing.
[0061] Referring to FIGS. 4 and 5, a method for generating a random number based on genetic information using the method 500 by the random number generator computing device 106 in response to a random number request will be described.
[0062] FIG. 4 shows a block diagram of an embodiment of a computing device used as the random number generator computing device 106 shown in FIG. 1.
[0063] The random number generator computing device 106 includes a memory 402, one or more processors 404, and an input / output module 408. A bus system (not shown) may be provided to support communication between at least one processor 404, the memory 402, and the input / output module 408.
[0064] The processor 404 executes instructions that can be loaded into the memory 402. The processor 404 can include an appropriate number and type of processors and other devices in an appropriate arrangement. Examples of processors include microprocessors, microcontrollers, digital signal processors, field programmable gate arrays, and application specific integrated circuits.
[0065] Memory 402 may be provided by any structure that can temporarily or persistently store and retrieve information (a structure capable of storing data, program code, and other appropriate information). Memory 402 may represent a random access memory or other appropriate volatile or non-volatile storage device. Memory 402 may include one or more components or devices that support long-term data storage. This includes read-only memory, hard drives, flash memory, or optical disks, which may store software code for loading into Memory 402 at runtime. During use, Processor 404 and Memory 402 provide a runtime environment 406 in which instructions and code loaded into Memory 402 can be executed by Processor 404 to generate instances of software modules within the runtime environment 406.
[0066] The random number generator computing device 106 includes an input / output module 408 that provides a communication interface for receiving data from one or more servers 114, user computing devices 116, and base call computing devices 118 via the Internet 112. If a data connection to a gene sequencer is provided, one or more gene sequencers 102 are also included.
[0067] Although shown as a single computing device in FIG. 1, the random number generator computing device 106 can be configured as a network server (which may be part of one or more servers 114) or a virtual machine implemented in a cloud computing service, both of which are suitable for executing the random number generation and verification methods described herein.
[0068] Referring to FIG. 5, an embodiment of a random number generation method 500 according to an aspect of the present invention will be described. This method is implemented by the embodiment of the random number generator computing device 106 shown in FIG. 4. In this document, reference is also made to FIGS. 6A, 6B, 7, 8, 9, and 10, which provide examples of implementing specific steps of method 500 in Python code.
[0069] To implement method 500, the memory 402 of the random number generator computing device 106 contains instructions that, when executed by one or more processors 404, cause the one or more processors 404 to instantiate a sequence data selector 410, an entropy source 412, a pseudo-random number generator 414, a sequence data encoder 416, and a random number assembler 418. The sequence data selector 410, the entropy source 412, the pseudo-random number generator 414, the sequence data encoder 416, and the random number assembler 418 can execute method 500 shown in FIG. 5 and generate random numbers based on gene information from a biological data source containing gene information sequenced from an organism. The above functional elements are shown as modularized software for ease of understanding, but this is for illustrative purposes only, and the specific implementation of method 500 in the memory 402 of the random number generator computing device 106 may be realized in an appropriate manner. Further, the descriptions of method 500 and method 1200 below show actions to be performed as procedures, but this is not intended to impose any limitations, and it should be understood that the procedures may be executed in an order different from the order described below, or some procedures may be executed in parallel.
[0070] In step 502 of method 500, when a request for a random number is received from a computing device, a seed value is obtained from an entropy source accessible to the computing device. The request for a random number may be received from user computing device 116, shown as a stand-alone computing device in FIG. 1, which may be configured as a network server or as a virtual machine implemented in a cloud computing service. User computing device 116 may request the provision of true random numbers to generate encryption keys for use in an encryption security protocol. The request for a random number is received at input / output module 408 via Internet 112 and may be sent directly from user computing device 116 to random number generator computing device 106 or may be routed to random number generator computing device 106 by a random number generation service broker server. This service broker server serves to provide random number generation as a service to a plurality of user computing devices 116 on Internet 112.
[0071] The entropy source may be entropy source 412, which provides a seed value from an entropy source provided locally to random number generator computing device 106 or allows access to a remote entropy source from random number generator computing device 106 via input / output module 408. In an embodiment, the entropy source 412 accessible to the computing device may be the time of the computing device measured using the system clock of the computing device. The system clock can provide time at a higher resolution, such as sub-microsecond resolution or nanosecond resolution.
[0072] The acquisition of the seed value is shown in Figure 6A, and example code used to implement the method of the example shown in Figure 5 is shown. In this method, a value is selected from a sequence of radix derived from genetic information, and a pseudorandom number generator is seeded to generate a random number for encoding. In particular, the following Python code imports the time library, obtains the value of the system performance counter in nanoseconds as an integer value when a random number request is received, and formats it to be suitable for use as a seed. import time time_ns = time.perf_counter_ns()
[0073] The result of this step can be seen in the example shown in Figure 6B, where the system time is used as an entropy source, indicating that the seed has been generated. Seed (performance counter) = 32888750
[0074] Next, in step 504, method 500 initializes the pseudorandom number generator using the seed and determines the pseudorandom number output. Here, the pseudorandom number generator 414 can be used to generate a series of random numbers when initialized with the seed value. It should be noted that when the same pseudorandom number generator is initialized with the same seed, the same series of random numbers is always generated. In the Python code of the example shown in Figure 6A, the random library is imported, and the pseudorandom number generator 414 is initialized using the seed value generated from the system time as the entropy source 412. import random random.seed(time_ns)
[0075] As shown in FIG. 4, sequence data selector 410 receives a random number request, operates entropy source 412 and pseudo-random number generator 414 to obtain a seed value, and uses it to initialize pseudo-random number generator 414. Alternatively, entropy source 412 can be directly accessed or operated by pseudo-random number generator 414 to obtain a seed value (and may not be accessible or operable by sequence data selector 410 or sequence data encoder 416).
[0076] In step 506, method 500 proceeds by obtaining, from a biological data source (e.g., server 114) accessible to the computing device, a sequence of values derived based on the genetic information of an organism. Sequence data selector 410 can access the biological data source to obtain a sequence of values derived from the genetic information.
[0077] In the example detailed herein, the sequence of values derived from the genetic information of an organism is composed of sequenced bases of genetic information obtained from a gene sequencer such as data 300 shown in FIG. 3 and is used for random number generation in method 500. In this way, for example, the output of a third-generation gene sequencer is processed by a "base calling" method to sequence the DNA or RNA nucleobases in a sample from an organism and can be used to generate truly random numbers. The sequence used to generate random numbers may be obtained from a store, generated in real time by a gene sequencer, or output by a subsequent "base calling" process.
[0078] Alternatively, or in addition, the sequence of values derived from the genetic information of an organism used to generate random numbers in method 500 may include raw data output from a gene sequencer such as the raw data output 200 shown in FIG. 2. For this purpose, the raw data output 200 received from the gene sequencer provides a sequence of such values derived from genetic information in the form of periodically sampled current levels (e.g., sampled when the current flow falls below a threshold level, which corresponds to the analyte passing through the transmembrane pore 110) and can be used for random number generation. In other approaches, the raw data output 200 of a noisy fluctuating current level may be used.
[0079] In the example shown here, in relation to FIGS. 6A to 11B, it is operated to generate random numbers in the random number generator computing device 106 based on the data 300 shown in FIG. 3. However, in an embodiment, obtaining a sequence of values obtained from genetic information for generating random numbers may include randomly selecting from among sequences of values based on multiple genetic information obtainable from a biological data source. That is, the selection of the base called data 300 may be randomly selected from among a number of different sequences of values obtained based on genetic information. This information is provided to the random number generator computing device 106 from a data stream obtained from the gene sequencer 102, or from base calling processing, or from a data store of a biological data source on the server 114. Different sequences of values obtained from genetic information may be obtained from different reads of the same polynucleotide sequence, or from different polynucleotide sequences of the same or different organisms. Random selection of a sequence of values obtained from abundant genetic information further facilitates the generation of truly random numbers. The random selection of a sequence of values derived from genetic information may be based on the pseudo-random output of the pseudo-random number generator 414.
[0080] In an embodiment, a sequence of genetic information is obtained from a biological data source and used to generate a random number. After that, the sequence of genetic information is not used again and no other different random numbers are generated. That is, for example, when a base called data 300 is used to generate a random number, it is not used again. By using each sequence only once and avoiding its reuse, the unpredictability of the random numbers generated by this method is further enhanced. This can be achieved by marking a flag indicating that a specific sequence in a field within the biological data source has already been used to generate a random number, and this method includes selecting only from sequences that have not already been used to generate random numbers.
[0081] In step 508, method 500 proceeds by selecting a position within a sequence of values obtained from genetic information by sequence data selector 410. In an example, when the selection of the encoding scheme is based on a pseudo-random number output and / or the selection of a sequence of values derived from genetic information is based on a pseudo-random number output, the selection of a position in the sequence of values derived from genetic information does not necessarily have to be random. That is, consecutive values can be selected from a sequence of values obtained based on genetic information starting from a pre-defined position. For example, if a hexadecimal value is required to generate a 32-bit random numerical value, the first bases 0 - 15 can be selected from a base called data 300. However, this is only limited to the case where data 300 itself is randomly selected or the encoding method is randomly selected. Alternatively, a pattern of fixed positions can be used.
[0082] Alternatively, to further enhance the unpredictability of random number generation, the selection of positions within the sequence of values derived from genetic information may be based on a pseudo-random output. This phenomenon may occur regardless of whether the selection of the encoding scheme is random or based on a pseudo-random output. Also, the selection of the sequence of values derived from genetic information may occur regardless of whether it is random or based on a pseudo-random output.
[0083] In an example, the selection of positions may follow a pre-defined pattern or be randomly selected from a set of possible pre-defined patterns. Also, the pre-defined pattern may start from a randomly selected position within the sequence of values obtained based on the pseudo-random output from the pseudo-random number generator 414.
[0084] In other examples, as can be seen in relation to FIG. 7, the selection of positions may be individually randomized, and the selection of each position is based on a different pseudo-random output from the pseudo-random number generator 414.
[0085] In the examples related to FIGS. 6A, 6B, and 7, to generate 32 bits of true random numbers, 16 random positions within the range from 0 to the maximum radix (which may be selected from, for example, the length of the sequence data or a small number such as a 128 radix) are randomly selected by a series of 16 different pseudo-random outputs from the initialized pseudo-random number generator 414. Each random position represents selecting a single radix value from among the radixes called data 300.
[0086] As shown in FIG. 6A, after the pseudo-random number generator 414 is initialized with a seed value, the following code is used to generate 16 pseudo-random outputs from the pseudo-random number generator 414 with numbers from 0 to the length of the sequence. int(random.uniform(0, max_base_number))
[0087] The function random.uniform returns a random numerical value from a uniform distribution within the specified range. As shown in FIG. 6B, the reference positions of 16 examples randomly selected by the pseudo-random number generator 414 are initialized with the seed value 32888750 and are set to select up to the maximum reference number 127. Base selection 1 = 18 Base selection 2 = 41 Base selection 3 = 3 Base selection 4 = 25 Base selection 5 = 32 Base selection 6 = 30 Base selection 7 = 48 Base selection 8 = 103 Base selection 9 = 13 Base selection 10 = 89 Base selection 11 = 4 Base selection 12 = 99 Base selection 13 = 33 Base selection 14 = 32 Base selection 15 = 55 Base selection 16 = 45
[0088] It should be noted that these 16 values are always output by the pseudo-random number generator 414 after being initialized with the seed value 32888750.
[0089] In step 510, method 500 proceeds to read the base value at a selected position within the sequence of genetic information. That is, regardless of how the position is selected, the value of the sequence of values derived from the genetic information is read. In the example shown in FIG. 7, as shown in FIG. 6B, using 16 base positions randomly selected by the pseudo-random number generator 414, the next 16 bases 1-16 are read from the base called data 300. 702a: Base 1 (read from random base selection position 18) = C 702b: Base 2 (read from random base selection position 41) = C 702c: Base 3 (read from random base selection position 3) = A 702d: Base 4 (read from random base selection position 25) = G 702e: Base 5 (read from random base selection position 32) = A 702f: Base 6 (read from random baseselection position 30) = T 702g: Base 7 (read from random base selection position 48) = T 702h: Base 8 (read from random base selection position 103) = C 702i: Base 9 (read from random base selection position 13) = T 702j: Base 10 (read from random base selection position 89) = A 702k: Base 11 (read from random base selection position 4) = T 702l: Base 12 (read from random base selection position 99) = A 702m: Base 13 (read from random base selection position 33) = T 702n: Base 14 (read from random base selection position 32) = A 702o: Base 15 (read from random base selection position 55) = T 702p: Base 16 (read from random base selection position 45) = G
[0090] This is shown in Figure 9, which shows a summary table of random number generation in the example. Here, the 16 basic reads 902 are as follows. TIFF2025524639000002.tif21160
[0091] In step 512, method 500 proceeds by encoding the values read using an encoding scheme into pairs of bits. In random number generator computing device 106, the values read from the genetic information are passed to sequence data encoder 416 and encoded using an encoding scheme. In an embodiment, the selection of the encoding scheme may be based on the pseudo-random number output from pseudo-random number generator 414. To encode all the selected bases within a read, a single randomly selected encoding scheme may be used, or different encoding schemes may be randomly selected to encode each base or group of bases within a read.
[0092] The selection of the encoding method may be controlled by sequence data encoder 416 depending on the operation of pseudo-random number generator 414. Sequence data encoder 416 can simply use pseudo-random number generator 414 as previously used to select positions within the sequence of values obtained from the genetic information. Or, pseudo-random number generator 414 can be reseeded with different seed values obtained from entropy source 412. If the selection of the position to read within the sequence of values obtained from the genetic information is based on the pseudo-random number output of pseudo-random number generator 414, or if the selection of the sequence of values obtained from the genetic information is random, a random selection of the encoding method may not be necessary. However, selecting the encoding method based on the pseudo-random number output of pseudo-random number generator 414 may further increase the unpredictability of the true random numbers generated.
[0093] In this example, since there are four nucleotide base values (A, C, G, T) to be encoded, these can be mapped to four 2-bit values. Based on the permutations of the four bases and four pairs of bits, various encoding methods are available.
[0094] Figure 8 shows a table showing only the first 16 of the 24 encoding schemes for encoding nucleotides into bit pairs. These are numbered from 0 to 23.
[0095] In the example shown in Figure 6A, an additional pseudo-random number output is obtained from the pseudo-random number generator 414 (continuing the previous configuration without reseeding first), and a random number between 0 and 23 is generated, which is used to select the encoding scheme used to generate the random number. The following code is used to generate the random number for encoder selection. int(random.uniform(0, 24))
[0096] As shown in Figure 6B, in this example, the pseudo-random number generator 414 generated the coding scheme selection number as 11. As can be seen from the table in Figure 8 and the summary table in Figure 9, the randomly selected encoding scheme 11 904 maps the bases to bit pairs as follows. TIFF2025524639000003.tif11163
[0097] Thus, in this example, in step 512, each of the 16 bases 1-16 is encoded using encoding scheme 11, providing the following mapping of the encoded bases 906. TIFF2025524639000004.tif19166
[0098] Once the read value is encoded, in step 514, method 500 combines the encoded bit pairs to provide a bit sequence as a random number. As shown in Figure 9, in this example, the assembled 32-bit random bit sequence 908 is 01011110110000010011001100110010.
[0099] The size of the random bit sequence can be arbitrarily adjusted by selecting more values from the sequence of values derived from the genetic information and encoding them as described above. Generally, the larger the number of values to be selected, the more the selection should be made from a larger sequence of values obtained from the genetic information. In the above example, a 32-bit truly random number is generated using a radix of 16. By selecting 64 bases, a 64-bit truly random number can be generated.
[0100] In an embodiment, the sequence of values derived from the genetic information may be kept secret and not revealed to the random number requester or the requester for verifying the generation of the random number. Thus, although the genetic information used to generate the random number may be kept secret to maintain privacy, it can still be used to generate a true random number and verify the generation of the true random number.
[0101] In an embodiment, when a sequence of values derived from the genetic information is used to generate a random number, it is not used again. This can maintain the unpredictability of the generated random numbers. That is, if the same sequence of values derived from the genetic information is repeatedly used to generate random numbers, the resulting randomness may be less unpredictable. This can be achieved by marking a flag indicating that a particular sequence in the biological data source field has already been used to generate a random number. This method includes selecting only from sequences that have not already been used to generate random numbers.
[0102] Therefore, according to method 500, by combining obtaining a seed value from an entropy source accessible by the random number generator computing device 106 and selecting a random position from a new unused sequence of values based on randomly selected genetic information from the biodata source, it may be guaranteed that the random number cannot be known or predicted before receiving a request for the random number.
[0103] In an embodiment, the method may further include transmitting a random number in response to a received request. The random number may be transmitted to the user's computing device 116 via the Internet 112.
[0104] In an example, a message structure as shown in FIG. 10 is used. This includes an identifier (e.g., "@5d08ebdf-4b02-45bf-ac72-8e5716ca468d") extracted from the header 302 of the base call data 300 that provides a sequence of values generated from genetic information, the original seed value used to seed the pseudorandom number generator 414, a position within the base call data 300 randomly selected by the pseudorandom number generator 414, an encoding scheme randomly selected by the pseudorandom number generator 414, and the random number itself.
[0105] The message includes at least a random number encoded using the encoding scheme or a random number output based on the random number. For example, the method may further include hashing the random number with data. This additional data may include the original seed value used as a seed for the pseudorandom number generator 414, an additional seed value obtained from an entropy source accessible to the computing device (to add additional entropy to the output), an identifier of the random number request in the computing device, a hash of the random number request in the computing device, and a method of transmitting a hash in response to the received request.
[0106] An example of Python code used to generate a hash of the generated random number is shown in FIG. 11A. Here, the hashlib library of Python is imported and the output of the random number hashed using the SHA256 hash algorithm is defined as follows. import hashlib m = hashlib.sha256()
[0107] The hash is first hashed with a random number encoded using an encoding scheme, and then updated by hashing it together with the seed value of the pseudorandom number generator 414, or the request identifier of the random number, or other user-specified entropy source. Use the following code. m.update("00110010000111110111111110011100".encode('utf-8')) m.update("32888750".encode('utf-8'))
[0108] In this way, a 32-bit random number encoded using an encoding method is hashed together with the seed value and the entropy source optionally provided by the user, and a 256-bit random number output is generated. This output is also truly random and unpredictable. In the example, the hexadecimal digest of the 256-bit random number output by the SHA256 algorithm is shown in Figure 11B as "2809d5d03d1ff393ef3851182d9e4fe93017c6242327d3682ee48888b4aca7c9".
[0109] The message sent from the random number generator computing device 106 to the user may include the original random number or the hashed random number output, or both.
[0110] By hashing a true random number and a part of the information used to generate the random number, the generated hash also becomes truly random and unpredictable, and the original random number generated from the genetic information can be hidden. This can further maintain the secrecy of the genetic information selected to create the generated random number, and also helps in verifying the random number after generation, and can build additional evidence that the random number was generated using this method.
[0111] After the random number is generated, in order to enable its verification, embodiments may further include saving at least one of the following information used in generating the random number. This is used to verify the generation of the random number later. · The original seed value used to generate the random number by the pseudo-random number generator 414 · The sequence of genetic information used to generate the random number · The index of the encoding scheme used to generate the random number · The random number; optionally, additional information hashed together with the random number · The output of the hashed random number
[0112] The data may be stored using a data format as shown in FIG. 10 and may be stored locally in the random number generator computing device 106 or remotely in one or more servers such as another computing device or a server 114 configured to provide a verification service for verifying the generated random numbers. The information may be stored in a data store accessible to the computing device used to generate the random number and may also be stored in the computing device of the user who receives the generated random number and wants to verify it. Some of the above information may be sent to the recipient of the random number (or the random hash generated therefrom) so that the user's computing device can use part of that information to verify that it was generated by a truly random number generation process. Some of the above information may also be sent to a third-party auditor computing device 120 (see FIG. 1) or, instead, may be sent to verify that it was generated by the process described above so that the third-party computing device can audit the generated random number.
[0113] Therefore, only enough information needs to be saved to enable later verification of the random numbers. This verification may involve executing at least some of the steps of method 500 to regenerate the random numbers and confirm that they correspond to the random numbers originally generated using method 500.
[0114] FIG. 12 shows an embodiment of a method 1200 for verifying random numbers in accordance with aspects of the present disclosure. Method 1200 may be performed by a random number generator computing device 106, a server 114, an auditor computing device 120, or any other suitable computing device that can access the appropriate information necessary to verify that numbers were generated in accordance with method 500 using a sequence of values derived from genetic information. For simplicity, in the following description, method 500 is described as if it were being performed by random number generator computing device 106. Thus, method 1200 may be implemented in runtime environment 406 by instructions stored in memory 402.
[0115] In step 1202, method 1200 receives a request to verify the generation of a random number. This request indicates at least one random number to be verified. The request may be received by the random number generator computing device 106 from a user computing device 116 that requested the random number at any point after the random number was generated, or from a third-party auditor computing device 120 attempting to verify the generated random number (e.g., on behalf of the user computing device). The indication of the random number to be verified received with the request is the minimum amount of information sufficient to enable verification, and only if the computing device performing the verification has access to sufficient information to audit the method by which the random number was generated. For example, this is to enable execution of some of the steps necessary to regenerate the random number.
[0116] In step 1204, in response to the request, information used to generate a random number is obtained. Obtaining the information used to generate a random number may include obtaining at least some of the information from a data store in a location accessible by a computing device performing the verification (whether it is the random number generator computing device 106, the auditor computing device 120, or another computing device performing the verification). This information was stored in that location in response to the generation of the random number. Obtaining the information used to generate a random number may include obtaining at least some of the information from the received request in order to verify the generation of the random number. Thus, the verification computing device can obtain sufficient information to perform the verification from the verification request (which may include useful information) and the data store where the information was originally stored in response to the generation of the random number. This may include obtaining a sequence of values derived based on the genetic information of the organism from which the original random number was generated from a biological data source accessible by the computing device.
[0117] In step 1206, a selected position in the sequence of values derived from the genetic information used by method 1200 to generate the random number is obtained. If the selected positions 702a - 702h are available to the computing device performing the verification (whether it is the random number generator computing device 106, the auditor computing device 120, or another computing device performing the verification), the value can simply be read from the data store or the verification request from the sequence of values obtained based on the genetic information. On the other hand, the selected positions 702a - 702p may be recreated using the pseudo-random number generator 414. That is, obtaining the selected position in the sequence of values derived from the genetic information used to generate the random number includes re-initializing the pseudo-random number generator 414 with the original seed value to generate a pseudo-random number output, and then selecting a position within the sequence of values derived from the genetic information used to generate the random number based on the pseudo-random number output.
[0118] In step 1208, method 1200 obtains the encoding scheme used to generate the random number. Similarly, if the selected encoding scheme 904 is available to the computing device performing the verification (whether it is the random number generator computing device 106, the auditor computing device 120, or another computing device performing the verification), the value can be simply used from the data store or the verification request to encode the value read from the sequence of values derived from the genetic information. On the other hand, the selected encoding method 904 may be recreated using the pseudo-random number generator 414. That is, obtaining the selected encoding scheme 904 used to generate the random number involves re-initializing the pseudo-random number generator 414 with the original seed value to generate a pseudo-random number output, and then selecting an encoding scheme from among the available encoding schemes based on the pseudo-random number output.
[0119] In step 1210, method 1200 reads the value at the position (702a - 702p in this example) selected from the sequence of values based on the random number generated from the genetic information.
[0120] In step 1212, method 1200 uses the encoding scheme (the selected encoding scheme 904 in this example) used to generate the random number to encode the value into pairs of bits and generate a regenerated random number. If the original random number was correctly generated using method 500, the regenerated random number should match the original random number.
[0121] Thus, in step 1214, in method 1200, the original random number is verified using at least information based on the regenerated random number. This can be achieved by comparing the original random number with the recreated random number, and may include resending a recreated message that includes the recreated random number (or a suitable hash thereof) to the requester of the verification. Thereby, the requester can verify the recreated random number / resent message against the original random number or the original transmitted message data.
[0122] Thus, the random number generator computing device 106, alone or in combination with one or more other computing devices, can be arranged as a server and provide a verifiable true random number as a service to any user computing device 116 or server that requests a random number via the Internet 112.
[0123] It has been found that sequences of values obtained from genetic information, for example, by processing nucleobases from deoxyribonucleic acid (DNA) sequences or ribonucleic acid (RNA) sequences obtained from an organism using a gene sequencer, can utilize the randomness found in DNA and RNA sequences to generate unpredicted and truly random numerical values according to the methods described herein. In particular, by using the output of a pseudorandom number generator seeded with a seed value obtained in response to a request for a random number and taking values that cannot be pre-controlled, a set of randomized positions within the sequence of values derived from genetic information is selected, which, in combination with the genetic information itself, which represents a physical source of inherently random and unpredicted values, generates an unpredicted and truly random numerical output.
[0124] By seeding a pseudorandom number generator with the high-resolution time of the system clock of a computing device, the pseudorandom number output used to select a value from a sequence of values derived from genetic information becomes unpredictable before a request for a random number is received. In this way, the selection of values from unpredictable and random genetic information guarantees randomly generated unpredictable random numbers and ensures that they are truly random and unpredictable before they are generated.
[0125] These methods have been shown to pass a number of random number test suites, including the NIST SP800-22 test suite, the Dieharder test suite, the TestU01 Small Crush test suite, the TestU01 Alphabit test suite, and the TestU01 Rabbit test suite. Considering the amount of genetic information obtained from gene sequencers, the advent of third-generation sequencing technology has enabled whole-genome sequencing to provide personalized medicine. The methods described in this document can provide a potentially infinite source of true random numbers that are easy to generate and maintain as a byproduct without requiring careful hardware verification or a controlled environment to maintain statistical unpredictability.
[0126] Furthermore, since the genetic information used to generate random numbers is easily retained, after each random number is generated, the process of generating that random number is auditable and verifiable. In this process, the original random number can be reproduced by processing the genetic information in the same way. Thus, the random numbers generated by the methods described here cannot be predicted in advance, but once generated, it can be easily verified that they were truly generated by the random number generation method. This may improve the security and integrity of systems that rely on methods for generating random numbers for cryptographic purposes.
[0127] Furthermore, since the genetic information used to generate random numbers is generated rapidly by a gene sequencer, or post-processed to generate reads and stored in large quantities in a biological data store, the methods described herein can be used to rapidly generate true random numbers of any size in large volumes.
[0128] In addition, genetic information generated from organisms may need to be handled confidentially (indeed, keeping genetic information secret prior to random number generation can further enhance its unpredictability), but this can be used as a source of physical randomness for generating true random numbers and for securely verifying subsequent random number generation, without necessarily compromising the confidentiality of the genetic information.
[0129] Accordingly, appropriately processed genetic information can be easily generated and can provide an effectively infinite and verifiable source of reliable true random numbers. Furthermore, using genetic information as a source of physical randomness provides additional valuable technical uses for this information. The methods described herein enable its value to be controlled and exploited technically for cryptographic purposes. This sharing further encourages the provision of biological organism samples for sequencing, accelerates the development and deployment of personalized medicine, and realizes other scientific and therapeutic benefits resulting from obtaining genetic information.
[0130] Features, integers, characteristics, or groups described in connection with a particular aspect, embodiment, or example of the invention are to be understood as applicable to other aspects, embodiments, or examples described herein, unless incompatible. All features (including accompanying claims, abstract, and drawings) disclosed in this specification and / or all steps of any method or process disclosed may be combined in any combination, unless at least some of the features and / or steps are mutually exclusive. The invention is not limited to the details of the foregoing embodiments. The invention extends to any novel one, or a novel combination, of the features disclosed in this specification (including accompanying claims, abstract, and drawings) or any novel one, or a novel combination, of the steps of any method or process disclosed. In particular, dependent claims may be combined with any of the independent claims and other dependent claims.
[0131] In the foregoing detailed description, many of the processing tasks described are related to converting signal information representing a polynucleotide sequence into a base sequence. However, one skilled in the art will understand that the methods and apparatuses described herein are applicable to other types of signal information as well. For example, the signal information may be related to other natural molecules such as proteins and secondary modifications. As another example, the signal information may be related to modified or synthetic molecules such as oligonucleotide tags, nucleic acid analogs, or expanders containing expandable nucleoside triphosphates.
[0132] Each feature disclosed in this specification (including the accompanying claims, abstract, and drawings) can be replaced by alternative features that serve the same, equivalent, or similar purpose, unless explicitly stated otherwise. Thus, unless explicitly stated otherwise, each disclosed function is merely an example of a general series of equivalent or similar functions. This invention is not limited to the details of the foregoing embodiments. This invention extends to any novel one of the features disclosed in this specification (including the accompanying claims, abstract, and drawings), or any novel combination thereof, or any novel one of the steps of any disclosed method or process, or any novel combination thereof. The claims should not be construed as being limited to the foregoing embodiments, and any embodiment falling within the scope of the claims is also included.
Claims
1. A computer-implemented method for generating random numbers based on gene information from a biological data source containing at least gene information sequenced from an organism, the computer-implemented method comprising: by a computing device, when the computing device receives a request for a random number, obtaining a seed value from an entropy source accessible to the computing device; initializing a pseudorandom number generator and determining a pseudorandom number output using the seed; obtaining a sequence of values obtained based on the gene information of an organism from a biological data source accessible to the computing device; selecting a position in the sequence of values obtained from the gene information; reading the value at the selected position in the sequence of values obtained from the gene information; encoding the value into pairs of bits using an encoding scheme; and combining the pairs of bits to provide a bit sequence as a random number. A computer-implemented method.
2. Further comprising selecting the encoding scheme based on the pseudorandom number output. The computer-implemented method according to claim 1.
3. Further comprising transmitting the random number in response to the received request. The computer-implemented method according to claim 1 or claim 2.
4. The random number is the original seed value used to seed the pseudorandom number generator, an additional seed value obtained from an entropy source accessible to the computing device, an identifier of a random number request in the computing device, a user-provided entropy source, a hash of the random number request in the computing device, further comprising hashing one or more of the above, and the computer-implemented method further comprises transmitting the hash in response to the received request. The computer-implemented method according to any one of claims 1 to 3.
5. The entropy source accessible to the computing device is the time of the computing device measured using the system clock of the computing device, and optionally has a sub-microsecond resolution. A computer-implemented method according to any one of claims 1 to 4.
6. When obtaining a sequence of genetic information of an organism from a biological data source accessible by the computing device, randomly selecting the sequence from among a plurality of available sequences of genetic information. A computer-implemented method according to any one of claims 1 to 5.
7. Obtaining a sequence of genetic information from a biological data source, generating a random number using the sequence, and then the sequence of genetic information is not used again and no other different random numbers are generated. A computer-implemented method according to any one of claims 1 to 6.
8. The sequence of values derived from the genetic information of the organism comprises the sequenced bases of the genetic information obtained from the sequencing device. The read value is the base read from a selected base position within the sequence of genetic information, and the encoding scheme encodes the bases into bit pairs. A computer-implemented method according to claim 1.
9. Encoding the bases into bit pairs includes randomly selecting an encoding scheme from a set of available encoding schemes that map the bases to bit pairs, and the random selection may optionally be based on the output of the pseudo-random number generator. A computer-implemented method according to claim 7.
10. The original seed value used when generating a random number with the pseudo-random number generator, The sequence of genetic information used to generate the random number, An indicator of the encoding scheme used to generate the random number, Optionally, additional information hashed together with the random number, And further storing, Said storing enables subsequent verification of the random number and the method used to generate the random number. A computer-implemented method according to any one of claims 1 to 9.
11. Receiving a request to verify the generation of a random number, wherein the request indicates at least one random number to be verified, Obtaining the information used to generate the random number in response to the request, Re-initializing the pseudo-random number generator using the original seed value and generating a pseudo-random number output. Based on the pseudo-random number output, selecting a position within a sequence of values derived from the genetic information used to generate the random number; In a sequence of values generated from genetic information, reading the value at the selected position; Encoding the value into bit pairs using the encoding scheme used to generate the random number, and generating a regenerated random number; Verifying the regenerated random number based on the regenerated random number and a verification request for the generation of the random number; Further comprising; A computer-implemented method according to any one of claims 1 to 10. **Claim 12** When receiving a request for a random number, by a combination of obtaining a seed value from an entropy source accessible to the computing device and selecting a random position from a newly unused sequence of values, ensuring that the random number is not known or predicted before receiving the request for the random number; A computer-implemented method according to any one of claims 1 to 1. **Claim 13** The sequence of values obtained from the genetic information is kept secret and not revealed to those who request the random number or those who request verification of the generation of the random number; A computer-implemented method according to any one of claims 1 to 12. **Claim 14** The biological data source includes a store of biological data stored in the memory of one or more servers, or the biological data source includes a stream of biological data generated by a gene sequencer when processing gene information sequenced from an organism; A computer-implemented method according to any one of claims 1 to 13. **Claim 15** A computing device, One or more processors; A memory storing instructions that, when executed by one or more of the processors, configure the computing device as follows: The instructions cause the computing device to, When receiving a request for a random number in the computing device, obtain a seed value from an entropy source accessible to the computing device; Initialize a pseudo-random number generator and determine a pseudo-random number output using the seed; Obtaining a sequence of values derived based on the genetic information of an organism from a biological data source accessible to the computing device; Selecting a position from among the sequences of values obtained from the genetic information; Reading the value at the selected position in the sequence of values obtained from the genetic information; Encoding the value into bit pairs using an encoding scheme; and Combining the bit pairs to provide a bit sequence as a random number, and causing to execute, a computing device. [
16. ] A non-transitory computer-readable storage medium, the computer-readable storage medium including instructions that, when executed by one or more processors of a computing device, cause the one or more processors to perform the following: The instructions cause the processor to obtain a seed value from an entropy source accessible to the computing device when a request for a random number is received by the computing device; initialize a pseudo-random number generator and determine a pseudo-random number output using the seed; obtain a sequence of values obtained based on the genetic information of an organism from a biological data source accessible to the computing device; select a position from among the sequences of values obtained from the genetic information; read the value at the selected position in the sequence of values obtained from the genetic information; encode the value into bit pairs using an encoding scheme; combine the bit pairs to provide a bit sequence as a random number, and cause to execute, a computer-readable storage medium. [
17. ] A computer-implemented method for verifying a random number generated by the method according to any one of Claims 1 to 14, the computer-implemented method comprising, by a computing device, receiving a request to verify the generation of a random number, the request indicating at least one random number to be verified; obtaining, in response to the request, information used to generate the random number, including obtaining a sequence of values obtained from the genetic information of an organism from a biological data source accessible to the computing device; In a sequence of values obtained from gene information, obtaining the positions selected for generating the random numbers; obtaining the encoding scheme used for generating the random numbers; in a sequence of values generated from gene information, reading the values at the selected positions; encoding the values into bit pairs using the encoding scheme used for generating the random numbers to generate a regenerated random number; and verifying the random number using information based on the regenerated random number. A computer-implemented method comprising: A computer-implemented method. **Claim 18** The obtaining of information used for generating the random numbers comprises at least one of: obtaining a part of the information stored at the location in response to the generation of the random numbers from a data store at a location accessible to the computing device; and obtaining at least some of the information from the received request for verifying the generation of the random numbers. The computer-implemented method according to claim 17. **Claim 19** The obtaining of the positions selected in a sequence of values obtained from gene information comprises: re-initializing the pseudo-random number generator using the original seed value to generate a pseudo-random number output; and selecting a position within the sequence of values derived from the gene information used for generating the random numbers based on the pseudo-random number output. The computer-implemented method according to claim 17 or claim 18. **Claim 20** The obtaining of the encoding scheme used for generating the random numbers comprises: re-initializing the pseudo-random number generator using the original seed value to generate a pseudo-random number output; and selecting the encoding scheme used for generating the random numbers based on the pseudo-random number output. The computer-implemented method according to any one of claims 17 to 19.