Einführung in die symmetrische und asymmetrische Verschlüsselung Enigmail Andreas Grupp grupp@elektronikschule.de Download der Präsentation unter http://grupp-web.de by A. Grupp, 2007-2010. Dieses Werk ist unter der Creative Commons Lizenz "Namensnennung - Keine kommerzielle Nutzung - Weitergabe unter gleichen Bedingungen" in der Version 3.0 Deutschland lizenziert (BY-NC-SA). 1
Symmetrische Verschlüsselung (Single-Key-Encryption) Sender Kanal Empfänger z.b. Advanced Encryption Standard (AES, bzw. Rijndael-Algorithmus) Verschlüsseltes Dokument über unsicheren Kanal Schlüssel über sicheren Kanal!!! 2
Als Analogie für asymmetrische Schlüsselerzeugung: Ausflug in die Biologie Neue genetische Eigenschaften bei "Kindern" Genetische Verwandtschaft zwischen "Eltern" und "Kindern" vorhanden und nachweisbar "Eltern" u. "Geschwister" können aber mittels der "KindGene" nicht rekonstruiert werden! Bei gleichen "Eltern" unterschiedliche "Kinder" 3
Schlüsselerzeugung für die asymmetrische Verschlüsselung Zwei zufällig generierte und sehr große Primzahlen dienen als "Eltern" für eine mathem. Operation. 570839 Mathem. Algorith. 599959 Ergebnis: Zwei digitale Schlüssel (Verschlüsselungs- und Entschlüsselungsexponent sowie ein gemeinsames Modul). Diese sind mit den "Kindern" aus der biologischen Analogie vergleichbar sind und dienen als Schlüssel für die asymmetrische Verschlüsselung. 4
Asymmetrische Verschlüsselung (Public-Key-Cryptogr.) Es werden immer Schlüsselpaare generiert und verwendet. Die Kenntnis eines Schlüssels reicht nachträglich zur Berechnung des anderen Schlüssels nicht aus! Ein Schlüssel wird als "Secret-", der andere als "Public-Key" getauft. Anschließend wird der "Secret-Key" nie aus der Hand gegeben! Der Public-Key wird veröffentlicht und damit jedermann zugänglich gemacht! Es wird jede Möglichkeit zur Veröffentlichung genutzt! Secret-Key Public-Key 5
Möglichkeiten der asymmetrischen Verschlüsselung Variante 1: Public-Key Secret-Key Variante 2: Secret-Key Public-Key 6
1. praktische Anwendung: Privacy Sender Kanal Allg. Veröffentlichung! Sender hat Empfänger-Key an seinem Public-Key-Ring Empfänger (hat ein eigenes Schlüsselpaar) Public-Key Secret-Key Verschlüsseltes Dokument Wer kann dieses Dokument überhaupt noch entschlüsseln? 7
2. praktische Anwendung: Authentifizierung Sender (hat ein eigenes Schlüsselpaar) Public-Key Kanal Empfänger Allg. Veröffentlichung! Empfänger hat Sender-Key an seinem Public-Key-Ring SecretKey Verschlüsseltes Dokument Welchen Sinn hat das? Dieses Dokument kann jeder entschlüsseln? 8
3. prakt. Anwend.: Authen. mit Message-Fingerprint Sender Kanal Empfänger Allg. Veröffentlichung! Empfänger hat Sender-Key an seinem Public-Key-Ring Crypto-HashFunktion (z.b. SHA1) Verschlüsselter "Fingerabdruck" des Dokuments zusammen mit Klartext-Dokument SHA1: Secure Hash Algorithmus Identisch 9
Reale Anwendung Gängig ist digitale Unterschrift über verschlüsselten Fingerprint, Verschlüsselung des Dokuments und die Kombination der beiden Verfahren Bei Verschlüsselung des Dokuments wird symmetrische Verschlüsselung angewandt (da dies auch bei große Datenmengen schnell ist), dafür ein zufälliger Schlüssel verwendet und dieser asymmetrisch verschlüsselt angehängt. 10
Man-in-the-middle-Angriff So war das eigentlich vorgesehen! Public-Key Secret-Key 11
Man-in-the-middle-Angriff Public-Key Und so läuft es im Angriffsfall! 12
Vertrauensbildende Maßnahmen: "Ring of trust" 1.) Key-Inhaber konsultiert Freund 2.) Freund prüft Klartextdaten und signiert Key mit seinem eigenen Secret-Key. Ein Zertifikat entsteht! 3.) Zertifikat wird dem Keyinhaber übergeben 13
Vertrauensbildende Maßnahmen: "Ring of trust" 1.) Key-Inhaber sammelt Zertifikate 2.) Kommunikationspartner besorgt sich Public-Key ist aber unsicher ob hier nicht ein Man-in-themiddle am Werk ist!!! "Ring of Trust" 3.) Besorgt sich Public-Keys der Gegenzeichner und prüft Zertifikate 14
GnuPG & Co.: Enigmail Thunderbird-Add-On 15
GnuPG & Co.: KGpg KDE-GUI zu GnuPG 16
Certification Authority, die bessere Variante Beim "Ring of Trust" verbleibt Unsicherheit ob die Gegenzeichner denn echt sind!??? Lösung: Digitales Notariat eine "Certification Authority" wird als Zertifikatsersteller benutzt. Vorlage des Public-Keys bei der CA CA-Keys Aushändigung des Zertifikats an Key-Inhaber Prüfung und Zertifikatsaustellung durch CA Sinnvolle Voraussetzung: CA-Public-Key muss in Applikationen schon vorinstalliert sein!!! 17
Beispiel: CA-Zertifikate im Firefox-Browser 18
Certification Authorities Zertifizierungsstellen In fast allen Ländern über Signaturgesetze geregelt CA's zertifizieren sich u.a. auch gegenseitig sogenannte Cross-Zertifizierung Zum Betrieb auch hierarchische Aufteilung in eigentliche CA (Primary/Root) und Registration Authorities (RA) Organisationen können eigene Zertifizierungshierarchien einrichten - Public-Key-Infrastruktur: Zertifizierungsstellen werden geschaffen und Hierarchien werden festgelegt Policies regeln dann auf welche Zertifikate in welchem Maß vertraut werden kann Revocation-Listen erklären Zertifikate für ungültig 19
Zertifikats-Standardisierung mit X.509 Teil der ITU-T X.500 Serie "The Directory" X.509 Public-key and attribute certificate frameworks Öffnet standardisierten Anwendungen die Tür Secure Socket Layer (SSL) Transport Layer Security (TLS) S/MIME (quasi Nachfolgerf v. PGP, GnuPG bei Mail) Regelt z.b. welche Klartextdaten in einem Zertifikat zusammen mit dem Public-Key enthalten sein müssen! Weitere Regelungen zu PKI's und Key-Revocation Für den Internet-Bereich mit RFC5280 spezifiziert http://tools.ietf.org/html/rfc5280 20
Genereller Ablauf für Umgang mit X.509v3-Zertifikate Wichtiges Tool ist meist die Shell-basierende opensslprogramm-suite http://www.openssl.org/ Root- bzw. CA-Zertifikat an Spitze der PKI Für einzelnes Zertifikat: Schlüsselpaar erzeugen Certification-Request erzeugen Zertifizierung mit CA-Keys durchführen GUI-Frontends z.b. TinyCA2 (http://tinyca.sm-zone.net/) Perl und GTK2 basierend unter BSD/Linux/Unix problemlos XCA (http://xca.sourceforge.net/), plattformunabh. aber nur als Windows-Binary direkt verfügbar 21
Beispiel-Textausgabe zu einem TLS-/SSL-Zertifikat (gekürzte Ausgabe): openssl x509 in lehrerfortbildung bw_de.crt text noout Version: 3 (0x2) Serial Number: ed:e2:54:61:5d:8d:aa:88:dd:57:21:2d:d5:85:ec:30 Signature Algorithm: sha1withrsaencryption Issuer: C=GB, ST=Greater Manchester, L=Salford, O=Comodo CA Limited, CN=PositiveSSL CA Validity Not Before: Feb 11 00:00:00 2008 GMT Not After : May 11 23:59:59 2011 GMT Subject: OU=Domain Control Validated, OU=PositiveSSL, CN=lehrerfortbildung bw.de Subject Public Key Info: Public Key Algorithm: rsaencryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:c4:27:f2:dd:6c:e2:cc:9c:2d:f3:5a:8e:33:e1:... 42:74:5e:61:21:f3:ca:2a:49 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Authority Key Identifier: keyid:b8:ca:11:e9:06:31:79:db:c3:94:c6:e8:19:2a:bc... X509v3 Subject Key Identifier: F3:1E:FD:FB:3F:9E:88:FF:A0:43:BC:24:7B:0C:52:38:DB:CC:25:64 X509v3 Key Usage: critical Digital Signature, Key Encipherment X509v3 Basic Constraints: critical CA:FALSE X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication Netscape Cert Type: SSL Client, SSL Server X509v3 Certificate Policies: Policy: 1.3.6.1.4.1.6449.1.2.2.7 CPS: http://www.positivessl.com/cps X509v3 CRL Distribution Points: URI:http://crl.comodoca.com/PositiveSSLCA.crl URI:http://crl.comodo.net/PositiveSSLCA.crl Authority Information Access: CA Issuers URI:http://crt.comodoca.com/PositiveSSLCA.crt CA Issuers URI:http://crt.comodo.net/PositiveSSLCA.crt Zertifikatsaussteller Gültigkeitsdaten Zertifizierter "Gegenstand": - Distinguished Name des Inhabers (z.b. für HTTPS wichtig Canonical Name CN - Servername!) - und der gekoppelte Public-Key Zertifikatserweiterungen nach X.509 Version 3: Regeln z.b. den erlaubten Verwendungszweck der Zertifikats 22
SSL- bzw. TLS-Verbindungsaufbau Quelle: Wikipedia (graf. modifiziert) 23
Beschäftigung mit folgenden Themen vorgeschlagen: Apache-Webserver installieren und auch als SSL-Server in Betrieb nehmen. Dazu: www.<vor nachnamen>.de via hosts-datei auf die localhost-ip 127.0.0.1 abbilden Selbst signiertes CA-Zertifikat erzeugen SSL-Server-Key, Signing-Request und ZertifikatsAusstellung für Ihren Host durchführen Server- und CA-Zertifikat in Apache integrieren Mit Browser kontaktieren und Betrieb testen CA-Zertifikat zum Download via http bereitstellen und in Browser integrieren Wieder mit Browser kontaktieren und Betrieb testen 24
Beschäftigung mit folgenden Themen vorgeschlagen: Nur in abgrenztem Testnetz nicht im allgemeinen Schulungsnetz (beachten Sie die strafrechtlichen Konsequenzen): Mit einschlägigen Tools der Hackingbzw. Penetration-Testing-Szene einen Man-in-themiddle-Angriff auf die Kommunikation zw. Browser und SSL-Server durchführen. Digitale Signaturen bei E-Mail sowie verschlüsselte EMails und Dateien mit Thunderbird, GnuPG, enigmail testen. S/MIME basierende Signatur und Verschlüsselung bei EMail-Kommunikation mit Thunderbird testen. 25