Mixe for Privacy and Anonymity in the Internet
Schlüsselaustausch für symmetrische Verschlüsselung im ersten Mix — V 0.5

Ziel und Annahmen

Das bisherige Mix-Protokoll unterscheidet bzgl. der Verschlüsselung nicht zwischen ersten, mittleren und letzten Mixen. Die Aufbaunachricht für einen Kanal ist in jedem Fall asymmetrisch verschlüsselt.

Aus Performance-Sicht ist es natürlich sinnvoll, die Kanalaufbaunachrichten für den ersten Mix symmetrisch zu verschlüsseln. Der dafür notwendige Schlüsselaustausch (oder genauer: Geheimnistransport) soll beim Anmelden des Nutzers an der Mix-Kaskade erfolgen. Folgende Anforderungen soll das Schlüsselaustauschprotokoll erfüllen:

  1. Zwischen einem Nutzer U und dem ersten Mix soll ein Geheimnis ausgetauscht werden, das nur der Nutzer und der erste Mix kennen.
  2. Das Protokoll soll aus möglichst wenigen Nachrichten bestehen.
  3. Der Rechenaufwand für den Mix soll möglichst gering sein.
  4. Synchronität von Uhren oder Zählern etc. zwischen Nutzer und Mix soll keine Voraussetzung sein.
  5. Die erste Nachricht soll vom Mix zum Nutzer gesendet werden. Dem Nutzer können so zusätzliche Informationen übermittelt werden, die den weiteren Protokollablauf beeinflussen (Berücksichtigung von Unterschieden verschiedener Protokollversionen etc.)
  6. Um "Denial Of Service"-Angriffe nicht zu erleichtern, sollte diese erste Nachricht keinen signifikanten Ressourcenverbrauch (Rechenzeit, Speicher etc.) beim ersten Mix verursachen .

Dem Schlüsselaustauschprotokoll liegen dabei folgende Annahmen (auch bzgl. Angreifermodell) zugrunde:

  1. Der Nutzer kennt den öffentlichen Signatur-Testschlüssel tMix des ersten Mixes.
  2. Der Angreifer kann wie üblich alle Nachrichten abhören und verändern.
  3. Der Angreifer kennt nicht den geheimen Signatur-Schlüssel sMix des ersten Mixes.
  4. Der Angreifer kennt alle bisher ausgetauschten Geheimnisse.
  5. Der Angreifer kennt außer dem aktuell gültigen alle geheimen Entschlüsselungschlüssel des ersten Mixes.

Protokoll

Das Protokoll zum Transport eines Geheimnisses SEC vom Nutzer U zum ersten Mix besteht aus sechs Schritten, wobei bei drei Schritten Nachrichten übertragen werden. Der Ablauf ist wie folgt (alternative Darstellung siehe Abschnitt Protokoll für den Transport eines Geheimnisses vom Nutzer zum ersten Mix):

1.U: erzeugt Geheimnis SEC
2.Mix —> U: m1=cMix,SigMix(cMix)
3.U —> Mix: m2=EcMix(SEC)
4.Mix: überprüft ob DdMix(m)?=(.,true)
5.Mix —> U: m3=SigMix(m2)
6.U: überprüft ob m3?=SigMix(m2)
Remarks
Der Nutzer überprüft nach Erhalt von m3 die Signatur
(gemäß der Nachricht m2, die der Nutzer gesendet hat).

Die erste Nachricht dient zur Übermittlung des aktuell gültigen öffentlichen Verschlüsselungsschlüssels des ersten Mixes. Da diese Nachricht unabhängig vom Nutzer U ist, kann sie voraus berechnet werden (Erfüllung von Anforderung 6). Allerdings könnte es sich um einen Replay einer älteren Nachricht m'1 durch den Angreifer handeln. Gemäß Annahme 5 kennt der Angreifer in diesem Fall den zugehörigen Entschlüsselungsschlüssel.

Mit der zweiten Nachricht wird das Geheimnis an den Mix übermittelt.

Die dritte Nachricht dient dazu, die Aktualität des ausgetauschten Geheimnisses zu garantieren. Hat der Angreifer im ersten Schritt die Nachricht m1 durch eine ältere Nachricht m'1 ersetzt, so kann er die Nachricht m2 entschlüsseln und erfährt somit das Geheimnis. Allerdings muß er eine neue Nachricht m'2 mit dem aktuellen cMix erzeugen, damit der Mix sie akzeptiert (Schritt checkDec). Dies wird dann durch den Nutzer in Schritt 6 bemerkt, da der signierte Wert nicht dem berechneten entspricht.

Anhang

Algorithmen und Notation

Ec(m)Verschlüsselung von m mittels OAEP-RSA mit dem öffentlichen Schlüssel c
Dd(m)Entschlüsselung von m mit dem geheimen Schlüssel d; wobei entweder Dd(m)=(m,true) oder Dd(m)=(.,false)
SigMix(m)Signatur geleistet vom ersten Mix unter die Nachricht m

Protokoll für den Transport eines Geheimnisses vom Nutzer zum ersten Mix

MixNutzer

1.erzeugt Geheimnis SEC
2.\( m_1=c_\text{Mix},\mathop{\rm Sig}\nolimits_\text{Mix}(c_\text{Mix})\)
\(\overrightarrow{\hspace{5cm}}\)
3.\( m_2=\mathop{\rm E}\nolimits_{c_\text{Mix}}(\text{SEC})\)
\(\overleftarrow{\hspace{5cm}}\)
4.überprüft ob
\(\mathop{\rm D}\nolimits_{d_\text{Mix}}(m)\overset{?}{=}\left(\cdot,\text{true}\right)\)
5.\( m_3=\mathop{\rm Sig}\nolimits_\text{Mix}(m_2)\)
\(\overrightarrow{\hspace{5cm}}\)
6.überprüft ob
\( m_3\overset{?}{=}\mathop{\rm Sig}\nolimits_\text{Mix}(m_2)\)