¿Cómo se comparan las aplicaciones con [...] el uso de un token de autenticación de hardware?
A primera vista, no difieren demasiado. Bueno, en ambos casos tiene otro dispositivo que realiza un paso de verificación criptográfica adicional para usted. Pero una diferencia importante es la complejidad del sistema (todo el software en ese dispositivo).
En un teléfono inteligente hay una gran cantidad de piezas interactivas de software de diferentes proveedores (aplicaciones), mientras que un token de autenticación dedicado es mucho más sencillo ya que sirve solo para este propósito. Por lo tanto, la probabilidad y la superficie de vulnerabilidad son generalmente más bajas para el sistema más simple.
Otra diferencia sería el algoritmo real utilizado para ese paso de autenticación. Pero esto no depende de ninguna manera del hardware. Sin embargo, las aplicaciones tienden a ser más simples, por ejemplo. Los generadores de contraseña de un solo uso basados en el tiempo, mientras que los otros suelen ser más sofisticados en cuanto a su único propósito, por ejemplo, U2F utiliza criptografía de clave pública basada en desafíos. Por cierto, esa es una de las razones por las que usar U2F también requiere soporte desde el navegador para enviar el desafío a la palanca U2F.
¿Qué tan real es la posibilidad de que un sistema Android sea [...] secuestrado y que se extraigan [...] claves secretas?
Bueno, es real que puedes hackear un teléfono móvil como cualquier otro sistema informático y obtener acceso a root . Si se puede extraer una clave, depende de cómo la aplicación almacena ese secreto. Pero como tiene que guardarlo y como no hay una memoria privada real en los dispositivos Android (AFAIK), un atacante que obtuvo acceso root podría copiar la clave.
[...] ¿hay otras ventajas para 2FA basado en aplicaciones?
En un nivel de seguridad simple, no creo que haya ninguna ventaja para los teléfonos inteligentes en comparación con el hardware dedicado. Pero las aplicaciones suelen ser mucho más fáciles de instalar y configurar que los sistemas especializados. Y un sistema que es complicado de usar por un usuario promedio, no mejora nada en el mundo real. También tenga en cuenta que esos sistemas especiales generalmente necesitan soporte adicional del proveedor de servicios, y si una técnica es complicada de implementar o casi no se usa, el mejor usuario no puede hacer nada sin los servicios compatibles.
Dado que [...] autentica una solicitud o sesión de inicio de sesión en tiempo real, ¿no es vulnerable a los ataques de phishing de reproducción en tiempo real?
Por lo que puedo ver, generalmente puedes hacer un ataque Man-in-the-middle y secuestrar la sesión autenticada. Pero eso es lo que pretenden evitar los certificados SSL.
Y se acompaña de un cifrado que limita la facilidad de uso de los ataques de repetición simples. Una parte de SSL, la reproducción en tokens basados en tiempo es una posibilidad. Sin embargo, un proveedor de servicios podría alistar los tokens utilizados con éxito y evitar las repeticiones. Aun así, si el atacante fuera lo suficientemente rápido, él sería quien tuviera éxito.