OpenPGP

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

OpenPGP ist in der Informationstechnik ein Standard für Verschlüsselungs-Software, der auf PGP 5.x basiert. OpenPGP ist ein Internet-Standard und im RFC 4880 standardisiert. Das Dokument beschreibt das Datenformat, um Informationen verschlüsselt zu speichern und digitale Signaturen zu erzeugen. Auch wird das Format von Zertifikaten festgelegt, die landläufig auch als „Schlüssel“ bezeichnet werden.

Inhaltsverzeichnis

[Bearbeiten] Allgemeines

Zwei der Hauptanwendungen sind die Signierung und die Verschlüsselung von E-Mails. Dies kann auf mehrere Arten geschehen:

  • als Base64-kodierter Text plus Prüfsumme (Radix-64; ursprüngliches Textformat von PGP. Zur Unterscheidung vom neueren PGP/MIME-Format wird es als E-Mail-Format nachträglich auch PGP/INLINE genannt); dies ermöglicht nur das Signieren und Verschlüsseln des Mailtextes (Mailbody), nicht aber von Attachments und auch nur von einfachem Text, nicht aber von HTML-Mails
  • als MIME-Erweiterung nach RFC 3156 (auch PGP/MIME genannt); dieses Verfahren deckt auch Dateianhänge und HTML-Mails ab; für den Mailbody und alle Attachments kann jeweils einzeln festgelegt werden, ob sie verschlüsselt und/oder signiert werden sollen; auch dieses Verfahren schützt aber nur den Inhalt der Mail, nicht ihre Headerdaten (v. a. Absender, Empfänger, Betreff, Datum)
  • ohne OpenPGP-Unterstützung im Mailprogramm als binärer Anhang nach dem MIME-Standard (RFC 2045); man erzeugt vorab eine Datei, die signiert und/oder verschlüsselt ist und verschickt diese Datei als Anhang so wie jede andere Art von Datei auch

OpenPGP und S/MIME (welches X.509-Zertifikate verwendet) sind die beiden wichtigsten Standards für E-Mail-Verschlüsselung. Eine weitere Hauptverwendung von OpenPGP ist die Absicherung der Softwareverteilung (Paketverwaltung) von z. B. Linux.

Entstanden ist OpenPGP im Jahr 1998 als Reaktion auf diverse Entwicklungen:

  • die in PGP verwendeten Algorithmen (IDEA und RSA) waren patentiert und konnten nicht beliebig verwendet werden. Insbesondere gab es in den USA Gesetze, die den Export von starker Verschlüsselung (ab 40 Bit) verboten.
  • das Programm PGP wurde kommerziell durch die Firma PGP Inc. vertrieben, und es gab (falsche) Gerüchte, dass eine Hintertür in das Programm eingebaut sei, da es über eine sogenannte ADK-Funktion (Additional Decryption Key) verfügte.
  • Ende 1997 wurde PGP Inc. von Network Associates Inc. (NAI) übernommen, die Mitglied der Key Recovery Alliance waren.

Das OpenPGP-Protokoll wird mittlerweile von vielen Produkten unterstützt. Prominente Vertreter sind das kommerzielle PGP und das freie Open-Source-Programm GnuPG (unter der GNU-GPL stehend).

Das ebenfalls weit verbreitete S/MIME-Protokoll verwendet dagegen X.509-Zertifikate und ist deshalb grundsätzlich nicht kompatibel zu OpenPGP. Es existieren Applikationen, welche OpenPGP-Schlüssel im RSA-Format in X.509-Schlüssel umwandeln können (und umgekehrt: pem2openpgp aus dem monkeysphere-Paket); auch eine Verwendung derselben Schlüssel für SSH ist (etwa mittels GnuPG) möglich.

Es gibt ferner die OpenPGP Alliance als Zusammenschluss mehrerer Hersteller, die sich dem OpenPGP-Format verpflichtet fühlen. Allerdings ist die entsprechende Webseite seit ca. 2001 nicht mehr aktualisiert worden.

[Bearbeiten] Prinzip

OpenPGP benutzt ein hybrides Kryptosystem, das die Vorteile der asymmetrischen Kryptosysteme (sichere Schlüsselübertragung) mit denen der symmetrischen Kryptosysteme (hohe Geschwindigkeit) kombiniert.

[Bearbeiten] Die asymmetrische Verschlüsselung

Statt wie bei einem symmetrischen System nur einen Schlüssel sowohl für Ver- als auch Entschlüsselung zu verwenden, besteht bei einem asymmetrischen System ein Schlüsselpaar aus zwei zusammengehörigen Schlüsseln. Daten, die mit einem Schlüssel verschlüsselt wurden, können ausnahmslos nur mit dem anderen Schlüssel wieder entschlüsselt werden; es ist nicht möglich, die Verschlüsselung mit demselben Schlüssel aufzuheben, mit dem sie erstellt wurde.

Das Hauptproblem der ansonsten sehr sicheren symmetrischen Verfahren, den einzigen existierenden Schlüssel sicher zum Kommunikationspartner zu übermitteln, stellt sich somit nicht, denn das Schlüsselpaar besteht aus dem sogenannten privaten oder geheimen Schlüssel und dem öffentlichen Schlüssel. Um Daten zu verschlüsseln, benötigt der Absender nur den öffentlichen Schlüssel des Empfängers. Dieser öffentliche Schlüssel kann auch auf unsicherem Wege zum Kommunikationspartner gebracht werden, denn Nachrichten, die mit diesem Schlüssel verschlüsselt wurden, können nur mit dem privaten Schlüssel, den nur der Empfänger kennt, entschlüsselt werden. Statt des Problems der Geheimhaltung des übertragenen Schlüssels besteht hier das Problem, dass sichergestellt sein muss, dass der Sender den richtigen öffentlichen Schlüssel verwendet. Ein Angriff ist in diesem Fall nicht der Versuch, den geheimen symmetrischen Schlüssel mitzulesen, sondern der Versuch, dem Sender einen falschen öffentlichen Schlüssel unterzuschieben (und meist auch noch, anschließend seine Kommunikation zu manipulieren, damit dies nicht auffällt).

In der Regel ist sogar eine möglichst weite (sichere) Verbreitung des öffentlichen Schlüssels wünschenswert, um zu erschweren, dass öffentliche Schlüssel unter falschem Namen erfolgreich eingeschleust werden.

[Bearbeiten] Das Zusammenspiel von symmetrischer und asymmetrischer Verschlüsselung

Da die asymmetrische Verschlüsselung sehr rechenaufwendig ist, verwendet OpenPGP eine Mischung (Hybrid) aus asymmetrischer und symmetrischer Verschlüsselung:

Im ersten Schritt werden die zu verschlüsselnden Daten mit einem symmetrischen Einmal-Schlüssel, der nur für diese eine Verschlüsselung erzeugt wurde und nie wieder verwendet wird (Sitzungsschlüssel), verschlüsselt. Im zweiten Schritt wird dieser Sitzungsschlüssel wiederum mit einem Schlüssel des asymmetrischen Schlüsselpaares verschlüsselt. Um umgekehrt die Daten wieder zu entschlüsseln, muss zuerst der symmetrische Schlüssel mit dem Bruder des asymmetrischen Schlüssels entschlüsselt werden.

Da der symmetrische Schlüssel im Verhältnis zu den zu verschlüsselnden Daten sehr kurz ist, hält sich auch der Rechenaufwand zur asymmetrischen Verschlüsselung in Grenzen und ist deutlich geringer, als wenn die Daten selbst asymmetrisch verschlüsselt würden.

[Bearbeiten] Signierung

Neben der Verschlüsselung dient OpenPGP auch zur Signierung von Daten (elektronische Unterschrift), damit Empfänger ihre Echtheit und Unverfälschtheit feststellen können. Dazu wird vom Absender eine Prüfsumme (auch Hash-Wert genannt) der Daten gebildet, die dann mit dem privaten Schlüssel verschlüsselt wird (die Daten selbst bleiben unangetastet). Der Empfänger kann die verschlüsselte Prüfsumme mit dem öffentlichen Schlüssel des Absenders wieder entschlüsseln und sie mit der von ihm selbst nach dem gleichen Verfahren erstellten Prüfsumme der Daten vergleichen. Da niemand außer dem Besitzer des privaten Schlüssels (also der Absender) die Prüfsumme so verschlüsseln kann, dass sie mit dem dazugehörigen öffentlichen Schlüssel wieder korrekt entschlüsselt wird (vom Empfänger), ist sichergestellt, dass Daten und Prüfsumme nicht manipuliert werden können.

[Bearbeiten] Schlüsselbeglaubigung

Auch öffentliche Schlüssel können von anderen Schlüsselinhabern signiert werden, um die Echtheit eines Schlüssels zu untermauern. Im Gegensatz zu S/MIME basiert diese Signierung jedoch nicht auf einem hierarchischen System, bei der nur eine übergeordnete Stelle Schlüssel untergeordneter Stellen signieren darf, sondern aus einem Netz des Vertrauens (Web of Trust), in dem jeder Teilnehmer die Schlüssel anderer signieren kann. Die bei der Signatur abgegebene Aussage über das Vertrauen in Schlüssel und Besitzer ermöglicht es Dritten, Rückschlüsse auf die Vertrauenswürdigkeit zu machen. Vertraut zum Beispiel Teilnehmer B Teilnehmer A, könnte B auch dem öffentlichen Schlüssel des ihm unbekannten Teilnehmers C vertrauen, wenn dieser Schlüssel durch A signiert wurde.

Eine weitere, einfache Methode, die Echtheit eines Schlüssels zu prüfen, ist der Vergleich des Fingerabdrucks. Dabei handelt es sich um eine Prüfsumme der Schlüsseldaten in hexadezimaler Form (zum Beispiel „72F0 5CA5 0D2B BA4D 8F86 E14C 38AA E0EB“), die sich leicht im direkten Gespräch, per Telefon oder per Brief vergleichen lässt.

[Bearbeiten] Aufbau der Zertifikate

OpenPGP-Zertifikate (der aktuellen Version 4) bestehen aus einer Reihe von Komponenten. Ihre Daten werden nicht in ihrer Gesamtheit zertifiziert, sondern in einzelnen Komponenten, teils vom Schlüsselbesitzer und von Dritten, teils nur vom Schlüsselbesitzer. Damit geht einher, dass sich ein Zertifikat im Lauf der Zeit ändern kann. Komponenten können hinzugefügt, geändert und gelöscht werden. Die wichtigsten Komponenten eines OpenPGP-Zertifikats sind:

  1. genau ein öffentlicher Hauptschlüssel (auf den sich der Fingerabdruck bezieht, der den Schlüssel insgesamt identifiziert), mit Erzeugungs- und ggf. auch Ablaufdatum
  2. eine oder mehrere User-IDs (Text zur Beschreibung des Benutzers, typischerweise im Format Vorname Nachname (Kommentar) <E-Mail-Adresse>, ggf. mit Ablaufdatum)
  3. eventuell vorhandene Unterschlüssel (ggf. mit Ablaufdatum)
  4. eventuell Zusatzinformationen zur Verwendung des Schlüssels (Präferenz von Hash- und Verschlüsselungsalgorithmen, bevorzugter Keyserver, URL einer Schlüsselrichtlinie)
  5. Signaturen des Schlüsselbesitzers oder von Dritten, die die Echtheit der genannten Komponenten bestätigen oder ihre Gültigkeit widerrufen; Signaturen haben ein Erzeugungs- und eventuell ein Ablaufdatum

Dritte signieren nur die Kombination aus Hauptschlüssel und einer User-ID; es muss daher jede User-ID einzeln signiert werden. Ob er alle User-IDs signiert, steht einem Dritten frei. Der Schlüsselbesitzer signiert alles. Unsignierte Komponenten sind wertlos und werden ignoriert. Dadurch kann der Besitzer eigenmächtig seine Präferenzen, Zusatzinformationen und Gültigkeitsdauern ändern. Er kann Unterschlüssel und User-IDs hinzufügen und widerrufen. Unterschlüssel werden von OpenPGP-Software automatisch akzeptiert (wenn sie eine Eigenzertifizierung haben), User-IDs dagegen nicht. Wenn man seinen Schlüssel von Dritten zertifizieren lässt und anschließend eine E-Mail-Adresse hinzufügt (die nicht von Dritten zertifiziert wird), dann erhalten die Verwender des Zertifikats eine Warnung, wenn sie für die hinzugefügte E-Mail-Adresse verschlüsseln wollen. Die Anzeige der wichtigsten Elemente in GnuPG (--list-sigs):

    pub    1024D/0x12345678 2005-09-05
           D44C 6A5B 71B0 427C CED3 025C BD7D 6D27 1234 5678
    uid    Vorname Nachname <vorname.nachname@example.org>
    sig    0x12345678      Vorname Nachname <vorname.nachname@example.org>
    sig    0x87654321      Zertifizierer <zertifizierer@example.org>
    uid    Vorname Nachname (Geschäftsführer der Beispiel GmbH) <vorname.nachname@example.net>
    sig    0x12345678      Vorname Nachname <vorname.nachname@example.org>
    sig    0x87654321      Zertifizierer <zertifizierer@example.org>
    sub    2048R/0x51B279FA 2010-03-04 [verfällt: 2013-03-03]
    sig    0x12345678      Vorname Nachname <vorname.nachname@example.org>

Zu sehen ist, dass nur ein Hauptschlüssel (pub) vorhanden ist, dass es sich dabei um einen 1024 Bit langen DSA-Schlüssel handelt und wann dieser Hauptschlüssel erzeugt wurde. Darunter steht sein Fingerabdruck. Die ID, mit der Schlüssel zumeist bezeichnet werden, ist der letzte Teil des Fingerabdrucks. Dann sind zwei User-IDs (uid) zu sehen, die beide einen Namen und eine E-Mail-Adresse beinhalten und beide sowohl von dem zugehörigen Schlüssel selber als auch von einem anderen Schlüssel signiert wurden. Nur eine der User-IDs enthält einen Kommentar, in diesem Fall eine berufliche Position. Auf diese Weise kann ein organisatorisch entsprechend qualifizierter Schlüssel eines Unternehmens (etwa der des Geschäftsführers) die Position von Mitarbeitern des Unternehmens gegenüber Dritten, die dem ersten Schlüssel vertrauen, beglaubigt werden. Außerdem ist zu sehen, dass Unterschlüssel (sub) nur von ihrem Hauptschlüssel signiert werden, nicht aber von Dritten.

Die einzelnen Komponenten des Zertifikats werden anders als bei X.509 ohne Kryptografie zusammengefügt. Die kryptografische Sicherung befindet sich nur jeweils innerhalb der Komponente. Man kann deshalb unbemerkt Teile eines Zertifikats löschen. Das heißt, dass der Nutzer im Allgemeinen nicht sicher sein kann, dass ein Zertifikat, das er sich (wie üblich) aus einer unsicheren Quelle beschafft hat, vollständig ist. Um diese Sicherheit zu bieten, kann man ein Zertifikat in eine Datei exportieren und diese dann signieren.

[Bearbeiten] Qualifizierte Signaturen nach dem Signaturgesetz

Das deutsche Signaturgesetz (SigG) unterscheidet elektronische Signaturen, fortgeschrittene elektronische Signaturen und qualifizierte elektronische Signaturen. Letztere sind der eigentliche Inhalt des Gesetzes, die ersten beiden Gruppen dienen nur der Abgrenzung. Das SigG stellt sowohl technische als auch organisatorische Anforderungen an die Anerkennung qualifizierter Signaturen. Derzeit (2012) bieten die Zertifizierungsdiensteanbieter keine qualifizierten Zertifikate auf Basis von OpenPGP an, es ist also nicht möglich, mit OpenPGP qualifizierte Signaturen zu erzeugen. Das hat auch technische Gründe. Zum derzeitigen Konzept von OpenPGP gehört,

  1. dass nur der Hauptschlüssel (zusammen mit einer User-ID) zertifiziert wird, nicht aber die Unterschlüssel
  2. dass man mit einem Hauptschlüssel neue Unterschlüssel erzeugen kann.

Das Signaturgesetz verlangt, dass die privaten Schlüssel qualifizierter Zertifikate in Hardware gespeichert werden, aus der sie nicht ausgelesen werden können. Das sind typischerweise Smartcards. Da die aktuelle Version von OpenPGP die Signaturen von Unterschlüsseln genauso behandelt wie die von Hauptschlüsseln, eignen sich normale OpenPGP-Schlüssel prinzipiell nicht für qualifizierte Signaturen. Aber selbst wenn man einen atypischen, dieser Forderung entsprechenden OpenPGP-Schlüssel erzeugte, müsste die für seine Erzeugung und Speicherung verwendete Hard- und Software durch eine vom BSI anerkannte Stelle daraufhin überprüft werden, ob sie den Sicherheitsanforderungen des Gesetzes genügt. Die Kosten einer solchen Prüfung sind ein weiterer Hinderungsgrund für die Verfügbarkeit von OpenPGP für qualifizierte Signaturen.

[Bearbeiten] Weblinks