GnuPG Web-of-Trust calculations based on trust-signatures don't add up (T7611)

Daniel Kahn Gillmor dkg at fifthhorseman.net
Tue May 6 22:24:41 CEST 2025


Hey folks--

I just wanted to give people a heads-up that GnuPG's web-of-trust
calculations are … surprising to me, to say the least.  In particular,
*adding* a trust signature to a WoT path can apparently *reduce* the
calculated validity of a target userID+certificate.

If anyone is actually relying on Web-of-Trust calculations from GnuPG
for their project, i hope you'll take a look at this issue and weigh in
on whether it meets your expectations or not.

Over on https://dev.gnupg.org/T7611 there is a simple script that
generates an example graph that looks like this:

```
      ⓕ2    ⓕ1
Alice —→ Bob —→ Carol → Dave [marginal]
  ⓕ2 🡖        🡕ⓜ1
         Bill
```

Legend: ⓕx means "trust signature (tsig) with full trust of depth x" and
ⓜy means "tsig with marginal trust of depth y".

With the full graph of tsigs shown here, and with Alice being ultimately
trusted, GnuPG claims that Dave's certificate has marginal validity.

If we remove the tsig from Alice to Bill, then Dave's certificate
increases from marginal to full validity.

```
      ⓕ2    ⓕ1
Alice —→ Bob —→ Carol → Dave [full]
              🡕ⓜ1
         Bill
```

That's right: *removing* an independent tsig causes calculated validty
to *increase*.  And vice versa: *adding* an independent tsig causes
calculated validty to *decrease*.

In that ticket, Werner identified this as desired/intended behavior, and
asked for further conversation to happen on this mailing list, hence
this e-mail message.

To be clear about my understanding:

 - I generally expect WoT calculations to be cumulative or additive in
   some sense.  For example, gpg(1) documents the --marginals-needed
   option as "Number of marginally trusted users to introduce a new key
   signer".  This implies (to me, anyway) that adding a marginally
   trusted certification should be able to *increase* the validity of a
   user ID in an OpenPGP certificate.

 - I find it surprising that the addition of a marginally trusted user
   (without superseding any existing certification) would actually
   *reduce* the amount of confidence in the validity of some
   certificate.

 - The code archaeology in T7611 turns up a (rather old) comment
   suggesting that timestamps of signature creation should make some
   sort of difference.  But in the tests i ran, all signatures and all
   certificates are made within the same second, the finest temporal
   resolution that OpenPGP is capable of recording.  So i'm not sure how
   questions about timestamp are relevant.

I want to also note that it's possible that no one is relying on
Web-of-Trust calculations from GnuPG.  From my perspective:

 - I contributed for years to the Monkeysphere (which validated SSH
   cryptographic keys for SSH servers and users), which basically
   assumed that GnuPG's WoT calculations could be relied on, but i don't
   think anyone in that project (including me) ever tested complex
   graphs.  As far as i know, Monkeysphere was ever only deployed with
   single-hop certification authorities in either direction.  For
   example, the ssh user would privately/internally certify the SSH
   host's OpenPGP certificate.  And the SSH host administrator might
   certify the end-user's OpenPGP certificate, which the SSH host itself
   would rely on.

 - For Debian's keyring-maint (where i act as an advisor), which does
   ask questions about OpenPGP certification connectivity, it really
   only uses single-hop certifications from any of a known set of Debian
   Developer certificates.  Interesting graphs can be drawn about WoT
   connectivity from those structures, but they have no concrete effect
   on how Debian works, and they typically aren't using GnuPG's userid
   validity or trust calculations anyway.

 - For regular e-mail address cryptographic identity management, I've
   only ever seen people using the OpenPGP tooling for management of a
   TOFUish keystore, even when they use GnuPG.  Alternately, people
   using OpenPGP might use an entirely non-WoT scheme like the Autocrypt
   recommendation engine.

It would be pretty cool if the OpenPGP WoT was useful in some contexts,
but none of the above seem to actually use it.  And if there is a system
that uses it where GnuPG is in the mix, I'd live to hear about it!  In
such a case, i hope the folks who depend on that system will not be
surprised by this report.  If you're one of those people, I'd be
particularly interested to learn more about your mental model of the
network of OpenPGP identity certifications that we know as the "web of
trust", so i can understand it better.

All the best,

    --dkg
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 227 bytes
Desc: not available
URL: <https://lists.gnupg.org/pipermail/gnupg-devel/attachments/20250506/cc70f39c/attachment-0001.sig>


More information about the Gnupg-devel mailing list