ubuntuusers.de

Import PGP + Schlüssel signieren

Status: Ungelöst | Ubuntu-Version: Ubuntu GNOME 14.04 (Trusty Tahr)
Antworten |

c.monty

Anmeldungsdatum:
23. August 2007

Beiträge: 277

Hallo!

Ich habe über Anroid mit der App "OpenKeychain" einen PGP-Schlüssel erstellt und auf einen Keyserver hochgeladen.

Mittels der App habe ich den Schlüssel gesichert und diese Sicherung dann in PGP erfolgreich importiert:

thomas@pc8-nb:~$ gpg --decrypt backup_2016-06-18.sec.pgp | gpg --import 
gpg: Unbekannter Header in der ASCII-Hülle: BackupVersion: 2
gpg: AES256 verschlüsselte Daten
gpg: Verschlüsselt mit einer Passphrase
gpg: Schlüssel C50xxxxx: "Thomas xxx <thomas@bisxxxx.de>" 5 neue Signaturen
gpg: Schlüssel C50xxxxx: geheimer Schlüssel importiert
gpg: Schlüssel C50xxxxx: "Thomas xxx <thomas@bisxxxx.de>" nicht geändert
gpg: Anzahl insgesamt bearbeiteter Schlüssel: 2
gpg:                             unverändert: 1
gpg:                         neue Signaturen: 5
gpg:              gelesene geheime Schlüssel: 1
gpg:            geheime Schlüssel importiert: 1
gpg: keine uneingeschränkt vertrauenswürdigen Schlüssel gefunden

 
thomas@pc8-nb:~$ gpg --list-secret-keys
/home/thomas/.gnupg/secring.gpg
-------------------------------
sec   3072R/C50xxxxx 2016-06-16 [verfällt: 2020-06-17]
uid                  Thomas xxx <thomas@bisxxxx.de>
uid                  Thomas xxx <c.xxx@web.de>
uid                  Thomas xxx <74xxx@gmail.com>
ssb   3072R/DBxxxxxx 2016-06-16
ssb   3072R/AAxxxxxx 2016-06-16

Mit der Anwendung "Seahorse" kann ich den Key auch anzeigen lassen. Allerdings ist dieser Schlüssel nicht signiert; hierfür wird lt. Seahorse ein PGP-Schlüssel benötigt.

Dies erscheint mir aber etwas fragwürdig, weil ich habe ja diesen importierten PGP-Schlüssel explizit als "Hauptschlüssel" erstellt und möchte ihn als solchen nutzen. Deshalb verstehe ich nicht, warum ich einen weiteren PGP-Schlüssel erstellen soll mit, wofür ich ja eine Email-Adresse angeben soll, um diesen Schlüssel zu signieren.

Wie soll ich hier weiter vorgehen?

THX

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

Hast du diesem Schluessel schon dein uneingeschraenktes (ultimtives) Vertrauen gegeben? Diese Vertrauensstufe ist fuer eigene Schluessel vorbehalten.

c.monty

(Themenstarter)

Anmeldungsdatum:
23. August 2007

Beiträge: 277

Meinst du auf dem PC, wo der Schlüssel importiert werden soll? Nein.

Wie mache ich das mit dem uneingeschränkten Vertrauen?

unbuntuS12

Anmeldungsdatum:
2. Juni 2010

Beiträge: 1816

gpg --edit-key thomas@bisxxxx.de trust

Dann die 5 auswählen.

c.monty

(Themenstarter)

Anmeldungsdatum:
23. August 2007

Beiträge: 277

OK.

Ist es eigentlich notwedendig / empfohlen, von dem Gerät, wo die PGP Keys erstellt wurden, sowohl Private als auch Public key zu kopieren und dann auf jedem PC zu verteilen, wo diese benötigt werden? Oder ist der Import des Backups ausreichend, weil dieses Backup sowohl private als auch public key enthält?

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

c.monty schrieb:

Ist es eigentlich notwedendig / empfohlen, von dem Gerät, wo die PGP Keys erstellt wurden, sowohl Private als auch Public key zu kopieren und dann auf jedem PC zu verteilen, wo diese benötigt werden?

Ja.

Oder ist der Import des Backups ausreichend, weil dieses Backup sowohl private als auch public key enthält?

Was bezeichnest du in diesem Fall als Backup?

unbuntuS12

Anmeldungsdatum:
2. Juni 2010

Beiträge: 1816

c.monty schrieb:

OK.

Das heißt, es funktioniert jetzt?

Ist es eigentlich notwedendig / empfohlen, von dem Gerät, wo die PGP Keys erstellt wurden, sowohl Private als auch Public key zu kopieren und dann auf jedem PC zu verteilen, wo diese benötigt werden? Oder ist der Import des Backups ausreichend, weil dieses Backup sowohl private als auch public key enthält?

Gerade nochmal in meinem Kryptographieschinken nachgeschlagen... zumindest für RSA-Schlüssel gilt, dass es nur eine Information gibt, die sich nicht aus dem privaten Schlüssel errechnen lässt, und das ist der öffentliche Exponent. Der allerdings wird bei OpenPGP als Parameter des privaten Schlüssels gespeichert. Also gilt hier erstmal: Bei RSA und OpenPGP ist der private Schlüssel ausreichend. Das gilt natürlich erst Recht, wenn du dir deinen eigenen öffentlichen Schlüssel noch aus öffentlichen Quellen besorgen kannst, also zum Beispiel von einem Schlüsselserver. Dann müsste man nicht mal den Exponenten mitspeichern. Und selbst, wenn der Exponent verloren gehen sollte, kannst du bereits verschlüsselte Nachrichten weiterhin entschlüsseln. Du kannst nur eben keinen validen öffentlichen Schlüssel mehr rausgeben.

Und dann ist die Frage nach dem Backup: Egal in welcher Form - es kommt darauf an, dass du ein Backup des privaten Schlüssels hast. Sofern dieses Backup in Form einer Datei vorliegt, ist es sicher sinnvoll, zu testen, ob es sich importieren lässt. Aber das hast du ja bereits erfolgreich erledigt. Sprich: Du hast deinen privaten Schlüssel an zwei Stellen, was schonmal eine Grundsicherheit bietet.

c.monty

(Themenstarter)

Anmeldungsdatum:
23. August 2007

Beiträge: 277

Ich habe mittels

gpg --edit-key thomas@bisxxxxx.de

das Level 5 eingestellt. Dies hat soweit funktioniert.

Ich kann der Ausgabe des Befehls aber auch entnehmen, dass der Schlüssel nicht signiert (unterschrieben) ist.

In Seahorse wird das ebenfalls angezeigt (siehe Anhang).

Frage:

  • Was ist der Unterschied zwischen Signierung und Trust Level?

  • Welches zusätzliche "Sicherheitsmerkmal" bietet die Signierung?

  • Kann ich eine Signierung ohne zusätzlichen PGP-Schlüssel durchführen?

  • Wenn nein, welches Prinzip steht hinter der Signierung?

THX

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11265

Wohnort: München

Ich denke es lohnt sich, wenn du dir mal Web_of_Trust und https://www.gnupg.org/gph/de/manual/x420.html anschaust, um das Prinzip dahinter zu verstehen.

c.monty

(Themenstarter)

Anmeldungsdatum:
23. August 2007

Beiträge: 277

Nun, ich habe meine Schlüssel mit Android erstellt und dann auf einen Linux-PC verteilt. Ich benötige nur 1 Schlüsselpaar und nicht ein Schlüssel je Device oder Email-Adresse.

Dennoch stellt sich mir die Frage, ob ich das erzeugte und verteilte Schlüsselpaar signieren muss? Oder ist es vielmehr so, dass ausschließlich meine Kommunikationspartner, mit denen ich verschlüsselt kommuniziere, meinen Schlüssel signieren?

THX

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11265

Wohnort: München

c.monty schrieb:

Nun, ich habe meine Schlüssel mit Android erstellt und dann auf einen Linux-PC verteilt. Ich benötige nur 1 Schlüsselpaar und nicht ein Schlüssel je Device oder Email-Adresse.

Dennoch stellt sich mir die Frage, ob ich das erzeugte und verteilte Schlüsselpaar signieren muss? Oder ist es vielmehr so, dass ausschließlich meine Kommunikationspartner, mit denen ich verschlüsselt kommuniziere, meinen Schlüssel signieren?

Ich habe mit openkeychain noch nicht gearbeitet, eventuell muss man den Public Key noch mit dem Private Key signieren, wenn das nicht automatisch bei der Erstellung passiert ist (GnuPG macht das soweit ich weiß automatisch).

unbuntuS12

Anmeldungsdatum:
2. Juni 2010

Beiträge: 1816

seahawk1986 schrieb:

Ich habe mit openkeychain noch nicht gearbeitet, eventuell muss man den Public Key noch mit dem Private Key signieren, wenn das nicht automatisch bei der Erstellung passiert ist (GnuPG macht das soweit ich weiß automatisch).

Ich habe mal im OpenPGP-RFC nachgeschaut und keinen Hinweis auf die Modalitäten der Schlüsselerzeugung gefunden. Das scheint also tatsächlich eine Implementierungsfrage zu sein. Insofern wäre es wichtig, dass du einmal überprüfst, ob den public key von deinem privaten signiert ist. Denn wenn du den öffentlichen Schlüssel weitergibst oder auf einen Keyserver hochlädst (was ich mittelfristig empfehlen würde), dann kann sonst jeder deine User-ID ändern. Das kann ein bösartiger Angreifer zwar auch weiterhin, allerdings schlägt die Signaturprüfung dann fehl, weil der Angreifer die neue UID nicht mit deinem Schlüssel signieren konnte. Deshalb wird da jedes potenzielle Opfer direkt drauf aufmerksam, weil das Importieren des öffentlichen Schlüssels fehlschlagen wird.

Überprüfen kannst du das, wie Jens Erat hier schrieb mit

gpg --list-sigs thomas@bisxxxxx.de |grep -EA1 '^(sub|uid)'

Deine weiteren Fragen will ich noch kurz anreißen:

c.monty schrieb:

  • Was ist der Unterschied zwischen Signierung und Trust Level?

Siehe dazu hier. Grundgedanke: Wir haben ein Schlüsselverteilungsproblem. Eigentlich müsstest du den OpenPGP-Fingerprint jedes einzelnen Kommunikationspartners persönlich überprüfen (ich mache das i.d.R. auch so). Wenn man das getan hat, dann kann man den Schlüssel signieren und damit bestätigen: "Ich bin mir sicher, dass der Schlüssel dem vorgeblichen Eigentümer gehört". GnuPG erlaubt in der Standardeinstellung nur die Nutzung von Schlüsseln, die entsprechend signiert sind.

Nun kannst du den signierten öffentlichen Schlüssel weitergeben (der Schlüssel ist ja ohnehin öffentlich, neu ist nur deine Signatur). Andere können nun sehen, dass du glaubst, dass der Schlüssel dem Eigentümer gehört. Nehmen wir also an:

User A hat den Schlüssel von User B überprüft (und signiert), und User B hat den Schlüssel von User C signiert, also

A → B → C

Jetzt könnte A mit einiger Sicherheit davon ausgehen, dass der Schlüssel C, den er aus unsicherer Quelle erhalten hat (Keyserver, E-Mail), dass der Schlüssel C wirklich dem User C gehört. Allerdings *nur*, wenn User A auch der Fähigkeit von B vertraut, einen Schlüssel sorgfältig zu prüfen. Will heißen: Obwohl ich mir vollkommen sicher bin, dass der Schlüssel von B zum User von B gehört, kann es dennoch sein, dass ich B sämtliche Kompetenzen abspreche, sorgfältig zu prüfen, ob ein Schlüssel tatsächlich einem bestimmten User gehört. Und dieses Vertrauen in den Schlüssel (sprich den Benutzer) gibt das trust level an. Deshalb sollte das trust level bei eigenen Schlüssel immer "ultimate" sein. Denn mein Schlüssel gehört mir selbst und ich selbst signiere einen fremden Schlüssel ja zumindest nur dann, wenn ich glaube, dass er dem entsprechenden User gehört.

  • Welches zusätzliche "Sicherheitsmerkmal" bietet die Signierung?

Siehe oben: Es macht für Dritte transparent, dass du glaubst, dass ein signierter Schlüssel dem vorgeblichen Inhaber gehört.

  • Kann ich eine Signierung ohne zusätzlichen PGP-Schlüssel durchführen?

Ich weiß nicht, worauf die Frage abzielt. Signiert wird mit privaten Schlüsseln. So einer muss vorhanden sein, klar. Aber "zusätzlich" muss da keiner angelegt werden.

  • Wenn nein, welches Prinzip steht hinter der Signierung?

Kryptographisch?

Antworten |