domingo, 5 de marzo de 2023

Criptografia y Criptoanalisis

 Criptografia y Criptoanalisis

Criptografia y Criptologia por Imotechnologics

La criptografía es el estudio de la transformación de información legible en un formato codificado para que solo las personas que tengan la clave adecuada puedan leerla. El criptoanálisis es el estudio de la decodificación de la información codificada sin la clave adecuada.
⦁        Los conceptos básicos de la criptografía, como la encriptación, la decodificación, los algoritmos criptográficos y los objetivos de la criptografía.
⦁        Diferentes tipos de criptografía, incluyendo la criptografía simétrica y asimétrica.
⦁        Algunos de los algoritmos criptográficos más populares, como DES, AES y Triple DES.
⦁        Modos de operación criptográficos, incluyendo ECB, CBC, CTR y CFB.
⦁        Conceptos importantes en criptografía, como la generación de secuencias pseudoaleatorias, las funciones hash, las funciones de integridad de los datos y la autenticación de mensajes.
⦁        Algunos términos criptográficos clave, como XOR y MAC.
A continuación, te brindo una descripción general de la criptografía y el criptoanálisis:

    Criptografía: La criptografía se utiliza para proteger la privacidad y la seguridad de la información en línea. Hay varios tipos de criptografía, como la criptografía simétrica y la criptografía asimétrica. La criptografía simétrica utiliza la misma clave para cifrar y descifrar información, mientras que la criptografía asimétrica utiliza una clave pública y una clave privada para proteger la información.

    Criptoanálisis: El criptoanálisis se utiliza para descifrar información codificada sin tener la clave adecuada. Hay varios tipos de criptoanálisis, como el criptoanálisis de fuerza bruta, el criptoanálisis de texto claro y el criptoanálisis estadístico.


algunos sitios web especializados en criptografía que pueden ser de utilidad para tu investigación:

    Cryptography Engineering - Este sitio web es administrado por Bruce Schneier, un experto en seguridad y criptografía. El sitio ofrece recursos y herramientas para ayudar a las personas a entender la criptografía y cómo aplicarla en la seguridad de sus sistemas.

    Crypto Museum - Este sitio web es un museo virtual de la criptografía y la seguridad de las comunicaciones. Ofrece una gran cantidad de información y recursos sobre la historia de la criptografía y la evolución de las técnicas de seguridad de la información.

    IACR - La Asociación Internacional para la Investigación en Criptografía (IACR) es una organización sin fines de lucro dedicada a la promoción de la investigación en criptografía. Su sitio web ofrece información sobre eventos, publicaciones y recursos relacionados con la criptografía.

    NIST - El Instituto Nacional de Estándares y Tecnología (NIST) es una agencia gubernamental de los Estados Unidos que promueve la innovación y la competitividad de la industria del país mediante el desarrollo y la aplicación de estándares científicos y tecnológicos. En su sitio web, encontrarás información sobre criptografía y seguridad de la información, así como recursos y herramientas relacionados con estos temas.


Aquí tienes los enlaces de cada uno de los sitios web especializados en criptografía que mencioné anteriormente:

  •     Cryptography Engineering: https://www.schneier.com/cryptography-engineering/
  •     Crypto Museum: http://www.cryptomuseum.com/
  •     IACR: https://www.iacr.org/
  •     NIST: https://www.nist.gov/topics/cryptography


DES (Data Encryption Standard)

DES (Data Encryption Standard) es un algoritmo de cifrado de bloques que fue desarrollado en la década de 1970 por IBM en colaboración con la Agencia de Seguridad Nacional de los Estados Unidos (NSA). El DES fue utilizado como estándar de cifrado para proteger información gubernamental no clasificada y datos comerciales.

El DES utiliza una clave de 56 bits para cifrar los datos en bloques de 64 bits. Cada bloque de 64 bits se somete a una serie de transformaciones, incluyendo permutaciones, sustituciones y operaciones lógicas, para producir un bloque cifrado de 64 bits. El proceso se repite para cada bloque de datos en el mensaje.

El proceso de cifrado DES consta de dos fases principales: la fase de cifrado y la fase de descifrado. En la fase de cifrado, el mensaje sin cifrar se divide en bloques de 64 bits, se aplica una serie de transformaciones a cada bloque y se cifra con una clave de 56 bits. En la fase de descifrado, el proceso se invierte para producir el mensaje original.

Aunque el DES fue considerado seguro en su época, se ha vuelto vulnerable a los ataques de fuerza bruta, donde un atacante intenta descifrar los datos cifrados probando todas las posibles claves. Debido a esto, el DES ha sido reemplazado en la actualidad por otros algoritmos de cifrado más seguros, como el AES (Advanced Encryption Standard).

Es importante destacar que el DES ya no se considera seguro para el cifrado de datos, y se recomienda no utilizarlo para proteger información sensible.

AES (Advanced Encryption Standard)

AES (Advanced Encryption Standard) es un algoritmo de cifrado simétrico de bloques que se utiliza ampliamente para proteger información confidencial en la actualidad. Fue desarrollado en 2001 por dos criptógrafos belgas, Vincent Rijmen y Joan Daemen, y fue seleccionado como estándar de cifrado por el Instituto Nacional de Estándares y Tecnología de los Estados Unidos (NIST) en 2002.

El AES utiliza una clave de cifrado de longitud variable de 128, 192 o 256 bits para cifrar los datos en bloques de 128 bits. Utiliza una serie de transformaciones, incluyendo permutaciones, sustituciones y operaciones lógicas, para producir un bloque cifrado de 128 bits. El proceso se repite para cada bloque de datos en el mensaje.

El proceso de cifrado AES consta de cuatro fases principales: la fase de sustitución, la fase de permutación, la fase de mezcla y la fase de clave aditiva. En la fase de sustitución, se sustituyen los valores de los bytes del bloque utilizando una tabla de sustitución (S-Box). En la fase de permutación, se permutan los bytes del bloque según una tabla de permutación (ShiftRows). En la fase de mezcla, se mezclan los bytes del bloque según una matriz de mezcla (MixColumns). Finalmente, en la fase de clave aditiva, se añade una clave de ronda a cada bloque.

El AES se considera uno de los algoritmos de cifrado más seguros disponibles en la actualidad. Es utilizado por muchas organizaciones gubernamentales y empresas para proteger información confidencial. A diferencia del DES, el AES no se considera vulnerable a los ataques de fuerza bruta debido a la longitud de la clave utilizada.

ECB (Electronic Code Book)

ECB (Electronic Code Book) es un modo de cifrado de bloques utilizado en criptografía. Es uno de los modos de operación más simples, donde cada bloque de datos se cifra de forma independiente utilizando la misma clave de cifrado.

En el modo ECB, el mensaje original se divide en bloques de tamaño fijo, que se cifran de forma independiente utilizando la misma clave de cifrado. Cada bloque cifrado es idéntico si los bloques de entrada son idénticos. Esto significa que el modo ECB no introduce aleatoriedad en el cifrado, lo que puede hacer que sea vulnerable a ciertos tipos de ataques.

Además, el modo ECB no proporciona autenticación de los datos cifrados, lo que significa que un atacante podría modificar los bloques cifrados sin ser detectado. Por estas razones, el modo ECB no se recomienda para su uso en situaciones donde se requiere seguridad de los datos cifrados.

El proceso de cifrado en modo ECB se realiza en bloques de tamaño fijo, por ejemplo, de 64 bits o 128 bits. Cada bloque de datos se cifra de forma independiente utilizando la misma clave de cifrado, lo que significa que si dos bloques de datos tienen el mismo valor, se cifrarán de la misma manera. El resultado del cifrado es un conjunto de bloques cifrados, que se pueden enviar de forma segura a través de una red o almacenar en un dispositivo de almacenamiento.

Aunque el modo ECB es simple y fácil de implementar, tiene algunas debilidades importantes. Una de las principales debilidades es que no se proporciona ningún mecanismo de autenticación o integridad de datos. Esto significa que si un atacante cambia el valor de un bloque cifrado, el receptor no será capaz de detectar la alteración. Además, si hay patrones repetitivos en los datos de entrada, el modo ECB puede ser vulnerable a ciertos tipos de ataques, como el análisis de frecuencia.

Hay otros modos de operación más seguros y avanzados disponibles en la actualidad, como el modo CBC (Cipher Block Chaining) y el modo GCM (Galois/Counter Mode), que proporcionan seguridad adicional y autenticación de datos.

XOR (eXclusive OR o OR exclusivo)


XOR (eXclusive OR o OR exclusivo) es una operación lógica que se utiliza en criptografía para combinar dos valores binarios. Esta operación devuelve un valor "1" si los dos valores de entrada son diferentes, y un valor "0" si son iguales.

En términos más simples, se puede pensar en XOR como una especie de interruptor: si ambos valores de entrada son iguales, el interruptor está apagado y la salida es "0", pero si los valores son diferentes, el interruptor está encendido y la salida es "1".

Por ejemplo, si se aplica la operación XOR a los valores binarios "1010" y "1100", el resultado sería "0110", ya que los dos valores de entrada tienen diferentes bits en la posición 2 y 3.

En criptografía, XOR se utiliza en diversos contextos, como en la generación de secuencias pseudoaleatorias, la encriptación de flujo, la integridad de los datos y la autenticación.
XOR (eXclusive OR o OR exclusivo) es una operación lógica que se aplica a dos valores binarios, es decir, valores que consisten únicamente de 0 y 1. Esta operación produce un resultado que también es un valor binario, cuyo bit correspondiente está en "1" si y solo si los bits correspondientes de los valores de entrada son diferentes.

La tabla de verdad para la operación XOR es la siguiente:

Tabla de Verdad XOR imotechnologics
 
En criptografía, XOR se utiliza con frecuencia como una operación básica en la construcción de diferentes algoritmos. Por ejemplo, en la criptografía de flujo, se utiliza XOR para combinar un flujo de datos con una clave secreta, produciendo un flujo cifrado que puede transmitirse de forma segura. La operación XOR también se utiliza en la generación de secuencias pseudoaleatorias y en la verificación de la integridad de los datos.

Una propiedad importante de la operación XOR es que es reversible. Es decir, si se aplica XOR a un valor binario con otro valor, y luego se aplica XOR de nuevo con el mismo valor, se recupera el valor original. Esta propiedad es útil en muchas aplicaciones criptográficas, como la verificación de la integridad de los datos.

CBC (Cipher Block Chaining)

CBC (Cipher Block Chaining) es un modo de operación de cifrado de bloques utilizado en criptografía simétrica. En este modo de operación, cada bloque de datos se cifra de forma dependiente del bloque anterior, lo que introduce aleatoriedad en el cifrado y hace que sea más resistente a ciertos tipos de ataques.

En el modo CBC, cada bloque de datos se cifra utilizando una clave de cifrado compartida y se mezcla con el bloque anterior antes de cifrarlo. La mezcla se realiza mediante la operación de XOR (o exclusivo) del bloque de datos actual con el bloque cifrado anterior. El primer bloque de datos se mezcla con un vector de inicialización (IV) aleatorio antes de cifrarlo.

La aleatoriedad introducida por el modo CBC lo hace más resistente a los ataques de análisis de frecuencia y otros ataques criptográficos. Además, el modo CBC proporciona autenticación de los datos cifrados mediante la utilización de un código de autenticación de mensaje (MAC) o un código de autenticación de cifrado (EAX), que permite al receptor verificar la autenticidad e integridad de los datos cifrados.

Aunque el modo CBC es más seguro que el modo ECB, aún puede ser vulnerable a ciertos tipos de ataques, como los ataques de manipulación de bits. Además, el modo CBC no es adecuado para el cifrado de datos en paralelo, ya que cada bloque de datos depende del bloque anterior.
"Tricks with Block Ciphers"
"Tricks with Block Ciphers" se refiere a una serie de técnicas y estrategias utilizadas por criptógrafos y hackers para atacar y/o mejorar la seguridad de los cifrados de bloques, que son algoritmos criptográficos utilizados para cifrar bloques de datos de un tamaño fijo.

Estos trucos incluyen técnicas de criptoanálisis como el análisis diferencial, el análisis lineal, el ataque de texto claro elegido, entre otros. También pueden incluir técnicas de mejora de seguridad, como la utilización de modos de operación más seguros, el uso de claves más largas o el fortalecimiento del cifrado mediante la adición de capas de cifrado adicionales.

El objetivo de estos trucos es explotar debilidades en el cifrado de bloques para poder romperlo o mejorar su seguridad. Los criptógrafos utilizan estas técnicas para diseñar algoritmos más seguros y mejorar la seguridad de los sistemas existentes, mientras que los hackers pueden utilizar estas técnicas para comprometer la seguridad de los sistemas y obtener acceso no autorizado a los datos protegidos.

Es importante destacar que estos trucos deben ser utilizados con fines éticos y legales, y sólo en sistemas y aplicaciones de los cuales se tenga autorización para realizar pruebas de seguridad o análisis de vulnerabilidades.

MAC (Message Authentication Code)

MAC (Message Authentication Code) es un código de autenticación de mensajes utilizado en criptografía para verificar la integridad y autenticidad de un mensaje o dato transmitido.

Un MAC es una función criptográfica que toma una clave compartida y los datos de un mensaje y produce un código que puede ser adjuntado al mensaje para asegurar que el receptor pueda verificar la autenticidad e integridad del mensaje.

El proceso de creación y verificación de un MAC involucra dos pasos principales: el primer paso es crear el código de autenticación de mensaje (MAC) utilizando la función criptográfica y la clave compartida, y el segundo paso es adjuntar el MAC al mensaje y enviarlo al receptor. El receptor, a su vez, verifica la autenticidad del mensaje utilizando la misma clave compartida y la función criptográfica para calcular un MAC y compararlo con el MAC recibido. Si los códigos coinciden, entonces el mensaje se considera auténtico.

Los MAC se utilizan comúnmente en aplicaciones de seguridad, como la autenticación de usuarios, la validación de datos y la autenticación de transacciones financieras. Algunos ejemplos de algoritmos MAC comúnmente utilizados incluyen HMAC, CMAC y Poly1305.

One way function with block cipher

Una función unidireccional (también conocida como función hash criptográfica) es una función matemática que es fácil de calcular en una dirección, pero muy difícil o imposible de revertir para obtener la entrada original.

En el contexto de los cifrados de bloques, una función unidireccional con cifrado de bloques se refiere a una función hash que utiliza un cifrado de bloques para producir el hash. En este caso, la entrada original se convierte en un bloque de datos de longitud fija y se cifra utilizando una clave compartida, produciendo un hash de longitud fija que se puede utilizar para verificar la integridad de los datos.

Un ejemplo de una función unidireccional con cifrado de bloques es el algoritmo de hash criptográfico SHA-256, que utiliza el cifrado de bloques como parte de su proceso de hash. SHA-256 convierte la entrada en bloques de 512 bits y los cifra utilizando el cifrado de bloques SHA-256, produciendo un hash de 256 bits que es muy difícil de revertir.

Las funciones unidireccionales con cifrado de bloques se utilizan comúnmente en aplicaciones de seguridad para verificar la integridad y autenticidad de los datos, como la autenticación de contraseñas y la validación de archivos. Sin embargo, es importante tener en cuenta que incluso las funciones unidireccionales con cifrado de bloques no son completamente seguras y pueden ser vulnerables a ciertos tipos de ataques, por lo que es importante utilizar algoritmos criptográficos fuertes y técnicas de seguridad adicionales para proteger los datos.

Pseudo Random Bit stream Generation


La generación de secuencias de bits pseudoaleatorias (PRBS, por sus siglas en inglés) se refiere al proceso de generar una secuencia de bits que parecen ser aleatorios, pero que se generan de manera determinista a partir de una semilla inicial. Esta técnica es utilizada en criptografía y en otras aplicaciones que requieren de la generación de números aleatorios, como en la generación de claves criptográficas y en la simulación de eventos aleatorios.

En la generación de PRBS, se utiliza un algoritmo de generación de números pseudoaleatorios que toma una semilla inicial como entrada y produce una secuencia de bits que parecen ser aleatorios, pero que pueden ser reproducidos a partir de la misma semilla. Un ejemplo común de un algoritmo de PRBS es el generador de números pseudoaleatorios de retroalimentación de registro de desplazamiento (LFSR, por sus siglas en inglés), que utiliza una serie de registros de desplazamiento para generar una secuencia de bits pseudoaleatorios.

Es importante tener en cuenta que, aunque estas secuencias de bits parecen ser aleatorias, en realidad son deterministas y pueden ser predecibles si se conoce la semilla inicial y el algoritmo utilizado para generarlas. Por esta razón, se requieren técnicas adicionales, como la utilización de semillas aleatorias y la combinación de múltiples fuentes de aleatoriedad para mejorar la seguridad y la calidad de las secuencias de bits generadas.
OFB (Output Feedback Mode)
OFB (Output Feedback Mode) es un modo de operación de cifrado de bloques que se utiliza para cifrar flujos de datos de longitud variable. En este modo, el cifrador de bloques se utiliza para generar una secuencia de bits pseudoaleatorios que se combinan con los datos de entrada utilizando una operación XOR. El resultado de esta operación se cifra utilizando el cifrador de bloques, y el proceso se repite para cada bloque de datos de entrada.

La principal ventaja de OFB es que permite cifrar flujos de datos de longitud variable sin tener que reajustar el cifrador de bloques para cada bloque. Además, OFB es resistente a errores en los datos de entrada, ya que los errores en un bloque no afectarán la decodificación de los bloques posteriores.

CTR (Counter Mode)

CTR (Counter Mode) es un modo de operación de cifrado de bloques que se utiliza para cifrar flujos de datos de longitud variable. En este modo, se utiliza un contador como entrada al cifrador de bloques, y el resultado se combina mediante una operación XOR con los datos de entrada para producir el cifrado.

En lugar de cifrar los datos de entrada directamente, CTR utiliza el cifrador de bloques para generar una secuencia de bits pseudoaleatorios a partir de una semilla y el contador, y luego combina estos bits con los datos de entrada mediante una operación XOR. El contador se incrementa para cada bloque de datos de entrada, lo que garantiza que se genere una secuencia diferente de bits pseudoaleatorios para cada bloque.

La principal ventaja de CTR es que permite cifrar flujos de datos de longitud variable sin tener que reajustar el cifrador de bloques para cada bloque. Además, CTR proporciona integridad de los datos, ya que cualquier manipulación de los datos de entrada será detectada durante la operación de descifrado.

Para entender CTR con una metáfora, puedes pensar en un juego de adivinanza donde alguien piensa en una palabra secreta y la escribe en una hoja de papel, pero en lugar de escribir la palabra directamente, escribe una serie de números aleatorios que representan cada letra de la palabra. Luego, se da un conjunto de números aleatorios adicionales a la persona que trata de adivinar la palabra secreta, quien los combina con los números de la hoja de papel mediante una operación XOR. Al hacerlo, la persona obtiene la palabra secreta sin necesidad de conocer los números originales utilizados para representar las letras.

Sin embargo, OFB no es adecuado para su uso en entornos donde la integridad de los datos es crítica, ya que cualquier manipulación de los datos de entrada no será detectada hasta después de la operación de descifrado. En tales casos, se recomienda el uso de modos de operación que proporcionen integridad de los datos, como los modos CBC o CTR.
Imagina que quieres enviar una serie de mensajes secretos a tu amigo, pero no puedes enviarlos directamente ya que pueden ser interceptados por alguien que no debería verlos. Entonces decides enviar cada mensaje en una caja fuerte, pero la caja fuerte necesita una llave especial para ser abierta. En lugar de enviar la llave junto con cada caja fuerte, decides utilizar un dispositivo que genera una serie de llaves pseudoaleatorias que cambian cada vez que abres una caja fuerte. Así, cada vez que quieras enviar un mensaje, generas una nueva llave y la utilizas para abrir la caja fuerte que contiene el mensaje. De esta manera, tus mensajes están protegidos contra la interceptación, ya que el mensaje dentro de la caja fuerte solo puede ser leído si se tiene la llave correcta, que cambia cada vez que se abre una caja fuerte.

CFB (Cipher Feedback Mode)

CFB (Cipher Feedback Mode) es un modo de operación de cifrado de bloques que se utiliza para cifrar flujos de datos de longitud variable. En este modo, se utiliza el cifrador de bloques para cifrar un bloque de retroalimentación (feedback) generado por una función de realimentación (feedback function), y el resultado se combina mediante una operación XOR con los datos de entrada para producir el cifrado.

En lugar de cifrar los datos de entrada directamente, CFB utiliza el cifrador de bloques para cifrar un bloque de datos generado por la función de retroalimentación, que se combina con los datos de entrada mediante una operación XOR. El resultado se cifra utilizando el cifrador de bloques, y el proceso se repite para cada bloque de datos de entrada. El bloque de retroalimentación se actualiza para cada bloque de datos de salida, lo que garantiza que se genere un flujo diferente de bits pseudoaleatorios para cada bloque.

La principal ventaja de CFB es que permite cifrar flujos de datos de longitud variable sin tener que reajustar el cifrador de bloques para cada bloque. Además, CFB proporciona integridad de los datos, ya que cualquier manipulación de los datos de entrada será detectada durante la operación de descifrado.

Para entender CFB con una metáfora, puedes pensar en una caja fuerte que se puede abrir con un código de seguridad. En lugar de ingresar directamente el código de seguridad, la persona que intenta abrir la caja fuerte genera una serie de números aleatorios que se combinan con los dígitos del código mediante una operación XOR. El resultado se cifra y se utiliza para abrir la caja fuerte. Luego, el número aleatorio generado se utiliza para combinar con los dígitos del código siguiente y así sucesivamente. De esta manera, se puede abrir la caja fuerte sin tener que ingresar el código directamente y los números aleatorios proporcionan una capa adicional de seguridad.

Triple DES (Data Encryption Standard)


Triple DES (Data Encryption Standard) es un algoritmo de cifrado de bloques que utiliza una clave de 168 bits para cifrar y descifrar datos. Este algoritmo se basa en el cifrador de bloques DES, que utiliza una clave de 56 bits, pero se aplica tres veces consecutivas a los datos para aumentar la seguridad.

El proceso de cifrado con Triple DES implica la aplicación del cifrador de bloques DES tres veces, utilizando tres claves distintas. En el primer paso, los datos se cifran con la primera clave, en el segundo paso se descifran con la segunda clave y en el tercer paso se cifran de nuevo con la tercera clave. Para descifrar los datos, se realiza el proceso inverso, aplicando el cifrador de bloques DES tres veces en orden inverso y utilizando las claves correspondientes.

La principal ventaja de Triple DES es que ofrece un nivel de seguridad más alto que el cifrador de bloques DES original, debido a la longitud de la clave utilizada y al hecho de que el cifrado se aplica tres veces consecutivas. Sin embargo, Triple DES es menos eficiente que otros algoritmos de cifrado de bloques más recientes y se ha considerado obsoleto en algunos entornos.

Para entender Triple DES con una metáfora, puedes pensar en un juego de tres cerraduras en una caja fuerte. Para abrir la caja fuerte, se necesita una llave diferente para cada cerradura, que se aplica en orden. De esta manera, se logra un nivel de seguridad más alto que si solo hubiera una cerradura o una llave, ya que es menos probable que un ladrón pueda obtener todas las llaves necesarias para abrir la caja fuerte.

No hay comentarios.:

Publicar un comentario