È possibile eseguire il sale della funzione hash SHA1 o SHA256 di OpenSSL?

2

Vorrei usare la funzione di hash di OpenSSL external, in modo da poter assegnare un salt da solo. È possibile o è la funzione di hash di OpenSSL alsways interno "salato"?

    
posta Maximilian 22.09.2015 - 09:07
fonte

2 risposte

4

Gli algoritmi di hash vengono utilizzati in OpenSSL per i controlli di integrità dei dati e per firmare certificati e CRL. La tecnica Salted-Hashing viene utilizzata a livello di applicazione. È possibile utilizzare JavaScript per ottenerlo. Per favore facci sapere che cosa stai cercando di raggiungere.

Quanto segue si basa su input e requisiti di un'implementazione non sicura a scopo di test.

Le funzioni di hash SHA-1 e SHA256 non salveranno i tuoi dati internamente. Tutte le iterazioni multiple di hashing di un determinato dato risulteranno sempre nello stesso hash. Quindi, quello che stai cercando di costruire è possibile.

Passaggio 1 : chiedi all'utente di inserire i dati da sottoporre a hash.

Passaggio 2 : chiedi all'utente quale opzione preferiscono:

  1. La salatura è richiesta - hash=SHA256(SHA256(data)+random(1))

  2. Inserimento manuale di sale - hash=SHA256(SHA256(data)+manual_salt)

  3. Nessuna salatura - hash=SHA256(data)

Se stai codificando in C ++, controlla alcuni di questi link:

  1. Genera hash SHA in C ++ usando la libreria OpenSSL
  2. Funzione C ++ sha1
  3. funzione C ++ sha256
risposta data 22.09.2015 - 09:51
fonte
11

SHA-1 e SHA-256 sono funzioni di hash crittografiche . Prendono come input una sequenza arbitraria di bit - e solo quello. Non c'è "sale" nelle funzioni hash.

Quando si dice che una funzione di hash è "salata", questa non è una funzione di hash; questa è un'altra costruzione che usa, tra i suoi parametri di input, uno che è considerato un "sale", e che può usare, internamente, una funzione di hash come elemento di costruzione. Un esempio di tale costruzione è PBKDF2 .

La distinzione è importante, perché quando qualcuno dice "Voglio salare il mio hash", allora questo può significare una delle seguenti due cose:

  • Che qualcuno sta cercando di implementare alcune costruzioni esistenti e ben specificate come PBKDF2, e lo chiama semplicemente "un hash salato". Il modo giusto è di cercare un'implementazione esistente della costruzione completa, o, in mancanza, di implementarla usando la specifica che indicherà esattamente quale sequenza di bit viene iniettata in qualunque funzione di hash è usata internamente. In ogni caso, la domanda su "come salare un hash" diventa priva di significato.

  • Che qualcuno è in procinto di creare la sua propria costruzione fatta in casa che comporta una funzione di hash, e cerca di mischiare alcuni valori e alcune funzioni crittografiche, sperando che tutti gli ingredienti interagiscano bene insieme e generino "sicurezza" , immaginato come una specie di torta. Questa è una ricetta conosciuta per il disastro; solo il dolore si trova su quel sentiero.

    Di solito , la nozione di "salt" deriva dal concetto di hashing password , dove le password sono "deboli segreti" ("segreti" perché dovrebbero rimanere confidenziali, "deboli" perché possono essere ricordati dai cervelli umani, e il cervello umano è davvero cattivo nel ricordare valori casuali). Le password di hashing non sono qualcosa che tollera bene l'improvvisazione; c'è molta teoria e ricerca sull'argomento, e l'esperienza ha ripetutamente dimostrato che gli schemi casalinghi sono quasi invariabilmente pateticamente deboli. Leggi questa risposta come introduzione sull'argomento.

risposta data 22.09.2015 - 15:04
fonte

Leggi altre domande sui tag