Quali sono i vantaggi / svantaggi dell'hashing sulla crittografia?

-1

So che l'hashing è una funzione unidirezionale e che i messaggi crittografati possono essere recuperati se si conosce la chiave corrispondente a cui è stato crittografato il messaggio. Oltre alla possibilità di recuperare, quali vantaggi / svantaggi ci sono nell'hashing sulla crittografia?

    
posta user3023315 03.06.2014 - 16:45
fonte

4 risposte

2

Come accennato, hashing e crittografia hanno scopi diversi, quindi questa domanda sarebbe meglio formulata pensando a un'applicazione. Per un esempio di vita reale che viene comunemente utilizzato, uno sviluppatore di siti Web potrebbe chiedere: "Sto creando un sito Web in cui gli utenti necessitano di nome utente e password per l'accesso. Devo memorizzare le password in testo semplice da qualche parte, dovrei crittografare le password o Li ho cancellati? " La risposta a questa domanda dipenderà da cosa è il sito Web e da chi sono gli utenti, ma in genere va così:

  1. Password di testo semplice: di solito dovrebbe essere evitata, ad eccezione dei siti di sicurezza estremamente bassi in cui le password vengono generate automaticamente. Se gli utenti sono autorizzati a creare le proprie password, dovresti quasi mai memorizzarle in testo normale, perché alcuni utenti useranno inevitabilmente la stessa password per questo sito come per i siti con sicurezza, ad esempio i loro conti bancari o altri account e-mail in cui le e-mail di reimpostazione della password del conto bancario sarebbero state inviate.

  2. Crittografa le password: questo è MOLTO meglio delle password in testo semplice, tuttavia qualcuno avrà sempre la possibilità di decrittografare le password. Questo perché per consentire al server Web di autenticare le password, deve essere in grado di decrittografare le password, il che significa che la chiave di decrittografia deve essere memorizzata da qualche parte a cui il server può accedere. Di conseguenza, chiunque abbia accesso al server sarà in grado di decifrare anche le password. Quella persona potrebbe essere normalmente lo sviluppatore web o un amministratore IT che è affidabile, ma di solito è meglio non avere nessuno in grado di decrittografare le password. Inoltre, se il server è in qualche modo compromesso, l'hacker può decodificare la password di tutti.

  3. Hashing the Passwords: questo è in genere il metodo migliore in quanto anche se il server è compromesso, le password sono ancora protette (entro limiti ragionevoli). Lo svantaggio principale di questo è che non è possibile recuperare una password; puoi reimpostare la tua password.

Morale: se la tua banca ha un meccanismo di recupero "Password dimenticata" sul loro sito web, e ti invia via email la tua password che hai dimenticato invece di reimpostarla per te, allora dovresti cambiare banca.

    
risposta data 03.06.2014 - 18:28
fonte
0

Non c'è alcun vantaggio, servono a scopi diversi, come ha detto Terry Chia.

Nei "sistemi di accesso" si desidera assicurarsi che se qualcuno riesce a "rubare" il proprio database, l'utente malintenzionato non sarà in grado di leggere effettivamente la password, ma solo l'hash della password, poiché molti utenti usano le stesse password per molti siti diversi. Quindi se un utente malintenzionato riuscisse a distruggere il database di stackexchange, sarebbe in grado di utilizzare la stessa password per e-mail, ebanking, ecc.

Immagina lo scenario in cui ciò che vuoi è assicurarti che un messaggio trasmesso da un mittente X ad un ricevitore Y, sia ricevuto correttamente e il ricevitore Y possa verificare che sia stato ricevuto correttamente e nessuno ha alterato il messaggio, anche voi entrambi avete già deciso una chiave per la funzione hash.
Non ti interessa se un utente malintenzionato legge il tuo messaggio. Quindi invii semplicemente il testo in chiaro, con un hash di quel testo in chiaro, quindi il ricevente cancellerà il testo in chiaro ricevuto con la stessa chiave e se i due hash sono gli stessi sarà in grado di verificare che, il messaggio ricevuto non è stato alterato.
Tutto quello che ti interessa è che il tuo ricevitore possa verificare che è stato inviato da te.

    
risposta data 03.06.2014 - 16:58
fonte
0

Se vuoi pensarci in termini più semplici: Hashing equivale a far corrispondere un fingerprint mentre la crittografia è quella di scramble il messaggio. Utilizzare l'hashing per determinare se il messaggio / file è autentico. Utilizza la crittografia per proteggere / nascondere il contenuto.

    
risposta data 03.06.2014 - 17:55
fonte
0

Elaborando le funzioni servono entrambi:

Hashing è, come hai detto, non reversibile. È anche costante. Questo è il motivo per cui lo usiamo per memorizzare le password. Quando si imposta la password per, ad esempio, la propria e-mail, il server non la memorizza mai (beh, alcuni lo fanno, ma meritano un certo grado di vergogna pubblica). Invece, (assumendo che la tua password sia "password") memorizzano h ("password") . Ora diciamo che vuoi accedere. Qui entra in gioco la crittografia . Tu e il server andate anche se qualcosa chiamato scambio di chiavi Diffie-Helfman, che consente di scambiare una chiave con il server. Ora si utilizza quella chiave per crittografare la password ( x = e ("password") ) e inviarla al server. Il server, dal momento che ha la stessa chiave che hai usato per crittografare la tua password, può eseguire la funzione e ^ -1 (x) . Ora ha il testo in chiaro della tua password. Se stessimo parlando di Heartbleed, questo è il punto più probabile per il furto della tua password. Ad ogni modo, ora il server esegue la funzione h ("password") e la confronta con l'hash della password memorizzata che ha associato al tuo nome utente. Se l'hash generato dal valore che hai inviato corrisponde a quello che hanno, ti consentono di accedere al tuo account.

    
risposta data 03.06.2014 - 18:20
fonte

Leggi altre domande sui tag