Identifiering och autentisering Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT)
Identitet Entity Något som existerar, t.ex. en person eller ett företag. Principal En unik entity. Identity En identity identifierar en principal, t.ex. ett namn. Vi skriver en identity som definierar en unik entity en principal. Personnamn är inget bra identity, eftersom samma namn kan referera till flera entiteter: Det finns fler som heter Marcus Bendtsen. Detta löses genom att principals binds till unika identiteter: Personnummer Social security number Unikt id på Facebook DNS-namn: www.liu.se Sökvägar /home/marbe800/file 2
Autentisering Subjekt agerar åt en extern entitet. Ett program körs åt en användare. Vem/vad denna externa entitet är avgör vad subjektet har rätt att göra. Programmet kanske får eller inte får ta bort filer beroende på den externa entiteten. marbe800 är inloggad på Solaris, kör subjektet ls, subjektet kan bara lista filer i de mappar där marbe800 har rättigheter. Autentisering händer när en identitet binder sig till ett subjekt. En viss entity, t.ex. Marcus Bendtsen, binder sin identitet (marbe800) till ett visst subjekt (t.ex. ett Python program). 3
Autentisering För att kunna binda sin identitet (marbe800) till ett subjekt, så måste entiteten bevisa/verifiera att den verkligen är den principal den utgör sig för att vara. Entiteten måste tillhandahålla någon information, eller utföra en operation. Olika former av verifiering: Något entiteten vet (lösenord, hemlig nyckel) Något entiteten har (passerkort, smartcard) Något entiteten är (fingeravtryck, DNA) Var entiteten är (GPS-koordinat, viss dator) 4
5 SOMETHING YOU KNOW
Lösenord En bestämd sekvens av tecken Vanligtvis 8-10 tecken Kan vara valt av användaren Kan vara slumpmässigt Kan vara en blandning av båda Sekvens av ord (eng. passphrase) The quick brown fox All makt åt 6
Lagring av lösenord Lagring i klartext: Risk att alla lösenord avslöjas om någon får tag i filen där lösenorden lagras. Krypterad lagring: Innebär att vi måste ha en hemlig nyckel i minnet, vilket innebär samma problem som med klartext. Lagring av en hash av lösenordet: Lösenorden kan inte avslöjas trivialt. Man kan fortfarande verifiera att ett givet lösenord är korrekt. 7
Attacker på lösenord Uttömmande prövning av lösenord: On-line: förebyggs genom att begränsa antalet försök. Off-line: förebyggs genom val av lösenord. Dictionary attack: Guessing of a password by repeated trial and error. Man testar helt enkelt alla tänkbara lösenord, men man börjar med vanliga lösenord samt riktiga ord från en ordbok (eng. dictionary). 8
Val av lösenord Användare väljer dåliga lösenord Lösenord baserade på namn av olika slag. Varianter av ord som finns i ordlistor. Korta lösenord, enbart bokstäver eller siffror. Registreringsnummer, personnummer, förkortningar. Personliga egenskaper eller associationer. 9
Val av lösenord Användare väljer dåliga lösenord Lösenord baserade på namn av olika slag. Varianter av ord som finns i ordlistor. Korta lösenord, enbart bokstäver eller siffror. Registreringsnummer, personnummer, förkortningar. Personliga egenskaper eller associationer. I changed all my passwords to "incorrect", So whenever I forget, it will tell me "Your password is incorrect." 10
Lista på dåliga lösenord 2014 Listan är framtagen genom att man analyserat över 3,3 miljoner läckta lösenord under året (2014). 1. 123456 2. password 3. 12345 4. 12345678 5. qwerty 6. 123456789 7. 1234 8. baseball 9. dragon 10. football 11. 1234567 12. monkey 13. letmein 14. abc123 15. 111111 16. mustang 17. access 18. shadow 19. master 20. michael 21. superman 22. 696969 23. 123123 24. batman 25. trustno1 11
Lista på dåliga lösenord 2015 https://www.skyhighnetworks.com/cloud-security-blog/you-wont-believe-the-20-most-popular-cloud-service-passwords/ 12
Välja och generera lösenord Bra sätt att själv hitta på ett starkt lösenord Första/andra bokstaven i varje ord i en fras. Kombinationen av bokstäver/tecken från flera källor. Slumpmässiga lösenord Svåra att komma ihåg (K4SAv4Pe, Trus8e8R, CaThe9at). Användare tenderar att skriva upp de. Lösenord som går att uttala Generera en lång nyckel. Transformera till uttalbart ord. Exempel: bandeplast, redaingerm, cuccroffee 13
Kontroll av lösenord Kontroll av egenskaper för lösenord (när användaren valt själv): Lösenordets längd (typiskt 8-10). Stora och små bokstäver. Bokstäver och siffror. Specialtecken. Proaktiv lösenordstestning: Testning av lösenord mot ordlista. När man väljer lösenord till användare i Linux blir man i vissa distros varnad att man valt ett ord som finns i ordlistor. Testning av lösenord mot format av registreringsskyltar, födelsedatum, etc. 14
15 SOMETHING YOU HAVE
Challenge-Response Validera identiteten genom att utföra en operation som bara den angivna identiteten kan genomföra. Exempel: U vill identifiera sig själv till systemet S. U och S har redan kommit överrens om en hemlig funktion f. S skickar ett slumpat meddelande m till U, och U svarar med en transformation r = f(m). S validerar r genom att beräkna r själv. U Begäran om autenticering S U U Meddelande m (challange) Meddelande r = f(m) (response) S S Det är f som är hemlig i detta system, inte meddelandena i sig. 16
Engångslösenord Lösenord som kan användas en gång. Efter användning så blir lösenordet ogiltigt. Challenge-response: Kan ses som ett system som använder engångslösenord (samma meddelande skickas aldrig fram och tillbaka). Utmaningar: Synkronisering av användare och system. Generering av bra lösenord. Distribution av lösenorden. 17
Engångslösenord med hårdvarustöd Token-baserade Kan vara challenge-response baserade (bankdosor) Banken skickar några siffror till dig, du matar in de in i din dosa, och svarar med dosans svar (du är den enda som kan beräkna detta). Tidsbaserade Engångslösenordet ändras med jämna mellanrum. Datorn vet vilket som är giltigt vid en viss tid. Användaren matar in vanligt lösenord och engångslösenord. T.ex. RSA SecurID, Google Authenticator 18
19 SOMETHING YOU ARE
Biometrisk autentisering Automatisk mätning av en egenskap eller beteende. Fingeravtryck Översätter fingeravtryck till (t.ex.) en graf. Approximativ jämförelse av grafer. Röstigenkänning/verifiering Verifiering använda statistiska metoder för att testa hypotesen att det är den angivna entiteten som talar (speaker-dependent). Igenkänning analysera innehållet i det talade meddelandet (speaker-independent). 20
Biometrisk autentisering Ögon Analys av irismönster. Analys av retina. Kroppsgeometri Ansiktsigenkänning/ansiktsstruktur Handgeometri Helkroppsgeometri Dynamik Intervall mellan tangenttryckningar, tryckningarnas längd, mm. Handskriftsigenkänning hastighet, nedsättning, utseende. 21
Risker med biometri Det går att lura en del utrustning: Fingeravtryck har varit särskilt enkelt. Bildbaserade tekniker kan luras av reproduktioner. Felfrekvenserna kan vara höga: Röstigenkänning påverkas av sjukdom. Fingeravtryck kan ändras av skador. Ljussättning kan påverka ansiktsigenkänning. Kan vara direkt farligt om man inte kommer åt kritiska system 22
23 SOMEWHERE YOU ARE
Positions autentisering Autentisering kan baseras på position. Position kan vara en del av en autentiseringsmetod. Exempel Inloggning vid en terminal i ett skyddat rum kan ge särskild access till ett visst system. Det faktum att du har fysisk tillgång till en viss dator ger dig rättigheter. Verifiera att entitetens GPS-koordinater matchar terminalen som användaren försöker logga in på. 24
Flerfaktorautentisering Autentisering med flera faktorer: Något man vet lösenord tillsammans med något man är fingeravtryck tillsammans med var man är vid systemet som försöker autentisera. Flerfaktorautentisering minskar riskerna Förlust av en faktor leder inte till säkerhetsproblem. 25
26 AUTENTISERING AV PUBLIKA NYCKLAR
Nyckelutbyte med RSA A vill kommunicera säkert med B A ber B skicka sin publika nyckel B skickar sin publika nyckel, men C plockar upp den C skickar sin publika nyckel till A A krypterar med Cs publika nyckel (tror att det är Bs) C dekrypterar, sparar undan data, krypterar med Bs publika nyckel, skickar till B A och B märker inte att C sitter och lyssnar på all trafik Man-in-the-middle 27
Verifiering av nycklar På något sätt måste A kunna fråga någon om den nyckel som A tror är Bs publika nyckel verkligen är det. Med andra ord: Vi måste binda en identitet med en nyckel, annars kan vi inte vet att vi pratar med rätt identitet. I allmänhet används certifikat för detta. Vi räknar med att det finns utgivare av certifikat, dvs det finns någon som kan verifiera certifikat. 28
Certifikat Ett certifikat är ett meddelande som innehåller (i normala fall): En identitet (ett namn). Nyckeln som är bunden till identiteten. Vad nyckeln får användas till. Tiden då certifikatet är giltigt. Identiteten för certifikatets utgivare. En digital signatur över hela certifikatet. X.509 är en standard för public key infrastructure (PKI), bland annat specificeras exakt hur ett public key certificate ska se ut. 29
X.509 certifikat Vanligaste formen av certifikat (används för SSL/TLS) Version certifikatformatets version Serial number unik (per utgivare) identitet Signature value utgivarens signatur på certifikatet (krypterad hash av vissa fält i certifikatet) Signature algorithm algoritm som använts i signaturen samt vilka parametrar som ingick i signeringen Issuer certifikatets utgivare ( certification authority eller CA) Validity certifikatets giltighetsperiod Subject entiteten certifikatet gäller Subject public key entitetens publika nyckeln Extensions diverse extra information Användning av nyckeln, andra namn för entiteten, etc. 30
X.509 certifikat verifiering När du fått ett certifikat måste du verifiera det. I certifikatet står det vem som är utgivaren och för vem certifikatet gäller. Det står också vilken algoritm som använts för att signera certifikatet. Signaturen kan dekrypteras genom att använda utgivarens publika nyckel. Du har nu hash-värdet som utgivaren beräknade. Du beräknar hash-värdet för samma parametrar som utgivaren, om din beräkning stämmer med utgivarens beräkning så är certifikatet validerat. Serial number + Issuer Signature algorithm and parameters Signature value (encrypted hash) 31
X.509 certifikat verifiering Nu när certifikatet är validerat så vet du följande: Certifikatet gäller för ett visst subjekt, t ex. Google. Googles publika nyckel är den som står i certifikatet. Det finns andra saker du ska kolla också, t.ex: Är certifikatet fortfarande giltigt? De har bäst-före-datum. Får den publika nyckeln användas till det du tänkt göra? Serial number + Issuer Signature algorithm and parameters Signature value (encrypted hash) Subject Subject public key 32
X.509 certifikat validering Men, något saknas Tidigare påstod vi att: Signaturen kan dekrypteras genom att använda utgivarens publika nyckel. Men då är vi tillbaka på ruta ett, för hur kan vi få tag på utgivarens publika nyckel? Samma problem? Serial number + Issuer Signature algorithm and parameters Signature value (encrypted hash) 33
Certificate authority Utgivare av certifikat är vanligtvis s.k. trusted certificate authorities. Deras certifikat (och därmed deras publika nycklar) finns redan lagrade i mjukvaran, t.ex. i Firefox eller Windows. Därmed har vi redan nycklarna för utgivarna av certifikat, och de behöver inte laddas ner eller verifieras. CAs är privata företag som undergår årliga kontroller, inte direkt lätt att bli en trusted CA. Enligt Wikipedia: Mer än 50 olika CA är trusted i de flesta moderna webbläsare, men större andelen utgivna certifikat kommer från: Symantec 38.1% Comodo group 29.1% Go Daddy 13.4% GlobalSign 10% 34
Certifikat kedjor Om det bara fanns en utgivare hade det varit lätt för alla att verifiera certifikat från denna, men så är inte fallet. Vi använder notationen: X<<Y>> vilket betyder att X är CA för Y Antag att Alice (A) vill kommunicera med Bob (B). A har ett certifikat från Cathy (C) dvs C<<A>> B har ett certifikat från Dan (D) dvs D<<B>> Hur kan A validera D<<B>> om A inte känner till Ds nyckel? 35
Certifikat kedjor Det vanliga är att CAs har certifikat för varandra Det finns alltså C<<D>> och D<<C>> - Dan och Cathy verifierar varandra När A nu vill kommunicera med B så behöver A också hämta C<<D>> Då kan A skapa kedjan: C<<D>> D<<B>> A verifierar först Ds certifikat (A känner till Cs publika nyckel) Med Ds nyckel kan A verifiera D<<B>> Man säger att två CAs är cross-certified om de verifierar varandra Dessa certifikat kedjor kan bli godtyckligt långa 36
www.liu.se