https://github.com/fedi-e2ee/pkd-formal
Formal Verification and Requirements Traceability for the Public Key Directory Specification
https://github.com/fedi-e2ee/pkd-formal
duvet fediverse formal-verification key-transparency proverif public-key-directory
Last synced: 28 days ago
JSON representation
Formal Verification and Requirements Traceability for the Public Key Directory Specification
- Host: GitHub
- URL: https://github.com/fedi-e2ee/pkd-formal
- Owner: fedi-e2ee
- License: other
- Created: 2026-01-25T04:11:41.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-02-13T02:17:36.000Z (about 1 month ago)
- Last Synced: 2026-02-13T11:26:46.562Z (about 1 month ago)
- Topics: duvet, fediverse, formal-verification, key-transparency, proverif, public-key-directory
- Language: Shell
- Homepage: https://publickey.directory
- Size: 104 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Formal Methods and the Public Key Directory
[](https://github.com/fedi-e2ee/pkd-formal/actions/workflows/verify.yml)
This repository contains ProVerif models of the [Public Key Directory specification](https://github.com/fedi-e2ee/public-key-directory-specification)
and uses [Duvet](https://github.com/awslabs/duvet) to ensure the specification requiremments are satisfied by
the known implementations.
To understand the motivation for this repository, please refer to:
*[Software Assurance & That Warm and Fuzzy Feeling](https://soatok.blog/2026/01/15/software-assurance-that-warm-and-fuzzy-feeling/)*.
## Running Proofs
### Prerequisites
[Install ProVerif](https://bblanche.gitlabpages.inria.fr/proverif/) to verify the proofs.
[Install Duvet](https://github.com/awslabs/duvet) to trace the requirements from the implementations to the proofs.
### Run the Proofs
```shell
cd proofs
for f in *.pv; do
echo "Verifying $f..."
proverif "$f" || exit 1
done
```
## Duvet Requirements Traceability
All proofs include duvet annotations linking to specification requirements.
Run `duvet report` from the repository root to generate a traceability report.
```shell
duvet report
```