Quali sono le differenze tra un seme di crittografia e il sale?

25

Oggi ho avuto difficoltà a spiegare la differenza con un amico.

So che i semi vengono usati quando si generano stringhe "casuali". E i sali vengono utilizzati quando si forniscono risultati diversi a un hash.

Qual è un modo migliore di descrivere questi concetti e le loro possibili differenze.

    
posta Gabriel Fair 05.02.2015 - 00:38
fonte

5 risposte

44

Seed:

La crittografia è alimentata da numeri casuali, ma come si genera un numero veramente casuale? L'attuale millisecondo? Il numero di thread del processore in uso? Hai bisogno di un punto di partenza. Questo è chiamato seme: dà il via a un numero casuale.

Salt:

Quando si hash una stringa, finirà sempre con lo stesso hash.

foo = acbd18db4cc2f85cedef654fccc4a4d8 ogni volta.

Questo è un problema quando si desidera memorizzare elementi che si desidera mantenere veramente nascosti (come le password). Se vedi acbd18db4cc2f85cedef654fccc4a4d8 , sai sempre che è foo . Quindi, devi semplicemente aggiungere un "sale" alla stringa originale per assicurarti che sia univoco.

foo + asdf = e967c9fead712d976ed6fb3d3544ee6a

foo + zxcv = a6fa8477827b2d1a4c4824e66703daa9

Quindi "sale" rende meglio un "hash" oscurando il testo originale.

    
risposta data 05.02.2015 - 00:52
fonte
9

I termini più semplici a cui riesco a pensare:

  • Un seme è un valore casuale che in genere deve essere tenuto segreto o la crittografia non funzionante
  • Un salt è un valore casuale che generalmente non è un segreto, utilizzato per rendere più difficili alcuni attacchi precomputi

Mi piace usare quelli perché l'idea di tenere le cose segrete o no è qualcosa di significativo per chiunque.

    
risposta data 06.02.2015 - 01:57
fonte
5

Il tuo amico è in realtà giustificato nella sua confusione, perché non c'è una grande differenza. Ad un livello alto, ognuno viene utilizzato come input per modificare l'output di una funzione di scrambling.

Prova a enfatizzare la differenza tra una funzione hash e un generatore di numeri casuali, e per cosa sono tipicamente utilizzati. Inoltre, è possibile distinguere tra un generatore di numeri casuali regolari utilizzato per le statistiche (che può utilizzare un seme prevedibile o noto) e un generatore di numeri casuali crittograficamente sicuro utilizzato per la generazione di chiavi segrete (che richiede una fonte non soggetta di entropia come seme. )

    
risposta data 05.02.2015 - 02:31
fonte
0

PRNG (seed) = una stringa di numeri casuali

hash (salt + password) = password hash

Il generatore di numeri casuali evidenzia la natura fondamentale dei computer. Non sono casuali. Anche la casualità percepita non è casuale, ma vicina al caso, anche se alla fine si potrebbe tirare fuori quel vecchio esempio di camminare per metà strada verso un obiettivo e non raggiungerlo mai realmente.

    
risposta data 06.02.2015 - 10:02
fonte
-1

Il seme di crittografia viene utilizzato per aiutare a generare un numero pseudo-casuale. Il seme viene utilizzato per avviare la generazione di una serie di numeri pseudo casuali e aumentare la casualità statistica dell'algoritmo utilizzato. Non è mai possibile generare un numero veramente casuale tramite il calcolo da solo, il che consente di ottenere un'asimmetria su una curva di probabilità che mostra la distribuzione di numeri generati da un generatore di numeri pseudo-casuali. Maggiore è la probabilità di prevedere correttamente, un numero generato in modo pseudo casuale, meno sicura è la crittografia. Il seme viene solitamente prelevato dall'ora nel momento in cui si verifica il processo di crittografia, poiché è un valore facile da prelevare dal computer. Se il seme è condiviso tra i sistemi, può essere la chiave privata in un modello di crittografia a chiave privata / chiave pubblica.

Un SALE è solitamente una stringa generata casualmente che un sistema memorizzerà piuttosto che la password di un utente in testo normale. Un hash deve essere memorizzato insieme al SALE che viene generato dal valore della password dell'utente (immessa al momento dell'operazione) concatenata al SALT. Ciò significa che il sistema non memorizzerà mai le informazioni dell'utente direttamente e confronterà piuttosto l'hash memorizzato nel database o nell'archivio dati a uno generato quando l'utente immette la propria password. Questo è più sicuro su diversi livelli, ad esempio se il database del sistema viene violato, quindi la password dell'utente non sarà direttamente esposta a un utente malintenzionato.

    
risposta data 05.02.2015 - 11:54
fonte

Leggi altre domande sui tag