Concepts/OpenPGP For Beginners/de: Difference between revisions

From KDE UserBase Wiki
(Created page with "Die effektive Sicherheit einer Kryptografielösung hängt mehr davon ab, dass man weiß, was man tut und was bestimmte technische Effekte bedeuten (und was eben nicht!), als v...")
No edit summary
 
(54 intermediate revisions by 2 users not shown)
Line 5: Line 5:
Die effektive Sicherheit einer Kryptografielösung hängt mehr davon ab, dass man weiß, was man tut und was bestimmte technische Effekte bedeuten (und was eben nicht!), als von z.B. Schlüssellängen und der verwendeten Software. Deshalb soll dieser Artikel Ihnen eine Einführung in die Kernkonzepte von [http://de.wikipedia.org/wiki/OpenPGP OpenPGP] bieten.  
Die effektive Sicherheit einer Kryptografielösung hängt mehr davon ab, dass man weiß, was man tut und was bestimmte technische Effekte bedeuten (und was eben nicht!), als von z.B. Schlüssellängen und der verwendeten Software. Deshalb soll dieser Artikel Ihnen eine Einführung in die Kernkonzepte von [http://de.wikipedia.org/wiki/OpenPGP OpenPGP] bieten.  


This tutorial is for beginners so any too complicated stuff is left out. Furthermore you will not find explanations of how to get something done with a certain software. You have the software documentation for that. This will help you to better understand the actions explained there.  
Dieser Artikel ist für Anfänger, weswegen allzu komplizierte Aspekte weggelassen werden; er beschränkt sich auf das, was für Anfänger wichtig ist. Außerdem gibt es in diesem Artikel keine Anleitungen, wie Sie etwas mit einer bestimmten Software erreichen können. Dafür haben Sie die Dokumentation der jeweiligen Software. Dieser Artikel soll Ihnen helfen, die dort beschriebenen Aktionen besser zu verstehen.  


There is another [[Special:myLanguage/Concepts/OpenPGP_Getting_Started|article that prepares you for key generation]] and one explaining [[Special:myLanguage/Concepts/OpenPGP_For_Advanced_Users|advanced concepts]].
Es gibt einen gesonderten [[Special:myLanguage/Concepts/OpenPGP_Getting_Started|Artikel, der Sie auf die Erzeugung eines Schlüssels vorbereitet,]] und einen, der [[Special:myLanguage/Concepts/OpenPGP_For_Advanced_Users|die für fortgeschrittene Anwender relevanten Konzepte und Aspekte]] erklärt.


== Asymmetric keys ==
== Asymmetrische Schlüssel ==


OpenPGP uses key pairs. This means that there is always a ''secret key'' and a ''public key'' belonging together. In contrast to the very intuitive concept of symmetric encryption (i.e. the same password encrypts and decrypts the data) this is hard to understand. Don't think about that, just accept it; the math behind this is a nightmare so for most people going into details would be a stressful waste of time.
OpenPGP verwendet Schlüsselpaare. Das bedeutet, dass es immer einen ''geheimen Schlüssel'' und einen ''öffentlichen Schlüssel'' gibt, die zueinander gehören. Im Gegensatz zu dem intuitiv gut verständlichen Konzept der symmetrischen Verschlüsselung (d.h. dasselbe Passwort verschlüsselt und entschlüsselt die Daten) ist diese Technologie schwer verständlich. Denken Sie darüber nicht lange nach, akzeptieren Sie das einfach. Die Mathematik dahinter ist ein mittelmäßiger Alptraum, so dass die Betrachtung der Details für die meisten Leute nur anstrengende Zeitverschwendung wäre.


As the names suggest: The secret key is to be known to its owner only, and the public key should be known to everyone ideally. With symmetric encryption the problem was to safely share the password with the recipient of a message. With public keys the problem has changed: Now the hard part is to be sure that you are using the correct public key (and not a forged one an attacker tries to trick you into using).
Wie die Bezeichnungen schon sagen: Der geheime Schlüssel darf nur seinem Besitzer bekannt sein, der öffentliche Schlüssel dagegen ist idealerweise jedem bekannt. Bei symmetrischer Verschlüsselung war das Problem, das gemeinsame Passwort sicher mit dem Empfänger der Nachricht auszutauschen. Mit öffentlichen Schlüsseln verschiebt sich das Problem: Jetzt liegt die (allerdings weniger offensichtliche) Herausforderung darin, verlässlich den richtigen öffentlichen Schlüssel zu verwenden (und nicht einen manipulierten, den einem ein Angreifer unterzuschieben versucht).


== Encryption ==
== Verschlüsselung ==


One of the two functions of OpenPGP is encryption. You encrypt data to one ore more public keys (symmetric encryption i.e. using a password instead is possible but rarely used). For decrypting the data the secret key of one of the recipient keys is needed.  
Eine der beiden Funktionen von OpenPGP ist Verschlüsselung (und Entschlüsselung). Man verschlüsselt die Daten für einen oder mehrere öffentliche Schlüssel (symmetrische Verschlüsselung, also die Verwendung eines Passworts, ist auch möglich, wird aber nur selten verwendet). Für die Entschlüsselung ist der geheime Schlüssel eines der Empfängerschlüssel nötig.  


Except for the already mentioned problem "Which is the right key to encrypt for?" encryption - decryption is a quite simple operation because there is no room for misunderstanding: You encrypt something and nobody except the owner(s) of the recipient key(s) can read it. And you can either decrypt data or you can't. The decrypted data itself may be hard to understand but the decryption operation is not.
Abgesehen von dem bereits erwähnten Problem "Welcher ist der richtige Schlüssel, für den verschlüsselt werden soll?" sind Verschlüsselung und Entschlüsselung ziemlich einfache Operationen, weil keine Gefahr von Missverständnissen besteht: Man verschlüsselt etwas, und niemand außer den Besitzern der Empfängerschlüssel kann es lesen. Auf der anderen Seite kann man etwas entweder entschlüsseln oder eben nicht. Die entschlüsselten Daten an sich mögen Fragen aufwerfen, die Kryptooperation aber nicht. Aber: Teil des Problems "Welcher ist der richtige Schlüssel zum Verschlüsseln?" ist nicht nur die Frage "Wer ist der Besitzer dieses Schlüssels?", sondern auch "Ist dieser Schlüssel sicher genug für die zu verschlüsselnden Daten?". Dabei geht es weniger um Schlüssellängen usw., sondern um die Handhabung des Schlüssels. Deshalb sollten Sie zumindest vor dem Verschicken brisanter Informationen mit dem Schlüsselbesitzer klären, welches Sicherheitsniveau der Schlüssel hat.


== Digital signatures ==
== digitale Unterschriften (Signaturen) ==


The encryption of data can be kind of reversed: Instead of creating data which only one key can understand you can create data which everyone can understand but which only one key can have created. This impossibility to create the same data without access to the respective secret key makes this data a signature. Once again: Don't ask for how this is possible unless you really like math.  
Die Verschlüsselung von Daten kann gewissermaßen umgekehrt werden: Anstatt Daten zu erzeugen, die nur ein Schlüssel lesen kann, kann man (zu einem gegebenen Datensatz) Daten erzeugen, die jeder lesen kann, die aber nur mit einem bestimmten Schlüssel erzeugt worden sein können. Die Unmöglichkeit, ohne Zugriff auf diesen Schlüssel dieselben Daten zu erzeugen, macht diese Daten zu einer Unterschrift für den fraglichen Datensatz. Und auch hier gilt: Fragen Sie nicht, wie das funktioniert; es sei denn, Sie mögen Mathe sehr.  


One of the great things about digital cryptography is: In contrast to a handwritten signature it is very easy for everyone (OK: for everyone's computer) to check that this signature was made by a certain key. If you can relate a certain key to a person then you can also relate a digital signature to this person unless, of course, the key has been compromised. You may have noticed: At this point the task becomes an organizational and legal one.  
Eine der großartigen Eigenschaften von Kryptografie ist, dass für jeden (Computer) trivial zu überprüfen ist, ob ein bestimmter Schlüssel eine Unterschrift erzeugt hat – so ganz im Gegensatz zu händischen Unterschriften. Wenn man einen bestimmten Schlüssel einer bestimmten Person zuordnen kann, dann kann man auch die Unterschriften dieses Schlüssels dieser Person zuordnen sofern der Schlüssel nicht kompromittiert wurde. Es ist Ihnen vielleicht schon aufgefallen: An dieser Stelle ist aus der technischen Problematik bereits eine organisatorische (und rechtliche) geworden.  


Technology does not solve all of your problems. And it is extremely important that you are always aware where the border between the technical and organizational problems is.
Technologie kann nicht alle Ihre Probleme lösen. Es ist extrem wichtig für den sicheren Umgang mit Kryptografie, dass Sie sich immer im klaren darüber sind, wo die Grenze zwischen technischen und organisatorischen Problemen verläuft (also auf welcher Seite Sie gerade sind).


And relating a key to a person is not the hard part! That is: "What does the signature mean?" Is your interpretation of a signature legally binding for its creator? The meaning can be as low as a timestamp (which is a perfectly valid an serious application for crypto signatures!), proving nothing more than that a certain document existed at a certain time (and was not created later).  
Die Zuordnung eines Schlüssels zu einer Person ist nicht einmal der schwierigste Teil. Der ist: "Was genau bedeutet diese Signatur?" Ist Ihre Einschätzung rechtlich bindend für den Unterzeichner? Die inhaltliche Bedeutung einer Signatur kann so gering sein wie bei einem Zeitstempel (was eine absolut seriöse und notwendige Anwendung von kryptografischen Signaturen ist!), der nur nachweist, dass ein bestimmtes Dokument zum fraglichen Zeitpunkt schon existierte (und nicht erst später erzeugt wurde).  


If somebody signs all his emails (to prevent address forgery) then the pure fact that he sent a certain document within such a signed email does not mean anything except for that he probably wanted to offer you a look at it. If the email (the signed part, not the unsigned subject) says something like "I accept the attached agreement" then the meaning is clear and the remaining risk of the recipient is mainly a technical one (compromised low security key).  
Wenn jemand alle seine E-Mails signiert (um Absenderfälschungen vorzubeugen), dann bedeutet der bloße Umstand, dass Ihnen ein bestimmtes Dokument als Anhang einer signierten Mail geschickt wurde, rechtlich wohl erst mal gar nichts, sondern eben nur, dass der Absender Ihnen anbieten wollte, mal einen Blick darauf zu werfen. Wenn in der E-Mail (im signierten Text, nicht im unsignierten Betreff) etwas steht wie "Ich akzeptiere die angehängte Vereinbarung", dann dürfte die Bedeutung dagegen klar sein und das Restrisiko technischer Art sein (ein kompromittierter Schlüssel niedrigen Sicherheitsniveaus).  


Thus it makes sense to have different keys at different security levels: One for reasonably securing everyday tasks and another one for signing agreements (where the key policy documents explain the limits and privileges of the respective key).
Deshalb ist es sinnvoll, Schlüssel auf unterschiedlichen Sicherheitsniveaus zu haben: Einen für eine angemessene Absicherung alltäglicher Aktivitäten (E-Mail) und einen für die Unterzeichnung von Verträgen, wobei jeder Schlüssel eine eigene Schlüsselrichtlinie haben sollte, die neben dem Sicherheitsniveau die Grenzen und Berechtigungen des jeweiligen Schlüssels erläutert.


In contrast to encryption the signature of data does not (technically) have an addressee. Everyone with access to the public key can check the signature. In many cases that is not a problem (or in contrast: It may even be a requirement). Instead of selecting an addressee you select the secret key which shall be used to create the signature (if you have more than one).
Im Gegensatz zu Verschlüsselung hat eine Signatur keinen (technischen) Adressaten. Jeder mit Zugang zum öffentlichen Schlüssel kann die Signatur prüfen. In den meisten Fällen ist das kein Problem (sondern ganz im Gegenteil sogar gefordert). Statt eines Adressaten wählt man den geheimen Schlüssel aus, der die Signatur erzeugen soll (wenn man mehrere zur Auswahl hat).


The big "Which is the right public key?" problem occurs with signatures, too. Not with creating signatures but when interpreting a successful signature validation. The real life question is: "What does a signature mean?" Obviously a signature by "any" key does not mean anything. Everyone can have created it. The signature itself does not state more than: "Somebody with access to the secret key decided to create this signature." This is a technical fact without relevance in real life.
Das große "Welcher ist der richtige öffentliche Schlüssel?"-Problem besteht bei Signaturen genauso wie bei Verschlüsselungen. Zwar nicht beim Erzeugen einer Signatur, aber bei der Interpretation einer (technisch) erfolgreichen Signaturprüfung. Die entscheidende Frage ist aber: "Was bedeutet diese Signatur?" Offensichtlich bedeutet eine Signatur, die von "irgendeinem" Schlüssel erzeugt wurde, gar nichts. Jeder könnte sie erzeugt haben. Die Existenz der Signatur an sich sagt nicht mehr aus als, dass jemand mit Zugang zum geheimen Schlüssel sich entschieden hat, diese Signatur zu erzeugen. Dies ist ein rein technischer Aspekt ohne praktische Relevanz.




== Relating keys to people or organizations ==
== Zuordnung der Schlüssel zu Personen ==


This is the first really hard part. And because only few people do this correctly the whole system is much less secure than most people believe. You have to tell apart four components of this check. The first is the easiest: the key itself. You have to be sure that you are using the right key material (just the huge random number itself).  
Dies ist einer der schwierigen Aspekte. Da nur wenige Leute dies wirklich gut machen, ist das ganze System weniger sicher als die meisten Leute annehmen. Man muss dabei vier Elemente auseinanderhalten. Das erste ist am einfachsten zu handhaben: der Schlüssel selber. Sie müssen sichern sein, dass Sie das richtige Schlüsselmaterial (die große Zufallszahl) verwenden.  


As keys are to big to be compared manually a secure hash is used instead. Once again: Evil math stuff you fortunately need not understand. A hash function does this: You throw any kind and amount of data at it (from a single digit to a DVD image file) and it outputs a "number" of fixed length. If it is (considered) impossible to create two different inputs which create the same output then the hash function is secure.  
Da Schlüssel zu groß sind, um manuell verglichen zu werden, vergleicht man statt dessen sichere Hashwerte. Auch dies: Übler Mathe-Kram, den Sie zum Glück nicht verstehen müssen. Eine Hashfunktion mach dies: Man füttert sie mit einer beliebigen Menge Daten welcher Art auch immer (von einer einzelnen Ziffer bis hin zu einem DVD-Image), und sie gibt daraufhin eine "Zahl" fester Länge aus. Wenn es als unmöglich gilt, unterschiedliche Eingabedaten zu finden, die zur selben Ausgabe führen, dann handelt es sich um eine sichere Hashfunktion.  


OpenPGP currently uses the hash function [https://en.wikipedia.org/wiki/Secure_Hash_Algorithm SHA-1] for identifying keys. SHA-1 has security issues but they do not affect the usage in OpenPGP. A SHA-1 value looks like this:
OpenPGP nutzt zur Zeit die Hashfunktion [https://de.wikipedia.org/wiki/Secure_Hash_Algorithm SHA-1], um Schlüssel zu indentifizieren. SHA-1 hat zwar inzwischen bekannte Sicherheitsprobleme, aber die betreffen die Verwendung bei OpenPGP nicht. Ein SHA-1-Wert sieht so aus:


    7D82 FB9F D25A 2CE4 5241  6C37 BF4B 8EEF 1A57 1DF5
        7D82 FB9F D25A 2CE4 5241  6C37 BF4B 8EEF 1A57 1DF5


This is called the fingerprint of the key. There are two ways of being safe about the identity of a key (the raw key material) without third parties involved: You get either the key itself from a secure source (USB stick handed over by the key owner) or you get the fingerprint from a secure source (which is obviously much easier as you can print is on small pieces of paper, even on your business card, and spread them).  
Das nennt man den Fingerabdruck (fingerprint) des Schlüssels. Es gibt zwei Möglichkeiten, sich über die Identität eines Schlüssels (des reinen Schlüsselmaterials) Gewissheit zu verschaffen, ohne dass Dritte involviert sind: Man beschafft sich entweder den Schlüssel (oder ganz allgemein: die Datei) oder aber dessen Fingerabdruck jeweils aus einer sicheren Quelle (vom Schlüsselbesitzer übergebener USB-Stick), wobei der Fingerabdruck offensichtlich die einfachere Variante ist, da man ihn auf kleine Zettel oder sogar Visitenkarten drucken und verteilen kann.  


Your OpenPGP application shows you the fingerprint of the key you got from an insecure source and you compare "what is" with "what it should be". If that is the same then you can be sure about the key itself. Thus: Always have small slips of paper with your fingerprint with you.
Ihre OpenPGP-Anwendung zeigt Ihnen den Fingerabdruck des Schlüssels, den Sie aus einer unsicheren Quelle (z.B. Keyserver) haben, und Sie vergleichen dann den Fingerprint der vorliegenden Datei mit dem, den die Datei haben muss. Wenn beide identisch sind, können Sie bezüglich des Schlüssels sicher sein: Deshalb: Haben Sie immer ein paar kleine Zettel mit dem Fingerabdruck Ihres Schlüssels dabei!


A public OpenPGP key (a "certificate") consists of two parts: the key material and the user IDs. A user ID is just a text string. The typical usage of this string is:
Ein öffentlicher OpenPGP-Schlüssel (ein "Zertifikat") besteht aus zwei Komponenten: dem Schlüsselmaterial und den User-IDs. Eine User-ID ist eine mehr oder weniger beliebige Zeichenkette, die typischerweise wie folgt aufgebaut ist:


    Firstname Lastname (comment) <email address>
        Vorname Nachname (Kommentar) <E-Mail-Adresse>


Many user IDs do not have a comment, some do not have an email address and there are keys without a (real) name, too (e.g. for anonymous usage). Even if you are sure about the fingerprint the name, email, and comment can be wrong.  
Viele User-IDs haben keinen Kommentar, manche haben keine E-Mail-Adresse, und es gibt auch welche ohne (richtigen) Namen (z.B. für anonyme Nutzung). Auch wenn Sie sich beim Fingerprint sicher sind, können Name, E-Mail-Adresse und Kommentar falsch sein.  


Email is rather easy to check (send an encrypted message to the address and wait for a response which guarantees your message to be decrypted).  
Die E-Mail-Adresse ist relativ einfach zu prüfen: Schicken Sie eine verschlüsselte Nachricht an die Adresse und warten Sie auf eine Antwort, die garantiert, dass die Nachricht entschlüsselt werden konnte.  


Checking the identity of unknown persons is not easy. At keysigning parties this is done by checking passports and the like. But would you recognize a well forged passport?  
Die Identität einer unbekannten Person zu prüfen ist nicht einfach. Auf Keysigning-Partys wird das durch die Vorlage von Personalausweisen (o.Ä.) gemacht. Aber würden Sie einen gut gefälschten Ausweis erkennen, womöglich noch einen ausländischen?  


Fortunately for your own purposes the identity is usually not so important. "The one I met on that event who calls himself Peter" is usually enough. So this is more a problem for the web of trust (see below).  
Glücklicherweise ist für Ihre eigenen Zwecke die Identität meistens nicht so wichtig. "Derjenige, den ich auf jener Veranstaltung getroffen habe und der sich als Peter vorgestellt hat" reicht in der Regel völlig aus. Die Identitätsprüfung ist deshalb primär ein Problem für das Web of Trust (siehe unten).  


Comments can be critial, too: The comment "CEO of whatever inc." may make a real difference (if not to you then to somebody else). The question when to accept (and certify) a user ID is a really complicated one.  
Auch Kommentare können kritisch sein, etwa wenn sie etwas über die Stellung desjenigen aussagen: Der Kommentar "Vorstand der Wasauchimmer AG" kann einen echten Unterschied ausmachen (wenn nicht für Sie, dann zumindest für jemand anderen). Die Frage, wann man eine User-ID akzeptiert (und für die Öffentlichkeit zertifiziert) ist kompliziert.  


Most people don't understand this problem and thus reduce their own security and that of others. You can make this decision for others easier by having user IDs which consist of just your name or just your email address. This may be easier acceptable by someone checking your user IDs.
Den meisten Leuten ist diese Problematik nicht ausreichend klar. Dadurch reduzieren sie ihre eigene Sicherheit und (durch suboptimale Zertifizierungen) die anderer. Sie können anderen die Entscheidung, Ihren Schlüssel zu zertifizieren, dadurch erleichtern, dass Sie auch User-IDs in Ihren Schlüssel aufnehmen, die nur Ihren Namen oder nur Ihre E-Mail-Adresse enthalten. Solche User-IDs mögen für manchen Zertifizierer eher akzeptabel (bzw. einfacher zu prüfen) sein.


If you are sure about a user ID you should certify it. This means that you make a digital signature over the public key and this user ID. You can make this certification for yourself only (called a "local signature") or for the public (the "web of trust"). If a key has several user IDs then you can decide which ones you certify.  
Wenn Sie sich bei einer User-ID sicher sind, sollten Sie sie zertifizieren. Das bedeutet, dass Sie eine Signatur über die Kombination aus öffentlichem Schlüssel und der User-ID erzeugen. Sie haben die Auswahl, ob Sie diese Zertifizierung nur für sich selber vornehmen ("lokale Signatur", lsign) oder für die Öffentlichkeit (das "Web of Trust"). Wenn ein Schlüssel mehrere User-IDs hat, können Sie entscheiden, welche davon Sie zertifizieren möchten.  


You can give a rough hint how well you have checked the user ID and key, too. It makes a big difference to OpenPGP applications (and so should it to you!) whether they recognize a key as "valid" or not.  
Sie können auch einen groben Hinweis geben, wie gründlich Sie die User-ID und den Schlüssel geprüft haben. Für OpenPGP-Anwendungen (und hoffentlich auch für Sie!) ist es ein großer Unterschied, ob ein Schlüssel als gültig erkannt wird oder nicht.  


The keys you have the secret key for are considered valid automatically. The others can become valid by signatures of your own keys. And by keys of others.
Die öffentlichen Schlüssel, für die Sie auch den geheimen Schlüssel haben, gelten automatisch als gültig. Die anderen können Gültigkeit erlangen durch eine Zertifizierung eines Ihrer Schlüssel.


== Das Web of Trust (WoT) ==


== The web of trust (WoT) ==
In Zusammenhang mit OpenPGP werden Sie immer mal wieder vom Web of Trust hören. Das ist eine indirekte Methode, Schlüssel Personen zuzuordnen, eine mächtige, aber komplizierte Technologie. Anfänger sollten das Web of Trust nicht benutzen, sondern sich erst mit der Verifizierung und Zertifizierung von Schlüsseln vertraut machen. Das WoT wird im Artikel [[Special:myLanguage/Concepts/OpenPGP_For_Advanced_Users|OpenPGP für fortgeschrittene Anwender]] erklärt.


In connection with OpenPGP you will often hear about the web of trust. This in an indirect method for relating people to keys, a mighty but complicated technology. Beginners should not use the web of trust but first become familiar with verifying and certifying keys directly. The WoT is explained in the article [[Special:myLanguage/Concepts/OpenPGP_For_Advanced_Users|OpenPGP For Advanced Users]].




 
== Zusammenfassung der Verwendung der Schlüsselkomponenten ==
== Summary of key usage ==


{| class="wikitable" border="1"<!--}-->
{| class="wikitable" border="1"<!--}-->
|-
|-
! you need
! Sie benötigen
! in order to
! um


|-
|-
| rowspan="2"| the public key of another person
| rowspan="2"| den öffentlichen Schlüssel einer anderen Person
| encrypt data for him
| Daten für sie zu verschlüsseln


|-
|-
| check those key's signatures (technical correctness, not key validity)
| die Signaturen dieses Schlüssels zu überprüfen (auf technische Korrektheit; nicht ausreichend für die Gültigkeit des Schlüssels und damit der Signatur)


|-
|-
| rowspan="2"| your secret subkeys
| rowspan="2"| Ihre geheimen Unterschlüssel
| decrypt data that has been encrypted for you
| Daten zu entschlüsseln, die für Sie verschlüsselt wurden


|-
|-
| create signatures for data
| Signaturen für Daten zu erzeugen


|-
|-
| rowspan="2"| your secret main key
| rowspan="2"| Ihren geheimen Hauptschlüssel
| manage your key (add user IDs or subkeys, change settings like expiration date)
| Ihren Schlüssel zu verwalten (User-IDs oder Unterschlüssel hinzufügen; Einstellungen wie das Ablaufdatum ändern)


|-
|-
| certify other keys (i.e. some or all of their user IDs)
| andere Schlüssel (d.h. manche oder alle von deren User-IDs) zu zertifizieren


|-
|-
| the fingerprint of the key of another person
| den Fingerabdruck des Schlüssels einer anderen Person
| ensure that you have imported the right key (before certifying the key either locally or for the public)
| prüfen zu können, ob Sie den richtigen Schlüssel importiert haben (bevor Sie ihn lokal oder für die Öffentlichkeit zertifizieren)
<!--{-->|}
<!--{-->|}




== Further reading ==
== weiterführende Artikel ==


* [[Special:myLanguage/Concepts/OpenPGP_Getting_Started|Getting Started with OpenPGP]]
* [[Special:myLanguage/Concepts/OpenPGP_Getting_Started|Erste Schritte mit OpenPGP]] (Vorbereitung der Schlüsselerzeugung)


* [[Special:myLanguage/Concepts/OpenPGP_For_Advanced_Users|OpenPGP For Advanced Users]]
* [[Special:myLanguage/Concepts/OpenPGP_For_Advanced_Users|OpenPGP für fortgeschrittene Anwender]]




[[Category:Getting Started]]
[[Category:Erste Schritte/de]]
[[Category:Internet]]
[[Category:Internet/de]]
[[Category:Security]]
[[Category:Sicherheit/de]]
[[Category:Tutorials]]
[[Category:Leitfäden/de]]
[[Category:New Users]]
[[Category:neue Benutzer/de]]

Latest revision as of 10:43, 16 July 2013

Einleitung

Die effektive Sicherheit einer Kryptografielösung hängt mehr davon ab, dass man weiß, was man tut und was bestimmte technische Effekte bedeuten (und was eben nicht!), als von z.B. Schlüssellängen und der verwendeten Software. Deshalb soll dieser Artikel Ihnen eine Einführung in die Kernkonzepte von OpenPGP bieten.

Dieser Artikel ist für Anfänger, weswegen allzu komplizierte Aspekte weggelassen werden; er beschränkt sich auf das, was für Anfänger wichtig ist. Außerdem gibt es in diesem Artikel keine Anleitungen, wie Sie etwas mit einer bestimmten Software erreichen können. Dafür haben Sie die Dokumentation der jeweiligen Software. Dieser Artikel soll Ihnen helfen, die dort beschriebenen Aktionen besser zu verstehen.

Es gibt einen gesonderten Artikel, der Sie auf die Erzeugung eines Schlüssels vorbereitet, und einen, der die für fortgeschrittene Anwender relevanten Konzepte und Aspekte erklärt.

Asymmetrische Schlüssel

OpenPGP verwendet Schlüsselpaare. Das bedeutet, dass es immer einen geheimen Schlüssel und einen öffentlichen Schlüssel gibt, die zueinander gehören. Im Gegensatz zu dem intuitiv gut verständlichen Konzept der symmetrischen Verschlüsselung (d.h. dasselbe Passwort verschlüsselt und entschlüsselt die Daten) ist diese Technologie schwer verständlich. Denken Sie darüber nicht lange nach, akzeptieren Sie das einfach. Die Mathematik dahinter ist ein mittelmäßiger Alptraum, so dass die Betrachtung der Details für die meisten Leute nur anstrengende Zeitverschwendung wäre.

Wie die Bezeichnungen schon sagen: Der geheime Schlüssel darf nur seinem Besitzer bekannt sein, der öffentliche Schlüssel dagegen ist idealerweise jedem bekannt. Bei symmetrischer Verschlüsselung war das Problem, das gemeinsame Passwort sicher mit dem Empfänger der Nachricht auszutauschen. Mit öffentlichen Schlüsseln verschiebt sich das Problem: Jetzt liegt die (allerdings weniger offensichtliche) Herausforderung darin, verlässlich den richtigen öffentlichen Schlüssel zu verwenden (und nicht einen manipulierten, den einem ein Angreifer unterzuschieben versucht).

Verschlüsselung

Eine der beiden Funktionen von OpenPGP ist Verschlüsselung (und Entschlüsselung). Man verschlüsselt die Daten für einen oder mehrere öffentliche Schlüssel (symmetrische Verschlüsselung, also die Verwendung eines Passworts, ist auch möglich, wird aber nur selten verwendet). Für die Entschlüsselung ist der geheime Schlüssel eines der Empfängerschlüssel nötig.

Abgesehen von dem bereits erwähnten Problem "Welcher ist der richtige Schlüssel, für den verschlüsselt werden soll?" sind Verschlüsselung und Entschlüsselung ziemlich einfache Operationen, weil keine Gefahr von Missverständnissen besteht: Man verschlüsselt etwas, und niemand außer den Besitzern der Empfängerschlüssel kann es lesen. Auf der anderen Seite kann man etwas entweder entschlüsseln oder eben nicht. Die entschlüsselten Daten an sich mögen Fragen aufwerfen, die Kryptooperation aber nicht. Aber: Teil des Problems "Welcher ist der richtige Schlüssel zum Verschlüsseln?" ist nicht nur die Frage "Wer ist der Besitzer dieses Schlüssels?", sondern auch "Ist dieser Schlüssel sicher genug für die zu verschlüsselnden Daten?". Dabei geht es weniger um Schlüssellängen usw., sondern um die Handhabung des Schlüssels. Deshalb sollten Sie zumindest vor dem Verschicken brisanter Informationen mit dem Schlüsselbesitzer klären, welches Sicherheitsniveau der Schlüssel hat.

digitale Unterschriften (Signaturen)

Die Verschlüsselung von Daten kann gewissermaßen umgekehrt werden: Anstatt Daten zu erzeugen, die nur ein Schlüssel lesen kann, kann man (zu einem gegebenen Datensatz) Daten erzeugen, die jeder lesen kann, die aber nur mit einem bestimmten Schlüssel erzeugt worden sein können. Die Unmöglichkeit, ohne Zugriff auf diesen Schlüssel dieselben Daten zu erzeugen, macht diese Daten zu einer Unterschrift für den fraglichen Datensatz. Und auch hier gilt: Fragen Sie nicht, wie das funktioniert; es sei denn, Sie mögen Mathe sehr.

Eine der großartigen Eigenschaften von Kryptografie ist, dass für jeden (Computer) trivial zu überprüfen ist, ob ein bestimmter Schlüssel eine Unterschrift erzeugt hat – so ganz im Gegensatz zu händischen Unterschriften. Wenn man einen bestimmten Schlüssel einer bestimmten Person zuordnen kann, dann kann man auch die Unterschriften dieses Schlüssels dieser Person zuordnen – sofern der Schlüssel nicht kompromittiert wurde. Es ist Ihnen vielleicht schon aufgefallen: An dieser Stelle ist aus der technischen Problematik bereits eine organisatorische (und rechtliche) geworden.

Technologie kann nicht alle Ihre Probleme lösen. Es ist extrem wichtig für den sicheren Umgang mit Kryptografie, dass Sie sich immer im klaren darüber sind, wo die Grenze zwischen technischen und organisatorischen Problemen verläuft (also auf welcher Seite Sie gerade sind).

Die Zuordnung eines Schlüssels zu einer Person ist nicht einmal der schwierigste Teil. Der ist: "Was genau bedeutet diese Signatur?" Ist Ihre Einschätzung rechtlich bindend für den Unterzeichner? Die inhaltliche Bedeutung einer Signatur kann so gering sein wie bei einem Zeitstempel (was eine absolut seriöse und notwendige Anwendung von kryptografischen Signaturen ist!), der nur nachweist, dass ein bestimmtes Dokument zum fraglichen Zeitpunkt schon existierte (und nicht erst später erzeugt wurde).

Wenn jemand alle seine E-Mails signiert (um Absenderfälschungen vorzubeugen), dann bedeutet der bloße Umstand, dass Ihnen ein bestimmtes Dokument als Anhang einer signierten Mail geschickt wurde, rechtlich wohl erst mal gar nichts, sondern eben nur, dass der Absender Ihnen anbieten wollte, mal einen Blick darauf zu werfen. Wenn in der E-Mail (im signierten Text, nicht im unsignierten Betreff) etwas steht wie "Ich akzeptiere die angehängte Vereinbarung", dann dürfte die Bedeutung dagegen klar sein und das Restrisiko technischer Art sein (ein kompromittierter Schlüssel niedrigen Sicherheitsniveaus).

Deshalb ist es sinnvoll, Schlüssel auf unterschiedlichen Sicherheitsniveaus zu haben: Einen für eine angemessene Absicherung alltäglicher Aktivitäten (E-Mail) und einen für die Unterzeichnung von Verträgen, wobei jeder Schlüssel eine eigene Schlüsselrichtlinie haben sollte, die neben dem Sicherheitsniveau die Grenzen und Berechtigungen des jeweiligen Schlüssels erläutert.

Im Gegensatz zu Verschlüsselung hat eine Signatur keinen (technischen) Adressaten. Jeder mit Zugang zum öffentlichen Schlüssel kann die Signatur prüfen. In den meisten Fällen ist das kein Problem (sondern ganz im Gegenteil sogar gefordert). Statt eines Adressaten wählt man den geheimen Schlüssel aus, der die Signatur erzeugen soll (wenn man mehrere zur Auswahl hat).

Das große "Welcher ist der richtige öffentliche Schlüssel?"-Problem besteht bei Signaturen genauso wie bei Verschlüsselungen. Zwar nicht beim Erzeugen einer Signatur, aber bei der Interpretation einer (technisch) erfolgreichen Signaturprüfung. Die entscheidende Frage ist aber: "Was bedeutet diese Signatur?" Offensichtlich bedeutet eine Signatur, die von "irgendeinem" Schlüssel erzeugt wurde, gar nichts. Jeder könnte sie erzeugt haben. Die Existenz der Signatur an sich sagt nicht mehr aus als, dass jemand mit Zugang zum geheimen Schlüssel sich entschieden hat, diese Signatur zu erzeugen. Dies ist ein rein technischer Aspekt ohne praktische Relevanz.


Zuordnung der Schlüssel zu Personen

Dies ist einer der schwierigen Aspekte. Da nur wenige Leute dies wirklich gut machen, ist das ganze System weniger sicher als die meisten Leute annehmen. Man muss dabei vier Elemente auseinanderhalten. Das erste ist am einfachsten zu handhaben: der Schlüssel selber. Sie müssen sichern sein, dass Sie das richtige Schlüsselmaterial (die große Zufallszahl) verwenden.

Da Schlüssel zu groß sind, um manuell verglichen zu werden, vergleicht man statt dessen sichere Hashwerte. Auch dies: Übler Mathe-Kram, den Sie zum Glück nicht verstehen müssen. Eine Hashfunktion mach dies: Man füttert sie mit einer beliebigen Menge Daten welcher Art auch immer (von einer einzelnen Ziffer bis hin zu einem DVD-Image), und sie gibt daraufhin eine "Zahl" fester Länge aus. Wenn es als unmöglich gilt, unterschiedliche Eingabedaten zu finden, die zur selben Ausgabe führen, dann handelt es sich um eine sichere Hashfunktion.

OpenPGP nutzt zur Zeit die Hashfunktion SHA-1, um Schlüssel zu indentifizieren. SHA-1 hat zwar inzwischen bekannte Sicherheitsprobleme, aber die betreffen die Verwendung bei OpenPGP nicht. Ein SHA-1-Wert sieht so aus:

       7D82 FB9F D25A 2CE4 5241  6C37 BF4B 8EEF 1A57 1DF5

Das nennt man den Fingerabdruck (fingerprint) des Schlüssels. Es gibt zwei Möglichkeiten, sich über die Identität eines Schlüssels (des reinen Schlüsselmaterials) Gewissheit zu verschaffen, ohne dass Dritte involviert sind: Man beschafft sich entweder den Schlüssel (oder ganz allgemein: die Datei) oder aber dessen Fingerabdruck jeweils aus einer sicheren Quelle (vom Schlüsselbesitzer übergebener USB-Stick), wobei der Fingerabdruck offensichtlich die einfachere Variante ist, da man ihn auf kleine Zettel oder sogar Visitenkarten drucken und verteilen kann.

Ihre OpenPGP-Anwendung zeigt Ihnen den Fingerabdruck des Schlüssels, den Sie aus einer unsicheren Quelle (z.B. Keyserver) haben, und Sie vergleichen dann den Fingerprint der vorliegenden Datei mit dem, den die Datei haben muss. Wenn beide identisch sind, können Sie bezüglich des Schlüssels sicher sein: Deshalb: Haben Sie immer ein paar kleine Zettel mit dem Fingerabdruck Ihres Schlüssels dabei!

Ein öffentlicher OpenPGP-Schlüssel (ein "Zertifikat") besteht aus zwei Komponenten: dem Schlüsselmaterial und den User-IDs. Eine User-ID ist eine mehr oder weniger beliebige Zeichenkette, die typischerweise wie folgt aufgebaut ist:

       Vorname Nachname (Kommentar) <E-Mail-Adresse>

Viele User-IDs haben keinen Kommentar, manche haben keine E-Mail-Adresse, und es gibt auch welche ohne (richtigen) Namen (z.B. für anonyme Nutzung). Auch wenn Sie sich beim Fingerprint sicher sind, können Name, E-Mail-Adresse und Kommentar falsch sein.

Die E-Mail-Adresse ist relativ einfach zu prüfen: Schicken Sie eine verschlüsselte Nachricht an die Adresse und warten Sie auf eine Antwort, die garantiert, dass die Nachricht entschlüsselt werden konnte.

Die Identität einer unbekannten Person zu prüfen ist nicht einfach. Auf Keysigning-Partys wird das durch die Vorlage von Personalausweisen (o.Ä.) gemacht. Aber würden Sie einen gut gefälschten Ausweis erkennen, womöglich noch einen ausländischen?

Glücklicherweise ist für Ihre eigenen Zwecke die Identität meistens nicht so wichtig. "Derjenige, den ich auf jener Veranstaltung getroffen habe und der sich als Peter vorgestellt hat" reicht in der Regel völlig aus. Die Identitätsprüfung ist deshalb primär ein Problem für das Web of Trust (siehe unten).

Auch Kommentare können kritisch sein, etwa wenn sie etwas über die Stellung desjenigen aussagen: Der Kommentar "Vorstand der Wasauchimmer AG" kann einen echten Unterschied ausmachen (wenn nicht für Sie, dann zumindest für jemand anderen). Die Frage, wann man eine User-ID akzeptiert (und für die Öffentlichkeit zertifiziert) ist kompliziert.

Den meisten Leuten ist diese Problematik nicht ausreichend klar. Dadurch reduzieren sie ihre eigene Sicherheit und (durch suboptimale Zertifizierungen) die anderer. Sie können anderen die Entscheidung, Ihren Schlüssel zu zertifizieren, dadurch erleichtern, dass Sie auch User-IDs in Ihren Schlüssel aufnehmen, die nur Ihren Namen oder nur Ihre E-Mail-Adresse enthalten. Solche User-IDs mögen für manchen Zertifizierer eher akzeptabel (bzw. einfacher zu prüfen) sein.

Wenn Sie sich bei einer User-ID sicher sind, sollten Sie sie zertifizieren. Das bedeutet, dass Sie eine Signatur über die Kombination aus öffentlichem Schlüssel und der User-ID erzeugen. Sie haben die Auswahl, ob Sie diese Zertifizierung nur für sich selber vornehmen ("lokale Signatur", lsign) oder für die Öffentlichkeit (das "Web of Trust"). Wenn ein Schlüssel mehrere User-IDs hat, können Sie entscheiden, welche davon Sie zertifizieren möchten.

Sie können auch einen groben Hinweis geben, wie gründlich Sie die User-ID und den Schlüssel geprüft haben. Für OpenPGP-Anwendungen (und hoffentlich auch für Sie!) ist es ein großer Unterschied, ob ein Schlüssel als gültig erkannt wird oder nicht.

Die öffentlichen Schlüssel, für die Sie auch den geheimen Schlüssel haben, gelten automatisch als gültig. Die anderen können Gültigkeit erlangen durch eine Zertifizierung eines Ihrer Schlüssel.

Das Web of Trust (WoT)

In Zusammenhang mit OpenPGP werden Sie immer mal wieder vom Web of Trust hören. Das ist eine indirekte Methode, Schlüssel Personen zuzuordnen, eine mächtige, aber komplizierte Technologie. Anfänger sollten das Web of Trust nicht benutzen, sondern sich erst mit der Verifizierung und Zertifizierung von Schlüsseln vertraut machen. Das WoT wird im Artikel OpenPGP für fortgeschrittene Anwender erklärt.


Zusammenfassung der Verwendung der Schlüsselkomponenten

Sie benötigen um
den öffentlichen Schlüssel einer anderen Person Daten für sie zu verschlüsseln
die Signaturen dieses Schlüssels zu überprüfen (auf technische Korrektheit; nicht ausreichend für die Gültigkeit des Schlüssels und damit der Signatur)
Ihre geheimen Unterschlüssel Daten zu entschlüsseln, die für Sie verschlüsselt wurden
Signaturen für Daten zu erzeugen
Ihren geheimen Hauptschlüssel Ihren Schlüssel zu verwalten (User-IDs oder Unterschlüssel hinzufügen; Einstellungen wie das Ablaufdatum ändern)
andere Schlüssel (d.h. manche oder alle von deren User-IDs) zu zertifizieren
den Fingerabdruck des Schlüssels einer anderen Person prüfen zu können, ob Sie den richtigen Schlüssel importiert haben (bevor Sie ihn lokal oder für die Öffentlichkeit zertifizieren)


weiterführende Artikel