Un protocolo de autenticación es un tipo de protocolo de comunicaciones informáticas o protocolo criptográfico diseñado específicamente para la transferencia de datos de autenticación entre dos entidades. Permite a la entidad receptora autenticar la entidad de conexión (por ejemplo, Cliente que se conecta a un Servidor), así como autenticarse a sí misma ante la entidad de conexión (Servidor a un cliente) declarando el tipo de información necesaria para la autenticación, así como la sintaxis. [1] Es la capa de protección más importante necesaria para una comunicación segura dentro de las redes informáticas.
Con la creciente cantidad de información confiable accesible a través de la red, surgió la necesidad de impedir que personas no autorizadas accedan a estos datos. Robar la identidad de alguien es fácil en el mundo de la informática: hubo que inventar métodos de verificación especiales para descubrir si la persona/computadora que solicita los datos es realmente quien dice ser. [2] La tarea del protocolo de autenticación es especificar la serie exacta de pasos necesarios para la ejecución de la autenticación. Tiene que cumplir con los principales principios del protocolo:
Una ilustración de la autenticación basada en contraseña utilizando un protocolo de autenticación simple:
Alice (una entidad que desea ser verificada) y Bob (una entidad que verifica la identidad de Alice) conocen el protocolo que acordaron utilizar. Bob tiene la contraseña de Alice almacenada en una base de datos para compararla.
Este es un ejemplo de un protocolo de autenticación muy básico vulnerable a muchas amenazas, como escuchas ilegales , ataques de repetición , ataques de intermediario , ataques de diccionario o ataques de fuerza bruta . La mayoría de los protocolos de autenticación son más complicados para ser resistentes a estos ataques. [4]
Los protocolos son utilizados principalmente por servidores de protocolo punto a punto (PPP) para validar la identidad de clientes remotos antes de otorgarles acceso a los datos del servidor. La mayoría de ellos utiliza una contraseña como piedra angular de la autenticación. En la mayoría de los casos, la contraseña debe compartirse previamente entre las entidades que se comunican. [5]
El Protocolo de autenticación de contraseña es uno de los protocolos de autenticación más antiguos. La autenticación se inicializa cuando el cliente envía un paquete con credenciales (nombre de usuario y contraseña) al comienzo de la conexión, y el cliente repite la solicitud de autenticación hasta que se recibe el reconocimiento. [6] Es altamente inseguro porque las credenciales se envían " claramente " y repetidamente, lo que lo hace vulnerable incluso a los ataques más simples como escuchas ilegales y ataques de intermediario . Aunque está ampliamente respaldado, se especifica que si una implementación ofrece un método de autenticación más seguro, ese método debe ofrecerse antes que el PAP. Tampoco se espera una autenticación mixta (por ejemplo, el mismo cliente usa alternativamente PAP y CHAP), ya que la autenticación CHAP se vería comprometida si PAP enviara la contraseña en texto sin formato.
El proceso de autenticación en este protocolo siempre lo inicia el servidor/host y se puede realizar en cualquier momento durante la sesión, incluso repetidamente. El servidor envía una cadena aleatoria (normalmente de 128 B de longitud). El cliente utiliza la contraseña y la cadena recibida como entrada para una función hash y luego envía el resultado junto con el nombre de usuario en texto sin formato. El servidor utiliza el nombre de usuario para aplicar la misma función y compara el hash calculado y recibido. Una autenticación es exitosa cuando los hashes calculados y recibidos coinciden.
EAP se desarrolló originalmente para PPP (Protocolo punto a punto), pero hoy en día se usa ampliamente en IEEE 802.3 , IEEE 802.11 (WiFi) o IEEE 802.16 como parte del marco de autenticación IEEE 802.1x . La última versión está estandarizada en RFC 5247. La ventaja de EAP es que es sólo un marco de autenticación general para la autenticación cliente-servidor; la forma específica de autenticación se define en sus muchas versiones llamadas métodos EAP. Existen más de 40 métodos EAP, los más comunes son:
Protocolos complejos utilizados en redes más grandes para verificar al usuario (Autenticación), controlar el acceso a los datos del servidor (Autorización) y monitorear los recursos de la red y la información necesaria para la facturación de los servicios (Contabilidad).
El protocolo AAA más antiguo que utiliza autenticación basada en IP sin ningún cifrado (los nombres de usuario y las contraseñas se transportaban como texto sin formato). La versión posterior XTACACS (TACACS extendido) agregó autorización y contabilidad. Ambos protocolos fueron posteriormente reemplazados por TACACS+. TACACS+ separa los componentes AAA, por lo que pueden segregarse y manejarse en servidores separados (incluso puede usar otro protocolo, por ejemplo, Autorización). Utiliza TCP (Protocolo de control de transmisión) para el transporte y cifra todo el paquete. TACACS+ es propiedad de Cisco.
El servicio de autenticación remota telefónica de usuario (RADIUS) es un protocolo AAA completo que suelen utilizar los ISP . Las credenciales se basan principalmente en una combinación de nombre de usuario y contraseña y utilizan el protocolo NAS y UDP para el transporte. [7]
El diámetro (protocolo) evolucionó a partir de RADIUS e implica muchas mejoras, como el uso de un protocolo de transporte TCP o SCTP más confiable y una mayor seguridad gracias a TLS . [8]
Kerberos es un sistema de autenticación de red centralizado desarrollado en el MIT y disponible como implementación gratuita en el MIT, pero también en muchos productos comerciales. Es el método de autenticación predeterminado en Windows 2000 y posteriores. El proceso de autenticación en sí es mucho más complicado que en los protocolos anteriores: Kerberos utiliza criptografía de clave simétrica , requiere un tercero confiable y puede usar criptografía de clave pública durante ciertas fases de autenticación si es necesario. [9] [10] [11]