2010-06-20 50 views
8

Nel nostro progetto ci sono molti posti in cui avremmo potuto fare a meno dell'hashing. Ad esempio, memorizziamo un riferimento crittografato tra una licenza e l'oggetto con licenza nel database insieme al riferimento non crittografato. Questo per garantire che l'utente non possa modificare l'entità che ha ottenuto tramite la licenza con il database.Differenza tra crittografia e hashing

Il motivo principale per cui utilizziamo la crittografia in tutto il mondo è che avevamo già una bella libreria di crittografia e una chiave di sistema. In realtà non valeva la pena dedicare del tempo allo sviluppo di una libreria di hashing.

Esiste un rischio per la sicurezza che stiamo creando utilizzando la crittografia anziché l'hashing?

+7

* Sviluppo * di una libreria di hashing? :( –

+1

Hah. Una buona cattura, intendevo incorporare una libreria di hashing, probabilmente meno di una giornata di lavoro, ma ho pensato che sarebbe stata una buona opportunità per saperne di più sulla sicurezza – Pace

risposta

5

Memorizzando il testo in chiaro insieme al testo cifrato si sta creando un bel repository di stringhe di test se qualcuno volesse scoprire la propria chiave. Dal momento che apparentemente usi la suddetta chiave per crittografare tutto direi che è un rischio.

Ricorda, la cosa bella dei database centrali è che un giorno qualcuno riceverà i dati. Se la storia è una lezione, almeno.

+0

Buon punto per quanto riguarda il testo in chiaro che consente le stringhe di prova. – Pace

+0

quindi cosa proponi di essere la soluzione se non un database centrale? –

+0

Fondamentalmente quello che hanno già chiesto: Hashing invece di memorizzare testo in chiaro e testo cifrato nella stessa posizione. Hanno già notato che l'hashing era possibile soluzione – Joey

1

Bene, la crittografia è un processo a doppio senso. Supponendo che si stia utilizzando una crittografia basata su chiavi, si è sicuri finchè la chiave di crittografia è sicura e si sta utilizzando un algoritmo moderno (ad esempio, AES). L'hash, al contrario è un processo a senso unico, che dovrebbe essere praticamente impossibile ricostruire l'input hash dal valore hash. Quindi, non avendo una chiave, l'hashing può essere considerato più sicuro. Potrebbe anche essere meno affamato dal punto di vista computazionale.

1

Tutti i dati che possono essere crittografati possono anche essere decifrati.

L'hash è un processo a senso unico, in particolare se si utilizzano i nuovi metodi SHA2.

0

Hai introdotto la segretezza della chiave come un punto debole, direi che è un rischio, anche se calibrare la gravità richiederebbe maggiori dettagli.

L'hashing, d'altro canto, si baserebbe esclusivamente sulla difficoltà di trovare collisioni, che è probabilmente uno scenario più sicuro che mantenere la chiave segreta.

1

Da quello che ho capito, si desidera ottenere l'integrità dei dati (cioè si desidera ottenere che nessuno possa cambiare i dati inosservati). Ciò può essere ottenuto utilizzando una firma digitale (ad esempio RSA, DSA) o un MAC (codice di autenticazione del messaggio). Un mac è l'equivalente simmetrico di una firma digitale, che di solito è uno schema asimmetrico.

Quindi nel tuo caso, un MAC (come ad esempio HMAC) dovrebbe essere una buona scelta!

4

Se si tratta di un codice simmetrico che si sta utilizzando e il sistema è distribuito nell'ambiente "ostile", è una questione di tempo prima che un individuo motivato possa isolare la chiave e firmare la propria (o altra) licenza dati.

In questi casi è necessario un cifrario assimetrico per "firmare" la licenza con la chiave privata che viene archiviata in modo sicuro su un computer in una cassaforte e senza connessione al mondo esterno. Ok, leggera esagerazione, ma in un ambiente sicuro.

Un semplice hash non aiuta in questo caso perché possono essere utilizzati per firmare licenze contraffatte. Se si vuole essere sicuri che solo tu possa approvare le modifiche della licenza, utilizzare il cifrario assimetrico per crittografare la licenza (o un hash della licenza) è il modo più diretto.

+0

Vedrò di più, grazie! – Pace