Mi chiedevo quali fossero i problemi di sicurezza (non efficieny) possibili con questa "funzione" di hash:
Sebbene non sia una funzione reale, questo metodo trasforma un messaggio di qualsiasi lunghezza in un messaggio di lunghezza fissa. Dove non è possibile ricavare il messaggio dal messaggio di lunghezza fissa hash.
-Alice vuole inviare un messaggio (m) a Bob.
-Alice e Bob usano un cifrario simmetrico con una chiave condivisa in un altro modo.
-Alice quindi genera due numeri veramente casuali della stessa lunghezza del messaggio (m) ed esegue un OTP sul messaggio due volte, un tasto applicato a me un tasto applicato al risultato dell'altro tasto e m .. Alice distrugge le chiavi.
-C'è un server chiamato "server hash" che è un membro di terze parti fidato da Alice e Bob e da tutti gli altri mittenti.
-Alice invia il doppio testo cifrato OTP al server.
-Il server risponde quindi con un messaggio a lunghezza fissa più breve del testo cifrato e lo chiama hash di (m) che il server non conosce. Questo messaggio a lunghezza fissa è un numero veramente casuale che viene memorizzato sul server e inviato ad Alice.
-Alice concatena il doppio OTP crittografato con me usa il codice simmetrico per crittografarlo.
-Alice invia il (MAC) insieme al testo cifrato
-Bob invia il doppio testo cifrato al server. Il server controlla se questo corrisponde a qualcosa nel suo database e invia l'hash risultante a Bob. Se il risultato corrisponde a MAC di Alice, il messaggio è intatto.
Non ci sono collisioni poiché il server non invierà mai lo stesso numero casuale per due diversi messaggi. La doppia crittografia è tale che Bob non può derivare la chiave OTP di Alice dal messaggio che ha ricevuto da lei.