Pregunta

¿Cuál es la diferencia entre Ofuscación, Hashing y Cifrado?

Aquí está mi entendimiento:

  • Hashing es un algoritmo unidireccional; no se puede revertir
  • La ofuscación es similar al cifrado pero no requiere ningún "secreto" entender (ROT13 es un ejemplo)
  • El cifrado es reversible pero es un "secreto" es obligatorio hacerlo
¿Fue útil?

Solución

Hashing es una técnica para crear claves semi-únicas basadas en datos más grandes. En un hash dado, eventualmente tendrá `` colisiones '' (p. ej., dos datos diferentes que se calculan con el mismo valor hash) y cuando lo hace, generalmente crea un tamaño de clave hash más grande.

La ofuscación

generalmente implica tratar de eliminar pistas útiles (es decir, nombres significativos de variables / funciones), eliminar espacios en blanco para dificultar la lectura y, en general, hacer cosas complicadas para dificultar el seguimiento de lo que está sucediendo. No proporciona un nivel serio de seguridad como "verdadero" cifrado lo haría.

El cifrado puede seguir varios modelos, uno de los cuales es el "secreto". método, llamado cifrado de clave privada, donde ambas partes tienen una clave secreta. El cifrado de clave pública utiliza una clave unidireccional compartida para cifrar y una clave de destinatario privada para descifrar. Con la clave pública, solo el destinatario debe tener el secreto.

Otros consejos

Esa es una explicación de alto nivel. Trataré de refinarlos:

Hashing: en un mundo perfecto, es un oráculo aleatorio. Para la misma entrada X, siempre recibe la misma salida Y, que NO está relacionada con X. Esto es matemáticamente imposible (o al menos no está comprobado que sea posible). Lo más cercano que tenemos son las funciones de trampillas. H (X) = Y para con H-1 (Y) = X es tan difícil de hacer que es mejor que intentes forzar la fuerza bruta con una Z tal que H (Z) = Y

Ofuscación (mi opinión) - Cualquier función f, tal que f (a) = b donde confías en que f sea secreto. F puede ser una función hash, pero la "ofuscación" parte implica seguridad a través de la oscuridad. Si nunca antes viste ROT13, sería ofuscación

Cifrado: Ek (X) = Y, Dl (Y) = X donde E es conocido por todos. k y l son claves, pueden ser lo mismo (en simétrico, son lo mismo). Y es el texto cifrado, X es el texto sin formato.

Un hash es un algoritmo unidireccional utilizado para comparar una entrada con una referencia sin comprometer la referencia.

Se usa comúnmente en los inicios de sesión para comparar contraseñas y también puede encontrarlo en su recibo si compra con tarjeta de crédito. Allí encontrará su número de tarjeta de crédito con algunos números ocultos, de esta manera puede probar con alta capacidad de propagación que su tarjeta se usó para comprar cosas mientras que alguien que busca en su basura no podrá para encontrar el número de su tarjeta.

Un hash muy ingenuo y simple es " Las primeras 3 letras de una cadena " . Eso significa el hash de " abcdefg " será "abc". Obviamente, esta función no se puede revertir, que es el propósito completo de un hash. Sin embargo, tenga en cuenta que "abcxyz" tendrá exactamente el mismo hash, esto se llama colisión . Así que de nuevo: un hash solo demuestra con cierta capacidad de propagación que los dos valores comparados son los mismos .

Otro hash muy ingenuo y simple es el módulo 5 de un número, aquí verá que 6,11,16, etc. tendrán el mismo hash: 1.

Los algoritmos hash modernos están diseñados para mantener el número de colisiones lo más bajo posible, pero nunca se pueden evitar por completo. Una regla general es: cuanto más largo sea tu hash, menos colisiones tendrá.

Ofuscación en criptografía está codificando los datos de entrada antes de que se codifiquen o cifren.

Esto hace que los ataques de fuerza bruta sean menos factibles, ya que se hace más difícil determinar el texto en claro correcto.

Así es como siempre lo he visto.

  • El hash deriva un valor de otro, usando un algoritmo establecido. Dependiendo del algo utilizado, esto puede ser de una manera, puede no serlo.

  • Ofuscarse es hacer algo más difícil de leer por símbolo reemplazo.

  • El cifrado es como el hash, excepto que el valor depende de otro valor que proporcione el algoritmo.

Esa no es una mala descripción de alto nivel. Aquí hay algunas consideraciones adicionales:

El hash generalmente reduce una gran cantidad de datos a un tamaño mucho más pequeño. Esto es útil para verificar el contenido de un archivo sin tener que tener dos copias para comparar, por ejemplo.

El cifrado implica el almacenamiento de algunos datos secretos, y la seguridad de los datos secretos depende de mantener una "clave" separada. a salvo de los malos.

La ofuscación está ocultando cierta información sin una clave separada (o con una clave fija). En este caso, mantener el método en secreto es cómo mantener los datos seguros.

A partir de esto, puede ver cómo un algoritmo hash podría ser útil para las firmas digitales y la validación de contenido, cómo se utiliza el cifrado para proteger sus archivos y conexiones de red, y por qué se usa la ofuscación para la gestión de derechos digitales.

Una breve respuesta:

Hashing: creación de un campo de verificación en algunos datos (para detectar cuándo se modifican los datos). Esta es una función unidireccional y los datos originales no pueden derivarse del hash. Los estándares típicos para esto son SHA-1, SHA256, etc.

Ofuscación: modifique sus datos / código para confundir a cualquier otra persona (sin protección real). Esto puede o no perder algunos de los datos originales. No hay estándares reales para esto.

Cifrado: usar una clave para transformar datos para que solo aquellos con la clave correcta puedan entenderlos. Los datos cifrados se pueden descifrar para obtener los datos originales. Los estándares típicos son DES, TDES, AES, RSA, etc.

Todo bien, excepto que la ofuscación no es realmente similar al cifrado, a veces ni siquiera involucra cifrados tan simples como ROT13.

  • Hashing es una tarea unidireccional de crear un valor a partir de otro. El algoritmo debe intentar crear un valor que sea lo más breve y único posible.

  • la ofuscación es hacer que algo sea ilegible sin cambiar la semántica. Implica la transformación del valor, la eliminación de espacios en blanco, etc. Algunas formas de ofuscación también pueden ser unidireccionales, por lo que es imposible obtener el valor inicial

  • El cifrado
  • es bidireccional, y siempre hay algún descifrado que funciona al revés.

Entonces, sí, en su mayoría tiene razón.

La ofuscación se esconde o hace que algo sea más difícil de entender.

Hashing toma una entrada, la ejecuta a través de una función y genera una salida que puede ser una referencia a la entrada. No es necesariamente único, una función puede generar la misma salida para diferentes entradas.

El cifrado transforma la entrada en una salida de una manera única. Existe una correlación uno a uno, por lo que no hay pérdida potencial de datos o confusión: la salida siempre se puede transformar a la entrada sin ambigüedad.

La ofuscación es simplemente hacer algo más difícil de entender al introducir técnicas para confundir a alguien. Los ofuscadores de código generalmente hacen esto al cambiar el nombre de las cosas para eliminar cualquier cosa significativa de los nombres de variables o métodos. No es similar al cifrado en que nada tiene que ser descifrado para ser usado.

Normalmente, la diferencia entre el cifrado y el cifrado es que el cifrado generalmente solo emplea una fórmula para traducir los datos a otra forma en la que el cifrado utiliza una fórmula que requiere clave (s) para cifrar / descifrar. Los ejemplos serían la codificación de base 64 siendo un algoritmo hash donde md5 es un algoritmo de cifrado. Cualquiera puede deshacer datos codificados en base64, pero no puede desencriptar datos cifrados md5 sin una clave.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top