# Kerberos

Kerberos és un protocol d'autenticació de xarxes d'ordinador que permet a dos ordinadors en una xarxa insegura demostrar la seva identitat mútuament de manera segura. Els seus dissenyadors es van concentrar primerament en un model de client-servidor, i ofereix autenticació mútua: tant client com servidor verifiquen la identitat l'un de l'altre. Els missatges d'autenticació estan protegits per evitar eavesdropping i atacs de Replay.
Kerberos es basa en criptografia de clau simètrica i requereix un tercer de confiança. A més, hi ha extensions del protocol per poder utilitzar criptografia de clau asimètrica.

## Història i desenvolupament

L'Institut Tecnològic de Massachusetts (MIT) va desenvolupar Kerberos per protegir els serveis de xarxa proporcionats pel projecte Athena. El projecte va rebre el nom a causa del personatge mitològic grec Kerberos (o Can Cèrber), el gos guardià de tres caps d'Hades. Hi ha diverses versions del protocol. Les versions 1-3 es van desenvolupar només dins de l'ambient del MIT.
Steve Miller i Clifford Neuman, els principals dissenyadors de la versió 4 de Kerberos, van publicar aquesta versió al final de la dècada de 1980, encara que l'havien orientat principalment per al projecte Athena.
La versió 5, dissenyada per John Kohl i Clifford Neuman, va aparèixer com la RFC 1510 en 1993 (que va quedar obsoleta per la RFC 4120 el 2005), amb la intenció d'eliminar les limitacions i els problemes de seguretat presents a la versió 4.
El MIT distribueix una implementació de Kerberos lliurement sota una llicència similar a la de BSD.
Les autoritats dels Estats Units varen classificar Kerberos com a munició, i en van prohibir per tant l'exportació, ja que utilitza l'algorisme de xifrat DES (amb clau de 56 bits). Una implementació no nord-americana de Kerberos 4, desenvolupada a Suècia, va posar el sistema a disposició fora dels Estats Units abans que aquest canviés les seves polítiques d'exportació de criptografia (al voltant de l'any 2000). La implementació sueca es va basar en una versió anomenada eBones, la qual es basava en la versió exportada MIT Bones (a la qual se li havien tret les funcions de xifrat i les trucades a elles), basada al seu torn en Kerberos 4, nivell de correcció 9. L'australià Eric Young, autor de nombroses biblioteques criptogràfiques, va posar novament les crides a funcions i va usar la seva biblioteca de xifrat libdes . Aquesta versió una mica limitada de Kerberos es va anomenar versió eBones. Una implementació de Kerberos en la seva versió 5 es va llançar per bàsicament el mateix grup de gent que va llançar KTH-KRB.
Windows 2000, Windows XP i Windows Server 2003 fan servir una variant de Kerberos com el seu mètode d'autenticació per defecte. Alguns agregats de Microsoft al conjunt de protocols de Kerberos estan documentats a la RFC 3244 "Microsoft Windows 2000 Kerberos Change Password and set Password Protocols" (Protocols de canvi i establiment de clau de tipus Kerberos a Microsoft Windows 2000). Mac OS X d'Apple també usa Kerberos tant en les seves versions de client com de servidor.
Fins a l'any 2005, el grup de treball de Kerberos de la IETF es troba actualitzant les especificacions. Actualitzacions recents inclouen:
* "Especificació de xifrat i codi de revisió d'errors" (RFC 3961),
* Xifrat per "AES per Kerberos 5" (RFC 3962),
* Una nova versió de l'especificació de Kerberos 5: "El servei d'autenticació Kerberos (V5)" (RFC 4120). Aquesta versió fa obsoleta a la RFC 1510, aclareix aspectes del protocol i del seu ús esperat en major detall i una explicació més clara,
* Una nova edició de l'especificació de la interfície de programa d'aplicació de serveis de seguretat genèrics: "El mecanisme d'interfície de programa d'aplicació de serveis de seguretat genèrics (GSS-API) de Kerberos Version 5: Version 2. " (RFC 4121).

## Descripció

Kerberos es basa en el Protocol de Needham-Schroeder. Utilitza un tercer de confiança, denominat "centre de distribució de claus" (KDC, per les seves sigles en anglès: Key Distribution Center), el qual consta de dues parts lògiques separades: un "servidor d'autenticació" (AS o Authentication Server) i un "servidor emissor de tiquets" (TGS o Ticket Granting Server). Kerberos funciona a base de "tiquets", els quals serveixen per demostrar la identitat dels usuaris.
Kerberos manté una base de dades de claus secretes, i cada entitat en la xarxa, ja sigui client o servidor, comparteix una clau secreta coneguda únicament per ell i Kerberos. El coneixement d'aquesta clau serveix per demostrar la identitat de l'entitat. Per a una comunicació entre dues entitats, Kerberos genera una clau de sessió, la qual poden utilitzar per assegurar les seves interaccions.

## Motivació

Internet no és un lloc segur. Molts dels protocols usats a Internet no proporcionen característiques de seguretat. És habitual que experts informàtics maliciosos empren eines per seguir i aconseguir contrasenyes de la xarxa. Per tant, les aplicacions que envien una contrasenya no xifrada per la xarxa són summament vulnerables. Pitjor encara, algunes aplicacions de client/servidor depenen de l'honestedat de l'usuari que les està utilitzant sobre la seva identitat.
Alguns llocs intenten solucionar els problemes de seguretat de la xarxa amb tallafocs. Malauradament, l'ús exclusiu de tallafocs es basa en la suposició que els "dolents" estan a l'exterior, suposició que sovint és incorrecta i perillosa. Un bon nombre dels delictes informàtics més greus es duen a terme des de dins de la mateixa corporació atacada. Els tallafocs també pateixen un desavantatge important, ja que restringeixen la manera com poden utilitzar Internet els usuaris de la xarxa que protegeixen. Després de tot, els tallafocs són només un exemple menys extremista de la dita que no hi ha res més segur que un ordinador que està desconnectat de la xarxa. En molts casos, però, aquestes restriccions són simplement impossibles d'assumir.
Kerberos va ser creat pel MIT com una solució per aquests problemes de seguretat de la xarxa. El protocol Kerberos fa servir una criptografia forta amb el propòsit que un client pugui demostrar la seva identitat a un servidor (i viceversa) a través d'una connexió de xarxa insegura. Després que un client/servidor han aconseguit demostrar la seva identitat a través de Kerberos també poden xifrar totes les seves comunicacions per garantir la privacitat i la integritat de les dades intercanviades.
Kerberos està disponible gratuïtament en el MIT, sota permisos de drets d'autor molt similars a aquells que es van usar per al sistema operatiu de BSD i el X Window. El MIT proveeix el codi font de Kerberos amb el propòsit que qualsevol que desitgi fer-lo servir pugui estudiar-ne el codi i així assegurar-se que el codi és digne de confiança. A més, per a aquells que prefereixen dependre d'un producte amb un suport professional, Kerberos està disponible a través de molts distribuïdors diferents com a producte comercial.
En resum, Kerberos és una solució per a certs problemes de seguretat de la xarxa. Proporciona eines d'autenticació i criptografia reforçada a través de la xarxa per ajudar a assegurar que els sistemes d'informació d'una empresa o corporació estan ben arrecerats.

## Funcionament

A continuació se'n descriu succintament el protocol. Es faran servir les següents abreviatures:
* AS = Authentication Server
* TGS = Ticket Granting Server
* SS = Service Server.
De manera resumida, el funcionament és el següent: el client s'autentica a si mateix contra l'AS, així demostra al TGS que està autoritzat per rebre un tiquet de servei (i que consegüentment rep). En aquest punt ja pot demostrar al SS que ha estat autoritzat per fer ús del servei "kerberitzat" (o sigui, aquell servei que ha delegat en Kerberos el control al seu accés).
Amb major detall:
* Un usuari ingressa el seu nom d'usuari i la contrasenya (password) en el client.
* El client, a partir de la contrasenya, genera una clau hash i la fa servir com a clau secreta del client.
* El client envia un missatge en text pla a l'AS demanant un servei en nom de l'usuari.
* L'AS comprova si el client està a la base de dades. En cas afirmatiu, l'AS envia dos missatges al client:
* # Missatge A: Client/TGS session key xifrada utilitzant la clau privada de l'usuari.
* # Missatge B: Ticket-Granting Ticket (que inclou l'ID de client, l'adreça de xarxa del client, el període de validesa i el Client/TGS session key) xifrat utilitzant la clau privada del TGS.
* Un cop el client ha rebut els missatges, desxifra el missatge A per obtenir el client/TGS session key. Aquesta session key s'usa per a les posteriors comunicacions amb el TGS. (El client no pot desxifrar el missatge B, ja que per xifrar aquest s'ha usat la clau del TGS). En aquest moment el client ja es pot autenticar contra el TGS.
* Llavors el client envia els següents missatges al TGS:
* # Missatge C: Compost pel Tiquet-Granting Ticket del missatge B i per l'ID del servei demanat.
* # Missatge D: autenticitat (compost per l'ID de client i una marca de temps), xifrat fent servir el client/TGS session key.
* Quan rep els missatges anteriors, el TGS desxifra el missatge D (autenticador) usant el client/TGS session key i envia els següents missatges al client:
* # Missatge E: Client-to-server tiquet (que inclou l'ID de client, l'adreça de xarxa del client, el període de validesa i una Client/Server session key) xifrat utilitzant la clau privada del servei.
* # Missatge F: Client/server session key xifrada fent servir el client/TGS session key.
* Quan el client rep els missatges E i F, ja té prou informació per autenticar-se contra el SS. El client es connecta al SS i envia els següents missatges:
* # Missatge E del pas anterior.
* # Missatge G: un nou autenticitat que inclou l'ID de client, una marca de temps i que està xifrat utilitzant el client/server session key.
* El SS desxifra el tiquet amb la vostre pròpia clau secreta i envia el següent missatge al client per confirmar la seva identitat:
* # Missatge H: la marca de temps trobada en l'últim autenticador rebut del client més un, xifrat el client/server session key.
* El client desxifra la confirmació fent servir el client/server session key i comprova si la marca de temps està correctament actualitzada. Si això és així, el client confiarà en el servidor i podrà començar a utilitzar el servei que aquest ofereix.
* El servidor proveeix del servei al client.

## Enllaços externs

* del projecte Kerberos al MIT (en anglès)

## Referències

* ↑ «Heimdal».
* ↑ «Kerberos (krb-wg) - Charter».