¿Es seguro mezclar métodos de autenticación?

3

¿Es una buena idea "combinar" métodos de autenticación?
Por ejemplo, podemos usar el método de nombre de usuario / contraseña para autenticar a un usuario desde un servidor.
¿Qué sucede si utilizamos esto como un primer paso de autenticación para obtener otro token para usar en la autenticación posterior?
El token podría ser cualquier cosa, por ejemplo. certificado x509 del cliente
Ejemplo:
El cliente envía la contraseña a través de SSL. La contraseña es correcta y el servidor almacena el certificado de cliente enviado a través de SSL como de confianza. De ahora en adelante tenemos autenticación de cliente

    
pregunta Jim 15.02.2013 - 17:33
fuente

3 respuestas

3

Si al ingresar un par de nombre de usuario y contraseña válidos se otorga acceso a un "token" que se usa para autenticar con respecto a otro servidor, entonces la mayoría de las veces se está propagando la primera autenticación. Entonces realmente depende de los detalles de su configuración.

Por ejemplo, suponga que tiene un archivo de certificado con clave privada (como PKCS # 12 , también conocido como "PFX") disponible en un servidor. El servidor lo enviará a cualquier usuario que se autentique con éxito con una contraseña. Luego, el usuario puede importar el certificado a su propia máquina y usarlo para conectarse a otro servidor que solicita un certificado de cliente. Para el sistema en general, está usando autenticación basada en contraseña, porque un atacante solo tiene que adivinar la contraseña para obtener el certificado y luego se le debe otorgar acceso al segundo servidor. Sin embargo, el atacante también podría intentar piratear el primer servidor y obtener el certificado, y luego podrá autenticarse en el segundo servidor.

Como lo ilustra el ejemplo anterior, esta es una regla genérica: cuando vinculas métodos de autenticación como una cadena de pasos sucesivos, tiendes a obtener algo que es tan débil como el más débil de los enlaces (por una vez, la "analogía de la cadena "funciona bien).

Hay otras formas de combinar métodos de autenticación, y se conocen como autenticación de múltiples factores . Esto es lo que sucede cuando un servidor requiere varias autenticaciones: puede acceder a los datos si ingresa una contraseña válida y muestra un certificado válido. Al contrario del ejemplo anterior, el segundo método de autenticación no está desbloqueado por el primero; en cambio, el servidor requiere ambos, independientemente uno del otro. En la "analogía de la cadena", la autenticación no son enlaces sucesivos en una sola cadena (el atacante solo tiene que romper un enlace), sino tubos reforzados anidados (el atacante debe perforarlos a todos).

    
respondido por el Thomas Pornin 15.02.2013 - 17:51
fuente
3

Claro. Requerir más métodos de autenticación (también conocido como autenticación de 2 factores, aunque normalmente uno de los factores es un código generado aleatoriamente que se envía a su correo electrónico / teléfono) en principio lo hace mucho más seguro. Debe considerar que es más una molestia para los usuarios, que puede desencadenar los mecanismos de restablecimiento de la cuenta con más frecuencia y puede hacer que los usuarios abandonen su servicio o se molesten considerablemente. Es decir, puede considerar hacer esto si está operando un banco, pero no necesariamente implementar esto si está autenticando la escritura en un blog.

La administración de certificados X509 no es una tarea común en el navegador y estos certificados a menudo caducan, son difíciles / molestos de transferir entre navegadores / computadoras, por lo que pueden llevar a una mala experiencia de usuario. Por ejemplo, no me gusta cómo startssl.com (que puede usar para obtener certificados SSL gratuitos para sitios web) utiliza certificados de navegador para autenticar a los usuarios; a menudo he actualizado mi distro en los últimos seis meses y no pensé en migrar mi Certificados antiguos, o incluso si los certificados del navegador normalmente caducan en una escala de tiempo similar a la de los certificados SSL, entonces tengo que crear una nueva cuenta de todos modos. También me disgusta la forma en que mi cooperativa de crédito me obliga a crear y hacer clic en un marcador cada vez que inicie sesión (use el nombre de usuario / contraseña + clic en un marcador único para una computadora que nunca funciona, ya que nunca encuentro la correcta o generar un nuevo marcador a través de token al teléfono en el que tengo que hacer clic antes de poder iniciar sesión); de hecho, saqué la mayor parte de mi dinero de esa cooperativa de crédito en gran parte para el paso de marcador en el procedimiento de inicio de sesión.

EDITAR: interpreté tu respuesta diferente a Thomas. Creo que su sistema se requiere después de configurar la cuenta, para que tenga ambos un certificado X509, así como su nombre de usuario y contraseña. Si quiso decir que puede iniciar sesión de cualquier manera, (solo con el certificado o solo con el nombre de usuario / contraseña), Thomas tiene razón, es tan débil como el enlace más débil.

EDIT2: para su ejemplo actualizado, veo poca o ninguna mejora en la seguridad con solo usar un token de sesión generado por el servidor para administrar sesiones y tener sesiones de larga duración que usan cookies seguras de solo http.

¿Puede explicar cuál es el beneficio que está tratando de lograr? ¿Es simplemente la facilidad del usuario en futuros intentos de inicio de sesión?

¿Cómo manejará su esquema a los usuarios que cambian sus certificados X509? Digamos que un usuario inicia sesión desde la computadora 1 con el Certificado 1. ¿Puede el usuario iniciar sesión más tarde desde la computadora 2 con el Certificado 2? ¿Podría un atacante que obtiene un nombre de usuario y contraseña de U, crear un certificado falso y luego iniciar sesión como U? ¿Puede alguien que tenga acceso temporal al navegador de un usuario exportar de forma trivial sus certificados de navegador guardados? (Sin pasar por la molestia de instalar keyloggers, etc).

Solo obtiene seguridad reforzada cuando siempre requiere ambos factores. Cuando el compromiso de cualquiera de los dos factores puede pasar por alto el otro factor, tiene una seguridad más débil.

    
respondido por el dr jimbob 15.02.2013 - 17:57
fuente
1

Las otras dos respuestas son correctas; tan lejos como vayan Interpreto tu pregunta en un contexto más amplio. Desde mi punto de vista, parece estar discutiendo una variación de lo que la mayoría de la comunidad llama "aumentar la seguridad" y el NIST llama " Escalado del nivel de aseguramiento " Sección 6.1.5 en el documento al que se hace referencia. El hecho de que esté imponiendo la escalada al principio de la sesión no es realmente relevante para el perfil de amenaza.

Como dice @Thomas Pornin, si toda la autenticación UN / PW es revelar un token, entonces la pregunta se reduce a simples detalles de implementación. Pero si estás hablando de una escalada de seguridad, entonces la pregunta se vuelve bastante interesante. ¿Cómo evaluamos el aumento de la seguridad / reducción del riesgo resultante de dos autenticaciones secuenciales?

La respuesta trivial es asumir que el adversario solo explotará la fuerza bruta y sumará el tiempo previsto para romper. Siendo realistas, necesitamos modelar la debilidad de la implementación de UN / PW, la implementación de lo que sea que proponga como la segunda autenticación (usted dice "cualquier cosa, podría ser un certificado", pero eso no nos dice nada sobre la implementación ).

Analice hasta qué punto los dos se refuerzan o se subvierten entre sí. ¿Son realmente independientes o se basan en la misma prueba o registro de identidad? ¿Son las implementaciones realmente independientes o crean un artefacto que me permitiría evitar una o ambas?

Finalmente, ¿vale la pena el costo de la mayor complejidad de dos implementaciones de autenticación? la mayoría de los esquemas de seguridad no fallan en teoría, sino porque la implementación no se corresponde con la teoría. (esta es una de las razones principales por las que no hacemos rodar nuestro propio criptografía). ¿Podríamos obtener el mismo aumento de seguridad simplemente aumentando la longitud de UN / PW? ¿O haciendo una mejora correspondiente en el certificado?

Y hemos dorado una parte no esencial. Si coloca un esquema de autenticación con placa de platino delante de un algoritmo de cifrado que sea vulnerable a BESTIA o CRIMEN, o lo que sea, se desperdicia todo el esfuerzo que ha invertido en su autenticación superlativa.

En mi opinión, el punto dulce más probable es el registro y la prueba de identidad. De manera simplista, está tratando a UN / PW como un registro para la autenticación del certificado. Si ese es el caso, entonces la pregunta es académicamente interesante, pero prácticamente es mejor mejorar la capacidad de recuperación de la jerarquía de certificados.

    
respondido por el Mark C. Wallace 15.02.2013 - 18:44
fuente

Lea otras preguntas en las etiquetas