¿Cuál es el uso del "secreto" que se muestra al configurar la autenticación de 2 factores?

16

¿Cuál es el propósito del "secreto" que se muestra cuando toma la imagen del código QR para configurar la autenticación de 2 factores en un sitio que no es de Google?

¿Por qué lo necesitarías?

Si lo guardas, ¿eso no anula todo el propósito de 2 Factor Auth porque cualquier persona con el secreto puede obtener un código de inicio de sesión?

    
pregunta B Seven 29.07.2013 - 16:09
fuente

4 respuestas

17

Google Authenticator admite TOTP y algoritmos HOTP .

En ambos algoritmos, se debe compartir un secreto entre el servidor y el cliente para generar con éxito las contraseñas de un solo uso. Le sugiero que lea los RFC respectivos de los algoritmos (o mi respuesta aquí ) para entenderlo mejor.

Sí, si el atacante logra apoderarse del secreto compartido, el algoritmo se anula. Sin embargo, esto no es muy práctico. El secreto solo se muestra en forma de un código QR una vez al configurar el algoritmo. Es de suponer que estará sentado frente a la pantalla cuando esto suceda y se dará cuenta si alguien sospechoso se acerca y comienza a escanear el código QR con su teléfono. Hay muchas medidas físicas que puede emplear si este es el caso.

Una vez que se comparte el secreto, se almacena en el servidor y el cliente (en este caso, su teléfono). Al menos en el caso de Android, el secreto se almacena sin cifrar en un archivo de base de datos SQLi. Sin embargo, la aplicación Authethenticator solo puede acceder a este archivo a menos que su dispositivo esté enraizado, por lo que no es fácil ponerlo en sus manos. Debería ser tan difícil si no más difícil en un dispositivo iOS. Usted tiene preocupaciones mucho mayores si un atacante logra comprometer el servidor.

Así que sí, el algoritmo se anula si se filtra el secreto. Pero la filtración secreta no es algo fácil de suceder. En cualquier caso, es la autenticación de factor DOS . Todavía tienes el otro factor para protegerte.

    
respondido por el Ayrx 29.07.2013 - 16:17
fuente
5

El secreto (o el valor de inicialización) es el valor sobre el cual la OTP de contraseña única. Es esencial para usted (o, mejor dicho, su generador de contraseñas y, en su caso, su Google Authenticator) conocer ese valor secreto. Es esencial que tanto usted como el servidor conozcan ese valor.

El código QR que está escaneando es el valor secreto, simplemente codificado de manera que su cámara lo entienda para que sea más fácil ingresarlo en su teléfono. Si su teléfono no tiene una cámara, o no puede escanear códigos QR, debe ingresar el valor secreto manualmente. Por eso te muestran el valor. Se lo muestran solo a usted, y debe asegurarse de que no haya nadie cerca cuando se lo muestren.

    
respondido por el Adi 29.07.2013 - 16:20
fuente
5

Quibble: aquí no está configurando realmente la autenticación de dos factores, está configurando un factor de autenticación, del tipo "lo que tiene". Esto debe combinarse con una contraseña, que es un factor de autenticación "lo que sabe", que le proporciona una autenticación de dos factores.

"Lo que tienes" está destinado a ser un dispositivo móvil. La forma en que un usuario se autentica al tener ese dispositivo móvil es solicitar que el usuario ingrese un código mostrado por ese dispositivo. Para que este código autentique el dispositivo, debe depender de algún valor secreto que solo esté presente en el dispositivo, el servidor de autenticación (es un secreto compartido) y en ninguna otra parte.

El valor secreto se genera en el servidor y debe transmitirse al dispositivo móvil. El código QR contiene ese valor secreto.

El valor secreto solo se muestra cuando configura esta autenticación basada en dispositivo. Se supone que debes hacer esto en un entorno seguro, por ejemplo. En casa, donde nadie puede hojear y sacar el secreto. Cualquier persona con el secreto puede obtener un código de inicio de sesión, pero solo el usuario legítimo debe tener el secreto.

    
respondido por el Gilles 29.07.2013 - 18:42
fuente
4

La autenticación TOTP (como la que usa Google Authenticator) funciona al convertir la marca de tiempo en un número de 6 dígitos usando el secreto precompartido que solo existe en su teléfono y en el servidor de autenticación. Para expresar esto simplemente, f(timestamp, secret) = 6-digit code . Si un tercero conoce el secreto, sí, se anula el propósito de la autenticación de 2 factores, pero obtener este secreto desde un teléfono portátil no es trivial.

    
respondido por el mricon 29.07.2013 - 16:19
fuente

Lea otras preguntas en las etiquetas