SBY

Sichere Interprozesskommunikation

Shared Memory, Message Passing, Pipes, Sockets, RPC und Sicherheitsaspekte bei Interprozesskommunikation.

Sichere Interprozesskommunikation

Interprozesskommunikation bedeutet, dass Prozesse Daten austauschen oder gemeinsam an einer Aufgabe arbeiten.

IPC wird gebraucht, weil Prozesse normalerweise voneinander getrennt sind. Diese Trennung ist gut für Sicherheit, aber Prozesse müssen trotzdem kontrolliert kommunizieren können.

Warum IPC?

Prozesse kommunizieren, um:

  • Informationen auszutauschen
  • Aufgaben aufzuteilen
  • modulare Programme zu bauen
  • Rechenzeit besser zu nutzen
  • Dienste und Clients zu verbinden

Shared Memory

Bei Shared Memory teilen sich Prozesse einen gemeinsamen Speicherbereich.

Vorteile:

  • sehr schnell
  • wenig Kopieraufwand
  • gut für große Datenmengen

Nachteile:

  • Synchronisation nötig
  • Race Conditions möglich
  • Zugriffsrechte müssen sauber gesetzt sein

Shared Memory braucht fast immer zusätzliche Mechanismen wie Mutexe oder Semaphore.

Message Passing

Beim Message Passing senden Prozesse Nachrichten über das Betriebssystem.

Grundform:

send(P, message)
receive(Q, message)

Kommunikation kann direkt oder indirekt stattfinden.

ArtBeschreibung
DirektSender und Empfänger kennen sich direkt.
IndirektKommunikation läuft über Mailboxen, Queues oder andere Vermittler.

Message Passing ist oft einfacher zu kontrollieren als Shared Memory, kann aber langsamer sein.

Unix Pipes

Pipes gehören zu den ältesten IPC-Techniken in Unix-Systemen. Sie wurden Anfang der 1970er Jahre eingeführt.

In der Shell verbindet | die Ausgabe eines Prozesses mit der Eingabe eines anderen Prozesses.

Beispiel:

cat access.log | grep "ERROR"

Eigenschaften:

  • Datenstrom zwischen Prozessen
  • Puffer zwischen Sender und Empfänger
  • meist eine Richtung
  • Full-Duplex-Kommunikation benötigt zwei Pipes

Unbenannte und benannte Pipes

ArtBeschreibung
Unbenannte PipeHäufig zwischen verwandten Prozessen, zum Beispiel Eltern- und Kindprozess.
Benannte PipeKann über einen Namen angesprochen werden und ist flexibler nutzbar.

Vorteile von Pipes:

  • einfach
  • effizient
  • zuverlässig
  • gut in Unix-Werkzeuge integrierbar

Nachteile:

  • begrenzte Puffergröße
  • Blockierung möglich
  • Synchronisation wichtig
  • oft nur eine Richtung

IPC Sockets

Sockets ermöglichen bidirektionale Kommunikation zwischen Prozessen.

Sie können lokal auf einem Rechner oder über ein Netzwerk verwendet werden.

Typischer Ablauf:

  1. Server erstellt einen Socket.
  2. Server bindet Adresse und Port.
  3. Server wartet auf Verbindungen.
  4. Client verbindet sich.
  5. Daten werden ausgetauscht.
  6. Socket wird geschlossen.

Sockets nutzen häufig TCP oder UDP.

Einsatzgebiete:

  • Webbrowser und Webserver
  • E-Mail-Clients
  • lokale Dienste
  • Echtzeitkommunikation
  • Online-Spiele
  • Protokollimplementierungen

RPC

Remote Procedure Call bedeutet, dass ein Programm eine Funktion in einem anderen Adressraum aufruft, oft sogar auf einem anderen Rechner.

Bekannte Varianten:

  • ONC RPC
  • MSRPC
  • RMI
  • XML-RPC

Die Grundidee: Ein Aufruf sieht für das Programm wie eine normale Funktion aus, wird aber als Nachricht übertragen und beim anderen Prozess ausgeführt.

Sicherheitsaspekte

IPC muss sicher gestaltet werden.

Wichtige Fragen:

  • Darf dieser Prozess überhaupt kommunizieren?
  • Sind Nachrichten validiert?
  • Können fremde Prozesse Pipes, Sockets oder Shared Memory missbrauchen?
  • Gibt es Größenlimits?
  • Können Nachrichten blockieren oder Ressourcen erschöpfen?
  • Werden sensible Daten unverschlüsselt übertragen?
  • Sind Rechte und Besitzer korrekt gesetzt?

Merksatz

IPC verbindet getrennte Prozesse. Sicher wird sie erst durch klare Berechtigungen, validierte Nachrichten und saubere Synchronisation.

Zuletzt aktualisiert: 6. Juni 2026