Esiste questo tipo di hashing?

1

Diciamo che hai due stringhe definite dall'utente, X, Y e vuoi inserirle nell'hash Z. Questo è ciò che la maggior parte dei siti Web farebbe, X è la password dell'utente e Y è il sale. Ci vuole un sacco di tempo per riportare Z a X + Y.

Quello che sto cercando, è questo più avere la possibilità di tornare indietro se ho dato Y, Z. Quindi se F era una funzione in cui F (X, Y) = Z (che agisce come SHA1, SHA2, ecc.), Voglio una funzione F 'dove F' (Z, Y) = X. Esiste un qualche tipo di algoritmo di hash che assomigli a questo?

Sembra crittografia a chiave pubblica-privata in cui Y è la tua chiave pubblica e X è il tuo messaggio, producendo Z, quindi usando una chiave privata Y alternativa puoi combinarlo con la Z per recuperare il tuo messaggio X, ma quello che voglio è la capacità per X, Y di essere definito arbitrariamente dall'utente. È teoricamente possibile? In tal caso esiste questo tipo di algoritmo di crittografia "triangolare"?

Ho letto di link oggi che è un servizio che contiene TUTTE le tue password Internet in un unico account. Sono quasi sicuro che stiano memorizzando le password in testo normale, o anche se sono crittografate, il loro server ha sia la chiave che i dati crittografati e, se vi si accede da un utente malintenzionato, sarebbero in grado di recuperare tutti gli utenti ' le password.

Poi ho pensato al tipo di hashing che ho menzionato sopra, come potrebbe funzionare:

Un utente imposta un "token di sicurezza" come una password, che è diverso dalla sua password dell'account. Quando l'utente immette le proprie password nel modulo dei servizi, la password viene cancellata, lato client utilizzando la funzione F (X, Y) = Z dove Y è il loro token di sicurezza e Z è il "hash". Solo il "hash" viene memorizzato sul server. Quando l'utente desidera recuperare tutte le password memorizzate, il server invia al client gli "hash", che possono essere decodificati utilizzando il token di sicurezza dell'utente, nel client stesso.

Con questo metodo il servizio non memorizzerà i dati della password in testo semplice.

    
posta Eric 15.07.2012 - 04:05
fonte

3 risposte

3

Sì, questo è lo stesso di Crittografia a chiave privata

Symmetric-key algorithms are a class of algorithms for cryptography that use the same cryptographic keys for both encryption of plaintext and decryption of ciphertext.

Z=F(X,Y) è uguale a C=F(P,K) dove C = Ciphertext, F = algoritmo simmetrico usato, P = testo semplice e K = chiave definita dall'utente.

AES e Blowfish sono due algoritmi comunemente usati.

    
risposta data 15.07.2012 - 05:13
fonte
2

Se è reversibile, è crittografia, non un hash.

Un metodo ben noto per concatenare i cifrari a blocchi (es. AES, Blowfish, 3DES, ecc.) è chiamato Feedback di output (OFB) . In sostanza, invece di crittografare il testo in chiaro, per ogni blocco si cripta l'output del blocco precedente. Questo produce un flusso costante di bit pseudo-casuali crittograficamente validi che quindi XOR con il testo normale ( à la RC4) per produrre l'output crittografico.

Con le trasformazioni XOR, se si XOR l'output con uno degli input, si ottiene l'altro input, che suona come si adatta al proprio schema.

    
risposta data 16.07.2012 - 06:07
fonte
1

Sì. Utilizza un algoritmo di crittografia a chiave simmetrica per crittografare i dati.

Più in dettaglio, considera X come testo in chiaro e Y come chiave. Quindi Z può essere ottenuto crittografando X sotto la chiave Y: Z = Encrypt (Y, X). Se hai Y e Z, puoi ripristinare X decifrando: considera Y come chiave e Z come testo cifrato, e decifra, cioè X = Decrypt (Y, Z).

La sicurezza di ciò è valida solo quanto la quantità di entropia in Y. È necessario che Y non sia percettibile (ad es. abbia almeno 80 bit di vera entropia) perché questo sia sicuro. Se Y è una password, probabilmente non sarà molto sicura, poiché molti utenti scelgono password a bassa entropia.

Ma in realtà, la domanda che stai facendo è su come memorizzare le password in modo sicuro, in modo che la password possa essere ripristinata. La risposta è usare la crittografia reversibile, ma rendersi conto che ora la gestione della chiave di decrittografia è cruciale: chiunque riesca a mettere le mani sulla chiave di decodifica può decrittografare tutte le password. Quindi è importante capire che questo approccio non sta creando sicurezza dal nulla; sta mescolando ciò di cui ti devi fidare. Devi comunque mantenere la chiave molto sicura e la domanda da $ 64.000 è come mantenere la chiave sicura. La risposta standard riguarda cose come HSM (moduli di sicurezza hardware) o server attentamente protetti. Questo è materiale di livello guru che non dovresti tentare a meno che tu non abbia già esperienza con la sicurezza del computer.

Vedi anche Come devono essere archiviate le password se devono essere recuperabili? , Come crittografare una password memorizzata in un database (è necessario decodificare in un secondo momento) , Potrebbe mint.com essere più sicuro, e se sì, come? .

    
risposta data 16.07.2012 - 00:49
fonte

Leggi altre domande sui tag