¿Existe un método para obtener texto sin formato de texto cifrado en HMAC SHA-1, dado que se conoce la clave?

7

Esto no es técnicamente un ataque. Tenemos todos los recursos a la mano, excepto el texto plano original. Tenemos el texto cifrado (para convertir de nuevo a texto sin formato), así como la clave.

El texto cifrado almacenado en la base de datos es el siguiente: HKnvB41kkow+KkR4c7G/8vusmEM=

La función de hash utilizada es la siguiente:

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

La clave que hemos utilizado es: "zooooooooooo123"

¿Hay alguna forma posible de recuperar el texto plano con toda la información proporcionada?

    
pregunta DKode 03.12.2014 - 07:03
fuente

1 respuesta

12

Nope
En términos generales: No. El hash no es cifrado. El hash no es reversible. En absoluto. Siempre genera una salida de longitud fija. Así que con una salida fija para decir 32 caracteres y una entrada de 33 caracteres, no hay forma posible de revertir esto. La información de ese personaje se pierde irremediablemente. - Y junto con todos los demás personajes.

Fuerza bruta posible para pequeños insumos
Pero: si sabe, su entrada es solo de 0-9 dígitos y solo hay 3 de ellos, entonces pruebe los 1000, y sí, ha invertido efectivamente el hash. (Por "Fuerza Bruta".)

No hay desbloqueo de un hash con clave
Además: la "clave" que usas en un hash con clave no es el tipo de clave que desbloqueará nada. "Clave" es realmente un nombre malo y confuso en ese contexto. Es solo una entrada más que se mezcla con los datos regulares de una manera especial. - Después de lo cual todo pasa a través de la picadora de carne con función hash y se convierte en una salida de longitud fija.

Sidenote: Extraña manera de almacenar contraseñas
Parece que estás usando HMAC para almacenar contraseñas. Esto es inusual. Y también significa que básicamente está almacenando contraseñas cifradas salpicadas, sin sal, con poca cuenta. Peppered es bueno. (Si el pimiento se almacena en otro lugar que no sea el hachís). Sin sal siempre es malo. El hashing bajo-redondo-de-cuenta también es malo. (Detalles: vea esta pregunta: HMAC: ¿Por qué no HMAC para el almacenamiento de contraseñas? ) - Todo esto facilitará la fuerza bruta del hash si se conoce la clave, pero aún así debe ser brutal forzado.

    
respondido por el StackzOfZtuff 03.12.2014 - 07:32
fuente

Lea otras preguntas en las etiquetas