Sie sind hier
E-Book

Unix-Netzwerkprogrammierung mit Threads, Sockets und SSL

AutorMarkus Zahn
VerlagSpringer-Verlag
Erscheinungsjahr2006
Seitenanzahl434 Seiten
ISBN9783540383024
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis14,99 EUR


Markus Zahn war nach Abschluß seines Mathematik-Studiums im Jahr 1994 als wissenschaftlicher Mitarbeiter am Lehrstuhl für Informatik I an der Universität Augsburg tätig und hat dort 1999 mit einer umfassenden Dissertation zum Thema 'Konsistenzmechanismen in Software-DSM-Systemen' promoviert. Seit 1997 leitet Herr Zahn die Arbeitsgruppe 'Betriebssysteme und parallele Server' am Rechenzentrum der Uni Augsburg. Die thematischen Schwerpunkte seiner Arbeit liegen in der parallelen und verteilten Programmierung von UNIX-Clustern und in den Bereichen POSIX-Threads, Remote Procedure Calls und Message Passing.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

6 Netzwerkprogrammierung mit SSL (S. 301-302)

Die Entwicklung der Unix-Betriebssysteme ist eng mit der Entwicklung des Internets verknüpft: Die schier unendlichen Möglichkeiten, die sich aus der Unix-Netzwerkprogrammierung ergaben, bereiteten im Zusammenspiel mit den Anfängen des Internets den Weg für eine Vielzahl von Netzwerkdiensten und darauf aufbauenden Dienstleistungen. Mit der Einführung des am Europäischen Kernforschungszentrum CERN entwickelten Netzwerkdiensts World Wide Web (WWW) schaffte das Internet schließlich den Sprung heraus aus der Welt der Forschung und der Wissenschaft. Über das WWW wurde von Internetnutzern aus der ganzen Welt binnen relativ kurzer Zeit eine bis dahin unvorstellbare Menge an Informationen bereitgestellt und miteinander verwoben, weshalb der Begriff "Internet" seitdem umgangssprachlich häufig mit dem World Wide Web gleichgesetzt wird. Aufgrund seiner Informationsvielfalt verzeichnete das Internet ab Mitte der Neunziger Jahre ein rasantes Wachstum von damals gut 1,3 Millionen angeschlossen Rechnern (Januar 1993) zu nunmehr knapp 400 Millionen miteinander vernetzten Systemen (Januar 2006).

Immer mehr Privatanwender, insbesondere auch Computerlaien, machen seither von dieser weltumspannenden Informationsquelle Gebrauch, was Zug um Zug auch zu immer mehr kommerziellen Angeboten im Netz führte (und immer noch führt). Das Internet ist damit inzwischen von einem Netz für Universitäten und Forschungseinrichtungen zum ubiquitären Informations- und Kommunikationsmedium avanciert. Viele neue Dienste wie etwa die elektronische Post (EMail), das Telefonieren über das Internet (IP-Telefonie, VoIP), das Einkaufen über das Internet (Online-Shopping), der elektronische Zahlungsverkehr (Online-Banking), die elektronische Steuererklärung (ELSTER) oder auch das sogenannte E-Government verlangen eine Personalisierung ihrer Dienst leistungen.

Niemand soll schließlich unberechtigten Zugriff auf das Konto Dritter haben, unter einer falschen Identität Waren einkaufen oder gar eine Steuererklärung abgeben können. Die Benutzer müssen sich also gegenüber den angesprochenen Diensten ausweisen können und dabei müssen dann letztendlich auch sensible Daten verwaltet und über das (unsichere) Netzwerk übertragen werden. Die IT-Sicherheit spielt damit in solchen Systemen eine zentrale Rolle. Im weiteren Verlauf dieses Kapitels wollen wir deshalb aus dem weiten Themenfeld der IT-Sicherheit einen für die Unix-Netzwerkprogrammierung relevanten Baustein herausgreifen: die sichere Datenübertragung über ein IPbasiertes Netzwerk.

6.1 Strategien zur Absicherung des Datenverkehrs

Die Absicherung des Datenverkehrs zwischen zwei Kommunikationspartnern dreht sich, anders als gemeinhin angenommen, in der Regel nicht nur um die reine Verschlüsselung der zu übertragenden Daten. Die Herausforderungen, die bei der sicheren Datenübetragung zu meistern sind, sind gleichzeitig die vier Hauptziele der modernen Kryptographie und werden Schutzziele der ITSicherheit genannt: Vertraulichkeit: Nur der gewünschte Empfänger einer vertraulichen Nachricht soll in der Lage sein, den Inhalt der Nachricht zu lesen. Um die Vertraulichkeit zu gewährleisten, muß also sichergestellt werden, daß der Inhalt einer Mitteilung nur von der Person bzw. dem System gelesen werden kann, für die bzw. für das der Absender seine Mitteilung bestimmt hat. Darüber hinaus sollte es für Unbefugte nicht einmal möglich sein, abgeleitete Informationen über den eigentlichen Nachrichteninhalt (etwa eine statistische Verteilung bestimmter Zeichen) zu erlangen.

Inhaltsverzeichnis
Vorwort5
Inhaltsverzeichnis9
Beispielprogramme13
1 Einführung16
1.1 TCP/IP-Grundlagen17
1.1.1 Netzwerkschicht18
1.1.2 Internet-Schicht19
1.1.3 Transportschicht20
1.1.4 Anwendungsschicht21
1.2 Internet-Standards21
1.3 Unix-Standards22
2 Programmieren mit Unix-Prozessen24
2.1 Unix-Prozesse24
2.1.1 Prozeßgruppen und Sessions25
2.1.2 Kontrollierendes Terminal27
2.1.3 Verwaiste Prozesse und verwaiste Prozeßgruppen28
2.1.4 Prozeßumgebung29
2.1.5 Lebenszyklus30
2.1.6 User- und Gruppen-ID35
2.2 Ein- und Ausgabe36
2.2.1 Dateideskriptoren36
2.2.2 Elementare Ein- und Ausgabe39
2.2.3 Standardeingabe und -ausgabe50
2.2.4 Ausgabe über den Syslog- Dienst56
2.3 Buffer-Overflows und Format-String-Schwachstellen60
2.3.1 Buffer-Overflows62
2.3.2 Format-String-Schwachstellen69
2.3.3 Geeignete Gegenmaßnahmen72
2.4 Signale73
2.4.1 Signale behandeln74
2.4.2 Signale blockieren83
2.4.3 Signale annehmen87
2.4.4 Signale generieren89
2.5 Prozeflkontrolle91
2.5.1 Was bin ich? Prozeß-IDs und mehr92
2.5.2 Neue Prozesse erzeugen94
2.5.3 Prozesse synchronisieren98
2.5.4 Zombie-Prozesse104
2.5.5 Andere Programme ausführen105
2.5.6 User- und Group-IDs wechseln109
2.6 Dæmon-Prozesse111
3 Programmieren mit POSIX-Threads118
3.1 Grundlagen119
Ready:124
Running:124
Blocked:124
Terminated:124
3.2 Synchronisation130
3.2.1 Race Conditions und kritische Bereiche131
3.2.2 Gegenseitiger Ausschluß135
Mutexe erstellen und verwerfen135
Mutexe sperren und wieder freigeben136
Mutexe praktisch einsetzen137
3.2.3 Bedingungsvariablen141
Bedingungsvariablen erstellen und verwerfen141
Auf Bedingungsvariablen warten142
Bedingungsvariablen signalisieren144
Mutexe und Bedingungsvariablen einsetzen145
3.3 Pthreads und Unix-Prozesse150
3.3.1 Threadsichere und eintrittsinvariante Funktionen150
Threadsicherheit:150
Eintrittsinvarianz:150
3.3.2 Fehlerbehandlung und errno152
3.3.3 Signalverarbeitung153
3.3.4 fork() und exec() in Pthreads-Programmen159
4 Grundlagen der Socket-Programmierung162
4.1 Erste Schritte mit telnet und inetd162
4.1.1 Das telnet-Kommando als Netzwerk-Client162
Beliebige Dienste ansprechen163
Kommunikation mit einem Mailserver164
Zusammenfassung166
4.1.2 Einfache Netzwerkdienste mit dem inetd167
4.2 IP-Namen und IP-Adressen171
4.2.1 Das Domain Name System172
4.2.2 IPv4-Adressen174
Klasse A:175
Klasse B:176
Klasse C:176
Klasse D:176
Klasse E:177
CIDR – Classless Inter-Domain Routing177
Private IP-Adressen178
4.2.3 IPv6-Adressen179
4.3 Sockets194
4.3.1 Socket anlegen195
4.3.2 Socket-Strukturen197
IPv4 Socket-Adreßstruktur197
IPv6 Socket-Adreßstruktur197
Generische Socket-Adreßstrukturen198
4.3.3 Client-seitiger TCP-Verbindungsaufbau199
4.3.4 Socket-Adressen zuweisen204
4.3.5 Annehmende Sockets207
4.3.6 TCP-Verbindungen annehmen209
4.3.7 Drei-Wege-Handshake und TCP-Zustandsübergänge214
4.3.8 Kommunikation über UDP220
4.3.9 Standardeingabe und -ausgabe über Sockets227
4.3.10 Socket-Adressen ermitteln228
4.3.11 Multiplexing von Netzwerkverbindungen233
4.3.12 Socket-Optionen238
4.4 Namensaulösung242
5 Netzwerkprogrammierung in der Praxis250
5.1 Aufbau der Testumgebung251
5.1.1 Funktionsumfang der Testumgebung252
5.1.2 Hilfsfunktionen für die Socket- Kommunikation253
5.1.3 Der Test-Client264
5.2 Iterative Server270
5.2.1 Sequentielle Verarbeitung der Anfragen271
5.2.2 Clientbehandlung274
5.2.3 Hilfsfunktionen zur Laufzeitmessung277
5.2.4 Eigenschaften und Einsatzgebiete279
5.3 Nebenläufige Server mit mehreren Threads281
5.3.1 Abgewandelte Signalbehandlung282
5.3.2 Ein neuer Thread pro Client283
5.3.3 Das Hauptprogramm als Signalverarbeiter285
5.3.4 Eigenschaften und Einsatzgebiete287
5.4 Nebenläufige Server mit Prethreading289
5.4.1 Clientbehandlung mittels paralleler Accept-Handler290
5.4.2 Das Hauptprogramm als Signalverarbeiter292
5.4.3 Eigenschaften und Einsatzgebiete294
5.5 Nebenläufige Server mit mehreren Prozessen296
5.5.1 Anpassung der Signalbehandlung297
5.5.2 Ein neuer Prozeß pro Client299
5.5.3 Das Hauptprogramm301
5.5.4 Eigenschaften und Einsatzgebiete302
5.6 Nebenläufige Server mit Preforking304
5.6.1 Buchführende Signalbehandlung305
5.6.2 Parallele Accept-Handler in mehreren Prozessen307
5.6.3 Preforking im Hauptprogramm309
5.6.4 Eigenschaften und Einsatzgebiete311
5.7 Zusammenfassung313
6 Netzwerkprogrammierung mit SSL316
6.1 Strategien zur Absicherung des Datenverkehrs317
6.1.1 Datenverschlüsselung319
6.1.2 Hashfunktionen und Message Authentication Codes322
6.1.3 Digitale Signaturen323
6.1.4 Zertifizierungsstellen und digitale Zertifikate324
6.1.5 Praktische Absicherung des Datenverkehrs325
6.2 SSL-Grundlagen328
6.2.1 Datentransfer über SSL329
6.2.2 Anwendungsprotokolle um SSL erweitern332
6.2.3 SSL-Verbindungen interaktiv testen336
6.3 OpenSSL-Basisfunktionalität338
6.3.1 Das Konzept der BIO-API339
6.3.2 Lebenszyklus von BIO-Objekten340
6.3.3 Ein-/Ausgabe über BIO-Objekte341
6.3.4 BIO-Quellen/Senken und BIO-Filter344
6.3.5 Fehlerbehandlung357
6.3.6 Thread-Support360
6.3.7 Pseudozufallszahlengenerator367
7 Client-/Server-Programmierung mit OpenSSL372
7.1 Initialisierung der ssl-Bibliothek372
7.2 Der SSL-Kontext374
7.2.1 Ein unvollständiger SSMTP- Client375
7.2.2 SSL-Optionen, SSL-Modi und Chiffrenfolgen379
7.3 Sicherer Umgang mit X.509-Zertifikaten383
7.3.1 Zertifikatsüberprüfung aktivieren387
7.3.2 Zertifikatsüberprüfung per Callback nachbereiten389
7.3.3 Identitätsabgleich mit digitalen Zertifikaten395
7.3.4 SSL-Kommunikation mit eigener Identität402
7.4 Client-/Server-Beispiel: SMTP mit SARTTLS404
7.4.1 Ein SMTP-Client mit STARTTLS404
7.4.2 Ein SMTP-Server mit STARTTLS412
7.5 Zusammenfassung421
Anhang424
A.1 Zertifikate erstellen mit OpenSSL424
A.1.1 Aufbau einer Zerti.zierungsstelle424
Erzeugen eines geheimen CA-Schl ¨ ussels425
Erzeugen des CA-Zerti.kats425
CA-Dateien speichern426
A.1.2 Neue Zerti.kate ausstellen427
Certi.cate Signing Request erzeugen427
Certi.cate Signing Request signieren428
A.1.3 Vertrauensw ¨ urdige Zerti . zierungsstellen429
A.2 Barrieren mit POSIX-Threads430
Literaturverzeichnis438
Sachverzeichnis442

Weitere E-Books zum Thema: Unix - Linux

LINUX Kernelarchitektur

E-Book LINUX Kernelarchitektur
Format: PDF

Dieses Buch vermittelt einen detaillierten Einblick in den aktuellen Linux-Kernel 2.6 und zeigt, wie das System arbeitet, welche Konzepte und Strukturen verwendet werden und wie die Teile ineinander…

Linux-Systemadministration

E-Book Linux-Systemadministration
Grundlagen, Konzepte, Anwendung Format: PDF

Linux ist eine fest etablierte, für vielfältige Rechnerarchitekturen verfügbare Plattform und zeichnet sich insbesondere durch die hohe Stabilität und Sicherheit des Systems aus. Dieses Buch bietet…

Linux-Systemadministration

E-Book Linux-Systemadministration
Grundlagen, Konzepte, Anwendung Format: PDF

Linux ist eine fest etablierte, für vielfältige Rechnerarchitekturen verfügbare Plattform und zeichnet sich insbesondere durch die hohe Stabilität und Sicherheit des Systems aus. Dieses Buch bietet…

Linux-Systemadministration

E-Book Linux-Systemadministration
Grundlagen, Konzepte, Anwendung Format: PDF

Linux ist eine fest etablierte, für vielfältige Rechnerarchitekturen verfügbare Plattform und zeichnet sich insbesondere durch die hohe Stabilität und Sicherheit des Systems aus. Dieses Buch bietet…

Linux-Systemadministration

E-Book Linux-Systemadministration
Grundlagen, Konzepte, Anwendung Format: PDF

Linux ist eine fest etablierte, für vielfältige Rechnerarchitekturen verfügbare Plattform und zeichnet sich insbesondere durch die hohe Stabilität und Sicherheit des Systems aus. Dieses Buch bietet…

Weitere Zeitschriften

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

aufstieg

aufstieg

Zeitschrift der NaturFreunde in Württemberg Die Natur ist unser Lebensraum: Ort für Erholung und Bewegung, zum Erleben und Forschen; sie ist ein schützenswertes Gut. Wir sind aktiv in der Natur ...

Berufsstart Gehalt

Berufsstart Gehalt

»Berufsstart Gehalt« erscheint jährlich zum Sommersemester im Mai mit einer Auflage von 50.000 Exemplaren und ermöglicht Unternehmen sich bei Studenten und Absolventen mit einer ...

bank und markt

bank und markt

Zeitschrift für Banking - die führende Fachzeitschrift für den Markt und Wettbewerb der Finanzdienstleister, erscheint seit 1972 monatlich. Leitthemen Absatz und Akquise im Multichannel ...

Card-Forum

Card-Forum

Card-Forum ist das marktführende Magazin im Themenbereich der kartengestützten Systeme für Zahlung und Identifikation, Telekommunikation und Kundenbindung sowie der damit verwandten und ...

Gastronomie Report

Gastronomie Report

News & Infos für die Gastronomie: Tipps, Trends und Ideen, Produkte aus aller Welt, Innovative Konzepte, Küchentechnik der Zukunft, Service mit Zusatznutzen und vieles mehr. Frech, offensiv, ...

e-commerce magazin

e-commerce magazin

PFLICHTLEKTÜRE – Seit zwei Jahrzehnten begleitet das e-commerce magazin das sich ständig ändernde Geschäftsfeld des Online- handels. Um den Durchblick zu behalten, teilen hier renommierte ...