OpenPGP und GPG kennen das Konzept der Trust Signatures mit Level 0 bis n. Mit einer solchen Signatur wird neben dem Eigner eines Public Keys auch dessen Vertrauenswürdigkeit als "Introducer" beschrieben:
Damit lassen sich recht einfach CA-Hierarchien aufbauen und nutzen, wie sie beim OpenPGP-Konkurrenten S/MIME üblich sind. Hier eine Beispiel-Hierarchie mit einer Root-CA, 2 Organisations-CAs und 2 Nutzern:
Die Root-CA erstellt Trust Signatures vom Level 1 für die beiden Org-CAs, die ihrerseits normale Signaturen für die Benutzer Anton und Berta generieren. Um von der Vertrauenskette zu profitieren, muss jeder Benutzer den Public Key der Root-CA importieren und mit einer Trust Signature vom Level 2 signieren.
Damit gilt die Root-CA als Meta Introducer und die Org-CAs werden zu vertrauenswürdigen Introducern. Die beiden Nutzer Anton und Berta betrachten daher den Public Key des jeweils anderen Nutzers als gültig, ohne für diesen oder seine Org-CA eine Signatur erstellen zu müssen.
Für eigene Experimente unter einem Linux-Nutzerkennzeichen lassen sich die unterschiedlichen Partner gut verwalten, indem man pro Partner ein eigenes GPG-Verzeichnis nutzt, z.B.
.gnupg_anton .gnupg_berta .gnupg_org1ca .gnupg_org2ca .gnupg_rootca
im Homeverzeichnis. Um jeweils darauf zuzugreifen, stellt man sich am besten die Umgebungsvariable GNUPGHOME geeignet ein:
cd ~/.gnupg_rootca export GNUPGHOME=$PWD
Nehmen wir an, dass der öffentliche GPG-Schlüsselring von Nutzer Anton bereits folgendes aufweist:
$> gpg --list-sigs /home/user/.gnupg_anton/pubring.gpg ----------------------------------------------------------- pub 1024D/C015EBFC 2009-01-14 [verfällt: 2012-01-14] uid anton <anton@dummy.org> sig 3 C015EBFC 2009-01-14 anton <anton@dummy.org> sig A2610CDB 2011-01-17 org1ca <org1ca@dummy.org> sub 1024g/39A2F161 2009-01-14 [verfällt: 2012-01-14] sig C015EBFC 2009-01-14 anton <anton@dummy.org> pub 1024D/6EDF1B3B 2009-01-14 [verfällt: 2012-01-14] uid rootca <rootca@dummy.org> sig 3 6EDF1B3B 2009-01-14 rootca <rootca@dummy.org> sub 1024g/FE6BE5C5 2009-01-14 [verfällt: 2012-01-14] sig 6EDF1B3B 2009-01-14 rootca <rootca@dummy.org> pub 1024D/A2610CDB 2009-01-14 [verfällt: 2012-01-14] sig R A2610CDB 2009-01-26 org1ca <org1ca@dummy.org> uid org1ca <org1ca@dummy.org> sig 3 A2610CDB 2009-01-14 org1ca <org1ca@dummy.org> sig 1 6EDF1B3B 2011-01-17 rootca <rootca@dummy.org> sub 1024g/7EDB69BF 2009-01-14 [verfällt: 2012-01-14] sig A2610CDB 2009-01-14 org1ca <org1ca@dummy.org> pub 1024D/D5FE5018 2009-01-14 [verfällt: 2012-01-14] uid org2ca <org2ca@dummy.org> sig 3 D5FE5018 2009-01-14 org2ca <org2ca@dummy.org> sig 1 6EDF1B3B 2011-01-17 rootca <rootca@dummy.org> sub 1024g/7693DBC6 2009-01-14 [verfällt: 2012-01-14] sig D5FE5018 2009-01-14 org2ca <org2ca@dummy.org> pub 1024D/086641BD 2009-01-14 [verfällt: 2012-01-14] uid berta <berta@dummy.org> sig 3 086641BD 2009-01-14 berta <berta@dummy.org> sig D5FE5018 2011-01-17 org2ca <org2ca@dummy.org> sub 1024g/AD7A9613 2009-01-14 [verfällt: 2012-01-14] sig 086641BD 2009-01-14 berta <berta@dummy.org>
Die jeweils blau gekennzeichneten Zahlen geben das Level der Trust Signature an. In der obigen Konstellation betrachtet Anton den Public Key von Berta als nicht vertrauenswürdig, die Gültigkeit ist unbekannt:
$> gpg --list-sigs --with-colons ... pub:-:1024:17:98D69F68086641BD:2009-01-14:2012-01-14::-:berta <berta@dummy.org>::scESC: sig:::17:98D69F68086641BD:2009-01-14::::berta <berta@dummy.org>:13x: sig:::17:C204D31FD5FE5018:2011-01-17::::org2ca <org2ca@dummy.org>:10x: ... $> gpg --edit-key berta gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pub 1024D/086641BD erzeugt: 2009-01-14 verfällt: 2012-01-14 Aufruf: SC Vertrauen: unbekannt Gültigkeit: unbekannt sub 1024g/AD7A9613 erzeugt: 2009-01-14 verfällt: 2012-01-14 Aufruf: E [ unbek.] (1). berta <berta@dummy.org> gpg>
Mit dem Unterkommando tsign von --edit-key kann Anton eine Trust Signature für den Public Key der Root-CA erstellen:
$> gpg --edit-key rootca gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pub 1024D/6EDF1B3B erzeugt: 2009-01-14 verfällt: 2012-01-14 Aufruf: SC Vertrauen: unbekannt Gültigkeit: unbekannt sub 1024g/FE6BE5C5 erzeugt: 2009-01-14 verfällt: 2012-01-14 Aufruf: E [ unbek.] (1). rootca <rootca@dummy.org> gpg> 1 pub 1024D/6EDF1B3B erzeugt: 2009-01-14 verfällt: 2012-01-14 Aufruf: SC Vertrauen: unbekannt Gültigkeit: unbekannt sub 1024g/FE6BE5C5 erzeugt: 2009-01-14 verfällt: 2012-01-14 Aufruf: E [ unbek.] (1)* rootca <rootca@dummy.org> gpg> tsign pub 1024D/6EDF1B3B erzeugt: 2009-01-14 verfällt: 2012-01-14 Aufruf: SC Vertrauen: unbekannt Gültigkeit: unbekannt Haupt-Fingerabdruck = 750E 3045 DAE2 9CFA 815D CDF7 1C21 5A54 6EDF 1B3B rootca <rootca@dummy.org> Dieser Schlüssel wird 2012-01-14 verfallen. Bitte entscheiden Sie, in wieweit Sie diesem User zutrauen, Schlüssel anderer User korrekt zu prüfen (durch Vergleich mit Lichtbildausweisen, Vergleich der Fingerabdrücke aus unterschiedlichen Quellen ...)? 1 = Ich vertraue ihm marginal 2 = Ich vertraue ihm vollständig Ihre Auswahl? 2 Geben Sie bitte die Tiefe dieser "Trust"-Unterschrift ein. Eine Tiefe größer 1 erlaubt dem zu unterschreibenden Schlüssel Trust-Signatures für Sie zu machen. Ihre Auswahl? 2 Geben Sie bitte eine Domain ein, um die Unterschrift einzuschränken, oder nur die Eingabetaste für keine Domain Ihre Auswahl? Sind Sie wirklich sicher, daß Sie vorstehenden Schlüssel mit Ihrem Schlüssel "anton <anton@dummy.org>" (C015EBFC) beglaubigen wollen Wirklich unterschreiben? (j/N) j Sie benötigen eine Passphrase, um den geheimen Schlüssel zu entsperren. Benutzer: "anton <anton@dummy.org>" 1024-Bit DSA Schlüssel, ID C015EBFC, erzeugt 2009-01-14 Geben Sie die Passphrase ein: gpg> save
Nun sieht der Schlüsselring so aus:
$> gpg --list-sigs /home/user/.gnupg_anton/pubring.gpg ----------------------------------------------------------- pub 1024D/C015EBFC 2009-01-14 [verfällt: 2012-01-14] uid anton <anton@dummy.org> sig 3 C015EBFC 2009-01-14 anton <anton@dummy.org> sig A2610CDB 2011-01-17 org1ca <org1ca@dummy.org> sub 1024g/39A2F161 2009-01-14 [verfällt: 2012-01-14] sig C015EBFC 2009-01-14 anton <anton@dummy.org> pub 1024D/6EDF1B3B 2009-01-14 [verfällt: 2012-01-14] uid rootca <rootca@dummy.org> sig 3 6EDF1B3B 2009-01-14 rootca <rootca@dummy.org> sig 2 C015EBFC 2011-01-25 anton <anton@dummy.org> sub 1024g/FE6BE5C5 2009-01-14 [verfällt: 2012-01-14] sig 6EDF1B3B 2009-01-14 rootca <rootca@dummy.org> pub 1024D/A2610CDB 2009-01-14 [verfällt: 2012-01-14] sig R A2610CDB 2009-01-26 org1ca <org1ca@dummy.org> uid org1ca <org1ca@dummy.org> sig 3 A2610CDB 2009-01-14 org1ca <org1ca@dummy.org> sig 1 6EDF1B3B 2011-01-17 rootca <rootca@dummy.org> sub 1024g/7EDB69BF 2009-01-14 [verfällt: 2012-01-14] sig A2610CDB 2009-01-14 org1ca <org1ca@dummy.org> pub 1024D/D5FE5018 2009-01-14 [verfällt: 2012-01-14] uid org2ca <org2ca@dummy.org> sig 3 D5FE5018 2009-01-14 org2ca <org2ca@dummy.org> sig 1 6EDF1B3B 2011-01-17 rootca <rootca@dummy.org> sub 1024g/7693DBC6 2009-01-14 [verfällt: 2012-01-14] sig D5FE5018 2009-01-14 org2ca <org2ca@dummy.org> pub 1024D/086641BD 2009-01-14 [verfällt: 2012-01-14] uid berta <berta@dummy.org> sig 3 086641BD 2009-01-14 berta <berta@dummy.org> sig D5FE5018 2011-01-17 org2ca <org2ca@dummy.org> sub 1024g/AD7A9613 2009-01-14 [verfällt: 2012-01-14] sig 086641BD 2009-01-14 berta <berta@dummy.org>
Bedingt durch die Trust Signature vom Level 2 (blau gekennzeichnet) ist der Public Key von Berta jetzt gültig:
$> gpg --edit-key berta gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pub 1024D/086641BD erzeugt: 2009-01-14 verfällt: 2012-01-14 Aufruf: SC Vertrauen: unbekannt Gültigkeit: vollständig sub 1024g/AD7A9613 erzeugt: 2009-01-14 verfällt: 2012-01-14 Aufruf: E [ vollst.] (1). berta <berta@dummy.org> gpg> $> gpg --list-sigs --with-colons ... pub:f:1024:17:98D69F68086641BD:2009-01-14:2012-01-14::-:berta <berta@dummy.org>::scESC: sig:::17:98D69F68086641BD:2009-01-14::::berta <berta@dummy.org>:13x: sig:::17:C204D31FD5FE5018:2011-01-17::::org2ca <org2ca@dummy.org>:10x: ...