La autentificación de doble factor en SMS es insegura, ¿qué alternativas hay?

18 Oct 2018

En los últimos dos años, el concepto de autenticación de doble factor (2FA), defendido a ultranza por los geeks, ha conseguido implementarse de forma masiva. No obstante, la charla sigue limitándose al uso de la 2FA para contraseñas de un solo uso a través de SMS. Y, aunque suene triste, no es la opción más fiable. Te explicamos por qué:

  • Cualquiera pueda ver las contraseñas que recibes por SMS si están activadas las notificaciones en la pantalla de bloqueo.
  • Incluso aunque las notificaciones estén desactivadas, se puede retirar la tarjeta SIM e instalarla en otro smartphone, dando acceso a los mensajes SMS con contraseñas.
  • Los mensajes SMS con contraseñas pueden ser interceptados por un troyano que acecha dentro de tu smartphone.
  • Empleando tácticas ocultas (persuasión, soborno, etc.), los ciberdelincuentes pueden hacerse con una nueva tarjeta SIM con el número de la víctima en cualquier tienda de teléfonos móviles. Entonces, los mensajes SMS irán a esta tarjeta y el teléfono de la víctima se desconectará de la red.
  • Los mensajes SMS con contraseñas se pueden interceptar con un error básico en el protocolo SS7 utilizado para transmitir los mensajes.

Ten en cuenta que ya se han puesto en práctica los métodos de robo de contraseñas en SMS (explotación del SS7) más intensivos y de alta tecnología. El resto es pan comido para los malos. Dicho esto, no nos enfrentamos a hipótesis, sino a amenazas reales.

En general, las contraseñas en SMS no son muy seguras, de hecho, a veces pueden ser muy inseguras. Por lo que tiene sentido que se analicen alternativas en lo que respecta a la 2FA, y de esto vamos a hablar hoy.

Cuál es el método de autentificación de doble factor más adecuado

Códigos de un solo uso en un archivo o en papel

La forma más simple de sustituir las contraseñas de un solo uso en SMS es utilizar, sí, contraseñas de un solo uso, pero elaboradas previamente. No es la peor de las opciones, sobre todo en servicios en los que no inicias sesión frecuentemente. Incluso para el bueno de Facebook, este método puede hacer lo mismo, sobre todo a modo de plan de emergencia.

Es bastante directo: a petición, el servicio genera y muestra una docena de códigos de un solo uso que puedan utilizarse después para autentificar un inicio de sesión. Estos códigos se pueden imprimir o apuntar y guardar en un lugar seguro. O, más simple aún, se pueden guardar en notas cifradas en Kaspersky Password Manager.

Si los códigos se guardan en formato físico o digital da más igual, lo importante es que (1) no se pierdan y que (2) nadie los robe.

También hay una aplicación para ello: Aplicaciones de autentificación

Un único conjunto de códigos de un solo uso cuenta con un inconveniente: tarde o temprano se acabará y te quedarás sin códigos en el momento más inoportuno. Afortunadamente, hay un método más efectivo: los códigos de un solo uso se pueden generar al momento a través de una pequeña aplicación de autentificación (generalmente) muy simple.

Cómo funcionan las aplicaciones de autentificación

Es muy fácil utilizar aplicaciones de 2FA. Esto es lo que tienes que hacer:

  • Instala la aplicación de autentificación en tu smartphone.
  • Ve a ajustes de seguridad del servicio con el que quieres utilizar la aplicación.
  • Selecciona 2FA (damos por hecho que esta opción existe); el servicio mostrará un código QR que se puede escanear directamente en la aplicación 2FA.
  • Escanea el código con la aplicación, generará un nuevo código cada 30 segundos.
Cómo activar una aplicación de doble factor en Facebook

Los códigos se crean sobre la base de una clave (que solo conocéis tú y el servidor) y la hora actual, redondeada en 30 segundos. Ambos componentes son los mismos para ti y el servicio, por lo que los códigos se generan de forma sincronizada. Este algoritmo se conoce por sus siglas en inglés, OATH TOTP (contraseña de un solo uso basada en el tiempo), y es de lejos el más utilizado.

La alternativa es OATH HOPT (siglas en inglés de “contraseña de un solo uso basada en HMAC”). En lugar de la hora actual, este algoritmo utiliza un contador que aumenta en 1 por cada código recién creado. Pero no se utilizan mucho, ya que su uso complica la generación sincrónica de códigos por parte de la aplicación y el servicio. En pocas palabras, existe el riesgo de que el contador se averíe en el momento más inoportuna y tu contraseña de un solo uso no funcione.

Por lo que, OATH TOTP se puede considerar el estándar de facto (aunque oficialmente no es ni siquiera un estándar, según insisten los creadores en las especificaciones).

Compatibilidad del servicio y la aplicación 2FA

La gran mayoría de las aplicaciones 2FA utilizan el mismo algoritmo, por lo que se puede utilizar cualquiera para servicios que admitan autenticadores; la elección es cosa tuya.

Evidentemente, en toda regla hay excepciones. Por razones que solo ellos conocen, algunos servicios prefieren generar sus propias aplicaciones 2FA que funcionan solo para ellos. Además, los mismos servicios no trabajan con otra aplicación que no sea la suya.

Esto es muy común entre los principales editores de videojuegos, como, por ejemplo, Blizzard Authenticator, Steam Mobile con Steam Guard incorporado, Wargaming Auth y demás, todos incompatibles con aplicaciones y servicios de terceros. Estas aplicaciones personalizadas solo pueden utilizarse con las plataformas de los juegos pertinentes.

Adobe también tiene su propia aplicación, Adobe Authenticator, que funciona solo con cuentas AdobeID. No obstante, puedes utilizar otras aplicaciones para autentificarte en AdobeID, por lo que no queda claro por qué se necesita una aplicación diferente.

En cualquier caso, la mayoría de las compañías informáticas normales no restringen a los usuarios en su elección de aplicaciones de 2FA. Y aunque las empresas decidan generar su propia aplicación, la mayoría de las veces se pueden utilizar para proteger no solo sus propias cuentas, sino también aquellas de otros servicios.

Elige la aplicación de autentificación que más te guste por sus funciones adicionales y esta funcionará en la mayoría de los servicios que admitan aplicaciones de 2FA.

Las mejores aplicaciones de autentificación de doble factor

La oferta de aplicaciones de 2FA es sorprendentemente amplia, solo tienes que buscar “autentificador” en Google Play para comprobarlo. No te recomendamos que instales la primera aplicación que te encuentres, puede que no sea la más segura. Recuerda que estás a punto de confiarle las claves de tus cuentas (no sabrá tus contraseñas, evidentemente, pero sí añades la 2FA, ya que las contraseñas se suelen filtrar). Generalmente, conviene elegir aplicaciones diseñadas por desarrolladores de confianza.

Aunque la función básica de todas estas aplicaciones es la misma, generar códigos de un solo uso con el mismo algoritmo, algunos autentificadores cuentan con funciones adicionales y características de interfaz llamativas.

1. Google Authenticator

Platformas admitidas: Android, iOS

La aplicación Google Authenticato

Los medios tecnológicos coinciden: Google Autheticator es la aplicación 2FA más sencilla de utilizar. Ni siquiera tiene configuración. Todo lo que puedes hacer es añadir un nuevo token (el nombre que recibe el generador de código para una cuenta individual) o borrar uno que ya existe. Para copiar un código solo tienes que pulsar en él, ¡eso es todo!

No obstante, esta simplicidad presenta un inconveniente: si no te gusta algo de la interfaz o quieres más características, tendrás que instalar otra aplicación de autentificación.

Pros:
+ Muy fácil de utilizar

 

2. Duo Mobile

Plataforma admitidas: Android, iOS

La aplicación de autentificación Duo Mobile

Duo Mobile también es muy fácil de usar, minimalista y sin ajustes adicionales. Presenta una ventaja frente a Google Authenticator, Duo Mobile oculta los códigos por defecto, así que, para verlos el usuario debe pulsar el token específico. Si, al igual que a mí, a ti tampoco te gusta exponer al mundo los códigos de tus cuentas cada vez que abres el autentificador, Duo Mobile está hecha para ti.

Pros:
+ Esconde los códigos por defecto

 

3. Microsoft Authenticator

Plataformas admitidas: Android, iOS

La aplicación Microsoft Authenticator

Microsoft Authenticator también opta por un enfoque austero, con una aplicación minimalista. Eso sí, cuenta con más funciones que Google Authenticator. Para empezar, aunque todos los códigos aparecen por defecto, cada token se puede configurar por separado para que aparezca en oculto.

En segundo lugar, Microsoft Authenticator simplifica el inicio de sesión en las cuentas de Microsoft. Después de introducir tu contraseña, solo tienes que pulsar el botón de la aplicación para confirmar el inicio; eso es todo. Ni siquiera tienes que introducir un código de un solo uso.

Pros:
+ Se puede configurar para ocultar códigos.
+ Funciones adicionales para iniciar sesión en cuentas de Microsoft.

 

4. FreeOTP

Plataformas admitidas: Android, iOS

La aplicación de autentificación FreeOTP de Red Hat

Hay cuatro razones para instalar esta aplicación de Red Hat. Primero, el software es de fuente abierta. Segundo, es la aplicación menos pesada de nuestra lista, la versión para iOS ocupa solo 750 KB. (En comparación, el minimalista Google Authenticator requiere casi 14 MB y la aplicación Authy, de la que hablamos a continuación, 44 MB).

Tercero, la aplicación oculta los códigos por defecto, solo los muestra si pulsas el token. Cuarto, aunque no menos importante, FreeOTP te permite configurar los token de una forma muy flexible y manual, si así lo deseas. Lógicamente, también cuenta con el método más común de generación de token con código QR.

Pros:
+ Oculta los códigos por defecto.
+ Ocupa solo 750 KB.
+ Fuente abierta.
+ Amplia oferta de ajustes en la creación manual de token.

 

5. Authy

Plataformas admitidas: Android, iOS, Windows, macOS, Chrome

La aplicación de autentificación Twilio Authy

Authy es la aplicación 2FA más sofisticada, con la principal ventaja de que todos los token se almacenan en la nube. Esto posibilita acceder a los token desde cualquiera de tus dispositivos. A su vez, simplifica la migración a nuevos dispositivos. No necesita volver a activar la 2FA en cada servicio, por lo que puedes continuar utilizando los token existentes.

Los token en la nube se encuentran cifrados con una clave basada en una contraseña definida por el usuario, por lo que los datos se almacenan de forma segura, lo cual dificulta el robo. También puedes establecer un código de inicio de sesión para la aplicación o protegerla con huella digital si tu smartphone está equipado con el escáner correcto.

La principal desventaja de Authy es que necesita que configures una cuenta enlazada a tu número de teléfono móvil, de lo contrario, no funciona.

Pros:
+ Los token se almacenan en la nube, por lo que podrás utilizarlos en todos tus dispositivos.
+ La migración a otros dispositivos es muy sencilla por este mismo motivo.
+ Inicio de sesión en la aplicación protegido con código y huella digital.
+ Solo se muestra en la pantalla el código del último token utilizado.
+ Al contrario que otras aplicaciones, no solo admite Android y iOS, sino también Windows, macOS y Chrome.

Contras:
No funciona si no enlazas a la cuenta Authy un número de teléfono.

 

6. Yandex.Key

Plataformas admitidas: Android, iOS

La aplicación de autentificación Yandex.Key

En mi opinión, el concepto que está detrás de Yandex.Key la convierte en la mejor aplicación de 2FA por dos motivos. Primero, no requiere el registro inmediato, por lo que resulta tan fácil de utilizar como Google Authenticator. Segundo, cuenta con varias funciones adicionales para aquellos que lo prefieran.

Yandex.Key se puede bloquear con un código o huella digital. Además, te permite generar copias de seguridad de token protegidas con contraseña en la nube de Yandex (esta etapa no requiere número de teléfono) y restaurarla en cualquier dispositivo que utilices. También se pueden transferir token a un nuevo dispositivo cuando tengas la necesidad de migrar de dispositivo.

Yandex.Key consigue combinar la simplicidad de Google Authenticator con la funcionalidad de Authy, dependiendo de tus preferencias. La única desventaja de la interfaz es que no es fácil utilizarla con un gran número de token.

Pros:
+ Minimalismo al principio, amplia funciolidad disponible a través de los ajustes.
+ Se pueden crear copias de seguridad de token en la nube para utilizarlas en múltiples dispositivos y en la migración a nuevos.
+ El inicio de sesión está protegido con código o huella digital.
+ En la pantalla solo aparece el código del último token utilizado.
+ Remplaza tu contraseña de la cuenta Yandex permanente.

Contras:
Cuando hay muchos token, cuesta encontrar el que necesitas.

Los autentificadores en hardware U2F de FIDO: YubiKey y otros

Si una aplicación que genera códigos de un solo uso te parece una forma endeble e intangible de proteger tus cuentas y quieres algo más sólido y fiable que bloquee tu cuenta con un código que puedas llevar en el bolsillo, no busques más; los token en hardware basados en el estándar U2F (Universal 2nd Factor), creado por FIDO Alliance, son la mejor opción para ti.

Cómo funcionan los token U2F de FIDO

Los token en hardware U2F son los preferidos de los especialistas de seguridad, primero porque, desde la perspectiva de un usuario, funcionan muy fácilmente. Para ponerlo en marcha, simplemente conecta el token U2F a tu dispositivo y regístralo a un servicio compatible. Este proceso solo lleva un par de clics.

Después, para confirmar el inicio de sesión al servicio, tendrás que conectar el token U2F al dispositivo desde el cual estás iniciando sesión y pulsar en el botón token (algunos dispositivos solicitan un código o huella digital, pero esto es una función adicional). Eso es todo, sin ajustes complejos, ni largas secuencias de caracteres u otras palabrerías asociadas con la criptografía.

Cómo autentificarse en Facebook con Yubikey

Inserta la clave y presiona el botón, eso es todo

A su vez, en cuanto al funcionamiento, toda parece estar correctamente: cuando se registra un token en un servicio, se generan un par de claves cifradas, privadas y públicas. La clave pública se almacena en el servidor y la privada, en un chip de elemento seguro, que es el núcleo del token U2F y nunca abandona el dispositivo.

Por otro lado, la clave privada se utiliza para cifrar la confirmación de un inicio de sesión, que se pasa al servidor y puede ser descifrada utilizando la clave pública. Si alguien que finge ser tú intenta transferir una confirmación de inicio de sesión cifrada con la clave privada incorrecta, entonces, descifrarla con la clave pública solo generará tonterías y el servicio no concederá acceso a la cuenta.

Qué tipo de dispositivos U2F hay

El ejemplo más famoso y común de U2F es YubiKey, diseñada por Yubico. Esta compañía inició el estándar, pero dedició hacerlo abierto, por ello se creó FIDO Alliance. Y como el estándar es abierto, tu elección no está limitada: varias compañías producen y venden dispositivos compatibles con U2F, que se ofertan en tiendas online en diferentes modelos.

Yubico YubiKe, el token U2F más popular

Probablemente YubiKey sea el token U2F más popular

Por ejemplo, recientemente Google ha introducido un paquete de autentificadores bajo el nombre Google Titan Security Keays. De hecho, se trata de claves producidas por Freitan Technologies (el segundo creador de token U2F más popular, después de Yubico), cuyo nuevo firmware diseñó Google.

Evidentemente, todos los autentificadores en hardware compatibles con el estándar U2F funcionarán igual con cualquier servicio que sea compatible con este estándar. No obstante, hay diferencias y las más importantes son las interfaces compatibles con la clave, lo cual determina directamente con qué dispositivos puede funcionar:

USB: para conectar a PC (no importa si son Windows, Mac o Linux, las claves funcionan sin necesidad de instalar ningún driver). Además del típico USB-A, hay claves para USB-C.

NFC: requerido para usarse con smartphones y tablets Android.

Bluetooth: requerido en dispositivos móviles que no tienen NFC. Por ejemplo, los propietarios de iPhone siguen necesitando un autentificador de Bluetooth. Aunque iOS ahora permite a las aplicaciones utilizar NFC (hasta este año, solo estaba permitido en Apple Pay), la mayoría de los desarrolladores de aplicaciones compatibles con U2F aun no han aprovechado esta función. Los autentificadores Bluetooth cuentan con un par de desventajas: primero, hay que cargarlos; segundo, tardan más en conectarse.

Los modelos básicos de token U2F normalmente admiten solo U2F y cuestan entre 10 y 20 dólares. Otros dispositivos más caros (entre 20 y 50 dólares) también pueden operar como tarjetas inteligentes, generar contraseñas de un solo uso (incluidos los protocolos OATH TOTP y HOTP), generar y almacenar claves de cifrado PGP y utilizarse para acceder a Windows, macOS, Linux y demás.

Qué escoger: ¿SMS, aplicación o YubiKey?

¿Qué tipo de autentificador es el más adecuado? No existe una respuesta universal. Se pueden utilizar varias versiones y combinaciones según el servicio. Por ejemplo, las cuentas de mayor prioridad (un buzón enlazado a otras cuentas, etc.) deberían estar protegidas al extremo, es decir, protegidas con un token U2F en hardware con todas las opciones 2FA bloqueadas. De esta forma te aseguras de que nadie conseguirá acceso a tu cuenta sin este token.

Una buena opción es enlazar dos claves a tu cuenta, como con las llaves del coche: una siempre en el bolsillo y otra en un lugar seguro en caso de que la primera opción se pierda. Además, puedes utilizar dieferentes tipos de claves: por ejemplo, una aplicación de autentificación en tu smartphone como principal y un token U2F o un papelito con contraseñas de un solo uso en un lugar seguro a modo de copia de seguridad.

En cualquier caso, el consejo principal es que evites utilizar contraseñas de un solo uso en SMS siempre que sea posible. Aunque sí que es verdad que no siempre es posible. Los servicios financieros, por ejemplo, suelen ser muy consevadores y rara vez ofrecen la autentificación a través de otro sistema que no sea SMS.