Anonyma e-mail

Detta inlägget har sin grund i ett skolarbete jag skrev i gymnasiet i början av 2000-talet.

Debatten om FRA-lagen och massavlyssningen som den öppnar upp för har trolitvis inte undgått speciellt många. Att FRA skulle få möjlighet att avlyssna våra mejl gjorde många upprörda och att kryptera sina e-mail blev aktuellt, dock så sades det redan i ett tidigt skede att krypterad trafik inte var något problem för FRA.
Mark Klamberg m.fl. pekade i en debattartikel i DN bland annat på att det FRA skulle göra var sociogram, i grova drag diagram över vem som ”pratar” med vem. Mot denna typen av övervakning hjälper det inte att kryptera sina e-mail, eftersom innehållet är av underordnat intresse medan addressaterna är det intressanta.

Hur skyddar man sig mot detta?
Det finns naturligtvis flera sätt, där det mest effektiva är att helt enkelt sluta skicka e-mail. Ett mer realistiskt sätt är att anonymisera sina e-mail.
När jag skrev mitt ursprungliga arbete så fanns det en tjänst som erbjöd just anonyma e-mail-försändelser (ska kolla upp om den fortfarande finns). Tekniken som användes var egentligen ganska simpel, men det krävdes en del handpåläggning för att få det att fungera. Grunden var ett nätverk av mejlservrar (anon-servrar) som klarade av public-key krypterad trafik, som alla hade en publik nyckel för att dekryptera mejlheaders. För att förtydliga det hela så gör jag ett litet exempel där Adam vill skicka ett anonymt mejl till Bertil:

  1. Adam skriver sitt meddelande till Bertil
  2. Adam väljer ut ett antal anon-servrar, låt oss säga tre, som mejlet ska passera (vi kallar dem Sigurd, Tore, Urban).
  3. Han fortsätter med att bestämma i vilken ordning servrarna ska passeras (t.ex. Urban, Sigurd, Tore).
  4. Kedjan ser nu ut såhär: Adam->Urban->Sigurd->Tore->Bertil.
  5. Adam skapar nu mejlheaders (To: & From:) som för mejlet mellan Tore och Bertil och krypterar dessa och grundmejlet med Tore’s öppna nyckel.
  6. Han fortsätter att skapa headers som för mejlet från Sigurd till Tore och krypterar detta och föregående steg med Sigurds öppna nyckel.
  7. Därefter skapas headerfält från Urban till Sigurd, dessa och blocket från föregående steg krypteras med Urban’s publika nyckel.
  8. Slutligen så skapar han headers från sig själv till Urban och skickar ut mejlet på internet.
  9. När mejlet når Urban så dekrypterar servern det med sin publika nyckel och ser att det ska vidare till Sigurd.
  10. Samma sak sker i de två andra servrarna tills mejlet slutligen når Bertil som kan läsa det.

Tillsynes ett ganska enkelt system. Och för någon som är intresserad av vem Adam mejlar med finns det inte mycket att se eftersom det enda som skickas i klartext är steget mellan Adam om Urban respektive Tore och Bertil, således finns det inga spår som säger att Adam och Bertil kommunicerar med varandra. Detta är förutsatt att Adam inte har skrivit ut sin mejladress i mejlet eller satt en Reply-to med sin mejladress.

En nackdel med systemet är att om en av servrarna i ”molnet” skulle gå ner så kommer inte mejlet fram alls och ett felmeddelande (bounce) kommer sannolikt inte att nå Adam (om inte föregående server sparade att det bouncade mejlet kom från honom).

Tiden det tar för mejlet att komma fram till mottagaren ökar även för varje server som läggs till i kedjan.

Ytterligare en stor nackdel är att kommunikationen blir enkelriktad då hela systemet fallerar om Adam skriver sin mejladress i klartext eller i en Reply-to, eftersom en avlyssnare kan ser varifrån mejlet kommer lika enkelt som Bertil kan. Lösningen på detta skulle vara att Adam krypterar klartexten med Bertils publika nyckel och skriva ut sin mejladress i mejlet. Problemet här är att om Bertil inte använder anonservrarna av någon anledning så röjs kommunikationen mellan dem ändå.

Dock så vill jag minnas att det fanns en lösning på denna problematiken som gick ut på att Adam skapade ett mejlkonto på en speciell anonserver som sedan agerade gateway för ett svar från Bertil. Jag är inte helt säker på hur detta fungerade, men jag tror att det funkade något såhär:

  1. Adam har kontot ABCDEF på anongatewayen Xerxes och adressen ABCDEF@xerxes står i reply-to-headern i Bertils mejl, Xerxes har Adams riktiga mejladress och publika nyckel.
  2. Bertil författar sitt svar till Adam och skickar detta till ABCDEF@xerxes.
  3. Xerxes översätter ABCDEF till Adams riktiga mejladress och krypterar svaret med Adams publika nyckel.
  4. Därefter väljer Xerxes ut ett antal servrar och gör stegen från det föregående exemplet.
  5. Adam mottar det krypterade mejlet från den sista anonservern i kedjan och dekrypterar det med sin egen privata nyckel.

På detta sätt behålls anonymiteten mellan de båda och Bertil tillåts svara på Adams mejl, det enda som syns utåt är kommunikationen till gatewayen. Systemet erbjuder även skydd mot övertagna servrar i kedjan, då det enda servern kan ”se” är föregående server och nästa server i kedjan.

Nackdelarna lång tid och servrar som går ner kvarstår dock.
Tilläggas kan att det är ungefär på samma sätt som TOR-nätverket jobbar, med publika nycklar och uppsatta kedjor av ”routrar” som trafiken skuttar mellan.
Intressant?

Annonser

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s


%d bloggare gillar detta: