Kerberos
Leerdoelen
- Wat is Kerberos?
- Waarom hebben we Kerberos nodig?
- Welk probleem lost Kerberos op?
Cerberus
- Een driekoppig monster
- Beschermt de onderwereld (hades)
- Alleen bevoegden (doden) mogen erdoor
- Hercules ging de strijd aan met cerberus
- Grieks: Herakles
- 12de en laatste taak
- De hond levend uit hades halen
Network Authentication Problems
- Man-in-the-middle attack (MITM)
- Meeluisteren en eventueel ook spoofing
- Fake routes
- Fake DNS
- IP address theft
- ARP cache poisening
- Spoofing
- Je voordoen als iets anders
- IP spoofing
- ARP spoofing
- Fake websites
- Replay attack
- Capture een sessie en speel opnieuw af
Passwords
- Passwords kunnen ook in de LDAP database
- Hoe moeten we ze opslaan?
- Plain tekst wachtwoord in LDAP?
- Hash versie van het wachtwoord in LDAP?
- In beide gevallen gaat ‘het wachtwoord’ over de lijn
- Is oplosbaar met TLS...
Kerberos
- Het driekoppig authenticatie monster
- Afkomstig van het MIT
- Er gaat geen password over de lijn
- KDC – Key Distribution Center
- Bestaat uit:
- AS - Authentication Service
- TGS - Ticket Granting Service
- Database
- Bevat password hashes voor:
- Gebruikers
- Machines
- Services
- Geeft toegang tot machine (login) of service
Kerberos (1): Login
- Client
- Vraagt: Username + wachtwoord
- Maakt hash van wachtwoord
- Encrypt een timestamp met de hash
- Stuurt de encrypted timestamp + username naar AS
- Geen password over de lijn (MTM niet mogelijk)
- AS
- AS controle: Is de user in de DB?
- AS haalt hash op van wachtwoord uit DB
- Decrypt de client timestamp
- Controle op tijdstip (replay attacks)
- AS haalt TGS hash op uit DB
- AS verstuurt:
- MSG A: Client/TGS Session Key: encrypted met de hash van de gebruiker
- Ticket-Granting-Ticket (TGT): met daarin client ID, client network address, ticket validity period, en de Client/TGS Session Key) encrypted met de hash van het TGS password.
- Client
- Decrypts MSG A (controle hash AS: spoofing): heeft nu Client/TGS Session Key
- Client slaat TGT op, kan deze niet decrypten
- Client heeft voldoende info voor contact met de TGS
Kerberos (2): Service Authenticatie
- Client
- maakt authenticator door de huidige tijd en de client ID te versleutelen met Client/TGS Session Key
- verstuurt naar TGS: de TGT, authenticator en aanvraag voor service X
- TGS
- Decrypts TGT met zijn eigen wachtwoord hash: weet nu Client/TGS Session Key en client ID
- Ontsleuteld met de sessiesleutel de authenticator en vergelijkt deze met de eigen tijd
- Default MS AD: 5 minuten (Relay Attack)
- TGS haalt service X hash op uit DB
- Service Ticket: Versleuteld sessiesleutel, client ID, client network address en validity period met hash van service
- MSG B: Encrypts Client/Server Session Key met Client/TGS Session Key
- Verstuurt Service Ticket en MSG C naar client
- Client
- Client decrypts MSG B en heeft nu de Client/Server Session Key
- Client slaat Service Ticket op, kan deze niet decrypten
Kerberos (3): Contact met de Service
- Client
- maakt authenticator door de huidige tijd en de client ID te versleutelen met de Client/Server Session Key
- neemt contact op met de service door het service ticket en authenticator te sturen
- Service
- Decrypts service ticket met zijn eigen wachtwoord hash: weet nu Client/Server Session Key en username
- Ontsleuteld met de sessiesleutel de authenticator en vergelijkt deze met de eigen tijd
- Als alles klopt is de server tevreden
- Stuurt aan de client een bericht met: timestamp uit de clients Authenticator encrypted met de Client/Server Session Key
- Client
- Client decrypts het bericht en controleert de timestamp
- Als het klopt dan kan de client de server vertrouwen
Kerberos
- UDP/TCP port 88 voor auth en tickets
- UDP/TCP port 464 voor password changes
- TCP port 749 in MIT en Heimdal voor KDC administratie
Samenvatting
- Kerberos is een centrale password-database
- Bevat hashes van passwords
- Password gaat nooit, ook niet in hash, over de lijn
- Diensten hebben ook een wachtwoord
- Zorgt voor Single Sign On (SSO)
- Kerberos is authenticatie