13

gpg --list-sigs gives me somethings like the following (I edited the output only to show the interesting/different rows):

pub   2048R/4ACE309C 2016-11-01
uid                  lala_test2 <lala2@test.org>
sig 3        4ACE309C 2016-11-01  lala_test2 <lala2@test.org>
uid                  test_key <test_key@test.org>
sig 3        4ACE309C 2016-11-01  lala_test2 <lala2@test.org>
sub   2048R/EA9FDC87 2016-11-01
sig          4ACE309C 2016-11-01  lala_test2 <lala2@test.org>
sig 2        03A9DA1F 2014-02-11  [User ID not found]
sig 3        5B51CBCF 2011-10-25  [User ID not found]
sig 3        06B47049 2011-10-26  [User ID not found]
sig 3        00C85EF1 2011-10-31  [User ID not found]
sig 3        5A4BEDCE 2011-10-06  [User ID not found]
sig        1 F2648165 2011-10-07  [User ID not found]
sig       X  CA57AD7C 2005-07-31  [User ID not found]
sig       X  CA57AD7C 2005-08-01  [User ID not found]
sig 2     X  DC79FAC9 2003-09-26  [User ID not found]
sig          7EE2682F 2016-06-03  [User ID not found]
rev          7EE2682F 2016-06-03  [User ID not found]

The tags in the first column means:

  • pub -> public key
  • uid -> user id
  • sig -> signature, from another person saying that he trust the key under pub tag
  • sub -> subkey
  • rev -> is this a signature whose key was revoked by the signer?

2048R -> 2048 is the key size and R for RSA. There is also the short key id, the creation date, and the last one is the user ID when available.

What do the numbers in a sig row after first column mean?

Jens Erat
  • 23,816
  • 12
  • 75
  • 96
Lilás
  • 339
  • 2
  • 7

2 Answers2

14

Certification Levels

There are different classes of certifications. Quoting RFC 4880, OpenPGP, 5.2.1. Signature Types:

[...]

0x10: Generic certification of a User ID and Public-Key packet.
   The issuer of this certification does not make any particular
   assertion as to how well the certifier has checked that the owner
   of the key is in fact the person described by the User ID.

0x11: Persona certification of a User ID and Public-Key packet.
   The issuer of this certification has not done any verification of
   the claim that the owner of this key is the User ID specified.

0x12: Casual certification of a User ID and Public-Key packet.
   The issuer of this certification has done some casual
   verification of the claim of identity.

0x13: Positive certification of a User ID and Public-Key packet.
   The issuer of this certification has done substantial
   verification of the claim of identity.

Most OpenPGP implementations make their "key signatures" as 0x10
certifications.  Some implementations can issue 0x11-0x13
certifications, but few differentiate between the types.

[...]

GnuPG displays the "normal" 0x10 signatures as sig and the advanced signatures distinguishing between different kinds of certification levels with a number following: 0x11 as sig 1, 0x12 as sig 2 and 0x13 as sig 3. rev indicates revoked signatures.

The output of --list-sigs is also explained by the GnuPG manual pages (man gpg):

--list-sigs
    Same as --list-keys, but the signatures are listed too.  This command has the
    same effect as using --list-keys with --with-sig-list.

    For  each  signature listed, there are several flags in between the "sig" tag
    and keyid. These flags give additional information about each signature. From
    left  to  right,  they  are  the numbers 1-3 for certificate check level (see
    --ask-cert-level), "L" for a local or non-exportable signature (see  --lsign-
    key), "R" for a nonRevocable signature (see the --edit-key command "nrsign"),
    "P" for a signature that contains a policy URL (see  --cert-policy-url),  "N"
    for  a  signature  that contains a notation (see --cert-notation), "X" for an
    eXpired signature (see --ask-cert-expire), and the numbers 1-9 or "T" for  10
    and  above  to  indicate  trust  signature levels (see the --edit-key command
    "tsign").

Vagueness

Also note the first paragraph of the specification's section, which indicates there is no general, rigid definition of the certification levels:

There are a number of possible meanings for a signature, which are indicated in a signature type octet in any given signature. Please note that the vagueness of these meanings is not a flaw, but a feature of the system. Because OpenPGP places final authority for validity upon the receiver of a signature, it may be that one signer's casual act might be more rigorous than some other authority's positive act. [...]

Because of this, some people post certification policies. I provided some discussion in What are you saying when you sign a PGP key?

Jens Erat
  • 23,816
  • 12
  • 75
  • 96
  • Thanks for your answer, really detailed. What about the 1 and X in keys F2648165 and CA57AD7C ? They seem to be in a separated column – Lilás Nov 01 '16 at 20:16
  • 1
    This is described in the cited GnuPG manual paragraph: ""X" for an eXpired signature (see --ask-cert-expire), and the numbers 1-9 or "T" for 10 and above to indicate trust signature levels". – Jens Erat Nov 01 '16 at 20:18
  • That is the problem, the hex-codes you mentioned doesn't correspond to the decimal numbers they represent, adding to the confusion of using PGP for most people. It's sad to see that although PGP is working perfectly when used and configured properly, it's user experience (UX) is still in the middle ages, preventing wide-spread use. – not2qubit May 09 '17 at 14:30
  • For the `0x13` note: *"Most OpenPGP implementations make their 'key signatures' as 0x10 certifications. Some implementations can issue 0x11-0x13 certifications, but few differentiate between the types"*, lead you to believe that the `0x00` case, would be represented by the empty field. But IDK if that is a correct interpretation? – not2qubit May 09 '17 at 14:46
  • @not2qubit - It says in the man page under `--default-cert-level` that 0 is default, and when you generate a signature is produces `sig' in the `--list-sigs` output. So yes, `sig` menas 0, `sig 1` manes 1, etc. – Diagon Jul 29 '20 at 10:48
7

Trying to clarify some of the details from Jens Erat's post in human language: " " => 0x00 Generic certification: does not make any particular ownership assertion "1" => 0x11 Persona certification: has not done any ownership verification "2" => 0x12 Casual certification: has done some identity verification "3" => 0x13 Positive certification: has done substantial identity verification

And again for readability: "L" for a Local or non-exportable signature (see --lsign- key) "R" for a non-Revocable signature (see --edit-key command "nrsign") "P" for a signature that contains a Policy URL (see --cert-policy-url) "N" for a signature that contains a Notation (see --cert-notation) "X" for an eXpired signature (see --ask-cert-expire) "T" or [1-9] indicate trust signature levels (see --edit-key command "tsign")

not2qubit
  • 275
  • 2
  • 8