# Chaos Based Cryptographic Pseudo-Random Number Generator Template with Dynamic State Change +
## 1 Introduction
When the system generates rapidly divergent trajectories, the largest exponent, \(\lambda_{1}\), is positive, indicating random-like (chaotic) behavior. A positive value for the second Lyapunov exponent also is the mark of a hyperchaotic evolution, random-like dynamics in two directions of the space. The last exponent has to be negative to maintain the bounded space. Figure 3 shows the three Lyapunov exponents for a fixed value of the parameter \(b\) and varying \(a\). Initial conditions, although irrelevant for this metric, \((x_{0},y_{0},z_{0})\), are the same as above. \begin{table}
\begin{tabular}{c c c} \hline \hline
**Position** & **a** & **b** \\ \hline top left & 1.066073952077004 & \(-\)0.122171054133312 \\ bottom left & 1.822849696327467 & \(-\)0.210260146847663 \\ top right & 1.422086796614167 & \(-\)0.292608160780357 \\ bottom right & 1.566451149781642 & 0.210678068488918 \\ \hline \hline \end{tabular}
\end{table} 
Table 1: The parameter values for the system evolutions displayed in Figure 2.  
Figure 2: Phase portraits of the generalized three-dimensional Hénon map for different \((a;b)\) pairs. In [24] the authors also attempted an FPGA implementation for the generator, comparing the results with a highly optimized FPGA implementation of a cellular automaton pRNG in [31]. The conclusion was that due to the recursive nature of the chaotic functions and the fact that the computation must be done in double precision floating point, the performance of the design will be limited, hardware-specific optimizations like pipelining and speculative execution being unfeasible. This makes the design FPGA-resistant which in certain types of applications, like blockchain, may even be an advantage. As already stated, the values for \(\lambda_{1}\) should be positive. When setting \(b=0.1\), the only interval for \(a\) where the pseudo-random behavior is enabled by the 3D generalized Henon map is \([1.3;1.8)\). The two coefficients are highlighted in Figure 4. Different values for the step used to compute their values (top left: \(10^{-2}\), top right: \(10^{-3}\), bottom left: \(10^{-4}\), bottom right: \(10^{-5}\)) reveal more and more undesired values for the pair \((a,0.1)\)--as the step is smaller. Those pairs are the ones for which \(\lambda_{1}<0\). The fact that there are no continuous intervals of values for either \(a\) or \(b\) for which the map is chaotic or hyper-chaotic makes it difficult to choose or to validate values for the parameters and the initial states such that the generator does not enter a periodic loop. Since these five values represent the _seed_ of the generator, it is crucial that their choice is appropriate. In [32] the solutions presented were either to define a system that will transform an invalid seed into a correct one during the system's initialization, or to periodically alter the system's trajectory during runtime, in order to avoid stable orbits. The first research direction, towards seed validation, concluded with [23] and [33], where it was shown that Lyapunov exponents could be a solution for determining if a tuple of initial states and parameter values are suitable for randomness generation. However, there are still a large number of operations required for computing the exponents, which introduces an unwanted latency to the system's initialization. Also, while there is an obvious correlation between the chaotic behavior of the map and randomness quality of the generated sequence, some inconsistencies were observed: although the Lyapunov exponents were positive, the sequence failed to pass the NIST tests and vice-versa. In the end, the focus turned towards the second approach, where a perturbation is introduced periodically in the evolution of the system to circumvent stable orbits, the initial research being published in [32].