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