pypuf is a toolbox for simulation, testing, and attacking Physically Unclonable Functions.
Please check out the pypuf hello world in the documentation.
pypuf is used in a number of PUF-related research projects. If you would like to add your project to the list, please open an issue or send an email. In reverse chronological order:
- 2021, Wisiol: Towards Attack Resilient Arbiter PUF-Based Strong PUFs: Design proposal for the LP-PUF, claimed to mitigate known modeling attacks while having reliable responses.
- 2021, Wisiol et al.: Neural-Network-Based Modeling Attacks on XOR Arbiter PUFs Revisited
- 2020, Wisiol et al.: Splitting the Interpose PUF: A Novel Modeling Attack Strategy: Modeling attacks on the Interpose PUF using Logistic Regression in a Divide-and-Conquer strategy.
- 2020, Wisiol et al.: Short Paper: XOR Arbiter PUFs have Systematic Response Bias: Empirical and theoretical study of XOR Arbiter PUF response bias for unbiased arbiter chains.
- 2019, Wisiol et al.: Breaking the Lightweight Secure PUF: Understanding the Relation of Input Transformations and Machine Learning Resistance: An advanced machine learning attack on the Lightweight Secure PUF.
- 2019, Wisiol et al.: Why Attackers Lose: Design and Security Analysis of Arbitrarily Large XOR Arbiter PUFs: Simulation of the stabiltiy of Majority Vote XOR Arbiter PUFs.
Please check out the archived version of pypuf v1 to find the original code used some of the older projects.
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 2, June 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}
}
Testing, linting, licensing. When first contributing, make sure to update the author lists in README.md (2x), index.rst of the docs (2x), and CITATION.cff (1x).
- install
sphinx-build xdoctest
xdoctest pypuf
cd docs
make clean
make doctest && make html
cd
to project rootpython3 -m pytest test
- Make sure author lists are up-to-date.
- Make sure docs are testing and building without error (see above)
- Commit all changes
- Clean up
dist/
folder - Set up new release version:
RELEASE=x.y.z
- Update version to
x.y.z
insetup.py
anddocs/conf.py
- Commit with message "Release Version vx.y.z":
git commit -p -m "Release Version v$RELEASE"
- Tag commit using
git tag -as v$RELEASE -m "Release Version v$RELEASE"
- If applicable, adjust
dev
and/orstable
tags. - Push
- branch:
git push
- tag:
git push origin v$RELEASE
- branch:
- Set environment variables
GITHUB_TOKEN
to a GitHub token,TWINE_USERNAME
andTWINE_PASSWORD
to PyPi credentials. - Publish using
publish nils-wisiol pypuf
- At zenodo.org, make sure the author list is up to date.