Durante 1983 en el M.I.T. (Massachussetts Institute of Technology)
comenzó el proyecto Athena con el objetivo de crear un entorno de
trabajo educacional compuesto por estaciones gráficas, redes de alta velocidad
y servidores; el sistema operativo para implementar este entorno era Unix
4.3BSD, y el sistema de autenticación utilizado en el proyecto se denominó
Kerberos ([MNSS87]) en honor al perro de tres cabezas que en la
mitología griega vigila la puerta de entrada a Hades, el infierno.
Hasta que se diseñó Kerberos, la autenticación en redes de
computadores se realizaba principalmente de dos formas: o bien se aplicaba la
autenticación por declaración (Authentication by assertion), en la que
el usuario es libre de indicar el servicio al que desea acceder (por ejemplo,
mediante el uso de un cliente determinado), o bien se utilizaban contraseñas
para cada servicio de red. Evidentemente el primer modelo proporciona un nivel
de seguridad muy bajo, ya que se le otorga demasiado poder al cliente sobre el
servidor; el segundo modelo tampoco es muy bueno: por un lado se obliga al
usuario a ir tecleando contínuamente su clave, de forma que se pierde
demasiado tiempo y además la contraseña está viajando contínuamente
por la red. Kerberos trata de mejorar estos esquemas intentando por un
lado que un cliente necesite autorización para comunicar con un servidor
(y que esa autorización provenga de una máquina confiable), y por otro
eliminando la necesidad de demostrar el conocimiento de información privada
(la contraseña del usuario) divulgando dicha información.
Kerberos se ha convertido desde entonces en un referente obligatorio a
la hora de hablar de seguridad en redes. Se encuentra disponible para la
mayoría de sistemas Unix, y viene integrado con OSF/DCE (Distributed
Computing Environment). Está especialmente recomendado para sistemas
operativos distribuidos, en los que la autenticación es una pieza fundamental
para su funcionamiento: si conseguimos que un servidor logre conocer la
identidad de un cliente puede decidir sobre la concesión de un servicio o la
asignación de privilegios especiales. Sigue vigente en la actualidad (en su
versión V a la hora de escribir este trabajo), a pesar del tiempo
transcurrido desde su diseño; además fué el pionero de los sistemas
de autenticación para sistemas en red, y muchos otros diseñados
posteriormente, como KryptoKnight ([MTHZ92], [JTY97]...), SESAME
([PPK93]) o Charon ([Atk93]) se basan en mayor o menor
medida en Kerberos.
El uso de Kerberos se produce principalmente en el login, en el
acceso a otros servidores (por ejemplo, mediante rlogin) y en el acceso
a sistemas de ficheros en red como NFS. Una vez que un cliente está
autenticado o bien se asume que todos sus mensajes son fiables, o si se desea
mayor seguridad se
puede elegir trabajar con mensajes seguros (autenticados) o privados
(autenticados y cifrados). Kerberos se puede implementar en un
servidor que se ejecute en una máquina segura, mediante un conjunto de
bibliotecas que utilizan tanto los clientes como las aplicaciones; se trata de
un sistema
fácilmente escalable y que admite replicación, por lo que se puede utilizar
incluso en sistemas de alta disponibilidad (aunque como veremos al final del
capítulo está fuertemente centralizado).
© 2002 Antonio Villalón Huerta