pypuf: Cryptanalysis of Physically Unclonable Functions

https://zenodo.org/badge/DOI/10.5281/zenodo.3901410.svg

pypuf is a toolbox for simulation, testing, and attacking Physically Unclonable Functions. Some functionality is only implemented in the archived version of pypuf v1.

Getting Started

pypuf is available via pypi:

pip3 install pypuf

To simulate an XOR Arbiter PUF with 64 bit challenge length and 2 arbiter chains, follow these steps.

First, create a new XOR Arbiter PUF instance with the given dimensions and a fixed seed for reproducibility.

>>> from pypuf.simulation import XORArbiterPUF
>>> puf = XORArbiterPUF(n=64, k=2, seed=1)

Then generate a list of N random challenges of length 64 (again with a seed for reproducibility).

>>> from pypuf.io import random_inputs
>>> challenges = random_inputs(n=64, N=10, seed=2)

Finally, evaluate the XOR Arbiter PUF on these challenges, it will yield 10 responses.

>>> puf.eval(challenges)
array([-1, -1,  1,  1,  1,  1,  1,  1, -1, -1], dtype=int8)

For a more detailed information on simulation of PUFs, continue with the section on simulations.

Getting Help

If you need help beyond this documentation, please contact me at pypuf(a-t)nils-wisiol.de.

Citation

To refer to pypuf, please use DOI 10.5281/zenodo.3901410. pypuf is published via Zenodo. Please cite this work as

Nils Wisiol, Christoph Gräbnitz, Christopher Mühl, Benjamin Zengin, Tudor Soroceanu, Niklas Pirnay, Khalid T. Mursi, & Adomas Baliuka. pypuf: Cryptanalysis of Physically Unclonable Functions (Version v2, August 2021). Zenodo. https://doi.org/10.5281/zenodo.3901410

or use the following BibTeX:

@software{pypuf,
  author       = {Nils Wisiol and
                  Christoph Gräbnitz and
                  Christopher Mühl and
                  Benjamin Zengin and
                  Tudor Soroceanu and
                  Niklas Pirnay and
                  Khalid T. Mursi and
                  Adomas Baliuka},
  title        = {{pypuf: Cryptanalysis of Physically Unclonable
                   Functions}},
  year         = 2021,
  publisher    = {Zenodo},
  version      = {v2},
  doi          = {10.5281/zenodo.3901410},
  url          = {https://doi.org/10.5281/zenodo.3901410}
}

About this document

To add to our documentation or fix a mistake, please submit a Pull Request at https://github.com/nils-wisiol/pypuf.