¿Cómo pueden dos partes comparar si una palabra compartida simple (de 5 letras) coincide, sin revelarse una a otra?

2

Tengo algunos problemas con este escenario, algunos consejos serían excelentes. El contexto es que a un grupo de personas se les ha dado una palabra simple de 5 letras, por ejemplo:

  • Alicia: ACTOR
  • Bob: JEANS
  • Dan: SALSA
  • Erin: ACTOR
  • Fred: RELAX

¿Cómo podría una persona dentro del grupo identificar si otro miembro tiene o no la misma palabra que ellos, sin compartir la palabra en sí? ¿Es esto posible? Mi primer instinto fue usar algún tipo de algoritmo de hash, pero eso sería simple para la fuerza bruta. ¿Hay algún tipo de servicio web neutral por ahí que pueda facilitar esto?

    
pregunta ICV 08.06.2015 - 13:52
fuente

3 respuestas

4

El problema sobre el que está preguntando se llama Problema de los millonarios socialistas y se ha analizado en investigaciones anteriores. Por lo que sé, hay un protocolo para hacer esta comparación sin revelar ninguno de los dos secretos y sin la participación de un tercero. Editaré mi respuesta con una explicación completa lo antes posible.

    
respondido por el zinfandel 08.06.2015 - 14:12
fuente
0

El hash es definitivamente el camino. Si la fuerza bruta es un problema, entonces no hay una forma segura de hacerlo, ya que cualquier algoritmo que compare dos cadenas de 5 letras y devuelva equivalencia podría ser forzado de manera brutal en un máximo de 26 ^ 5 = 11881376 comparaciones. La única forma factible de defenderse contra la fuerza bruta en un entorno tan bajo de entropía es utilizar un algoritmo de hashing variable lento como bcrypt .

    
respondido por el CrazyCryptoNonsense 08.06.2015 - 22:19
fuente
0

Yo diría;

A

  • generar un token seudo aleatorio
  • cifrar usando la palabra como clave
  • enviar resultado

B

  • descifrar
  • generar el siguiente token usando un método predefinido
  • cifrarlo
  • enviarlo de vuelta

A

  • descifrar
  • verifique el token recibido (ahora A se ha autentificado B) si no está bien, deténgase aquí
  • generar el siguiente token
  • cifrarlo
  • enviar a B

B

  • descifrar
  • comprobar

Con esto no tienes que compartir la palabra y no puedes adivinar la contraseña de alguien cuando intenta autenticarte si Brute forza el descifrado con todas las claves posibles, no puedes saber si el descifrado tiene éxito porque el mensaje tiene un azar forma.

todavía eres vulnerable a:

  • Interceptando dos mensajes del mismo proceso de autentificación exitoso, luego use la fuerza bruta para verificar con qué palabra tiene sentido el ecuador
  • fuerza bruta al intentar autenticar utilizando todas las contraseñas posibles (esta parece inevitable pero puede detectarse fácilmente)
respondido por el grandchamp robin 15.06.2015 - 10:36
fuente

Lea otras preguntas en las etiquetas