0% found this document useful (0 votes)
76 views8 pages

MIT6 858F14 Lec13

- Kerberos is an authentication system that allows users to securely access services on a network. It uses a central trusted server (KDC) to authenticate users and issue tickets granting access to specific services. - The basic workflow involves a user authenticating to the KDC to obtain a TGT (ticket granting ticket), which can then be used along with authenticators to obtain service tickets from the KDC and authenticate to specific services. - Kerberos provides mutual authentication between clients and servers using secret keys and cryptographic protocols to authenticate users, prevent replay attacks, and securely issue tickets and authenticate service requests.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
76 views8 pages

MIT6 858F14 Lec13

- Kerberos is an authentication system that allows users to securely access services on a network. It uses a central trusted server (KDC) to authenticate users and issue tickets granting access to specific services. - The basic workflow involves a user authenticating to the KDC to obtain a TGT (ticket granting ticket), which can then be used along with authenticators to obtain service tickets from the KDC and authenticate to specific services. - Kerberos provides mutual authentication between clients and servers using secret keys and cryptographic protocols to authenticate users, prevent replay attacks, and securely issue tickets and authenticate service requests.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

6.

858 Lecture 13
Kerberos

Administrivia  
Quiz review  today  (Actual quiz next Wednesday.)
Post your final project idea by tomorrow.

Kerberos setting:  
• Distributed architecture, evolved from a single time-­‐sharing system.
• Many servers providing  services: remote login, mail, printing, file server.
• Many workstations, some are public, some are private.
• Each user logs into their own workstation,  has root  access.
• Adversary may have his/her own workstation too.
• Alternatives at the time: rlogin, rsh.
• Goal:  allow users to access services,  by authenticating to servers.
• Other user information distributed via Hesiod,  LDAP, or some other directory.
• Widely used: Microsoft Active Directory uses the Kerberos (v5) protocol

What's the trust model?


• All users, clients, servers  trust the  Kerberos  server.
• No apriori trust between any other pairs of machines.
• Network is not trusted.
• User trusts the local machine.

Kerberos architecture:
• Central Kerberos  server, trusted  by  all parties  (or at least all at MIT).
• Users, servers have a private key shared between them and Kerberos.
• Kerberos server keeps track  of everyone's private key.
• Kerberos uses keys to achieve mutual *authentication* between client, server.
o Terminology: user, client, server.
o Client and  server know each  other's names.
o Client is convinced  it's  talking to  server and  vice-­‐versa.
• Kerberos does not provide authorization (can user access some resource).
o It's the application's job to decide  this.

Why do we need this trusted Kerberos server?


• Users don't need to  set up accounts,  passwords,  etc  on  each server.

1
Overall architecture diagram

+-----------------------+

c, tgs
| |

[ User: Kc ] <-------->
[ Kerberos ] |

^ \ | Database: |

| \ | c: Kc |

V \ s | s: Ks |

[ Server: Ks ] \--------> [ TGS ] |

| KDC |

+-----------------------+

Basic Kerberos constructs from the paper:


Ticket, T_{c,s} = { s, c, addr, timestamp, life, K_{c,s} }

[ usually encrypted w/ K_s ]

Authenticator, A_c = { c, addr, timestamp }

[ usually encrypted w/ K_{c,s} ]

Kerberos protocol mechanics.


• Two  interfaces  to  the  Kerberos  database:  "Kerberos"  and  "TGS" protocols.
• Quite similar; few differences:
o In Kerberos protocol,  can specify  any c, s; client  must know K_c.
o In TGS protocol, client's name is implicit (from ticket).
o Client just needs  to  know K_{c,tgs} to  decrypt response  (not K_c).
• Where does the client machine get K_c in the first place?
o For users, derived from a password using, effectively, a hash function.
• Why do we need these two protocols?   Why not  just  use "Kerberos"  protocol?
o Client  machine can forget user password after it gets TGS ticket.
o Can we  just store  K_c  and  forget the  user  password? Password-­‐
equivalent.

Naming.
• Critical to  Kerberos:  mapping between keys and principal names.
• Each principal name consists of ( name, instance, realm )
o Typically written name.instance@realm
• What  entities have principals?
o Users: name is username, instance for special privileges (by convention).
o Servers: name is service name, instance is server's hostname.
o TGS: name is 'krbtgt', instance is realm name.
• Where are these names used / where do the names matter?
o Users remember their user name.
o Servers perform access control based on principal name.
o Clients  choose a principal they  expect to  be  talking  to.
§ Similar to browsers expecting specific certificate name for HTTPS  
• When can a name be reused?
o For user names: ensure no ACL  contains that name, difficult.

2
o For servers (assuming not on any ACL):  ensure users forget server name.
o Must  change the key,  to ensure old tickets not  valid for new  server.

Getting  the  initial ticket.


• "Kerberos"  protocol:
o Client  sends pair of principal names (c, s), where s is typically tgs.
o Server responds  with { K_{c,s},  { T_{c,s}  }_{K_s}  }_{K_c}
• How does the  Kerberos  server authenticate  the  client?
o Doesn't need  to  -­‐-­‐ willing  to respond to any request.
• How does the  client authenticate  the  Kerberos  server?
o Decrypt the  response  and  check if the  ticket looks  valid.
o Only the Kerberos server would  know K_c.
• In what ways is this better/worse  than sending  password to server?
o Password  doesn't get sent over network,  but easier to  brute-­‐force.
• Why is the key included twice in the response from Kerberos/TGS server?
o K_{c,s}  in  response gives the  client access  to  this  shared  key.
o K_{c,s} in the ticket should convince server the key is legitimate.

General weakness: Kerberos 4 assumed encryption provides message integrity.


• There were some attacks where adversary can tamper with ciphertext.
• No explicit  MAC means that no well-­‐defined  way to detect tampering.
• One-­‐off  solutions: kprop protocol included checksum, hard to match.
• The weakness made it relatively easy for adversary to "mint" tickets.
• Ref: http://web.mit.edu/kerberos/advisories/MITKRB5-SA-2003-004-krb4.txt

General weakness: adversary can mount offline password-­‐guessing  attacks.


• Typical passwords  don't have  a lot of entropy.
• Anyone can ask KDC for a ticket encrypted with user's password.
• Then try  to  brute-­‐force  the  user's  password  offline:  easy  to parallelize.
• Better design: require client to interact with server for each login attempt.

General weakness:  DES hard-­‐coded  into the design, packet format.


• Difficult to switch to another cryptosystem when DES became too weak.
• DES key  space  is too  small:  keys are only 56 bits, 2^56 is not that big.
• Cheap  to break DES these days ($20--$200 via https://www.cloudcracker.com/).
• How could  an adversary  break Kerberos  give  this  weakness?

Authenticating to a server.
• "TGS" protocol:
o Client sends  ( s, {T_{c,tgs}}_{K_tgs}, {A_c}_{K_{c,tgs}} )
o Server replies  with { K_{c,s},  { T_{c,s}  }_{K_s}  }_{K_{c,tgs}}
• How does a server authenticate  a client based  on the  ticket?
o Decrypt ticket using server's key.
o Decrypt authenticator  using K_{c,s}.
o Only Kerberos server  could  have  generated  ticket (knew K_s).

3
o Only client  could have generated authenticator (knew  K_{c,s}).
• Why does the ticket  include c?   s?   addr?   life?
o Server can extract client's principal name from ticket.
o Addr tries to prevent stolen ticket from being used on another machine.
o Lifetime similarly tries to limit damage from stolen ticket.
• How does a network protocol use  Kerberos?
o Encrypt/authenticate all messages with K_{c,s}
o Mail server commands, documents sent to printer, shell I/O, ..
o E.g., "DELETE  5"  in a mail server protocol.
• Who generates the authenticator?
o Client, for each  new connection.
• Why does a client  need to send an authenticator,  in  addition  to the ticket?
o Prove to the server that an adversary is not replaying an old message.
o Server must keep last few authenticators in memory, to detect replays.
• How  does Kerberos use time? What happens if the clock is wrong?
o Prevent stolen tickets from being used forever.
o Bound size of replay  cache.
o If clock is wrong,  adversary  can use  old tickets or replay  messages.
• How  does client authenticate server? Why would it matter?
o Connecting  to file server: want to know you're getting legitimate files.
o Solution: send back { timestamp + 1 }_{K_{c,s}}.

General weakness: same key, K_{c,s}, used for many things


• Adversary can substitute any msg encrypted with K_{c,s} for any other.
• Example: messages across multiple sessions.
o Authenticator does not attest to K_{c,s} being fresh!
o Adversary can splice fresh authenticator with old message
o Kerberos v5 uses fresh session  key each time, sent in authenticator
• Example: messages in different directions
o Kerberos v4 included a direction  flag  in  packets (c-­‐>s  or s-­‐>c)
o Kerberos v5 used separate keys: K_{c-­‐>s},  K_{s-­‐>c}

What  if users connect to wrong  server (analogue of MITM  / phishing  attack)?
• If server is intercepting  packets,  learns what service  user connects to.
• What if user accidentally types ssh malicious.server?
o Server learns user's principal name.
o Server does not get user's  TGS ticket or K_c.
o Cannot  impersonate user to others.

What  happens if the KDC is down?


• Cannot log in.
• Cannot obtain new tickets.
• Can keep using existing tickets.

Authenticating to a Unix system.

4
• No Kerberos  protocol involved  when  accessing  local files,  processes.
• If logging in using Kerberos, user must have presented legitimate ticket.
• What if user logs in using username/password (locally or via SSH using pw)?
o User knows whether the password he/she supplied is legitimate.
o Server has no idea.
• Potential attack on a server:
o User connects  via SSH, types  in username,  password.
o Create  legitimate-­‐looking  Kerberos response,  encrypted with password.
o Server has no way to tell if this response is really legitimate.
• Solution (if server keeps state): server needs its own principal,  key.
o First obtain user's  TGS, using the  user's username and password.
o Then use TGS to  obtain  a ticket for server's principal.
o If user faked the Kerberos server, the second ticket will not match.

Using Kerberos  in an application.


• Paper suggests using special functions to seal messages, 3 security  levels.
• Requires moderate changes to an application.
o Good for flexibility, performance.
o Bad for ease of adoption.
o Hard  for developers  to  understand  subtle  security  guarantees.
• Perhaps a better  abstraction:  secure channel (SSL/TLS).

Password-­‐changing  service (administrative interface).


• How does the  Kerberos  protocol ensure  that client knows  password? Why?
o Special flag in ticket indicates which interface  was used to obtain it.
o Password-­‐changing  service only  accepts  tickets  obtained  by  using K_c.
o Ensure that  client  knows old password,  doesn't  just  have the ticket.
• How does the  client change  the  user's  password?
o Connect to  password-­‐changing  service, send new password  to  server.

Replication.
• One master server (supports password changes), zero or more slaves.
• All servers can issue tickets, only master can change keys.
• Why this split?
o Only one master ensures consistency: cannot have conflicting changes.
• Master periodically updates the slaves (when  paper was written,  ~once/hour).
o More recent impls have incremental propagation:  lower  latency  (but not
0).
• How scalable  is this?
o Symmetric crypto (DES, AES) is fast -­‐-­‐ O(100MB/sec) on  current  
hardware.
o Tickets are small, O(100 bytes), so can support 1M tickets/second.
o Easy  to scale  by adding  slaves.
• Potential problem: password changes take a while to propagate.
• Adversary can still use a stolen password for a while after user changes it.

5
• To learn more about how to do replication right, take 6.824.

Security  of the Kerberos  database.


• Master and slave servers are highly  sensitive  in this  design.
• Compromised  master/slave server means all passwords/keys have to change.
• Must  be physically secure,  no bugs in  Kerberos server software,
o no bugs in any other network service on server machines, etc.
• Can we  do better? SSL  CA  infrastructure slightly better, but not much.
o Will look at it in more detail when we talk about browser security /
HTTPS.
• Most centralized authentication systems suffer from such problems.
o globally-­‐unique  freeform names require some trusted mapping authority.

Why didn't  Kerberos use public key crypto?


• Too slow at the time: VAX  systems, 10MHz  clocks.
• Government export restrictions.
• Patents.

Network attacks.
• Offline password guessing  attacks on  Kerberos server.
o Kerberos v5 prevents clients from requesting ticket  for any principal.
o Must include { timestamp }_{K_c} along with request, proves know K_c.
o Still vulnerable to password guessing by network sniffer at that time.
o Better alternatives are available: SRP, PAKE.
• What  can  adversary do with a stolen  ticket?
• What  can  adversary do with a stolen  K_c?
• What  can  adversary do with a stolen  K_s?
o Remember: two parties share each key (and rely on it) in Kerberos!
• What happens after a password change if K_c is compromised?
o Can decrypt all subsequent exchanges, starting  with initial  ticket
o Can even decrypt password  change  requests, getting the  new password!
• What if adversary figures out your old password sometime later?
o If the adversary  saved old packets,  can decrypt  everything.
o Can  similarly obtain current password.

Forward  secrecy (avoiding the  password-­‐change  problem).


• Abstract problem: establish a shared secret between two parties.
• Kerberos approach: someone picks the secret, encrypts it, and sends it.
• Weakness: if the encryption  key is stolen,  can  get  the secret later.
• Diffie-­‐Hellman  key exchange protocol:
o Two  parties  pick their  own  parts  of a secret.
o Send messages to each other.
o Messages do not have to be secret, just authenticated (no tampering).
o Two parties use each other's messages to reconstruct shared key.
o Adversary cannot reconstruct key by watching network messages.

6
• Diffie-­‐Hellman  details:
o Prime p, generator g mod p.
o Alice and Bob each pick a random, secret exponent (a and b).
o Alice and Bob send (g^a mod p) and (g^b mod p) to each other.
o Each party  computes (g^(ab) mod p) = (g^a^b mod p) = (g^b^a mod p).
o Use (g^(ab) mod p) as secret key.
o Assume discrete log (recovering a from (g^a mod p)) is hard.

Cross-­‐realm  in Kerberos.


• Shared keys between realms.
• Kerberos v4 only supported pairwise cross-­‐realm  (no  transiting).

What  doesn't  Kerberos address?


• Client,  server, or KDC machine can be compromised.
• Access control or groups (up to service to implement that).
• Microsoft  "extended"  Kerberos to support  groups.
o Effectively  the user's list  of groups was included  in ticket.
• Proxy problem: still no great solution in Kerberos, but ssh-­‐agent  is nice.
• Workstation  security (can  trojan  login,  and did happen  in  practice).
o Smartcard-­‐based approach hasn't  taken  off.
o Two-­‐step  authentication (time-­‐based OTP) used by Google Authenticator.
o Shared desktop systems not so prevalent: everyone has own phone,
laptop,  ..

Follow-­‐ons.
• Kerberos v5 fixes many problems in v4 (some mentioned), used widely (MS AD).
• OpenID is a similar-­‐looking  protocol  for authentication  in  web  applications.
o Similar messages are passed around via HTTP  requests.

7
MIT OpenCourseWare
http://ocw.mit.edu

6.858 Computer Systems Security


Fall 2014

For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.

You might also like