¿cuándo usar la codificación sobre hash?

0

Si la codificación se usa para la integridad, alguien puede manipularla en la red porque se basa en algún esquema conocido públicamente.

¿Cuándo usa la codificación y cuándo usa el hash para preservar la integridad?

mi entendimiento es que la codificación se utiliza para preservar la integridad en un sistema heterogéneo cuando la confidencialidad no importa. ¿Por qué las personas siguen utilizando bases64 (autenticación básica) para enviar el nombre de usuario / contraseña a pesar de que la información de autenticación es confidencial?

    
pregunta user1493834 15.04.2016 - 09:27
fuente

3 respuestas

0

Rara vez utiliza codificación para integridad 1 . La codificación se utiliza para transformar algunos datos en otro formato, generalmente porque es más adecuado para el otro sistema. Por ejemplo, se utiliza base64 porque algunos sistemas pueden no reaccionar muy bien a algunos datos binarios. La codificación solo puede ayudarlo contra los errores de transmisión . (Por ejemplo, si los datos de base64 recibidos contienen un carácter no válido, sabrá que algo salió mal).

Funciones de hash can ser usado para integridad para asegurar que los datos no hayan sido manipulados por un atacante . Código de autenticación del mensaje con clave hash (HMAC) use una función hash, junto con una clave (conocida por el remitente y el destinatario) para garantizar que los datos hayan sido enviados por la persona correcta, realizando la autenticación.

Como puede ver, la codificación simplemente ofrece integridad y no lo protege contra un atacante. Las funciones de hash, si se usan correctamente, pueden proteger la integridad de los datos transmitidos contra los errores de transmisión y los atacantes.

En el caso de proporcionar un nombre de usuario y una contraseña a un sitio web, autenticación básica codificará su nombre de usuario y contraseña con base64. Esto no proporciona ninguna seguridad en absoluto, porque cualquiera puede descifrarlo. Por ejemplo, podemos recuperar fácilmente el nombre de usuario / contraseña utilizado en la página de Wikipedia sobre la autenticación básica:

# Encoding the username and password
$ echo -n "Aladdin:OpenSesame" | base64 
QWxhZGRpbjpPcGVuU2VzYW1l

# Retrieving the encoded username and password
$ echo -n "QWxhZGRpbjpPcGVuU2VzYW1l" | base64 -D
Aladdin:OpenSesame

El nombre de usuario / contraseña no están codificados por razones de seguridad, pero para escapar de un carácter especial.

1 Consulte Detección de errores y corrección (Wikipedia)

    
respondido por el Yuriko 15.04.2016 - 09:48
fuente
1

La codificación no es un medio para garantizar la integridad. La codificación está aquí para la representación. Codifica una cadena en base64 porque es más fácil / seguro usar los símbolos en el entorno de Internet, por ejemplo. URLs donde algunos caracteres son difíciles de transmitir e interpretar correctamente después. Se usa UTF-8 porque necesitamos un espacio amplio para representar caracteres de idiomas extranjeros y otros símbolos nuevos.

Hashing algo de contenido es un medio para verificar la integridad. Si el contenido C tiene D = H(C) , puede transmitir C y D para verificar que el mensaje recibido C' verifique D' = H(C') = D = H(C) . Si no lo hace, entonces el mensaje ha perdido integridad.

    
respondido por el M'vy 15.04.2016 - 09:39
fuente
1

En primer lugar, son tres conceptos diferentes. Y déjame pegar este bloque del sitio que has vinculado:

  

La codificación está diseñada para proteger la integridad de los datos cuando se cruzan   Redes y sistemas, es decir, para mantener su mensaje original al llegar,   y no es principalmente una función de seguridad. Es fácilmente reversible   Porque el sistema de codificación es casi necesariamente y por   Definición en uso amplio. El cifrado está diseñado exclusivamente para   confidencialidad y es reversible solo si tiene la adecuada   teclas / teclas Con el hashing la operación es unidireccional (no reversible), y   La salida es de una longitud fija que suele ser mucho más pequeña que la   entrada. (fuente: danielmiessler.com)

Permítame presentarle algunos ejemplos, ya que podrían haberlo confundido

CODIFICACIÓN : Girando la cuerda http://security.stackexchange.com/questions a http%3A%2F%2Fsecurity.stackexchange.com%2Fquestions es la codificación de URL. No tiene nada que ver con la seguridad, es fácilmente reversible y ayuda al transporte.

CIFRADO : La cadena security.stackexchange.com con la clave de cifrado example y AES-256 se convierte en g4jBsloWrMkqNJvPOkKvgOv9qQvLWcDgFqAih4LrQLs= . Esta es una forma segura de datos, siempre que example sea lo suficientemente difícil de adivinar. (En la vida real debería ser más complicado)

HASHING : Las funciones de hash son funciones unidireccionales, truncan la salida a un cierto número de bits. Entonces no hay manera de revertir los valores de hash, su propósito es la verificación. Solo es posible recuperar el valor en bruto de las tablas del arco iris o mediante el uso de fuerza bruta manual. Un ejemplo de security.stackexchange.com hashed con el algoritmo md5 es a7711987f4696a33c69ea8e48dc616d5 .

    
respondido por el Rápli András 15.04.2016 - 10:40
fuente

Lea otras preguntas en las etiquetas