En los últimos dos años, el concepto de autenticación de dos factores (2FA), durante mucho tiempo reservado a los geeks, se ha abierto paso en la corriente principal. Sin embargo, se sigue hablando en gran medida del uso de 2FA para contraseñas de un solo uso a través de SMS. Lamentablemente, esta no es la opción más fiable. He aquí por qué:
- Es fácil echar un vistazo a las contraseñas enviadas por SMS si las notificaciones de la pantalla de bloqueo están activadas.
- Incluso si las notificaciones están desactivadas, se puede extraer una tarjeta SIM e instalarla en otro smartphone, dando acceso a los mensajes SMS con contraseñas.
- Los mensajes SMS con contraseña pueden ser interceptados por un troyano al acecho dentro del smartphone.
- Utilizando diversas tácticas turbias (persuasión, soborno, etc.), los delincuentes pueden hacerse con una nueva tarjeta SIM con el número de la víctima en una tienda de telefonía móvil. Los mensajes SMS irán entonces a esta tarjeta, y el teléfono de la víctima se desconectará de la red.
- Los mensajes SMS con contraseñas pueden ser interceptados a través de un fallo básico en el protocolo SS7 utilizado para transmitir los mensajes.
Tenga en cuenta que incluso el método de robo de contraseñas por SMS más tecnológico y laborioso (explotación del SS7) ya ha sido utilizado en la práctica. El resto es rutina diaria para los malos. Dicho esto, no estamos tratando con hipótesis, sino con una amenaza viva.
En general, las contraseñas por SMS no son muy seguras, y a veces son muy inseguras. Así que tiene sentido otear el horizonte en busca de alternativas cuando se trata de 2FA, que es el tema de hoy.
- Códigos de un solo uso en un archivo o en papel
- También hay una aplicación para eso: Aplicaciones de autenticación
- Cómo funcionan las aplicaciones de autenticación
- Compatibilidad de aplicaciones y servicios 2FA
- Mejores aplicaciones para la autenticación de dos factores
- 1. Google Authenticator
- 2. Duo Mobile
- 3. Microsoft Authenticator
- 4. FreeOTP
- 5. Authy
- 6. Yandex.Key
- Autenticadores de hardware U2F: YubiKey y otros
- Cómo funcionan los tokens FIDO U2F
- ¿Qué tipos de dispositivos U2F existen
- ¿Qué elegir? ¿SMS, aplicación o YubiKey?
Códigos de un solo uso en un archivo o en papel
La forma más sencilla de sustituir las contraseñas de un solo uso basadas en SMS es utilizar, sí, contraseñas de un solo uso, pero preparadas de antemano. No es la peor opción, sobre todo para los servicios en los que se entra con poca frecuencia. Incluso para el viejo Facebook, este método puede servir, especialmente como plan de respaldo.
Es bastante sencillo: Si se solicita, el servicio genera y muestra una docena de códigos de un solo uso que pueden utilizarse posteriormente para autenticar un inicio de sesión. Estos códigos pueden imprimirse o anotarse y guardarse en una caja fuerte. O, aún más sencillo, pueden guardarse en notas encriptadas en un gestor de contraseñas.
No es tan importante si los códigos se guardan en formato físico o digital: lo que importa es que (1) no se pierdan y (2) no puedan ser robados.
También hay una aplicación para eso: Aplicaciones de autenticación
Además de todos los «unos» de esta frase, un conjunto de códigos de un solo uso generados una sola vez tiene un inconveniente: Tarde o temprano se acabará, y podrías quedarte sin código en el momento más inoportuno. Afortunadamente, hay una forma mejor: Los códigos de un solo uso pueden generarse sobre la marcha utilizando una pequeña y (normalmente) muy sencilla aplicación de autenticación.
Cómo funcionan las aplicaciones de autenticación
Es muy fácil utilizar las aplicaciones 2FA. Esto es lo que tienes que hacer:
- Instala la app autentificadora en tu smartphone,
- Ve a la configuración de seguridad del servicio con el que quieres usar la app,
- Selecciona 2FA (suponiendo que la opción exista); el servicio te mostrará un código QR que puedes escanear directamente en la app 2FA,
- Escanea el código con la app: empezará a generar un nuevo código de un solo uso cada 30 segundos.
Los códigos se crean sobre la base de una clave (conocida sólo por usted y el servidor) y la hora actual, redondeada a 30 segundos. Ambos componentes son los mismos para usted y el servicio, por lo que los códigos se generan de forma sincronizada. Este algoritmo se denomina OATH TOTP (Time-based One-Time Password), y es con mucho el más utilizado.
Existe una alternativa, conocida como OATH HOTP (HMAC-based One-Time Password). En lugar de la hora actual, este algoritmo utiliza un contador que aumenta en 1 por cada código recién creado. Pero rara vez se encuentra en la vida real, porque su uso complica la generación sincrónica de códigos en el lado de la aplicación y del servicio. En pocas palabras, existe un riesgo no sustancial de que el contador se descontrole en el momento equivocado, y tu contraseña de un solo uso no funcione.
Así, OATH TOTP puede considerarse el estándar de facto (aunque oficialmente ni siquiera es un estándar, como insisten sus creadores en la especificación).
Compatibilidad de aplicaciones y servicios 2FA
La gran mayoría de las aplicaciones 2FA utilizan el mismo algoritmo, por lo que cualquiera puede ser utilizada para los servicios que soportan autenticadores; elige tu opción.
Por supuesto, como con cualquier regla general, hay excepciones. Por razones que sólo ellos conocen, algunos servicios prefieren crear sus propias aplicaciones 2FA que sólo funcionan para ellos. Es más, los propios servicios no funcionan con ninguna otra aplicación que no sea la suya.
Esto es especialmente común entre los principales editores de videojuegos: por ejemplo, Blizzard Authenticator, Steam Mobile con Steam Guard incorporado, Wargaming Auth, y otros son todos incompatibles con aplicaciones y servicios de terceros. Sólo estas aplicaciones personalizadas pueden utilizarse con las plataformas de juego correspondientes.
Este extraño camino también lo tomó Adobe con su Adobe Authenticator, que sólo funciona con cuentas de AdobeID. Sin embargo, se pueden utilizar otros autenticadores para autenticarse en AdobeID, por lo que no está nada claro por qué se necesitaba una aplicación separada.
En cualquier caso, la mayoría de las empresas de TI normales no restringen a los usuarios en su elección de aplicaciones 2FA. E incluso si una empresa decide repentinamente crear su propia aplicación, la mayoría de las veces puede utilizarse para proteger no sólo sus propias cuentas, sino también las de otros servicios.
Sólo tiene que elegir la aplicación de autenticación que más le guste en términos de características adicionales: funcionará con la mayoría de los servicios que generalmente admiten aplicaciones 2FA.
Mejores aplicaciones para la autenticación de dos factores
La elección de aplicaciones 2FA es sorprendentemente amplia. Busca «autenticador» en Google Play o en la App Store y verás decenas de opciones. No te recomendamos que instales la primera aplicación que veas; puede que no sea la más segura. Recuerda que estás a punto de confiarle las claves de tus cuentas (no conocerá tus contraseñas, por supuesto, pero estás añadiendo 2FA porque las contraseñas tienen tendencia a filtrarse). En general, vale la pena optar por una app hecha por un desarrollador importante y de confianza.
Aunque la función básica de todas estas apps es la misma -crear códigos de un solo uso utilizando un mismo algoritmo-, algunos autenticadores tienen funciones extra o características de la interfaz que pueden resultar atractivas. Estas son algunas de las opciones más interesantes.
1. Google Authenticator
Plataformas soportadas: Android, iOS
Como señalan todos los medios tecnológicos, Google Authenticator es la más fácil de usar de todas las muchas aplicaciones 2FA que existen. Ni siquiera tiene ajustes. Todo lo que te permite hacer es añadir un nuevo token (el nombre dado al generador de códigos para una cuenta individual) o eliminar uno existente. Para copiar un código todo lo que tienes que hacer es tocarlo. Eso es todo!
Sin embargo, esta simplicidad tiene un inconveniente: Si no te gusta algo de la interfaz o quieres más funciones, tendrás que instalar otra app autentificadora.
+ Muy fácil de usar.
2. Duo Mobile
Plataformas compatibles: Android, iOS
Duo Mobile también es extremadamente fácil de usar, minimalista y libre de ajustes adicionales. Tiene una ventaja sobre Google Authenticator: Duo Mobile mantiene los códigos ocultos por defecto: para verlos, el usuario debe tocar el token específico. Si, como a mí, no te gusta tener un montón de códigos de todas tus cuentas a la vista del público cada vez que abres el autenticador, entonces esta característica de Duo Mobile es para ti.
+ Oculta los códigos por defecto.
3. Microsoft Authenticator
Plataformas soportadas: Android, iOS
Microsoft también optó por el enfoque sin adornos con su autenticador minimalista. Dicho esto, Microsoft Authenticator es notablemente más rico en características que Google Authenticator. Para empezar, aunque todos los códigos se muestran por defecto, cada token puede configurarse por separado para que quede oculto.
En segundo lugar, Microsoft Authenticator simplifica el inicio de sesión en las cuentas de Microsoft. Después de introducir su contraseña, todo lo que tiene que hacer es tocar el botón en la aplicación para confirmar el inicio de sesión – y eso es todo, ni siquiera es necesario introducir un código de una sola vez.
+ Se puede configurar para ocultar los códigos.
+ Funciones adicionales para iniciar sesión en cuentas de Microsoft.
4. FreeOTP
Plataformas compatibles: Android, iOS
Hay cuatro razones por las que podrías elegir este bebé de Red Hat. En primer lugar, el software es de código abierto. En segundo lugar, es la aplicación más ligera de nuestra lista: la versión para iOS sólo ocupa 750 KB (en comparación, el minimalista Google Authenticator requiere casi 14 MB y la aplicación Authy, de la que hablaremos más adelante, ocupa la friolera de 44 MB).
En tercer lugar, la aplicación oculta los códigos por defecto, mostrándolos sólo si se toca el token. En cuarto lugar, pero no por ello menos importante, FreeOTP le permite configurar los tokens de forma muy flexible y manual, si así lo desea. Naturalmente, también se admite el método habitual de creación de tokens, mediante el escaneo de un código QR.
+ Oculta los códigos por defecto.
+ Ocupa sólo 750KB.
+ Código abierto.
+ Máxima configuración al crear un token manualmente.
5. Authy
Plataformas soportadas: Android, iOS, Windows, macOS, Chrome
Authy es la más elegante de las aplicaciones 2FA, cuya principal ventaja es que todos los tokens se almacenan en la nube. Esto permite acceder a los tokens desde cualquiera de tus dispositivos. Al mismo tiempo, simplifica la migración a nuevos dispositivos. No es necesario reactivar el 2FA en cada servicio, por lo que puede seguir utilizando los tokens existentes.
Los tokens en la nube se cifran con una clave basada en una contraseña definida por el usuario, lo que significa que los datos se almacenan de forma segura y no son en absoluto fáciles de robar. También puedes establecer un PIN de inicio de sesión para la aplicación o protegerla con una huella dactilar si tu smartphone está equipado con el escáner adecuado.
La principal desventaja de Authy es que requiere que configures una cuenta vinculada a un número de teléfono móvil, de lo contrario no funcionará en absoluto.
+ Los tokens se almacenan en la nube, lo que permite utilizarlos en todos tus dispositivos.
+ La migración a otros dispositivos es muy fácil por esa misma razón.
+ El inicio de sesión de la aplicación está protegido por PIN o huella digital.
+ Sólo se muestra en pantalla el código del último token utilizado.
+ A diferencia de otras apps, es compatible no solo con Android e iOS, sino también con Windows, macOS y Chrome.
– No funciona sin una cuenta de Authy vinculada a un número de teléfono.
6. Yandex.Key
Plataformas soportadas: Android, iOS
En mi opinión, el concepto detrás de Yandex.Key la convierte en la mejor aplicación para 2FA. Por un lado, no requiere un registro inmediato: puedes empezar a utilizarla tan fácilmente como Google Authenticator. Por otro lado, tiene varias características adicionales disponibles para aquellos que no son tímidos en la configuración.
En primer lugar, Yandex.Key se puede bloquear con un PIN o una huella digital. En segundo lugar, permite crear una copia de seguridad protegida por contraseña de los tokens en la nube de Yandex (esta etapa sí requiere un número de teléfono) y restaurarla en cualquier dispositivo que se utilice. Del mismo modo, es posible transferir los tokens a un nuevo dispositivo cuando necesites migrar.
Yandex.Key consigue combinar la simplicidad de Google Authenticator con la funcionalidad ampliada de Authy, según lo que prefieras. El único inconveniente de la aplicación es que la interfaz no es tan fácil de usar con un gran número de tokens.
+ Minimalismo al principio, funcionalidad ampliada disponible a través de la configuración.
+ Se pueden crear copias de seguridad de los tokens en la nube para su uso en varios dispositivos y la migración a otros nuevos.
+ El inicio de sesión en la app está protegido por PIN o huella dactilar.
+ Sólo se muestra en pantalla el código del último token utilizado.
+ Sustituye la contraseña permanente de su cuenta de Yandex.
– Con muchos tokens, no es tan fácil encontrar el que se necesita.
Autenticadores de hardware U2F: YubiKey y otros
Si una app que genere códigos de un solo uso te parece una forma demasiado endeble e intangible de proteger tus cuentas, y quieres algo más sólido y fiable que bloquee tu cuenta con una llave que vaya literalmente en tu bolsillo, no busques más que los tokens de hardware basados en el estándar U2F (Universal 2nd Factor), creado por la FIDO Alliance.
Cómo funcionan los tokens FIDO U2F
Los tokens de hardware U2F son los preferidos de los especialistas en seguridad, principalmente porque, desde la perspectiva del usuario, funcionan de forma muy sencilla. Para empezar, basta con conectar el token U2F al dispositivo y registrarlo en un servicio compatible. Todo el proceso lleva un par de clics.
Después, para confirmar el inicio de sesión en el servicio, tendrá que conectar el token U2F al dispositivo desde el que está iniciando la sesión y tocar el botón del token (algunos dispositivos requieren un PIN o el escaneo de la huella dactilar, pero eso es una función adicional). Eso es todo: no hay configuraciones complejas, ni hay que introducir largas secuencias de caracteres aleatorios, ni ningún otro galimatías que se suele asociar a la palabra criptografía.
Inserta la clave y pulsa el botón – y eso es todo
Al mismo tiempo, bajo el capó las cosas son inteligentes y criptográficamente sólidas: Al registrar un token en un servicio, se crea un par de claves criptográficas – privada y pública. La clave pública se almacena en el servidor, y la privada se guarda en un chip Secure Element, que es el corazón del token U2F, y nunca sale del dispositivo.
La clave privada se utiliza para cifrar la confirmación de inicio de sesión, que se pasa al servidor y puede descifrarse utilizando la clave pública. Si alguien que se hace pasar por usted intenta transferir una confirmación de inicio de sesión cifrada con la clave privada equivocada, al descifrarla con la clave pública se producirá un galimatías, y el servicio no concederá el acceso a la cuenta.
¿Qué tipos de dispositivos U2F existen
El ejemplo más famoso y común de U2F es YubiKey, fabricado por Yubico. Esta empresa encabezó esencialmente este estándar, pero optó por hacerlo abierto, para lo cual se creó la FIDO Alliance. Y como el estándar es abierto, su elección no está restringida: Varias empresas fabrican y venden dispositivos compatibles con U2F, y las tiendas online ofrecen una serie de modelos diferentes.
YubiKey – quizás el token U2F más popular
Por ejemplo, Google presentó recientemente un conjunto de autenticadores bajo el nombre de Google Titan Security Keys. De hecho, son llaves producidas por Feitian Technologies (el segundo fabricante más popular de tokens U2F, después de Yubico) para las que Google desarrolló su propio firmware.
Por supuesto, todos los autentificadores de hardware compatibles con el estándar U2F funcionarán igualmente bien con cualquier servicio que también sea compatible con este estándar. Sin embargo, hay diferencias, la más importante son las interfaces soportadas por la llave. Esto determina directamente con qué dispositivos puede funcionar:
USB: para conectarse a los PC (no importa si funcionan con Windows, Mac o Linux; las llaves funcionan sin necesidad de instalar ningún controlador). Además del habitual USB-A, hay llaves para USB-C.
NFC: necesario para usar con smartphones y tabletas Android.
Bluetooth: necesario en dispositivos móviles que no tienen NFC. Por ejemplo, los propietarios de iPhone siguen necesitando un autentificador basado en Bluetooth. Aunque iOS permite ahora que las aplicaciones utilicen NFC (antes de este año, solo se permitía Apple Pay), la mayoría de los desarrolladores de aplicaciones compatibles con U2F aún no han aprovechado esta función. Los autentificadores Bluetooth tienen un par de inconvenientes: en primer lugar, hay que cargarlos; en segundo lugar, tardan mucho más en conectarse.
Los modelos básicos de tokens U2F suelen admitir sólo U2F y cuestan entre 10 y 20 dólares. Otros dispositivos más caros (entre 20 y 50 dólares) también pueden funcionar como una tarjeta inteligente, generar contraseñas de un solo uso (incluyendo OATH TOTP y HOTP), generar y almacenar claves de cifrado PGP, y ser utilizados para iniciar sesión en Windows, macOS, Linux, etc.
¿Qué elegir? ¿SMS, aplicación o YubiKey?
Entonces, ¿qué elegir para la autenticación de dos factores? No hay una respuesta universal a esta pregunta. Se pueden utilizar varias versiones y combinaciones de 2FA para diferentes servicios. Por ejemplo, las cuentas de máxima prioridad (un buzón vinculado a otras cuentas, etc.) deberían estar protegidas al máximo, es decir, bloqueadas con un token U2F de hardware con todas las demás opciones 2FA bloqueadas. De esta manera puedes estar seguro de que nadie podrá acceder a tu cuenta sin este token.
Una buena opción es vincular dos llaves a tu cuenta, como con las llaves del coche: una está siempre en tu bolsillo, la otra está en un lugar seguro en caso de que la primera se pierda. Además, puedes utilizar diferentes tipos de llaves: Por ejemplo, una aplicación de autenticación en tu smartphone como principal, y un token U2F o un trozo de papel con contraseñas de un solo uso en tu caja fuerte como respaldo.
En cualquier caso, el principal consejo es evitar el uso de contraseñas de un solo uso basadas en SMS siempre que sea posible. Es cierto que no siempre es posible. Los servicios financieros, por ejemplo, son notoriamente conservadores y rara vez ofrecen autenticación a través de algo que no sea un SMS.