Sichere Netzwerke mit IPSec Christian Bockermann <christian@ping.de>
Überblick Gefahren, Ziele - Verschlüsselung im OSI-Modell IPSec - Architektur - Schlüssel-Management - Beispiele
Unsichere Kommunikation
IPSec - Architektur Kommunikation über IP ist Strom von Paketen Alice Bob Daten Header Daten Header
IPSec - Architektur IP-Pakete enthalten dabei die Sender- und Empfänger-Adressen im Header Diese Pakete werden von den Routern unverschlüsselt übertragen Die Pakete können von jedem Router manipuliert werden Daher ist die Integrität, der Ursprung und die Vertraulichkeit nicht gesichert
Gefahren IP bietet keine Garantie von - Geheimhaltung (Vertraulichkeit) - Daten-Ursprung (Authentizität) - Daten-Manipulation (Integrität)
OSI-Modell Ansätze um Sicherheit zu erhöhen: Anwendungsschicht Darstellungsschicht Kommunikationsschicht Transportschicht Vermittlungsschicht Sicherungsschicht PGP, S/MIME, SET,... SSL (HTTPS,...) IPSec Physikalische Schicht
IP-Security
IPSec IPSec ist eine Erweiterung des IP-Protokolls um - Authentifizierung - Verschlüsselung Spezifiziert in - RFC 2401 (Architektur) - RFC 2402, 2406 (Auth., Verschl.) - RFC 2408 (Schlüssel-Verwaltung)
IPSec - Prinzip Um den Paket-Strom gesichert zu übertragen, werden die Pakete transformiert Alice Bob Daten Header Daten Header Transformation Daten Header Transformation
IPSec - Prinzip Die Transformation übernimmt der IPSec- Stack des Betriebssystems Dem Anwendungs-Prozess bleibt IPSec verborgen IPSec sichert damit die Kommunikation zwischen Rechner-Systemen Im Gegensatz dazu, sichert SSL die Kommunikation zwischen Anwendungen (z.b. Browser <-> Web-Server)
IP-Security Architektur
IPSec - Architektur Bei diesen Transformationen handelt es sich z.b. um Verschlüsselung mit symmetrischen Verfahren oder signierte Hash-Werte Dazu sind zusätzliche Informationen notwendig: - Welcher Algorithmus wird verwendet? - Welches Kennwort wird verwendet? - Wie lange ist das Kennwort gültig?
IPSec - SA Die Parameter für die Transformation wird bei IPSec in einer Security Association definiert Eine Security Association fasst IP-Pakete zusammen, anhand von - einem SPI (Security Parameter Index) - der IP-Ziel-Adresse - und dem Security Protocol Identifier
IPSec - SA Zusätzlich gehören zu einer SA noch - Sequenz-Zähler - ein Anti-Replay-Window - Algorithmus-Informationen - Gültigkeitsdauer - Modus Eine SA gilt jeweils nur für EINE Richtung - daher werden immer zwei SAs genutzt
IPSec - SA Die SA ist eine Vereinbarung, wie Alice und Bob ihre Kommunikation verschlüsseln Alice Security Association SA: Alice -> Bob Bob Daten Header Daten Header Transformation Daten Header Transformation
IPSec - SA Für die Kommunikation mit Carol benötigt Alice ebenfalls zwei Security Associations Alice SA: Alice -> Bob SA: Bob -> Alice SA: Alice -> Carol SA: Carol -> Alice Bob Carol
IPSec - SPD Wie sagt Alice ihrem System, dass für Pakete zu Bob eine SA benutzt werden soll? IPSec definiert dazu je System eine Security Policy Database Diese SPD enthält Regeln, wie mit anderen System zu kommunizieren ist, d.h. welche Transformationen zu verwenden sind
Daten... IPSec - SPD NEIN Müssen die Daten verschlüsselt werden? JA Betriebssystem SPD Schlüssel SA1 Daten Header Daten IPSec Header
IPSec - SPD Die Security Policy Database (SPD) definiert, welche Transformationen für welche Pakete verwendet werden sollen Unter UNIX kann diese Datenbank z.b. mit setkey angezeigt und verändert werden setkey -PD zeigt die Einträge der SPD an setkey -D zeigt die aktiven SAs an
IPSec - Architektur IPSec bietet 2 Mechanismen, um IP-Pakete sicherer zu übertragen: - Authentication Header (AH) - Identifiziert Sender - sichert Integrität der Pakete - Encryption Security Payload (ESP) - bietet Vertraulichkeit - optional auch Integrität der Daten
IPSec - Architektur AH basiert auf einem zusätzlichen Header, der dem normalen IP-Header folgt Bei ESP enthalten die Nutzdaten ebenfalls einen Header, der den SPI enthält Die Existenz dieses Headers wird durch die Transport-Protokoll-Nummer im IP-Header angezeigt Bei IPv6 wird dazu das next-header -Feld verwendet
IPSec - Architektur Die beiden Varianten AH und ESP stehen in zwei verschiedenen Modi zur Verfügung Transport-Modus - Verschlüsselung/Authentifzierung NUR der Nutzdaten Tunnel-Modus - Gesamtes IP-Paket wird geschützt - Neues Paket transportiert das geschützte
IPSec - AH Der Authentication Header bietet eine Integritätssicherung des IP-Paketes Next Header Payload length reserved Security Parameter Index Sequenz-Zahl Authentication Data
IPSec - AH Zur Integritätssicherung wird ein Hash-Wert berechnet, in den das Kennwort der SA einfliesst (HMAC) IP Header Daten Schlüssel aus der SA HMAC Authentication Data
AH - Transport-Modus Das transformierte Paket enthält somit eine verschlüsselte Prüfsumme des IP-Headers und der Daten Ursprüngliches Paket IP Header Daten Transformiertes Paket IP Header Daten
AH - Transport-Modus AH im Transport-Modus bezieht sich auf die Nutz-Daten und den IP-Header Dadurch wird der Paket-Absender direkt authentifiziert
AH - Tunnel-Modus Bei AH im Tunnel-Modus wird ein neues IP- Paket erzeugt, das einen AuthenticationHeader über das ursprüngliche Paket enthält Transformiertes Paket IP Header neuer IP Header KEY Ursprüngliches Paket Daten IP Header Daten
IPSec - ESP ESP dient zur Verschlüsselung der Nutzdaten Hier wird kein separater Header eingefügt, sondern die Nutzdaten verschlüsselt Security Parameter Index Sequenz-Zahl Eigentliche Nutzdaten Padding (0-255 bytes) Padding-length Payload length optional Authentication Data
ESP - Transport-Modus Im Transport-Modus verschlüsselt ESP die Daten des Paketes, der IP-Header bleibt erhalten Ursprüngliches Paket IP Header Daten Transformiertes Paket IP Header Daten
ESP - Transport-Modus Im Transport-Modus sind die Paket-Inhalte verschlüsselt Da sich die Verschlüsselung nur auf den Inhalt bezieht, sind die IP-Header sichtbar Dies erlaubt z.b. eine Fluss-Analyse des Datenstroms: - Wer kommuniziert mit wem?
ESP - Tunnel-Modus ESP im Tunnel-Modus verschlüsselt das komplette IP-Paket und versendet das verschlüsselte Paket in einem neuen Paket Ursprüngliches Paket IP Header Daten Transformiertes Paket neuer IP Header IP Header Daten
ESP - Tunnel-Modus Im Tunnel-Modus werden mit ESP auch die IP-Header verschlüsselt Dadurch wird auch der Kommunikations-Fluss (Quelle <-> Ziel) verschleiert Für aussenstehende sind nur noch Pakete zwischen den IPSec-Gateways sichtbar
ESP - Tunnel-Modus Client 1 oder Netzwerk 1 Client 2 oder Netzwerk 2 IPSec- Gateway A IPSec- Gateway B Im Tunnel-Modus wird hier nur die Kommunikation zwischen Gateway A und Gateway B sichtbar
IPSec - Szenarien Wann benutzt man welchen Modus? Welche Szenarien gibt es? Im folgenden ein paar kleine Beispiele
IPSec - Szenarien Client-to-Site Vernetzung, z.b. mit ESP im Transport-Modus Gateway Client Typisches Szenario für sogenannte Road-Warrior oder WLAN-Netze
IPSec - Szenarien Site-to-Site Vernetzung, z.b. mit ESP im Tunnel-Modus Gateways authentifizieren sich gegenseitig, keine Authentifikation der Clients untereinander
IPSec - Szenarien Site-to-Site Vernetzung, z.b. mit ESP im Tunnel-Modus Client-Authentifikation über AH im Transport-Modus (innen)
IP-Security Schlüssel-Management
Schlüssel-Management IPSec benötigt für AH- und ESP-Security Associations geheime Schlüssel, die an beiden Endpunkten verfügbar sein müssen Das Schlüssel-Management umfasst - Schlüssel-Festlegung - Schlüssel-Verteilung
Schlüssel-Management Die Festlegung und Verteilung von Schlüsseln ist auf 2 verschiedene Arten möglich - manuell Administrator legt Schlüssel an beiden Seiten fest - automatisch Festgelegt über das ISAKMP (Internet Security Association Key Management Protocol)
Schlüssel-Management Der IPSec-Standard für automatic keying ist ISAKMP/Oakley Oakley ist ein Protokoll, das auf dem Diffie- Hellman-Verfahren aufbaut ISAKMP kann auch andere Schlüssel- Austausch-Verfahren nutzen, in der Regel ist dies aber meist Oakley
Diffie-Hellman Das Diffie-Hellman-Verfahren basiert auf dem Problem den diskreten Logarithmus grosser Zahlen zu berechnen Wie bei den anderen public-key Algorithmen gibt es eine Funktion f, die einfach zu berechnen ist Die Umkehr-Funktion g = f-1 ist nur mit einer geheimen Zusatzinformation zu berechnen
Diffie-Hellman Sei q eine Primzahl und a eine primitive Wurzeln bzgl. q a und q werden veröffentlicht f und g sind dabei f(x) = a x mod q g(x,y) = y x mod q
Diffie-Hellman Alice 1. Wähle XA (geheim!) 2. Sende f(xa) 3. KS = g(xa,f(xb)) f(xa) f(xb) Bob 1. Wähle XB (geheim!) 2. Sende f(xb) 3. KS = g(xb,f(xa)) Ein Angreifer kann nur f(xa) und f(xb) mitlesen
Diffie-Hellman Der Sitzungs-Schlüssel K S besteht für Alice aus Bob berechnet K S als KS = (a X B mod q) X A mod q KS = (a X A mod q) X B mod q Einem Angreifer steht nur a,q, ax A, a X B zur Verfügung
Um den Schlüssel Diffie-Hellman KS = (a X B mod q) X A mod q zu berechnen, müsste entweder XA oder XB bekannt sein Dies erfordert die Lösung (Y) von (a X B mod q) X A mod q = (a X B mod q) Y mod q
Diffie-Hellman Problem: Man-in-the-Middle-Attacke Wie kann sich Alice sicher sein, dass sie mit Bob einen Schlüssel berechnet und nicht mit Mallory? Mallory Alice Bob
Diffie-Hellman Verfahren sehr rechenintensiv Problem dabei: Denial-of-Service-Attacken - Ein Angreifer versucht, mit vielen Schlüssel- Austauschen das System zu überlasten - Dabei werden meistens gefälschte Absender- Adressen verwendet Mallory Alice
Oakley Um die Unzulänglichkeiten des Diffie- Hellman-Verfahrens zu beseitigen wird beim Oakley-Austausch das Verfahren erweitert - Cookie-Austausch gegen DoS-Attacken - DH-Gruppen als Parameter-Sätze - Nonces gegen Replay-Attacken
Oakley Authentifikation der Teilnehmer - Digitale Signatur - Public-Key Verschlüsselung (rsasig) - Symmetrische Verschlüsselung (pre-shared Keys, PSK)
ISAKMP ISAKMP ist das Protokoll um Security Associations - Aufzubauen (Authentifikation, Algorithmen) - Abzustimmen (Schlüssel-Austausch) - zu verändern (alle 2 Std. neuer Schlüssel) - zu löschen Dazu definiert ISAKMP unter anderem Paket- Formate und Ablauf-Varianten
ISAKMP Es sind verschiedene Ablauf-Varianten möglich - Aggressive Mode - Base Exchange - Identity Protection Mode (Main Mode) Der Aggressive Mode sollte nach Möglichkeit nicht verwendet werden, da er einige Schwächen aufweist (http://www.ernw.de/download/pskattack.pdf)
ISAKMP Das grundlegende Vorgehen ist dabei jeweils 1. Alice schlägt Bob eine Menge von Algorithmen vor (Proposal) 2. Bob wählt einen Algorithmus aus und nennt ihn Alice 3. Nun müssen beide noch sicherstellen, dass sie wirklich Alice und Bob sind 4.Zum Schluss müssen sie noch einen geheimen Schlüssel austauschen oder festlegen
ISAKMP Der Aufbau einer IPSec-Verbindung besteht aus zwei Phasen - Phase 1 Hier authentifizieren sich die Partner und tauschen Schlüssel aus (IKE-SA) - Phase 2 Nun werden die ausgetauschten Schlüssel verwendet um die SA (IPSec-SA) für den Datenaustausch zu erzeugen
Main Mode ISAKMP - Phase 1 1. Alice sendet Bob Proposal (DES,AES,...) 2. Bob wählt Algorithmus und sagt ihn Alice 3. Alice sendet f(xa) an Bob 4.Bob sendet f(xb) an Alice 5. Alice sendet Authentifizierungs-Daten 6.Bob sendet Authentifizierungs-Daten
ISAKMP - Phase 1 Das Proposal legt fest, welche Verschlüsselungund Hash-Algorithmen verwendet werden können Für die Authentifikation in Schritt 5 und 6 gibt es mehrere Möglichkeiten - Schlüssel (pre-shared keys) - Zertifikate
ISAKMP - Phase 2 Wenn die Phase 1 vorüber ist, haben beide Parteien bereits die Möglichkeit verschlüsselt Daten auszutauschen Nun werden nochmals SAs erzeugt, die zum eigentlich Datenaustausch benutzt werden Für diese SAs macht der Initiator wieder einen Vorschlag (Proposal),... Dabei können auch mehrere Daten-SAs verhandelt werden
ISAKMP - Phase 2 Diese Daten-SAs enthalten keine Schlüssel- Informationen aus der Phase 1 Dadurch ist die Sicherheit der Phase 2 nicht mehr von der Phase 1 abhängig
ISAKMP Für den Aufbau einer IPSec-Verbindung mit automatischem Schlüssel-Austausch wird ein IKE-Daemon benötigt racoon und isakmpd sind Daemon, die unter Unix laufen und ISAKMP unterstützen
Beispiel: - Racoon mit PSK ISAKMP