Protocollo di comunicazione sicuro per test di uguaglianza

1

Sto risolvendo un problema teorico con due entità, ognuna con un numero segreto. Devono scoprire se questi numeri sono uguali senza rivelare il loro numero quando sono diversi.

La soluzione facile è crittografare entrambi i numeri e confrontare questi messaggi crittografati. In questo caso, è ancora, in teoria, possibile calcolare / indovinare l'altro numero segreto (anche se è molto improbabile).

Esiste un protocollo che sia 'totalmente sicuro' - il che significa che un'entità non può indovinare l'altro numero segreto indipendentemente dalla sua potenza di calcolo?

    
posta Honza 21.09.2016 - 15:34
fonte

1 risposta

1

Non è necessario crittografare nulla in questo caso d'uso. Hashing con un algoritmo non invertibile è sufficiente. Per evitare di dare un hash costante, puoi immaginare un challenge protocollo:

  • ogni parte crea (separatamente) una stringa casuale e la invia all'altro
  • ogni parte concatena la stringa casuale ricevuta con il suo segreto, calcola un hash strong (sha512 è generalmente considerato abbastanza strong)
  • ogni parte concatena la stringa casuale prodotta con il proprio segreto e calcola l'hash
  • ogni parte invia all'altro l'hash prodotto con la stringa casuale dell'altro

Se i segreti erano identici, gli hash dovrebbero essere uguali. Se non lo sono, nessuna parte può indovinare il segreto del suo pari perché sono stati scambiati solo hash non invertibili di messaggi singoli. Anche se un uomo nel mezzo potesse intercettare i messaggi, non poteva né indovinare il segreto, né fingere di conoscerlo più tardi a causa della parte casuale

    
risposta data 21.09.2016 - 17:08
fonte

Leggi altre domande sui tag