Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
centos:openpgp_beim_mua [19.07.2013 11:08. ] – [Sichere eMail mit OpenPGP und S/MIME] django | centos:openpgp_beim_mua [28.11.2018 07:23. ] (aktuell) – [Sichere eMail mit OpenPGP und S/MIME] django | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Sichere eMail mit OpenPGP und S/MIME ====== | ||
+ | {{: | ||
+ | Dass das Internet systembedingt unsicher ist, hat sich in aller Regel herumgesprochen. | ||
+ | |||
+ | Inwieweit staatliche Stellen den Datenverkehr abhören, protokollieren und abgreifen und zu manipulieren bzw. zensieren versuchen, weiss | ||
+ | - keiner so genau und | ||
+ | - was mit den gewonnen Daten angestellt wird, wird sich niemand öffentlich sagen trauen. | ||
+ | |||
+ | Tja, das war Stand der Dinge vor 2013, denn was bisher in den Bereich der Spekulation fiel, | ||
+ | findet nun Bestätigung durch die Erkenntnisse des Whistleblowers Edward Snowden zu den Projekten PRISM aus den USA und TEMPORA aus England. | ||
+ | {{ : | ||
+ | |||
+ | Was lernen wir aus dieser Tatsache? Unsere Kommunikation ist nach besten Wissen und Gewissen, so zu gestalten, damit andere unsere Daten nicht mitlesen und manipulieren können. Ferner ist sicherzustellen, | ||
+ | |||
+ | Hierzu greifen wir auf **asymmetrische Verschlüsselungstechniken** zurück, die wir entweder mit [[http:// | ||
+ | |||
+ | Für die vertrauliche und gesicherte Kommunikation mit mir, einfach PGP oder S/MIME nutzen! Mein S/ | ||
+ | * [[http:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | auffindbar. Einfach auf einem der beiden Seiten nach meiner eMail-Adresse michael@nausch.org suchen! | ||
+ | |||
+ | Das ganze Thema wurde bei mehreren Infoabenden/ | ||
+ | |||
+ | Aktuell überarbeitete Version 3: | ||
+ | {{ : | ||
+ | |||
+ | ===== OpenPGP versus S/MIME ===== | ||
+ | Bei beiden **// | ||
+ | |||
+ | Bei einer **symetrischen Verschlüsselung** haben beide Kommunikationspartner den gleichen Schlüssel und können mit Hilfe dieses **// | ||
+ | |||
+ | Im Gegensatz zur **symetrischen Verschlüsselung** nutzt die **asymetrischen Verschlüsselung** ein Schlüsselpaar aus zwei Teilen, einem privaten oder öffentlichen Schlüssel. Dabei ist es im Grunde egal, welcher Teil veröffentlich wird, Hauptsache der als privat definierte, wird entsprechend so behandelt und der Nutzer hält diesen mit allen Mitteln privat - sprich sein Eigentum und nur ihm zugänglich. | ||
+ | |||
+ | Diese beiden Schlüssel sind durch mathematische Eigenschaften so miteinander verwoben, dass gilt: | ||
+ | - Was mit dem öffentlichen Schlüssel verschlüsselt wurde, ist nur mit dem privaten zu entschlüsseln. | ||
+ | - Mit dem öffentlichen Schlüssel codierte Inhalte lassen sich mit dem öffentlichen Schlüssel nicht mehr entschlüsseln. | ||
+ | - Daten die mit dem privaten Schlüssel codiert wurden, lassen sich mit dem öffentlichen Schlüssel öffnen. So kann eine Prüfsumme einer Nachricht mit dem privaten Schlüssel versehen werden. Der Empfänger kann dann die codierte Prüfsumme entschlüsseln und mit der eigenen erstellten Prüfsumme vergleichen und somit feststellen, | ||
+ | |||
+ | Die Frage ist bei der ganzen Sache allerdings, wie können wir wissen, ob der öffentliche Schlüssel auch wirklich zu dem gehört, den wir meinen? | ||
+ | |||
+ | Bei dieser Gretchenfrage unterscheiden sich nun die beiden Verfahren **OpenPGP** und **S/MIME**. Bei OpenPGP verwendet man das sogenannte **//Web of Trust//**, bei dem sich die einzelnen Teilnehmer gegenseitig als vertrauenswürdige Kommunikationspartner einstufen. Dazu signieren Sie nach erfolgter Überprüfung mehrerer Daten, den öffentlichen Schlüssel des Kommunikationspartners, | ||
+ | |||
+ | Bei **S/MIME** sieht das etwas anders. Hier kommen // | ||
+ | |||
+ | ===== OpenPGP in der Praxis ===== | ||
+ | ==== Installation von GnuPG ==== | ||
+ | Bei der Basisinstallation unseres Betriebssystems wir **GnuPG** bereits mit installiert, | ||
+ | < | ||
+ | Name : gnupg Relocations: | ||
+ | Version | ||
+ | ... | ||
+ | |||
+ | ... | ||
+ | Size : 4696623 | ||
+ | Signature | ||
+ | URL : http:// | ||
+ | Summary | ||
+ | Description : | ||
+ | GnuPG (GNU Privacy Guard) is a GNU utility for encrypting data and | ||
+ | creating digital signatures. GnuPG has advanced key management | ||
+ | capabilities and is compliant with the proposed OpenPGP Internet | ||
+ | standard described in RFC2440. Since GnuPG doesn' | ||
+ | algorithm, it is not compatible with any version of PGP2 (PGP2.x uses | ||
+ | only IDEA for symmetric-key encryption, which is patented worldwide). | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ==== Schlüsselgenerierung ==== | ||
+ | Im Zuge der Schlüsselgenerierung, | ||
+ | |||
+ | Die Erzeugung des Schlüsselpaares wir mit dem Befehl **gpg %%--%%gen-key** gestartet. Die Fragen beantwortet man gemäß der eigenen Vorstellung(en) | ||
+ | < | ||
+ | gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc. | ||
+ | This program comes with ABSOLUTELY NO WARRANTY. | ||
+ | This is free software, and you are welcome to redistribute it | ||
+ | under certain conditions. See the file COPYING for details. | ||
+ | |||
+ | gpg: Verzeichnis `/ | ||
+ | gpg: Neue Konfigurationsdatei `/ | ||
+ | gpg: WARNUNG: Optionen in `/ | ||
+ | gpg: Schlüsselbund `/ | ||
+ | gpg: Schlüsselbund `/ | ||
+ | Bitte wählen Sie, welche Art von Schlüssel Sie möchten: | ||
+ | (1) DSA and Elgamal (default) | ||
+ | (2) DSA (nur signieren/ | ||
+ | (5) RSA (nur signieren/ | ||
+ | Ihre Auswahl? 1 | ||
+ | DSA keypair will have 1024 bits. | ||
+ | ELG-E keys may be between 1024 and 4096 bits long. | ||
+ | What keysize do you want? (2048) 4096 | ||
+ | Die verlangte Schlüssellänge beträgt 4096 Bit | ||
+ | Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll. | ||
+ | 0 = Schlüssel verfällt nie | ||
+ | < | ||
+ | <n>w = Schlüssel verfällt nach n Wochen | ||
+ | <n>m = Schlüssel verfällt nach n Monaten | ||
+ | <n>y = Schlüssel verfällt nach n Jahren | ||
+ | Wie lange bleibt der Schlüssel gültig? (0) 0 | ||
+ | Schlüssel verfällt nie | ||
+ | Ist dies richtig? (j/N) j | ||
+ | |||
+ | You need a user ID to identify your key; the software constructs the user ID | ||
+ | from the Real Name, Comment and Email Address in this form: | ||
+ | " | ||
+ | |||
+ | Ihr Name (" | ||
+ | Email-Adresse: | ||
+ | Kommentar: | ||
+ | Sie haben diese User-ID gewählt: | ||
+ | " | ||
+ | |||
+ | Ändern: (N)ame, (K)ommentar, | ||
+ | Sie benötigen eine Passphrase, um den geheimen Schlüssel zu schützen. | ||
+ | |||
+ | Wir müssen eine ganze Menge Zufallswerte erzeugen. | ||
+ | unterstützen, | ||
+ | tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen. | ||
+ | .+++++++++++++++.+++++.++++++++++++++++++++.+++++++++++++++..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++.> | ||
+ | Wir müssen eine ganze Menge Zufallswerte erzeugen. | ||
+ | unterstützen, | ||
+ | tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen. | ||
+ | +++++...+++++.++++++++++..++++++++++..++++++++++.++++++++++.+++++.......+++++.++++++++++...+++++.+++++++++++++++.+++++.++++++++++..+++++..++++++++++...........++++++++++.++++++++++..+++++..+++++.+++++++++++++++> | ||
+ | gpg: / | ||
+ | gpg: key 0CC2A7BA marked as ultimately trusted | ||
+ | Öffentlichen und geheimen Schlüssel erzeugt und signiert. | ||
+ | |||
+ | gpg: " | ||
+ | gpg: 3 marginal-needed, | ||
+ | gpg: depth: 0 valid: | ||
+ | pub | ||
+ | Schl.-Fingerabdruck = A6FD 1BE7 6A94 4544 1073 BFDB 73E9 9A2A 0CC2 A7BA | ||
+ | uid Michael Nausch < | ||
+ | sub | ||
+ | ==== Inhalt der Schlüsselringe ==== | ||
+ | Nach der Erstellung der Erstellung des Schlüsselpaares befinden sich im Verzeichnis **.gnupg** zwei Dateien, nämlich **secring.pgp** und **pubring.pgp**. | ||
+ | $ ll .gnupg/ | ||
+ | < | ||
+ | -rw------- 1 django django 9207 27. Apr 21:55 gpg.conf | ||
+ | -rw------- 1 django django 1678 27. Apr 22:04 pubring.gpg | ||
+ | -rw------- 1 django django 1678 27. Apr 22:04 pubring.gpg~ | ||
+ | -rw------- 1 django django | ||
+ | -rw------- 1 django django 1842 27. Apr 22:04 secring.gpg | ||
+ | -rw------- 1 django django 1280 27. Apr 22:04 trustdb.gpg | ||
+ | </ | ||
+ | Im ersten Schlüsselring **secring.pgp** befindet sich der oder die privaten Schlüssel und im **pubring.pgp** alle öffentlichen, | ||
+ | $ gpg --list-secret-keys | ||
+ | < | ||
+ | ------------------------------- | ||
+ | sec | ||
+ | uid Michael Nausch < | ||
+ | ssb | ||
+ | Der Inhalt des öffentlichen keyrings zeigt **gpg %%--%%list-keys**. | ||
+ | $ gpg --list-keys | ||
+ | < | ||
+ | ------------------------------- | ||
+ | pub | ||
+ | uid Michael Nausch < | ||
+ | sub | ||
+ | </ | ||
+ | Bei einem " | ||
+ | | ||
+ | < | ||
+ | --------------------------------- | ||
+ | pub | ||
+ | uid Michael Nausch < | ||
+ | uid Michael Nausch (aka BigChief) < | ||
+ | uid Michael Nausch (aka Django) < | ||
+ | sub | ||
+ | |||
+ | pub | ||
+ | uid Sebastian Schubert (SpaceNet AG) < | ||
+ | sub | ||
+ | |||
+ | pub | ||
+ | uid Thomas Keil < | ||
+ | sub | ||
+ | |||
+ | pub | ||
+ | uid Peer Heinlein -- Heinlein Professional Linux Support GmbH < | ||
+ | sub | ||
+ | |||
+ | pub | ||
+ | uid Marco Scholl (Email) < | ||
+ | uid Marco Scholl (Ubuntu-Launchpad) < | ||
+ | uid [jpeg image of size 2556] | ||
+ | sub | ||
+ | |||
+ | pub | ||
+ | uid Bernd Goetter (dh5is) < | ||
+ | uid [jpeg image of size 3176] | ||
+ | sub | ||
+ | |||
+ | pub | ||
+ | uid Robert Fuhge < | ||
+ | sub | ||
+ | |||
+ | pub | ||
+ | uid Dieter Hametner (for VDR related emails) < | ||
+ | uid Dieter Hametner (Dieter Hametner) < | ||
+ | sub | ||
+ | |||
+ | pub | ||
+ | uid Carsten Presser (cpresser) < | ||
+ | sub | ||
+ | |||
+ | pub | ||
+ | uid Udo Richter < | ||
+ | uid Udo Richter < | ||
+ | sub | ||
+ | |||
+ | pub | ||
+ | uid Tobias Grimm < | ||
+ | uid Tobias Grimm < | ||
+ | uid Tobias Grimm < | ||
+ | uid Tobias Grimm < | ||
+ | uid Tobias Grimm < | ||
+ | uid Tobias Grimm < | ||
+ | sub | ||
+ | </ | ||
+ | ==== Rückruf-Zertifikat ==== | ||
+ | Sollte ein Bösewicht die Datei **secring.pgp** mit dem privaten Schlüssel in seine Finger kriegen, kann er mit dem Schlüssel nur etwas anfangen, wenn er dessen // | ||
+ | |||
+ | Hierzu erstellen wir uns nun ein **// | ||
+ | |||
+ | O.K. erst einmal wird mit **gpg %%--%%gen-revoke key-ID** das Zertifikat erzeugt. Zuerst ermitteln wir uns aber die entsprechende Key-ID: | ||
+ | $ gpg --list-sigs | ||
+ | < | ||
+ | ------------------------------- | ||
+ | pub | ||
+ | uid Michael Nausch < | ||
+ | sig 3 C591B828 2009-04-28 | ||
+ | sub | ||
+ | sig C591B828 2009-04-28 | ||
+ | Anschließend erzeugen wir das Rückrufzertifikat: | ||
+ | $ gpg --gen-revoke C591B828 | ||
+ | < | ||
+ | |||
+ | Create a revocation certificate for this key? (y/N) y | ||
+ | Grund für den Widerruf: | ||
+ | 0 = Kein Grund angegeben | ||
+ | 1 = Hinweis: Dieser Schlüssel ist nicht mehr sicher | ||
+ | 2 = Schlüssel ist überholt | ||
+ | 3 = Schlüssel wird nicht mehr benutzt | ||
+ | Q = Abbruch | ||
+ | (Wahrscheinlich möchten Sie hier 1 auswählen) | ||
+ | Ihre Auswahl? 3 | ||
+ | Geben Sie eine optionale Beschreibung ein. Beenden mit einer leeren Zeile: | ||
+ | > Dies war nur ein Demonstrationsschlüssel! | ||
+ | > | ||
+ | Grund für Widerruf: Schlüssel wird nicht mehr benutzt | ||
+ | Dies war nur ein Demonstrationsschlüssel! | ||
+ | Is this okay? (y/N) y | ||
+ | |||
+ | You need a passphrase to unlock the secret key for | ||
+ | user: " | ||
+ | 1024-bit DSA key, ID C591B828, created 2009-04-28 | ||
+ | |||
+ | Ausgabe mit ASCII Hülle erzwungen | ||
+ | Widerrufszertifikat wurde erzeugt. | ||
+ | |||
+ | Bitte speichern Sie es auf einem Medium welches sie wegschliessen | ||
+ | können; falls Mallory (ein Angreifer) Zugang zu diesem Zertifikat | ||
+ | erhält, kann erIhren Schlüssel unbrauchbar machen. | ||
+ | dieses Widerrufszertifikat auch auszudrucken und sicher aufzubewahren, | ||
+ | falls das ursprüngliche Mediumnicht mehr lesbar ist. Aber Obacht: Das | ||
+ | Drucksystem kann unter Umständen eine Kopie anderen Nutzern zugänglich | ||
+ | machen. | ||
+ | -----BEGIN PGP PUBLIC KEY BLOCK----- | ||
+ | Version: GnuPG v1.4.5 (GNU/Linux) | ||
+ | Comment: A revocation certificate should follow | ||
+ | |||
+ | iHIEIBECADMFAkn3UoUsHQNEaWVzIHdhciBudXIgZWluIERlbW9uc3RyYXRpb25z | ||
+ | c2NobMO8c3NlbCEACgkQSKXk5sWRuCi3QQCVGAy0rN55BUGgFVH5I0EepgcjfgCf | ||
+ | ey5WP/ | ||
+ | =m1aK | ||
+ | -----END PGP PUBLIC KEY BLOCK----- | ||
+ | </ | ||
+ | Den Zertifikatsblock speichern wir dann in einer Textdatei an einem sicheren Ort ab. | ||
+ | $ vim revocation.crt | ||
+ | Soll nun der Schlüssel zurückgezogen werden, so braucht man lediglich die Datei **revocation.crt** in den öffentlichen Schlüsselbund **pubring.pgp** zu importieren. GnuPG erkennt nun das Rückrufzertifikat für einen der Schlüssel handelt und hängt des diesem **__ohne__** weitere Sicherheitsabfrage an. | ||
+ | $ gpg --import revocation.crt | ||
+ | < | ||
+ | gpg: Anzahl insgesamt bearbeiteter Schlüssel: 1 | ||
+ | gpg: neue Schlüsselwiderrufe: | ||
+ | gpg: 3 marginal-needed, | ||
+ | gpg: depth: 0 valid: | ||
+ | Anschließend können wir uns den Inhalt des öffentlichen schlüsselringes anzeigen lassen: | ||
+ | $ gpg --list-sigs C591B828 | ||
+ | < | ||
+ | rev C591B828 2009-04-28 | ||
+ | uid Michael Nausch < | ||
+ | sig 3 C591B828 2009-04-28 | ||
+ | </ | ||
+ | Beim Schlüssel mit der ID C591B828 sehen wir nun am Zeilenanfang ein **rev**, welches uns anzeigt, dass dieser Schlüssel zurückgezogen (revoked) wurde. Anschließend läd man den Schlüssel auf einen Keyserver. | ||
+ | ==== Export des private Keys ==== | ||
+ | Will man seinen privaten Schlüssel von einem Rechner auf einen **__vertrauenswürdigen__** weiteren Rechner transferieren, | ||
+ | |||
+ | Als erstes holen wir uns die Key-ID des Schlüssels, | ||
+ | $ gpg --list-secret-keys | ||
+ | |||
+ | < | ||
+ | ------------------------------- | ||
+ | sec | ||
+ | uid Michael Nausch < | ||
+ | uid Michael Nausch (aka BigChief) < | ||
+ | uid Michael Nausch (aka Django) < | ||
+ | ssb | ||
+ | |||
+ | Anschließend exportieren wir den gewünschten private-Key, | ||
+ | $ gpg --export-secret-key --armor 1F0471F12384C849 > 1F0471F12384C849-secret.asc | ||
+ | |||
+ | Die Datei 1F0471F12384C849-secret.asc enthält nun den private key und wir können diese Datei sichern, oder auf einen Zielrechner/ | ||
+ | |||
+ | ==== Export des public Keys ==== | ||
+ | === in eine Datei === | ||
+ | Um einen Schlüssel an einen Freund direkt auszuhändigen, | ||
+ | $ gpg --export --armor 2384C849 > public-key.asc | ||
+ | |||
+ | $ cat public-key.asc | ||
+ | < | ||
+ | Version: GnuPG v1.4.5 (GNU/Linux) | ||
+ | |||
+ | mQGiBEnRHRIRBACR8Tm9jHPJ9RGkJA9OAPB/ | ||
+ | 6nl1psT4I4ILY787KPi757P9CnXIVcFR6BJtfg5rwR9xUDSWRj2jqx3XWvSscqaz | ||
+ | 4MEcrY1T4m9GHNrQi/ | ||
+ | FpkkXnKGL+XFvEeaUqoYI/ | ||
+ | TR78pksJD+mF3PqDBI3PCVI0PFitPsRCKEchAJuWmEXf0TEHOFquG6LtDGTfeapu | ||
+ | OE/ | ||
+ | 4E/ | ||
+ | RxjP3HaNXwSbRr+KZA2A6fpYbJnE/ | ||
+ | vGcU63Kx1qhNLPCEphLI42TBgLuqR1f8kEAtSfFKgmQ73QeK2rQjTWljaGFlbCBO | ||
+ | YXVzY2ggPG1pY2hhZWxAbmF1c2NoLm9yZz6IYwQTEQIAIwIbAwYLCQgHAwIEFQII | ||
+ | AwQWAgMBAh4BAheABQJJ0R8EAhkBAAoJEB8EcfEjhMhJGiUAoJt5VLDVwRjL7M21 | ||
+ | CGOojLl0xucNAKCiFgBJvMVJfGldqu3m9f1OeWZbTohGBBARAgAGBQJJ12PAAAoJ | ||
+ | EKcOoZ9MAW3gG24AoICAaUlcCJBWC/ | ||
+ | / | ||
+ | 3N4Q2A7efl0aAJ9kMtlSjWwPg2xwrKx18+CEik/ | ||
+ | ED/ | ||
+ | j4qV4CjYWYhGBBARAgAGBQJJ27NKAAoJEIRjxf/ | ||
+ | phjPgFlSfnEHAJ9GL5ZWFDsa2ThupL+2nA0GuqTQ5ohWBBARCwAGBQJJ2oG8AAoJ | ||
+ | EB/ | ||
+ | tezVEYj/ | ||
+ | Q2hpZWYpIDxiaWdjaGllZkBvbW5pMTI4LmRlPohgBBMRAgAgBQJJ0R6nAhsDBgsJ | ||
+ | CAcDAgQVAggDBBYCAwECHgECF4AACgkQHwRx8SOEyEmTgwCgiAIzkeiY+QVEZ5s1 | ||
+ | 4BrMyyyJhG8AoI7IH18iOH8K1FZGcOqhbs6nRGHiiEYEEBECAAYFAknXY8AACgkQ | ||
+ | pw6hn0wBbeADGQCfRPq7TAvuCQHBVQo8/ | ||
+ | AUtP2U6+iEYEEBECAAYFAknaQOwACgkQ9xgNJq7apkL1oACeNjg0+DOHWq3ouNb9 | ||
+ | rrt+Qqu0/ | ||
+ | P8OSS/ | ||
+ | TBZCM5IWiEYEEBECAAYFAknbs08ACgkQhGPF/ | ||
+ | 1LG+9vzf+84AnjLiQv1Jd5sA9B2v13ztrKl6/ | ||
+ | H981S96h3wHy5ADgj3GrZ9u7UfC4XNECO6w8mjvf0QLi/ | ||
+ | 7xk1gvYM+hzm7IU6Dv+DN3hU/ | ||
+ | Z28pIDxkamFuZ29AbmF1c2NoLm9yZz6IYAQTEQIAIAUCSdEe0gIbAwYLCQgHAwIE | ||
+ | FQIIAwQWAgMBAh4BAheAAAoJEB8EcfEjhMhJa9cAoNiV37wAheLKJxUN9Ui+cjJI | ||
+ | vt0MAKC80k4tO7Oa0E3nO6Qbq3Cu/ | ||
+ | AW3gq4EAnAoBXyI9HNhBNbhB/ | ||
+ | N4hGBBARAgAGBQJJ2kDsAAoJEPcYDSau2qZCqN4AoIawtaQoHX8dkon96WeOZhql | ||
+ | 7VZiAJ9a4kdk2OU1H8JOl5gLDHTaQfgfEohGBBARAgAGBQJJ2lMOAAoJED/ | ||
+ | tarMdTAAoKFSc2Jw6M+wZCNc/ | ||
+ | DYhGBBARAgAGBQJJ27NPAAoJEIRjxf/ | ||
+ | g7K3AJ93Qe8isJhUYzChdanLTi4KNPwo/ | ||
+ | od8BLqkA31GEhEnkOep/ | ||
+ | F2jcc+6xDKNMegBZug/ | ||
+ | vJvrEUTBZ46YygbHvgkdkaG5APAsuxryRUxXNQpH8kacMdolOrPdUmpqLAs1zuq7 | ||
+ | pFtalXwYAbdl0jZJsM1zfpx4FJ0ExRY3fviQrapAsrfd95p9Zz6yLHE6OPhKdVyU | ||
+ | pi2VVAFvaLir7nmyNFCjwfaPC5cDUoDHfuHpnEXC4p3YEmynK8ySjSktMt+T6A1C | ||
+ | l2zjGq4gdf/ | ||
+ | LS8dT2smLWUwiVsxCn9mfqQg1u3SQhrfcGHlhzKvFdPY0aN7cILOCPUedBWQL5Wk | ||
+ | tnoF+GTPDfhOsvhuOTnrCz8TcZwwkZqH16jCV/ | ||
+ | UtfTmJlpcjjKUQEeDhDyX6F7vKyhv5XfHCZ+cnSa+YUJze8DoL9eqJmaT6zzvbT5 | ||
+ | mn90yPJFvaoiXslYlY7DdjKW85S8Al1VQJLEvS03Kdaz2pqUWOPkYLJ8VCxNQLKe | ||
+ | lLqkcEHXeYukpmBP2eQT/ | ||
+ | JN/ | ||
+ | R4ts9kAHSP9// | ||
+ | dTGHzuPup7Rzj8O0eTOFvv1Fqzek4IXJBNDR/ | ||
+ | zpj91C1alZVO69nSPw6O5QIpSnqx+azXLmdtsjv77trtuAa2tvJWI1Bv3KcIzm3e | ||
+ | gSXcSeVpSmSU3R45FuaCR4G2D3iv7nb8S2FokalJC0A32A9aiGb+TFgXTno7UAcm | ||
+ | g+yF+7/ | ||
+ | fwToO7hLenSLvNIVXcSDG3wvWREHqosScnXCO0gln6XGOj5VSHJ+T4mUBK4v/ | ||
+ | 2DWFCkqufpz/ | ||
+ | kA3qgtSfwa4cwYvf3U1wSyZQOp3DQLgJ+FbPkX8KLA4wQ+FkApsKZXoQoLMcf4WF | ||
+ | BxhQJnagtFajAt+HMP0C/ | ||
+ | jloprzxctT2HwFEA8kSyN86tTv1qnphYleBgblOeP4HM1H07iKBjIF34Gvo1+K3Z | ||
+ | J7QHgUluxQK2KD3WSakCzvSqHr/ | ||
+ | RYhJBBgRAgAJBQJJ0R2SAhsMAAoJEB8EcfEjhMhJjvUAn0PyyXdK714eWa8dQUmd | ||
+ | 36efmnu7AJ9yr+km06Z7BdZ1z8AOfNJdwpp0vg== | ||
+ | =gen/ | ||
+ | -----END PGP PUBLIC KEY BLOCK-----</ | ||
+ | === auf einen Keyserver === | ||
+ | Den zuvor exportierten public key können wir nun in einem WEB-Formular auf einem [[http:// | ||
+ | $ gpg --keyserver keyserver.nausch.org --send-key 2384C849 | ||
+ | |||
+ | gpg: sending key 2384C849 to hkp server keyserver.nausch.org | ||
+ | Um nun nicht jedesmal den Keysever manuell angeben zu müssen, hinterlegen wir diesen in der Konfigurationsdatei **~/ | ||
+ | $ vim ~/ | ||
+ | < | ||
+ | ... | ||
+ | # Djangos bevorzugter Keyserver, eingetragen am 28.04.2009 | ||
+ | keyserver keyserver.nausch.org</ | ||
+ | Nunmehr reicht ein: | ||
+ | $ gpg --send-key 2384C849 | ||
+ | gpg: sending key 2384C849 to hkp server keyserver.nausch.org | ||
+ | ==== Import eines public Keys ==== | ||
+ | Beim Revocation Certifikat haben wir bereits die Importfunktion genutzt. Genauso funktioniert im Übrigen der Import eines //fremden// public Keys. | ||
+ | $ gpg --import friendly-user.asc | ||
+ | Genau so geht dies natürlich direkt von einem Keyserver aus. | ||
+ | $ gpg --recv-key 57548dcd | ||
+ | ==== Schlüsseleditor ==== | ||
+ | Zum Editieren eines Schlüssel, so z.B. zum Ergänzen von weiteren User-IDs (eMail-Adressen) oder zum Festlegen des Vertrauenswertes oder zum Beglaubigen (// | ||
+ | < | ||
+ | gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc. | ||
+ | This program comes with ABSOLUTELY NO WARRANTY. | ||
+ | This is free software, and you are welcome to redistribute it | ||
+ | under certain conditions. See the file COPYING for details. | ||
+ | |||
+ | Geheimer Schlüssel ist vorhanden. | ||
+ | |||
+ | pub 1024D/ | ||
+ | | ||
+ | sub 4096g/ | ||
+ | [ultimate] (1). Michael Nausch < | ||
+ | [ultimate] (2) Michael Nausch (aka BigChief) < | ||
+ | [ultimate] (3) Michael Nausch (aka Django) < | ||
+ | |||
+ | Befehl> help | ||
+ | quit Menü verlassen | ||
+ | save speichern und Menü verlassen | ||
+ | help Diese Hilfe zeigen | ||
+ | fpr show key fingerprint | ||
+ | list Schlüssel und User-IDs auflisten | ||
+ | uid | ||
+ | key | ||
+ | check check signatures | ||
+ | sign sign selected user IDs [* see below for related commands] | ||
+ | lsign sign selected user IDs locally | ||
+ | tsign sign selected user IDs with a trust signature | ||
+ | nrsign | ||
+ | adduid | ||
+ | addphoto | ||
+ | deluid | ||
+ | addkey | ||
+ | addcardkey | ||
+ | keytocard | ||
+ | bkuptocard | ||
+ | delkey | ||
+ | addrevoker | ||
+ | delsig | ||
+ | expire | ||
+ | primary | ||
+ | toggle | ||
+ | pref Liste der Voreinstellungen (für Experten) | ||
+ | showpref | ||
+ | setpref | ||
+ | keyserver | ||
+ | notation | ||
+ | passwd | ||
+ | trust Den "Owner trust" ändern | ||
+ | revsig | ||
+ | revuid | ||
+ | revkey | ||
+ | enable | ||
+ | disable | ||
+ | showphoto | ||
+ | clean | ||
+ | minimize | ||
+ | |||
+ | * The `sign' command may be prefixed with an `l' for local signatures (lsign), | ||
+ | a `t' for trust signatures (tsign), an `nr' for non-revocable signatures | ||
+ | (nrsign), or any combination thereof (ltsign, tnrsign, etc.). | ||
+ | |||
+ | Befehl> quit</ | ||
+ | |||
+ | ==== eMail-Adressen bei einem PGP/ | ||
+ | === hinzufügen === | ||
+ | Zu einem bestehendem Schlüsselpaar, | ||
+ | $ gpg --list-secret-keys | ||
+ | |||
+ | < | ||
+ | ------------------------------- | ||
+ | sec | ||
+ | uid Michael Nausch < | ||
+ | uid Michael Nausch (aka BigChief) < | ||
+ | uid Michael Nausch (aka Django) < | ||
+ | ssb | ||
+ | |||
+ | In diesem Beispiel haben wir nur einen privaten Schlüssel im Schlüsselbund. Zum Anfügen einer Adresse wählen wir zuerst den gewünschten key aus. | ||
+ | $ gpg --edit-key 1F0471F12384C849 | ||
+ | |||
+ | < | ||
+ | This is free software: you are free to change and redistribute it. | ||
+ | There is NO WARRANTY, to the extent permitted by law. | ||
+ | |||
+ | Geheimer Schlüssel ist vorhanden. | ||
+ | |||
+ | pub 1024D/ | ||
+ | | ||
+ | sub 4096g/ | ||
+ | [ uneing.] (1). Michael Nausch < | ||
+ | [ uneing.] (2) Michael Nausch (aka BigChief) < | ||
+ | [ uneing.] (3) Michael Nausch (aka Django) < | ||
+ | |||
+ | Befehl> | ||
+ | </ | ||
+ | Da wir eine weitere eMail an den Schlüssel anfügen wollen, teilen wir dies dem Programm durch die eingabe der Option **adduid** mit. | ||
+ | | ||
+ | |||
+ | Wir werden nun nach dem **Namen**, **eMail-Adresse** und **Kommentar** gefragt. | ||
+ | < | ||
+ | Email-Adresse: | ||
+ | Kommentar: | ||
+ | Sie haben diese User-ID gewählt: | ||
+ | " | ||
+ | |||
+ | Ändern: (N)ame, (K)ommentar, | ||
+ | </ | ||
+ | Nach Bestätigung der Daten durch Eingabe von **F** werden wir nach der __bestehenden Passphrase__ unseres Schlüssels gefragt. | ||
+ | Sie benötigen eine Passphrase, um den geheimen Schlüssel zu entsperren. | ||
+ | | ||
+ | | ||
+ | |||
+ | Im Speicher wurde nun eine weitere User-ID bzw. eMail-Adresse zu einem bestehenden private key hinzugefügt. Damit die Daten dauerhaft auf die Platte geschrieben werden, schließen wir unseren Bearbeitungsvorgang mit dem Befehl **save** ab. | ||
+ | | ||
+ | |||
+ | === löschen === | ||
+ | Wie zuvor beim Hinzufügen eines Schlüssels, | ||
+ | $ gpg --list-secret-keys | ||
+ | |||
+ | < | ||
+ | ------------------------------- | ||
+ | sec | ||
+ | uid Michael Nausch < | ||
+ | uid Michael Nausch (aka BigChief) < | ||
+ | uid Michael Nausch (aka Django) < | ||
+ | uid Django < | ||
+ | ssb | ||
+ | </ | ||
+ | |||
+ | In diesem Beispiel haben wir nur einen privaten Schlüssel im Schlüsselbund. Zum Löschen einer Adresse wählen wir zuerst den gewünschten key aus. | ||
+ | $ gpg --edit-key 1F0471F12384C849 | ||
+ | |||
+ | < | ||
+ | This is free software: you are free to change and redistribute it. | ||
+ | There is NO WARRANTY, to the extent permitted by law. | ||
+ | |||
+ | Geheimer Schlüssel ist vorhanden. | ||
+ | |||
+ | pub 1024D/ | ||
+ | | ||
+ | sub 4096g/ | ||
+ | [ uneing.] (1). Michael Nausch < | ||
+ | [ uneing.] (2) Michael Nausch (aka BigChief) < | ||
+ | [ uneing.] (3) Michael Nausch (aka Django) < | ||
+ | [ uneing.] (4) Django < | ||
+ | |||
+ | Befehl> | ||
+ | </ | ||
+ | |||
+ | Mit dem Befehl **uid** wählen wir nun diejenige User-ID aus, die wir löschen möchten. | ||
+ | | ||
+ | |||
+ | < | ||
+ | | ||
+ | sub 4096g/ | ||
+ | [ uneing.] (1). Michael Nausch < | ||
+ | [ uneing.] (2) Michael Nausch (aka BigChief) < | ||
+ | [ uneing.] (3) Michael Nausch (aka Django) < | ||
+ | [ uneing.] (4)* Django < | ||
+ | </ | ||
+ | |||
+ | An dem Sternchen **%%*%%** hinter der UID-Nummer sehen, wir welche ID ausgewählt wurde. Nun können wir mit dem Befehl **deluid** die gewählte UID löschen. | ||
+ | | ||
+ | Wir werden nun gefragt, ob wir dies wirklich wünschen. | ||
+ | Diese User-ID wirklich entfernen? (j/N) j | ||
+ | |||
+ | Dies e Frage bestätigen wir mit der Eingabe von **j**. | ||
+ | |||
+ | < | ||
+ | | ||
+ | sub 4096g/ | ||
+ | [ uneing.] (1). Michael Nausch < | ||
+ | [ uneing.] (2) Michael Nausch (aka BigChief) < | ||
+ | [ uneing.] (3) Michael Nausch (aka Django) < | ||
+ | </ | ||
+ | |||
+ | Auch hier müssen wir die Änderung mit dem Befehl **save** abspeichern. Zur Sicherheit frägt uns aber das Programm, falls wir diesen schritt vergessen haben sollten. | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | |||
+ | ==== Schlüsseldaten Aktualisieren ==== | ||
+ | In Regelmäßigen Abständen ist es zweckmäßig und angeraten, die Schlüssel im lokalen Schlüsselspeicher zu aktualisieren. Somit kann festgestellt werden, ob z.B. Schlüssel noch aktuell oder zurückgerufen worden sind. | ||
+ | |||
+ | Im einfachsten Fall machen wir das mit Hilfe einer **GUI** oder eben auf der Konsole mit dem Aufruf **/ | ||
+ | # / | ||
+ | < | ||
+ | gpg: fordere Schlüssel 7C03FC4F von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel 8B7684D4 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel 81EBD929 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel 0DE59D7A von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel C3B26780 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel 4C016DE0 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel CBBEBF26 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel E9E5F528 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel DEA1DF01 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel FDB5AACC von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel A2C9DB22 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel AEDAA642 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel 2840C708 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel 65D0FD58 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel CD9EC0A8 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel 3A4B0B6A von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel 581A98A1 von hkp-Server keyserver.nausch.org an | ||
+ | gpg: fordere Schlüssel D4827E51 von hkp-Server keyserver.nausch.org an | ||
+ | gpgkeys: key 126AAB0159C57820F3FE773EB27468897C03FC4F not found on keyserver | ||
+ | gpg: Schlüssel 8B7684D4: "Klaus Tachtler (klaus) < | ||
+ | gpg: Schlüssel 81EBD929: " | ||
+ | gpg: Schlüssel 0DE59D7A: " | ||
+ | gpg: Schlüssel C3B26780: "Peer Heinlein -- Heinlein Professional Linux Support GmbH < | ||
+ | gpg: Schlüssel 4C016DE0: "Marco Scholl (Ubuntu-Launchpad) < | ||
+ | gpg: Schlüssel CBBEBF26: "Bernd Goetter (dh5is) < | ||
+ | gpg: Schlüssel E9E5F528: " | ||
+ | gpg: Schlüssel DEA1DF01: " | ||
+ | gpg: Schlüssel FDB5AACC: " | ||
+ | gpg: Schlüssel A2C9DB22: "Udo Richter < | ||
+ | gpg: Schlüssel AEDAA642: " | ||
+ | gpg: Schlüssel 2840C708: "dirk astrath < | ||
+ | gpg: Schlüssel 65D0FD58: "CA Cert Signing Authority (Root CA) < | ||
+ | gpg: Schlüssel CD9EC0A8: " | ||
+ | gpg: Schlüssel 3A4B0B6A: " | ||
+ | gpg: Schlüssel 581A98A1: "Joel HATSCH < | ||
+ | gpg: Schlüssel D4827E51: "Joel HATSCH < | ||
+ | gpg: Anzahl insgesamt bearbeiteter Schlüssel: 17 | ||
+ | gpg: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Grafische Benutzeroberflächen für GnuPG ===== | ||
+ | Natürlich muss man nicht // | ||
+ | |||
+ | Beide Programme sind soweit selbsterklärend, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ===== Signieren und Ver-/ | ||
+ | ==== Signieren | ||
+ | Zum Signieren einer Datei, also dem Beglaubigen einer Datei mit einer digitalen Unterschrift, | ||
+ | Wir legen uns einfach eine Testdate mit dem aktuellen **// | ||
+ | $ ddate > Testdatei | ||
+ | |||
+ | $ cat Testdatei | ||
+ | |||
+ | Today is Pungenday, the 45th day of Discord in the YOLD 3175 | ||
+ | |||
+ | Mit **gpg %%--%%sign Dateiname** erzeugen wir die Signatur, kompremieren die Originaldatei und schreiben beides in Binärformat in eine neue Datei. | ||
+ | $ gpg --sign Testdatei | ||
+ | |||
+ | You need a passphrase to unlock the secret key for | ||
+ | user: " | ||
+ | 1024-bit DSA key, ID 2384C849, created 2009-03-30 | ||
+ | |||
+ | Diese Datei liegt zwar im Binärformat aber keineswegs **verschlüsselt** vor. | ||
+ | $ cat Testdatei.gpg | ||
+ | < | ||
+ | | ||
+ | �|A�" | ||
+ | \����P��}�{x��-���</ | ||
+ | Dieses Vorgehen macht jedoch nur Sinn, wenn mit der Option **%%--%%encrypt** gleichzeitig die Datei verschlüsselt werden soll. | ||
+ | $ gpg --encrypt --sign -r 2384C849 Testdatei | ||
+ | |||
+ | You need a passphrase to unlock the secret key for | ||
+ | user: " | ||
+ | 1024-bit DSA key, ID 2384C849, created 2009-03-30 | ||
+ | |||
+ | Will man die Daten per eMail verschicken so benutzt man die Option **%%--%%armor**. | ||
+ | $ gpg --sign --armor Testdatei | ||
+ | |||
+ | You need a passphrase to unlock the secret key for | ||
+ | user: " | ||
+ | 1024-bit DSA key, ID 2384C849, created 2009-03-30 | ||
+ | |||
+ | Nun können wir uns die erstellte signierte Datei ansehen. | ||
+ | $ cat Testdatei.asc | ||
+ | |||
+ | < | ||
+ | Version: GnuPG v1.4.5 (GNU/Linux) | ||
+ | |||
+ | owGbwMvMwCQoz1L4UbnlhCfjGp8kzpDU4pKUxJLUTM/ | ||
+ | U/ | ||
+ | Csx8QaZZ0gxzuLxOLFrGsOrFpwOrXhWuv2v34D27O8P8Iu/ | ||
+ | ZnX3/ | ||
+ | =G1f3 | ||
+ | -----END PGP MESSAGE----- | ||
+ | </ | ||
+ | |||
+ | Soll die Originaldatei zusammen mit der Signatur in der erzeugten Datei stehen, so verwendet man die Option **%%--%%clearsign**. | ||
+ | $ gpg --clearsign --armor Testdatei | ||
+ | |||
+ | You need a passphrase to unlock the secret key for | ||
+ | user: " | ||
+ | 1024-bit DSA key, ID 2384C849, created 2009-03-30 | ||
+ | |||
+ | Die erzeugte Testdatei.asc enthält dann: | ||
+ | $ cat Testdatei.asc | ||
+ | < | ||
+ | Hash: SHA1 | ||
+ | |||
+ | Today is Pungenday, the 45th day of Discord in the YOLD 3175 | ||
+ | -----BEGIN PGP SIGNATURE----- | ||
+ | Version: GnuPG v1.4.5 (GNU/Linux) | ||
+ | |||
+ | iD8DBQFJ92i4HwRx8SOEyEkRAjwHAJsFNjNZmdXHYNA0cs+hv1cj0JhH5wCfSB2r | ||
+ | qljC/ | ||
+ | =smHj | ||
+ | -----END PGP SIGNATURE----- | ||
+ | </ | ||
+ | |||
+ | Mit **gpg %%--%%verify** können wir die Signatur der datei überprüfen: | ||
+ | $ gpg --verify Testdatei.asc | ||
+ | |||
+ | gpg: Signature made Di 28 Apr 2009 22:36:08 CEST using DSA key ID 2384C849 | ||
+ | gpg: Good signature from " | ||
+ | gpg: aka " | ||
+ | gpg: aka " | ||
+ | |||
+ | Als letzte Variante gibt es dann noch die **// | ||
+ | $ gpg --detach-sign --armor Testdatei | ||
+ | |||
+ | You need a passphrase to unlock the secret key for | ||
+ | user: " | ||
+ | 1024-bit DSA key, ID 2384C849, created 2009-03-30 | ||
+ | |||
+ | In der nun erzeugten Datei ist nur noch die Signatur enthalten. | ||
+ | $ cat Testdatei.asc | ||
+ | < | ||
+ | Version: GnuPG v1.4.5 (GNU/Linux) | ||
+ | |||
+ | iD8DBQBJ92rnHwRx8SOEyEkRArFEAJ9YUv8YvCj63rh3f/ | ||
+ | nDMDrNa7OKWXMjcuXPLLKr4= | ||
+ | =FYiz | ||
+ | -----END PGP SIGNATURE----- | ||
+ | </ | ||
+ | |||
+ | Wir verändern nun zu Testzwecken den Inhalt der Testdatei - wir fügen ein Zeichen ein. | ||
+ | $ vim Testdatei | ||
+ | |||
+ | Today is Pungenday, the 45th day of Discord in the YOLD 3175! | ||
+ | |||
+ | Und überprüfen nunmehr die Signatur der Testdatei, was natürlich postwendend als **BAD signature** angeprangert wird. | ||
+ | $ gpg --verify Testdatei.asc Testdatei | ||
+ | |||
+ | gpg: Signature made Di 28 Apr 2009 22:55:18 CEST using DSA key ID 2384C849 | ||
+ | gpg: BAD signature from " | ||
+ | |||
+ | Wurde die Signatur verändert so fällt dies sofort auf: | ||
+ | $ gpg --verify Testdatei.asc Testdatei | ||
+ | |||
+ | gpg: Prüfsummenfehler; | ||
+ | gpg: [don't know]: indeterminate length for invalid packet type 2 | ||
+ | gpg: no signature found | ||
+ | gpg: Die Unterschrift konnte nicht überprüft werden. | ||
+ | Denken Sie daran, daß die Datei mit der Unterschrift (.sig oder .asc) | ||
+ | als erster in der Kommandozeile stehen sollte. | ||
+ | |||
+ | |||
+ | ==== Verschlüsseln ==== | ||
+ | Verschlüsselt wird jeweils mit dem Public Key des Empfängers, | ||
+ | $ gpg --encrypt --armor -r 4C016DE0 Testdatei | ||
+ | Ohne den Schalter **--armor** wird die Datei im Binärformat gespeichert. | ||
+ | $ gpg --encrypt -r 4C016DE0 Testdatei | ||
+ | ==== Entschlüsseln ==== | ||
+ | Zum Entschlüsseln nutzen wir die Option **%%--%%decrypt**; | ||
+ | $ gpg --decrypt Testdatei.asc > neue_Testdatei | ||
+ | < | ||
+ | user: " | ||
+ | 4096-bit ELG-E key, ID D239B202, created 2009-03-30 (main key ID 2384C849) | ||
+ | |||
+ | gpg: verschlüsselt mit 4096-Bit ELG-E Schlüssel, ID D239B202, erzeugt 2009-03-30 | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | ===== S/MIME in der Praxis ===== | ||
+ | Nachdem wir uns im vorliegenden Kapitel mit den theoretischen Grundlagen befasst haben, widmen wir uns im [[centos: | ||
+ | ===== GPF CryptoStick in der Praxis ===== | ||
+ | Im folgendem Kapitel widmen wir uns im Detail dem [[centos: | ||
+ | |||
+ | |||
+ | ====== Links ====== | ||
+ | * **[[wiki: | ||
+ | * **[[http:// | ||
+ | |||