A Physical Unclonable Function (PUF) is hardware that acts as a one-way function, whose each different instance provides different unique outputs for the same distinct input. Although recent research has demonstrated the merits of PUFs as security primitives for resource-constrained computer systems, better implementations of them need to be identified by future research, in order for them to be commercially adopted.
Physical(ly) Unclon(e)able Functions (PUFs) are instances of hardware modules that ideally act as one-way functions, each of which provides different output for the same input. Therefore, each PUF instance ideally implements a unique function, making its reproduction hard to achieve and, in this way, leading to a notion of unclon(e)ability.
The implementation of PUFs is usually based on the existence of minor imperfections in hardware modules produced using the exact same manufacturing process. Such imperfections do not affect normal operation in a notic(e)able way, but introduce unique (secondary) characteristics. These characteristics are then exploited under specific conditions, being referred to as the challenge that is fed into the PUF, in order to extract a unique (binary) response from the hardware module, based on its unique imperfections and characteristics.
A number of hardware modules and characteristics have been utilised for the implementation of PUFs, such as the unique reflection of optical materials [1], the delay characteristics of arbiters [2][3] and ring oscillators [4], the capacitance of coating materials [5], the start-up values of SRAMs [6][7] and DRAMs [8] and the decay characteristics of DRAM cells [9][10][11]. The concept of a physical one-way function can also be traced in literature dating from many decades ago [12].
PUFs are usually classified into weak ones, which provide a single or very few Challenge-Response Pairs (CRPs), and strong ones, which provide such a large number of CRPs that their complete characterisation within a limited time frame is not possible [13]. Although this classification is important regarding the level of security a PUF can provide, it is also not always completely clear whether a PUF implementation can be considered as weak or strong, as well-known "strong" PUFs have proven vulnerable to modelling or machine learning attacks performed within limited time and, the number of CRPs that can be considered large enough to prevent the complete characterisation of a PUF, obviously, differs for each implementation.
PUFs have proven to be an important security primitive that can be used for cryptographic applications, especially in devices that are resource-constrained and cannot support other security mechanisms. However, a number of attacks against them have brought their role as an adequate security mechanism into question. Therefore, current research is focused on the examination of novel PUF implementations with potentially better qualities and/or the improvement of currently available ones.
Finally, it should also be mentioned that the responses of a particular PUF for a specific challenge at different times typically incorporate a certain degree of noise. Therefore, quite often, fuzzy schemes, such as fuzzy extractors [14], are employed in order to stabilise the PUF responses and usually, at the same time, convert them to bit strings of full binary entropy, which can then be used in cryptography, either as keys or tokens etc.