# Chaos-Based Physical Unclonable Functions
## 2 Chaos-Based PUFs
If the switching of an SCRO occurs at one of the slopes, it may cause a voltage discontinuity at the MUX output. This glitch, after it propagates through a number of inverters, causes a slight shift of the rising edge in one of SCROs, in which the inconsistency occurred. These states' inconsistencies can be observed as extensions of linear \(B\) and \(B^{\prime}\) regions and were marked as \(C\) and \(C^{\prime}\) in Figure 3 (as well as in Figure 2). Another phenomenon occurs when the rising edges of SCROs are close enough to each other (\(\delta\!\approx\!0\)). In this case, the PD classification result (of SCRO slope priority) may come a little late due to occurrences of metastability [15]. Such events are quite rare (but possible); nevertheless, they also influence the delay of the feedback correction signal (see [45]). In very rare cases of \(\delta\!\approx\!0\), the PD classification result (\(s\)) can be even wrong (a random value, due to metastability occurrence). Such a chaotic system is very sensitive to tolerances of parameters of all electronic devices used in the design. Its sensitivity originates from all the physical parameters affected by process variations (transistors and paths geometry, material heterogeneity and as a result the electrical parameters). For this reason, any change in the circuit's structure (e.g., the use of a different inverter or different path connecting the same elements) influences its behavior--it also opens the door to creation of various challenge vectors (in the PUF's _challenge-response_ system). It is also the reason why every instance of an identical circuit (having exactly the same placement and routing) behaves in a different way. One can see in the example in Figure 2 that, after several steps (\(m:15\)-\(20\)), the circuit's trajectory starts different paths and, beginning from \(m=29\), the PD classifications also differ. This step (\(m=29\)) is a specific turning point for this particular implementation (particular structure). If the change in the circuit's structure (for the sake of PUF's challenge) is not an option, the paths or inverters can be easily multiplexed--for example, in the way it is implemented in BR-PUFs [33]. Figure 2: Deterministic chaotic \(\delta[m]\) time series (in CPLD XC2C256). Since the SCROs can be considered as free running ring oscillators, there is obviously a phase walk present. At some point, it becomes to influence the circuit's behavior resulting in circuit's random state trajectory (as utilized in [45] for the use of true random number generator). If there was no phase walk (and other stochastic physical processes), the circuit would be a perfect deterministic chaotic system (with only the \"initial conditions\" determining its further behavior). However, after a period of time (a number of \(m\) steps, corresponding to \(m\) PD classifications), the circuit turns into a random number generator (RNG). Nevertheless, before it happens, and, after instance's trajectory begins to differ, there is a time window for a PUF extraction as moments of randomness initialization--depicted in Figure 4.  
Multiple runs (\(n\in N\)) of the same instances (\(k\in K\)) of the circuit in Figure 1 result in the same behavior till the moment when the stochastic physical processes start to randomize subsequent chaotic trajectories. It can be easily measured and observed by entropy values \(H_{k}\) obtained from various realizations of \(s_{N}[m]\) (e.g., \(|N|=50\)) for adjacent steps (\(m=0,1,2,...\)) within one of instances. For example, if the output produced by one instance (\(k\)) at a specific step (\(m\)) for each of the (\(N\)) realizations is the same (either \(1\) or \(0\)), then \(H_{k}=0\). On the other hand, if the half of the realizations at this step have different output values than the other half, then \(H_{k}=1\). When \(H_{th}=0.5\) is reached, only a single bit out of nine has a different value (specifically \(H_{k}=0.50326\)). Following the definition of [PERSON]'s entropy [47], the order of ones and zeros does not matter.