pypuf: Cryptanalysis of Physically Unclonable Functions
pypuf is a toolbox for simulation, testing, and attacking Physically Unclonable Functions.
Getting Started
Please check out the pypuf hello world in the documentation.
Studies and Results
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.
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 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}
}
Contribute
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).
Run Tests
- install
sphinx-build xdoctest xdoctest pypufcd docsmake cleanmake doctest && make htmlcdto project rootpython3 -m pytest test
Maintainer: Prepare New Release
- 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.zinsetup.pyanddocs/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
devand/orstabletags. - Push
- branch:
git push - tag:
git push origin v$RELEASE
- branch:
- Set environment variables
GITHUB_TOKENto a GitHub token,TWINE_USERNAMEandTWINE_PASSWORDto PyPi credentials. - Publish using
publish nils-wisiol pypuf - At zenodo.org, make sure the author list is up to date.
Release files for pypuf 3.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pypuf-3.2.1.tar.gz | 75.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pypuf-3.2.1-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 132.6 kB
Release files / pypuf-3.2.1.tar.gz
| Download URL | pypuf-3.2.1.tar.gz |
|---|---|
| Size | 75.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4ef3ab91ede06f3d9234741fd0d63ea59421e3f76b61535fafbcc754975a4c80
|
|
BLAKE2b-256 checksum How to use checksums |
6828f79236a83ba056009715d8c559b59f2737f8d1674937ab6c9063c7206b7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.5.0.1 requests/2.22.0 requests-toolbelt/0.8.0 tqdm/4.51.0 CPython/3.8.10
|
Release files / pypuf-3.2.1-py2.py3-none-any.whl
| Download URL | pypuf-3.2.1-py2.py3-none-any.whl |
|---|---|
| Size | 57.0 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
f65beb13de69f375b705ca11369469bcbc88859fc45db9af6a884e1843e6712d
|
|
BLAKE2b-256 checksum How to use checksums |
3b5320de7912ab162a8e7a0e73cb3a14e449f6840e690057feed5dc5b3286e21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.5.0.1 requests/2.22.0 requests-toolbelt/0.8.0 tqdm/4.51.0 CPython/3.8.10
|