Kryptering på tillämpningsnivån

Kryptering på tillämpningsnivån är ofta att föredra framför kryptering på de lägre nivåerna, eftersom tillämpningen då har kontroll över trafiken hela vägen från klient till server och vice versa. Tillämpningen har också koll på vilka delar av trafiken som är extra känsliga (till exempel inloggning med lösenord).

Om man inte har kryptering på någon lägre nivå så har man inget val: om kryptering ska användas som skydd någonstans så måste det då ske på tillämpningsnivån.

Webb (SSL/TLS)

För att skydda webbtjänster från avlyssning och modifiering uppfanns standarden SSL (Secure Socket Layer). Den senaste versionen heter dock egentligen TLS (Transport Layer Security).

Det som händer när man kör HTTPS (säker webb) istället för HTTP är att SSL/TLS används mellan HTTP och de lägre nätlagren för att säkra förbindelsen. Själva HTTP-protokollet ändras inte.

Vid normal användning garanterar SSL/TLS två saker:

  • . att kommunikationen inte kan avlyssnas/modifieras på vägen

  • . att det är rätt server som klienten kopplat upp sig mot

Den andra punkten är viktig. Vad hjälper det mig att maffian inte kan avlyssna min trafik på vägen, om det lika väl kan vara så att det är maffians server jag pratar med, istället för min internetbank?

Det är för att garantera att det är rätt server som svarar som SSL/TLS använder sig av certifikat. Ett certifikat knyter ihop serverns nyckel med ett domännamn. Certifikatet som sådant är sedan garanterat med hjälp av ett rotcertifikat som din webbläsare vet att den ska lita på, antingen för att det levererades med webbläsaren eller för att du lagt in det manuellt.

Tyvärr är det väldigt lätt i alla populära webbläsare att ignorera de varningar som kommer ifall det är något galet med certifikaten.

Som påpekats ovan så fungerar SSL/TLS som ett lager mellan HTTP och de lägre nätskikten när man kör HTTPS. På samma sätt kan SSL/TLS användas för att säkra upp andra protokoll, t.ex. SMTP för epost-skickande, POP/IMAP för epost-hämtande, LDAP för katalogtjänster, med mera. Läs mer

Textbaserad inloggning (SSH)

När man loggar in på andra datorer (eller nätverksutrustning, skrivare med mera) för att kontrollera dem, använder man ofta "gammal hederlig textinloggning". Här finns det många äldre standarder som telnet och rlogin/rsh som skickar all data i klartext. Det innebär så klart att lösenord och liknande man loggar in med i början av sessionen kan avlyssnas, men också att allt annat man skriver och får tllbaka kan avlyssnas.

Numera är det vanligt att man använder SSH (Secure Shell) istället för de äldre okrypterade standarderna. SSH krypterar förbindelsen så att ingen på vägen kan avlyssna eller modifiera den.

SSH använder inte certifikat (som SSL/TLS) för att garantera att det är rätt server man pratar med. Istället lär den sig nyckel-identiteten för servern första gången man pratar med den, och kontrollerar varje kommande gång att det är samma nyckel som servern använder. Vill man vara extra säker, kan man manuellt verifiera nyckeln första gången man kopplar upp sig.

Den populäraste SSH-programvaran nuförtiden är OpenSSH. Läs mer

Grafisk inloggning

I Unix/Linux-miljö används ofta fönstersystemet X. Det klarar från början att köra program på en dator och visa fönster/ta hand om användarinmatning på en annan dator, genom att information om vad som sker i fönster, knapptryckningar, musrörelser osv skickas över nätet. Tyvärr sänds informationen i klartext och kan avlyssnas och/eller modifieras. SSH (se ovan) innehåller bra stöd för att "tunnla" X-trafik tillsammans med "textinloggningen", så det vanligaste sättet att köra X på säkert sätt numera är att använda den funktionaliteten.

I Windows-miljö används ofta RDP (Remote Desktop) för fjärråtkomst av servrar, att ta över användares datorer för att ge hjälp, för att bygga lösningar med tunna klienter, osv. RDP har kryptering, men det gäller att se till att den används.

Traditionellt sett har RDP inte haft någon kontroll av att man pratar med rätt server (se avsnitten om SSL/TLS och SSH ovan). I Windows 2003 finns möjlighet att använda SSL/TLS och därmed få detta "på köpet").

FIXME: Någon mera Windows-insatt behöver kontrollera det jag skrivit om RDP ovan.

Citrix är ett annat system för tunna klienter och liknande tillämpningar. Här finns kryptering, men det kan behöva kontrolleras att den är aktiverad och inte för svag för dagens situation (t.ex. 40 bitar).

FIXME: Någon som grävt ner sig mer i Citrix som har något att tillföra?

VNC (Virtual Network Computing) är populärt för fjärrstyrning av dator, tack vare att både klienter och servrar finns för olika operativsystem. Tradionellt är VNC-trafiken okrypterad och behöver tunnlas (t.ex. via SSH) för att säkras, men nya klienter och servrar kan ha inbyggd kryptering. Här gäller det att kontrollera vad man använder.

FIXME: Skriva något om SunRay? Filåtkomst

De flesta standarder för filåtkomst som används (t.ex. SMB för Windows, NFS för Unix/Linux) har ingen kryptering av datainnehållet som överförs.

FIXME: Säga något mera här?

Epost (OpenPGP och S/MIME)

För att skicka och ta emot säker epost gäller det att breven skyddas hela vägen från avsändare till mottagare.

Kryptering kan först och främst användas för att skydda innehållet mot obehörig läsning. Meddelandet krypteras så att bara mottagaren kan avkryptera det och ta del av innehållet.

Kryptoteknik kan också användas för signering, så att mottagaren får en bekräftelse på att brevet kommer från rätt avsändare och inte har förvanskats på vägen. Kryptering och signering kan användas ihop.

Två olika standarder används i praktiken för epost-kryptering/signering:

OpenPGP är från början tänkt för en distribuerad säkerhetsmodell, där användare A som känner användare B intygar att användare B är OK, osv. Man pratar om "web of trust", och så kallade nyckelservrar finns tillgängliga för att ladda hem andras publika nycklar inklusive de signaturer de fått av andra som litar på dem.

S/MIME bygger på en mera centraliserad säkerhetsmodell, där användarna förutsätt ha certifikat (liknande de som används för SSL/TLS) utfärdade av en betrodd instans. Läs mer

Kerberos

Kerberos är ett system för autentisering av användare. Man loggar in en gång, och slipper sedan ange användarnamn och lösenord för varje (Kerberos-anpassad) tjänst man ska komma åt.

Vanlig textinloggning via telnet är ett exempel på en tjänst som kan vara Kerberos-anpassad. Förutom inloggning via Kerberos-systemet, så kan man då få kryptering av förbindelsen också, men man måste begära det vid uppkopplingen. Samma sak gäller för en rad andra Kerberos-anpassade tjänster. Numera använder sig även Microsoft Windows av Kerberos för autenticering.

http://web.mit.edu/kerberos/www/

http://www.pdc.kth.se/heimdal/


IT-säkerhetshandboken | Utskriftsvänlig sida | Kontakt