Mixe for Privacy and Anonymity in the Internet
|
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:
Dem Schlüsselaustauschprotokoll liegen dabei folgende Annahmen (auch bzgl. Angreifermodell) zugrunde:
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) |
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.
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 |
Mix | Nutzer | |||
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)\) |