Barkhausen effect entropy difference extractor

By using a differential extractor in the Barkhausen effect signal to eliminate non-random components, the problem of the random numbers generated based on the Barkhausen effect contains non-random components, and a higher quality random number generation is achieved, suitable for applications such as encryption.

CN119563161APending Publication Date: 2025-03-04PERISO SHPK
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202280097452.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-05-19
Filing Date
2022-05-30
Publication Date
2025-03-04

AI Technical Summary

Technical Problem

Random numbers generated based on the Barkhausen effect contain non-random components that affect their quality, especially in cryptographic applications.

Method used

Use a differential extractor to eliminate non-random components in the Barkhausen effect signal, capture the signal by applying a changing magnetic field to the ferromagnetic material and converting it into a digital data stream, stored in two memory arrays, and eliminate non-random components by subtraction operations.

Benefits of technology

The authenticity of the generated randomness is enhanced, the non-random component in the signal is eliminated, and the quality of random numbers is improved, making it more suitable for encryption and other applications that rely on high randomness.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119563161A_ABST
    Figure CN119563161A_ABST
Patent Text Reader

Abstract

Methods and systems for generating entropy and eliminating non-random components of Barkhausen effect signals are disclosed. In one method, a Barkhausen signal (BS) is captured by applying a varying magnetic field to a ferromagnetic material and measuring variations in magnetic flux. The magnetic field is based on an oscillating signal, and the BS includes random and non-random components. The BS is converted into a digital data stream and stored in a memory array. A first portion of the data stream is stored as elements in a first memory array, and a second portion of the data stream is stored as elements in a second memory array. Elements of the first memory array are subtracted from elements of the second memory array. The subtraction results including random components of the BS and eliminating non-random components of the BS are stored.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to generating entropy (random numbers) based on the Barkhausen effect, and more particularly, to a differential extractor for eliminating non-random components in a Barkhausen effect signal. Background Art

[0002] Most cryptographic applications use random numbers. Cryptographic applications are accordingly susceptible to the quality of the random numbers used. A true random number generator produces a sequence of numbers that cannot be reasonably predicted except by random chance. However, it is often difficult to actually generate truly random numbers. A high-quality random number generator produces random numbers in a way that is practically impossible to model. A pseudo-random number generator produces numbers that appear random but are actually predetermined in that they can be reproduced if the state of the pseudo-random number generator is known.

[0003] One way to generate high-quality random numbers is to use the state of properties of the physical environment, where the state changes in unpredictable ways. The best providers of randomness (also called entropy) are based on quantum uncertainty associated with quantum variables. An example of this is the Barkhausen effect.

[0004] The Barkhausen effect describes the noise in the magnetic output of a ferromagnet when the magnetizing force applied to it changes. Specifically, the Barkhausen effect is a phenomenon caused by rapid changes in the size of magnetic domains (e.g., atoms in a ferromagnetic material that are magnetically oriented in a similar manner). When the external magnetizing field passing through the ferromagnetic material changes, the magnetization of the ferromagnetic material undergoes a series of discontinuous changes (rather than a linear change), resulting in "jumps" in the magnetic flux through the ferromagnetic material. These jumps, or microsteps, can be detected by, for example, a coil wrapped around the ferromagnetic material. The sudden transitions in the magnetic flux of the ferromagnetic material produce current pulses in the coil, which can be detected as Barkhausen signals (BS) (also known as "Barkhausen noise").

[0005] Although the entropy content in the Barkhausen signal is high, it is not completely random because the Barkhausen signal may be affected by non-random (recursive) components. Therefore, the random numbers generated by the traditional method of extracting entropy based on the Barkhausen effect contain both random and non-random components, which may be undesirable for many applications such as cryptographically protected payment transactions.

[0006] Therefore, there is a need to generate, extract or capture entropy (random numbers) based on the Barkhausen effect and eliminate non-random components. Summary of the invention

[0007] The subject matter described herein includes methods, systems, and computer program products for generating random numbers (entropy) based on the Barkhausen effect, including using a differential extractor to eliminate non-random components in a Barkhausen effect signal. According to one method, a Barkhausen signal (BS) is captured by applying a changing magnetic field to a ferromagnetic material and measuring the change in magnetic flux. The changing magnetic field is based on an oscillating signal, such as a square wave, and the Barkhausen signal (BS) includes random components and non-random components. The Barkhausen signal (BS) is then converted into a digital data stream, and the data stream is stored in one of two memory arrays based on the oscillating signal. The first part of the data stream is stored as one or more elements in the first memory array, and the second part of the data stream is stored as one or more elements in the second memory array. Then, also based on the oscillating signal, the elements of the first memory array are subtracted from the elements of the second memory array. The result of the subtraction is then stored, wherein the result includes the random components of the Barkhausen signal (BS) and eliminates the non-random components of the Barkhausen signal (BS).

[0008] A system includes a differential extractor for eliminating non-random components in a Barkhausen effect signal, including a Barkhausen sensor for capturing a Barkhausen signal (BS). The Barkhausen signal (BS) is captured by applying a changing magnetic field to a ferromagnetic material and measuring the change in magnetic flux. The changing magnetic field is based on an oscillating signal, such as a square wave generated by a square wave generator. The Barkhausen signal (BS) includes random components and non-random components. A digitizing module, such as one or more filters or analog-to-digital converters, converts the Barkhausen signal (BS) into a digital data stream. An upper memory array and a lower memory array alternately store the data stream based on the oscillating signal. A first portion of the data stream is stored as one or more elements in the upper memory array. A second portion of the data stream is stored as one or more elements in the lower memory array. An output sampling module subtracts elements of a first memory array from elements of a second memory array based on the oscillating signal. The output memory stores the result of the subtraction, wherein the result includes random components and eliminates non-random components. BRIEF DESCRIPTION OF THE DRAWINGS

[0009] Figure 1 A flow chart illustrating exemplary steps for generating entropy based on the Barkhausen effect, including eliminating non-random components of the Barkhausen signal, according to an embodiment of the subject matter described herein.

[0010] Figure 2 is a system diagram illustrating exemplary components of entropy based on the Barkhausen effect, including eliminating non-random components of the Barkhausen signal, according to an embodiment of the subject matter described herein.

[0011] Figure 3 is a perspective view of an exemplary configuration of a Barkhausen inductor according to an embodiment of the subject matter described herein.

[0012] Figure 4 is a schematic diagram of a low pass filter and the waveform when the filter is applied to a square wave signal according to an embodiment of the subject matter described in this application. DETAILED DESCRIPTION

[0013] The subject matter described in this application includes a differential extractor for eliminating the non-random component of a Barkhausen effect signal. Compared to conventional methods of generating random numbers, including methods based on physical phenomena such as the Barkhausen effect, which do not produce truly random numbers because they contain non-random components, the present disclosure generates entropy based on the Barkhausen effect, including eliminating the non-random component.

[0014] Figure 1 A flowchart of exemplary steps for generating entropy based on the Barkhausen effect according to an embodiment of the subject matter described in the present application is shown, including eliminating non-random components associated with the Barkhausen signal. This process can be performed by one or more hardware or software components that are configured to extract entropy associated with the Barkhausen effect and store the entropy in a memory for use in applications such as payment transactions and communication encryption. This process can start with generating an oscillating signal (e.g., a square wave). Using at least one coil around a ferromagnetic material core, the ferromagnetic core is magnetized and the resulting electrical signal is detected. This signal is digitized and filtered to remove the non-random components of the signal. For example, two memory arrays can store digitized signals. Sample-by-sample subtraction can be performed on the two memory arrays, which is triggered by pulses of every two integer cycles of the oscillating signal (square wave). Compared with traditional methods for generating entropy (including methods using the Barkhausen effect), the present invention enhances the randomness generated by eliminating non-random components in the Barkhausen effect signal.

[0015] Please refer to Figure 1 In step 100, the method includes generating an oscillating signal. In one embodiment, generating the oscillating signal includes generating a square wave using a square wave generator (SQW). However, it should be understood that any type of oscillating signal generator may be used. The square wave generator may preferably have a duty cycle associated with maintaining a symmetrical charging and discharging phase of the Barkhausen inductor (LB). For example, the square wave generator may have a 50% duty cycle.

[0016] The square wave generator may have a frequency range based on the magnetic properties of the ferromagnetic material of the Barkhausen inductor. In one embodiment, the square wave generator has a frequency range less than one tenth of the maximum frequency spectrum of the Barkhausen signal generated by the Barkhausen inductor. For example, the square wave generator may have a frequency range between 1 KHz and 1 MHz.

[0017] At step 102, an alternating signal is created based on the oscillating signal generated at step 100. In some embodiments, the fast rise time of the square wave can be smoothed to obtain a more linear rise time. A more linear rise time may be required to magnetize the Barkhausen inductor. For example, the rise time of the square wave generator can be smoothed by a low pass filter (LPF). The LPF can be an electrical component or a software module combined with a digital-to-analog converter (DAC). The LPF can create an alternating signal for magnetizing the Barkhausen inductor (LB) in an alternating direction. The goal of the LPF is to generate an output signal with a ramp up and then a ramp down multiple times per second. Ideally, the output signal has a perfectly linear ramp, but some asymmetry (e.g., 15%) will not have an undesirable effect on performance.

[0018] In one embodiment, the LPF may include a resistor-capacitor (RC) low-pass filter that acts as an integrator. In such an embodiment, the voltage V(CL) across the bypass capacitor may not be a perfect triangular signal, but rather a portion of an exponentially loaded / unloaded RC curve. Typical values ​​for the RC block are hundreds of milliseconds to microseconds, depending on the output frequency of the square wave generator. Typically, a square wave generator has a frequency range that is less than one-tenth of the maximum spectrum of the signal (R1·C L ~10 / f swg ). To make the signal more linear, a constant current generator may be used instead of RL. In lieu of the electrical / hardware based embodiment described above, in a software based embodiment, an up / down counter coupled to a DAC may provide a triangular output signal.

[0019] At step 104, the ferromagnetic material is magnetized based on the signal generated at step 102, and at step 106, the electrical signal generated by step 104 is detected. As described above, the Barkhausen effect is generated during the magnetization and demagnetization of the ferromagnetic material. The Barkhausen effect can be measured as a random magnetic signal generated by the gradual orientation of the magnetic domains inside the ferromagnetic material. The random magnetic signal may appear in the form of an electrical signal (Barkhausen signal) on a coil around the core of the ferromagnetic material. In order to magnetize, demagnetize and read the Barkhausen signal, a simple configuration includes a ferromagnetic core and a coil, which acts as both a magnetizing coil and a reader of the generated Barkhausen signal. Another configuration includes two coils, one of which is used to magnetize and demagnetize the ferromagnetic material, and the other coil is separated from the first coil to read the Barkhausen signal.

[0020] In order to reduce the magnetic interference of the external magnetic field, the core of the ferromagnetic material can also be implemented as a closed magnetic circuit. For example, a Barkhausen inductor with a ring structure may be less susceptible to external magnetic interference.

[0021] Applying a varying magnetizing force to a ferromagnet may include magnetizing the ferromagnet to a first polarity, demagnetizing the ferromagnet, and magnetizing the ferromagnet to a second polarity opposite to the first polarity (reverse magnetization). Capturing the resulting Barkhausen signal includes measuring a change in the magnetic flux of the ferromagnet. Measuring the change in the magnetic flux of the ferromagnet may include detecting a voltage across a Barkhausen inductor (V(LB)), where V(LB) is the result of random changes in the voltage across the Barkhausen inductor associated with the Barkhausen effect. It should be understood that V(LB) is a signal representing entropy or randomness.

[0022] As described above, in one embodiment, the Barkhausen sensor includes at least one coil surrounding a ferromagnetic core, and the ferromagnetic core has a ring structure. In an embodiment, the Barkhausen sensor includes a first coil surrounding the ferromagnetic core, the first coil is configured to magnetize and demagnetize the ferromagnetic core and measure the change in magnetic flux of the ferromagnetic core. In an embodiment, the Barkhausen sensor includes a first coil and a second coil surrounding the ferromagnetic core, the first coil is configured to magnetize and demagnetize the ferromagnetic core, and the second coil is configured to measure the change in magnetic flux of the ferromagnetic core.

[0023] In step 108, the electrical signal generated by step 106 is digitized into a data stream. For example, the data stream may include a sequence of bits, bytes, words, or other similar data structures of data. In one embodiment, a high pass filter (HPF) may be used to digitize the signal. In another embodiment, an analog-to-digital converter (ADC) is used to digitize the signal. For example, a high pass filter is an electrical component or software module that removes low frequency components from the signal used for magnetization and demagnetization LB. The frequency range of the Barkhausen signal is higher, so the HPF extracts the spectral components associated with the Barkhausen signal. Alternatively, the signal can be digitized by an ADC and then a digital filter can be applied. In another alternative, if the signal is already digitized, a software module can be used.

[0024] At step 110, a pulse is generated in response to detecting a rising edge of the oscillating signal (e.g., a square wave) generated in step 100. For example, a positive edge detector (PED) can be configured to generate a pulse in response to detecting a rising edge of the oscillating signal. In one embodiment, the duration of the pulse is about one-tenth of the period of the oscillating signal. For example, the duration of the pulse can be between about 100 nanoseconds and 1000 nanoseconds. Therefore, an acquisition time equal to an integer period of the SWG includes a positive phase and a negative phase.

[0025] At step 112, a binary value (0 or 1) is generated based on the rising edge pulse generated at step 110. Whenever a rising edge pulse is received, the binary value generated at step 112 is flipped (i.e., inverted or reversed). For example, the binary value may be initially set to 0. When the first rising edge pulse is received at time T1, the binary value may be set to 1. When the second rising edge pulse is received at time T2, the binary value may be set to 0, and so on.

[0026] As described in more detail below in step 116, the binary value may be used to redirect the data flow generated in step 108 to one of the two memory arrays. For example, if the binary value is 1, then the data flow may be directed to the first memory array until the binary value becomes 0, at which time the data flow may be redirected to the second memory array.

[0027] In addition to generating a rising edge pulse, a pulse may also be generated at step 114 in response to detecting a falling edge of an oscillating signal (e.g., a square wave) generated at step 100. For example, a negative edge detector (NED) may be configured to generate a pulse in response to detecting a falling edge of the oscillating signal. As described in more detail below in step 118, this falling edge pulse may be used to trigger a subtraction operation of the accumulated values ​​in the two storage arrays.

[0028] At step 116, based on the binary value determined at step 112, the data stream is stored as an element in two different memory arrays. In one embodiment, this includes redirecting the data stream from the ADC to the memory array using a controller upper and lower switch (UDS). For example, the UDS can be configured to redirect the data stream by storing the data stream in a first memory array of two different memory arrays and a second memory array of two different memory arrays in sequence. The first memory array can be a memory upper (MUP) array of length k connected to a first output of the UDS. The MUP can be configured to store the data stream starting from an initial position. When the first memory array is filled, the MUP can be configured to overwrite the data starting from the initial position. The second memory array of the two different memory arrays can include a memory lower (MDW) array of length k, which is connected to the second output of the UDS and is configured to store the data stream starting from the initial position, and when the second memory array is filled, the second memory array is overwritten from the initial position. In another embodiment, the first and second memory arrays (MUP and MDW) can both be shift registers of length k.

[0029] At step 118, in response to receiving the falling edge pulse generated at step 114, a result is generated. For example, this may include reading the MUP and MDW memory arrays by the output sampling module (SMP) in response to receiving the pulse from the NED, and subtracting elements of the MUP memory array from elements of the MDW memory array by the SMP. It will be appreciated that step 118 eliminates all synchronous (non-random) components of the Barkhausen signal by capturing the Barkhausen signal twice under the same conditions and subtracting them from each other. This process is then repeated, thereby providing a continuous stream of entropy (sequence of random numbers). It will also be appreciated that the MUP is subtracted from the MDW (and vice versa) every few SWG integer cycles. Since the negative edge detector generates a pulse for each transition of the binary value, this occurs every two integer cycles of the SWG.

[0030] At step 120, the results generated at step 118 are stored. In one embodiment, storing the results includes storing the results of the subtractions performed by the SMP element by element in an output memory array (ME).

[0031] Figure 2 is a schematic diagram illustrating an example system for generating random numbers (entropy) based on the Barkhausen effect, including eliminating non-random components associated with the Barkhausen signal according to an embodiment of the subject matter described in this application. Figure 2 , the square wave generator (SWG) 200 may include an electronic oscillator with a duty cycle of 50%. The duty cycle may be configured so that the successive charging and discharging phases of the LB 204 are symmetrical. The typical value of the frequency of the SWG 200 is f swg It may be in the range of 1 KHz and 1 MHz, but may vary depending on the magnetic properties of LB 204. In one embodiment, the frequency range of oscillator 200 may be less than one tenth of the maximum spectrum of the Barkhausen signal generated by LB 204.

[0032] The output of SWG 200 may be received as an input by a low pass filter (LPF) 202. LPF 202 may be an electrical component, or a software module in combination with a DAC (digital-to-analog converter) 214. LPF 202 may be configured to create an alternating signal for magnetizing LB 204 in alternating directions. The goal of LPF 202 is to produce an output signal having a ramp up and then a ramp down multiple times per second. A perfectly linear ramp may be optimal, but including some asymmetry (e.g., about 15%) does not affect performance much. One implementation includes an RC low pass filter acting as an integrator. In this implementation, V(C L ) is not a perfect triangular signal, but rather part of an exponential loading / unloading RC curve. To make the signal more linear, a constant current generator can be used instead of R LAlternatively, a combined embodiment using software and an up / down counter coupled to a DAC (digital-to-analog converter) can also provide a triangular output signal. Typical values ​​for the RC module can be hundreds of milliseconds to microseconds, depending on the output frequency of the SWG. Typically, R1·C L ~10 / f swg .

[0033] The Barkhausen sensor (LB) 204 can be an electrical component. The Barkhausen effect is generated during the magnetization and demagnetization of ferromagnetic materials. In other words, the core of the ferromagnetic material (FMM) can generate a random magnetic signal generated by the gradual orientation of the internal magnetic domains of the FMM. This random magnetic signal can be detected or measured as an electrical signal by a coil rotating around the FFM. In this regard, it will be described in detail in the following. Figure 3 As described in more detail in , to magnetize, demagnetize, and read the Barkhausen signal, a simple configuration includes a coil that acts as a magnetizing coil but also acts as a reader of the Barkhausen signal. Another possible configuration is a ferromagnetic core that has two coils instead of one coil, where one coil is used to magnetize and demagnetize the ferromagnetic material and the other coil reads the Barkhausen signal. To reduce magnetic interference from external magnetic fields, the core of ferromagnetic material can also be implemented as a closed magnetic circuit, such as a toroidal structure, which may be less susceptible to external magnetic interference.

[0034] The current detector (RI) 206 is an electrical component. The random signal (entropy) generated by LB 204 during magnetization and demagnetization is the voltage V(LB) across LB 204. This voltage V(LB) added to V(CL) is measured as V(RI) across RI 206. In other words, RI 206 acts as a current detector for the signal generated by V(CL) + V(LB).

[0035] The decoupling capacitor (CH) 208 is an electrical component or a software module. The signal across RI (V(RI)) may have a strong DC (direct current) component. CH208 eliminates the DC component so that the input signal (VIhpf) of the HPF is a signal with an average value of zero: |VIhpf|=0. Alternatively, the signal V(RI) can be digitally sampled by ADC214, and the function of CH208 can be simulated by software, as follows: VIhpf=V(Ri)-|V(Ri)|. In one embodiment, where the components following HPF212 are hardware-based, CH208 may not be necessary because a smaller capacitor already exists at the input stage of HPF212, so CH208 can be omitted.

[0036] Bypass capacitor (CL) 210 is an electrical component. The Barkhausen effect originates from the random variation of the voltage V(LB) across LB, a signal that represents the entropy to be extracted. The CL bypass capacitor 210 bypasses the current that would otherwise be redirected to LPF202 to ground. Due to the CL bypass effect, a stronger signal will be extracted on RI206. In other words, since most of the power spectral density (PSD) of the Barkhausen effect signal is in the high frequency range and CL210 has very low reactance from a high frequency perspective, most of the Barkhausen signal will appear on RI206. The voltage V(CL) across CL210 changes more slowly than the high frequency random signal (V(LB)) generated by LB204. Based on the typical maximum drive current of LPF202, the capacitance of CL210 can be in the range of a few nanofarads to a few microfarads.

[0037] The high pass filter (HPF) 212 is an electrical component or software module that removes low frequency components from the signal used to magnetize and demagnetize the LB204. The signal of the Barkhausen effect is located at high frequencies, so the HPF 212 will extract the only spectral components related to the Barkhausen signal. The cutoff frequency fhpf is strongly dependent on the SWG frequency fswg and must be at least 10 times it: fhpf>10fswg. The HPF 212 can be implemented by a first order RC (or higher order) and LR filter. An alternative is to implement the HPF 212 in software and then apply a digital filter if the signal is already digitized, or digitized using an ADC 214.

[0038] The analog-to-digital converter (ADC) 214 is an electrical module that converts an analog signal into a digital signal. ADC214 may be necessary only if the signal has not been digitized by HPF212 as described above. The output of ADC2114 may include a data stream (e.g., bytes, or words if more than 8 bits). The data stream may have a sampling rate frequency fadc. The data stream is sequentially stored in two different memory arrays MUP222 and MDW224, depending on which memory array is selected by UDS220. In addition to receiving the data stream as input from ADC214, UDS220 also receives rising edge pulses.

[0039] The positive edge detector (PED) 216 is an electrical or software module that receives a square signal at input and outputs a pulse when the rise time (rising edge) of the input is detected. The duration of the output pulse is typically one-tenth of the input period and is used as the input to a monostable block that flips the binary value at each pulse. The typical duration of the output pulse is hundreds of nanoseconds.

[0040] The bistable state (BIS) 218 ​​is an electrical component or software module that flips the binary value (i.e., between 0 and 1) of the output each time an input pulse is received. The BIS 218 can be implemented with a logical divisor of 2. For example: a T-type flip-flop or a D-type flip-flop with feedback. Alternatively, it can be implemented as a software module. Alternatively, it can be implemented with an RC high-pass filter, where the time constant T d =R d ·C d At least longer than the input period P i An order of magnitude smaller, P i :T d < <P i .

[0041] The upper and lower switch controller (UDS) 220 is typically a software module, but can also be implemented as a hardware analog switch. In an embodiment where the UDS 220 is a hardware component, two ADCs 214 can be used, one for each memory MUP 222 and MDW 224. The UDS 220 can be configured to direct or redirect the data flow from the ADC 214 to one of the two memory arrays (MUP 222 or MDW 224) based on the output of the BIS 218. For example, if the output is 1, the data flow will be redirected to the MUP 222, and if the output is 0, the data flow will be redirected to the MDW 224.

[0042] The memory upper part (MUP) 222 is designed to store the byte data stream from UDS 220 in an array of length k. After the array 222 is filled with k elements, the subsequent elements will overwrite the past elements starting from the initial position. Alternatively, MUP 222 can be implemented as a shift register of length k.

[0043] The memory lower part (MDW) 224 is equivalent to MUP 222, but is connected to a different output of UDS 220. Therefore, MDW 224 is designed to store the byte data stream from UDS 220 in an array of length k. After the array 224 is filled with k elements, the subsequent elements will overwrite the past elements starting from the initial position. Alternatively, it can be implemented as a shift register of length k.

[0044] The negative edge detector (NED) 226 is an electrical or software module that receives a square signal at the input and gives a short pulse at the output only during the rise time (rising edge) of the input. The duration of the output pulse is typically one tenth of the input period and is used to feed a monostable block which flips on each pulse. The typical duration of the output pulse is hundreds of nanoseconds.

[0045] The output sampling module (SMP) 228 is an electrical component or software module that includes: a trigger input (from NED 226), two memory array inputs (MUP 222 and MDW 224), and a memory array output (ME 230). After receiving a pulse as a trigger input from NED 226, SMP 228 reads the memory arrays MUP 222 and MDW 224, subtracts the elements of MUP 222 from the elements of array MDW 224, and stores the results element by element in array ME 230. In form:

[0046] Assumptions:

[0047] k u is the length of array MUP222

[0048] k d is the length of array MDW224, and

[0049] k e is the length of the array ME, where k u =k d =k e = k, and further assume that:

[0050] Kmup[n] is element "n" of array MUP

[0051] Kmdw[n] is element "n" of array MDW

[0052] Kme[n] is element "n" of array ME, then after the trigger:

[0053] For every 0≤n≤k, Kme[n]=Kmup[n]–Kmdw[n]

[0054] Output memory (ME) 230 is an array memory having the same length as MUP 222 and MDW 224 (e.g., k). ME 230 is populated by SMP 228 as described above (i.e., ME 230 will be populated with the difference of MUP 222 and MDW 224). Formally, ME 230 will contain, for each element, for each 0 ≤ n ≤ k, the value Kme[n] = Kmup[n] – Kmdw[n]. Thus, ME 230 includes entropy (randomness) extracted from the Barkhausen signal and can be used in various quantum processing processes that require a truly random number data stream.

[0055] Figure 3 is a perspective view of an exemplary configuration of a Barkhausen sensor for generating a Barkhausen effect signal according to an embodiment of the subject matter described in this application. Figure 3, a first embodiment 300 of a Barkhausen inductor includes a ferromagnetic core 302 surrounded by a magnetizing coil 304 and a flux sensing coil 306. As previously described, capturing the resulting Barkhausen signal includes applying a varying magnetizing force to the ferromagnet and measuring the change in the magnetic flux of the ferromagnet. The measured voltage across the Barkhausen inductor (V(LB)), where V(LB) is the result of random variations in the voltage across the Barkhausen inductor associated with the Barkhausen effect, is a signal indicative of entropy or randomness.

[0056] The second embodiment 308 includes a toroidal ferromagnetic core 310 surrounded by a single magnetization and flux sensing coil 312. As previously described, the coil 312 is configured to magnetize and demagnetize the ferromagnetic core and measure changes in the magnetic flux of the ferromagnetic core. The toroidal ferromagnetic core 310 may be less susceptible to external magnetic interference than the ferromagnetic core 302.

[0057] Figure 4 is a schematic diagram of a low pass filter and the resulting waveform when applied to a square wave generator signal according to an embodiment of the subject matter described herein. Figure 4 , the LPF circuit 400 may include a capacitor 402 and a current detector 404 in the configuration shown. When the circuit 400 is applied to a square wave, the fast rise time of the square wave is smoothed to have a more linear rise time, as shown in waveform 406. The LPF circuit 400 acts as an integrator, providing a ramped voltage to the Barkhausen inductor. The signal rises during the positive phase 408 of the square wave, and the signal falls during the negative phase 410 of the square wave. It should also be understood that the square wave generator preferably has a duty cycle associated with maintaining a symmetrical charging and discharging phase of the Barkhausen inductor (LB), such as a 50% duty cycle. This symmetry is shown in waveform 406, where the maximum value is approximately 700mV and the minimum value is approximately -700mV.

[0058] It should be understood that the result is a random number with high entropy and can be used in a variety of applications. For example, the random number stored at step 120 can be used to perform electronic payment transactions or used as an encryption key to protect electronic communications.

[0059] As will be appreciated by those skilled in the art, aspects of the present invention may be embodied as systems, methods, or computer program products. Thus, aspects of the present invention may take the form of a complete hardware embodiment, a complete software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects, which may all be generally referred to herein as a "circuit," "module," or "system." In addition, aspects of the present invention may take the form of a computer program product embodied in one or more computer-readable media having a computer-readable program code embodied thereon.

[0060] Any combination of one or more computer-readable media may be utilized. A computer-readable medium may be a computer-readable signal medium or a computer-readable storage medium (including, but not limited to, a non-transitory computer-readable storage medium). A computer-readable storage medium may be, for example, but not limited to, an electrical, magnetic, optical, electromagnetic, infrared, or semiconductor system, device, or apparatus, or any suitable combination thereof. More specific examples (non-exhaustive list) of computer-readable storage media would include the following: an electrical connection with one or more wires, a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination thereof. In the context of the present disclosure, a computer-readable storage medium may be any tangible medium capable of containing or storing a program for use by or in conjunction with an instruction execution system, device, or apparatus.

[0061] A computer readable signal medium may include a propagated data signal with computer readable program code embedded therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including but not limited to electromagnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium, and may communicate, propagate, or transport a program for use by or in conjunction with an instruction execution system, device, or apparatus.

[0062] Program code embedded on a computer readable medium may be transmitted via any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.

[0063] The computer program code for performing the operation of aspects of the present invention can be written in any combination of one or more programming languages, including object-oriented programming languages, such as Java, Smalltalk, C++ or similar languages, and traditional procedural programming languages, such as "C" programming language or similar programming languages. The program code can be executed completely on the user's computer as an independent software package, partly on the user's computer, partly on the user's computer and partly on a remote computer, or completely on a remote computer or server. In the latter case scenario, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or can be connected to an external computer (e.g., using an Internet service provider through the Internet).

[0064] Various aspects of the present invention are described below with reference to flowchart illustrations and / or block diagrams of methods, devices (systems) and computer program products according to embodiments of the present invention. It should be understood that each frame of the flowchart illustration and / or block diagram and the combination of frames in the flowchart illustration and / or block diagram can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer or other programmable data processing device to produce a machine, so that instructions executed by a processor of a computer or other programmable data processing device create a mode for implementing the functions / behaviors specified in the flowchart and / or block diagram module (or multiple modules).

[0065] These computer program instructions may also be stored in a computer-readable medium, which may direct a computer, other programmable data processing apparatus, or other device to operate in a specific manner so that the instructions stored in the computer-readable medium produce an article of manufacture including instructions for implementing the functions / actions specified in the flowchart and / or block diagram module (or multiple modules).

[0066] The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device so that a series of operational steps are performed on the computer, other programmable device, or other device to produce a computer-implemented process, so that the instructions executed on the computer or other programmable device provide a process for implementing the functions / actions specified in the flowchart and / or block diagram module (or multiple modules).

[0067] The flowcharts and block diagrams in the accompanying drawings illustrate the possible implementation architectures, functions and operations of the systems, methods and computer program products according to the various embodiments of the present disclosure. In this regard, each module in the flowchart or block diagram may represent a module, fragment or portion of a code, which includes one or more executable instructions for implementing a specified logical function. It should also be noted that in some alternative implementations, the functions indicated in the modules may occur in a different order than indicated in the accompanying drawings. For example, in fact, two modules shown in succession may be executed substantially simultaneously, or sometimes the modules may be executed in reverse order, depending on the functions involved. It will also be noted that each module illustrated in the block diagram and / or flowchart and the combination of modules in the block diagram and / or flowchart can be implemented by a dedicated hardware-based system that performs a specified function or action, or a combination of dedicated hardware and computer instructions.

[0068] The terms used herein are for the purpose of describing specific embodiments only and are not intended to limit the present invention. Unless the context clearly indicates otherwise, as used herein, the singular forms "a", "an" and "the" are also intended to include the plural forms. It will be further understood that when the terms "comprises" and / or "comprising" are used in this specification, it is indicated that the stated features, wholes, steps, operations, elements and / or components are present, but it does not exclude the presence or addition of one or more other features, wholes, steps, operations, elements, components and / or groups thereof.

[0069] The corresponding structures, materials, acts, and equivalents of all "means or step plus function" elements in the following claims are intended to include any structure, material, or act for performing the functions in combination with the elements specifically claimed in the other claims. The description of the invention is presented for the purposes of illustration and description, but is not intended to be exhaustive or limiting of the disclosed forms of the invention. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment has been selected and described in order to best explain the principles and practical application of the invention and to enable others of ordinary skill in the art to understand the various embodiments of the invention and various modifications suitable for the intended particular use.

[0070] Descriptions of various embodiments of the present invention have been given for purposes of illustration, but are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terms used herein are selected to best explain the principles of the embodiments, practical applications or technical improvements over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.

Claims

1. A method comprising: capturing a Barkhausen signal BS based on applying a varying magnetic field to a ferromagnetic material and measuring a change in magnetic flux, wherein the varying magnetic field is based on an oscillating signal and wherein the Barkhausen signal includes a random component and a non-random component; converting the Barkhausen signal into a digital data stream; storing the data stream in one of two memory arrays based on the oscillating signal, wherein a first portion of the data stream is stored as one or more elements in the first memory array and a second portion of the data stream is stored as one or more elements in the second memory array; subtracting elements of the first memory array from elements of the second memory array based on the oscillating signal; as well as A result of the subtraction is stored, wherein the result includes the random component and eliminates the non-random component. The method of claim 1 , wherein the oscillating signal is a square wave.

3. The method of claim 2, wherein the square wave is configured to maintain a symmetrical charging and discharging phase of the Barkhausen inductor. The method of claim 2 , wherein the square wave has a frequency range between 1 KHz and 1 MHz. The method of claim 2 , wherein the square wave has a frequency range that is less than one tenth of a maximum frequency spectrum of the Barkhausen signal. The method of claim 2 , further comprising smoothing a rise time of the square wave.

7. The method of claim 1, wherein applying a varying magnetizing force to the ferromagnetic body comprises magnetizing the ferromagnetic material to a first polarity and demagnetizing the ferromagnetic body.

8. The method of claim 1, further comprising reversing the magnetization of the ferromagnetic material, wherein reversing the magnetization comprises magnetizing the ferromagnetic material to a second polarity opposite to the first polarity.

9. The method of claim 1, wherein measuring changes in the magnetic flux of the ferromagnetic material comprises detecting a voltage resulting from random changes in voltage associated with a Barkhausen effect.

10. The method of claim 1, wherein the Barkhausen inductor comprises at least one coil surrounding a ferromagnetic core. The method of claim 10 , wherein the ferromagnetic core has a ring-shaped structure. 12 . The method of claim 10 , wherein the Barkhausen inductor comprises a first coil surrounding the ferromagnetic core, wherein the first coil is configured to magnetize and demagnetize the ferromagnetic core and measure changes in magnetic flux of the ferromagnetic core.

13. The method of claim 10, wherein the Barkhausen inductor comprises a first coil and a second coil surrounding the ferromagnetic core, wherein the first coil is separated from the second coil, wherein the first coil is configured to magnetize and demagnetize the ferromagnetic core, and the second coil is configured to measure a change in magnetic flux of the ferromagnetic core.

14. The method according to claim 1, wherein a first memory array of the two memory arrays comprises a memory upper part MUP of length k, the memory upper part being connected to the first output and being configured to store the digital data stream starting from an initial position, and to overwrite the first memory array starting from the initial position when the first memory array is filled.

15. The method of claim 1, wherein a first memory array of the two memory arrays comprises a shift register of length k.

16. The method of claim 1 , wherein a second memory array of the two memory arrays comprises a memory lower portion MDW of length k, the memory lower portion being connected to the second output and being configured to store the digital data stream starting from an initial position and to overwrite the second memory array starting from the initial position when the second memory array is filled.

17. The method of claim 1, wherein a second of the two memory arrays comprises a shift register of length k.

18. The method of claim 1, further comprising: a positive edge detector PED generating a pulse in response to detecting a rising edge of the oscillating signal; as well as The negative edge detector NED generates a pulse in response to detecting a falling edge of the oscillating signal.

19. The method of claim 18, wherein the duration of the pulse is approximately one tenth of the period of the oscillating signal.

20. The method of claim 18, further comprising: receiving a pulse train from the PED; as well as In response to receiving each of the pulses, a binary output value is generated that is the inverse of a previous binary output value.

21. The method of claim 20, wherein storing the result comprises storing each element one by one in an output memory array ME.

22. The method of claim 1, wherein the result is used to perform an electronic payment transaction.

23. The method of claim 1, wherein the result is used as an encryption key to protect electronic communications.

24. A system comprising: a Barkhausen sensor for capturing a Barkhausen signal BS based on applying a varying magnetic field to a ferromagnetic material and measuring the variation of magnetic flux, wherein the varying magnetic field is based on an oscillating signal and wherein the Barkhausen signal comprises a random component and a non-random component; A digitizing module, used for converting the Barkhausen signal into a digital data stream; an upper memory array and a lower memory array for storing the data stream based on the oscillating signal, wherein a first portion of the data stream is stored as one or more elements in the upper memory array and a second portion of the data stream is stored as one or more elements in the lower memory array; an output sampling module for subtracting elements of the upper array of the memory from elements of the lower array of the memory based on the oscillating signal; as well as An output memory is used to store a result of the subtraction, wherein the result includes the random component and eliminates the non-random component.