La autenticación mutua, o autenticación en dos fases, se produce cuando ambos lados de una conexión verifican la identidad del otro.
Después de leer este artículo podrás:
Contenido relacionado
Suscríbase a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.
Copiar enlace del artículo
La autenticación mutua es cuando dos partes de un canal de comunicación verifican la identidad de la otra parte, en lugar de que solo una parte verifique a la otra. La autenticación mutua también se conoce como "autenticación bidireccional", porque el proceso va en ambas direcciones.
Cuando alguien utiliza una aplicación para compartir coche, suele comprobar la matrícula o la descripción del vehículo para asegurarse de que se sube al coche correcto. Una vez que se sube, el conductor pregunta al pasajero su nombre para confirmar que está recogiendo a la persona correcta. Tanto el pasajero como el conductor comprueban que están interactuando con la persona prevista, de modo que el conductor preste el servicio correcto, el pasajero esté en un coche que va a su destino, y ambos pueden confirmar que están con alguien que ha sido verificado por la aplicación de viajes compartidos.
De forma similar, la autenticación mutua verifica a ambas partes en un canal de comunicación digital. Por ejemplo, un cliente y un servidor que utilizan la autenticación mutua toman medidas para verificar de forma independiente la identidad del otro, en lugar de que solo el cliente autentique al servidor. Las conexiones de dispositivo a dispositivo, como las que se establecen entre los dispositivos del Internet de las Cosas (IoT), también suelen utilizar la autenticación mutua.
La autenticación mutua se suele asociar con el protocolo Transport Layer Security (TLS), pero también la pueden utilizar otros protocolos y en otros contextos. Más información sobre la autenticación mutua de TLS.
Hay tres métodos principales para autentificar mutuamente los extremos de un canal de comunicación:
1. Autenticación de clave pública: Este método se basa en la criptografía de clave pública. Una clave es una cadena de datos que puede utilizarse para encriptar o firmar datos digitalmente. La criptografía de clave pública utiliza dos claves: una clave pública y una clave privada. Los datos encriptados con la clave pública se desencriptan con la clave privada.
En la autenticación mutua de clave pública, ambas partes de la comunicación anuncian una clave pública, y ambas tienen que demostrar que poseen la clave privada que acompaña a su clave pública, como quien muestra un documento de identidad emitido por el gobierno para verificar su nombre Cada parte envía una firma digital a la otra parte. Si la firma se puede verificar con la clave pública, entonces se utilizó la clave privada correcta, y la parte que envió la firma es legítima.
2. Autenticación por certificado: este enfoque es similar a la autenticación de clave pública, salvo que en lugar de tener solo una clave pública, ambas partes cuentan con un certificado de clave pública. El certificado contiene información adicional que ayuda a verificar la identidad de las partes, incluyendo quién emitió el certificado y la clave pública, a quién se aplica el certificado, cuándo caduca el certificado, etc. Los certificados TLS pueden utilizarse para este tipo de autenticación mutua si ambas partes tienen uno.
3. Nombre de usuario y contraseña: a pesar del nombre, este método de autenticación mutua sigue utilizando un certificado en el lado del servidor. El servidor presenta un certificado al cliente, que lo verifica. En el lado del cliente, es como la típica autenticación de nombre de usuario/contraseña: el cliente envía su combinación de nombre de usuario y contraseña al servidor, que verifica las credenciales.
La autenticación unidireccional ocurre todo el tiempo en Internet. Cada vez que alguien carga un sitio web que utiliza HTTPS, su dispositivo autentica la identidad del servidor web al comprobar el certificado TLS del servidor. Otro ejemplo sería el de una persona que inicia sesión en su cuenta en una aplicación: en este caso, la aplicación está autenticando a la persona.
Aunque la autenticación mutua elimina algunos fallos de seguridad y hace que algunos tipos de ataques sean mucho más difíciles de llevar a cabo, añade más tiempo y potencia informática al intercambio de información. También requiere cierta configuración previa: ambas partes de la comunicación necesitan un conjunto de credenciales, un par de claves públicas y privadas, o un certificado de clave pública (según el tipo de autenticación que se use). Esto hace que el usuario medio tenga dificultades para implementar la autenticación mutua, y por eso la autenticación mutua no suele formar parte de TLS cuando alguien utiliza una aplicación web.
Entre los principales casos de uso de la autenticación mutua se incluyen:
Ataques en ruta: en un ataque en ruta, un atacante se encuentra en el medio de una conexión entre dos partes. El atacante intercepta las comunicaciones en ambas direcciones y se hace pasar por los dos extremos de la conversación. La autenticación mutua ayuda a detener este tipo de ataque, ya que el atacante no podrá autenticarse en ambos extremos de la comunicación.
Suplantación y falsificación de identidad: los atacantes utilizan estos ataques para engañar a un servidor o a un usuario al hacerle creer que son una parte conocida y de confianza. Un atacante podría suplantar un servidor web a un usuario, o viceversa. Estos ataques son mucho más difíciles de llevarse a cabo cuando ambas partes tienen que autenticarse.
Robo de credenciales: algunas formas de autenticación mutua se basan en contraseñas, y estas podrían ser objeto de robo de credenciales (cuando un atacante roba la contraseña de un usuario legítimo). Sin embargo, como la autenticación mutua suele basarse en la clave pública, el robo de credenciales no es posible porque no hay credenciales que robar. Esto puede impedir que los ataques de phishing tengan efecto.
Estos protocolos de red llevan incorporada la autenticación mutua u ofrecen la opción de utilizarla:
Protocolo Secure Shell (SSH): SSH es un protocolo de tunelización para conectarse de forma segura a un servidor o dispositivo en remoto. SSH puede utilizar la autenticación por clave pública o por certificado. En otras palabras, es posible autenticarse mutuamente en SSH con una clave pública o con un certificado de clave pública.
TLS: aunque TLS no autentica mutuamente ambos extremos de una conexión por defecto, se puede utilizar para este fin. El mutual TLS (mTLS) es uno de los tipos de autenticación mutua más utilizados. En mTLS, ambos lados de una conexión tienen un certificado TLS. mTLS se utiliza comúnmente para las aplicaciones de seguridad API, de seguridad IoT y de seguridad de Zero Trust.
La autenticación mutua es el núcleo de varias de las soluciones de seguridad Zero Trust que ofrece Cloudflare. Cloudflare Zero Trust, una plataforma para el control de acceso a aplicaciones y la navegación por Internet, ofrece mTLS para la verificación de usuarios y dispositivos. Cloudflare API Shield da soporte a mTLS para la autenticación y seguridad de la API.