the "pgp" trust model: the relationship between classic ownertrust designation and trust signatures

David Shaw dshaw at
Wed Apr 29 22:36:07 CEST 2009

On Apr 29, 2009, at 2:35 PM, Daniel Kahn Gillmor wrote:

> I'm a bit confused by the implementation of trust signatures and their
> relationship to classic ownertrust.
> With current implementations of gpg and gpg2, it looks like classic
> ownertrust designation is equivalent to a level 1 local (non- 
> exportable)
> trust signature.  Is this correct?
> For some reason, i had been assuming that under the "pgp" trust model,
> classic ownertrust designation would be equivalent to a level ∞  
> local
> trust signature.

A classic signature is exactly equivalent to a level 0 trust  
signature.  It means (more or less) "I assert this user ID matches the  
right human".  A classic signature + setting ownertrust (i.e. "I  
assert this user ID matches the right human and I also trust them to  
make good key signatures"), as you've noted, is effectively a level 1  
non-exportable signature, which makes the same statement in a slightly  
different way.

Classic ownertrust cannot be an infinite level of validity - that  
would imply that if Alice (owner)trusts Baker, she would find that  
Zenobia (many hops away from Baker) is valid even though she has no  
ownertrust set for Charlie, David, Egbert, Frankie, George, etc, etc.

> Alice has certified Bob's key/uid, and grants Bob full ownertrust
> directly (not via a trust signature).
> Bob has certified Carol's key/uid with a level 1 trust signature, full
> trust  (value 120)
> Carol has certified David's key/uid.
> -----------
> (the attached tarball contains 4 GNUPGHOMEs that I believe are  
> described
> by the above)
> Both gpg and gpg2 seem to claim undefined uid validity for David from
> Alice's perspective:
>> 0 wt215 at pip:~/trustsigs$ GNUPGHOME=alice gpg  --trust-model pgp -- 
>> check-sigs  --list-options show-uid-validity
>> alice/pubring.gpg
>> -----------------
>> pub   1024R/CC10A80E 2009-04-29 [expires: 2009-05-06]
>> uid       [ultimate] alice (DO NOT USE -- TESTING)
>> sig!3        CC10A80E 2009-04-29  alice (DO NOT USE -- TESTING)
>> pub   1024R/23CF8068 2009-04-29 [expires: 2009-05-06]
>> uid       [  full  ] bob (DO NOT USE -- TESTING)
>> sig!3        23CF8068 2009-04-29  bob (DO NOT USE -- TESTING)
>> sig!         CC10A80E 2009-04-29  alice (DO NOT USE -- TESTING)
>> pub   1024R/F4A06F8A 2009-04-29 [expires: 2009-05-06]
>> uid       [  full  ] carol (DO NOT USE -- TESTING)
>> sig!3        F4A06F8A 2009-04-29  carol (DO NOT USE -- TESTING)
>> sig!       1 23CF8068 2009-04-29  bob (DO NOT USE -- TESTING)
>> pub   1024R/8B4A0C91 2009-04-29 [expires: 2009-05-06]
>> uid       [  undef ] david (DO NOT USE -- TESTING)
>> sig!3        8B4A0C91 2009-04-29  david (DO NOT USE -- TESTING)
>> sig!         F4A06F8A 2009-04-29  carol (DO NOT USE -- TESTING)
>> 0 wt215 at pip:~/trustsigs$
> My old reasoning was: shouldn't Alice see David as "full" instead of
> "undef", since she fully trusts Bob's certifications, and Bob says  
> that
> Carol is a trusted introducer?

Carol is a trusted introducer to Bob, not to Alice.  If Alice signed  
Bob with a level 2 or above signature (thus granting Bob meta- 
introducer status (i.e. an introducer of trusted introducers) then  
David should be fully valid to Alice.


More information about the Gnupg-devel mailing list