# Mix (Netzwerk)

Das 1981 von David Chaum eingeführte Konzept der (umkodierenden) Mixe dient der anonymen Kommunikation innerhalb eines Netzwerkes. Dabei werden Nachrichten nicht direkt vom Sender zum Empfänger übertragen, sondern über mehrere Zwischenstationen (Mixe genannt) geleitet. Das Ziel ist die Anonymisierung der Kommunikationsbeziehung, was abhängig vom zugrunde liegenden Konzept zu einer der folgenden drei Ausprägungen führt:
* der Empfänger bleibt vor dem Sender anonym
* der Sender bleibt vor dem Empfänger anonym
* Sender und Empfänger bleiben voreinander anonym
Die wichtigste Eigenschaft, der Schutz von Verkehrsinformationen gegenüber außenstehenden Dritten, wird durch alle drei Konzepte realisiert.
Ein Mix spielt dabei die Rolle eines Nachrichtenvermittlers, ähnlich der Funktion eines Proxyservers. Er nimmt Nachrichten an und sorgt dafür, dass die von ihm dann weitergereichten Nachrichten nicht zu den von ihm angenommenen in Beziehung gesetzt werden können. Diese Zusatzfunktion unterscheidet ihn wiederum von einem üblichen Proxyserver.

## Grundfunktionen

Damit für Außenstehende keine Möglichkeit besteht, Nachrichten zwischen Eingang und Ausgang eines Mixes in Beziehung zu setzen, dies wird auch Überbrücken des Mixes genannt, muss ein Mix einige Grundfunktionen auf den Nachrichten durchführen:
* Löschen von Duplikaten
    Ein Angreifer in der elektronischen Welt hat immer die Möglichkeit, Nachrichten zu kopieren. Sollten zwei identische Nachrichten beim Mix eintreffen, so würden auch zwei identische Nachrichten vom Mix weitergeleitet werden. Der Mix wäre überbrückt, da eindeutig eine Beziehung zwischen den beiden identischen Eingangsnachrichten zu den beiden identischen Ausgangsnachrichten herstellbar wäre.
* Sammeln von Nachrichten
    Anonymität ist nur innerhalb einer Gruppe von Individuen möglich. Demzufolge muss dafür gesorgt werden, dass Unbestimmtheit darüber besteht, von wem eine Nachricht gekommen ist. Dies ist nur möglich, wenn ausreichend viele Nachrichten von unterschiedlichen Teilnehmern eingetroffen sind. Die Nachrichten werden dann alle gemeinsam in einem Schub bearbeitet (Batch-Modus). Alternativ kann immer wieder zufällig eine Nachricht zur Bearbeitung ausgewählt werden, während kontinuierlich neue Nachrichten hinzukommen (Pool-Modus).
* Umkodieren der Nachrichten
    Damit Nachrichten zwischen Eingang und Ausgang des Mixes nicht in Beziehung gesetzt werden können, müssen sie auch eine andere Gestalt annehmen. Dies wird durch Umkodieren mittels eines Verschlüsselungssystems erreicht. Dadurch ist Außenstehenden kein einfacher bitweiser Vergleich zwischen Eingangsnachrichten und Ausgangsnachrichten mehr möglich.
* Umsortieren der Nachrichten
    Es darf auch nicht möglich sein, von der Reihenfolge des Eintreffens der Nachrichten der verschiedenen Teilnehmer auf die Reihenfolge der Nachrichtenausgabe des Mixes zu schließen. Deshalb müssen die Nachrichten entsprechend umsortiert werden. Dadurch sind derlei Rückschlüsse nicht mehr möglich.
* weitere Aspekte
    Die größte Sicherheit wird erreicht, wenn alle Nachrichten dieselben Mixe in der gleichen Reihenfolge durchlaufen (Mix-Kaskade). Die oben aufgeführte Umkodierung bewirkt die Verkürzung der Nachrichten beim Durchlaufen der Mixe. Kann aus Leistungs- oder Kostengründen keine Mix-Kaskade garantiert werden, ist diese Verkürzung problematisch. Ein Angreifer könnte anhand der Verkürzung Zusammenhänge zwischen eingehenden und ausgehenden Nachrichten eines Mixes herstellen. Um dem entgegenzuwirken, gibt es längentreue Verfahren.

## Grenzen

Bei korrekter Umsetzung mittels vollständiger Funktionalität kann eine bestimmte Kommunikationsbeziehung nur durch drei Möglichkeiten aufgedeckt werden:
* Alle Mixe, die von einer Nachricht durchlaufen wurden, arbeiten zusammen.
* Alle anderen Sender und Empfänger der in allen Mixen gleichzeitig gemixten Nachrichten arbeiten zusammen.
* Ein Angreifer verfügt über unbegrenzte Rechenleistung (nicht komplexitätstheoretisch beschränkter Angreifer).

## Umkodierungsschema

Das Umkodieren der Nachrichten wird durch Ver- oder Entschlüsselung erreicht, das heißt die Nachrichten müssen entweder nach dem Empfang wieder entschlüsselt oder vor dem Absenden verschlüsselt werden.

### Senderanonymität

Für eine genaue Erklärung werden einige Bezeichnungen benötigt:
* ${\text{enc}}_{e}(m)$ … Verschlüsselung der Nachricht $m$ mit dem öffentlichen Schlüssel $e$
* $A_{i},\ e_{i}$ … Adresse und öffentlicher Schlüssel des Mixes $i$
* $A_{E},\ e_{E}$ … Adresse und öffentlicher Schlüssel des Empfängers
* $Z_{i}$ … Zufallszahl
Die Zufallszahlen $Z_{i}$ werden den Klartexten beigefügt, um eine nicht-deterministische Verschlüsselung zu erreichen. Das ist notwendig, damit Nachrichten mit gleichem Nachrichteninhalt nicht den gleichen Schlüsseltext erzeugen und deshalb vom Mix gefiltert werden. Für eine vereinfachte Betrachtung kann man die Zufallszahlen also weglassen.
Der Sender $S$ wählt eine Folge von Mixen, durch welche er die Nachricht $m$ anonym an den Empfänger $E$ senden möchte, zum Beispiel $S\rightarrow {\text{Mix}}_{1}\rightarrow {\text{Mix}}_{2}\rightarrow E$. Er sendet folgendes an den ersten Mix:
    ${\text{enc}}_{e_{1}}\left(Z_{1},A_{2},{\text{enc}}_{e_{2}}\left(Z_{2},A_{E},{\text{enc}}_{e_{E}}\left(m\right)\right)\right)$
Der erste Mix entschlüsselt dies mit seinem privaten Schlüssel $d_{1}$. Dadurch erhält er die Adresse $A_{2}$ des nächsten Mixes. Die Zufallszahl wird verworfen. Der erste Mix sendet folgendes an den zweiten Mix:
    ${\text{enc}}_{e_{2}}\left(Z_{2},A_{E},{\text{enc}}_{e_{E}}\left(m\right)\right)$
Dieser entschlüsselt wieder und verwirft die Zufallszahl. Dies kann beliebig fortgesetzt werden. Der letzte Mix erfährt die Adresse $A_{E}$ des Empfängers. Er sendet diesem dann ${\text{enc}}_{e_{E}}\left(m\right)$ zu. Der Empfänger kann die Nachricht mit seinem privaten Schlüssel $d_{E}$ entschlüsseln. Hat der Empfänger keinen öffentlichen Schlüssel, so muss die Nachricht vom letzten Mix zum Empfänger unverschlüsselt übertragen werden.
Allgemein verschlüsselt ein Sender, der anonym bleiben möchte, seine Nachricht rekursiv wie folgt:
    $m_{n+1}={\text{enc}}_{e_{E}}\left(m\right)$
    $m_{i}={\text{enc}}_{e_{i}}\left(Z_{i},A_{i+1},m_{i+1}\right){\text{ mit }}i=1,\dots ,n$

### Empfängeranonymität

Möchte ein Empfänger anonym erreichbar sein, so muss er zuerst den Sender darüber informieren, wie dieser Kontakt zu ihm aufnehmen soll. Diese Information bezeichnet man als anonyme Rückadresse. Der Sender erfährt nicht, welche Mixe der Empfänger für die Übertragung der Nachricht ausgewählt hat. Er kennt lediglich den ersten Mix. Nachdem der Empfänger eine Folge von Mixen gewählt hat, kann er dem Sender die anonyme Rückadresse zukommen lassen. Angenommen, der Empfänger wählt wie oben $S\rightarrow {\text{Mix}}_{1}\rightarrow {\text{Mix}}_{2}\rightarrow E$, dann schickt er an den Sender:
    $\left(k_{S},A_{1},{\text{enc}}_{e_{1}}\left(k_{1},A_{2},{\text{enc}}_{e_{2}}\left(k_{2},A_{E}\right)\right)\right)$
Die $k_{j}$ sind symmetrische Schlüssel, welche beim Senden der Nachricht, vom Sender zum Empfänger, von den Mixen für die Verschlüsselung verwendet werden können. Der Empfänger kennt diese Schlüssel. Er erhält ${\text{enc}}_{k_{2}}\left({\text{enc}}_{k_{1}}\left({\text{enc}}_{k_{S}}\left(m\right)\right)\right)$ und kann dies entschlüsseln. Die Verwendung asymmetrischer Schlüssel, wie im Fall der Senderanonymität ist hier nicht möglich, da der Sender in diesem Fall die Reihenfolge der Mixe nicht kennt.
Allgemein ist die anonyme Rückadresse $R_{S}$ also rekursiv wie folgt aufgebaut:
    $R_{n}={\text{enc}}_{e_{n}}\left(k_{n},A_{E}\right)$
    $R_{j}={\text{enc}}_{e_{j}}\left(k_{j},A_{j+1},R_{j+1}\right){\text{ mit }}j=1,\dots ,n-1$
    $R_{S}=\left(k_{S},A_{1},R_{1}\right)$
Die anonyme Rückadresse übermittelt der Empfänger mit Hilfe des Umkodierungsschemas für die Senderanonymität an den Sender. Es ist also
* der Empfänger der Nachricht gleich der Sender der anonymen Rückadresse und
* der Sender der Nachricht gleich der Empfänger der anonymen Rückadresse.
Die Bezeichnungen Sender und Empfänger beziehen sich hier immer auf die Nachricht. Der erste Mix ist immer der Mix auf der Seite des Senders, der letzte Mix hingegen der auf der Seite des Empfängers. Im Falle der zwei Mixe würde der Empfänger folgendes an den letzten Mix übermitteln:
    ${\text{enc}}_{e_{2}}\left(Z_{2},A_{1},{\text{enc}}_{e_{1}}\left(Z_{1},A_{S},{\text{enc}}_{e_{S}}\left(\underbrace {\left(k_{S},A_{1},{\text{enc}}_{e_{1}}\left(k_{1},A_{2},{\text{enc}}_{e_{2}}\left(k_{2},A_{E}\right)\right)\right)} _{\mathrm {anonyme\ R{\ddot {u}}ckadresse} }\right)\right)\right)$
Der Sender kennt nun $k_{S},\ A_{1}$ und $R_{1}$. Um die Nachricht $m$ an den Empfänger zu übertragen, sendet er folgendes an den ersten Mix:
    $\left(R_{1},{\text{enc}}_{k_{S}}\left(m\right)\right)$
Der erste Mix entschlüsselt
    $R_{1}={\text{enc}}_{e_{1}}\left(k_{1},A_{2},R_{2}\right)$
und erhält dadurch $k_{1},\ A_{2}$ und $R_{2}$. Er sendet
    $\left(R_{2},{\text{enc}}_{k_{1}}\left({\text{enc}}_{k_{S}}\left(m\right)\right)\right)$
an den Mix mit der Adresse $A_{2}$. Dies wird fortgesetzt, bis die Nachricht beim Empfänger eintrifft.
In diesem Fall brauchen keine Zufallszahlen mit verschlüsselt zu werden, da bereits die zufällig gewählten Schlüssel $k_{j}$ enthalten sind. Der Empfänger kennt die Schlüssel $k_{j}$, da er sie selbst gewählt hat. Er erhält, wie bereits beschrieben,
    ${\text{enc}}_{k_{2}}\left({\text{enc}}_{k_{1}}\left({\text{enc}}_{k_{S}}\left(m\right)\right)\right)$
und muss dies noch entschlüsseln.

### Sender- und Empfängeranonymität

Um die Anonymität auf beiden Seiten zu wahren, werden die Umkodierungsschemen für Sender- und Empfänger kombiniert. Ein Mix in der Mitte dient als Umlenkpunkt. Der Empfänger sendet diesem Mix mit Hilfe des Schemas für die Empfängeranonymität eine anonyme Rückadresse. Die anonyme Rückadresse wird von dem Mix zwischengespeichert, bis der Sender seine Nachricht gemäß dem Senderanonymitätsschema an diesen Mix sendet. Dieser übermittelt die Nachricht mit Hilfe der anonymen Rückadresse an den Empfänger. Um den Sender dazu aufzufordern eine Nachricht zu senden, könnte der Mix in der Mitte per Broadcast eine Anfrage an alle möglichen Sender verschicken.
In der Praxis werden die beschriebenen Schemen noch etwas komplizierter, da man auch für die Teile, in denen asymmetrische Kryptographie verwendet wird, schnellere symmetrische Verschlüsselung nutzen will. Die Lösung sind sogenannte hybride Kryptosysteme.

## Mix-Kanäle

Das beschriebene System ist hauptsächlich geeignet, um einzelne Nachrichten einer vorgegebenen Länge (Blöcke) zu versenden. Sollen längere Datenströme übermittelt werden, so erweitert man das Konzept der hybriden Verschlüsselung: Die zwischen den Mixen ausgetauschten symmetrischen Schlüssel werden nicht nur für die Verschlüsselung eines einzigen Blocks, sondern auch für alle nachfolgenden Blöcke verwendet. Soll ein Mix-Kanal zwischen Sender und Empfänger hergestellt werden, muss der Sender eine Kanalaufbaunachricht verschicken, welche die Aufgabe hat, die symmetrischen Schlüssel zwischen den Mixen zu verteilen. Nach Beendigung der Datenübertragung werden die Kanäle mit einer Kanalabbaunachricht wieder abgebaut. Dabei gibt es ein praktisches Problem: Die Kanäle müssen innerhalb einer Anonymitätsgruppe gleichzeitig aufgebaut und wieder abgebaut werden, da ein Beobachter des Netzwerkes sonst, anhand des Zeitpunktes des Kanalauf- oder -abbaus, sämtliche Mixe überbrücken könnte. Dieses Problem lässt sich umgehen, indem man einen Systemtakt einführt und bei jedem Takt alle Kanäle abbaut und bei Bedarf sofort wieder aufbaut (Zeitscheibenkanäle).

## Anwendungen

Innerhalb von Echtzeitsystemen, z. B. Tor oder JAP, die zum Surfen im Internet verwendet werden können, ergibt sich ein besonderes Problem: Das Sammeln von Nachrichten ist praktisch kaum durchführbar. Für ein Sammeln von Nachrichten von möglichst vielen Sendern müsste man entsprechend lange warten. Das widerspricht aber der Funktionalität dieser Systeme, die möglichst kurze Antwortzeiten anstreben. Dadurch wird der Sammel-Schritt bei dieser Art von Systemen ganz weggelassen oder extrem kurz gehalten. Dementsprechend entfällt weitgehend auch das Umsortieren der Nachrichten, da stets nur auf Einzelnachrichten oder sehr kleinen Nachrichtengruppen gearbeitet wird. Hieraus ergeben sich damit Einschränkungen der Sicherheit dieser Verfahren. Die Mixe sind für einen Angreifer mittels der oben bei den Einzelschritten genannten Methoden überbrückbar.
Auch das Löschen von Duplikaten, auch Replay-Erkennung genannt, wird bei Echtzeitsystemen oft nicht durchgeführt. Die Begründung liegt darin, dass für eine solche Erkennung eine Datenbank aller bereits verarbeiteter Nachrichten existieren muss. Selbst wenn hier nur Hashwerte von Nachrichten gespeichert werden, so wachsen diese Datenbanken trotzdem sehr schnell an. Neben dem erforderlichen Speicherplatz dauern auch Suchaktionen in diesen Datenbanken entsprechend lange und benötigen Rechenleistung. Zeitstempelverfahren können hier aber Abhilfe schaffen, so dass die Datenbanken immer nur für gewisse Zeiträume vorgehalten werden müssen. Trotzdem wird bei Echtzeitsystemen oftmals nur der Umkodierungsschritt durchgeführt. Damit sind diese Systeme entsprechend leicht angreifbar.

## Schutz vor dem Mixbetreiber

Neben dem Absender einer Nachricht kann natürlich auch der Mixbetreiber selbst eine Zuordnung zwischen sämtlichen Eingangs- und Ausgangsnachrichten durchführen, da sämtliche Schritte des Mixes für ihn transparent sind. Aus diesem Grund werden mehrere dieser Mixe hintereinander verwendet, welche von verschiedenen Betreibern gesteuert werden. Die Hoffnung dabei ist, dass diese verschiedenen Mixbetreiber dann nicht alle zusammenarbeiten. Ansonsten könnten sie gemeinsam ebenfalls sämtliche Nachrichtenbeziehungen aufdecken. Sobald bereits aber ein Mixbetreiber nicht kooperiert, ist die Anonymität sichergestellt.
Es haben sich zwei verschiedene Verfahren dafür etabliert: das auf freiem Routing basierende Onion-Routing und die Verwendung fester Mix-Kaskaden. Beide Verfahren unterscheiden sich bezüglich der zu Grunde liegenden Angreifermodelle. Deshalb sind sie besonders hinsichtlich des praktischen Schutzes der Anonymität schwer zu vergleichen.