A,B
Transcription
A,B
11 Kryptographische Protokolle Protokoll = Vereinbarung zwischen Kommunikationspartnern über Art, Inhalt und Formatierung der ausgetauschten Nachrichten sowie über das Wechselspiel bei der Abwicklung eines Dialogs Beispiel 1: Kommunikationsprotokolle in einem Rechnernetz Beispiel 2: Telefonieren: Angerufener: Anrufer: Angerufener: ..... Anrufer: Angerufener: „Löhr“ „Hier ist Thomas“ „Hallo Thomas; wie geht‘s?“ „Danke. Mach‘s gut.“ „Tschüss, Thomas.“ Kryptographische Protokolle: Nachrichten werden chiffriert/dechiffriert, signiert/verifiziert, ..... 3 Protokoll-Klassen: im täglichen Leben: einfach (self-enforcing) z.B. Telefonieren, Sprechfunk, Arbeitsvertrag per Post notariell (arbitrated) z.B. Hauskauf richterlich (adjudicated) z.B. Software-Kauf mit anschließender Klage (Richter wird nur im Streitfall benötigt) 11.1 Elementare Protokolle gewährleisten bei Kommunikation zwischen 2 Partnern eine oder mehrere der folgenden Sicherheitseigenschaften: Geheimhaltung Integrität Authentizität Originalität Verbindlichkeit Achtung: Sabotage der Übertragung ist nicht verhinderbar und u.U. nicht einmal entdeckbar 11.1.1 Zeitstempel und Nonces werden zur Sicherung der Originalität eingesetzt, d.h. kein Wiedereinspielen (replay) zuvor abgehörter Nachrichten oder Nachrichtenteile Zeitstempel T (time stamp): A ( A,M,T, SA(A,M,T) ) B SA(.) := DA[H[.]] empfängt (a,m,t,s) und verifiziert mit 1. H[(a,m,t)] = EA(s) ? 2. t = aktuelle Zeit ? Problematisch: Asynchronie der Uhren, Laufzeit der Nachricht ¼ Empfänger speichert die Nachrichten und vergleicht mit gespeichertem Zeitstempel (virtuelle Zeit, z.B. Folgenumerierung, genügt) Alternative: Verwendung eines Nonce (dt. „aktueller Augenblick“), (auch „challenge“) A A B N wählt ad-hoc-Zufallszahl N (nonce) und schickt sie an A ( M, SA(M,N) ) empfängt (m,s) und verifiziert mit H[(m,N)] = EA(s) ? Bei wechselseitigem Mißtrauen (mutual suspicion): (hier mit Beschränkung auf Sicherung der Identität der Partner, z.B. wenn anschließend über technisch sichere Verbindung übertragen wird) A wählt Nonce N1 (A,N1) B wählt Nonce N2 (DB[N1], N2) empfängt (x,n) und verifiziert EB[x] = N1 ? DA[n] empfängt y und verifiziert EB[y] = N2 ? Achtung: mit symmetrischer Verschlüsselung ist das Verfahren u.U. nicht sicher ! (Wir schreiben EAB, DAB für die Chiffrierung bzw. Dechiffrierung mit dem gemeinsamen Schlüssel KAB.) Angreifer C maskiert sich als A: C wählt Nonce N1 (A,N1) B wählt Nonce N2 (EAB[N1], N2) empfängt (x,N2) und eröffnet zweite Verbindung (A,N2) (A,N2) C B empfängt (A,N2) wählt Nonce N3 (EAB[N2], N3) empfängt (EAB[N2], N3) und sendet über erste Verbindung EAB[N2] empfängt y und verifiziert DAB[y] = N2 ? 11.1.2 Sicherung von Verbindlichkeit = Beweisbarkeit bzw. Widerlegbarkeit von Senden/Empfangen Kausalität: eine Nachricht, die empfangen wird, wurde auch gesendet, aber: nicht notwendig vom angegebenen Absender und: die Umkehrung gilt nicht – eine gesendete Nachricht wird nicht notwendig empfangen 11.1.2.1 ... mit notariellem Protokoll und symmetrischer Chiffrierung A N (A, EAN[B,M]) B erhält (a,z), verifiziert DaN[z] = wohlgeformtes (b,m) ? speichert (A,B,M) (N, ENB[A,M]) erhält (n,x) verifiziert DnB[x] = wohlgeformtes (a,m) ? Falls kein Replay seitens Dritter: Empfänger B + kann Empfangen – und damit Senden – beweisen + kann Empfangen nicht vorgeben – kann Empfangen abstreiten Sender A + kann Senden/Empfangen nicht abstreiten – kann Senden/Empfangen nicht beweisen 11.1.2.2 ... mit richterlichem Protokoll und asymmetrischer Chiffrierung A (A, DA[A,T,M]) B empfängt (a,x) verifiziert Ea[x] = wohlgeformtes (a,t,m) ? mit t ok speichert x Richter kann x überprüfen Empfänger B + kann Empfangen nicht vorgeben + kann Empfangen – und damit Senden – beweisen – kann Empfangen abstreiten Sender A + kann Senden/Empfangen nicht abstreiten – kann Senden/Empfangen nicht beweisen 11.2 Schlüsselverwaltung Probleme: Erzeugung Speicherung Austausch/Übermittlung von geheimen Sitzungsschlüsseln (symmetrisch) für effiziente Chiffrierung, öffentlichen Schlüsseln (asymmetrisch) für Authentisierung Zur Erinnerung: Schlüssel können nicht sicher verschlüsselt werden! 11.2.1 Schlüssel-Vereinbarung nach Diffie-Hellman (Diffie/Hellman 1976) Ziel: Vereinbarung eines neu erzeugten, geheimen Sitzungsschlüssels K zwischen zwei Partnern – geht das überhaupt? JA ! Ausgangspunkt: Beide Partner vereinbaren öffentlich – eine große Primzahl p , – eine Zahl c mit 0 ≤ c < p Empfohlen: 1. c = Generator von p , d.h. für jedes i aus [1,p-1] gibt es ein k aus [0,p-1] mit i = ck mod p 2. p ≈ 10200 A wählt a zufällig aus [0,p-1] B (A, ca mod p) wählt b zufällig aus [0,p-1] berechnet K := (ca mod p)b mod p cb mod p K := (cb mod p)a mod p K = cab mod p K = cab mod p Sicherheit: f(x) = cx mod p wirkt als Einbahn-Funktion, denn Berechnung des diskreten Logarithmus erfordert exponentiellen Aufwand (vgl. DSA, 10.6.3.5) Achtung: Das Diffie-Hellman-Verfahren allein garantiert keine Authentizität, weder von A noch von B 11.2.2 Zentraler Schlüsseldienst für Sitzungsschlüssel (Needham/Schroeder 1978, verschiedene Varianten) Voraussetzung: Jeder Teilnehmer hat Schlüssel für Kommunikation mit dem Schlüsseldienst S A B (A,B) wählt KAB ESA[B,KAB,T,ESB[A,KAB]] ESB[A,KAB] Schwäche: Kein Schutz vor Wiedereinspielen der 3. Nachricht durch einen Angreifer, der zuvor den Schlüssel KAB geknackt hat 11.2.2 Zentraler Schlüsseldienst für Sitzungsschlüssel (Needham/Schroeder 1978, verschiedene Varianten) Voraussetzung: Jeder Teilnehmer hat Schlüssel für Kommunikation mit dem Schlüsseldienst S A B (A,B) wählt KAB ESA[B,KAB,T,ESB[A,KAB, T ]] ESB[A,KAB, T ] Schwäche: Kein Schutz vor Wiedereinspielen der 3. Nachricht durch einen Angreifer, der zuvor den Schlüssel KAB geknackt hat ¼ Zeitmarke T hinzufügen 11.2.3 Zertifikate für öffentliche Schlüssel Asymmetrische Chiffrierung: Aber: jeder erzeugt sein eigenes Schlüsselpaar und publiziert den öffentlichen Schlüssel wie erfährt B auf sichere Weise den öffentlichen Schlüssel von A? ! Verhindern, daß X seinen eigenen öffentlichen Schlüssel als „Schlüssel von A“ präsentieren kann ! ¼ Öffentlicher Schlüssel muß authentisch sein Henne-und-Ei-Problem ? Direkter Kontakt mit B: a) persönliches Gespräch, Schlüssel aufschreiben (z.B. 1024 Bits!); b) besser Visitenkarte oder Diskette entgegennehmen; c) noch besser: wie a) oder b), aber nur Fingerabdruck (fingerprint) des Schlüssels übergeben und Schlüssel z.B. im Netz nachschlagen: Fingerabdruck f = H[EA] (Hashcode gemäß 10.6.3) Im Netz steht „A hat Schlüssel x “ Dies verifizieren mit H[x] = f ? Vertrauenswürdige Instanz heranziehen: Schlüsselbuch (wie Telefonbuch) auf Papier oder CD – vertrauenswürdig? veraltet schnell! Instanz S wie Schlüsseldienst aus 11.2.2, deren öffentlicher Schlüssel bereits authentisch bekannt ist, teilt auf Anfrage den Schlüssel authentisch mit: DS[A, EA, . . . . .] Diese signierte Schlüsselinformation heißt Zertifikat (certificate) und enthält weitere Informationen wie etwa Name des Ausstellers S, Gültigkeitsdauer etc. Praxis der Zertifikatsverwaltung: Zertifizierungsstelle (certification authority, CA, trust center) ist zuständig für 1 Ausstellung von Zertifikaten, z.B. gemäß CCITT X.509 2 Publizieren der Zertifikate in öffentlichem Verzeichnis, z.B. X.500 3 Speicherung der Zertifikate z.B. auf Chipkarte, zusammen mit eigenem öffentlichen Schlüssel und evtl. dem privaten Schlüssel des Teilnehmers Öffentliche-Schlüssel-Infrastruktur (public-key infrastructure, PKI) ist hierarchisch strukturiertes Netz von Zertifizierungsstellen, z.B. zweistufige Hierarchie gemäß deutschem Signaturgesetz (Regulierungsbehörde für Post und Telek. + Zertifizierungsstellen) 11.2.4 Schlüsselverwaltung bei PGP (Zimmermann 1991) PGP („pretty good privacy“) = Software für Verschlüsselung, Schlüsselerzeugung, Schlüsselverwaltung (Bekanntmachung, Speicherung, ...) Ursprünglich freie Software (GNU Public License), übernommen in Standard OpenPGP mit verschiedenen Implementierungen, z.B. GnuPP (GNU Privacy Project) (BM f. Wirtschaft und Technologie) 11.2.4.1 Verschlüsselung IDEA für Chiffrieren der Nachricht mit ad-hoc erzeugtem, symmetrischen Sitzungsschlüssel KAB, RSA für Authentizität und sichere Übertragung des Sitzungsschlüssels KAB SHA-1 für Hashing Geheimhaltung und Integrität: Verschlüsselten Sitzungsschlüssel und verschlüsselte Nachricht übertragen A erzeugt KAB (EAB[M], EB[KAB]) B dechiffriert KAB mit DB, dechiffriert M mit DAB Authentizität: Nachricht und digitale Unterschrift übertragen A B (M, DA[H[M]]) verifiziert M mit EA Geheimhaltung, Integrität und Authentizität: signierte Nachricht wird verschlüsselt A B (EAB[M, DA[H[M]]], EB[KAB]) Warum nicht (EAB[M], EB[DA[KAB]]) ? Weil dies die Möglichkeit ausschließt, die signierte Nachricht (M, DA[H[M]]) weiterzugeben. 11.2.4.2 Schlüsselverwaltung mit Zertifikat + Fingerabdruck Keine offizielle PKI. Kann ich dem Aussteller des Zertifikats vertrauen? Privates („grass roots“) Vertrauensnetz wird aufgebaut (web of trust): A stellt Zertifikat für B aus und übergibt es an guten Freund C. C vertraut A und damit dem Zertifikat. C gibt das Zertifikat an guten Freund D weiter. Soll D dem Zertifikat vertrauen, obwohl es nicht von C ausgestellt wurde? 11.2.4.3 Speicherung des privaten Schlüssels Privater Schlüssel wird verschlüsselt gespeichert: A erzeugt Schlüsselpaar (EA,DA), wählt Paßwort P („Mantra“); dieses bestimmt IDEA-Schlüssel K = H[P] (= hashcode von P); gespeichert wird K[DA] . DA kann immer nur „im Fluge“ benutzt werden – entschlüsselt mit K nach Eingabe von P – und liegt somit nur sehr kurzfristig unverschlüsselt vor. 11.2.4.4 Schlüsselerzeugung unter Verwendung von Pseudozufallszahlen und Zeitspannen zwischen Tastatureingaben des Benutzers RSA-Schlüssellänge kann vom Benutzer gewählt werden. Adressen zu PGP: http://www.pgpi.org/ http://web.mit.edu/network/pgp.html http://www.gnupg.org http://www.gnupp.de 11.3 Authentisierungsdienste übernehmen die Authentisierung von Netzteilnehmern und erlauben ihnen damit die Benutzung von Ressourcen/Diensten im Netz 11.3.1 Kerberos (MIT 1983-88) Authentisierungsdienst für lokales Netz benutzt Needham/Schroeder-Protokoll (symmetrische Chiffrierung) Autorisierung liegt in der Verantwortung des jeweiligen Dienstes! Idee: Authentisierungsdienst verwaltet Paßwörter und vergibt nach Authentisierung nicht fälschbares Ticket für die Benutzung des gewünschten Dienstes Verschiedene Versionen (bis Version 5) in verschiedenen Produkten eingesetzt (z.B. Sun Solaris, NFS (9.3.1!)) Ungefähr so: A uthentisierungsdienst D ienst B enutzer auf Station C (Netzadresse) (B,C,D,pw) ticket = EAD[B,C,D] (B,C,ticket) Sicherheit? Komfort? Paßwort pw ist abhörbar! ¼ Paßwort-Prüfung im Klienten! Für jeden neu benötigten Dienst erneut Paßwort-Eingabe! ¼ Separate Ticket-Vergabe! Benutzer präsentiert einem Dienst Credentials („Beglaubigungsschreiben“), die aus Ticket und Authenticator bestehen: tBD = = aBD = = KBD = Ticket von Benutzer B auf Station C für Dienst D, beweist D die erfolgte Authentisierung von B durch A EAD[B,C,D,T,KBD,lifetime] KBD = Sitzungsschlüssel Authenticator von Benutzer B auf Station C für Dienst D, beweist D, daß der Sender den Schlüssel KBD kennt EBD[B,C,T] chiffriertes Paßwort (Einbahn-Funktion X) A Ticket Granting Server G D B (B,G) erzeugt Sitzungsschlüssel KBG und ticket granting ticket tBG (tBG, EAB[KBG]) (B,D, tBG, aBG) KAB := X[pw] KBG := DAB[EAB[KBG]] aBG := EBG [B,C,T] dechiffriert Ticket, erhält damit KBG , dechiffriert Authenticator – alles konsistent? erzeugt Sitzungsschlüssel KBD A G D B (tBD, EBG [KBD]) KBD := DBG[EBG[KBD]] aBD:= EBD [B,C,T] (B,tBD, aBD) (siehe oben bei G) EBD [.....] (Kommunikation zwischen Dienst und Benutzer) 11.3.2 Sesame Secure European System for Applications in a Multi-Vendor Environment Kerberos Sesame Lokalnetz Öffentliches Netz symmetrische Schlüssel asymmetrische Schlüssel Autorisierung durch die Server Autorisierungsdienst: Privilege Attribute Service vergibt Privilege Attribute Certificates (PAC) mit Assoziation zu Gruppen/Rollen 12 Themenvorschau Netzsicherheit Geheimhaltung durch Einbettung: Steganographie, Watermarking, Chaffing and Winnowing Firewalls SSL (Secure Socket Layer), SSH (Secure Shell) VPN, IPsec Web-(Un)Sicherheit Sicherheit im E-commerce: SET, E-cash, Smartcards, ... Pseudonymität, Anonymität, Unbeobachtbarkeit usw. usf.