Inicio » Blockchain » ¿Qué es la criptografía y cuáles son sus aplicaciones?

¿Qué es la criptografía y cuáles son sus aplicaciones?

¿Qué es la criptografía? Este fascinante término nos sumerge en un mundo donde la seguridad de la información es primordial. Pero, ¿qué implica realmente este campo? Desde sus raíces en la antigüedad hasta su papel indispensable en la era digital moderna, la criptografía ha evolucionado significativamente. Abarca desde los simples códigos de César utilizados en la Roma hasta los complejos algoritmos que salvaguardan nuestras transacciones en línea. Al adentrarnos en este fascinante campo, descubrimos cómo la criptografía se ha convertido en una piedra angular de la seguridad en la era de la información, donde proteger los datos es más crucial que nunca.

La criptografía es la ciencia de hacer que la información sea segura en presencia de adversarios. Para conseguir este objetivo se hace la suposición de que los adversarios disponen de recursos de procesamiento y cálculo ilimitados. Los cifrados son algoritmos utilizados para encriptar o desencriptar datos, de manera que, si éstos son interceptados por un adversario, los datos obtenidos no tengan sentido para ellos, ya que para descifrarlos requieren de una clave secreta.

criptografia

¿Qué es la criptografía?

La criptografía se utiliza principalmente para proporcionar un servicio de confidencialidad. Por sí misma, no puede considerarse una solución completa, sino que debe considerarse como un elemento más dentro de un sistema de seguridad más extenso. Por ejemplo, para asegurar un ecosistema de blockchain saludable, se requieren diferentes funciones criptográficas: funciones hash, criptografía de clave simétrica, firmas digitales y criptografía de clave pública.

En este artículos trataremos de manera exhaustiva cómo estas técnicas posibilitan el mundo tecnológico en que vivimos. Empezaremos definiendo de una manera sencilla en qué consiste la criptografía, para luego ver los tipos funciones criptográficas que existen, sus ventajas e inconvenientes y su uso. A continuación, haremos un repaso de las historia de la criptografía; un viaje de de 4000 años, desde Sumer hasta la actualidad. Para acabar presentaremos la aplicación de código libre OpenSSL.

Explicación sencilla sobre qué es la criptografía

La criptografía es la ciencia que se utiliza para asegurar la información y protegerla de miradas indiscretas mientras se encuentra en tránsito o almacenada en dispositivos electrónicos. Podemos pensar en la criptografía como un candado digital que protege nuestros mensajes, datos personales o datos de compras de personas no autorizadas.

Imagina que tienes una carta que deseas enviar a alguien. Si envías la carta sin protección, cualquiera que la intercepte podría leer su contenido. Pero, si utilizas la criptografía, conviertes el contenido de la carta en algo ilegible para cualquiera que no tenga la llave correcta para descifrarla.

En la actualidad, es el método que mantiene tus contraseñas, datos personales y mensajes seguros cuando los envías a través de Internet o los almacenas en tu computadora. Es una herramienta esencial para proteger nuestra privacidad y mantener nuestra información sensible a salvo de posibles amenazas en línea.

Veamos un esquema sencillo de cómo funciona.

esquema basico de como funciona un sistema de cifrado

En el diagrama anterior, P, E, C y D representan el texto sin formato (plaintext), el cifrado (encryption), el texto cifrado (ciphertext) y el descifrado (decryption), respectivamente. Veamos algunas definiciones interesantes:

  • Entidad: Ya sea una persona o un sistema que envía, recibe o realiza operaciones sobre datos.
  • Remitente: Es una entidad que transmite los datos.
  • Destinatario: Es una entidad que recibe los datos.
  • Adversario: Es una entidad que intenta evadir el servicio de seguridad.
  • Clave: Una clave es un dato que se utiliza para cifrar el texto sin formato y también para descifrar el texto cifrado.
  • Canal: Un canal proporciona un medio de comunicación entre entidades.

¿Para que sirve la criptografía?

La criptografía proporciona varios servicios:

Confidencialidad

La confidencialidad es la garantía de que la información solo está disponible para entidades autorizadas.

Integridad

La integridad es la garantía de que la información solo puede ser modificada por entidades autorizadas.

Autenticación

La autenticación proporciona garantía sobre la identidad de una entidad o la validez de un mensaje. Existen dos tipos de mecanismos de autenticación.

Autenticación de la entidad

La autenticación de la entidad es la garantía de que una entidad está actualmente involucrada y activa en una sesión de comunicación. Tradicionalmente, a los usuarios se les asigna un nombre de usuario y contraseña que se utiliza para acceder a las diversas plataformas con las que están trabajando. Esta práctica se conoce como autenticación de un solo factor.

Este tipo de autenticación no es muy segura por diversas razones, entre las que se puede destacar la filtración de contraseñas. Por lo tanto, ahora se suele utilizar sistemas de autenticación de dos factores para proporcionar una mayor seguridad (en la que se manda un email de confirmación y un mensaje SMS para dar acceso).

En la actualidad, con la irrupción de los teléfonos móviles con sensores biométricos, se emplean con gran frecuencia sistemas de autenticación basados en reconocimiento facial y de huella dactilar

Autenticación del origen de datos

Autenticación del origen de datos, también conocida como autenticación del mensaje, es una garantía de que la fuente de la información ha sido verificada. La autenticación del origen de datos garantiza la integridad de los datos porque, si se corrobora una fuente, entonces los datos no deben haber sido modificados. Se utilizan varios métodos tales como Códigos de Autenticación de Mensajes (MAC) o las firmas digitales.

Sin rechazo o no repudiación

Este es un servicio de seguridad que ofrece una prueba definitiva de que una actividad en particular ha ocurrido. Esta propiedad es esencial en situaciones controvertidas en las que una entidad ha negado las acciones realizadas, por ejemplo, la realización de un pedido en una tienda online. Este servicio produce evidencia criptográfica en transacciones electrónicas para que, en caso de disputas, pueda utilizarse como confirmación de una acción.

El protocolo de no repudiación generalmente se ejecuta en una red de comunicaciones y se utiliza para proporcionar evidencia de que una entidad (remitente o destinatario) ha realizado una acción en la red. Los principales requisitos que éste debe tener son la imparcialidad, la eficacia y la puntualidad.

En las comunicaciones en que hay múltiples participantes involucrados, por ejemplo, en sistemas de comercio electrónico, los protocolos de no repudiación de dos partes no son adecuados. Para abordar este problema, se han desarrollado protocolos de no repudiación de múltiples partes (MPNR).

Responsabilidad

La responsabilidad es la garantía de que las acciones que afectan la seguridad pueden rastrearse hasta la parte responsable. Esto generalmente se proporciona mediante mecanismos de registro y auditoría que garanticen la trazabilidad de las transacciones. Los registros detallados son vitales para rastrear las acciones de una entidad, como cuando se realiza una operación.

¿Dónde se utiliza la criptografía?

La criptografía se utiliza en numerosos ámbitos y de diversas maneras, incluyendo:

  • Comunicaciones seguras: La criptografía es fundamental para proteger las comunicaciones en Internet, como el correo electrónico, las llamadas VoIP y la mensajería instantánea. Permite que la información se transmita de forma segura, evitando que sea interceptada o modificada por terceros.
  • Transacciones financieras: En el sector bancario y financiero, la criptografía se usa para asegurar transacciones en línea, como transferencias bancarias, pagos con tarjeta de crédito y operaciones en cajeros automáticos.
  • Redes y acceso a internet: Las redes privadas virtuales (VPN) utilizan criptografía para crear conexiones seguras en Internet, protegiendo la privacidad y los datos de los usuarios.
  • Seguridad en dispositivos móviles: Los smartphones y tablets emplean criptografía para proteger la información almacenada y transmitida, incluyendo contactos, mensajes y datos de aplicaciones.
  • Contraseñas y autenticación: La criptografía es crucial para el almacenamiento seguro de contraseñas y la autenticación de usuarios en sistemas y servicios en línea.
  • Blockchain y criptomonedas: Las tecnologías de blockchain, como Bitcoin y Ethereum, dependen en gran medida de la criptografía para asegurar las transacciones y mantener la integridad de la cadena de bloques.
  • Software y actualizaciones de seguridad: Se utiliza para verificar la autenticidad de software y actualizaciones, asegurando que no han sido alterados o comprometidos.
  • Protección de la propiedad intelectual y DRM: En el ámbito digital, la criptografía ayuda a proteger los derechos de autor y a gestionar el acceso a contenido digital mediante sistemas de gestión de derechos digitales (DRM).
  • Sistemas militares y de inteligencia: En el sector de la defensa y la inteligencia, se usa para proteger la información clasificada y garantizar la seguridad de las comunicaciones.
  • Investigación y desarrollo: La criptografía también se aplica en la investigación científica y técnica para proteger datos sensibles y propiciar la colaboración segura.

Criptografía aplicada a la blockchain

La aplicación de la criptografía en el blockchain es un componente fundamental que permite su funcionamiento y seguridad. En el contexto de las cadenas de bloques y criptomonedas, la criptografía se utiliza de varias maneras crítica.

  • Creación de hashes para bloques: Cada bloque en una cadena de bloques contiene una serie de transacciones. Estos bloques están asegurados mediante algoritmos de hash criptográficos, como SHA-256 en Bitcoin. El hash es una cadena de caracteres que representa de manera única los datos contenidos en el bloque. Cualquier cambio en el bloque altera drásticamente el hash, lo que ayuda a detectar y prevenir manipulaciones.
  • Mecanismo de consenso: La criptografía es clave en los algoritmos de consenso como Prueba de Trabajo (PoW) y Prueba de Participación (PoS). En PoW, utilizado por Bitcoin, los mineros resuelven complejos problemas criptográficos para validar transacciones y crear nuevos bloques. Esto asegura que la red sea resistente a ataques y fraudes.
  • Firmas digitales: Las transacciones individuales dentro de un bloque son validadas mediante el uso de firmas digitales. Los usuarios generan un par de claves criptográficas (una pública y una privada). La clave privada se utiliza para firmar una transacción, y la clave pública permite a otros usuarios verificar la firma. Esto asegura que las transacciones sean autorizadas por el remitente y no puedan ser alteradas una vez emitidas.
  • Seguridad de la wallet o cartera: Las carteras de criptomonedas utilizan criptografía para proteger las claves privadas que se necesitan para acceder y realizar transacciones con los fondos de la criptomoneda. La seguridad de las carteras es crucial para prevenir el robo de fondos.
  • Intercambio seguro y anonimato: La criptografía permite a los usuarios de blockchain realizar transacciones de manera segura y, en ciertos casos, anónima. Esto es especialmente importante en redes como Bitcoin, donde la privacidad y la seguridad son preocupaciones clave.
  • Contratos inteligentes: En plataformas de blockchain como Ethereum, la criptografía se utiliza para crear y ejecutar contratos inteligentes de manera segura. Estos son acuerdos autoejecutables cuyos términos están escritos en código y se ejecutan automáticamente cuando se cumplen las condiciones predefinidas.
  • Integridad y transparencia: La criptografía ayuda a mantener la integridad y transparencia de la cadena de bloques. Al ser una base de datos distribuida y descentralizada, la criptografía asegura que todas las copias de la cadena sean consistentes y no puedan ser alteradas sin detección.

Tipos de técnicas criptográficas

Las primitivas criptográficas son los elementos fundacionales de un sistema de seguridad. Podemos clasificarlas en tres grupos. Las técnicas que no requieren de claves y las primitivas criptográficas simétricas y asimétricas.

Técnicas que no requieren de claves

Se trata de técnicas criptográficas que no requieren el uso de claves o llaves para cifrar o descifrar información.

Números aleatorios

La generación de números aleatorios es un elemento indispensable que cualquier sistema de cifrado. Aunque puede parecer sencillo a primera vista no es para nada un problema trivial.

La aleatoriedad asegura que las acciones de un sistema criptográfico sean lo suficientemente impredecibles como para impedir a los atacantes adivinar el resultado de las operaciones del algoritmo, lo que lo haría inseguro. Generar una aleatoriedad adecuada con un alto grado de incertidumbre es un desafío, pero existen métodos que garantizan un nivel adecuado de aleatoriedad para su uso en algoritmos criptográficos. Hay dos categorías de fuentes de aleatoriedad.

Generadores de Números Aleatorios (RNG)

Los RNG son sistemas de software o hardware que aprovechan la aleatoriedad disponible en el mundo real analógico, donde la incertidumbre del entorno produce aleatoriedad. Esto puede ser variaciones de temperatura, ruidos térmicos de diversos componentes electrónicos o ruido acústico. Esto se llama aleatoriedad real.

Otras fuentes se basan en el hecho de que un sistema informático en funcionamiento genera cierta aleatoriedad a partir de los procesos en ejecución, como pulsaciones de teclas o movimientos del disco. Estos tipos de fuentes de aleatoriedad no son muy prácticos debido a la dificultad de adquirir estos datos o no tener suficiente entropía.


¿Qué es la entropía?

La entropía, en el contexto de la criptografía y la teoría de la información, se refiere a la medida de la incertidumbre o la falta de previsibilidad en un conjunto de datos o información. Cuanto mayor sea la entropía, mayor será la aleatoriedad o imprevisibilidad de los datos.


Generadores de Números Pseudo aleatorios (PRNG)

Los PRNG son funciones determinísticas que funcionan en base al principio de utilizar un valor inicial aleatorio llamado semilla para producir un conjunto de elementos que parecen aleatorios. Los PRNG se utilizan comúnmente para generar claves para algoritmos de cifrado.

Funciones Hash

Las funciones hash se caracterizan por que a partir de una cadena de texto de entrada de longitud arbitraria, generan cadenas de salida de longitud fija. Existen varias familias de funciones hash disponibles, como MD, SHA1, SHA-2, SHA-3, RIPEMD y Whirlpool. Las funciones hash se utilizan comúnmente para firmas digitales y códigos de autenticación de mensajes, como HMAC.

Tienen tres propiedades de seguridad:

  • Resistencia a pre-imágenes. Si h(x) = y , donde h es la función hash, x es la entrada e y el resumen. X no debe poder ser calculado mediante una función inversa. Se considera que x es una pre-imagen de y, de ahí el nombre resistencia a pre-imágenes.
  • Resistencia a segundas pre-imágenes: Dado un mensaje x conocido, debe ser casi imposible encontrar un mensaje z distinto de x que genere que cumpla h(x) = h(z).
  • Resistencia a colisiones. Esta propiedad consiste en que no debe existir dos cadenas de entrada que generen la misma salida.

Además, estas funciones deben cumplir:

  • Deben ser fáciles y rápidas de computar.
  • El resultado debe ser de longitud fija. Las funciones hash producen una salida comprimida en varios tamaños de bits, generalmente entre 128 bits y 512 bits.
Tipos de funciones Hash
Funciones md

Las funciones (md4, md5) message digest fueron muy usadas en los años 90 del siglo pasado pero ya no se usan debido a que son muy vulnerables.

SHAs, Secure Hash Algorithms
  • SHA0 y SHA1 están totalmente obsoletos en la actualidad debido a su falta de seguridad.
  • Las famias de algoritmos más usados en la actualidad: SHA2, SHA3, RIPEMD o Whirlpool.

¿Qué es la criptografía simétrica?

La criptografía simétrica se caracteriza por que la clave que se utiliza para cifrar los datos es la misma que la que se utiliza para descifrarlos. Por lo tanto, también se conoce como criptografía de clave compartida. La clave debe acordarse antes de que ocurra el intercambio de datos entre las partes que se comunican.

Para su correcto funcionamiento la clave debe mantenerse en secreto, de ahí que se la conozca como criptografía de clave secreta. Hay muchos tipos diferentes de claves dependiendo del protocolo.

Como es comprensible, la generación de la clave es de suma importancia para garantizar la seguridad. Existen diferentes métodos:

  • Generación aleatoria.
  • Generación derivada del estilo KDF (Key Derivation Function), donde la clave se obtiene a partir de una password.
  • Empleo de protocolos de acuerdo de clave del estilo Diffie-Hellman key exchange protocol.
  • Empleo de nonces (números de un solo uso) y funciones salt (funciones de alta aleatoriedad que se usan contra los ataques de diccionario a los que KDF es vulnerable).

Tipos de cifrados simétricos

Hay dos tipos de sistemas de cifrados simétricos: Cifrados de flujo (stream ciphers) y cifrados de bloque (block ciphers). Data Encryption Standard (DES) y Advanced Encryption Standard (AES) son ejemplos típicos de cifrados de bloque.

Cifrados de flujo (stream)

Los cifrados de flujo son algoritmos que realizan la encriptación procesado la información de entrada bit a bit (un bit a la vez). Pueden ser síncronos o asíncronos.

Los cifrados de flujo síncronos son aquellos en los que la secuencia de bits de la clave que se usa para el cifrado, depende únicamente de la clave. En cambio, los cifrados de flujo asíncronos tienen una secuencia de clave que también depende de los datos encriptados.

El requisito fundamental en los cifrados de flujo es la seguridad y la aleatoriedad de las secuencias de clave. Se han desarrollado diversas técnicas que van desde el empleo de generadores de números pseudo aleatorios (PRNGs) hasta generadores de números aleatorios hardware (RNGs): Es esencial que el generador de clave sea criptográficamente seguro.

Cifrados de bloque

Los cifrados de bloque son algoritmos de encriptación que dividen el texto a ser encriptado en bloques de longitud fija y aplican la encriptación bloque por bloque. Los cifrados de bloque generalmente se construyen utilizando una estrategia de diseño conocida como cifrado Feistel. Cifrados de bloque recientes, como AES (Rijndael), han sido construidos utilizando una combinación de sustitución y permutación llamada Red de Sustitución-Permutación (SPN).

Data Encryption Standard (DES)

El DES fue introducido a principios de los 70 como un algoritmo estándar para la encriptación, y fue ampliamente utilizado durante los años 1980 y 1990. El algoritmo fue controvertido al principio, puesto que tenía algunos de sus elementos de diseño clasificados como secreto y siempre estuvo bajo sospecha de que la NSA había dejado una puerta trasera en él.

La longitud de clave de cifrado era de solo 56 bits, lo que lo hacía muy vulnerable a los ataques de fuerza bruta. En julio de 1998, por ejemplo, la Electronic Frontier Foundation (EFF) rompió el DES utilizando una máquina especializada llamada EFF DES cracker (o Deep Crack).

Advanced Encryption Standard (AES)

AES fue desarrollado y estandarizado en 2001 después de una realizarse una competición abierta. Hasta ahora, no se ha encontrado ningún ataque contra AES más efectivo que el método de fuerza bruta.

Problemas de la criptografía simétrica

El principal problema con los sistemas de cifrado simétrico no está ligado a su seguridad, sino al intercambio seguro de la clave entre los participantes. Para un atacante, es fácil de entender que sería mucho más sencillo interceptar la clave que realiza una ataque de fuerza bruta (probando las posibles combinaciones).

En la criptografía simétrica se debe emplear una clave muy difícil de descifrar, puesto que los ordenadores actuales pueden adivinar claves de forma muy rápida. Por esta razón, tenemos que considerar que, como los algoritmos criptográficos son públicos, se debe garantizar su fortaleza a través de su complejidad interna y de la longitud de la clave empleada, con el objetivo de evitar los ataques de fuerza bruta.

¿Qué es la criptografía asimétrica?

La criptografía asimétrica, también conocida como criptografía de clave pública o criptografía de dos claves, es un sistema criptográfico que utiliza dos claves, una clave pública y otra privada, para el envío de mensajes o datos informáticos. La clave pública se utiliza para cifrar el mensaje y la clave privada se utiliza para descifrarlo. El destinatario genera ambas claves y comparte la clave pública con el emisor del mensaje, quien puede utilizarla para cifrar el mensaje. Una vez cifrado, solo puede ser descifrado por el destinatario con su clave privada, lo que garantiza la confidencialidad del mensaje.

Por otro lado, si el propietario del par de claves utiliza su clave privada para cifrar un mensaje, cualquiera puede descifrarlo utilizando la clave pública correspondiente. Esto permite la identificación y autenticación del remitente, ya que solo él debe conocer su clave privada.

La criptografía de clave pública se inventó para evitar el problema del intercambio de claves en los sistemas de cifrado simétricos. Con las claves públicas, no es necesario que el remitente y el destinatario acuerden una clave común. Solo necesitan obtener y proteger las claves públicas y privadas respectivas antes de iniciar la comunicación secreta. Además, cualquiera puede utilizar las claves públicas para comunicarse con ellos siempre que utilicen correctamente la clave pública de cada uno.

Los algoritmos de clave pública son más lentos en términos de cálculo que los algoritmos de clave simétrica. Por lo tanto, no se utilizan comúnmente en la encriptación de archivos grandes. Por lo general, se utilizan para intercambiar claves para algoritmos simétricos. Una vez que las claves se han establecido de manera segura, se pueden utilizar algoritmos de clave simétrica para encriptar los datos.

RSA

RSA (Rivest-Shamir-Adleman, acrónimo de los nombres de sus creadores) es un algoritmo de criptografía de clave pública ampliamente utilizado para la encriptación y la firma digital. Fue inventado en 1977 y se convirtió en uno de los primeros sistemas de criptografía de clave pública.

El algoritmo RSA se basa en el problema matemático de factorización de números enteros de gran longitud. Mientras que obtener estos números mediante la multiplicación de números primos es sencillo, factorizar el resultado no es fácil de hacer en un tiempo limitado. La seguridad del RSA radica en la dificultad de realizar esta factorización, lo que se vuelve muy complejo a medida que el tamaño del número crece.


¿Qué es factorizar números?

Factorizar es el proceso de descomponer un número en sus factores primos. Es decir, encontrar los números más pequeños que multiplicados juntos dan como resultado el número original. Por ejemplo, la factorización del número 12 sería 2 x 2 x 3; siendo éstos los factores primos de 12.


En RSA, cada usuario tiene un par de claves: una clave pública y una clave privada. La clave pública se puede compartir libremente y se utiliza para encriptar mensajes que solo el destinatario, que posee la clave privada correspondiente, puede desencriptar. La clave privada debe mantenerse en secreto y se utiliza para desencriptar los mensajes cifrados con la clave pública del propietario.

RSA es ampliamente utilizado en la seguridad de Internet, como en el cifrado de comunicaciones seguras, firmas digitales y autenticación en sistemas de clave pública. Su eficacia y seguridad han sido probadas a lo largo de los años, lo que lo convierte en un pilar fundamental en la criptografía moderna.

ECC (Elliptic Curve Cryptography)

ECC es un sistema de criptografía de clave pública que se basa en las propiedades matemáticas de las curvas elípticas. Fue propuesto en la década de 1980 como una alternativa más eficiente a RSA.

Una de las principales ventajas de ECC es que proporciona un nivel de seguridad equivalente a RSA, pero con claves más cortas; lo que resulta en un menor consumo de recursos y una mayor eficiencia en términos de rendimiento y almacenamiento.

Debido a estas ventajas, ECC se ha vuelto ampliamente utilizado en aplicaciones donde los recursos son limitados, como dispositivos móviles y sistemas de Internet de las cosas (IoT). También es una opción popular en sistemas que requieren una alta velocidad de procesamiento, como aplicaciones criptográficas en tiempo real.

DSA (Digital Signature Algorithm)

DSA es un algoritmo de firma digital que se utiliza para proporcionar autenticación, integridad y no repudio en sistemas de criptografía de clave pública. Fue propuesto en 1991 por el Instituto Nacional de Estándares y Tecnología (NIST) como una alternativa más eficiente a los algoritmos de firma digital existentes en ese momento.

El DSA ofrece un nivel de seguridad comparable a otros algoritmos de firma digital, como RSA, pero con claves más cortas, lo que lo hace más eficiente en términos de rendimiento y almacenamiento. Es ampliamente utilizado en aplicaciones de seguridad informática, como firmas digitales, autenticación de mensajes y protección de datos en sistemas de criptografía de clave pública. Sin embargo, es importante mantener las claves privadas seguras y protegidas para garantizar la confiabilidad del algoritmo.

Sistemas híbridos: Síncronos y asíncronos

Es un método que usa tanto un cifrado simétrico como un asimétrico. Empleando el cifrado de clave pública para compartir la clave necesaria para el cifrado simétrico. De esta manera se aprovecha la eficiencia de la criptografía simétrica y se solventa el momento crítico del envío de la clave simétrica empleando criptografía de clave pública,

Historia de la criptografía

La historia de la criptografía se remonta a miles de años atrás, desde los tiempos más antiguos hasta los días modernos. A lo largo de la historia, la criptografía ha sido una herramienta crucial para proteger la confidencialidad y seguridad de la información, así como para mantener secretos en el campo militar, diplomático y comercial.

Los Inicios de la Criptografía Los orígenes de la criptografía se remontan a la antigua Mesopotamia, alrededor del año 1900 a.C. Los sumerios utilizaban la escritura cuneiforme, y en algunas tablillas de arcilla, se encontraron inscripciones que sugerían el uso de sustitución simple, un método criptográfico primitivo donde los símbolos eran reemplazados por otros símbolos o números. Sin embargo, el verdadero avance en la criptografía se produjo en el antiguo Egipto.

El Antiguo Egipto y la Criptografía

Los antiguos egipcios emplearon técnicas criptográficas para proteger sus escritos y mensajes importantes. Uno de los métodos más notables fue el uso del cifrado jeroglífico, donde los símbolos y figuras representaban sonidos y conceptos específicos. Los jeroglíficos eran extremadamente difíciles de entender para aquellos que no conocían la clave para descifrarlos, lo que proporcionaba una forma efectiva de mantener secretos.

La cifra César

Uno de los sistemas de cifrado más famosos de la antigua Roma fue la Cifra César, que recibió su nombre en honor a Julio César. En este método, cada letra del mensaje original se desplazaba un número fijo de posiciones hacia adelante en el alfabeto para producir el texto cifrado. Por ejemplo, con un desplazamiento de 3, la letra A se convierte en D, B en E, y así sucesivamente. Este tipo de cifrado es conocido como cifrado de desplazamiento o cifrado de sustitución monoalfabética.

Cifrado Polialfabético y la Máquina Enigma

En el siglo IX, el erudito árabe Al-Kindi desarrolló una técnica más sofisticada conocida como cifrado polialfabético. En este sistema, varias tablas de sustitución se utilizaban en lugar de una sola, lo que dificultaba aún más el proceso de descifrado. Esta técnica fue revolucionaria en su época y sentó las bases para futuros avances en criptografía.

Durante la Segunda Guerra Mundial, la máquina Enigma fue uno de los dispositivos de cifrado más avanzados desarrollados por los alemanes. Utilizaba rotores intercambiables y cables para cifrar y descifrar mensajes. Los Aliados realizaron esfuerzos significativos para descifrar los mensajes de Enigma, y finalmente, el trabajo realizado por el equipo de Alan Turing y otros criptoanalistas condujo a la ruptura del código, lo que tuvo un impacto crucial en el resultado de la guerra.

La Era de la Criptografía Moderna

Con el advenimiento de la computadora y la era digital, la criptografía experimentó un cambio significativo. A mediados del siglo XX, los criptógrafos desarrollaron métodos más fuertes basados en complejas operaciones matemáticas. Uno de los algoritmos más influyentes fue el RSA, desarrollado en 1977 por Ron Rivest, Adi Shamir y Leonard Adleman. RSA es un algoritmo de clave pública que utiliza la factorización de números enteros grandes para encriptar y descifrar datos.

Además del RSA, surgieron otros algoritmos criptográficos sólidos como el DES (Estándar de Cifrado de Datos) y el AES (Estándar de Cifrado Avanzado), que se utilizan ampliamente para proteger la información en transmisiones y almacenamiento.

La Criptografía en la Era Digital

Con la creciente importancia de las comunicaciones digitales y el comercio electrónico, la criptografía se ha convertido en una piedra angular de la seguridad en Internet. El desarrollo de protocolos seguros como SSL/TLS ha permitido la protección de transacciones en línea y la confidencialidad de la información sensible.

La criptografía también ha desempeñado un papel crucial en el desarrollo de tecnologías como la firma digital, que garantiza la autenticidad e integridad de documentos electrónicos, y las criptomonedas, que utilizan algoritmos criptográficos para garantizar la seguridad y la validación de transacciones.

En la actualidad, la criptografía se encuentra en constante evolución y sigue siendo un campo de investigación y desarrollo activo. Con el crecimiento de la inteligencia artificial, el aprendizaje automático y la computación cuántica, los desafíos en materia de seguridad y criptografía también continúan aumentando.

¿Qué es OpenSSL y cómo se usa?

OpenSSL es un conjunto de herramientas y librerías criptográficas de código abierto utilizada principalmente para implementar el uso de Secure Sockets Layer (SSL) y Transport Layer Security (TLS) (entre otros protocolos de seguridad) en las conexiones a Internet, así como para crear certificados digitales para implementarlos en los servidores de páginas web, como Apache. Está disponible tanto para Windows, Linux o MacOS.

Crear Hash SHA256

$ echo -n 'WorldChain' | openssl dgst -sha256

SHA2-256(stdin)= 7b207124b911795923164297b2c8604a0fbfa7a6356ac1a7bcced30073cfe3f1

AES con OpenSSL

Encriptar en el contenido de un fichero

$ echo -n 'WorldChain' | openssl enc -aes-256-cbc 

enter AES-256-CBC encryption password:worldchain

Verifying - enter AES-256-CBC encryption password:worldchain

alted__チハ￱ᅰ?ᅯ¬テH0ᄚᅣFタᅦᄌ6ツロ¬
7sᄌMJᅯᄉ↑ᄀᄍLン

Desencriptar en el contenido de un fichero

openssl enc -d -aes-256-cbc -in mensaje.bin -out mensaje.dec 

RSA con OpenSSL

Generación de la clave privada

$ openssl genpkey -algorithm RSA -out privatekey.pem

Si abrimos el fichero privatekey.pem generado veremos algo del estilo:

  -----BEGIN RSA PRIVATE KEY-----
GuIQh4EdIp2DY1KfgB3eHic1InCG5VC9/dumHd7AqEnlo241fRuIo8zgO87GV+tk
cvKd/pPCGhmyCZy/are0wZt3KLYWUyoN7i+8H2Khk8LmaspD6Tx309VHTfCyoJsu
jtuR5c4HbcRtOYhMByHEqllEst1azzlIrO75Qj5cUG01K1MbdTeXq1xUGjo97s+V
gEOokMQ+JmaJD9lrbiMz4wjWRtREjHfc1VYTA+ZE1W3HT3PfrjCnHm9RKKFaA6kM
fPInefQgdzhCa0mCz+HOKJfkpfPh8ufGM9Jfb99VjZdI77LHeNN4VqeQ/VyPH7pn
wp7GbEJ8g6iX4BWUWpXUVStfYNQTV8Dis7ayZtr3g/o+AKnh/dGnk1SHHNFgUUFf/
+E0EXMokHSqqOzwf4t8xp4upnnS/7ag5MIVcU5/iWGW4sDEw7xfB25zD4lbvVK5
kSZeWLgm79wMipKP90iEELPqO6cS2yPXd+ADfHs7FWPQW0UYGFeMnHa/
tlglO5Pxo7ek2iR57mazmx33cofIX6E/ZI9XLysp5TR6Npq1x8KCv2Dk2x3QSH8F54EQmQ2+
5uDsPA9Hg1B+agkBh/1g3tfevT01cCtUkQGl2ubhrNGB2SiiyKgw9Ks0AL3TO0ul
D69D18r6Y6s3pHQ9LYAs6EIq3/5dqNYW8eLQ5eINUIlHBp9ep8+quyqSfB3qPCBW
Db+qI09pYhkTrGBD8l5eQqs1T1h2gJsY2yyYV/Cp2m4fI+uHItCgSlkPROnj27Xh
p6HAPaFA0zWOz1lmVNYhTbJZlbbwYyf/OKmYuOklSuQ=
-----END RSA PRIVATE KEY-----

Generación de la clave pública

$ openssl rsa -pubout -in privatekey.pem -out publickey.pem

Obtenemos algo del estilo a:

-----BEGIN PUBLIC KEY-----
jIGfMAsGCSqGSIb3DQEBAQUAA4sNAYW8eLQ5eIgQCiThQcz8trznenpgZP1Bq8w8u0 
74A2J2MQX4hCSHf6/hMjLfxdeJNnw0zlcMV2l08YkIA/gSronsv+vfYrZ66lv8cv 6aHAzL6G4/
EAFA0zWOz1lmVNYhTbJZs9/wv7+L176GnD8j5K/9I4SF dMKArq1xk4IYKiGx0QIDAQABSqGSIb3DQEB
-----END PUBLIC KEY-----

Resumiendo qué es la criptografía

En este artículo, hemos abordado diversos temas relacionados con la criptografía y sus fundamentos.La criptografía esla ciencia de asegurar la información mediante técnicas de codificación. hemos visto cómo la criptografía asegura la confidencialidad, integridad y autenticación de datos a través de métodos como la encriptación y la autenticación.

Hemos discutido la importancia de la criptografía simétrica y asimétrica, así como sus diferencias y aplicaciones. Detallamos los conceptos de clave pública y privada, y cómo se utilizan en algoritmos como RSA y ECC para proporcionar seguridad en las comunicaciones.

Además, exploramos conceptos como la generación de números aleatorios, la autenticación del origen de datos y la no repudiación. Se explicó cómo las funciones hash y los protocolos de no repudiación garantizan la integridad y la trazabilidad de las acciones realizadas en sistemas informáticos.

También repasamos algunos ejemplos de algoritmos criptográficos como DES, AES y DSA, así como su importancia y aplicaciones prácticas.

Scroll al inicio