¿Cuáles son las desventajas de usar el intercambio secreto de Shamir para implementar un esquema de contraseña parcial?

1

Supongamos que quiero implementar un esquema de contraseña parcial, donde el usuario se autentica utilizando dos contraseñas: una es una contraseña normal, la otra es parcial, donde solo necesita escribir los tres caracteres seleccionados de esa contraseña:

Tengo preguntado anteriormente sobre la implementación de esto y es obvio que los enfoques simples como el hashing de caracteres individuales fallan completamente . Supongamos que a nosotros también nos impiden implementar un módulo de autenticación de hardware que almacenará la contraseña y simplemente le dará una respuesta correcta / incorrecta para su entrada.

Otro enfoque potencial es utilizar El intercambio secreto de Samir , como descrito en detalles aquí con respecto a la idea de contraseñas parciales.

A grandes rasgos, estamos proporcionando la capacidad de recuperar una contraseña secreta (o su hash, que es mejor) al proporcionar, digamos, 3 de 8 fragmentos de datos.

¿Este esquema es seguro contra la fuerza bruta por parte de un atacante que obtiene acceso a la base de datos, y seguro significa seguro al menos en la misma medida que una base de datos de contraseñas tradicionales con salado y hash?

    
pregunta K48 26.10.2018 - 03:53
fuente

1 respuesta

2

El la fuente que cita en realidad ya señala los problemas, aunque en realidad los considera como problemas pero como una ventaja. Para citar:

  

Pros y Contras
  Los aspectos más destacados de esta solución son:
  ...
  5. Más rápido de calcular: la verificación es varias multiplicaciones de números de 32 bits que es mucho más rápido que calcular un valor de hash .

El ataque que intentas prevenir es que el atacante puede adivinar correctamente siempre que el atacante sepa la información secreta almacenada en la base de datos.

En su ejemplo, tiene un secreto con 10 caracteres alfanuméricos en los que el atacante necesita adivinar un determinado 3 caracteres. Esto significa que se necesitan 36 suposiciones 3 cuando solo se permiten mayúsculas o 72 3 con caracteres en minúsculas. Dado que la comprobación es muy rápida, el atacante puede encontrar rápidamente estos valores (es decir, probablemente en tiempo real) si se conoce el secreto almacenado en la base de datos.

Si el atacante debe elegir más de 3 caracteres, se vuelve más difícil de hacer en tiempo real, pero puede ser precomputado fácilmente. Si se necesitan 5 de los 10 caracteres, es posible que las "máscaras" posibles para ingresar los caracteres sean 10 * 9 * 8 * 7 * 6 * (2 * 3 * 4 * 5) y que cada una tenga como máximo 36 5 (o 72 5 ) valores posibles, es decir, como máximo 10 * 9 * 8 * 7 * 6 / (5 * 4 * 3 * 2) * 72 5 Se deben hacer cálculos realmente rápidos. Suponiendo que se podrían realizar 10000 cálculos en un segundo, esto le tomaría al atacante un día si tuviera una red de bots de alrededor de 600 máquinas, lo que no es irrazonable. Y probablemente podría ser optimizado. Con 4 de cada 10 caracteres, solo se necesitarían 6 máquinas por día y con 3 de cada 10 una sola máquina podría hacer esto en menos de 1,5 horas.

Tenga en cuenta que estas estimaciones también asumen un secreto aleatorio. Si es un secreto elegido por el usuario, se pone mucho peor, ya que el espacio de búsqueda es más pequeño. Pero, si el usuario no puede elegir el secreto, entonces probablemente deba escribir el secreto aleatorio en algún lugar, rechazando su idea original de por qué se debe proporcionar este secreto adicional (es decir, evitar la navegación y almacenamiento en los administradores de contraseñas) en muchos casos.

    
respondido por el Steffen Ullrich 26.10.2018 - 06:54
fuente

Lea otras preguntas en las etiquetas