Computer-implemented method, apparatus and software for random number generation based on genetic information
By leveraging the genetic information in biological data sources and the output of pseudo-random number generators to generate unpredictable true random numbers, the problem that existing hardware random number generators need a controlled environment when generating true random numbers is solved, and the verifiability and security of random numbers are improved.
Patent Information
- Application Number
- CN202380061738.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-07-12
- Filing Date
- 2023-07-12
- Publication Date
- 2025-04-29
AI Technical Summary
Existing hardware random number generators require a controlled environment and careful calibration when generating true random numbers, and cannot effectively verify the random number generation process, resulting in insufficient in terms of unpredictability and security.
By leveraging genetic information in biological data sources, such as DNA and RNA sequences, combined with the output of the pseudo-random number generator, random positions in the genetic information and encoded as bit strings, an unpredictable true random number is generated.
This method generates high-quality true random numbers without a controlled environment, and provides verifiability and security of random numbers by recording information of the generation process, suitable for cryptography and other applications requiring high randomness.
Smart Images

Figure CN119907963A_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to generating random numbers. In particular, the present disclosure provides methods, apparatus and computer program products for random number generation based on genetic information. Background Art
[0002] Large quantities of random numbers are needed to serve a wide range of technological applications, ranging from games and gambling, statistical modeling to cryptography, such as providing security in the generation of cryptographic keys for the financial and communications industries, among other things. Random number generators are in high demand to be used as a source of random numbers used in these applications.
[0003] Each application usually requires that the numbers provided by the random number generator are truly random, that is, the random numbers it provides are completely unpredictable in their foresight and are no better than random chance. The generated random numbers may also need to conform to a specific distribution and coverage (usually uniformly covering a specified number space).
[0004] In general, the use of pseudo-random number generators may not be sufficient for these applications because they cannot provide truly unpredictable outputs.
[0005] To produce numbers that meet these requirements, random number generators use a core source of "true" randomness, typically a physical source of statistically random and unpredictable noise (such as hardware noise, thermal noise, using quantum phenomena). The signals from these noise sources can then be processed and additional entropy can be added to generate random numbers that meet the requirements of a specific application.
[0006] Typically, 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 idiosyncratic behavior that may make their output less than predictable and, therefore, not truly random. As a result, providing random numbers using these random number generators is not straightforward, and therefore their ability to meet the growing demand for true random numbers in the rapidly expanding Internet, where applications are growing, is unclear.
[0007] Furthermore, these hardware random number generators do not track the core noise source after the random number is generated. Therefore, the process of how the original data produced the random number is neither auditable nor verifiable, so the recipient of the random number may not be able to verify that the number has been generated by a true noise source, which may undermine trust in the random number source and cause security issues in systems that rely on these random number generators as a source of randomness.
[0008] It is under the above background that the present disclosure is designed. Summary of the invention
[0009] From one aspect, the present disclosure provides a computer-implemented method for generating random numbers based on genetic information from a biological data source, the biological data source comprising at least genetic information sequenced from a biological organism, the method comprising, by a computing device: in response to receiving a request for a random number at a computing device, obtaining a seed value from an entropy source accessible to the computing device; initializing a pseudo-random number generator using the seed to determine a pseudo-random output; retrieving a sequence of values derived from the genetic information of the biological organism from the biological data source accessible to the computing device; selecting a position in the sequence of values derived from the genetic information; reading a value in the selected position in the sequence of values derived from the genetic information; encoding the value into a bit pair using a coding scheme; and assembling the bit pairs to provide a bit string as a random number; wherein at least one of selecting the position in the sequence of values derived from the genetic information and selecting the coding scheme is based on the pseudo-random output.
[0010] It has been discovered that by processing a sequence of values derived from genetic information (such as nucleobases obtained by sequencing a deoxyribonucleic acid (DNA) sequence or a ribonucleic acid (RNA) sequence obtained from a biological organism using a gene sequencer) according to the methods described herein, the randomness observed in DNA and RNA sequences can be exploited to generate unpredictable true random numbers. In particular, the output of a pseudo-random number generator (which is seeded with a seed value obtained in response to receiving a request for a random number, the value of which cannot be controlled in advance) is used to select a set of randomized positions in the sequence of values derived from genetic information, the genetic information itself representing a physical source of inherently random and unpredictable values, the two of which are combined to generate an unpredictable true random number output.
[0011] 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. Given the amount of genetic information available from gene sequencers, with the advent of third generation sequencing technology, which has enabled the rise of whole genome sequencing to enable personalized medicine, the methods described herein can provide as a byproduct a potentially unlimited source of true random numbers that are easy to generate and maintain without the need for careful hardware validation or a controlled environment to maintain statistical unpredictability.
[0012] Furthermore, because the genetic information used to generate the random numbers is easily retained, after each random number is generated, the process by which the random number was generated can be audited and verified by a process in which the random number can be recreated by processing the genetic information in the same manner as the original random number was recreated. In this way, although the random number generated by the method described herein is unpredictable in advance, after it is generated, it can be easily verified that it has indeed been generated by the method described in this application. This can improve the security and integrity of systems that rely on methods for generating random numbers for cryptographic purposes.
[0013] Furthermore, since the genetic information used to generate random numbers is quickly generated by a gene sequencer or through post-processing to generate reads, and can be retained in large quantities in biological data storage, the method described in this article can be used to quickly generate a large number of true random numbers of arbitrary size.
[0014] Furthermore, although genetic information generated from biological organisms may need to be kept confidential (and in fact, keeping the genetic information confidential at least until random numbers are generated can further enhance its unpredictability), it can be used both as a source of physical randomness for generating true random numbers and for securely verifying the generation of random numbers after the fact without compromising the secret nature of the genetic information.
[0015] Thus, when properly processed, genetic information can provide an effectively infinitely verifiable source of easily generated, reliable true random numbers. Furthermore, the use of genetic information as a physical source of randomness provides further valuable technical uses of this information, where the methods described herein allow values to be controlled and it is technically used for cryptographic purposes, and its sharing can further incentivize the provision of biological organism samples for sequencing, thereby accelerating the development and deployment of personalized medicines, as well as other scientific and therapeutic benefits realized through the capture of genetic information.
[0016] In an embodiment, the method may further include sending a random number in response to the received request.
[0017] In an embodiment, the method may further include hashing the random number with one or more of: an original seed value used to seed a pseudo-random number generator; a further seed value obtained from an entropy source accessible to the computing device; an identifier for requesting the random number at the computing device; a user-supplied entropy source; requesting a hash of the random number at the computing device; the method also includes sending the hash in response to the received request. Hashing the true random number and some information used in generating the random number allows the generated hash to also be truly random and unpredictable, while also hiding the original random number generated from the genetic information. This can further help preserve the secret nature of the genetic information selected for generating the random number, and it can also be useful to verify that the random number is useful after it has been generated, thereby establishing further evidence that the random number has been generated using the method.
[0018] In an embodiment, the entropy source accessible to 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 sub-microsecond resolution. In other embodiments, the system clock may provide time with nanosecond resolution. The pseudo-random number generator is seeded with the time of the system clock of the computing device at such a high resolution that the pseudo-random output used to select a value from a sequence of values derived from genetic information is unpredictable before a request for a random number is received. In this way, values are unpredictably and randomly selected from unpredictable and random genetic information, which ensures that the generated random numbers are truly random and unpredictable before the number is generated.
[0019] In an embodiment, retrieving a sequence of genetic information of a biological organism from a biological data source accessible to a computing device may include: randomly selecting a sequence of genetic information from a plurality of available genetic information sequences retrieved from the biological data source. In this manner, randomly selecting from the available genetic information sequences when generating the random number further enhances the unpredictability of the random number generated by selecting a value from a random position in the randomly selected sequence.
[0020] In an embodiment, after retrieving a genetic information sequence from a biological data source and using the sequence to generate a random number, the genetic information sequence may no longer be used to generate another different random number. By using each sequence only once and avoiding its reuse, the unpredictability of the random numbers generated by the method is further enhanced. This can be achieved by marking a simple mark in a field in the biological data source, which indicates that a specific sequence has been used to generate a random number, wherein the method includes selecting a sequence only from those sequences that have not yet been used to generate a random number.
[0021] In an embodiment, the sequence of values of the genetic information derived from a biological organism may include the sequencing bases of the genetic information obtained from a sequencing device. The value read may be the base read from the selected base position in the genetic information sequence, and the encoding scheme encodes the base as a bit pair. In this way, for example, the output of a third-generation gene sequencer (which is processed by a "base recognition" method to sequence the nucleobases in the DNA or RNA in a sample from a biological organism) can be used to generate true random numbers. The sequence for generating random numbers can be retrieved from storage, or they can be used when it is generated in real time by a gene sequencer or output by a subsequent "base recognition" process.
[0022] Since there are four identifiable nucleobases (adenine ("A"), cytosine ("C"), guanine ("G"), and thymine ("T")), each nucleobase can be mapped to one of four different bit pairs using a suitable encoding scheme (e.g., A: 00, C: 01, G: 10, and T: 11), where 24 different encoding schemes are possible due to the number of permutations of mapping the four nucleobases to the four bit pairs. In an embodiment, encoding the bases into bit pairs using the encoding scheme may include randomly selecting the encoding scheme from a set of available encoding schemes that map the bases to bit pairs. In an embodiment, the random selection may be based on the output of a pseudo-random number generator. Randomly selecting the encoding scheme from a plurality of available encoding schemes based on the pseudo-random output may provide an alternative or further mechanism for making the generated random numbers unpredictable.
[0023] In an embodiment, the method may also include storing at least one of the following information items used to generate the random number for subsequent use in verifying the generation of the random number: an original seed value used to seed a pseudo-random number generator in the generation of the random number; a sequence of genetic information used to generate the random number; an indication of a coding scheme used to generate the random number; the random number; optionally, any additional information hashed with the random number; the storage enables later verification of the random number and the method used to generate the random number. The information may be stored in a data store accessible to a computing device used to generate the random number and a user computing device that receives the generated random number and wishes to verify it. At least some of the above information items may also be sent to a recipient of the random number (or the random hash generated therefrom) to allow the user computing device to use some of the information to verify that the random number has been generated by a true random number generation process.
[0024] In an embodiment, the method may further include: receiving a request to verify the generation of a random number, the request at least indicating that the random number is to be verified; in response to the request, retrieving information for generating the random number; reinitializing the pseudo-random number generator with the original seed value to generate a pseudo-random output; based on the pseudo-random output, selecting a position in a sequence of values derived from genetic information for generating random numbers; reading a value in a selected position in a sequence of values derived from genetic information for generating random numbers; encoding the value into a bit pair using an encoding scheme for generating random numbers to generate a recreated random number; verifying the random number based on the recreated random number and the request for verifying the generation of the random number. In this way, the random number can be verified to have been generated using a method that provides unpredictable true random numbers when generating true random numbers. This can be achieved by using a stored seed of the pseudo-random number generator and a sequence of values derived from genetic information for generating random numbers, and the random number can be recreated. Alternatively, instead of reseeding the pseudo-random number generator with the original seed, the position of the value selected from the sequence of values derived from genetic information can be stored, and the position is used to recreate the random number. The verification process itself may be performed by the same computing system that generates the random numbers, or, if desired, by any computing system that has access to the information used to generate the random numbers, and, if desired, by the same pseudo-random number generator.
[0025] In an embodiment, in response to receiving a request for a random number, the combination of obtaining a seed value from an entropy source accessible to the computing device and selecting a random position from a new and previously unused sequence of values derived from genetic information randomly selected from a biological data source ensures that the random number cannot be known or predicted before the request for the random number is received.
[0026] In an embodiment, the sequence of values derived from the genetic information can be kept confidential and not disclosed to a requestor of a random number or a requestor verifying the generation of a random number. In this way, although the genetic information used to generate the random number can be kept confidential to maintain privacy, it can still be used to generate a true random number and verify the generation of a true random number.
[0027] In embodiments, the biological data source may include a store of biological data stored in a memory of one or more servers, or wherein the biological data source includes a stream of biological data generated by a genetic sequencer as it is processing genetic information sequenced from a biological organism. Thus, the random numbers may be generated "on the fly" during a sequencing workflow, or by processing previously sequenced genetic information stored in a data store (e.g., a server).
[0028] From one aspect, the present disclosure provides a computing device comprising: one or more processors; and a memory storing instructions, which when executed by the one or more processors configure the device to: in response to receiving a request for a random number at the computing device, obtain a seed value from an entropy source accessible to the computing device; initialize a pseudo-random number generator using the seed to determine a pseudo-random output; retrieve a sequence of values derived from genetic information of a biological organism from a biological data source accessible to the computing device; select a position in the sequence of values derived from the genetic information; read the value in the selected position in the sequence of values derived from the genetic information; encode the value into a bit pair using a coding scheme; and assemble the bit pairs to provide a bit string as a random number; wherein the computing device is also configured by the instructions to select at least one of the following based on the pseudo-random output: a position in the sequence of values derived from the genetic information; the coding scheme.
[0029] From one aspect, the present disclosure provides a non-transitory computer-readable storage medium, which includes instructions that, when executed by one or more processors of a computing device, cause the one or more processors to: in response to receiving a request for a random number at the computing device, obtain a seed value from an entropy source accessible to the computing device; use the seed to initialize a pseudo-random number generator to determine a pseudo-random output; retrieve a sequence of values derived from genetic information of a biological organism from a biological data source accessible to the computing device; select a position in the sequence of values derived from the genetic information; read the value in the selected position in the sequence of values derived from the genetic information; encode the value into a bit pair using a coding scheme; and assemble the bit pairs to provide a bit string as a random number; wherein the instructions also configure the one or more processors to select at least one of the following based on the pseudo-random output: a position in the sequence of values derived from the genetic information; the coding scheme.
[0030] From one aspect, the present disclosure provides a computer-implemented method for verifying a random number generated by the method described herein, comprising, by a computing device: receiving a request to verify the generation of a random number, the request at least indicating that the random number is to be verified; in response to the request, retrieving information for generating the random number, including retrieving a sequence of values derived from genetic information of a biological organism from a biological data source accessible to the computing device; obtaining a selected position in the sequence of values derived from the genetic information for generating the random number; obtaining a coding scheme for generating the random number; reading a value in the selected position in the sequence of values derived from the genetic information for generating the random number; encoding the value into a bit pair using the coding scheme for generating the random number to generate a recreated random number; and verifying the random number using information based at least on the recreated random number.
[0031] In an embodiment, retrieving information for generating a random number may include at least one of: retrieving at least some information from a data store at a location accessible to the computing device, the information having been stored at the location in response to the generation of the random number; retrieving at least some information from a received request for verifying the generation of the random number.
[0032] In an embodiment, obtaining a selected position in a sequence of values derived from genetic information for generating random numbers may include: reinitializing a pseudo-random number generator with an original seed value to generate a pseudo-random output; and selecting a position in the sequence of values derived from genetic information for generating random numbers based on the pseudo-random output.
[0033] In an embodiment, obtaining the encoding scheme for generating random numbers may include: reinitializing a pseudo-random number generator with an original seed value to generate a pseudo-random output; and selecting the encoding scheme for generating random numbers based on the pseudo-random output.
[0034] From one aspect, the present disclosure provides a computing device including a method for verifying a random number generated by the methods described herein, the computing device including: one or more processors; and a memory storing instructions, which when executed by the one or more processors configures the device to: receive a request to verify the generation of a random number, the request at least indicating that the random number is to be verified; in response to the request, retrieve information for generating the random number, including retrieving a sequence of values derived from genetic information of a biological organism from a biological data source accessible to the computing device; obtaining a selected position in the sequence of values derived from the genetic information for generating the random number; obtaining a coding scheme for generating the random number; reading a value in the selected position in the sequence of values derived from the genetic information for generating the random number; encoding the value into a bit pair using the coding scheme for generating the random number to generate a recreated random number; and verifying the random number using information based at least on the recreated random number.
[0035] From one aspect, the present disclosure provides a non-transitory computer-readable storage medium, the computer-readable storage medium including instructions for verifying a random number generated by a method described herein, the instructions, when executed by one or more processors of a computing device, causing the one or more processors to: receive a request to verify the generation of a random number, the request at least indicating that the random number is to be verified; in response to the request, retrieve information for generating the random number, including retrieving a sequence of values derived from genetic information of a biological organism from a biological data source accessible to the computing device; obtaining a selected position in the sequence of values derived from the genetic information for generating the random number; obtaining a coding scheme for generating the random number; reading a value in the selected position in the sequence of values derived from the genetic information for generating the random number; encoding the value into a bit pair using the coding scheme for generating the random number to generate a recreated random number; and verifying the random number using information based at least on the recreated random number.
[0036] According to the teachings described herein, those skilled in the art to which these inventions belong will think of many modifications and other embodiments of the inventions proposed herein. Therefore, it will be understood that the disclosure herein is not limited to the specific embodiments disclosed herein. In addition, although the description provided herein provides example embodiments in the context of certain combinations of elements, steps and / or functions, it may be provided by alternative embodiments without departing from the scope of the invention. BRIEF DESCRIPTION OF THE DRAWINGS
[0037] Specific embodiments of the present invention will now be described, by way of example only, with reference to the accompanying drawings, in which:
[0038] Figure 1 An example system of an embodiment of a device including a gene sequencer and a computing device for generating a random number based on genetic information sequenced from a biological organism by the gene sequencer according to aspects of the present disclosure is shown;
[0039] Figure 2 FIG. 1 shows a diagram of a graph according to an embodiment of the present disclosure. Figure 1 A graph of current data output over time of a gene sequencer is shown, the graph illustrating an example sequence of values for generating random numbers derived from genetic information;
[0040] Figure 3 The embodiment according to the present disclosure shows Figure 2 Data of a nucleobase sequence identified in the processing of the current data shown, which sequence can be used as a sequence of values derived from genetic information for generating random numbers;
[0041] Figure 4 Shown as Figure 1 A block diagram of an embodiment of a computing device for a random number generator is shown;
[0042] Figure 5 An embodiment of a method for generating random numbers according to aspects of the present invention is shown. Figure 4 The illustrated embodiment of the computing device is implemented;
[0043] Fig. 6A Shown is a method for implementing Figure 5 Example code for an example method shown for seeding and using a pseudo-random number generator to generate a random number from Figure 3 Selecting and encoding values from the base sequence derived from the genetic information shown to generate a random number;
[0044] Figure 6B Shows Fig. 6A The output of the example code shown here is used to produce Figure 3 Sixteen randomly selected positions in the base sequence derived from the genetic information shown, and Figure 8 Select an encoding scheme from the available schemes shown;
[0045] Figure 7 The use of aspects according to the present disclosure is shown Figure 6B The randomly selected positions shown are generated from Figure 3 The bases are selected from the data shown to be used to generate random numbers;
[0046] Figure 8 A table illustrating 16 of the 24 available encoding schemes for encoding nucleobases into bit pairs is shown;
[0047] Fig. 9 The invention shows the use of the invention according to the aspects of the present disclosure. Figure 6B Shown from Figure 8 The encoding scheme selected in the table shown will Figure 7 A table in which sixteen randomly selected bases are encoded as random numbers represented by a 32-bit bit string;
[0048] Fig.10 An example message for sending a generated random number in response to a request to generate a random number according to aspects of the present disclosure is shown;
[0049] Fig.11A Shown is the Figure 5 The random number generation method shown and Fig.12 Example code for generating a hash of a random number using the random number verification method shown;
[0050] Fig. 11B shows an example output of hashing a recreated random number according to Fig.12 The method shown generates and uses Fig.11A to verify the original generated hashed random number; and
[0051] Fig.12 An embodiment of a method for verifying a random number according to aspects of the present disclosure is shown. DETAILED DESCRIPTION
[0052] 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 changes and / or equivalents or replacements thereto also belong to the scope of the present disclosure. Throughout the specification and the accompanying drawings, the same or similar reference numerals may be used to refer to the same or similar elements.
[0053] As used herein, the terms “having”, “may have”, “include” or “may include” a feature (e.g., a number, a function, an operation or a component (such as a part)) indicate the presence of the feature and do not exclude the presence of other features.
[0054] As used herein, the terms "A or B", "at least one of A and / or B", or "one or more of A and / or B" may include all possible combinations of A and B. For example, "A or B", "at least one of A and B", or "at least one of A or B" may indicate all of the following: (1) including at least one A, (2) including at least one B, or (3) including at least one A and at least one B.
[0055] As used herein, the terms "first" and "second" may modify various components, regardless of their importance, and do not limit the components. These terms are only used to distinguish one component from another component. For example, a first user device and a second user device may indicate user devices that are different from each other, regardless of the order or importance of the devices. For example, without departing from the scope of the present disclosure, a first component may be represented as a second component, and vice versa.
[0056] It will be understood that when an element (e.g., a first element) is referred to as being (operably or communicatively) "coupled with / to another element (e.g., a second element)" or "connected with / to another element," it may be coupled or connected with / to another element directly or via a third element. In contrast, it will be understood that when an element (e.g., a first element) is referred to as being "directly coupled with / to another element (e.g., a second element)" or "directly connected with / to another element," no other element (e.g., a third element) is interposed between the element and the other element.
[0057] As used herein, the term "configured (or arranged) to" may be used interchangeably with the terms "suitable for," "capable of," "designed to," "suitable for," "manufactured to," or "capable of," depending on the context. The term "configured (or arranged) to" does not inherently mean "specially designed in hardware to ..." Instead, the term "configured to" may mean that a device can perform an operation together with another device or part.
[0058] For example, the term “a processor configured (or set) to perform A, B, and C” may mean a general-purpose processor (e.g., a CPU or application processor) that performs operations by executing one or more software programs stored in a memory device, or a special-purpose processor (e.g., an embedded processor) for performing operations.
[0059] The terms used herein are provided only for describing some embodiments thereof, rather than limiting the scope of other embodiments of the present disclosure. It will be understood that the singular forms "one", "an" and "the" include plural references unless the context clearly indicates otherwise. All terms used herein (including technical and scientific terms) have the same meanings as those of ordinary skill in the art to which the embodiments of the present disclosure belong. It will also be understood that terms (such as those defined in commonly used dictionaries) should be interpreted as having meanings consistent with their meanings in the context of the relevant art, and will not be interpreted in an idealized or overly formal sense, unless clearly defined herein. In some cases, the terms defined herein may be interpreted as excluding embodiments of the present disclosure.
[0060] Figure 1 An example system 100 of connected devices for generating random numbers based on genetic information according to aspects of the present disclosure is shown.
[0061] The system 100 includes a gene sequencer 102 for extracting genetic information from a sample tube 108 containing polynucleotide chains from a biological organism 104 (in this case, a human subject). That is, the sample tube 108 can contain a sample of DNA or RNA from the biological organism 104 that is appropriately prepared for sequencing by the gene sequencer 102.
[0062] The gene sequencer 102 provides output data including the genetic information contained in the sample tube 108 to a base recognition computing device 118, which is used to process the genetic information through "base recognition" to generate one or more sequencing bases. Figure 1As shown, alternatively or additionally, the gene sequencer 102 provides output data including the genetic information contained in the sample tube 108 to a random number generator computing device 106, which can instead be used to process the genetic information through "base recognition" to generate one or more sequencing bases. As will be explained herein, the random number generator computing device 106 is used to generate random numbers using a sequence of values derived from the genetic information.
[0063] In this embodiment, the example gene sequencer 102 shown represents a third generation nanopore sequencer, such as those available from Oxford Nanopore Technologies (https: / / nanoporetech.com / ). However, the genetic information used to generate random numbers in the random number generator computing device 106 can come from any suitable source and is not limited to such sequencing technology, and can use genetic information provided by a second sequencer, as well as value sequences derived from genetic information provided in any suitable form, such as base sequences from biological organisms.
[0064] In the gene sequencer 102, a transmembrane pore 110 (e.g., a nanopore) is used as an electrical biosensor for sensing genetic information in the form of a polynucleotide sequence in a DNA or RNA chain from a biological sample contained in a sample tube 108. Such transmembrane pores 110 can be used to identify small molecules or folded proteins, and to monitor chemical or enzyme reactions at approximately the single-molecule level by sending an ion flow through the transmembrane pore 110 (e.g., when a DNA / RNA chain passes through the pore). When the analyte is displaced through the nanopore, the interaction of the analyte with the transmembrane pore 110 causes a characteristic change in the ion flow (e.g., a characteristic current distribution). That is, the ion flow (e.g., electron flow / current) through the transmembrane pore 110 can be measured under a potential difference applied across the transmembrane pore 110.
[0065] Figure 2 The top of the figure shows a graph of an example of raw data output 200 of the gene sequencer 102 over time, with details of some of the data 202 shown below. As can be seen, the figure shows the raw data output 200 in the form of ion flow / current signal information, which is a characteristic of the analyte passing through the transmembrane pore 110.
[0066] For example, when a polynucleotide chain such as DNA passes through the transmembrane pore 110, the nucleobases of the DNA (i.e., adenine (A), cytosine (C), guanine (G), and thymine (T)) passing through the transmembrane pore 110 produce a characteristic current distribution resulting therefrom, which depends on the combination of 4 to 5 nucleobases that are part of the DNA chain passing through the sequencer at any given moment. Figure 2This produces a current signal that drops to different levels that change as each base leaves the pore and as new bases enter from the top, as shown in the raw data output 200 in FIG. 1 . The interpretation of the current changes can be decoded to infer the sequence of nucleobases on the DNA strand through a process called “base recognition.” The results of base recognition give predictions of the recognized bases 204 for different segments of raw data, as shown in FIG. Figure 2 Details 202 of a portion of the raw data output 200 shown in the bottom pane are shown superimposed above.
[0067] It can be seen that the signal information generated by the gene sequencer (nanopore sequencer or other) is usually very noisy due to, for example, electrical and environmental interference. In addition, the signal measured by the current passing through the hole reflects the presence of 4 to 5 nucleotides in the hole, which are part of the DNA chain. Therefore, the task of performing base recognition to determine the polynucleotide sequence (i.e., determining the "read segment") from the signal information in the raw data output 200 is a computationally intensive task, which usually needs to be processed by an artificial neural network to analyze the raw data output 200. Therefore, in order to determine the nucleobase in the raw data, it is necessary to use a generally computationally intensive process (such as a deep neural network) to process the raw data output 200 by base recognition to provide a prediction of the nucleobase that generated the raw data.
[0068] Thus, the raw data output 200 performed by the gene sequencer 102 can be passed to a suitable computing device for base recognition, such as the base recognition computing device 118 (or the random number generator computing device 106 if it is also configured to perform base recognition), to determine the nuclear base sequence of the DNA / RNA molecules in the sample tube 108, and the resulting base genetic sequence can be stored in a server 114 accessible via the Internet 112, or otherwise passed directly to the random number generator computing device 106 for subsequent use in the generation of random numbers.
[0069] Once a DNA / RNA read has been created by base calling, the base calling computation device 118 (or the random number generator computation device 106 if it is also configured to perform base calling) may store the read nucleobase sequence in a suitable standard data structure, such as FAST5 or other formats, such as Figure 3 as shown in the example.
[0070] like Figure 3As shown, the base call data 300 for a read includes a header 302 indicating an identifier (in this example this is "@5d08ebdf-4b02-45bf-ac72-8e5716ca468d") and a run identifier (in this example "runid=3b55a2b916b3c56c641a45f4898b156692a08534"), as well as further information about the sample, read size, start time, etc. The base called reads are then stored in a payload showing a nucleobase sequence 304 arranged in the example as adjacent sequenced base pairs, 16 pairs per row, until the last (Nth) base pair reaches the end of the read.
[0071] Base call data 300 represents a sequence of base values derived from genetic information, which may be sent by base call computing device 118 via Internet 112 to server 114, which may store base call data 300 for later retrieval, such as by random number generator computing device 106. Base call data for all reads from sample tube 108 may be sent by base call computing device 118 to server 114.
[0072] Alternatively or additionally, the base recognition computing device 118 (or the random number generator computing device 106, if it is also configured to perform base recognition) can pass the raw data output 200 through the gene sequencer 102 to the server 114 via the Internet 112, and the server 114 can store the raw data output 200 performed by the gene sequencer 102 for later base recognition processing by one or more other computing devices. In this case, the base recognition computing device 118 or the random number generator computing device 106 can perform the base recognition process at a later time. The base recognition computing device 118 itself can act as a server or one or more servers 114.
[0073] The random number generator computing device 106 may receive a request for a random number at any time after the base recognition computing device 118 (or the random number generator computing device 106 if it is also configured to perform base recognition) has received and processed the raw data output 200 from the genetic sequencer 102 and stored the raw data output 200 and / or the base recognition data 300 in the server 114. Alternatively, where the random number generator computing device 106 is configured to receive and process the raw data output 200 from the genetic sequencer 102, the random number generator computing device 106 may receive a request for a random number while the genetic sequencer 102 is reading out to the random number generator computing device 106, or thereby while the raw data output 200 is being handled and base recognized.
[0074] Now refer to Figure 4 and Figure 5 1 and 10. The method 500 is used to describe how the random number generator computing device 106 generates a random number based on genetic information in response to a request for a random number.
[0075] Figure 4 Shown as Figure 1 A block diagram of an embodiment of a computing device of the random number generator computing device 106 is shown.
[0076] 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) supporting communications between the at least one processor 404, the memory 402, and the input / output module 408 may be provided.
[0077] Processor 404 executes instructions that may be loaded into memory 402. Processor 404 may include any suitable number and type of processors or other devices in any suitable arrangement. Example types of processors include microprocessors, microcontrollers, digital signal processors, field programmable gate arrays, and application specific integrated circuits.
[0078] The memory 402 may be provided by any one or more structures capable of storing and facilitating retrieval of information, such as data, program code, and / or other suitable information on a temporary or permanent basis. The memory 402 may represent a random access memory or any other suitable one or more volatile or non-volatile storage devices. The memory 402 may also include one or more components or devices that support long-term storage of data, such as a read-only memory, a hard drive, a flash memory, or an optical disk, which may store software code for loading into the memory 402 at runtime. When in use, the processor 404 and the memory 402 provide a runtime environment 406 in which instructions or code loaded into the memory 402 may be executed by the processor 404 to generate instances of software modules in the runtime environment 406.
[0079] The random number generator computing device 106 also includes an input / output module 408, which provides a communication interface for receiving data from one or more servers 114, user computing devices 116 and base recognition computing devices 118 via the Internet 112, and receiving data from one or more of the genetic sequencers 102 while providing a data connection with the genetic sequencer.
[0080] Despite Figure 1Although shown as a standalone computing device, the random number generator computing device 106 may be configured as a networked server (which may be part of one or more servers 114) or a virtual machine implemented in a cloud computing service, either of which may be suitable for performing the random number generation and verification methods described herein.
[0081] refer to Figure 5 An embodiment of a method 500 for generating a random number according to aspects of the present invention will now be described. Figure 4 The random number generator computing device 106 shown in the embodiment is implemented. Fig. 6A , Figure 6B , Figure 7 , Figure 8 , Fig. 9 and Fig.10 , these figures provide examples of implementing certain steps of method 500 using Python code.
[0082] To implement the method 500, the memory 402 of the random number generator computing device 106 includes instructions that, when executed by the 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 may be executed together. Figure 5 The method 500 shown is for generating random numbers based on genetic information from a biological data source, the biological data source comprising at least genetic information sequenced from a biological organism. Although the above-mentioned functional elements for implementing the method 500 are shown as modular software, this is only for ease of understanding, and the specific implementation of the method 500 in the memory 402 of the random number generator computing device 106 can be implemented in any suitable manner. In addition, although the following description of the method 500 and the method 1200 describes the actions performed in the method as steps, this is not intended to be limiting in any way, and it should be understood that the steps can be performed in an order different from the order described below, or some steps can be performed in parallel.
[0083] In method 500, in step 502, in response to receiving a request for a random number at 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 the user computing device 116, although the user computing device 116 may be at Figure 1106, but may be configured as a networked server or a virtual machine implemented in a cloud computing service. A user computing device 116 may request the provision of true random numbers, for example, for use in generating cryptographic keys for cryptographic security protocols. The request for a random number may be received at the input / output module 408 via the Internet 112, and it may be sent directly by the user computing device 116 to the random number generator computing device 106, or it may be routed to the random number generator computing device 106 by a random number generator service proxy server that manages the provision of random number generation as a service to multiple user computing devices 116 on the Internet 112.
[0084] The entropy source may be an entropy source 412, which may provide a seed value from an entropy source provided locally to the random number generator computing device 106, or it may access an entropy source remote from the random number generator computing device 106, for example via the 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 a system clock of the computing device. The system clock may provide time with sub-microsecond resolution or even higher resolution, such as nanosecond resolution.
[0085] Fig. 6A The acquisition of the seed value is shown in FIG. Figure 5 Example code for an example method shown in , which is used to seed a pseudo - random number generator and use a pseudo - random number generator from Figure 3 The values are selected from the base sequence derived from the genetic information shown and encoded to generate random numbers. In particular, the following Python code imports the time library and captures the value of the system performance counter in nanoseconds in response to receiving a request for a random number as an integer value suitable for use as a seed.
[0086] import time
[0087] time_ns=time.perf_counter_ns()
[0088] The results of this step can be found in Figure 6B As seen in the example shown, the example shows that in this case the seed is generated from the system time as the entropy source, as follows:
[0089] Seed(performance counter)=32888750
[0090] Then, in step 504, the method 500 proceeds by initializing the pseudo-random number generator using the seed to determine a pseudo-random output. Here, once initialized with the seed value, the pseudo-random number generator 414 can be used to generate a series of random numbers. It should be noted that when the same pseudo-random number generator is initialized with the same seed, it will always generate the same series of random numbers. Fig. 6A In the example Python code shown, the random library is imported and a pseudo-random number generator 414 is initialized using a seed value generated from the system time as an entropy source 412, as follows:
[0091] import random
[0092] random.seed(time_ns)
[0093] like Figure 4 As shown, the sequence data selector 410 may receive a request for a random number, and then operate the entropy source 412 and the pseudo-random number generator 414 to obtain a seed value, and use it to initialize the pseudo-random number generator 414. Alternatively, the entropy source 412 may be directly accessed or operated by the pseudo-random number generator 414 to obtain the seed value (and it may not be accessible or operated by the sequence data selector 410 or the sequence data encoder 416).
[0094] In step 506, method 500 proceeds by retrieving a sequence of values derived from genetic information of a biological organism from a biological data source accessible to a computing device, which may be, for example, server 114. Sequence data selector 410 may access the biological data source to obtain a sequence of values derived from genetic information.
[0095] In the example described in detail herein, the sequence of values derived from the genetic information of a biological organism used to generate the random number in method 500 includes sequenced bases of the genetic information obtained from a gene sequencer, such as Figure 3 Base recognition data 300 shown in . In this way, for example, the output of a third generation gene sequencer is processed by a "base recognition" method to sequence the nucleobases in the DNA or RNA in a sample from a biological organism, and the output can be used to generate true random numbers. The sequences used to generate random numbers can be retrieved from storage, or they can be used when they are generated in real time by the gene sequencer or output by a subsequent "base recognition" process.
[0096] Alternatively or additionally, the sequence of values derived from genetic information of a biological organism used to generate random numbers in method 500 may include raw data output from a gene sequencer, such as Figure 2The raw data output 200 shown. To this end, the raw data output 200 received from the gene sequencer is in the form of regularly sampled current levels (e.g., sampled when the current flows below a threshold level, which corresponds to the analyte passing through the transmembrane pore 110), which itself can provide such a sequence of values derived from genetic information for generating random numbers. In other ways, the raw data output 200 of the current level of noise variation can be used.
[0097] In the illustrative examples described herein, FIG. 6A to FIG. 11B right Figure 3 The base identification data 300 shown operates because it has been base identified in the random number generator computing device 106 to generate a random number. However, in an embodiment, retrieving a value sequence for generating a random number derived from genetic information can include randomly selecting a value sequence derived from genetic information from a plurality of available value sequences derived from genetic information that can be retrieved from a biological data source. That is, the selection of the base identification data 300 can be a random selection made among a large number of different value sequences derived from genetic information available from the random number generator computing device 106, which are in the data stream obtained from the gene sequencer 102, or from the base identification process, or from the biological data source database on the server 114. The available different value sequences derived from genetic information can come from different reads of the same polynucleotide sequence, or from different polynucleotide sequences of the same or different biological organisms. Randomly selecting a value sequence derived from genetic information from a large amount of available genetic information further promotes the generation of true random numbers. The random selection of the value sequence derived from genetic information can be based on the pseudo-random output of the pseudo-random number generator 414.
[0098] In an embodiment, after retrieving the sequence of genetic information from a biological data source and using the sequence to generate a random number, the sequence of the genetic information can no longer be used to generate another different random number. That is, in an example, once base recognition data 300 has been used to generate a random number, it can no longer be used. By using each sequence only once and avoiding its reuse, the unpredictability of the random number generated by the method is further enhanced. This can be achieved by indicating a simple mark in a field in a biological data source, which indicates that a particular sequence has been used to generate a random number, wherein the method includes selecting a sequence only from those sequences that have not yet been used to generate a random number.
[0099] In step 508, method 500 is carried out by selecting a position in a sequence of values derived from genetic information by sequence data selector 410. In an example, in the case where the selection of a coding scheme is based on a pseudo-random output, and / or wherein the selection of a sequence of values derived from genetic information is based on a pseudo-random output, the selection of a position in a sequence of values derived from genetic information need not be random. In other words, continuous values in a sequence of values derived from genetic information starting at a predefined position can be selected. For example, if 16 base values are needed to generate a 32-bit random number, then if the base identification data 300 itself has been randomly selected, and / or if the coding scheme will be randomly selected, then the first bases 0 to 15 can be selected from the base identification data 300. Alternatively, a fixed position pattern can be used.
[0100] Alternatively, to further enhance the unpredictability of random number generation, the selection of positions in the sequence of values derived from the genetic information may be based on a pseudo-random output. This may occur where the selection of the encoding scheme may or may not be random and based on a pseudo-random output, and / or where the selection of the sequence of values derived from the genetic information may or may not be random and based on a pseudo-random output.
[0101] In an example, the selection of positions may follow a predefined pattern, or a randomly selected one of a set of possible predefined patterns, and the predefined pattern may start from a randomly selected position in the sequence of values derived from the genetic information based on the pseudo-random output of the pseudo-random number generator 414.
[0102] In other examples and regarding Figure 7 As shown, the selection of positions may be individually randomized, with each position selection being based on a different pseudo-random output from the pseudo-random number generator 414 .
[0103] In About Fig. 6A , Figure 6B and Figure 7 In the example shown, to generate a 32-bit true random number, sixteen random positions are randomly selected in the range of 0 to a maximum number of bases (e.g., which can be as high as the length of the sequence data, or selected from a smaller number of bases, such as 128 bases) through a series of sixteen different pseudo-random outputs from an initialized pseudo-random number generator 414, each random position representing a selection of a single base value in the base identification data 300.
[0104] like Fig. 6A As shown, after the pseudo-random number generator 414 is initialized with a seed value, sixteen pseudo-random outputs numbered between 0 and the sequence length are generated from the pseudo-random number generator 414 using the following code:
[0105] int(random.uniform(0,max_base_number))
[0106] The function random.uniform returns a random number that is guaranteed to have a uniform distribution within the specified range. Figure 6B As shown, sixteen example base positions randomly selected by the pseudo-random number generator 414, which is initialized with a seed value of 32888750 and is set to select up to max_base_number, which is 127, are as follows:
[0107] Base selection 1=18
[0108] Base selection 2=41
[0109] Base selection 3=3
[0110] Base selection 4=25
[0111] Base selection 5=32
[0112] Base selection 6=30
[0113] Base selection 7=48
[0114] Base selection 8=103
[0115] Base selection 9=13
[0116] Base selection 10=89
[0117] Base selection 11=4
[0118] Base selection 12=99
[0119] Base selection 13=33
[0120] Base selection 14=32
[0121] Base selection 15=55
[0122] Base selection 16=45
[0123] It should be noted that these sixteen values will always be output by the pseudo-random number generator 414 after being initialized with the seed value 32888750.
[0124] In step 510, method 500 proceeds to read the base value in the selected position in the sequence of genetic information. That is, no matter how the position is selected, the value in the value sequence derived from the genetic information will be read. Figure 7 In the example shown, use Figure 6B The sixteen base positions randomly selected by the pseudo-random number generator 414 are shown to read the following sixteen bases 1 to 16 from the base identification data 300:
[0125] 702a:Base 1(read from random base selection position 18)=C
[0126] 702b:Base 2(read from random base selection position 41)=C
[0127] 702c:Base 3(read from random base selection position 3)=A
[0128] 702d:Base 4(read from random base selection position 25)=G
[0129] 702e:Base 5(read from random base selection position 32)=A
[0130] 702f:Base 6(read from random baseselection position 30)=T
[0131] 702g:Base 7(read from random base selection position 48)=T
[0132] 702h:Base 8(read from random base selection position 103)=C
[0133] 702i:Base 9(read from random base selection position 13)=T
[0134] 702j:Base 10(read from random base selection position 89)=A
[0135] 702k:Base 11(read from random base selection position 4)=T
[0136] 702l:Base 12(read from random base selection position 99)=A
[0137] 702m:Base 13(read from random base selection position 33)=T
[0138] 702n:Base 14(read from random base selection position 32)=A
[0139] 702o:Base 15(read from random base selection position 55)=T
[0140] 702p:Base 16(read from random base selection position 45)=G
[0141] This is Fig. 9 , which shows a summary table of random number generation in an example, where sixteen base reads 902 are as follows:
[0142]
[0143] In step 512, the method 500 proceeds by encoding the read values into bit pairs using a coding scheme. In the random number generator computing device 106, the values read from the genetic information are passed to the sequence data encoder 416 to be encoded using the coding scheme. In an embodiment, the selection of the coding scheme can be based on the pseudo-random output from the pseudo-random number generator 414. A single randomly selected coding scheme can be used to encode all selected bases in the read segment, or different coding schemes can be randomly selected to encode each base or base group in the read segment.
[0144] The selection of the encoding scheme can be controlled by the sequence data encoder 416 through the operation of the pseudo-random number generator 414. The sequence data encoder 416 can simply use the pseudo-random number generator 414 (because it has been previously used for the generation of random numbers) to select the position in the sequence of values derived from the genetic information, or it can reseed the pseudo-random number generator 414 using a different seed value obtained from the entropy source 412. In the case where the position to be read in the sequence of values derived from the genetic information is selected based on the pseudo-random output of the pseudo-random number generator 414, or in the case where the selection of the sequence of values derived from the genetic information is random, it may not be necessary to randomly select the encoding scheme. However, selecting the encoding scheme based on the pseudo-random output of the pseudo-random number generator 414 can further enhance the unpredictability of the generated true random numbers.
[0145] In this example, since there are four nucleobase values (A, C, G, T) that need to be encoded, they can be mapped into four 2-bit values, where a variety of different encoding schemes are available based on the arrangement of four bases and four bit pairs.
[0146] Figure 8 A table is shown illustrating only the first 16 of the 24 available encoding schemes for encoding nucleobases into bit pairs, which are numbered 0 to 23.
[0147] exist Fig. 6A In the example shown, further pseudo-random output is taken from the pseudo-random number generator 414 (continuing its previous configuration without first reseeding it) to provide a random number between 0 and 23, which is used to select the encoding scheme to be used to generate random numbers. The following code is used to generate the encoder selection random number:
[0148] int(random.uniform(0,24))
[0149] like Figure 6B As shown, in this example, the pseudo-random number generator 414 generates the encoding scheme selection number as =11. Figure 8 The table in Fig. 9 As can be seen from the summary table in , the randomly selected encoding scheme 11 904 maps the bases to the following bit pairs:
[0150]
[0151] Thus, in this example, in step 512, each of the sixteen bases 1 to 16 is encoded using encoding scheme 11, providing the following mapping of encoded bases 906:
[0152]
[0153]
[0154] Once the read value is encoded, the method 500 continues in step 514 by assembling the encoded bit pairs to provide a bit string as a random number. Fig. 9 As shown, in the embodiment, the assembled 32-bit random bit string 908 is 01011110110000010011001100110010.
[0155] By only selecting more number of values from the value sequence that is derived from genetic information and encoding them as mentioned above, the size of random bit string can be arbitrarily adjusted.In general, the more the value number to be selected, the more should be selected from the larger value sequence that is derived from genetic information.In the example shown above, 16 bases are used to generate 32 true random numbers.The selection of 32 bases can be used to generate 64 true random numbers.
[0156] In an embodiment, the sequence of values derived from the genetic information can be kept confidential and not disclosed to a requestor of a random number or a requestor verifying the generation of a random number. In this way, although the genetic information used to generate the random number can be kept confidential to maintain privacy, it can still be used to generate a true random number and verify the generation of a true random number.
[0157] In an embodiment, once a sequence of values derived from genetic information has been used to generate random numbers, it cannot be used again. This can preserve the unpredictability of the random numbers generated. That is, if the same sequence of values derived from genetic information is used repeatedly to generate random numbers, the results may become less unpredictable. This can be achieved by marking a simple mark in a field in the biological data source, which indicates that a particular sequence has been used to generate random numbers, wherein the method includes selecting sequences only from those sequences that have not yet been used to generate random numbers.
[0158] Thus, according to method 500, the combination of obtaining a seed value from an entropy source accessible to the random number generator computing device 106 in response to receiving a request for a random number and selecting a random position from a new and previously unused sequence of values derived from genetic information randomly selected from a biological data source can ensure that the random number cannot be known or predicted prior to receiving the request for the random number.
[0159] In an embodiment, the method may further include sending a random number in response to the received request. The random number may be sent to the user computing device 116 via the Internet 112 .
[0160] In this example, a Fig.10This includes an identifier (in this example "@5d08ebdf-4b02-45bf-ac72-8e5716ca468d") extracted from the header 302 of the base identification data 300 (which provides a sequence of values derived from the genetic information from which the random number is generated), the original seed value used to seed the pseudo-random number generator 414, the position in the base identification data 300 randomly selected by the pseudo-random number generator 414, the encoding scheme randomly selected by the pseudo-random number generator 414, and the random number itself.
[0161] The message includes at least a random number encoded using an encoding scheme, or a random number output based on the random number. For example, the method may also include hashing the random number with further data. Such further data may include one or more of the following: an original seed value for seeding the pseudo-random number generator 414; a further seed value obtained from an entropy source accessible to the computing device (to add further entropy to the output); an identifier for requesting a random number at the computing device; a hash of the random number requested at the computing device; the method also includes sending the hash in response to the received request.
[0162] Fig.11A An example of Python code for generating a hash of a generated random number is shown. Here the Python hashlib library is imported and the hashed random number output is defined using the SHA256 hashing algorithm as follows:
[0163] import hashlib
[0164] m = hashlib.sha256()
[0165] The hash is then updated using the following code by first hashing the random number encoded using the encoding scheme and then by hashing it with the seed value used to seed the pseudo-random number generator 414 or with the request identifier for the random number or some other user-specified entropy source:
[0166] m.update("00110010000111110111111110011100".encode('utf-8'))
[0167] m.update("32888750".encode('utf-8'))
[0168] In this way, a 32-bit random number encoded using the encoding scheme is hashed together with a seed value and an optional user-supplied entropy source to produce a 256-bit random number output that is also truly random and unpredictable. Fig. 11BAs shown, the hexadecimal summary of the 256-bit random number output by the SHA256 algorithm is "2809d5d03d1ff393ef3851182d9e4fe93017c6242327d3682ee48888b4aca7c9".
[0169] The message sent by the random number generator computing device 106 to the user may include the original random number or the hashed random number output or both.
[0170] Hashing a true random number along with some information used in generating the random number allows the generated hash to also be truly random and unpredictable, while also hiding the original random number generated from the genetic information. This can further help preserve the secret nature of the genetic information selected for generating the random number, and it can also be useful in verifying the random number after it has been generated, thereby further proving that the random number has been generated using the method.
[0171] After generating the random number, in order to allow verification of it, in an embodiment, the method may also include storing at least one of the following information items used to generate the random number for later use in verifying the generation of the random number: an original seed value used to seed the pseudo-random number generator 414 in the generation of the random number; a sequence of genetic information used to generate the random number; an indication of the encoding scheme used to generate the random number; the random number; optionally, any additional information hashed together with the random number; the hashed random number output.
[0172] The data can be obtained using something like Fig.10 The information may be stored in the data format shown, and may be stored locally on the random number generator computing device 106, and / or remotely on other computing devices or one or more servers (such as server 114), which may be configured to provide verification services 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 numbers and to a user computing device that receives the generated random numbers and wishes to verify them. At least some of the above information items may also be sent to a receiver of the random number (or the random hash generated therefrom) to allow the user computing device to use some of the information to verify that the random number has been generated by a true random number generation process. At least some of the above information items may also or alternatively be sent to a third-party auditor computing device 120 (see Figure 1 ) to allow a third party computing device to audit the generated random numbers by verifying that the generated random numbers have been generated by the above process.
[0173] Thus, only enough information needs to be stored to enable later verification of the random number. The verification may include performing at least some of the steps of method 500 to recreate the random number to verify that it corresponds to the random number originally generated using method 500.
[0174] Now refer to Fig.12 , Fig.12 An embodiment of a method 1200 for verifying a random number according to aspects of the present disclosure is shown. The 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 has access to the appropriate information required to verify that the number was generated using a sequence of values derived from genetic information according to the method 500. For simplicity, in the following description, the method 500 will be described as being performed by the random number generator computing device 106. Thus, the method 1200 may be implemented in the runtime environment 406 by instructions stored in the memory 402.
[0175] In step 1202, the method 1200 receives a request to verify the generation of a random number, the request indicating at least that the random number is to be verified. The random number generator computing device 106 may receive the request from a user computing device 116 requesting the random number at any time after the random number has been generated, or from a third-party auditor computing device 120 (e.g., on behalf of a user computing device) attempting to verify the generated random number. The indication of the random number to be verified received with the request is the minimum information sufficient to allow verification, as long as the computing device performing the verification has access to sufficient information to allow an audit of how the number was generated, for example, to allow at least some steps to be performed to recreate the random number.
[0176] In step 1204, the method 1200 retrieves information used to generate the random number in response to the request. Retrieving the information used to generate the random number may include retrieving at least some information from a data store at a location accessible to the computing device performing the verification (whether the random number generator computing device 106, the auditor computing device 120, or any other computer device performing the verification), which information has been stored at the location in response to the generation of the random number. Retrieving the information used to generate the random number may also include retrieving at least some information from the received request to verify the generation of the random number. Thus, the verification computing device may retrieve information sufficient to perform the verification from the verification request (which may include some useful information) and from the data store, which information was originally stored in the data store in response to the generation of the random number. This may include retrieving a sequence of values derived from genetic information of a biological organism (from which the original random number was generated) from a biological data source accessible to the computing device.
[0177] In step 1206, the method 1200 obtains a selected position in a sequence of values for generating random numbers derived from the genetic information. If the computing device performing the verification (whether the random number generator computing device 106, the auditor computing device 120, or any other computer device performing the verification) can obtain the selected positions 702a to 702h from a data store or from a verification request, these values can be simply read out from the retrieved sequence of values derived from the genetic information. On the other hand, the selected positions 702a to 702p can be recreated by using the pseudo-random number generator 414. That is, obtaining the selected position in the sequence of values for generating random numbers derived from the genetic information can include: reinitializing the pseudo-random number generator 414 with the original seed value to generate a pseudo-random output, and then selecting a position from the sequence of values for generating random numbers derived from the genetic information based on the pseudo-random output.
[0178] In step 1208, the method 1200 obtains a coding scheme for generating random numbers. Similarly, if the computing device performing the verification (whether the random number generator computing device 106, the auditor computing device 120, or any other computing device performing the verification) obtains the selected coding scheme 904 from a data store or from a verification request, it can be simply used to encode the value read from the sequence of values derived from the genetic information. On the other hand, the selected coding scheme 904 can be recreated by using the pseudo-random number generator 414. That is, obtaining the selected coding scheme 904 for generating random numbers can include reinitializing the pseudo-random number generator 414 with the original seed value to generate a pseudo-random output, and then selecting a coding scheme from the available coding schemes based on the pseudo-random output.
[0179] In step 1210, method 1200 reads the value of a selected position (702a to 702p in this example) in a sequence of values derived from genetic information used to generate a random number.
[0180] In step 1212, method 1200 encodes the value into a bit pair using the encoding scheme used to generate random numbers (in this example, the selected encoding scheme 904) to generate a recreated random number. If the original random number was correctly generated using method 500, the recreated random number should match the original random number.
[0181] Thus, in step 1214, the method 1200 verifies the original random number using information based at least on the recreated random number. This may be accomplished by comparing the original random number and the recreated random number, and it may include resending the recreated message including the recreated random number (or a suitable hash thereof) to the verified requestor so that the requestor can verify it by checking the correspondence of the recreated random number / re-sent message with the original random number / originally sent message data.
[0182] Thus, the random number generator computing device 106, either alone or in combination with one or more other such computing devices, may be arranged as a server to provide verifiably true random numbers as a service to any user computing device 116 or server requesting a random number over the Internet 112.
[0183] It has been found that by processing a sequence of values derived from genetic information according to the methods described herein, such as nucleobases obtained by sequencing a deoxyribonucleic acid (DNA) sequence or a ribonucleic acid (RNA) sequence obtained from a biological organism using a gene sequencer, the randomness observed in DNA and RNA sequences can be used to generate unpredictable true random numbers. In particular, the output of a pseudo-random number generator (which is seeded with a seed value obtained in response to a request for a random number, the value of which cannot be controlled in advance) is used to select a set of random positions in a sequence of values derived from genetic information (the genetic information itself represents a physical source of inherent random and unpredictable values), which are combined to generate an unpredictable true random number output.
[0184] The pseudo-random number generator is seeded with a high resolution using the time of a system clock of the computing device, which allows the pseudo-random output used to select a value from a sequence of values derived from the genetic information to be unpredictable prior to receiving a request for a random number. In this manner, values are unpredictably randomly selected from the unpredictable random genetic information, which ensures that the generated random number is truly random and unpredictable prior to the number being generated.
[0185] The method has been shown to pass a large 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. Given the amount of genetic information obtained from gene sequencers, with the advent of third-generation sequencing technology, which has enabled the rise of whole genome sequencing to realize personalized medicine, the method described in this article can provide a potentially unlimited source of true random numbers as a byproduct, which is easy to generate and maintain without the need for careful hardware verification or a controlled environment to maintain statistical unpredictability.
[0186] Furthermore, because the genetic information used to generate the random numbers is easily retained, after each random number is generated, the process by which the random number was generated can be audited and verified by a process in which the random number can be recreated by processing the genetic information in the same manner as the original random number was recreated. In this way, although the random number generated by the method described herein is unpredictable in advance, after it is generated, it can be easily verified that it was indeed generated by a true random number generation method. This can improve the security and integrity of systems that rely on methods for generating random numbers for cryptographic purposes.
[0187] Furthermore, since the genetic information used to generate random numbers is quickly generated by a gene sequencer or through post-processing to generate reads, and can be retained in large quantities in biological data storage, the method described in this article can be used to quickly generate a large number of true random numbers of arbitrary size.
[0188] Furthermore, although genetic information generated from biological organisms may need to be kept confidential (and in fact, keeping the genetic information confidential at least until random numbers are generated can further enhance its unpredictability), it can be used both as a source of physical randomness for generating true random numbers and for securely verifying the generation of random numbers after the fact without compromising the secret nature of the genetic information.
[0189] Thus, when properly processed, genetic information can provide an effectively infinitely verifiable source of easily generated, reliable true random numbers. Furthermore, the use of genetic information as a physical source of randomness provides further valuable technical uses of this information, where the methods described herein allow values to be controlled and it is technically used for cryptographic purposes, and its sharing can further incentivize the provision of biological organism samples for sequencing, thereby accelerating the development and deployment of personalized medicines, as well as other scientific and therapeutic benefits realized through the capture of genetic information.
[0190] Features, integers, characteristics or groups described in conjunction with a particular aspect, embodiment or example of the invention are to be understood to be applicable to any other aspect, embodiment or example described herein unless incompatible therewith. All features disclosed in this specification (including any accompanying claims, abstract and drawings) and / or all 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. The invention is not limited to the details of any foregoing embodiments. 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. In particular, any dependent claim may be combined with any independent claim and any other dependent claim.
[0191] In the detailed description above, many processing tasks described all relate to the signal information representing the polynucleotide sequence being converted into base sequence. However, it will be appreciated by those skilled in the art that the methods and devices described herein are applicable to other types of signal information. For example, signal information can be relevant with other natural molecules, such as protein or secondary modification. As another example, signal information can be relevant with modified or synthetic molecules, such as oligonucleotide tags, nucleic acid analogs or an extension body comprising extendable nucleoside triphosphates.
[0192] Unless expressly stated otherwise, each feature disclosed in this specification (including any accompanying claims, abstract and drawings) may be replaced by alternative features used for the same, equivalent or similar purposes. Therefore, unless expressly stated otherwise, each feature disclosed is only an example of a general series of equivalent or similar features. The present invention is not limited to the details of any foregoing embodiments. The present 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. The claims should not be interpreted as covering only the above-mentioned embodiments, but also any embodiment falling within the scope of the claims.
Claims
1. A computer-implemented method for generating a random number based on genetic information from a biological data source, the biological data source comprising at least the genetic information sequenced from a biological organism, the method comprising: In response to receiving a request for a random number at a computing device, obtaining a seed value from an entropy source accessible to the computing device; Initialize a pseudo-random number generator using a seed to determine a pseudo-random output; retrieving a sequence of values derived from genetic information of a biological organism from a biological data source accessible to the computing device; selecting a randomized set of individual positions in the sequence of values derived from genetic information, the randomized set of individual positions being based on the pseudo-random output; reading a value in a selected position in the sequence of values derived from genetic information; encoding the value as a bit pair using a coding scheme; as well as The bit pairs are assembled to provide a bit string as a random number, wherein the random number is verifiable from the seed.
2. The computer-implemented method of claim 1 , further comprising selecting the encoding scheme based on the pseudo-random output.
3. The computer-implemented method of claim 1 or claim 2, further comprising sending the random number in response to a received request.
4. The computer-implemented method of claim 1 , claim 2 or claim 3 , further comprising hashing the random number using one or more of: an original seed value for seeding the pseudo-random number generator; a further seed value obtained from an entropy source accessible to the computing device; requesting, at the computing device, an identifier for the random number; User-supplied entropy sources; requesting, at the computing device, a hash of the random number; The method also includes sending the hash in response to the received request.
5. The computer-implemented method according to any one of claims 1 to 4, wherein: The source of entropy accessible to the computing device is the time of the computing device measured using a system clock of the computing device, optionally to sub-microsecond resolution.
6. The computer-implemented method according to any one of claims 1 to 5, wherein: Retrieving the genetic information sequence of the biological organism from a biological data source accessible to the computing device includes randomly selecting the genetic information sequence from a plurality of available genetic information sequences retrieved from the biological data source.
7. The computer-implemented method of any one of claims 1 to 6, wherein: After the genetic information sequence is retrieved from the biological data source and used to generate a random number, the genetic information sequence is no longer used to generate another different random number.
8. The computer-implemented method of claim 1, wherein: The sequence of values derived from genetic information of a biological organism comprises sequenced bases of the genetic information obtained from a sequencing device, and wherein the read values are bases read from selected base positions in the sequence of genetic information, the encoding scheme encoding the bases as bit pairs.
9. The computer-implemented method of claim 7, wherein: Encoding the base into a bit pair using a coding scheme includes randomly selecting the coding scheme from a set of available coding schemes that map bases into bit pairs, the random selection optionally being based on an output of the pseudo-random number generator.
10. The computer-implemented method of any one of claims 1 to 9, further comprising storing: the original seed value, which is used to seed the pseudo-random number generator in the generation of the random number; The genetic information sequence used to generate the random number; an indication of the encoding scheme used to generate the random number; The random number; Optionally, any additional information hashed together with the random number; The storage enables later verification of the random number and the method used to generate the random number.
11. The computer-implemented method of any one of claims 1 to 10, further comprising: receiving a request to verify generation of the random number, the request indicating at least that the random number is to be verified; In response to the request, retrieving information for generating the random number; reinitializing the pseudo-random number generator using the original seed value to generate a pseudo-random output; selecting a position in the sequence of values derived from genetic information for generating the random number based on the pseudo-random output; reading a value in a selected position in said sequence of values derived from genetic information for generating said random number; encoding the value into a bit pair using an encoding scheme used to generate the random number to generate a recreated random number; The random number is verified based on the recreated random number and a request to verify the generation of the random number.
12. A computer-implemented method according to any one of claims 1 to 1, wherein: The combination of obtaining a seed value from an entropy source accessible to the computing device in response to receiving a request for a random number and selecting a random position from a new and previously unused sequence of values derived from genetic information randomly selected from the biological data source ensures that the random number cannot be known or predicted prior to receiving the request for the random number.
13. The computer-implemented method of any one of claims 1 to 12, wherein: The sequence of values derived from the genetic information is kept confidential and not revealed to a requestor of the random number or a requestor verifying the generation of the random number.
14. The computer-implemented method of any one of claims 1 to 13, wherein: The biological data source comprises biological data storage stored in a memory of one or more servers, or wherein the biological data source comprises a biological data stream generated by a gene sequencer as it processes genetic information sequenced from a biological organism.
15. A computing device, comprising: one or more processors; and a memory storing instructions that, when executed by the one or more processors, configure the apparatus to: In response to receiving a request for a random number at the computing device, obtaining a seed value from an entropy source accessible to the computing device; initializing a pseudo-random number generator using the seed to determine a pseudo-random output; retrieving a sequence of values derived from genetic information of a biological organism from a biological data source accessible to the computing device; selecting a randomized set of individual positions in the sequence of values derived from genetic information, the randomized set of individual positions being based on the pseudo-random output; reading a value in a selected position in the sequence of values derived from genetic information; encoding the value as a bit pair using a coding scheme; as well as The bit pairs are assembled to provide a bit string as a random number, wherein the random number is verifiable from the seed.
16. A non-transitory computer-readable storage medium comprising instructions that, when executed by one or more processors of a computing device, cause the one or more processors to: In response to receiving a request for a random number at a computing device, obtaining a seed value from an entropy source accessible to the computing device; initializing a pseudo-random number generator using the seed to determine a pseudo-random output; retrieving a sequence of values derived from genetic information of a biological organism from a biological data source accessible to the computing device; selecting a randomized set of individual positions in the sequence of values derived from genetic information, the randomized set of individual positions being based on the pseudo-random output; reading a value in a selected position in the sequence of values derived from genetic information; encoding the value as a bit pair using a coding scheme; as well as The bit pairs are assembled to provide a bit string as a random number, wherein the random number is verifiable from the seed.
17. A computer-implemented method for verifying a random number generated by the method of any one of claims 1 to 14, the method comprising executing, by a computing device, the following: receiving a request to verify generation of the random number, the request indicating at least that the random number is to be verified; In response to the request, retrieving information for generating the random number, including retrieving a sequence of values derived from genetic information of a biological organism from a biological data source accessible to the computing device; obtaining a selected set of randomized individual positions in said sequence of values derived from genetic information for generating said random number; Obtaining a coding scheme for generating the random number; reading a value in a selected position in said sequence of values derived from genetic information for generating said random number; encoding the value into a bit pair using an encoding scheme used to generate the random number to generate a recreated random number; as well as The random number is verified using information based at least on the recreated random number.
18. The computer-implemented method of claim 17, wherein: Retrieving information used to generate the random number includes at least one of the following: retrieving at least some information from a data store at a location accessible to the computing device, the information having been stored at the location in response to the generation of the random number; At least some information is retrieved from a received request for verifying the generation of the random number.
19. A computer-implemented method according to claim 17 or claim 18, wherein: Obtaining a selected position in the sequence of values derived from genetic information for generating the random number comprises: reinitializing the pseudo-random number generator using the original seed value to generate a pseudo-random output; and Based on the pseudo-random output, a set of randomized individual positions is selected in the sequence of values derived from genetic information used to generate the random number.
20. The computer-implemented method of any one of claims 17 to 19, wherein: Obtaining a coding scheme for generating the random number includes: reinitializing the pseudo-random number generator using the original seed value to generate a pseudo-random output; Based on the pseudo-random output, an encoding scheme for generating the random number is selected.