Skip to main content

Implementation of archival authentication

Project description

TAF

TAF (The Archive Framework) is an implementation of archival authentication. In other words, TAF ensures that a git repository can be securely cloned/updated and authenticated. In our case, a git repository is a collection of thousands of XML documents and represents a Library of official legal material, but TAF can be used to secure any git repository, regardless of its content.

A git repository can be compromised in a number of ways:

  • an attacker could hack a user's account on a code hosting platform, like GitHub or GitLab,
  • an attacker could hack the hosting platform,
  • an attacker could gain access to a developer's personal computer.

This attacker could then:

  • upload a new GPG key to GitHub,
  • push new commits to any repository,
  • add another authorized user with write access,
  • unprotected the master branch of any of the repositories and force push to it.

TAF's goal is not to prevent any of the attacks listed above from happening, but to detect that an attack took place and cancel an update if that is the case. So, TAF should be used instead of directly calling git pull and git clone.

TAF's implementation strongly relies on The Update Framework (TUF), which helps developers maintain the security of a software update system and provides a flexible framework and specification that developers can adopt into any software update system.

Further reading:

  1. UELMA whitepaper
  2. TAF implementation and integration with TUF

Installation Steps

From PyPI

pip install taf

From source:

pip install -e .

Install extra dependencies when using Yubikey:

pip install taf[yubikey]

Add bash completion:

  1. copy taf-complete.sh to user's directory
  2. add source ./taf-complete.sh to ~/.bash_profile or ~/.bashrc
  3. source ~/.bash_profile

Development Setup

We are using pre-commit to run black code formatter, flake8 and bandit code quality checks.

pip install -e .[dev]
pip install -e .[test]

pre-commit install # registers git pre-commit hook

pre-commit run --all-files # runs code formatting and quality checks for all files

NOTE: For Windows users: Open settings.json and replace paths.

Running Tests

To run tests with mocked Yubikey:

pytest

To run tests with real Yubikey:

  1. Insert test Yubikey
  2. Run taf setup_test_key WARNING: This command will import targets private key to signature slot of your Yubikey, as well as new self-signed x509 certificate!
  3. Run REAL_YK=True pytest or set REAL_YK=True pytest depending on platform.

Platform-specific Wheels

  1. Open https://dev.azure.com/openlawlibrary/TAF/_build
  2. Click on latest build
  3. Open Summary tab
  4. Under Build artifacts published, click on *wheels to download zip

More info in devops document.

Building Wheels on Ubuntu 16.04 and 18.04

Binary wheels exists only for macOS, windows-32bit and windows-64bit platforms for python 3.6!

  • Install dependencies
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6
sudo apt-get install python3.6-venv
sudo apt-get install python3.6-dev
sudo apt-get install swig
sudo apt-get install libpcsclite-dev
sudo apt-get install libssl-dev
sudo apt-get install libykpers-1-dev
  • Create virtual environment
python3.6 -m venv env
pip install --upgrade pip
pip install wheel
pip install taf
  • Test CLI
taf

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

taf-0.7.1.tar.gz (2.4 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

taf-0.7.1-cp38-cp38-win_amd64.whl (4.5 MB view details)

Uploaded CPython 3.8Windows x86-64

taf-0.7.1-cp38-cp38-win32.whl (4.4 MB view details)

Uploaded CPython 3.8Windows x86

taf-0.7.1-cp38-cp38-macosx_10_14_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.8macOS 10.14+ x86-64

taf-0.7.1-cp36-cp36m-win_amd64.whl (4.5 MB view details)

Uploaded CPython 3.6mWindows x86-64

taf-0.7.1-cp36-cp36m-win32.whl (4.4 MB view details)

Uploaded CPython 3.6mWindows x86

taf-0.7.1-cp36-cp36m-macosx_10_14_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.6mmacOS 10.14+ x86-64

File details

Details for the file taf-0.7.1.tar.gz.

File metadata

  • Download URL: taf-0.7.1.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for taf-0.7.1.tar.gz
Algorithm Hash digest
SHA256 78c04f03c62420e49f1fb843798f8bd87cef052eebb35d55bea12d791252d82e
MD5 16772bf19a075b8bb6dea3a4cff85098
BLAKE2b-256 30113597f5f230f8ce9a1915557f1c956f5c954a81d0da9ac893fa0e0f8e131f

See more details on using hashes here.

File details

Details for the file taf-0.7.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: taf-0.7.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 4.5 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for taf-0.7.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e6c9959c47edaefd14a8ad80531a165076599a0c94388a6fc526ab0716b8735b
MD5 fe833321505435b7e0500c7de7ff2bf5
BLAKE2b-256 b91cd89f0bef27f32b50c7c546537da78ac4869eb129e31915744daef7f73658

See more details on using hashes here.

File details

Details for the file taf-0.7.1-cp38-cp38-win32.whl.

File metadata

  • Download URL: taf-0.7.1-cp38-cp38-win32.whl
  • Upload date:
  • Size: 4.4 MB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for taf-0.7.1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 bdf8a647476686793572dbdd55b0507b359eb94252789dbb902c4771942134fb
MD5 e1bda197b63bbb582abf2c9c024ca0f9
BLAKE2b-256 1450709da5ec972ee071d050b46a893cc0acd24cec46673f486216c060509e59

See more details on using hashes here.

File details

Details for the file taf-0.7.1-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: taf-0.7.1-cp38-cp38-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 4.2 MB
  • Tags: CPython 3.8, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for taf-0.7.1-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 9a8240897f81c5e13a1d8380cf8ca5fb9840f7867fdb6dc6e4f2811f60fc39d7
MD5 da555a3d7ce1ef83a607d52638db299b
BLAKE2b-256 4efded199d63b5f555d5de97fc979de7f56b6844b4421564b5b57ffdf3b85fc2

See more details on using hashes here.

File details

Details for the file taf-0.7.1-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: taf-0.7.1-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 4.5 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.8

File hashes

Hashes for taf-0.7.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 ffb3296676739924bbf6ec466a256069e830b50894f508ff7c619064cdba4823
MD5 028ae05cb91818e929fefed778731e88
BLAKE2b-256 50034432a8ccba0c5b431f128828d7d84cb2a087983bb4114fb55961b7d8d225

See more details on using hashes here.

File details

Details for the file taf-0.7.1-cp36-cp36m-win32.whl.

File metadata

  • Download URL: taf-0.7.1-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 4.4 MB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.8

File hashes

Hashes for taf-0.7.1-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 aa5047101ff3d33db6f28c6605db1e55fc30c48638fdd8fdd89745cf18105981
MD5 2ab68bb1d32af530268d00ea7072fd7c
BLAKE2b-256 4e6e0c82a4451e5c9a649e4a20236f71e3fa5657a37a259edc0cab4792e99f7b

See more details on using hashes here.

File details

Details for the file taf-0.7.1-cp36-cp36m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: taf-0.7.1-cp36-cp36m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 4.2 MB
  • Tags: CPython 3.6m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.12

File hashes

Hashes for taf-0.7.1-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 f8906bc9c6bd5c83e10b7e2149a90706afd2612bfbb3098bca71ff94d0e0dfb0
MD5 d1f2537500e6d5d2559561dfe0725cec
BLAKE2b-256 233ce22e64bbbecbae04fd8a46791dec7791e412f3f37e5627a17da2c6775896

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page