TOTP è un'estensione dell ' algoritmo One Time Password basato su HMAC (HOTP). Sia TOTP che HOTP richiedono una chiave segreta da incorporare nell'algoritmo. Dispositivi e token che implementano TOTP ( Yubikey , Google Authenticator app ) sono progettati per proteggere la chiave segreta dall'estrazione.
Ad esempio, menziona Yubico :
Secure manufacturing process
The YubiKey is manufactured in Sweden, in a fully access automated process, using YubiHSM technology to
ensure that no staff or IT administrators can have access to
encryption keys.
Easy to program own secrets The YubiKey requires no special hardware for programming, enabling you to easily program and control your own
encryption keys. If required, Yubico offer optional password write
protection of the settings, but all YubiKeys sold on our web store can
be re-programmed. For security reasons Yubico firmware is not
upgradable, it’s a write only device and the encryption key can
never be read out from the device. [Emphasis mine]
Tamper proof casing The YubiKey is based on standard components, high-pressure moulded into plastic, making it practically impossible
to tamper. If tampered, it will require sophisticated equipment to
read out the secrets and cannot be done without physically destroying
the device. Each YubiKey is seeded individually, so any breach would
be for that unique Yubikey only, there is no systemic breach. If lost
or stolen, the user administrator can easily disable the YubiKey so
that it no longer can be used.
Se supponiamo che la chiave segreta non possa essere facilmente estratta dal token (e gli esempi precedenti indicano che possiamo fare questa ipotesi), allora conta come "qualcosa che hai" . Anche se il token può essere prodotto in serie, una volta combinato con la chiave segreta diventa univoco ai fini dell'autenticazione a due fattori.
Modifica
Grazie a Terry Chia che ha segnalato che l'app Google Authenticator memorizza la chiave in chiaro in un sqlite database sul dispositivo. Questo è stato segnalato in un bug report nel marzo 2013 . Google ha prontamente notato che questo è un problema "non risolverà":
Reported by [email protected], Mar 26, 2013 What steps will
reproduce the problem?
1. Open the databases database from within /data/data/com.google.android.apps.authenticator2/databases/database...
[email protected]
Thank you for your report. This is working as
intended/designed. Step #1 assumes you have root access or have
otherwise compromised the security of the Android device. Security of
data stored on or processed by such devices cannot be guaranteed. ...
Noterò qui che puoi e dovresti crittografare il tuo dispositivo Android , e così facendo invierà una password per sbloccare lo schermo. Questo proteggerà dall'estrazione delle chiavi, tra le altre cose.