Quantcast
Channel: Think Big
Viewing all articles
Browse latest Browse all 3626

Diferencias entre cifrado, hashing, codificación y ofuscación

$
0
0

Actualmente, existe mucha confusión respecto a los términos de cifrado, codificación, criptografía, hashing y técnicas de ofuscación. Estos términos están relacionados con la seguridad informática, concretamente con la confidencialidad y la integridad de los datos o información, excepto en el caso de la codificación y ofuscación.

Dada la alta importancia que tienen los datos e información, siendo estos considerados como elementos clave en los sistemas de información, conviene conocer con que mecanismos se cuentan de cara a protegerlos y en qué casos se debe emplear uno u otro.

La criptografía, metodología enfocada a la seguridad en sistemas de información

La criptografía forma parte del campo de la criptología, ciencia que está compuesta por campos como el criptoanálisis y la esteganografía. La criptografía se enfoca en el estudio de los métodos empleados con el fin de que un mensaje o información no pueda ser leída por un tercero sin autorización, es decir, garantizar la confidencialidad de la información.

También se emplea para prevenir accesos y usos no autorizados de recursos de red, sistemas de información, etc.

La criptografía es una metodología cuyo objetivo es proporcionar seguridad en los sistemas de información y las redes telemáticas, incluyendo entre muchas de sus funciones la identificación de entidades, mecanismos de autenticación y de control de acceso a recursos, la confidencialidad e integridad de los mensajes transmitidos y su no repudio.

Codificación de mensajes

La codificación es un proceso de transformación de datos a un formato diferente al original. Para ello, se emplea un método público, disponible para cualquier persona y en la mayoría de los casos, empleando un formato estándar usado de manera amplia.

Un ejemplo, es el Código Estándar Americano Para El Intercambio De Información, conocido como ASCII. En este estándar se convierten los caracteres alfabéticos y caracteres especiales en números. Esos números se conocen como el “código”.

La codificación no se emplea para fines de seguridad, ya que únicamente transforma la presentación de los datos de un formato a otro, sin emplearse ninguna clave en ese proceso, y empleando el mismo método o algoritmo para codificar y decodificar los datos o esa información.

Este proceso nació como respuesta a la necesidad de transmitir la información a través de internet mediante estándares que permitieran la interpretación de los datos o información por parte de diferentes entornos, programas y otros elementos.

Ejemplos de codificación son el empleo de las tablas ASCII, UNICODE, MORSE, Base64 y URLEncoding.

Empleando funciones matemáticas; hash

La función de hash es el proceso criptográfico por el cual se obtiene una cadena de caracteres única, a través de una función matemática. Esa función matemática o hash se encuentra en el núcleo del algoritmo, el cual es capaz de transformar cualquier bloque arbitrario de datos en una cadena de caracteres con una longitud fija.

La longitud de la cadena de caracteres resultante siempre tendrá el mismo tamaño, independientemente de la longitud de los datos de entrada, siempre y cuando se emplee el mismo algoritmo hash. Ejemplos de funciones de hash son MD5, SHA1, SHA-256, etc.

En la siguiente imagen se puede entender cómo, dependiendo del input o entrada, y de acuerdo con el algoritmo hash aplicado (en este ejemplo SHA1), el digest o salida será de un modo u otro.

Si, por ejemplo, empleáramos SHA-256, en todos los casos anteriores, el output sería de una extensión fija, en cualquier caso, e independientemente de la longitud del input, de 256 bits y 64 caracteres, aunque los digest serian totalmente distintos.

Para considerar que una función hash es segura, deberá cumplir estas 3 propiedades:

  • Resistencia a la colisión: Debe ser inviable que, frente a 2 inputs distintos, cualesquiera, se produzcan un mismo hash como output.
  • Resistencia a preimagen: Debe cumplir que sea improbable o que haya muy baja probabilidad de «revertir» la función hash (encontrar el input a partir de un output determinado).
  • Resistencia a la segunda preimagen: Inviable encontrar una colisión, es decir, no puede existir un mismo hash para distintos inputs.

Las funciones hash pueden emplearse en múltiples casos de uso, siendo estos algunos ejemplos:

  • Búsquedas concretas de información en bases de datos de gran tamaño.
  • Análisis de grandes archivos y gestión de datos.
  • En la autenticación de mensajes, firmas digitales y certificados SSL/TLS.
  • En el proceso de minado, generación de nuevas direcciones y claves de Bitcoins.

Que es el cifrado de datos

El cifrado de datos es el proceso de convertir un texto o datos en formato legible, en un texto o datos ilegibles, conocido como output cifrado.

El cifrado está basado en la aplicación de un algoritmo que usa una clave o llave maestra que permite la transformación de la estructura y composición de la información que se busca proteger, de tal modo que, si esta información es interceptada por un tercero, no podría interpretarla o entenderla, es decir, es ilegible.

Candado en una puerta
Foto: Maxim Zhgulev / Unsplash

Cuando los datos se han cifrado, solo quienes tienen la clave que permite el descifrado, podrán llevar a cabo esa acción, permitiendo el acceso a los datos en un formato legible.

Por tanto, este mecanismo tiene un enfoque principalmente hacia la protección de la confidencialidad.

El uso de claves criptográficas complejas otorga mayor seguridad a ese cifrado, dificultando los ciberataques sobre ellas, ya sean de fuerza bruta o de otro tipo.

Los 2 métodos de cifrado más comunes son el cifrado simétrico y el cifrado asimétrico. Los nombres hacen referencia a si se utiliza o no la misma clave para el cifrado y el descifrado:

  • Claves de cifrado simétrico: Conocido también como cifrado de clave única. Su característica principal es el empleo de la misma clave tanto para cifrar como para descifrar, siendo este proceso más cómodo para los usuarios y sistemas cerrados.

Por otro lado, todas las partes interesadas deben de disponer de esa clave y su distribución se debe hacer por mecanismos seguros. Esto aumenta el riesgo de que pueda verse comprometida si la intercepta un tercero como un ciberdelincuente, a no ser que esta se cifre con una clave asimétrica, que suele ser la práctica habitual. Este método es más rápido que el método asimétrico.

  • Claves de cifrado asimétrico: en este tipo de cifrado, se utilizan 2 claves diferentes (pública y privada) vinculadas entre sí matemáticamente. Las claves son básicamente números extensos vinculados entre sí, pero no son idénticos; de ahí el término «asimétrico».

El propietario mantiene en secreto la clave privada, mientras que la clave pública se comparte entre los receptores autorizados o queda disponible al público general. El proceso de cifrado se lleva, por tanto, a través de la clave publica, y el de descifrado, con la clave privada del receptor.

El cifrado se emplea en muchos casos, siendo los siguientes algunos de ellos:

  • Cifrado de las comunicaciones por voz.
  • Cifrado de datos bancarios y de tarjetas de crédito.
  • Cifrado de bases de datos.
  • Firmas digitales, para verificación de la autenticidad del origen de la información.

La ofuscación

El propósito de la ofuscación es hacer que algo sea más difícil de entender, generalmente con el propósito de hacerlo más difícil de atacar o copiar.

Foto: Markus Spiske / Unsplash

Comúnmente, se emplea este mecanismo para la ofuscación del código fuente de una aplicación con el fin de que sea más difícil replicar un producto o función determinada. Este mecanismo no es un control de seguridad fuerte, pero si un obstáculo de cara a hacer que algo sea más ilegible, ayudando a dificultar la aplicación de ingeniería inversa.

Al igual que la codificación, a menudo es reversible empleando la misma técnica que se empleó en la ofuscación. Otras veces es simplemente un proceso manual que llevo algo de tiempo.

Algunas aplicaciones que ayudan a este proceso, aunque se recomienda siempre realizarlo manualmente, son JavaScript Obfuscator, y ProGuard.

Imagen de apertura: Pexels / ThisIsEngineering.

The post Diferencias entre cifrado, hashing, codificación y ofuscación appeared first on Think Big.


Viewing all articles
Browse latest Browse all 3626

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>