How do apps [...] compare to using a hardware auth token [...]?
A prima vista, non differiscono troppo. Bene, in entrambi i casi hai qualche altro dispositivo che ti fa un ulteriore passo di verifica crittografica. Ma una differenza importante è la complessità del sistema (l'intero software su quel dispositivo).
Su uno smartphone ci sono molti pezzi di software interattivi che formano diversi fornitori (app), mentre un token di autenticazione dedicato è molto più semplice dal momento che il servizio ha solo questo scopo. Pertanto, la probabilità e la superficie di vulnerabilità sono generalmente inferiori per il sistema più semplice.
Un'altra differenza potrebbe essere l'algoritmo utilizzato per quella fase di autenticazione. Ma questo non dipende comunque dall'hardware. Tuttavia, le app tendono ad essere più semplici, ad es. Generatori di password monouso basati sul tempo, mentre gli altri sono solitamente più sofisticati riguardo al loro unico scopo, ad esempio U2F utilizza la crittografia a chiave pubblica basata su challenge. BTW è uno dei motivi per cui l'utilizzo di U2F richiede anche il supporto del browser per inoltrare la sfida allo stick U2F.
How real is the possibility of an Android system being hijacked [...] and [...] secret keys being extracted?
Beh, è vero che puoi hackerare un telefono cellulare come ogni altro sistema e ottenere l'accesso root . Se una chiave può essere estratta, dipende da come l'app memorizza quel segreto. Ma dal momento che deve salvarlo e dal momento che non esiste una vera memoria privata su dispositivi Android (AFAIK), un utente malintenzionato che ha ottenuto l'accesso root potrebbe copiare la chiave.
[...] are there any other advantages to app-based 2FA?
A livello di sicurezza, non credo ci sia alcun vantaggio per gli smartphone rispetto all'hardware dedicato. Ma le app di solito sono molto più facili da installare e configurare rispetto a quei sistemi specializzati. E un sistema che è complicato per essere usato da un utente medio, non migliora nulla in un mondo reale. Si noti inoltre che questi sistemi speciali necessitano solitamente di un ulteriore supporto per i service provider, e se una tecnica è complicata da implementare o poco utilizzata, l'utente migliore non può fare nulla senza i servizi supportati.
Given that [...] you authenticate a request or login session in real-time, is it not vulnerable to real-time authentication replay phishing attacks?
Per quanto posso vedere, puoi generalmente fare un attacco Man-in-the-middle e dirottare la sessione autenticata. Ma questo è ciò che i certificati SSL intendono prevenire.
Ed è accompagnato da una crittografia che limita l'usabilità dei semplici attacchi di replay. Una parte modulo SSL, riproduzione su token basati sul tempo è una possibilità. Tuttavia, un fornitore di servizi potrebbe integrare i token utilizzati con successo e impedire i replay. Tuttavia, se l'aggressore fosse abbastanza veloce, sarebbe quello che avrebbe avuto successo.