Sicherheitsaspekte
Einführung Kryptographie
Pretty Good Privacy (PGP)
Internet zwischen fremden Partnern ist unsicher
Internet Transport Protokoll beinhaltet keine Mechanismen zur Datensicherheit
Übertragung kann abgehört und verfälscht werden
==> Problem bei vertraulichen Informationen
==> sichere Übertragung ist erforderlich um Nutzungsmöglichkeiten des Internets zu erhöhen
Pakete können
werden.
Sicherheit ist
Client/Server selber müssen sicher sein
Transformation von Nachrichten (messages, plain text) in verschlüsselte Nachrichten (cipher text) mit Hilfe von Algorithmen / Programmen (cipher suites) und Schlüsseln (keys).
geheime Algorithmen (-> unpraktikabel)
Standard Versuch bei Banken und Telecoms
bekannte Algorithmen mit geheimen Schlüsseln
im internationalen Security Bereich
gleicher Schlüssel für Ver- und Entschlüsselung
sehr schnell
Problem: Anzahl der Schlüssel bei n Partnern
Problem: sicherer Austausch der Schlüssel
Beispiele: DES, RC4, Triple-DES, RC2, Idea, Fortezza (PINs, TANs)
unterschiedliche Schlüssel für Ver- und Entschlüsselung
öffentliche und private Schlüssel (public und private key)
relativ langsam
bei richtiger Wahl der Parameter sehr / beliebig sicher
Sicherheit basiert auf der Schwierigkeit der
Faktorisierung grosser Zahlen,
bzw. der Berechung des diskreten Logarithmus (in endlichen Körpern)
Beispiele: RSA, DSA, Diffie-Hellman
Diffie-Hellman (exponential key exchange): zum Aufbau von sicheren Verbindungen aus einem unsicheren Zustand (allerdings ohne Authentifizierung)
Prüfsummenbildung (Hash Verfahren)
Berechnung einer Zahl aus einer Nachricht
Zahl verändert sich, wenn sich die Nachricht ändert
die Nachricht kann nicht aus der Zahl rekonstruiert werden
Beispiele: MD5, SHA, SHA1
Message Authentication Code (MAC)
basiert auf Digest (Hash) und asymmetrischer Verschlüsselung
Berechnung und Verschlüsselung der Prüfsumme
gewährleistet Authentizität
benötigt unabhängige Verwalter: Certification Authority (CA),
sichert die Authentizität von Schlüsseln zu.
basiert auf asymmetrischer Verschlüsselung,
die CA codiert public keys von Teilnehmern mit ihrem private key
Server verschickt sein Zertifikat an Client
bzw. auch umgekehrt: Client verschickt sein Zertifikat an Server
Zertifikat bestätigt Echtheit des Servers (Echtheit = Zuordnung Server zu public key)
public key der CA muß dem Client bekannt sein
löst Anonymitätsproblem bei digitalem Geld
Unterschrift durch Umschlag mit Kohlepapier
zB. Zertifizierung von eCash unter Wahrung der Anonymität
Entwickelt von Paul Zimmermann für private Emails
bietet Datenschutz und Authentifizierung
bietet digitale Unterschriften
basiert auf RSA, IDEA und MD5
Verwaltung von öffentlichen Schlüsseln
kann als normale SMTP Email versendet werden
Konkurenzsoftware: Privacy Enhanced Mail (PEM), RFCs 1421 bis 1424
OpenPGP als RFC 2440
Gnu PGP (GPG) implementiert OpenPGP, komplettes Open Source Paket
Unterstützte kryptografische Verfahren bei GnuPG:
Erzeugen eines eigenen Schlüsselpaars mit öffentlichem und privatem Teil
Versenden des eigenen öffentlichen Schlüssels
Entgegennehmen von öffentlichen Schlüsseln anderer Leute
Verwalten der (öffentlichen und privaten) Schlüsseln am Schlüsselbund (key ring)
Ver- und Entschlüsseln von Dokumenten
Signieren und Verifizieren von Dokumenten
Editieren von Schlüsseln, d.h. Ändern von Optionen, z.B. Gültigkeitsdauer verlängern
Zurückrufen / Ungültigmachen von Schlüsseln
Überprüfen der Schlüssel anderer Leute
Verwalten der Vertrauensbeziehungen
Nutzung von Schlüssel-Servern
Zur Benutzung von (Gnu)PGP muss zunächst ein öffentlicher und ein privater Schlüssel erzeugt werden.
Die PGP Schlüssel müssen nicht wie bei SSL/TLS von einer (unabhängigen) Instanz zertifiziert werden.
Jede(r) macht sich eine eigene Bewertung von der Vertrauenswürdigkeit der öffentlichen Schlüssel, die verwendet werden.
öffentliche Schlüssel, die persönlich z.B. über eine Diskette ausgetauscht werden sind vertrauenswürdiger als Schlüssel, die von einer Web-Seite oder von Dritten bezogen werden.
dadurch wird ein "web of trust" gebildet
Schlüsselerzeugung mit gpg --gen-key
> gpg --gen-key gpg (GnuPG) 1.2.2-rc1-SuSE; Copyright (C) 2002 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: WARNUNG: Sensible Daten könnten auf Platte ausgelagert werden. gpg: siehe http://www.gnupg.org/de/faq.html für weitere Informationen gpg: /home/krabel/.gnupg: Verzeichnis erzeugt gpg: Neue Konfigurationsdatei `/home/krabel/.gnupg/gpg.conf' erstellt gpg: WARNUNG: Die Optionen in `/home/krabel/.gnupg/gpg.conf' sind in diesem Programml auf noch nicht aktiv gpg: Schlüsselbund `/home/krabel/.gnupg/secring.gpg' erstellt gpg: Schlüsselbund `/home/krabel/.gnupg/pubring.gpg' erstellt Bitte wählen Sie, welche Art von Schlüssel Sie möchten: (1) DSA und ElGamal (voreingestellt) (2) DSA (nur signieren/beglaubigen) (5) RSA (nur signieren/beglaubigen) Ihre Auswahl? 1 Das DSA-Schlüsselpaar wird 1024 Bit haben. Es wird ein neues ELG-E Schlüsselpaar erzeugt. kleinste Schlüssellänge ist 768 Bit standard Schlüssellänge ist 1024 Bit größte sinnvolle Schlüssellänge ist 2048 Bit Welche Schlüssellänge wünschen Sie? (1024) Die verlangte Schlüssellänge beträgt 1024 Bit Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll. 0 = Schlüssel verfällt nie <n> = Schlüssel verfällt nach n Tagen <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) 10 Key verfällt am Sam 24 Mai 2004 11:15:26 CEST Ist dies richtig? (j/n) j Sie benötigen eine User-ID, um Ihren Schlüssel eindeutig zu machen; das Programm baut diese User-ID aus Ihrem echten Namen, einem Kommentar und Ihrer E-Mail-Adresse in dieser Form auf: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Ihr Name ("Vorname Nachname"): Hanno Krabel E-Mail-Adresse: krabel@uni-mannheim.de Kommentar: Testen von PGP Sie haben diese User-ID gewählt: "Hanno Krabel (Testen von PGP) <krabel@uni-mannheim.de>" Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden? F Sie benötigen ein Mantra, um den geheimen Schlüssel zu schützen. eingabe des mantra Wir müssen eine ganze Menge Zufallswerte erzeugen. Sie können dies unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++ +++++++++++..++++++++++...+++++++++++++++++++++++++>++++++++++....................... ................+++++ Wir müssen eine ganze Menge Zufallswerte erzeugen. Sie können dies unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen. .++++++++++++++++++++.+++++.+++++.+++++++++++++++.++++++++++++++++++++...++++++++++++ +++.++++++++++++++++++++..++++++++++.++++++++++...++++++++++>.+++++.................. .................+++++^^^ gpg: /home/krabel/.gnupg/trustdb.gpg: trust-db erzeugt Öffentlichen und geheimen Schlüssel erzeugt und signiert. Schlüssel ist als uneingeschränkt vertrauenswürdig gekennzeichnet. pub 1024D/ABDFB5BB 2004-05-14 Hanno Krabel (Testen von PGP) <krabel@uni-mannheim.de> Schl.-Fingerabdruck = D611 446D 2208 E2EB CA7D 2A50 BAF0 ABDF 9016 B5BB sub 1024g/FECD33F5 2004-05-14 [verfällt: 2004-05-24]
Erzeugung eines Wiederrufs für den Schlüssel mit gpg --gen-revoke
gpg --output revoke-krabel.asc --gen-revoke krabel gpg: WARNUNG: Sensible Daten könnten auf Platte ausgelagert werden. gpg: siehe http://www.gnupg.org/de/faq.html für weitere Informationen sec 1024D/30066B17 2004-05-18 Hanno Krabel (Testen von GnuPG) <krabel@uni-mannheim.de> Create a revocation certificate for this key? yes Please select the reason for the revocation: 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 = Cancel (Probably you want to select 1 here) Ihre Auswahl? 1 Enter an optional description; end it with an empty line: > fuer alle faelle > Reason for revocation: Hinweis: Dieser Schlüssel ist nicht mehr sicher fuer alle faelle Is this okay? yes Sie benötigen ein Mantra, um den geheimen Schlüssel zu entsperren. Benutzer: "Hanno Krabel (Testen von GnuPG) <krabel@uni-mannheim.de>" 1024-Bit DSA Schlüssel, ID 30066B17, erzeugt 2004-05-18 eingabe des mantra gpg: GPG-Agent ist in dieser Sitzung nicht vorhanden ASCII armored output forced. Revocation certificate created. Please move it to a medium which you can hide away; if Mallory gets access to this certificate he can use it to make your key unusable. It is smart to print this certificate and store it away, just in case your media become unreadable. But have some caution: The print system of your machine might store the data and make it available to others!
Speichern des (eigenen) öffentlichen Schlüssels gpg --export
gpg --armour --export krabel gpg: WARNUNG: Sensible Daten könnten auf Platte ausgelagert werden. gpg: siehe http://www.gnupg.org/de/faq.html für weitere Informationen -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux) mQGiBD5CCYkRBAC0yeXR92PpxwqAeu5u/4jGN+Tv+Mcrl21bJmRhc1NR1bonbWKt ... CQANLwAACgkQuvCQFqvftbt+7gCgklW5dmBwdm3h2dSeLpo+Mhea4s4AoJ/TETgm kY2mUPI2L6CIwU7FU/CK =/dgh -----END PGP PUBLIC KEY BLOCK-----
Einfügen eines öffentlichen Schlüssels gpg --import
gpg --import krabel.pub gpg: WARNUNG: Sensible Daten könnten auf Platte ausgelagert werden. gpg: siehe http://www.gnupg.org/de/faq.html für weitere Informationen gpg: Schlüssel D9689977: "Hanno Krabel (Testen von GnuPG) <krabel@uni-mannheim.de>" Nicht geändert gpg: Anzahl insgesamt bearbeiteter Schlüssel: 1 gpg: unverändert: 1
Verschlüsseln gpg --encrypt
gpg --armour --output maildoc.sec --encrypt --recipient krabel maildoc.txt gpg: WARNUNG: Sensible Daten könnten auf Platte ausgelagert werden. gpg: siehe http://www.gnupg.org/de/faq.html für weitere Informationen Datei 'maildoc.sec' existiert bereits. Überschreiben (j/N)? j
Verschlüsselte Datei:
-----BEGIN PGP MESSAGE----- Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux) hQEOA5gA7p1IVxqJEAQA3fPS7jWYAWqF4o5fItzqDldXw/+v1WNC/ulZj414CpKP ... 4viqnRXziOhoP6eSCOgZX+AOCW02qMqOQ9efZep7xU+0EnG3q57OUFD+oiFZvGsG gJPkk6wC =vNiC -----END PGP MESSAGE-----
Entschlüsseln mit gpg --decrypt
gpg --output maildoc.decrypt --decrypt maildoc.sec gpg: WARNUNG: Sensible Daten könnten auf Platte ausgelagert werden. gpg: siehe http://www.gnupg.org/de/faq.html für weitere Informationen Sie benötigen ein Mantra, um den geheimen Schlüssel zu entsperren. Benutzer: "Hanno Krabel (Testen von GnuPG) <krabel@uni-mannheim.de>" 1024-Bit ELG-E Schlüssel, ID B2B73599, erzeugt 2004-05-18 (Hauptschlüssel-ID 30021B17) eingabe des mantra gpg: GPG-Agent ist in dieser Sitzung nicht vorhanden gpg: verschlüsselt mit 1024-Bit ELG-E Schlüssel, ID B2B73599, erzeugt 2004-05-18 "Hanno Krabel (Testen von GnuPG) <krabel@uni-mannheim.de>"
Signieren mit gpg --sign
oder gpg --clearsign
oder gpg --detach-sign
gpg --armour --output maildoc.sign --sign maildoc.txt gpg: WARNUNG: Sensible Daten könnten auf Platte ausgelagert werden. gpg: siehe http://www.gnupg.org/de/faq.html für weitere Informationen Sie benötigen ein Mantra, um den geheimen Schlüssel zu entsperren. Benutzer: "Helmut Knebel (Testen von GnuPG) <knebel@.uni-mannheim.de>" 1024-Bit DSA Schlüssel, ID 30366B17, erzeugt 2004-05-18 gpg: GPG-Agent ist in dieser Sitzung nicht vorhanden
Inhalt der Datei mit Signatur:
-----BEGIN PGP MESSAGE----- Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux) owGbwMvMwCS4yEfxvAFbtjjjmvlJ3LmJmTkp+cl6JRUldifdPrpm5ikEJ5ZUKVSV ... zOFl/Hd+er34byHl4Jd8mpyzyp5/f8MwP1hF8WDu86Uimvwn+8Mi10/rWXM4EAA= =9+OW -----END PGP MESSAGE-----
Verifizieren erfolgt mit gpg --verify
gpg --verify maildoc.sign gpg: WARNUNG: Sensible Daten könnten auf Platte ausgelagert werden. gpg: siehe http://www.gnupg.org/de/faq.html für weitere Informationen gpg: Unterschrift vom Mon 19 Mai 2004 23:04:49 CEST, DSA Schlüssel ID 30366B17 gpg: Korrekte Unterschrift von "Helmut Knebel (Testen von GnuPG) <knebel@rz.uni-mannheim.de>"
Anzeigen erfolgt mit gpg --list-keys
oder
gpg --list-public-keys
oder
gpg --list-secret-keys
gpg --list-keys gpg: WARNUNG: Sensible Daten könnten auf Platte ausgelagert werden. gpg: siehe http://www.gnupg.org/faq.html für weitere Informationen /home/heinz/.gnupg/pubring.gpg ------------------------------ pub 1024D/578126CA 2004-06-14 Karl Dall (Komiker) <dall@karl.de> sub 1024g/8FBEEFC6 2004-06-14 [verfällt: 2004-07-14]
gpg --fingerprint gpg: WARNUNG: Sensible Daten könnten auf Platte ausgelagert werden. gpg: siehe http://www.gnupg.org/faq.html für weitere Informationen /home/heinz/.gnupg/pubring.gpg ------------------------------ pub 1024D/578126CA 2004-06-14 Karl Dall (Komiker) <dall@karl.de> Schl.-Fingerabdruck = 549C F204 1680 E453 2081 8823 4024 42B1 5781 26CA sub 1024g/8FBEEFC6 2004-06-14 [verfällt: 2004-07-14]
Die Pflege der Schlüssel erfolgt (auch interaktiv)
mit gpg --edit-key
gpg --edit-key 578126CA gpg (GnuPG) 1.2.2; Copyright (C) 2003 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: WARNUNG: Sensible Daten könnten auf Platte ausgelagert werden. gpg: siehe http://www.gnupg.org/faq.html für weitere Informationen Geheimer Schlüssel ist vorhanden. pub 1024D/578126CA erstellt: 2004-06-14 verfällt: 2004-07-14 Vertrauen: u/u sub 1024g/8FBEEFC6 erstellt: 2004-06-14 verfällt: 2004-07-14 (1). Karl Dall (Komiker) <dall@karl.de> Befehl> help quit Menü verlassen save speichern und Menü verlassen fpr "Fingerabdruck" anzeigen list Schlüssel und User-IDs auflisten check Liste der Signaturen sign Den Schlüssel signieren delsig Signatur entfernen expire Ändern des Verfallsdatums toggle Umschalten zwischen Anzeige geheimer und öffentlicher Schlüssel passwd Die Passphrase ändern trust Den "Owner trust" ändern revsig Signaturen widerrufen disable Schlüssel abschalten
Die gesammelten öffentlichen Schlüssel können nach Vertrauensleveln klassifiziert werden:
Über diese Klassifizierung können dann auch Schlüssel für gültig eingestuft werden, die man nicht selbst überprüft hat.
Danach ist ein Schlüssel gültig, wenn folgende Bedingungen erfüllt sind:
der Schlüssel ist von genügend gültigen Schlüsseln signiert, d.h.
von mir persönlich, oder
durch einen, dem ich voll vertraue, oder
die mindestens drei, denen ich marginal vertraue
die Anzahl der Signierschritte zwischen dem Schlüssel und dem eigenen Schlüssel beträgt weniger als fünf
Teil 1 erstellt unter Verwendung eines Seminarvortrags von Robert Schulz.
© Universität Mannheim, Rechenzentrum, 1998-2005.
Heinz KredelLast modified: Sat Apr 9 11:54:46 CEST 2005