Physical unclonable function

Physical Unclonable Functions (PUFs) are hardware modules that can generate randomness. Their operation is based on "locked" randomness, stemming from tiny imperfections (mistakes) in the manufacturing process of hardware, which result in the production (output) of a bit-string which appears random and can be considered as unique per hardware instance (device).
Essentially, in each PUF circuit, electric current may move through this circuit in two distinct ways/paths, such as two wires. If it goes mostly through one of these ways/paths, a logical zero is produced, whereas if it goes through the other way/path, a logical one is produced. The prevalent path is chosen according to tiny details (characteristics) of the circuit, such as which wire is thicker or longer. However, the two wires have been designed to be exactly the same, and only differ because of imperfections of the manufacturing process, which cause random tiny mistakes (imperfections), such as one wire being 5 mm, and the other 5.00001 mm. Therefore, and as the choice of the prevalent path is dependent on a large number of tiny details (thickness, length, resistance of the wires, etc.), which are very difficult to determine beforehand, this choice appears as random, and can be considered as chaotic. The tiny production mistakes that affect the path choice cannot be predicted as they happen randomly in the manufacturing process. Nevertheless, after they happen, they stay like that, for example, the small difference in length between two wires will always exist after they have been manufactured, so the aforementioned path choice is "locked", although it is "random" (chaotic), and will always give the same result.
Since most contemporary hardware devices consist of millions of circuits, millions of individual choices can be made at the same time, resulting in a string (series) of bits (zeros and ones) of a very large length. Since each choice is independent and "random", the probability that two such strings will be the same becomes extremely small due to their very large length. Therefore, a PUF can be used to produce a large bit-string that will be "unique" per device and always the same, when measured under exactly the same conditions. Such a bit string can then be used in cryptography as an inherently occurring cryptographic token, such as a key for encryption. As external (environmental) conditions may affect the result of a PUF (its "random" unique bit-string output), error correction may be needed to force this result to be the same between different measurements.
Hardware, which by its nature allows for a choice of path for electricity, such as memory cells, can be easily employed in order to implement a PUF in a device, without the need of additional circuitry. Therefore, PUFs can be quite cost-efficient and lightweight.