Come possono due parti confrontare se una semplice parola (5 lettere) condivisa corrisponde, senza rivelare la loro parola l'una all'altra?

2

Ho qualche problema con questo scenario, qualche consiglio sarebbe fantastico. Il contesto è che a un gruppo di persone è stata data una semplice parola di 5 lettere, ad esempio:

  • Alice: ATTORE
  • Bob: JEANS
  • Dan: SALSA
  • Erin: ACTOR
  • Fred: RELAX

Come può una persona all'interno del gruppo identificare se un altro membro ha o meno la stessa parola di loro, senza condividere la parola stessa? È possibile? Il mio primo istinto era di usare una sorta di algoritmo di hashing, ma sarebbe stato semplice da usare per la forza bruta. C'è qualche tipo di servizio web neutrale là fuori che potrebbe facilitare questo?

    
posta ICV 08.06.2015 - 13:52
fonte

3 risposte

4

Il problema che stai ponendo è chiamato il problema dei milionari socialisti ed è stato discusso in precedenza nella ricerca; per quanto ne so, è un protocollo per fare questo confronto senza rivelare nessuno dei due segreti e senza il coinvolgimento di una terza parte. Modificherò la mia risposta con una spiegazione completa il prima possibile.

    
risposta data 08.06.2015 - 14:12
fonte
0

L'hashing è sicuramente il modo. Se la forzatura bruta è un problema, non esiste un modo sicuro per farlo, poiché qualsiasi algoritmo che confronta due stringhe a 5 lettere e l'equivalenza dei ritorni potrebbe essere banalmente forzato a un massimo di 26 ^ 5 = 11881376 confronti. L'unico modo fattibile di difendersi contro la forza bruta in un ambiente a bassa entropia è usare un algoritmo di hashing variabile lentamente come bcrypt .

    
risposta data 08.06.2015 - 22:19
fonte
0

Direi:

A

  • genera un token pseudo casuale
  • crittografare usando la parola come chiave
  • invia risultato

B

  • decrittografare
  • genera il token successivo utilizzando il metodo predefinito
  • crittografalo
  • rimandalo

A

  • decrittografare
  • controlla il token ricevuto (ora A ha B autenticato) se non ok, fermati qui
  • genera il token successivo
  • crittografalo
  • invia a B

B

  • decrittografare
  • di controllo

Con questo non devi condividere la parola e non puoi indovinare la password di qualcuno quando prova ad autentificarti se la decodifica forzata bruta con tutte le chiavi possibili non puoi sapere se la decrittografia è riuscita a causare un messaggio casuale modulo.

sei ancora vulnerabile a:

  • Intercettando due messaggi dello stesso processo di autenticazione con esito positivo quindi utilizzare la forza bruta per verificare con quale parola l'echange ha senso
  • forzatura bruta provando ad autenticare usando tutta la password possibile (questa sembra inevitabile ma può essere rilevata facilmente)
risposta data 15.06.2015 - 10:36
fonte

Leggi altre domande sui tag