-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Marc Haber - OpenPGP Key Policy
Zugschlus

OpenPGP Key Policy

This document describes my OpenPGP key policy.

I use OpenPGP subkeys, allowing the Master Key (the key that others sign and that I use to sign other people's keys) to remain offline and securely stored most of the time, while still giving me reasonably convenient access to the subkey functions.

The current setup I use in 2026 is the following:

The certificate

This is my OpenPGP certificate without the signatures.

$ sq inspect 20260610-MarcHaber-D0A41F9E5343595FC133818EADDD7D6BAF8633B7-nosigs.cert | magicpostprocess

      Fingerprint: D0A41F9E5343595FC133818EADDD7D6BAF8633B7
  Public-key algo: EdDSA
  Public-key size: 256 bits
    Creation time: 2026-06-10 10:06:00 UTC
  Expiration time: 2036-06-09 20:13:50 UTC (creation time + 9years 11months 30days 7h 58m 14s)
        Key flags: certification
           UserID: <marc+openpgp2026@haber.li>
           UserID: <mh+debian-packages@zugschlus.de>
           UserID: <mh+openpgp2026@incluesion.de>
           UserID: <mh+openpgp2026@zugschlus.de>
           UserID: Marc Haber - Key Policy https://uri.zugschlus.de/gpg-policy
           UserID: Marc Haber - Zugschlus
           UserID: Marc Philip Haber - *1969-06-10 Munich, Germany

           Subkey: D313236F43105201FE1B1FBF417C6E9417BA3781
  Public-key algo: EdDSA
  Public-key size: 256 bits
    Creation time: 2026-07-21 14:37:16 UTC
  Expiration time: 2027-07-21 20:26:03 UTC (creation time + 11months 30days 9h 39m 11s)
        Key flags: authentication

           Subkey: 6852D7634180AAE6088C83EAD54D300C376391C9
  Public-key algo: EdDSA
  Public-key size: 256 bits
    Creation time: 2026-07-21 14:36:35 UTC
  Expiration time: 2027-07-21 20:25:22 UTC (creation time + 11months 30days 9h 39m 11s)
        Key flags: signing

           Subkey: D201FCCA78BD70E3D55402FCDE5BFD9986E063C9
  Public-key algo: ECDH
  Public-key size: 256 bits
    Creation time: 2026-07-21 14:37:07 UTC
  Expiration time: 2027-07-21 20:25:54 UTC (creation time + 11months 30days 9h 39m 11s)
        Key flags: transport encryption
$

Here is my full certificate (including all signatures) (binary).

The key D0A41F9E5343595FC133818EADDD7D6BAF8633B7 is the Master Key with certification capability and is especially protected.

The Key Policy URL hopefully points to this document.

When I create a new Master Key in the future, I will try to remember to put the year of creation into all UIDs associated with the key. This is of course not possible for the Debian UID.

Offline Master Key

D0A41F9E5343595FC133818EADDD7D6BAF8633B7 is my highest-security key. It has never seen the Internet and never will. The secret part of the key is protected by a passphrase with about 80 bits of entropy and resides on an USB medium stored in a safe place.

A backup of the passphrase is protected using Shamir's Secret Sharing System and is also stored in safe places. There are backups of the key stored at equally secure locations, since losing it would make re-acquiring signatures painful.

When I use this key, I only do so on a dedicated system running from a write-protected medium containing an image of Debian Live.

I use this key to certify other keys (both my own and other people's keys) using the policy described in my GPG Key Signing Policy, and I collect other people's signatures on this key.

This key has a lifetime of 10 years, as recommended by OpenPGP best practices.

Revocation certificates for this key are available to a small number of trusted persons.

Publication

My certificate is published via WKD (advanced method, https://openpgpkey.<domain>/.well-known/), and additionally on https://keyserver.ubuntu.com/ and https://keys.openpgp.org/. Please note that the UIDs that don't contain an e-mail address are usually stripped by the keyservers. The certificate linked here and distributed via WKD are complete.

Subkeys

Emergency Signing Subkey

B46924A1826C17E6665A37EA270D4FE4DAFBAE50 is an emergency signing subkey that is kept offline like the Master Key. I will use it for key updates if I need to update the three subkeys stored on my YubiKey.

Daily Use Subkeys

The three subkeys D313236F43105201FE1B1FBF417C6E9417BA3781 (authentication), 6852D7634180AAE6088C83EAD54D300C376391C9 (signing), and D201FCCA78BD70E3D55402FCDE5BFD9986E063C9 (encryption) are stored on a security token that is PIN protected.

I use these keys for my daily work. The OpenPGP subkey concept allows me to revoke and recreate these keys without invalidating the signatures accumulated on the Master Key. Rolling over a subkey also does not invalidate signatures I have made on other people's keys.

Unfortunately, in 2026 it is not possible to create the private part of an OpenPGP subkey directly on a YubiKey. Therefore, these subkeys were created on the secure system that holds the Master Key and then moved to the Yubikey. I might change this once a method becomes available to make a key created on a YubiKey into an OpenPGP subkey.

These keys have a lifetime of one year and will be replaced on the YubiKey (and revoked) in due time. For encryption keys, I keep backups of the secret parts so that older messages can still be decrypted.

Currently, I keep the original secret parts of the subkeys with a different but equally secure passphrase on the secure system that also holds the Master Key. Whoever obtains that disk could issue new subkeys anyway.

I expect subkeys to be treated as revoked once the Master Key has been revoked. Therefore, I can create revocation certificates for subkeys as long as the Master Key is available. If the Master Key is lost, I will have to revoke the Master Key anyway.

Spam

Spam is a significant problem. I am quite sure that this web page will sooner or later be harvested by spam robots. To combat this problem, all email addresses mentioned on this web page are heavily filtered using MTA policies. Please try to make messages look like legitimate correspondence when using these addresses.

Credits

Creating this document required building knowledge about the Web of Trust, which itself is very much based on mutual trust. It is therefore important to understand the unwritten regulations and etiquette rules.

Many de.comp.security.misc regulars, including Carsten Eilers, Florian Weimer, and Markus Schaaf, helped me build that knowledge since 2002. I also appreciate all the documentation I had to read to keep my knowledge current during the 24 years it took for this document to finally be put into use.

This document was strongly inspired by Bastian Blank, Hanno Wagner, Bjoern Buerger and Marcus Frings. Thank you very much!

Revision History

A new revision of this policy may replace this one at any time.

Version Date Comment
1.0 2003-08-08 Initial release.
1.1 2003-08-12 Included Master Signature Key and new Debian Package Key.
1.2 2003-08-12 New text for Credits.
2.0 2026-07-21 We have subkeys now and we actually have keys!
2.1 2026-08-15 Do some rework, put in git, republish
2.2 2026-08-16 Mention publication of the certificate. Link full certificate.

Signature

A signed version of this document is available here.

-----BEGIN PGP SIGNATURE----- wr0EARYKAG8FgmqDYzYJENVNMAw3Y5HJRxQAAAAAAB4AIHNhbHRAbm90YXRpb25z LnNlcXVvaWEtcGdwLm9yZ+QQPO4kQljMrDF/YJgeAp/Wao5/sZ2lJPVor85tq/NQ FiEEaFLXY0GAquYIjIPq1U0wDDdjkckAADFJAQCuo/6eTKKihYHEHI+9IfHw13zg B3lVy0HmUS+Zi2dKWwD+LI5j6oBF6+y54I5dg+G5pnC/4D3dXB5EwIpv2aTKeQw= =FpZS -----END PGP SIGNATURE-----