Systemsicherheit 11 SSL/TLS Das TCP/IP-Schichtenmodell Anwendungsschicht (FTP, HTTP, SMTP,...) Transportschicht (TCP, UDP) s-http https Internetschicht (IP) Netzwerkschicht (z.b. Ethernet, TokenRing,...) Ziel: Sicherung des WWW
HTTP 1. Nutzer tippt http://www.joerg-schwenk.de/start.htm 2. Browser sucht auf einem Domain Name Server (DNS) die IP- Adresse zu www.joerg-schwenk.de: 212.227.127.75. 3. Browser baut eine TCP-Verbindung zu 212.227.127.75 und Port 80 auf. 4. Browser sendet ein HTTP-Kommando über TCP an 212.227.127.75/Port 80: Get start.htm HTTP/1.0 User-agent: Netscape 4.7 Accept: text/plain Accept: text/html Accept: image/gif HTTP (2) 5. Server antwortet über die TCP-Verbindung mit: Einer Statuszeile (Erfolgsmeldung oder Fehler), Metainfomation (Beschreibung der nachfolgenden Information), Einer Leerzeile und Der Information selbst: HTTP/1.0 Status 200 Document follows Server: Apache/1.8 Date: Mon, 14 Mai, 2001 11:23:22 GMT Content-type: text/html Content-length: 5280 Last-modified: Fri, 11 Mai, 2001 03:12:12 GMT <html>... </html>
HTTP (3) Schritt 1-5 wird für jede HTTP(1.0)-Anfrage wiederholt. Insbesondere muß für jede HTTP(1.0)-Anfrage eine neue TCP-Verbindung aufgebaut werden. Moderne Browser schummeln hier und bauen mehrere TCP-Verbindungen gleichzeitig auf, um die verschiedenen Bestandteile einer Webseite schneller zu laden. HTTP Basic Authentication Username/Passwort-Verfahren (RFC 1945) Dialog mit dem Nutzer durch Popup-Fenster
HTTP Digest Access Authentication Challenge/Response-Verfahren (RFC 2617) mit MD5 Dialog mit dem Nutzer durch Popup-Fenster Nachricht 2: HTTP/1.1 401 Unauthorized WWW-Authenticate: Digest realm="testrealm@host.com", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41" Nachricht 3: Authorization: Digest username="mufasa", realm="testrealm@host.com", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", uri="/dir/index.html", response="e966c932a9242554e42c8ee200cec7f6", opaque="5ccc069c403ebaf9f0171e9517f40e41" Zwei Möglichkeiten für sicheres WWW 1. Absicherung der http-nachrichten von Client und Server: S-HTTP 2. Absicherung der zugrunde liegenden TCP-Verbindung: SSL (https)
S-HTTP: Idee S-HTTP Header HTTP Header S-HTTP Daten HTTP Header HTTP Daten HTTP Daten S-HTTP: Anfrage und Antwort Aus Get start.htm HTTP/1.0 wird Secure * Secure-HTTP/1.4 (der URI wird unterdrückt, um eine Verkehrsanalyse zu vermeiden.) Server-Antwort: Secure-HTTP/1.4 200 OK
S-HTTP: Beispiel (RFC 2660) C S: Get start.htm HTTP/1.0 S C: 200 OK HTTP/1.0 Server-Name: Navaho-0.1.3.3alpha Certificate-Info: CMS,MIAGCSqGSIb3DQEHAqCAMIACAQExADCABgkqh... PhZcW1e+nojLvHXWAU/CBkwfcR+FSf4hQ5eFu1AjYv6Wqf430Xe9Et5+jgnM Tiq4LnwgTdA8xQX4elJz9QzQobkE3XVOjVAtCFcmiin80RB8AAAMYAAAAAAA AAAAA== Encryption-Identity: DN-1779, null, CN=Setec Astronomy, OU=Persona Certificate,O="RSA Data Security, Inc.", C=US; SHTTP-Privacy-Enhancements: recv-required=encrypt <A name=tag1 HREF="shttp://www.setec.com/secret"> Don't read this. </A> S-HTTP: Beispiel C S: Secure * Secure-HTTP/1.4 Content-Type: message/http Content-Privacy-Domain: CMS MIAGCSqGSIb3DQEHA6CAMIACAQAxgDCBqQIBADBTME0xCzAJBgNVBAYTAlVTMSAw HgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEcMBoGA1UECxMTUGVyc29u YSBDZXJ0aWZpY2F0ZQICALYwDQYJKoZIhvcNAQEBBQAEQCU/R+YCJSUsV6XLilHG GET /secret HTTP/1.0 cnvzwqkcwzmt/rz+duov8ggb7oo/d8h3xuvgq2lsx4kygq2szwj8q6ewhsmhf4oz Security-Scheme: S-HTTP/1.4 User-Agent: Web-O-Vision 1.2beta lvmaadcabgkqhkig9w0bbweweqyfkw4dagcecfif7badxlw3oiaegzbncmexke16 Accept: *.* +mnxx8yqpukbcl0bwqs86lvws/agrkkpelmysbi5lco8mbcswk/fcyrnxirhs1ok Key-Assign: Inband,1,reply,des-ecb;7878787878787878 BXBVlsAhKkkusk1kCf/GbXSAphdSgG+d6LxrNZwHbBFOX6A2hYS63Iczd5bOVDDW Op2gcgUtMJq6k2LFrs4L7HHqRPPlqNJ6j5mFP4xkzOCNIQynpD1rV6EECMIk/T7k 1JLSAAAAAAAAAAAAAA==
S-HTTP: Beispiel S C: Secure * Secure-HTTP/1.4 Content-Type: message/http Prearranged-Key-Info: des-ecb,697fa820df8a6e53,inband:1 Content-Privacy-Domain: CMS MIAGCSqGSIb3DQEHBqCAMIACAQAwgAYJKoZIhvcNAQcBMBEGBSsOAwIHBAifqtdy x6uimyccargvfzjtozbn773dtmxlx037ck3giqnv0wc0qax5f+fesaigaxmqwcir HTTP/1.0 200 OK r9xvt0nt0lgsq/8tilcdbekdycngdcjaduy3d0r2sb5sntt0tyl9uydg3w55vtnw Security-Scheme: S-HTTP/1.4 Content-Type: text/html apbcpcwludari1uhdzbnojicrvehxg/syx069m8v6vo8psjs7//hh1ym+0nekzq5 Congratulations, you've won. l1p0j7uwku4w0csrlgqhlvejanj6dqagstncooh3jzexgqxntgesk8pofpfhdtj0 <A href="/prize.html CRYPTOPTS="Key-Assign: 5RH4MuJRajDmoEjlrNcnGl/BdHAd2JaCo6uZWGcnGAgVJ/TVfSVSwN5nlCK87tXl Inband,alice1,reply,des-ecb;020406080a0c0e0f; nl7djwaprywxb3mnpknq7atijpf5u162mbwxrddmie7e3sst7nasn+gs0atey5x7 SHTTP-Privacy-Enhancements: recv-required=auth"> AAAAAAAAAAA= Click here to claim your prize</a> SSL De facto Standard für Client-Server-Sicherheit IETF RFC: The TLS Protocol Version 1.0 (RFC 2246) In allen gängigen Browsern integriert Freie Programmbibliotheken, z.b. SSLRef, SSLPlus, SSLava, SSLeay, openssl, modssl
SSL SSL
Aufbau von SSL/TLS HTTP(S) Change Chipher Alert Handshake Anwendung Record Layer TCP SSL/TLS Record Layer HTTP-Daten Fragmentierung http 3.1 Länge http 3.1 Länge Kompression Verschlüsselung http 3.1 Länge MAC Padd. P. Länge
SSL/TLS Verbindungsstatus SSL/TLS arbeitet immer in einem aktuellen Verbindungsstatus (connection state): Ausgewählte Algorithmen Ausgewählte Schlüssel Start-Status ist NULL Das Handshake-Protokoll handelt einen pending state aus Durch [ChangeCipherSpec] wird der pending state in actual state kopiert. SSL/TLS: Handshake Master secret k = 0101... 110110 Client ClientHello Certificate ClientKeyExchange CertificateVerify [ChangeCipherSpec] Finished Server ServerHello (Session_ID) Certificate CertificateRequest ServerHelloDone [ChangeCipherSpec] Master secret Finished k = 0101... 110110
SSL/TLS: Verkürzter Handshake Client ClientHello (Session_ID) [ChangeCipherSpec] Finished Server ServerHello (Session_ID) [ChangeCipherSpec] Finished Vorteil: Einsparung der aufwendigen Public-Key-Operationen beim Weitersurfen auf dem gleichen Server. SSL/TLS: Schlüsselvereinbarungsverfahren Benötigter Zertifikatstyp Schlüssel- austausch- Algorithm. ServerKey- Exchange benötigt? Inhalt ClientKey- Exchange Beschreibung RSA RSAExport (>512 Bit) DHE-DSS RSA Encryption RSA Signing DSS Signing Nein Ja (temporärer RSAKey = 512 Bit) Ja (g s mod p) Verschlüsseltes premaster secret Mit temp. RSAKey verschlüsseltes premaster secret g c mod p Client verschlüsselt premaster secret mit öffentlichem Schlüssel des Servers Client verschlüsselt premaster secret mit temporärem RSA- Schlüssel des Servers (nur noch relevant wegen Rückwärtskompatibilität). Diffie-Hellman- Schlüsselvereinbarung, Server signiert (g s mod p) mit dem DSS- Schlüssel.
SSL/TLS: Schlüsselvereinbarungsverfahren Benötigter Zertifikatstyp Schlüssel- austausch- Algorithm. ServerKey- Exchange benötigt? Inhalt ClientKey- Exchange Beschreibung DHE-RSA DH-DSS RSA Signing DH, signiert mit DSS Ja (g s mod p) Nein (g c mod p im Zertifikat enthalten) g c mod p g c mod p Diffie-Hellman- Schlüsselvereinbarung, Server signiert (g s mod p) mit dem RSA- Schlüssel. Diffie-Hellman- Schlüsselvereinbarung mit festem Serveranteil, Authentisierung über DSS-Zertifikat. DH-RSA DH, signiert mit RSA Nein (g c mod p im Zertifikat enthalten) g c mod p Diffie-Hellman- Schlüsselvereinbarung mit festem Serveranteil, Authentisierung über RSA-Zertifikat. TLS: Generierung der Schlüssel
TLS: Generierung der Schlüssel TLS: Generierung der Schlüssel
TLS: Finished-Nachricht TLS: Ciphersuites
Angriffe: Bleichenbacher Der Eine Million Fragen -Angriff SSL verwendet PKCS#1 zur Codierung von RSA- Kryptogrammen: PKCS#1-Klartext beginnt immer mit den Bytes 00 und 02 Angreifer wählt einen Chiffretext und sendet ihn an Server beginnt Klartext nicht mit 00 02, dann Fehler_1 beginnt Klartext mit 00 02, dann Fehler_2 Jedesmal, wenn Fehler_2 auftritt, kann der Angreifer den Schlüsselraum verkleinern. Effiziente Version des Algorithmus von Håstad und Näslund zur Sicherheit einzelner RSA-Bits Angriffe: Bleichenbacher (2) Daniel Bleichenbacher: Chosen Ciphertext Attacks Against Protocols Based on the RSA Encryption Standard PKCS#1, CRYPTO `98. PKCS#1 00 02 Padding String 00 Data Block k Bytes k: Länge des Modulus n in Bytes: 2 8(k-1) n<2 8k m PKCS-konforme Zahl ( B = 2 8(k-2) ): 2 B m< 3 B
Angriffe: Bleichenbacher (3) RSA ist wegen seiner Homomorphie-Eigenschaft unsicher gegenüber Chosen Ciphertext-Attacken: Um den Klartext zu c zu erhalten, lasse c s e mod n entschlüsseln, und dividiere das Ergebnis durch s. Idee Bleichenbacher: Suche viele verschiedene s i, so das c(s i ) e mod n PKCS-konform ist. Dann gilt für alle i: 2 B ms i mod n < 3 B Man erhält so viele verschiedene Intervalle, und der gesuchte Klartext m muss in deren Schnittmenge liegen. Angriffe: Bleichenbacher (4) Schritt 1: Gegeben ist ein PKCS-konformer Chiffretext c; gesucht ist m = c d mod n. c 0 c M 0 {[2B, 3B-1]}={[a,b]} (da m 0 =m PKCS-konform ist, liegt m in diesem Intervall) i 1
Angriffe: Bleichenbacher (5) Schritt 2: Suche die kleinste Zahl s 1 n/3b, so dass c 0 (s 1 ) e mod n PKCS-konform ist Da ms 1 PKCS-konform ist, gibt es ganze Zahlen r mit 2B ms 1 -rn 3B-1 2B-ms 1 -rn (3B-1)-ms 1 ms 1-2B rn ms 1 - (3B-1) Aus Schritt 1 wissen wir, dass a m b gilt. Daraus folgt as 1 - (3B-1) rn bs 1-2B (Lösungsmenge für r) Analog (2B+rn)/s 1 m (3B-1+rn)/s 1 (Intervalle für m) M 1 r { [max(a, (2B+rn)/s 1 ), min(b, (3B-1+rn)/s 1 ] } i 2 Angriffe: Bleichenbacher (6) Schritt 3: Suche die kleinste Zahl s 2 >s 1, so dass c 0 (s 2 ) e mod n PKCS-konform ist Analog zu Schritt 2 erhält man eine Lösungsmenge für r Analog zu Schritt 2 erhält man neue Intervalle für m (2B+rn)/s 2 m (3B-1+rn)/s 2 M 2 r,a,b { [max(a, (2B+rn)/s 1 ), min(b, (3B-1+rn)/s 1 ] } i 3
Angriffe: Bleichenbacher (7) Schritt 4 bis x: Wie Schritt 3, bis nur noch ein Intervall übrig ist Angriffe: Ettercap IP: 123.123.123.123 MAC: 1 Server ARP: Who has 123.123.123.123 Client Ettercap IP: 123.123.123.123 MAC: 2 Ettercap eignet sich die IP-Adresse des Servers an DNS greift dann nicht mehr
SSL: PKI Markt ist zwischen großen Anbietern aufgeteilt. Wer nicht mitspielt erhält: SSL: PKI Statistik für SSL-Zertifikate:
SSL/TLS, S-HTTP: Links TLS: www.ietf.org/html.charters/tls-charter.html SSL: home.netscape.com/security/techbriefs/ssl.html S-HTTP: www.ietf.org/rfc/rfc2660.txt Implementierungen: www.openssl.org, www.apache-ssl.org, www.modssl.org Million-Fragen-Angriff: D. Bleichenbacher "Chosen Ciphertext Attacks against Protocols Based on RSA Encryption Standard PKCS #1" in Advances in Cryptology --CRYPTO'98, LNCS vol. 1462, pages: 1--12, 1998. www.belllabs.com/user/bleichen/bib.html