Mixnätverk

Från Wikipedia
Hoppa till: navigering, sök

Mixnätverk (även kallat Digitala mixar eller Chaum-mixar) är ett koncept för anonym kommunikation som först introducerades av David Chaum på 80-talet[1]. I sin enklaste form fungerar mixar som proxyservrar som tar emot meddelande och vidarebefordrar dessa på ett anonymiserat sätt. Mixar är höglatens-system, d.v.s. meddelande kommer in till mixen men inget lämnar switchen individuellt utan meddelande klumpas ihop och skickas vid en senare tidpunkt än vad de kom in för att angripare inte ska kunna observer in- och utgående meddelande och med hjälp av timing-attacker bestämma vem som skickade vilket meddelande.

Beskrivning[redigera | redigera wikitext]

Förutsättningar[redigera | redigera wikitext]

Alla parter i kommunikationen (mixar, sändare och mottagare) har ett publikt och privat nyckelpar och det antas att alla känner till de andra parternas publika nyckel. En angripare antas kunna observera alla meddelande som går in och ut från mixen samt kunna införa, ta bort och modifiera meddelande.

Chaum inför ett koncept som kallas att sluta ett meddelande med en nyckel[1]. Eftersom alla känner till alla publika nycklar skulle en angripare kunna observera ett meddelande K(M) (meddelandet M krypterat med den publika nyckeln K) och kontrollera sin gissning M' genom att testa om K(M') = K(M) för att bestämma meddelandets innehåll. Detta löses genom att lägga till en stor (hemlig) slumpmässig sträng R till meddelandet så att man sluter meddelandet: K(R,M). Även om angriparen skulle gissa rätt så får han inte reda på det eftersom han inte vet den hemliga slumpmässiga strängen R.

Skicka meddelande[redigera | redigera wikitext]

En avsändare A förbereder ett meddelande M till mottagare B genom att lägga till R_0 och kryptera det med B:s publika nyckel K_B:

K_B(R_0 , M)

Han lägger sedan till ännu en slumpsträng R_1 och B:s adress och krypterar det med mixens publika nyckel K_1:

K_1(R_1 , K_B(R_0 , M), B)

Detta meddelande skickas till mixen som tar emot det och dekrypterar med sin privata nyckel och plockar bort den slumpmässiga strängen R_1 :

K_B(R_0 , M), B

Mixen vet nu att meddelandet ska till B (men kan inte läsa dess innehåll) och kan vidarebefordra K_B(R_0 , M) till B som kan dekryptera det med sin privata nyckel och läsa meddelandet.

Returnera meddelande[redigera | redigera wikitext]

Den ovan beskrivna metoden fungerar bara åt ett håll: B vet endast att han fått ett meddelande via mixen men inte från vem. Vad som vill uppnår är att B ska kunna svara A utan att A:s identitet avslöjas. En lösning som föreslås av Chaum[1] är att A skapar en ospårbar returadress av formen:

K_1(R_0 , A), K_x

Där A är A:s riktiga returadress (sluten med mixens publika nyckel) och K_x är en temporär publik nyckel som endast används för detta tillfälle. Denna temporära returadress kan nu skickas till B som en del av meddelandet på samma sätt som beskrevs innan:

K_1(R_2 , K_B(R_1 , M_1 , K_1(R_0 , A), K_x), B)

B får nu

K_B(R_1 , M_1 , K_1(R_0 , A), K_x)

som han kan dekryptera för att läsa meddelandet och se vilken publik nyckel han ska kryptera sitt svar med. När B ska svara till A gör han det genom att skicka följande till mixen:

K_1(R_0 , A), K_x(R_1 , M_2 )

Mixen tar emot det, dekrypterar den första delen med sin privata nyckel och ser att det är ett meddelande till A (men kan fortfarande inte läsa innehållet). Om mixen bara skulle vidarebefordra K_x(R_0 , M_2) så skulle en angripare kunna observera detta krypterade meddelande på båda sidorna av mixen och få reda på att A och B kommunicerat. Istället använder mixen R_2 som nyckel för att kryptera meddelandet när det är på väg till A:

A, R_0(K_x(R_1 , M_2 ))

Eftersom A även känner till R_0 kan han nu dekryptera meddelandet och läsa B:s svar.

En bild av två parter som kommunicerar genom en mix.

Attacker mot mixar[redigera | redigera wikitext]

Så kallade replay attacker skulle kunna bryta anonymiteten som en mix tillhandahåller. Om en angripare skulle skicka in ett meddelande som skickats tidigare och observera vem som får två identiska meddelande så får han reda på vem som kommunicerat med vem. Två lösningar som Chaum nämner är baserat på tidstämplar samt att spara hashvärden[1]. Att skicka med tidstämplar i meddelande gör att mixen kan kontrollera om meddelandet är nytt eller gammalt (eftersom angriparen inte kan ändra tidstämpeln i meddelandet när det väl är krypterat med mixens publika nyckel). Att spara en hash av alla meddelande löser också problemet men kräver att mixen kan lagra alla hashvärden vilket kan bli många om mixen är populär.

Anonymiteten bygger på att mixen antas vara ärlig. Det är dock enkelt att lösa detta genom att utöka protokollet så att man använder en kaskad av mixar. För att vara anonym i detta scenario räcker det med att en av de mixar man valt är ärlig och går att lita på för att man ska förbli anonym.

Referenser[redigera | redigera wikitext]

  1. ^ [a b c d] David Chaum, Untracable electronic mail, return addresses, and digital pseudonyms, Comm. ACM, 24, 2 (Feb. 1981); 84-90