Esiste un metodo per ottenere testo in chiaro dal testo cifrato in HMAC SHA-1, dato che la chiave è nota?

7

Questo non è tecnicamente nemmeno un attacco. Abbiamo tutte le risorse a portata di mano, ad eccezione del testo in chiaro originale. Abbiamo il testo cifrato (da convertire nuovamente in testo normale), così come la chiave.

Il testo cifrato memorizzato nel DB è il seguente: HKnvB41kkow+KkR4c7G/8vusmEM=

La funzione di hashing utilizzata è la seguente:

Public Shared Function EncryptPasswordInHash(ByVal password As String) As String
    Dim EncodedPassword As String = password
    Dim Hash As New HMACSHA1()
    Hash.Key = StrToByte(LicensingBLL.ENCRYPTION_KEY)
    EncodedPassword = Convert.ToBase64String(Hash.ComputeHash(Encoding.Unicode.GetBytes(password)))
    Return EncodedPassword
End Function

Il codice che abbiamo usato è: "zooooooooooo123"

C'è un modo per recuperare il testo in chiaro con tutte le informazioni fornite?

    
posta DKode 03.12.2014 - 07:03
fonte

1 risposta

12

No
In generale: No. L'hash non è crittografia. L'hash non è reversibile. Affatto. Genera sempre un output a lunghezza fissa. Quindi, con un'uscita fissata per dire 32 caratteri e un input di 33 caratteri, non è possibile invertire questa tendenza. L'informazione di quel personaggio è irrimediabilmente perduta. - E insieme a tutti gli altri personaggi.

Forza bruta fattibile per piccoli input
Ma: se sai che il tuo input è composto solo da cifre 0-9 e ce ne sono solo 3, allora prova solo tutti e 1000, e sì, hai effettivamente invertito l'hash. (Per "Brute Force".)

Non è possibile sbloccare un hash con chiave Inoltre: la "chiave" che usi in un hash con chiave non è il tipo di chiave che sbloccherà qualsiasi cosa. "Chiave" è davvero un nome cattivo e confuso in quel contesto. È solo un altro input che è mescolato con i dati regolari in un modo speciale. - Dopo di che tutto passa attraverso il tritacarne funzione hash e viene trasformato in uscita a lunghezza fissa.

Sidenote: un modo strano per memorizzare le password
Sembra che tu stia utilizzando HMAC per memorizzare le password. Questo è insolito. E significa anche che in pratica stai memorizzando password pepate, non salate, con un numero basso di arrotondamenti. Peppered è buono. (Se il peperone è conservato in un luogo diverso dall'hash stesso.) Il non salato è sempre cattivo. Anche il low-round-count-hashing è cattivo. (Dettagli: Vedi questa domanda: HMAC - Perché non HMAC per l'archiviazione delle password? ) - Tutto questo renderà più semplice forzare l'hash con la forza bruta se la chiave è nota, ma deve comunque essere forzata bruta.

    
risposta data 03.12.2014 - 07:32
fonte

Leggi altre domande sui tag