# Mixminion

Mixminion ist eine Software zum anonymen Versenden und Empfangen von digitalen Nachrichten (Remailer). Mixminion stellt gleichzeitig die Referenzumsetzung des Protokolls eines Typ-III Remailers dar und wurde in der Programmiersprache Python entwickelt. Zum Transport der Nachrichten wird ein Mix-Netzwerk verwendet.

## Allgemeine Informationen

Das Mixminion-Programm arbeitet als Server oder Client.
Endbenutzer verwenden den Mixminion-Client, um Nachrichten zu verschlüsseln und durch das Mixminion-Netzwerk an den Empfänger zu schicken. Mixminion-Server, d. h. die Knoten im Mix-Netzwerk, werden von Freiwilligen betrieben, nehmen Nachrichten an und reichen sie innerhalb des Netzwerks weiter, bis sie beim Empfänger angekommen sind.

## Grundsätzliche Funktionsweise

Jeder Knoten im Netzwerk besitzt ein Paket-Schlüsselpaar aus öffentlichem und geheimem Schlüssel und veröffentlicht den öffentlichen Schlüssel in einem zentralen Verzeichnis. In regelmäßigen Abständen wird ein neues Schlüsselpaar erzeugt und das alte vernichtet. Ein zusätzliches Identitäts-Schlüsselpaar, das nicht verändert wird, dient dazu, die gerade aktuellen Paket-Schlüssel des Knotens digital zu bestätigen.
Benutzer können sich von einem vertrauenswürdigen Verzeichnis die Daten und Schlüssel aller Knoten herunterladen und den Pfad einer Nachricht durch das Netzwerk von Knoten festlegen. Der Benutzer wählt (zufällig oder manuell) eine Reihe von Knoten aus und verschlüsselt die Nachricht der Reihe nach mit dem öffentlichen Schlüssel der Knoten, angefangen mit dem letzten Knoten der Reihe. Vereinfacht gesagt, wird die Nachricht zwiebelartig durch mehrere Lagen Verschlüsselung geschützt.
Jeder Knoten kann nun mit seinem eigenen Schlüssel die äußerste Verschlüsselung entfernen und die Nachricht an den nächsten Knoten weiterreichen. Für jeden Knoten ist lediglich sichtbar, woher die Nachricht kommt, und an wen sie weitergereicht wird. Erst der letzte Knoten in der Kette kann auf den tatsächlichen Inhalt der Nachricht zugreifen und die Nachricht an den tatsächlichen Empfänger zustellen.
Der erste Knoten in der Kette kennt also den Absender, der letzte Knoten in der Kette den Inhalt und den Empfänger – sinnvollerweise sollte es also mindestens zwei Knoten in der Kette geben. Je mehr Knoten verwendet werden, desto größer ist die Wahrscheinlichkeit, dass die beiden (bzw. drei, je nach Standpunkt) erwähnten Teilinformationen einander nicht zugeordnet werden können.
Alle Nachrichten haben zudem eine feste Länge von rund 32 KB. Größere Nachrichten werden in 32 KB große Blöcke aufgeteilt, kleinere Nachrichten werden auf diese Länge aufgefüllt. Diese feste Länge macht es unmöglich, Nachrichten innerhalb des Netzwerks anhand ihrer Größe zu identifizieren und zu verfolgen.

## Besonderheiten

Mixminion wurde entwickelt, um bekannte Schwachstellen bisheriger Protokolle zu vermeiden:
* Mixminion verwendet bewusst nicht das E-Mail-Nachrichtenformat nach RFC 2822, sondern implementiert ein eigenes Protokoll. Beim Betrieb eines Servers wird also nicht mehr auf die vorhandene Infrastruktur zurückgegriffen, um E-Mails zu senden und zu empfangen.
* Die Übertragung zwischen Knoten erfolgt verschlüsselt, d. h., ein Angreifer, der zusätzliche Nachrichten ins Netzwerk einspeist, kann auch seine eigenen Nachrichten nicht identifizieren und deren Weitertransport nicht beobachten.
* Die Rotation des Paket-Schlüssels für jeden Knoten findet automatisch statt, üblicherweise einmal pro Monat. Nach Ablauf dieser Zeitspanne werden die Paket-Schlüssel vom Knoten vernichtet, d. h., dass vorher abgefangene Nachrichten, die mit diesen Schlüsseln verschlüsselt wurden, nicht mehr zu entschlüsseln sind.

## Antworten an anonyme Absender

Mixminion gestattet darüber hinaus auch Antworten an anonyme Absender. Dies ist mit Mixmaster (Typ II) nicht möglich, Mixmaster verwendet hierfür, z. B. im Falle von Nym-Servern, noch Cypherpunk-Antwortblöcke (Typ I).
Es ist möglich, die Kopfdaten für eine Hälfte (die zweite Hälfte) des Pfades einer Nachricht im Voraus zu berechnen und als einmalig benutzbaren Antwortblock (Single Use Reply Block) an andere weiterzugeben. Bei der Benutzung ist nur die erste Station des Rückwegs sichtbar, aber keine weiteren Stationen oder gar die Zieladresse des Antwortblocks. Antwortblöcke haben ein Ablaufdatum und sind nur einmal benutzbar, bei einer Mehrfachverwendung werden spätere Nachrichten als Duplikate behandelt und bereits innerhalb des Netzwerks verworfen. Gleiches geschieht, falls ein Antwortblock nach seinem Ablaufdatum verwendet wird.
Die erste Hälfte des Pfads wird vom Antwortenden gesetzt, im Extremfall können so zwei gegenseitig anonyme Nutzer miteinander kommunizieren. Normale Nachrichten und Antworten, die mittels Antwortblöcken verschickt wurden, sind außerdem nicht voneinander unterscheidbar.

## Nym-Server

Die Arbeiten an der Referenz-Implementierung eines Typ-III-Nym-Servers namens „Nymbaron“ wurden eingestellt, nachdem veröffentlicht wurde, dass Antwortblock-basierte Nym-Server-Systeme grundsätzlich verwundbar gegenüber statistischen Angriffen sind. Diese Verwundbarkeit gilt auch für die existierenden Mixmaster- bzw. Cypherpunk-Nym-Server. Ein solchermaßen anfälliges Design sollte nicht erneut implementiert werden.

## Kritik

* Fehlende Funktionalität im Vergleich zu Mixmaster (Typ II): es werden beispielsweise noch keine Nachrichten an Usenet-Gruppen unterstützt. Es können allerdings Mail2News-Gateways benutzt werden. Es gibt zwar einen Patch, der Mixminion um Unterstützung für Newsgroups erweitert, dieser wurde aber nicht in den offiziellen Code integriert, so dass auch kaum Server Nachrichten an Usenet-Gruppen unterstützen.
* Es existiert ein zentrales Verzeichnis aller Knoten, das im Programmtext statisch hinterlegt ist. Fällt dieses Verzeichnis aus, ist Mixminion bis zur Anpassung des Programmtexts nicht mehr benutzbar. Ebenso ist ein einzelnes zentrales Verzeichnis je nach Standpunkt u. U. angreifbar oder nicht vertrauenswürdig.
* Mixminion befindet sich immer noch im Alpha-Stadium, d. h., es besteht insbesondere die Möglichkeit, dass sich noch Fehler im Code verbergen, die zum Verlust der Anonymität führen könnten.
* Zu Testzwecken arbeiten die beteiligten Server eventuell mit Einstellungen, die zwar Tests vereinfachen, aber auf Kosten der Anonymität gehen. Einige Server protokollieren ihren Betrieb ausführlich mit.
* Es gibt derzeit nur eine geringe Nutzerbasis. Ebenso nimmt die Anzahl der Server im Netzwerk seit Jahren stetig ab.
* Die weitere Entwicklung von Mixminion scheint vorerst eingeschlafen zu sein (keine Ereignisse mehr seit September 2007).