Dr Max Grossmann

Security

This page documents the cryptographic keys and methods I use. For encrypted communication, see the contact page.

Key files and tools are also available on GitHub: mrpg/security.

OpenPGP key

My primary cryptographic key is managed with GnuPG. It is used for email encryption and for signing other keys and files.

Key ID0x1636BA9B
FingerprintA09A92FC5015EE861A7098511999861C1636BA9B
AlgorithmEd25519 (signing), Cv25519 (encryption), Kyber + ML-KEM (encryption)

This key may be used with all my email addresses. Recent versions of Thunderbird support email encryption out of the box. This server also has Web Key Directory (WKD) enabled, so compliant email clients can discover the key automatically.

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
/gAXE0xXy33TiK8vppLM7w//Cw==
=Q94h
-----END PGP PUBLIC KEY BLOCK-----

Post-quantum signature keys

SLH-DSA is the post-quantum signature scheme I currently prefer. I retain my earlier Dilithium key for compatibility.

Both keys below are used for digital signatures, not for encryption.

Item SLH-DSA (preferred) Dilithium
Public key slhdsa-2026.pem dilithium-2026.pem
Algorithm SLH-DSA-SHAKE-256s
FIPS 205; NIST security category 5
Dilithium-8x7-r3
Round 3; NIST security level 5
Purpose Detached file signatures Detached file signatures
Tool botan-slhdsa-signing botan-dilithium-signing
Example file hello.txt hello.txt
Signature hello.txt.botansigh hello.txt.botansig

Authenticating the public keys

Both public keys have detached signatures made with my GnuPG key. Download the public key and its .sig file, then verify it explicitly:

gpg --verify slhdsa-2026.pem.sig slhdsa-2026.pem
gpg --verify dilithium-2026.pem.sig dilithium-2026.pem

The detached signatures are slhdsa-2026.pem.sig and dilithium-2026.pem.sig. If you trust the GnuPG key identified above, a successful check authenticates the post-quantum public key.

Verifying post-quantum signatures

SLH-DSA (preferred), using botan-slhdsa-signing:

./verify.sh -p slhdsa-2026.pem hello.txt.botansigh

Dilithium, using botan-dilithium-signing:

./verify.sh -p dilithium-2026.pem hello.txt.botansig

The verifier exits with status 0 and prints nothing when the signature is valid.

Browser-based encryption

The contact page offers an in-browser encryption tool powered by OpenPGP.js. Messages are encrypted locally in your browser before being sent. No plaintext ever leaves your device.