Datagram

Synnerligen intressant om Datagram


Autentisering

Autentisering har två betydelser. Svenska datatermgruppen rekommenderar begreppet autentisering i det första fallet, och meddelandeverifiering i det andra. Autentisering innebär att kunna visa sin identitet för någon annan. Som människor har vi inget problem med det i vardagen då vi kan autentisera oss på många olika sätt. Vi känner till exempel igen varandras röster på telefon, eller varandras ansikten när vi träffas. Det finns även olika kontor som kollar oss genom bilden på vårt pass/id. När man kommunicerar över ett nätverk kan man inte förlita sig på till exempel visuellt beteende eller en ljudinspelning. Det är vanligt att nätverkselement såsom routrar, servrar och klientprocesser måste autentisera varandra. Autentisering måste i sådana fall uteslutande ske med hjälp av protokoll. Protokollet måste köras innan några andra protokoll körs mellan parterna. Dessa protokoll kallas för ap (autentiseringsprotokoll). Det här är kanske allra enklaste protokollet. En sändare A säger till en mottagare B att jag är A. Det finns inget sätt som B kan veta att A verkligen är A. Det innebär att vem som helst egentligen kan uppge sig för att vara avsändare A. Om sändare A har en välkänd ip-adress som A alltid kommunicerar ifrån kan mottagare B autentisera A genom att ta reda på sändarens adress i IP-datagrammet och kontrollera att det är A:s välkända adress. Det är säkrare än ap 1.0 men fortfarande inte helt säkert. Om någon har tillgång till källkoden för ett operativsystem såsom linux och kan bygga sin egen kärna för att skapa ett IP-datagram, så kan man sätta dit vilken ip-adress man vill, till exempel A:s adress. Det här är en välkänd säkerhetsattack och kan undvikas om upphovsroutern från personen som försöker förfalska ip-adressen är konfigurerad, så att den bara skickar vidare datagram innehållande ip-adressen för personer som är direkt uppkopplade mot den routern. Våra klassiska sätt att autentisera oss är genom lösenord. Vi har till exempel lösenord för att logga in på operativsystemet eller för automatiska telefonsvarare. Lösenordet delas mellan autentiseraren och personen som blir autentiserad. I det här protokollet så sänder A ett lösenord till mottagare B. Lösenord är ju vanligt använt och man kan tro att det här protokollet är relativt säkert. Det är fel, då en utomstående person kan tjuvlyssna på A:s och B:s kommunikation och lära sig A:s lösenord. Om man till exempel kör telnet mot en annan maskin och loggar in okryptat på telnet-servern, så kan någon sniffa upp paketen som skickas och ta reda på lösenordet. Det här är ett ganska vanligt tillvägagångssätt för att ta reda på lösenord. Det här är en utökning av ap 3.0 då man krypterar lösenordet. På så sätt kan man förhindra att någon kan sniffa upp data för en kommunikation mellan två parter för att ta reda på lösenordet. Ifall man antar att avsändare A och mottagare B delar en hemlig symmetrisk nyckel. Då kan sändare A kryptera sitt lösenord och skicka ett identifieringsmeddelande innehållande lösenordet till mottagare B. Mottagare B avkodar meddelandet och ser vilket lösenord avsändare A använder. Användningen av kryptografi löser dock inte hela autentiseringsproblemet. B kan bli mål för en uppspelningsattack. För en inkräktare behöver bara tjuvlyssna på A:s kommunikation och spara det krypterade lösenordet. Sedan kan inkräktaren spela upp det krypterade lösenordet för B som då tror att inkräktaren är sändaren A. Problemet med det föregående protokollet ap 3.0 är att samma lösenord använts om och om igen. En lösning vore att använda ett nytt lösenord varje gång. Sändaren A och mottagaren B kan tillsammans göra upp om en sekvens av lösenord eller genom att använda sig av en algoritm för att generera lösenord, för att sedan använda varje lösenord endast en gång. Det finns mera generella tillvägagångssätt för att motverka uppspelningsattacker. A sänder ett identifieringsmeddelande till mottagare B.