Diplomarbeit. Prototypische Implementierung eines netzwerkprozessorbasierten VPN-Gateways

Ähnliche Dokumente
Virtual Private Network. David Greber und Michael Wäger

VIRTUAL PRIVATE NETWORKS

Security Associations Schlüsseltausch IKE Internet Key Exchange Automatischer Schlüsseltausch und Identitätsnachweis

Prof. Dr. Martin Leischner Netzwerksysteme und TK. Hochschule Bonn-Rhein-Sieg. Modul 5: IPSEC

Multicast Security Group Key Management Architecture (MSEC GKMArch)

VPN Virtual Private Network

Workshop: IPSec. 20. Chaos Communication Congress

VPN unterstützt 3 verschiedene Szenarien: Host to Host: Dies kennzeichnet eine sichere 1:1 Verbindung zweier Computer, z.b. über das Internet.

Sicherheit in Netzwerken. Leonard Claus, WS 2012 / 2013

Bernd Blümel. Verschlüsselung. Prof. Dr. Blümel

Virtual Private Networks. Hans Peter Dittler BRAINTEC Netzwerk-Consulting GmbH

Informatik für Ökonomen II HS 09

VPN: Virtual-Private-Networks

msm net ingenieurbüro meissner kompetent - kreativ - innovativ

12 Kryptologie. ... immer wichtiger. Militär (Geheimhaltung) Telebanking, Elektronisches Geld E-Commerce

IPsec. Chair for Communication Technology (ComTec), Faculty of Electrical Engineering / Computer Science

ANYWHERE Zugriff von externen Arbeitsplätzen

Datenempfang von crossinx

Rechnernetze II SS Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/ , Büro: H-B 8404

Einrichtung von VPN für Mac Clients bei Nortel VPN Router

Virtual Private Network

Prinzipiell wird bei IP-basierenden VPNs zwischen zwei unterschiedlichen Ansätzen unterschieden:

11. Das RSA Verfahren und andere Verfahren

Exkurs: IPSec. Brandenburg an der Havel, den 5. Juni 2005

Beispielkonfiguration eines IPSec VPN Servers mit dem NCP Client

Eine Open Source SSL VPN Lösung. Patrick Oettinger Deutsche Telekom AG 2. Ausbildungsjahr

IPsec. Vortrag im Rahmen des Seminars Neue Internet Technologien

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

VPN-Verbindung zwischen LANCOM und integrierten VPN-Client im MacOS X 10.6 Snow Leopard

iphone 4 - Einrichtung des VPN Clients (Cisco VPN Client) / Verbinden des iphones mit einem Exchange

PeDaS Personal Data Safe. - Bedienungsanleitung -

Verschlüsselung. Kirchstraße 18 Steinfelderstraße Birkweiler Bad Bergzabern Fabian Simon Bfit09

Beschreibung und Bedienungsanleitung. Inhaltsverzeichnis: Abbildungsverzeichnis: Werkzeug für verschlüsselte bpks. Dipl.-Ing.

Technical Note ewon über DSL & VPN mit einander verbinden

ISA Server 2004 Erstellen eines neuen Netzwerkes - Von Marc Grote

Netzsicherheit I, WS 2008/2009 Übung 12. Prof. Dr. Jörg Schwenk

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Verteilte Systeme Unsicherheit in Verteilten Systemen

IT-Sicherheit Kapitel 10 IPSec

Dynamisches VPN mit FW V3.64

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken

10. Kryptographie. Was ist Kryptographie?

Umstellung des Schlüsselpaares der Elektronischen Unterschrift von A003 (768 Bit) auf A004 (1024 Bit)

Multimedia und Datenkommunikation

NAT & VPN. Adressübersetzung und Tunnelbildung. Bastian Görstner

Dynamisches VPN mit FW V3.64

ICS-Addin. Benutzerhandbuch. Version: 1.0

Rechnernetzwerke. Rechnernetze sind Verbünde von einzelnen Computern, die Daten auf elektronischem Weg miteinander austauschen können.

Verteilte Systeme. Übung 10. Jens Müller-Iden

Anleitung Thunderbird Verschlu sselung

FTP-Leitfaden RZ. Benutzerleitfaden

Asymmetrische. Verschlüsselungsverfahren. erarbeitet von: Emilia Winkler Christian-Weise-Gymnasium Zittau

Virtual Private Network

Benutzerhandbuch. bintec elmeg GmbH. Benutzerhandbuch. be.ip. Workshops. Copyright Version 1.0, 2015 bintec elmeg GmbH

How-to: VPN mit L2TP und dem Windows VPN-Client. Securepoint Security System Version 2007nx

Guide DynDNS und Portforwarding

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Tips, Tricks und HOWTOs Virtualisierung für Profis und Einsteiger Serverkonsolidierung, Testumgebung, mobile Demo

How to install freesshd

Digitale Signaturen. Sven Tabbert

Möglichkeiten der verschlüsselten -Kommunikation mit der AUDI AG Stand: 11/2015

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Authentikation und digitale Signatur

Application Note MiniRouter: IPsec-Konfiguration und -Zugriff

Einführung in die Netzwerktechnik

How to: VPN mit L2TP und dem Windows VPN-Client Version 2007nx Release 3

Verschlüsselung

Thema IPv6. Geschichte von IPv6

Übersicht. Was ist FTP? Übertragungsmodi. Sicherheit. Öffentliche FTP-Server. FTP-Software

DES der vergangene Standard für Bitblock-Chiffren

HowTo: Einrichtung & Management von APs mittels des DWC-1000

Diffie-Hellman, ElGamal und DSS. Vortrag von David Gümbel am

Stand vr bank Südthüringen eg 1 von 10. Smart TAN plus Umstellungsanleitung VR-NetWorld Software

FrogSure Installation und Konfiguration

Dieses Dokument erläutert die Einrichtung einer VPN-Verbindung zwischen einem LANCOM Router (ab LCOS 7.6) und dem Apple iphone Client.

Virtuelle Netze. Virtuelle Netze von Simon Knierim und Benjamin Skirlo 1 Von Simon Knierim & Benjamin Skirlo.

Systemvoraussetzungen Hosting

Zeichen bei Zahlen entschlüsseln

Symmetrische und Asymmetrische Kryptographie. Technik Seminar 2012

Nachrichten- Verschlüsselung Mit S/MIME

Comtarsia SignOn Familie

Key Management für ETCS

8. Bintec Router Redundancy Protocol (BRRP) 8.1 Einleitung

Sichere s. Kundeninformation zur Verschlüsselung von s in der L-Bank

Local Control Network Technische Dokumentation

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Netzwerk einrichten unter Windows

Sichere für Rechtsanwälte & Notare

Synchronisations- Assistent

Scharl 2010 Dokument ist Urheberrechtlich geschützt. Port Forwarding via PuTTY und SSH. Was ist Port forwarding?

Gruppe: swp Gruppenleiter: U. Seiler Aufgabenstellung 3. Lastenheft

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Primzahlen und RSA-Verschlüsselung

VPN Gateway (Cisco Router)

Modul 4: IPsec Teil 1

Transkript:

TU Dresden Lehrstuhl Rechnernetze Diplomarbeit Prototypische Implementierung eines netzwerkprozessorbasierten VPN-Gateways vorgelegt von Maik Hampel geb. am 03.02.1979 in Mittweida Eingereicht am: 15.04.2005 Institut: Systemarchitektur Betreuer: Dipl.-Inf. Mirko Benz Verantwortlicher Hochschullehrer: Prof. Dr. habil Dr. h. c. A. Schill

Inhaltsverzeichnis Abbildungsverzeichnis................................... Tabellenverzeichnis..................................... III IV 1 Einleitung 1 1.1 Aufgabenstellung................................... 1 1.2 Motivation....................................... 2 1.3 Verwandte Arbeiten................................. 3 1.4 Überblick........................................ 3 2 Grundlagen 5 2.1 Virtuelle Private Netzwerke............................. 5 2.1.1 Das Internet Protokoll............................ 6 2.1.2 Der Internet Protocol Security Layer.................... 7 2.2 Kryptografische Grundlagen............................ 16 2.2.1 Symmetrische Verfahren........................... 16 2.2.2 Verschlüsselungsmodi............................ 19 2.2.3 Einweg-Hashfunktionen........................... 21 2.3 Intel Netzwerkprozessoren............................. 22 2.4 Hardwarebeschreibung des Intel IXP2850..................... 23 2.4.1 Der Intel XScale -Kern........................... 23 2.4.2 Die Microengines............................... 24 2.4.3 Das DRAM Interface............................. 28 2.4.4 Das SRAM Interface............................. 28 2.4.5 SHaC...................................... 29 2.4.6 Die Crypto-Unit des IXP2850........................ 30 2.4.7 Das Media Switch Fabric Interface..................... 33 2.5 Softwareentwicklung für den IXP.......................... 34 2.5.1 Struktur einer Netzwerkapplikation.................... 34 2.5.2 Das IXA Portability Software Framework................. 35 2.5.3 Developer Workbench............................ 39 2.6 Microengine-Softwareentwicklung......................... 40 2.7 Der Linux-Kern.................................... 43 3 Analyse 45 3.1 Die IPSec-Architektur................................. 45 3.1.1 IPSec-Basisprotokolle............................ 46 3.1.2 SPD und SADB................................ 47 I

INHALTSVERZEICHNIS II 3.1.3 IKE-Architektur................................ 49 3.1.4 Verwaltung der Sicherheitsrichtlinien................... 49 3.1.5 Fragmentierung und PMTU......................... 50 3.1.6 Zusammenspiel der IPSec-Komponenten auf dem Datenpfad..... 50 3.2 Die Linux-Kernimplementation........................... 53 3.2.1 Geschwindigkeit der Linux-Kernimplementation............ 54 3.2.2 Der Linux 2.6 IP-Protokollstapel...................... 55 3.2.3 Das Empfangen von Paketen........................ 56 3.2.4 Das Senden von Paketen........................... 57 3.2.5 Der Linux 2.6 IPSec-Protokollstapel.................... 57 3.2.6 Der IPSec-Sendepfad............................. 60 3.2.7 Der IPSec-Empfangspfad.......................... 62 3.3 Ein Router auf IXP2800 Basis - Das Intel Referenzdesign............. 63 3.3.1 Der Datenpfad der Applikation....................... 64 3.3.2 Empfangspfad................................ 64 3.3.3 Sendepfad................................... 67 3.4 Abschätzung der Geschwindigkeit......................... 69 3.4.1 Das Processing-Budget............................ 69 3.4.2 Das IO-Budget................................ 70 3.4.3 Geschwindigkeit............................... 70 4 Entwurf und Implementierung 72 4.1 Design des IPSec-Datenpfades auf dem IXP 2850................. 74 4.1.1 Empfangspfad (Ingress-Teil)........................ 75 4.1.2 Sendepfad (Egress-Teil)........................... 77 4.1.3 Verteilungsstrategie der Sicherheitsrichtlinien und SAs......... 79 4.1.4 Architektur der SADB bzw. SPD...................... 80 4.1.5 PMTU..................................... 82 4.2 Implementierung................................... 82 4.2.1 Kryptografische Blöcke........................... 83 4.3 Implementierung des ESP-Protokollhandlers................... 83 4.3.1 Sequentielle Implementierung von ESP.................. 84 4.3.2 Parallelisierung des ESP-Datenflussmodells............... 86 4.3.3 Integration des ESP-Protokollhandlers in eine Applikation....... 89 4.3.4 Test und Validation der ESP-Implementierung.............. 91 4.3.5 Testergebnisse und Bewertung....................... 92 4.3.6 Mögliche Optimierungen.......................... 93 5 Abschließende Betrachtungen 95 5.1 Schlussfolgerungen und Fragen........................... 95 5.2 Zusammenfassung der Ergebnisse......................... 96 5.3 Ausblick........................................ 97

Abbildungsverzeichnis 2.1 Beispiel für ein einfaches VPN mit IPsec........................... 6 2.2 Einordnung von IPSec in das TCP/IP Schichtenmodell.................. 7 2.3 Die IPSec Modi......................................... 8 2.4 Anwendung von AH...................................... 9 2.5 Aufbau des AH-Kopfes..................................... 9 2.6 Anwendung von ESP...................................... 10 2.7 Struktur des ESP-Kopfes.................................... 11 2.8 IP-Paket mit AH und ESP (Transportmodus)........................ 11 2.9 IP-Paket mit AH und ESP (Tunnelmodus).......................... 11 2.10 Flussdiagramm Phase 1 - Main Mode............................ 15 2.11 Flussdiagramm Phase 1 - Aggressive Mode......................... 15 2.12 Flussdiagramm Phase 2 - Quick Mode............................ 16 2.13 CBC-Modus........................................... 21 2.14 Schematischer Aufbau des IXP2850.............................. 24 2.15 Eine IXP2850 Crypto-Unit nach Johnson und Kunze.................... 31 2.16 Line-Card Konfiguration.................................... 33 2.17 Struktur einer Netzwerkapplikation............................. 34 2.18 Das IXA Portability Framework................................ 36 2.19 NAT Beispielapplikation.................................... 37 2.20 Geordnetes Thread Modell................................... 41 2.21 Dispatch-Loop Faltungsbeispiel................................. 42 2.22 Aufbau des Linux-Kerns nach [RC01]............................ 44 3.1 Die Linux 2.6 IP-Protokollimplementation nach Mauerer[Mau04] S. 520......... 56 3.2 Struktur des Sendepfades................................... 61 3.3 Struktur des Empfangspfades................................. 62 3.4 Hardware Konfiguration für 10x1GBit/s mit CSIX..................... 63 3.5 Darstellung eines Paketes auf dem IXP............................ 64 3.6 Die IPv4/IPv6 Referenzimplementation........................... 65 4.1 Schematischer Aufbau des IPSec-Datenpfades beim Empfangen............. 76 4.2 Aufbau des IPSec-Datenpfades beim Senden........................ 79 4.3 Das allgemeine Datenflussmodell für ESP.......................... 85 4.4 Das Datenmodell beim parallelisierten ESP Entwurf.................... 90 4.5 Dispatch-Loop für die Integration des ESP-Protokollhandlers.............. 91 III

Tabellenverzeichnis 2.1 Die IXP2xxx Familie im Überblick.............................. 22 2.2 Ressourcen einer Microengine im Überblick......................... 26 2.3 Alle externen Speicher der Microengine im Überblick................... 28 2.4 IXP2850 Kryptoalgorithmen und deren Geschwindigkeit, Quelle [Int04c] Seite 17,19. 32 3.1 Geschwindigkeit der Linux 2.6 IPSec-Implementierung.................. 55 3.2 Ausgewählte IPSec-Datenstrukturen............................. 60 4.1 Auszug aus der API Unterstützung für die Crypto-Unit aus [Int04h].......... 84 4.2 Crypto-Unit Ressourcenanalyse................................ 88 IV

Kapitel 1 Einleitung 1.1 Aufgabenstellung Virtual Private Networks (VPN) werden eingesetzt, um Kommunikation auch in öffentlichen Netzen sicher und vertraulich durchführen zu können. Als wesentlicher Standard hat sich dabei IPSEC etabliert. Die Vorteile verschlüsselter Kommunikation werden jedoch mit einem erheblich höheren Rechenaufwand für die kryptografischen Algorithmen und die Protokollverarbeitung erkauft. Bei Datenraten über ein Gigabit/s sind damit auch sehr leistungsfähige PC Systeme überfordert. Traditionell werden daher ASIC 1 -basierte Implementierungen für diese Einsatzgebiete verwendet. Als Alternative dazu bieten sich Netzwerkprozessoren an. Darauf basierende Systeme sind wesentlich flexibler und können mit geringerem Entwicklungsaufwand realisiert werden. Ziel der Arbeit ist eine prototypische Umsetzung der Linux IPSEC Implementierung auf INTEL IXP Netzwerkprozessor- Architektur. Dazu sind zunächst entsprechende Grundlagen zu VPNs, dem INTEL IXP2850 sowie zu IPSEC unter Linux darzulegen. Im Anschluss ist eine Partitionierung der LINUX IPSEC Implementierung vorzunehmen. Dazu ist der Datenpfad auf die IXP Architektur zu portieren. Weiterhin ist eine Systemintegration dieser Komponente mit Linux zu erstellen. Den Abschluss der Arbeit bilden ein Ausblick zu Optimierungsansätzen sowie ein Vergleich mit herkömmlichen Systemen. Schwerpunkte: Übersicht Virtual Private Networks / IPSEC Übersicht Intel Netzwerkprozessor IXP2850 Vorstellung der Linux IPSEC Implementierung und Partitionierung Portierung des IPSEC Datenpfades auf die IXP Architektur Systemintegration und Test Evaluation von Optimierungsansätzen 1 Application Specific Integrated Circuits 1

KAPITEL 1. EINLEITUNG 2 1.2 Motivation Die digitale Übermittlung und Verarbeitung von Daten bilden die Grundlage der heutigen Informationsgesellschaft. Das mittlerweile allgegenwärtige Internet hat in kurzer Zeit sämtliche Bereiche des täglichen Lebens durchdrungen und ist aus dem Alltag kaum noch wegzudenken. Mit seinen sich immer weiter entwickelnden Diensten erweitert es die Kommunikation und fasziniert immer mehr Menschen in allen Schichten der Bevölkerung. Aber auch Unternehmen und Organisationen nutzen die Möglichkeiten des Internets als Basis für den internen Informationsaustausch und für die Kommunikation und die Abwicklung von Geschäften mit Kunden und Partnern. Die Technik des Internets ist in den letzten 20 Jahren entwickelt worden, wobei der entscheidende Schritt mit der Einführung des World Wide Web zu Beginn der neunziger Jahre vollzogen wurde. Seitdem unterliegt das WWW einer ständigen Weiterentwicklung. Es wurden seitdem immer neue Protokolle und Standards integriert, die sowohl die Funktionalität als auch die Sicherheit im World Wide Web verbessern. Neben den Entwicklungen im Internet selbst hat sich auch die Technologie der darunter liegenden Netzwerke stetig weiterentwickelt. Fanden die ersten Datentransfers in den achtziger Jahren noch über Telefonleitungen mit 1200 Bit/s statt, wird heute über Giga- oder Terabit-Leitungen kommuniziert. Beim Endanwender ist mittlerweile DSL mit Bandbreiten von mehreren Megabit etablierter Standard. Auch im Bereich der mobilen Kommunikation werden immer neue und verbesserte Technologien entwickelt und eingesetzt. Damit sind im Zeitalter von Hochtechnologie und ambiguous Computing Begriffe wie UMTS, Bluetooth oder WLAN allgegenwärtig und vielen Menschen bekannt. Allen eben genannten Technologien ist Eines gemeinsam: Sie sind Bestandteile digitaler Kommunikationssysteme, die eine räumliche Kommunikation und Interaktion von verteilten Anwendungen und deren Anwendern ermöglichen. Doch wie steht es um die Sicherheit bei der Kommunikation mittels dieser Systeme? Der Endverbraucher kann dafür sorgen, dass beim Lesen seiner privaten Mails diese vor unberechtigtem Zugriff geschützt sind. Was sollen jedoch räumlich getrennt agierende Großanwender wie Firmen oder Organisationen tun, deren tägliches Kommunikationsaufkommen beträchtlichen Umfang aufweist, sie sich aber keine dedizierten Netze leisten können? Eine Lösung dafür existiert schon seit längerem durch das Konzept der virtuellen privaten Netzwerke (VPN). Diese können mittels des auf dem Internet Protokoll basierenden Standards IPSec eingerichtet werden und sorgen dann für geschützte Kommunikation über ein öffentliches und damit potenziell unsicheres Internet. Wie sieht es mit der realisierbaren Leistungsfähigkeit aus? Mit herkömmlicher PC-Technik lassen sich pro Gigahertz Rechenleistung zirka 120 MBit/s schützen. Prägnanter Nachteil dieser Lösung ist, dass sie schlecht skaliert und somit keinen Investitionsschutz für die Zukunft und damit einhergehenden Leistungsanforderungen bietet. Ein neuer Ansatz, diese Problematik zu bewältigen, ist die Verwendung von speziellen Netzwerkprozessoren. Diese können theoretisch mit Datenraten im Gigabit-Bereich umgehen und sind dabei wesentlich flexibler und billiger als eine adäquate Lösung mittels eigens für diesen einen Zweck entwickelten ASICs. In dieser Arbeit wird eine auf dem Netzwerkprozessor Intel IXP2850 basierende VPN- Gateway IPSec-Implementierung vorgenommen und evaluiert. Dabei wird besonderes Augenmerk auf die erreichbaren Geschwindigkeiten gelegt und inwieweit diese den Herstellerund Hardwarespezifikationen entsprechen.

KAPITEL 1. EINLEITUNG 3 1.3 Verwandte Arbeiten Die meisten Arbeiten im Bereich Netzwerkprozessoren beschäftigen sich mit Routing- oder Switching-Anwendungen. Im direkten Umfeld dieser Arbeit sind am Lehrstuhl Rechnernetze einige Veröffentlichungen entstanden. Diese beschäftigen sich mit der Nutzung von Netzwerkprozessoren zur Hardwarebeschleunigung von Netzwerkprotokollen, insbesondere im Bereich von TCP/IP. Hierzu kann auf die Arbeiten [RL02a] und [RL02b] von R. Lehmann und M. Benz verwiesen werden. Weiterhin existiert eine Arbeit von Chee-wei Tan, M. Benz und A.Schill [wtbs04], welche sich grundlegend mit einer 10 Gbit IPSec Gateway Implementation auf der Intel Netzwerkprozessorarchitektur, insbesondere dem IXP2850, auseinandersetzt. Hier ist gezeigt worden, dass der IPSec-Datenpfad durch die benutzte Hardware beschleunigt werden kann. Außerdem wurde hier der Einsatz von Bloom-Filtern zur Beschleunigung der Klassifikation von Netzwerkpaketen vorgestellt. Weiterhin sind seitens des Herstellers Intel Informationen über die Möglichkeiten zur Nutzung ihrer Netzwerkprozessoren verfügbar. Dabei sind allerdings, besonders in Bezug auf IPSec, keine hintergründigen Basisinformationen über die dabei zu verwendenden Techniken gegeben. 1.4 Überblick Um dem Leser einen Überblick über die wichtigsten, für die Bearbeitung der gestellten Aufgabe nötigen Grundlagen zu geben, wird im Kapitel Grundlagen in die Technik von virtuellen privaten Netzwerken eingeführt. Derartige Netze funktionieren nicht ohne dazugehörige Netzwerkprotokolle. Deshalb werden als nächstes alle dafür nötigen Protokolle, insbesondere IPSec vorgestellt. Besonders für die Anwendung von IPSec werden kryptografische Grundlagen benötigt. Deshalb folgt ein Exkurs in die Kryptografie. Dort werden wichtige symmetrische Verschlüsselungsalgorithmen vorgestellt und auf das Prinzip von Hashfunktionen für die Anwendung zur Authentifikation von Daten eingegangen. Nach diesen eher theoretischen Ausführungen wird die für die gestellte Aufgabe verwendete Hardware vorgestellt. Es handelt sich hierbei um die Familie der Intel Netzwerkprozessoren mit ihrem derzeit leistungsfähigsten Vertreter, dem IXP2850. Dieses System ist ein für Netzwerkanwendungen entwickeltes Mehrprozessorsystem mit komplexer Hardund Softwarearchitektur. Nach der Hardwarebeschreibung folgt eine Beschreibung der Software, welche allerdings nur in ihren Grundstrukturen durchgeführt werden kann. Diese wird durch das Intel SDK dem Programmierer zur Verfügung gestellt. Bei der Vorstellung des SDK werden sowohl die gebotene Infrastruktur als auch verschiedene Konzepte zur Programmierung erläutert. Außerdem wird auf einige wichtige Werkzeuge näher eingegangen. Den Abschluss bildet eine kurze Einführung in die Architektur des Linux-Kernes. Nach dieser Einführung in die grundlegenden Techniken folgt im Kapitel Analyse eine genauere Betrachtung einer IPSec-Architektur. Hier wird über die im Kapitel Grundlagen vorgestellten Protokolle auf deren Zusammenwirken auf dem Datenpfad näher eingegangen. Durch diese eher theoretische Betrachtung einer allgemeinen IPSec-Implementation soll auch implizit die Anforderungsanalyse für das zu implementierende System, also den VPN-Gateway, vorgenommen werden. Außerdem werden Schnittstellen und zur Verarbeitung nötige Signalisierungs- und Datenpfade aufgezeigt. Danach folgt, der Aufgabenstellung entsprechend, die Analyse der Linux 2.6-Kernimplementation mit anschließender Partitionierung des Datenpfades für IPSec. Diese Analyse soll in Verbindung mit der Zielarchi-

KAPITEL 1. EINLEITUNG 4 tektur Aussagen zur Portierbarkeit ermöglichen. Somit wird im Folgenden die IPv4/IPv6 Referenzimplementation analysiert und deren Datenpfade aufgezeigt. Den Abschluß der Analyse bildet die Vorstellung eines Hilfsmittels zur Geschwindigkeitsanalyse von IXP- Applikationen. Im Kapitel Entwurf und Implementierung wird aufgrund der vorgestellten Analyse eine Entscheidung über die Portierbarkeit des Linux-2.6-Datenpfades auf die Architektur des IXP2850 getroffen. Danach wird das Design des zu implementierenden VPN-Gateways, welches auf Basis des IXP2850 in Sende- und Empfangspfade getrennt ist, vorgestellt. Hierzu werden alle dafür wichtigen Komponenten in ihrer Struktur erklärt. Anschließend folgt die prototypische Implementation des ESP-Protokollhandlers. Dieser wird aufgrund der gegebenen Hardware schrittweise implementiert, in das System integriert und validiert. Um das Kapitel abzurunden, werden noch Geschwindigkeitsmessungen vorgenommen und diese diskutiert und bewertet. Am Ende werden noch einige Ansätze zur Optimierung des Systems vorgeschlagen.

Kapitel 2 Grundlagen 2.1 Virtuelle Private Netzwerke Kommunikationsnetze werden seit jeher in öffentliche und private Netze unterteilt. Ein öffentliches Netz, wie z.b. das öffentliche Telefonnetz oder das Internet ist ein Zusammenschluss von unabhängigen Knoten, welche Informationen miteinander austauschen können. Die Nutzer des öffentlichen Netzes haben in der Regel nichts miteinander gemeinsam. Jeder Nutzer des Netzwerkes kommuniziert normalerweise nur mit einer relativ kleinen Gruppe von Teilnehmern. Ein privates Netzwerk besteht aus einer Menge von Rechnern, welche zu einer Organisation gehören und untereinander spezielle Informationen teilen. Dabei ist den Teilnehmern garantiert, dass sie die Einzigen sind, die das Netz benutzen dürfen und somit gesendete Informationen im schlimmsten Fall nur von anderen Teilnehmern in der Gruppe gesehen werden können. So sind das firmeneigene lokale Netzwerk LAN oder auch das firmeneigene Weitverkehrsnetz WAN typische Beispiele von privaten Netzwerken. Die Verbindung zwischen dem privaten und dem öffentlichen Netz übernimmt ein Gateway Router. Dieser schützt das private Netz mittels Firewall vor unberechtigtem Zugriff oder begrenzt den Zugriff ins öffentliche Netz. Sollen nun aber räumlich getrennte, private Netzwerke miteinander verbunden werden, dann müssen dafür dedizierte Leitungen verwendet werden. In Zeiten des allgegenwärtigen Internets ist diese Lösung keinesfalls kosteneffizient, besonders dann nicht, wenn Mitarbeiter regelmäßig Zugriff von außerhalb auf das private Netzwerk benötigen. Mittels virtuellen privaten Netzwerken lässt sich die Grenze zwischen öffentlichem und privatem Netz verwischen. Virtuelle Private Netzwerke erlauben es, eine sichere Verbindung zwischen privaten Netzwerken über ein öffentliches Netzwerk herzustellen. Ein VPN ist somit ein Weg, ein privates Netz über ein öffentliches Netz zu simulieren. Dazu bedarf es kryptografischer Verfahren zur Authentifizierung und Verschlüsselung, Pakettunnel sowie Security-Gateways. Für die Realisierung eines VPN gibt es Protokolle wie das Point-to-Point Tunneling Protocol PPTP, das Layer 2 Tunneling Protocol L2TP oder Cisco PIX. Allerdings sind diese Protokolle meist auf einen bestimmten Verwendungszweck hin optimiert oder nicht herstellerunabhängig. Weiterhin gelten die darin verwendeten Verfahren zur Verschlüsselung und Datenauthentifizierung mittlerweile als nicht mehr sicher. Einen Überblick über diese Protokolle findet sich im Buch von Scott, Wolfe und Erwin [SWE98]. 5

KAPITEL 2. GRUNDLAGEN 6 Den allgemeineren Lösungsansatz bietet das Internet Protocol Security Layer (IPSec) Protokoll. Es bietet für virtuelle private Netzwerke die dem aktuellem Stand der Technik entsprechend beste Funktionalität und Offenheit. Es ist herstellerunabhängig und erweitert das Internet Protocol um Mechanismen der Datenintegrität und Verschlüsselung. Das IP- Sec Protokoll bietet prinzipiell zwei verschiedene Betriebsmodi, den Tunnelmodus und den Transportmodus. Diese korrespondieren mit den Anforderungen in einem VPN, der Netzzu-Netz- und der Host-zu-Host Sicherheit. Damit erlauben es virtuelle private Netzwerke, mehreren Rechnern auf sichere Weise über ein potenziell unsicheres Internet miteinander zu kommunizieren. Dies geschieht über so genannte VPN-Gateways. Diese spannen untereinander ein VPN auf und werden im Falle von IPSec im Tunnelmodus betrieben. VPN-Clients, welche auch als Road Warriors bezeichnet werden, können sich, nach vorheriger Authentifikation, von überall aus in dieses VPN einbinden. Damit befindet sich der VPN-Client im virtuellen privaten Netzwerk und kann auf dessen Ressourcen zugreifen. Der Datentransfer zwischen VPN-Client und Gateway erfolgt dabei im Tunnelmodus. Dargestellt ist eine derartige Situation in Abbildung 2.1. VPN 1 VPN Client VPN 2 GW1 GW2 gesicherte Kommunikation Abbildung 2.1: Beispiel für ein einfaches VPN mit IPsec 2.1.1 Das Internet Protokoll Das Internet Protokoll (IP) ist ein Protokoll der Vermittlungsschicht, das Datagramme zwischen einer Quelle, dem sendenden System und einem Ziel, dem empfangenden System, überträgt. Dieser durch IP bereitgestellte Dienst leistet eine verbindungslose und unzuverlässige Übertragung. Verbindungslos bedeutet in diesem Zusammenhang, dass die einzelnen Datagramme unabhängig von anderen Datagrammen behandelt werden. Unzuverlässig drückt aus, dass das Protokoll selbst keinerlei Maßnahmen bereitstellt, um Fehlersituationen, wie das Verlorengehen von Paketen, das Eintreffen von Paketen in der falschen Reihenfolge oder das Eintreffen duplizierter Pakete, zu beheben. Das Internet Protokoll wurde konzipiert, um Datagramme so schnell und effizient wie möglich zu übertragen. Methoden zur Dienstgüteunterstützung sind ursprünglich nicht vorgesehen worden. Bei dem Internet Protokoll wird zwischen der älteren Version 4 (IPv4) und der Version 6 (IPv6) unterschieden. Die Version 6 stellt eine Erweiterung der Version 4 dar, um Limitationen der Version 4, wie z.b. einen zu kleinen Adressraum, zu beheben. Im Internet und in lokalen Netzen wird

KAPITEL 2. GRUNDLAGEN 7 jedoch hauptsächlich noch immer mit Version 4 gearbeitet. 2.1.2 Der Internet Protocol Security Layer Der Internet Protocol Security Layer (IPSec) setzt auf der Vermittlungsschicht, dem Internet- Protokoll, mit dem Ziel auf, es um die Funktionalität der Verschlüsselung und Authentifizierung zu erweitern. Im Gegensatz zu anderen Verfahren, welche nur bestimmte Dienste auf höherer Protokollebene schützen, wie z.b. PGP für Mail, SSH für entferntes Einloggen oder SSL für das WWW, kann IPSec jeglichen Verkehr schützen. Dabei ist IPSec bei Internet Protokoll Version 4 als echte Erweiterung des Protokolls und somit des Protokollstapels anzusehen, bei Version 6 sind Maßnahmen zur Datenauthentifikation und Datensicherheit bereits Bestandteil des Protokolls. Die Einordnung von IPSec in das ISO/OSI Schichtenmodell sowie in das TCP/IP Referenzmodell ist in Abbildung 2.2 zu sehen. 7 6 5 Anwendung HTTP FTP HTTP FTP 4 Transport TCP/UDP TCP/UDP 3 Internet IP IP 2 1 Daten übertragung OSI und TCP/IP Schichtenmodell Ethernet MAC herkömmlicher TCP/IP Protokoll stapel IPSec Ethernet MAC TCP/IP Protokoll stapel mit IPSec Abbildung 2.2: Einordnung von IPSec in das TCP/IP Schichtenmodell Da das IPSec-Protokoll, wie in Abbildung 2.2 dargestellt ist, auf der Vermittlungsschicht aufsetzt, ist es in seiner Verwendung sehr flexibel und kann jeden Netzverkehr schützen, der das Internet Protokoll verwendet. Es kann benutzt werden, um eine oder mehrere Verbindungen zwischen Rechnerpaaren oder sog. Security-Gateways zu schützen. Als Security- Gateway wird im Allgemeinen ein Rechner bezeichnet, der Sicherheitsprotokolle unterstützt und sich im Netz logisch zwischen zwei beliebigen Rechnern befindet. So sind Router oder Firewalls, die Sicherheitsprotokolle unterstützen, Security-Gateways. IPSec besteht im Wesentlichen aus drei Teilen: den Basisprotokollen Authentication Header (AH) und Encapsulating Security Payload (ESP) sowie dem Dienst des Internet Key Exchange (IKE). Der Authentication Header (AH) bietet verbindungslose Datenintegrität, Datenauthentifizierung und bei Bedarf einen Anti-Replay Service. Das ESP Protokoll gewährleistet die Vertraulichkeit der übertragenen Daten durch Ver-

KAPITEL 2. GRUNDLAGEN 8 schlüsselung. Außerdem kann es auch verbindungslose Datenintegrität, Datenauthentifizierung und einen Anti-Replay Service bieten. AH und ESP zusammen bieten eine Zugriffskontrolle basierend auf der Verteilung kryptografischer Schlüssel und der Verwaltung von Datenströmen korrespondierend zu diesen Sicherheitsprotokollen. Der IKE dient zur automatischen Aushandlung von Protokollen und Schlüsseln, welche es Kommunikationspartnern erlauben, über IPSec miteinander Daten auszutauschen. IPSec unterstützt zwei verschiedene Betriebsmodi, dargestellt in Abbildung 2.3. Der Transport-Modus bietet nur Ende-zu-Ende Sicherheit zwischen zwei Hosts auf Ebene der Transportschicht an. Für eine Sicherung von IP-Paketen, welche auf dem Übertragungsweg vorgenommen werden kann, ist der Tunnelmodus nötig. Er findet Verwendung, wenn die zu übertragenden Pakete mittels IPSec durch ein zusätzliches Gerät im Netz geschützt werden sollen. Damit bietet sich der IPSec-Tunnelmodus hervorragend für den Aufbau von virtuellen privaten Netzwerken an. In beiden Modi finden AH und ESP allein oder in Kombination Anwendung. Auf beide Protokolle soll im Folgenden näher eingegangen werden. originales IP Paket IP Kopf TCP Kopf Daten Paket im Transportmodus IP Kopf IPSec Kopf TCP Kopf Daten Paket im Tunnelmodus IP Kopf IPSec Kopf IP Kopf TCP Kopf Daten Abbildung 2.3: Die IPSec Modi AH - Authentication Header Der Authentication Header sichert IP-Pakete vor Verfälschung durch Angreifer bei der Übertragung durch das Netz. Die Authentifizierung umfasst alle Bereiche des Paketes mit Ausnahme der Bereiche, die während des Transports durch Netze verändert werden. Dieser Paketkopf wird nach dem IP-Kopf vor allen weiteren Protokoll-Köpfen in das Paket eingefügt und steht somit direkt vor den zu transportierenden Nutzdaten. Dargestellt wird dieses Verhalten in Abbildung 2.4. Detaillierte Informationen finden sich in RFC2402 [SR98a]. Wird der Authentication Header eingesetzt, so ist dies im IP-Protokoll-Kopf vermerkt. Bei Internet-Protokoll-Version 4 steht im Feld Protocol der Wert 0x51, bei Version 6 steht selbiger Wert im Feld Next Header. Die Kopflänge des AH beträgt 96 Bit exklusive dem Feld Authentication Data. Der AH selbst beinhaltet folgende Felder: Next Header: Der Next Header spezifiziert die dem AH-Kopf folgenden Daten bezüglich des verwendeten Protokolls.

KAPITEL 2. GRUNDLAGEN 9 IP Kopf AH authentifiziert geschützte Daten Abbildung 2.4: Anwendung von AH Payload Length: In diesem Feld ist die Größe der geschützten Daten in Vielfachen von 32- Bit Worten minus zwei eingetragen. Reserviert: Diesem Feld ist noch keine Bedeutung zugeordnet. SPI: Im SPI-Feld wird der Security Parameters Index vermerkt, welcher aus einem 32-Bit Wert besteht. Dieser Wert kann nur in Verbindung mit der IP-Zieladresse und dem AH zugeordnet werden. Durch das SPI-Feld wird das verwendete Sicherheitsverfahren zwischen Sender und Empfänger eindeutig spezifiziert. Ein SPI-Wert kann nur in Abhängigkeit von der Empfängeradresse interpretiert werden, weil diese SPI-Werte vom Sender bzw. Empfänger festgelegt werden müssen. Da hierfür eine Reihe von Angaben erforderlich sind, also die verwendeten Verfahren, Schlüssel sowie Informationen über die Gültigkeitsdauer des Schlüssels, werden diese in einer SA (Security Association) zusammengefasst. Das Feld SPI enthält somit nur die Nummer der verwendeten SA. Sequenznummer: Dies ist ein fortlaufender Wert, der Paketen eine Reihenfolge zuordnet. Authentication Data: Dieses Feld enthält den für die Authentifikation des Paketes notwendigen Hash-Wert, welcher mit Hilfe der Algorithmen HMAC und MD5 oder HMAC und SHA bestimmt wird. 0 7 15 31 Bit Next Header Payload Length Reserviert Security Parameter Index (SPI) Sequenznummer Authentication Data (variabel) Abbildung 2.5: Aufbau des AH-Kopfes ESP - Encapsulating Security Payload Zur Wahrung der Vertraulichkeit bietet IPSec die Verschlüsselung der Nutzdaten des IP- Paketes an. Hierzu dient der Encapsulating Security Payload, definiert in RFC2406 [SR98b].

KAPITEL 2. GRUNDLAGEN 10 Die Nutzdaten werden gemäß der SA verschlüsselt und können zusätzlich durch eine Authentifizierung geschützt werden. Dies ist in Abbildung 2.6 zu sehen. Im Unterschied zur IP Kopf ESP geschützte Daten ESP Trailer verschlüsselt authentifiziert Abbildung 2.6: Anwendung von ESP Authentifizierung mittels AH wird bei ESP der IP-Kopf nicht mit in die Berechnung des Hashwertes einbezogen. Es wird nun nur das ESP-Paket, bestehend aus ESP-Kopf, Nutzdaten und ESP-Trailer, ohne das Feld ESP-Authentication in die Hashwertberechnung einbezogen. Der ESP-Kopf, dargestellt in Abbildung 2.7, besteht aus folgenden Teilen: SPI: Der Security Parameters Index ist ein beliebiger 32-Bit Wert, über den mit Hilfe der Zieladresse und dem verwendeten Sicherheitsverfahren eindeutig die zugehörige Security Association (SA) bestimmt wird. Sequenznummer: Die Sequenznummer ist ein 32-Bit Wert, welcher pro Paket immer um 1 inkrementiert wird. Die Sequenznummer wird mit dem Wert 0 initialisiert, wenn bei Sender und Empfänger eine neue Security Association (SA) angelegt wird. Nutzdaten: In diesem Feld folgen die Nutzdaten, welche via IPSec gesichert übertragen werden sollen (typischerweise TCP oder UDP). Die Nutzdaten werden auch als Payload bezeichnet. Padding: Das Padding ist ein Füllfeld der Länge 0 bis 255 Byte, mit dem das Nutzdatenfeld vergrößert wird. Dies ist bei der Verwendung bestimmter Kryptoalgorithmen nötig, da diese den Klartext bzw. Geheimtext blockweise abarbeiten und daraus resultierend der Eingabetext ein Vielfaches der Blocklänge sein muss. Pad Length: Ein 8-Bit langer Wert, der die Länge des Fülltextes angibt. Next Header: Ein 8-Bit Feld, welches das Protokoll spezifiziert, zu dem die Nutzdaten gehören. Authentication Data: Ein Feld variabler Länge, welches einen Wert zur Sicherung der Integrität des gesamten Paketes minus Authentication Data beinhaltet. Auch bei ESP wird zwischen Transport- und Tunnelmodus unterschieden. Im Transportmodus wird der ursprüngliche IP-Kopf beibehalten, im Tunnelmodus wird der ursprüngliche IP-Kopf zusammen mit den Nutzdaten verschlüsselt und ein neuer IP-Header vor das gesamte IP-Paket gesetzt.