Mixnätverk

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. 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

Förutsättningar 
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. Eftersom alla känner till alla publika nycklar skulle en angripare kunna observera ett meddelande  (meddelandet  krypterat med den publika nyckeln ) och kontrollera sin gissning  genom att testa om  för att bestämma meddelandets innehåll. Detta löses genom att lägga till en stor (hemlig) slumpmässig sträng  till meddelandet så att man sluter meddelandet: . Ä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 .

Skicka meddelande 
En avsändare  förbereder ett meddelande  till mottagare  genom att lägga till  och kryptera det med :s publika nyckel :

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

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

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

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

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

 får nu

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

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

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

Attacker mot mixar 
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. 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 

Kryptografi