La autenticación de dos factores ( A2F ) o verificación en dos pasos ( two-factor authentication o 2FA en Inglés ) está muy de moda sobre todo para servicios en Internet como Facebook , Twiter , Gmail , Dropbox , entre otros. Los cuales permiten tener una capa extra de seguridad de la información de los usuarios.
En esta publicación les mostraré en qué consiste la autenticación de dos factores y en las siguientes publicaciones cómo implementarla en Scriptcase , específicamente por medio de 2 servicios de software diferentes: Swivel y Desarrollo Propio en NodeJS , espero luego mostrarles como hacerlo con algún hardware específico.
Conceptos
Conceptualmente la autenticación de dos factores consiste en adicionar un paso a la autenticación ya existente, cuando se requiere acceder a una aplicación o se requiere validar un usuario para una tarea específica. En términos generales de seguridad existen diferentes tipos de autenticación que combinados dan un mejor nivel de seguridad, estos son:
- Algo que el usuario sabe. Esto quiere decir, que el usuario conoce y recuerda cuando se le solicita, como la clave del correo o la clave de 4 dígitos de su cajero electrónico.
- Algo que el usuario tiene. Hace referencia a algún objeto físico o virtual que el usuario tiene, como por ejemplo, las Tarjetas Débito o Crédito, también aplican llaves USB con códigos o sin ellos, teclados virtuales, mensajes SMS, correos electrónicos, entre otros.
- Algo que el usuario es. Hace referencia a alguna característica biométrica como puede ser la huella dactilar o la lectura del iris.
OTC On Time Code y OTP One Time Password.
Estas definiciones hacen referencia a cadenas de caracteres que pueden ser numéricas o alfanuméricas que solo se usarán una sola vez para acceder a la aplicación, son generadas dinámicamente y enviadas por SMS, o con una aplicación del móvil, etc. cada vez que un usuario se desea loguear. Sin embargo, para aquellas estaciones de trabajo o móviles en donde el acceso es constante y/o regular, se puede configurar para q no pida esa A2F sino cuando se acceda desde otro dispositivo diferente.
Veamos un poco más en detalle algunos ejemplos de los elementos más usados del tipo de autenticación “Algo que el usuario tiene” son:
Tokens hardware para A2F (Hard Tokens)
Es seguramente la forma más antigua de usar A2F, los tokens de hardware son pequeños, como un llavero, y producen un nuevo código numérico cada cierto tiempo (30 segundos en promedio). Cada vez que el usuario desea ingresar a la aplicación, mira el dispositivo e ingresa el código A2F actual y lo digita en el sitio o la aplicación.
Algunos otros tokens de hardware transfieren automáticamente el código A2F cuando los conectan directamente al puerto USB del computador.
Tokens de software para A2F (Soft Tokens)
Talvez es una de las más populares formas de autenticación de dos factores, la cual funciona de manera similar a la anterior, ya que utiliza un código de acceso único generado pero la diferencia radica en que es solo software. Primero, el usuario debe descargar e instalar una aplicación A2F gratuita en su teléfono inteligente o computador de escritorio, por ejemplo, Google Authenticator. Cuando se inicia sesión, el usuario ingresa primero un nombre de usuario y contraseña, y luego, cuando se le solicita, debe ingresar el código que se muestra en la aplicación.
Ejemplo A2F en Google con Google Authenticator.
SMS de mensajes de texto y/o voz basada en A2F
Obviamente al ser un SMS la dependencia con el teléfono móvil es total. Su funcionamiento es que después de recibir un nombre de usuario y contraseña, el sitio usando SMS envía al usuario un código de acceso único por única vez (OTP). La diferencia entre texto y voz, radica que cuando es por voz, cuando el usuario accede, una llamada es realizada automáticamente al usuario para leer el OTP para poder acceder. Esta opción es usada en países donde la telefonía móvil es deficiente y/o los smartphones son muy costosos.
De modo que, si podemos combinar elementos de cada uno de estos tipos de autenticación, podríamos decir que nuestra aplicación sería más segura. Y hay que aclarar, que no significa que sea impenetrable, solo que será más difícil para alguien no autorizado acceder a nuestra información.
Ahora bien, regularmente cuando hablamos de implementar A2F a nuestras aplicaciones, lo que regularmente hacemos es adicionar una capa a la tradicional que ya se tiene, porque el 99% de las aplicaciones usan el tipo de autenticación “Algo que el usuario sabe” por que las credenciales de acceso son un usuario y una clave. De modo, que un segundo factor podría ser otro elemento de los 2 tipos de autenticación restantes.
En las 2 siguientes publicaciones usaremos como segundo factor “Algo que el usuario tiene”, pero a nivel de servicios (software) ya que en el primer ejemplo, usaremos un “teclado virtual” para validar un PIN o Clave dentro de nuestra aplicación y en el otro ejemplo, nos enviarán un código por correo, SMS o usaremos Google Authenticator .
Vale aclarar también que las especificaciones y como funciona el A2F, depende totalmente del proveedor de servicio. Y en la mayoría de los casos existen ejemplos en código fuente para diferentes lenguajes como PHP, .Net, Java, entre otros.
Existen diferentes proveedores de servicios para A2F entre muchos otros, algunos de estos son:
- Swivel. https://swivelsecure.com/
- CA. https://www.ca.com/us/products/ca-strong-authentication.html
- RSA. https://www.rsa.com/en-us/products/rsa-securid-suite/rsa-securid-access/authent ication-manager
- SafeNet. https://www2.gemalto.com/sas/
En mi siguiente publicación les hablaré de cómo Implementar A2F usando Swivel en una aplicación Scriptcase.
¡Vea más artículos en nuestro blog!
También podría gustarte…