a una sucesión deterministica de números en el intervalo [0,1] que tiene las mismas propiedades estadísticas que una sucesión de números aleatorios. Una forma general de obtener números pseudoaleatorios es partir de una semilla de p números y aplicar una función d. Los números pseudoaletorios son necesarios cuando se pone en práctica un modelo de simulación, para obtener observaciones aleatorias a partir de distribuciones de probabilidad. Un generador de números aleatorios es un algoritmo que produce secuencias de números que siguen una distribución de probabilidad especifica y tienen la apariencia de aleatoriedad. La referencia a secuencias de números aleatorios significa que el algoritmo produce muchos números aleatorios en serie. La secuencia de números generados debe cumplir con las 2 hipótesis siguientes: Distribución Uniforme Independencia (no correlacionados) Los números aleatorios se pueden dividir en dos categorías principales: Números aleatorios enteros. Es una observación aleatoria de una distribución uniforme discreteada en el intervalo n, n+1… Por lo general, n =0 ó 1 donde estos son valores convenientes para la mayoría de las aplicaciones. Números aleatorios uniformes. Es una
observación aleatoria a partir de una
distribución uniforme (continua) en un intervalo [a , b]. Propiedades mínimas que deberán satisfacer los números pseudoaleatorios: *Ajustarse a una distribución U(0,1). *Ser estadísticamente independientes (no debe deducirse un número conociendo otros ya generados). *Ser reproducibles (la misma semilla debe dar la misma sucesión). *Ciclo repetitivo muy largo. *Facilidad de obtención. *Ocupar poca memoria. Cualquiera que sea el método para generar números aleatorios debe satisfacer las siguientes condiciones: Deben ser: 1. Uniformemente distribuidos 2. Estadísticamente independientes 3. Reproducibles 4. Sin repetición dentro de una longitud determinada de la sucesión 5. Generación a grandes velocidades 6. Requerir el mínimo de capacidad de almacenamiento Centro de distribución de claves (kdc)
En este modelo cada usuario tiene
una sola clave compartida con el KDC. El KDC es un servicio que se ejecuta en un server seguro físicamente. El KDC tiene las claves principales de todos El KDC distribuye claves de sesión.
Clave de Sesión: Cuando un
cliente solicita al KDC el acceso a un servidor, éste genera en forma aleatoria una clave denominada "Clave de Sesión" que será utilizada por el cliente y el servidor para encriptar el diálogo que mantendrán. TGT: Cuando un cliente inicia una sesión, solicita al KDC un boleto especial que le permita solicitar posteriormente otros boletos (boletos de servicio), los cuales posibilitarán el acceso a distintos servidores. Este boleto especial recibe el nombre de "Boleto de Concesión de Boletos" (Ticket Granting Ticket).
Boleto de Servicio: Es aquel que
solicita el cliente al KDC para poder acceder a un servicio que reside en un servidor que implementa Kerberos como protocolo de autenticación. También se lo conoce como "Ticket Granting Service". Nomenclatura
Kx: Es la clave secreta (Resumen
producido por una función Hash de la contraseña) de x, donde x es un cliente (c), una aplicación de servidor (s) o el KDC (k). {datos}Kx: Cualquier dato encriptado con la clave secreta de x. {T}Ks: Boleto encriptado con la clave secreta del servidor s (Tener en cuenta que no todo el boleto se encripta). Kx,y: Clave de sesión utilizada por las instancias x , y. {datos}Kx,y: Cualquier dato encriptado Kerberos en un ejemplo de Ticket
Cuando un usuario inicia la sesión, la
parte cliente del protocolo envía un mensaje al KDC solicitando un TGT.
El mensaje contiene información de
autenticación que consiste en un marca temporal, encriptada mediante el resumen de la función de hash de la contraseña del usuario. {marca_temporal}Kc
El KDC busca el registro asociado al usuario,
donde encontrará el resumen de su clave, y procede a desencriptar el mensaje. Si este proceso es exitoso y la marca El KDC genera en forma aleatoria un clave de sesión que compartirá con el usuario, Kc,k.
El KDC envía al usuario un TGT encriptado
con su clave privada {TGT}Kk. Este ticket contiene entre otros el tiempo de validez del boleto, algunas banderas, datos de autorización del cliente y la clave de sesión entre ambos, Kc,k . También envía esta clave en forma separada, encriptada con la clave del propio usuario. {Kc,k}Kc.
El usuario desencripta la clave de
sesión, almacena el TGT y está listo para solicitar boletos de servicio cuando haga Cuando el usuario necesita acceder a un servidor que ejecuta Kerberos, solicita un boleto de servicio al KDC para dicho servidor. Esta petición contiene entre otras cosas el TGT del usuario, el nombre del servidor que se pretende acceder y una marca temporal encriptada usando la clave de sesión entre el KDC y el usuario {marca_temporal}Kc,k. Cuando el KDC recibe la petición desencripta el TGT, luego extrae la clave de sesión necesaria para desencriptar el autenticador. Si dicho proceso es exitoso y la marca temporal El KDC prepara el boleto de servicio copiando algunos campos contenidos en el TGT, agrega un clave de sesión para el cliente y el servidor, Kc,s generada aleatoriamente, establece el tiempo de vida y encripta dicho boleto usando la clave del servidor {T}Ks Posteriormente el KDC envía el boleto al cliente y una copia de la clave de sesión recién generada, encriptada con la clave que comparte con el cliente {Kc,s}Kc,k
Cuando recibe los mensajes, el cliente desencripta y obtiene la clave de sesión que usará con el servidor Kc,s y envía el boleto de servicio a dicho server {T}Ks, junto con un autenticador encriptado El servidor desencripta el boleto, obtiene la clave de sesión Kc,s y desencripta el autenticador. Si este proceso fue exitoso y la marca temporal es reciente, se autentica al usuario como válido. Posteriormente los datos de autorización contenidos en el boleto determinarán si este usuario puede acceder a los servicios que desea.