1 Kerberos - helveteshunden med exportförbud Dennis Bergström 6770729 Bakgrund Kerberos, ursprungligen namnet på den trehövdade hunden som vaktade ingången till Hades mot inkräktare, är onekligen ett passande namn på ett säkerhetssystem. Kerberos systemet konstruerades vid MIT - Massachusetts Institute of Technology. På marknaden existerar ett flertal olika kommersiella varianter (och versioner!) av Kerberos; vissa av dessa är helt eller delvis baserade på MITs eget freeware Kerberos, medan andra enbart har namnet (och MITs ursprungliga Kerberosspecifikationer!) gemensamt med MIT Kerberos. I flera fall är dessa olika Kerberos varianter helt inkompatibla med varandra. I MIT Kerberos version 4 (och 5?) används den symmetriska DES algoritmen, som bekant är belagd med exportförbud från USA. Detta innebär att ett fullvärdigt MIT Kerberos inte finns tillgängligt utanför USA/Canada. (Huruvida samma regler gäller för de kommersiella varianterna framkommer inte ur litteraturen. Eftersom DSV verkar använda Kerberos oklart vilken variant/version - kan man nog misstänka att detta inte är fallet, eller att DSV använder eBones; se nedan!) För att lösa problemet med applikationer (utanför USA/Canada) som kräver Kerberos för att överhuvudtaget fungera, kan Kerberos omkompileras till en tandlös exportversion kallad Bones utan vare sig DES kryptering eller nämnvärd säkerhet. Användare utanför USA/Canada var/är givetvis missnöjda med detta Det existerar därför åtminstone en “hackad” version av Bones, kallad eBones, där programerare utanför USA/Canada “kodat tillbaka” DESalgortimen/erna och i praktiken alltså fått tillbaka USA/Canada varianten av Kerberos. Enligt Kerberos FAQ finns eBones tillgänglig via anonym FTP i bl.a Tyskland, Israel, Finland, Australien, Frankrike samt Sverige (!). Kerberos uppbyggnad Kerberos är ett autentiseringssystem som fungerar i distribuerade nätverk. Med Kerberos kan s.k. “intelligenta processer”, t.ex. client/server eller en användares arbetsstation och en värddator, kommunicera säkert utan fara för avlyssning eller s.k. replay attacks. Kerberos används oftast i applikationslagret, t.ex. TELNET och FTP, men i teorin skulle Kerberos även kunna användas i “lägre” lager för säker värd-till-värd (host-to-host) kommunikation. Om sådana system dock existerar i sinnevärlden är något oklart i litteraturen. Grunden i ett Kerberos system är en dedikerad s.k. Ticket Granting Server (TGS). En TGS utfärdar en ticket som är en krypterad datastruktur som innehåller dels information om en specifik användare och vad denna användare har rätt att göra, dels en tidsstämpel för att förhindra s.k. replay attacks. Förutom detta finns också en del kontroll information med i “biljetten”. (Vad denna kontrollinformation har för funktion framkommer inte i litteraturen). För att Kerberossystemet ska bli komplett behövs också en dedikerad Kerberos Server (KS) som en användare (eller process) först måste kontakta för ex. inloggning. 2 Kerberos användning Vid inloggning i ett Kerberos skyddad system skickas användarens identitet (user id) från användarens arbetsstation till KS. I KS finns alla användarnas lösenord lagrade. För att undvika att en användares lösenord avslöjas vid ev. avlyssning av nättrafiken skickas lösenordet i ett Kerberossystem aldrig över nätverket. (Kanske med undantag av de gånger som användaren ändrar sitt lösenord, eftersom användarens nya lösenord då måste sändas till Kerberosservern) KS slumpar fram en s.k. Sessionkey som användareb sebare kommer att använda vid kommunikationen med TGS. Sessionsnyckeln tillsammans med en “startticket” (mitt namnval!) DES-krypteras med användarens lösenord som nyckel och skickas tillbaka till användarens arbetsstation. En kopia av Sessionsnyckeln tillsammans med användarens identitet skickas samtidigt från KS till TGS krypterad under en nyckel som bara delas mellan dessa två. Om användaren är legitim och kan sitt lösenord kan han/hon dekryptera Sessionsnyckel/Startticket och blir inloggad i systemet. När användaren vill göra något i systemet, t.ex. öppna en fil, skickas en begäran om detta, krypterad med Sessionsnyckeln (som ursprungligen erhälls från KS) till TGS. TGS dekrypterar denna begäran (med en kopia av användarens Sessionsnyckel som TGS erhöll av KS när användaren loggade in) och returnerar dels en krypterad filserver ticket, dels en ny Sessionsnyckel (se nedan!) avsedd för användaren/Filservern. Den krypterade “biljetten” är krypterad under en nyckel som enbart TGS och Filservern “vet om”. Vare sig en inkräktare, eller användaren själv kan dekryptera denna ticket och alltså ej heller förfalska “biljetten”. “Filserver-biljetten” innehåller information om användarens identitet, vilken fil som användaren vill göra något med, vilka rättigheter för filen som användaren har, t.ex. läsrättighet, en tidsstämpel samt en Sessionsnyckel som används mellan Filservern och användaren (Om detta innebär att också filen blir krypterad mellan Filserven och användarens arbetststaion framgår inte riktigt av boken. Det bör dock förhålla sig på detta vis eftersom man använder ännu en Sessionsnyckel). Eftersom “Filserver-biljetten” är krypterad under en nyckel som användaren inte har tillgång till (se ovan!) måste “Filserver-sessionsnyckel” skickas till användaren “utanför” den krypterade “Filserver-biljetten”. Om “Filserversessionsnyckel” krypteras under den ursprungliga Sessionsnyckeln som användaren fick av KS framgår inte av boken. Att använda andra slags tjänster i systemet hanteras på liknande sätt. Fördelar/Nackdelar med Kerberos Det finns både för- och nackdelar med att använda Kerberos som säkerhetssystem i distribuerade nätverk: Nedan finns ett urval ur litteraturen av de för-/nackdelar som jag anser vara viktigast. Nackdelar För att Kerberos ska fungera måste både Kerberos servern och Ticket Granting Server alltid vara “on-line”. Om en eller båda servrarna av någon anledning slutar att fungera slutar också säkerhetssystemet att fungera. För att undvika s.k.replay-attacks tidsstämplas “biljetterna” i ett Kerberos system. Problemet är dock att sätta en optimal tidsgräns innan en ticket blir förverkad, för lång tidsgräns möjliggör försök till replay-attacks, för kort tidgräns kan omöjliggöra för en “långsam” användare att använda sina “biljetter” innan de blir förverkade. För att Kerberos ska fungera i distribuerade nätverk måste alla applikationer använda systemet för att säkerheten ska kunna fungera tillfredsställande. Enligt litteraturen stöder dock enbart ett fåtal applikationer Kerberos vilket kan ge problem i distibuerade miljöer med applikationer som inte stöder systemet. Kerberos’ design verkar vara avsedd för mindre distribuerade system, med en (1) Kerberos server och en (1) Ticket Granting Server. I större nätverk, där flera KS/TGS behövs kan det, enligt litteraturen, bli problem med dubbla krypteringsnycklar etc. 3 Fördelar Kerberos har givetvis inte bara nackdelar utan även en hel del fördelar (annars skulle nog inte systemet användas i någon större utsträckning!): Som tidigare nämnts skickas i princip aldrig en avändares lösenord över nätet utan används enbart som krypteringsnyckel till Sessionsnyckeln som användaren och TGS får från Kerberosservern. Varje access av service skyddas av kryptering, vilket garanterar att användaren verkligen är den han/hon utger sig för att vara. Varje “biljett” i Kerberos tidsstämplas för att undvika s.k. replay-attacks och brute-force attacks. Detta innebär att en biljett/ticket förverkas efter en viss specifik tidsperiod. Genom ett förfarande som kallas “dubbelriktad autentisering” kan en användare av en viss service (se t.ex. exemplet med Fileserven ovan!) försäkra sig om att den server som användaren kommunicerar med verkligen är det den utger sig för att vara. Genom att begära ett s.k. autentiseringssvar (authenticating response) från en server kan man (med en procedur som är något för komplicerad att återge här (!)) vara säker på att servern är det den utger sig för att vara. Referenser Computer Networks, Andrew S. Tannenbaum Third Edition, Prentice Hall International Editions Security in Computing, Charles P. Pleeger Second Edition, Prentice Hal International Editions Kerberos FAQ http://www.ov.com/misc/krb-faq.html