# Phase Calibrated Ring Oscillator PUF Design and Application
## 5 PCPUF Application
### Offuscation-Based Authentication  
Since some authentication applications require a higher security level, we provide another scheme for our PUFs with a strong obfuscation. Our prime goal is that even if a current response is disclosed, it does not leak non-negligible information about the next responses with the same challenge, which means attackers cannot use the replay attack to pass the authentication when a repeated challenge is applied. Secondly, the scheme has strong modeling attack resistance by involving unstable bits in the responses, but the authentication accuracy will not be affected in the database. Furthermore, though probe attacks can obtain the information, the final response is still unpredictable. The scheme starts from the \(N\)-bit challenge register in Figure 16. Before launching the challenges, a PCPUF stability model is created in the hardware memory. It records the stable RO pairs and unstable ones. After a challenge is received from the database, the register value will not be updated until the final response is generated. In the first loop, the challenge is hashed by a one-way hash function module with an initial seed. The hash value is sent to the secure address generator as a secure challenge. By mapping the generated addresses to the PCPUF stability model, we select \(N-1\) stable bits and one very unstable RO pair. We enable the unstable RO pair in order to generate one-bit output for obfuscation. The position of the inserted unstable bit depends on the hash value. The \(N\)-bit temporary response is saved in \(RegisterA\). Then, we apply the exclusive or operation to the value between \(RegisterA\) and \(RegisterB\) and store the result in \(RegisterB\). In the first loop, the value in \(RegisterB\) is zero as it is reset along with a new challenge. Since the secure address generator knows the selected \(N-1\) stable bits, they are sent to the one-way hash function module and hashed as the secure challenge of the second loop. Before the hash operation, a one-bit '0' is added to the end of the stable bits to ensure that the input length is \(N\)-bit. This process repeats \(T\) times to generate the final response. In the loop \(t\), the secure address generator still selects \(N-1\) stable bits and one unstable RO pair, which is stored in \(RegisterA\). However, there are \(t\) accumulated unstable bits in \(RegisterB\), given the different inserted positions by the secure address generator. As Algorithm 3 showed, the final response contains \(T\) unstable bits. To check the collision, we involve a Bloom filter and its reset control logic module in our scheme. A Bloom filter is a space-efficient probabilistic data structure that is used to test whether an element is a member of a set. With an obfuscation bit mask from the secure address generator, the \(N-T\) stable bits are sent from \(RegisterB\) to the Bloom filter. After being added by \(T\)-bit zeroes, the string is hashed by \(k\) hash functions, and the hashed values are stored in an \(M\)-bit Non-Volatile Memory (NVM) Bloom filter. The NVM should be tamper resistant against any malicious reset. Whenever a final response is generated, we check the Bloom filter first to ensure that the response has never been released before. If there is no collision, we update the Bloom filter with the \(k\) hash values and output \(RegisterB\) as the final response. However, once a collision is found, the final response will be stalled in \(RegisterB\). As a further obfuscation, we rerun this process for \(T\) times to generate a new response. However, this time, we switch the hash function input to the entire \(RegisterA\), which means the unstable bit is included in the one-way hash input. After \(T\) loops, the final response will hardly disclose any information of the PUF state and pattern. Due to memory space limitation, it is not possible to store infinite hash values in the NVM. Therefore, we use a reset control logic to clean the Bloom filter when the false positive reaches a preset threshold.