Jag tänkte börja med en genomgång av epostsäkerhet eftersom det är det jag jobbar med.
Grundläggande säkerhet
För att komma åt sin epost på mailservern så måste man authentifiera sig. Detta gör man med ett lösenord eller (mer ovanligt) med någon annan form av hemlighet, t.ex. ett certifikat. Det viktigaste är att lösenordet är och förblir hemligt, annars kan ju vem som hellst logga in och läsa/radera din epost. Förutom det uppenbara att inte skriva ner det eller tala om det för kompisen/flickvännen/pojkvännen/whatever så behöver man även se till att det inte kan snappas upp på vägen mellan din dator och servern. Detta gör man genom att se till så att förbindelsen med servern är krypterad.
Asymertrisk kryptering
Det finns huvudsakligen två metoder att kryptera en klient-server förbindelse; SSL (Socket Security Layer) och TLS (Transport Layer Security). Båda bygger på asymetrisk kryptering med en publik och en hemlig nyckel. Servern skickar dig den publika nyckeln så att du kan kryptera och behåller den hemliga nyckeln som behövs för dekryptering. Detta har ju den uppenbara nackdelen att kommunikationen blir enkelriktad; Du kan skicka krypterad data till servern, men den kan inte svara eftersom du inte kan dekryptera utan den hemliga nyckeln. Detta löser man genom att din dator slumpar fram en symetrisk sessionsnyckel som den skickar till servern. Denna nyckel används sedan av båda parter för att både kryptera och dekryptera den fortsatta förbindelsen. Sessionsnyckeln slängs sedan när du loggar ut.
Ömsesidig authentifiering
Men, även om förbindelsen är krypterad, hur vet jag att det verkligen är min mailserver jag pratar med? Någon kan ju ha kopplat in sig i mitten och skickar mig sin egen publika nyckel. Hur vet jag att det är rätt nyckel jag får från servern?
Jo, den publika nyckeln ingår i något som kallas för ett certifikat som dessutom innehåller en signering som bara kan skapas med den hemliga nyckeln. Visserligen kan man signera sitt eget certifikat med sin egen hemliga nyckel (det kallas för ett självsignerat certifikat), men det är det ingen större vits med eftersom den inte garanterar något annat än att utfärdaren har den hemliga nyckeln. Poängen är att certifikatet ska vara signerat av någon som båda parter litar på. En Ceritificate Authority. Företag som Thawte och Verisign tar betalt för att signera certifikat och de ser också till att certifikatet lämnas ut till rätt person/organisation. Hela deras affärsidé bygger på det.
Kryptering mellan slutanvändare
Allt jag har skrivit ovan gäller bara för kommunikation mellan din dator och mailservern. Men innan mailet hamnade på din mailserver så har det antagligen bollats fram och tillbaka mellan ett antal olika servrar. Dessa förbindelser är oftast inte krypterade. Dessutom så lagras ju mailet i klartext på servern, så om man ska skicka hemligheter till varandra med epost så måste man vidta fler åtgärder.
Genom att använda PGP så kan man skapa sig ett alldeles eget publikt/hemligt nyckelpar. Den publika delen laddar med sedan upp på en nyckelserver så att andra kan komma åt den. Om någon sedan vill skicka något känsligt mail till mig så laddar han/hon ner min publika nyckel från nyckelservern och krypterar mailet med den. Efter det så är det bara jag som kan dekryptera brevet. Även om någon skulle komma åt min privata nyckel så kan denne inte använda den utan att känna till lösenordet som den är krypterat med.
Fingeravtryck och pålitlighetsnät
Det finns inga Ceritificate Authorities för PGP. I stället använder man sig av den publika nyckels fingeravtryck. Det är en sträng om 40 tecken som är känneteckande för just den nyckeln. Om Kalle vill skicka ett krypterat mail till mig, men inte vet ifall nyckeln han har fått tag på verkligen är mig så kan han ringa mig och fråga "Är det här ditt PGP-fingeravtryck?". Jag kan också ha mitt PGP-fingeravtryck på mitt visitkort som jag ger honom när vi träffas.
När Kalle väl är säker på att det är min publika nyckel han har fått tag på, då kan han signera den med sin privata nyckel och skicka den till mig. Då blir jag glad, för då har min nyckel blivit mer värd. Då vet inte bara de som personligen har verifierat min nyckel, utan även Kalles kompisar att det verkligen är min nyckel. Då ingår jag i ett pålitlighetsnät.
Hur gör man?
Hur man gör för att kryptera förbindelsen mellan sitt epostprogram och sin mailserver är granska rättframt. Man går in under inställningarna i vilket mailprogram man nu använder och kryssar för att man vill använda SSL eller TLS. Använder man SSL så måste man också ändra portnumren för epostprotokollet. Om man kör IMAP så är det port 993 i stället för 143. Om man kör POP3 så är det port 995 i stället för 110. Har man tur så kan man även få till en krypterad förbindelse för utgående post (SMTP). Då är det port 465 i stället för 25 som gäller. Kör man TLS så behöver man inte byta portnummer.
Vill man använda PGP så är det lite mer avancerat. På Unix/Linux eller modern MacOS X använder man programmet GPG (Gnu Privacy Guard).
CODE
gpg --gen-key
Genererar ett nytt nyckelpar. Den kommer att fråga vad man heter, vad man har för mailadress, hur länge nyckeln ska vara giltig osv.
CODE
gpg -a --export mail@dress
Nu får man fram sin publika nyckel i ASCII-format (kallas för nyckelblock). Det är den här man ska ladda upp på t.ex. keyserver.pgp.com
Om någon vill hämta min publika nyckel så är det så här man skriver
CODE
gpg --search-keys eskil@kth.se
PGP har en stor nackdel: Om man tappar bort sin privata nyckel är man kokt i bajs. Då kan man inte signera någon revocation request som nyckelservrarna kräver för att ta bort den publika nyckeln och man kan inte heller dekryptera de krypterade meddelanden man får från folk som tror att nyckeln fortfarande fungerar.
