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.

GnuPG 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 (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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
=Bubh
-----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 a fork of OpenPGP.js. Messages are encrypted locally in your browser using my GnuPG public key before being sent. No plaintext ever leaves your device.