- Shell 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
- Make OpenPGP only one of many protocols + KEYS.md only holds the current keys + OPENPGP.md describes all OpenPGP details - Make the current public key available at the root - Add scripts/ to automate the various steps: + bootstrap.sh + publish.sh + sign.sh + snapshot.sh + verify.sh |
||
| ceremonies | ||
| history | ||
| scripts | ||
| snapshots | ||
| KEYS.md | ||
| KEYS.md.asc | ||
| OPENPGP.md | ||
| OPENPGP.md.asc | ||
| public-key.asc | ||
| README.md | ||
Keys
Public record of the cryptographic keys of Alexander Hess (i.e., "me" in this repository): What they are, how they are handled, and how to verify them.
There are two audiences for this repository:
- I want a how-to:
OPENPGP.mdandAGE.mdhold the policies and ceremonies, and thescripts/run them. - Readers want to confirm my keys and my identity: Everything needed for that is in the Verify section below.
Verify
The fingerprint of my current PGP key is in KEYS.md,
which is signed.
Compare the fingerprint with at least one source outside this repository to confirm my identity:
- WKD,
for example, via
gpg --locate-keys ah@alexander-hess.com - The keyservers listed in
OPENPGP.md, for example,gpg --keyserver hkps://keys.openpgp.org --search-keys alexander@webartifex.de KEYS.mdobtained from my websites:
Then:
gpg --import public-key.asc
gpg --verify KEYS.md.asc KEYS.md
gpg --verify OPENPGP.md.asc OPENPGP.md
Each gpg --verify will print two things:
Good signature from "Alexander Hess <...>": The file is intact and was signed by this key.WARNING: This key is not certified with a trusted signature!: Becausegpglikely has no record that this key is mine.
So, a good signature plus a matching Primary key fingerprint line is the full result.
To silence the warning on your machine,
tell gpg about your check:
gpg --lsign-key <FPR> # after comparing the fingerprint yourself
If you trusted one of the two keys I retired in 2026,
they certified the current one,
and the supersession is recorded in ceremonies/:
gpg --import history/344EA5AB10D868E0-public.asc history/6D11C1E91D3B0265-public.asc
gpg --check-signatures 8B1140ADB5185334E9FA513B75681C8167312680
gpg --verify ceremonies/2026-07-08_supersession.md.asc ceremonies/2026-07-08_supersession.md
Contents
The files in this repository are described below.
OpenPGP
How I implement OpenPGP:
KEYS.md: Current keys, signedKEYS.md.asc: Detached signature, renewed at every ceremonyOPENPGP.md: OpenPGP policies, ceremonies, and historyOPENPGP.md.asc: Detached signature, renewed at every ceremonypublic-key.asc: Armored export of the current OpenPGP keysnapshots/: Yearly exports of the current OpenPGP keyceremonies/: Signed records of exceptional eventshistory/: Armored public keys of all previous OpenPGP keys
Scripts
sh scripts for my own use:
bootstrap.sh: Imports and trusts all keys on a new machine, then verifies all filessign.sh: Renews the detached signaturesverify.sh: Verifies all signed files against the pinned signing subkey, and warns when the key is about to expiresnapshot.sh: Exports the current key tosnapshots/andpublic-key.ascpublish.sh: Pushes the current key to the keyservers