TOTP es una extensión del algoritmo de contraseña de un solo uso basado en HMAC (HOTP). Tanto TOTP como HOTP requieren una clave secreta para incorporarse en el algoritmo. Dispositivos y tokens que implementan TOTP ( Yubikey , aplicación Google Authenticator ) están diseñadas para proteger la clave secreta contra la extracción.
Por ejemplo, menciones de Yubico :
Proceso de fabricación seguro
El YubiKey se fabrica en Suecia, en un proceso totalmente automatizado de acceso, utilizando la tecnología YubiHSM para
asegurarse de que ningún personal o administradores de TI puedan tener acceso a
claves de cifrado.
Fácil de programar secretos propios La YubiKey no requiere un hardware especial para la programación, lo que le permite programar y controlar fácilmente los suyos.
claves de cifrado. Si es necesario, Yubico ofrece escritura de contraseña opcional.
protección de la configuración, pero todos los YubiKeys vendidos en nuestra tienda web pueden
ser reprogramado Por razones de seguridad el firmware de Yubico no es
actualizable, es un dispositivo de solo escritura y la clave de cifrado puede
nunca se puede leer desde el dispositivo. [Emphasis mine]
Carcasa a prueba de manipulaciones La YubiKey se basa en componentes estándar, moldeados en plástico a alta presión, por lo que es prácticamente imposible
manipular. Si se manipula, requerirá equipo sofisticado para
lee los secretos y no se puede hacer sin destruir físicamente
el dispositivo. Cada YubiKey se siembra individualmente, por lo que cualquier incumplimiento
solo para ese Yubikey único, no hay infracciones sistémicas. Si se pierde
o robado, el administrador de usuarios puede deshabilitar fácilmente la YubiKey para
que ya no se puede utilizar.
Si asumimos que la clave secreta no se puede extraer fácilmente del token (y los ejemplos anteriores indican que podemos hacer esa suposición), entonces cuenta como "algo que tienes" . Aunque el token puede ser producido en masa, una vez combinado con la clave secreta, se convierte en único para los propósitos de autenticación de dos factores.
Editar:
Gracias a Terry Chia quien ha señalado que la aplicación Google Authenticator almacena la clave en texto claro en un sqlite Base de datos en el dispositivo. Esto se informó en un informe de errores en marzo de 2013 . Google notó rápidamente que este es un problema de "no se soluciona":
Reportado por wolfka ... @ gmail.com, 26 de marzo de 2013 Qué pasos tomará
reproducir el problema?
1. Abra la base de datos de bases de datos desde /data/data/com.google.android.apps.authenticator2/databases/database ...
klyu ... @ google.com
Gracias por tu informe. Esto esta trabajando como
destinado / diseñado El paso # 1 asume que tienes acceso de root o tienes
De lo contrario compromete la seguridad del dispositivo Android. Seguridad de
Los datos almacenados o procesados por dichos dispositivos no se pueden garantizar. ...
Observaré aquí que puede y debe cifrar su dispositivo Android , y al hacerlo se le solicitará una contraseña para desbloquear la pantalla. Esto protegerá contra la extracción de claves, entre otras cosas.