/pypuf

Cryptanalysis of Physically Unclonable Functions

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

pypuf: Cryptanalysis of Physically Unclonable Functions

pypi DOI

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:

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

  1. install sphinx-build xdoctest
  2. xdoctest pypuf
  3. cd docs
  4. make clean
  5. make doctest && make html
  6. cd to project root
  7. python3 -m pytest test

Maintainer: Prepare New Release

  1. Make sure author lists are up-to-date.
  2. Make sure docs are testing and building without error (see above)
  3. Commit all changes
  4. Clean up dist/ folder
  5. Set up new release version: RELEASE=x.y.z
  6. Update version to x.y.z in setup.py and docs/conf.py
  7. Commit with message "Release Version vx.y.z": git commit -p -m "Release Version v$RELEASE"
  8. Tag commit using git tag -as v$RELEASE -m "Release Version v$RELEASE"
  9. If applicable, adjust dev and/or stable tags.
  10. Push
    1. branch: git push
    2. tag: git push origin v$RELEASE
  11. Set environment variables GITHUB_TOKEN to a GitHub token, TWINE_USERNAME and TWINE_PASSWORD to PyPi credentials.
  12. Publish using publish nils-wisiol pypuf
  13. At zenodo.org, make sure the author list is up to date.