Warum schickt man seinen PGP Public Key zusammen mit einer signierten Email mit?
Ich nutzt pgp bloß um meine E-Mails zu signieren, doch sehe ich in vielen Email clients die Möglichkeit mit jeder Email meinen public key anzuhängen.
Klar - mein Public Key ist für alle gedacht aber nehmen wir mal an, dass jemand eines Tages es schafft, vorzugeben ich zu sein und eine Email in meinem Namen mit seinem private key zu signieren und dann einfach seinen Public Key anhängt.
Natürlich kann ich meinen Key auch einfach auf einen keyserver hochladen und dann die Public Key id jedesmal unten in die Email schreiben, doch auch diese ID kann jemand anderes auf seine ändern und auf seinen Verweisen... ist das ganze also eher nach dem Prinzip: Verteile deinen schneller als der andere, damit die Leute sich den abspeichern können und niemand mehr heimlich die öffentlichen schlüssel tauschen kann?
Kurz: Jemand der den Inhalt meiner E-Mail ändern kann, der kann auch einfach eine Signatur mit seinem private key erstellen und dann seinen Public Key mit anhängen.
3 Antworten

Das Mitsenden hat sicherlich auch historische Gründe...
Natürlich wäre es ein falsches Vorgehen, bei jeder empfangenen Mail den mitgelieferten Schlüssel zu importieren und anhand dessen die Authentität feststellen zu wollen.
Aber wenn man einen öffentlichen Schlüssel importiert, wird man gefragt, wie sehr man dem Schlüssel vertraut... am Besten ist natürlich, man tauscht den Schlüssel persönlich über einen separaten, vertrauenswürdigen Kanal aus (z.B. persönliches Treffen). Oder man nutzt Keyserver, etc... und tauscht dann wenigstens den Fingerprint persönlich aus (z.B. Telefon).
Aber auch wenn du bereits 100 Mails von einer Person bekommen hast, kannst du stutzig werden, wenn diese Nachricht plötzlich mit einem anderen Schlüssel signiert ist... (und z.B. per Anruf nachfragen, ob die Person selbst den Schlüssel geändert hat) auch dann bringt es noch was.
Ursprünglich gab es bei PGP noch einen anderen Mechanismus - jetzt kommen wir zu dem historischen Web-of-Trust. PGP unterstützt die Möglichkeit, öffentliche Schlüssel von anderen signieren zu lassen. Die Signaturen wurden in der Datei des öffentlichen Schlüssels gespeichert. Wenn du einen neuen Schlüssel bekommst und der Schlüssel von 5 Personen signiert ist, die du als Vertrauenswürdig eingestuft hast (siehe Vertrauensstufe von Schlüsseln), dann wird diesem Schlüssel auch vertraut. Ein solches gegenseitiges Signieren wurde z.B. auf Krypto-Parties gemacht. Nachdem vor ein paar Jahren Schlüsselserver mal extrem attakiert wurden, indem Bots einfach massenhaft Schlüssel signiert und wieder hochgeladen haben, wurde das Feature bei Schlüsselservern abgestellt. Sie akzeptieren jetzt keine angehängten Signaturen mehr. Das Verfahren hat sich historisch auch insgesamt nicht durchgesetzt und wird heutzutage auch als "zu kompliziert" für "jedermann" angesehen.
Neben dem dezentralen Ansatz gibt es den zentralen Ansatz, dass du deinen Schlüssel gegenüber einer Authentifizierungsstelle beglaubigen lässt. Bei PGP hat sowas z.B. Heise angeboten, bei Governikus (Anbieter für Funktionen des deutschen, elektronischen Personalausweises) kannst du mit dem Personalausweis deinen Schlüssel immer noch signieren lassen. Die Signaturen werden aber technisch wie sonstige Signaturen verwendet, der Anwender muss also ggf manuell prüfen und entscheiden, dass sie vertrauenswürdig sind. Außerdem werden sie auch nicht von öffentlichen Schlüsselservern unterstützt.
Andere Verfahren (als PGP) bauen auf den hierarchischen Ansatz, mit Zertifizierungsstellen und Chain of Trust.

Der Pubkey kann ja von anderen genutzt werden, um die signatur zu prüfen, oder Mails an Dich zu signieren. Soweit so klar.
Fehlt der TrustAnchor.
Entweder es gibt etwas analog zru CA, also einen Server, der die Keysignatur bestätigt und den Inhaber nennt (bzw. anders herum), oder aber man tauscht die Fingerprints auf einem gesicherten Kanal untereinander.
BTW:

Ich Frage mich bei solchen Partys, wie man bestätigt, dass einem selbst der Schlüssel auch gehört. Der Public Key beinhalten als User ID Daten bloß Namen & Email, doch da kann man ja eintragen was man will etc. oder wird bei solchen Partys vor den Augen der anderen immer der Public Key aus dem Private Key generiert? Letztendlich ist ja der einzige Nachweis das mir ein Public Key gehört, dass der private Key auf meinem privaten Gerät gespeichert ist (und auch hier kann man natürlich nicht 100% den Geräteeigentümer feststellen)

Oder wird der ID Name im Public Key mit dem Namen auf dem amtlichen Ausweis abgeglichen
Ja, natürlich, das ist ja der Zweck des ganzen. Sofern Du also keine amtlichen Dokumente mit beliebigen Identitäten bekommen kannst, kannst du im besten Fall eien Namensgleichheit zum Vorteil eines anderes ausnutzen.

Darum gibt es Certificate Authorities.
Man einigt sich auf eine Vertrauenswürdige Stelle von der man seinen Public Key signieren lässt.
Wenn das Zertifikat natürlich nur self signed ist, dann gibt es auch keine Garantie darauf dass diese nicht manipuliert wurde.
Deine pgp Signatur wäre dann nur so viel wert wie ein "vertrau mir Bruder"

Wie finden Empfänger meinen Public Key, der an einer solchen Stelle hinterlegt wurde? Also jegliche id oder Zuordnung die ich mit in die Email schreibe um meinen Key dort zu finden kann ja abgeändert werden.

Die CA ist eine digitale Signatur die deinem Public Key angehangen wird.
Jedes Betriebssystem hat eine Liste an CAs hinterlegt die er für vertrauenswürdig hält und mit dieser Liste wird die ca sonst deines Public Key geprüft. Wenn die CA Signatur mit dem vertrauenswürdigen CAs übereinstimmt bestätigt die CA damit dass dieser public key wirklich zu dir gehört.
Praktisch wendest du dich also an eine ca die der Empfänger vertrauenswürdig findet und dann musst du dich dieser CA gegenüber ausweisen um sicherzustellen dass du wirklich du bist. Darauf hin signiert die ca deinen Public Key und diese signierte Version ist dann die Version die du dem Empfänger übermitteln kannst. Du musst den Key ja auch nur einmal übermitteln.

Ahhh, puh. Ich glaube ich blase einfach meinen Public Key üner so viele Kanäle wie möglich (meine Email Anhänge, meine Website, Social Media Profilbio...), denn dann hat man wenigstens einen vernünftigen Beweis falls wirklich jemand mal Inhalte über meine email verschickt und da seinen Key für benutzt. Ich muss ja nur erreichen, dass die Empfänger als erstes meinen Key abgespeichert haben. Früher hat man ja dafür sign Partys veranstaltet, da hat man ganz viele Leute in echt getroffen, hat seinen Ausweis vorgezeigt und sich gegenseitig den schlüsselbund erweitert.


Ja aber jeder kann deine keys signieren, das Konzept mit Web of trust ist nicht das gleiche wie mit PKIs
Oder wird der ID Name im Public Key mit dem Namen auf dem amtlichen Ausweis abgeglichen und die E-Mail Adresse einfach verifiziert indem man beweist, dass man Zugriff auf den Mail Account hat?