Criptoanálisis, todo lo que debes saber

2020 fue una montaña rusa para las empresas. Estaban bajo una tremenda presión para mantener sus negocios en funcionamiento. Al entrar en 2021, los CISO y los equipos de seguridad de las empresas siguen bajo presión para salvaguardar sus negocios de todo tipo de amenazas para garantizar la continuidad empresarial establecida. 2021 estará marcado por la próxima ola de disrupción en la criptografía. Lo que es seguro hoy podría caer bajo el paraguas de la inseguridad mañana. ¿La razón? A medida que evolucionen los algoritmos, aparecerán nuevas vulnerabilidades y los atacantes cibernéticos encontrarán formas más exclusivas de romper la criptografía de la que dependen la mayoría de las empresas.

Para finales de 2021, las organizaciones con planes de criptografía altamente ágiles probablemente sufrirán un 60% menos de violaciones de seguridad y fallas de aplicaciones que las organizaciones sin un plan.

Veremos en este artículo qué es el criptoanálisis, las principales técnicas y ataques y la diferencia con la criptografía.

¿Qué es el criptoanálisis?

La criptografía es la ciencia de crear códigos o mantener este secreto. El criptoanálisis es lo contrario: el intento de descifrar el código, obteniendo acceso no autorizado a los datos cifrados.

El criptoanálisis es un componente importante del proceso de creación de criptosistemas sólidos. La dependencia de la «seguridad a través de la oscuridad» puede resultar en el uso de criptosistemas débiles si los creadores no consideraron todos los posibles vectores de ataque.

En cambio, los algoritmos criptográficos de uso común en la actualidad se han publicado para revisión criptoanalítica. Los que actualmente se consideran “confiables” y de uso común son aquellos para los que aún no se ha descubierto un ataque efectivo.

La definición de criptoanálisis establece que es el estudio detallado de varios métodos utilizados para comprender o decodificar información cifrada sin acceso a la información confidencial que generalmente se requiere para hacerlo. También se lo conoce como descifrado de código.

Técnicas criptoanalíticas

Los algoritmos criptográficos modernos están diseñados para resistir todas las técnicas criptoanalíticas conocidas. Sin embargo, algunas técnicas simples pueden ser útiles para evaluar la seguridad (y potencialmente romper) criptosistemas antiguos o de aficionados.

Cálculos de entropía

La entropía es la medida de la cantidad de aleatoriedad que existe dentro de un sistema. Un algoritmo criptográfico sólido debería producir un texto cifrado con una aleatoriedad muy alta, lo que indica que hay poca o ninguna información útil que vincule el texto cifrado con el texto en claro o la clave secreta original.

Esto hace que la prueba de entropía sea una herramienta útil para la identificación de datos cifrados. Si bien la entropía se puede calcular manualmente, herramientas como Binwalk y radare2 tienen probadores de entropía incorporados que se pueden usar para identificar datos cifrados dentro de un archivo.

Una vez que se han identificado los datos cifrados, se pueden utilizar otras funciones para ayudar a identificar los algoritmos de cifrado utilizados. Algunos ejemplos de información útil incluyen:

  • Texto cifrado y longitud de bloque
  • Nombres de funciones

Si se puede identificar el algoritmo de cifrado, es posible determinar si es un algoritmo roto. Alternativamente, el conocimiento del algoritmo puede ayudar en la búsqueda de una clave de cifrado dentro de un archivo.

Análisis de frecuencia de caracteres

A diferencia de un buen texto cifrado, los lenguajes modernos son todo menos aleatorios. Con un conocimiento suficiente de un idioma, a menudo es posible adivinar qué letra sigue después de una serie determinada. Por ejemplo, en el idioma inglés, ¿qué letra casi siempre viene después de la letra Q?

La falta de aleatoriedad en el lenguaje es útil para el criptoanálisis porque puede facilitar la ruptura de cifrados débiles. El análisis de frecuencia de caracteres puede romper fácilmente los cifrados de sustitución y rotacionales.

Algunas letras (como E, T y A) son mucho más comunes que otras (como Z, Q y J).

Esto es útil para el análisis de cifrados de sustitución y rotación, ya que es probable que la letra más común en el texto cifrado se asigne a E, la segunda más común probablemente se asigne a T, etcétera, siempre que el texto cifrado sea lo suficientemente largo. Con un cifrado rotacional, una sola coincidencia correcta es suficiente para determinar el tamaño del paso y descifrar el mensaje. Con un cifrado de sustitución, se debe determinar cada emparejamiento. Sin embargo, el conocimiento de algunas letras dentro de una palabra permite adivinar el resto.

Codificación frente a cifrado

La codificación y el cifrado son técnicas para la ofuscación de datos. Sin embargo, su implementación y efectos son muy diferentes.

El cifrado requiere una clave secreta para el cifrado y el descifrado. Sin el conocimiento de esta clave secreta, el texto sin formato no se puede recuperar del texto cifrado.

Los algoritmos de codificación aplican una operación reversible a los datos sin utilizar una clave secreta. Esto significa que cualquier persona con conocimiento del algoritmo de codificación puede revertirlo.

Los algoritmos de codificación se utilizan comúnmente en malware como un simple reemplazo del cifrado. Sin embargo, se pueden revertir fácilmente si se puede identificar el algoritmo de codificación.

Codificación Base64

La codificación Base64 es una técnica de codificación diseñada para permitir el envío de cualquier tipo de datos a través de protocolos limitados a caracteres alfanuméricos y símbolos. Esto se logra mapeando secuencias de tres bytes a conjuntos de cuatro caracteres.

Este mapeo hace posible asignar una secuencia de seis bits (cuatro conjuntos de seis caracteres son veinticuatro bits, que es la longitud de tres bytes) a uno de los sesenta y cuatro caracteres imprimibles. El sistema base64 usa relleno para que una entrada que no sea exactamente un múltiplo de tres bytes de longitud resultará en una versión codificada con uno o dos signos iguales al final. La combinación del juego de caracteres base64 y estos signos iguales de opciones hacen que este estilo de codificación sea relativamente fácil de identificar.

La codificación Base 64 se utiliza para hacer que los datos no imprimibles se puedan imprimir, por lo que un uso común es codificar datos cifrados. Sin embargo, en algunos casos, se usa codificación en lugar de encriptación, lo que la hace fácilmente reversible.

Codificación de URL

La codificación de URL es otro ejemplo de un estilo de codificación diseñado para permitir que los datos se pasen en un protocolo con un conjunto de caracteres restringido. En este caso, la codificación de URL está destinada a permitir caracteres que están reservados en URL, como? y /, para ser incluido en un nombre de dominio u otras partes de la URL.

La codificación de URL usa un signo de porcentaje (%) seguido de la representación ASCII de un valor para reemplazar ese valor. Esto elimina el carácter reservado de la URL pero permite recuperarlo fácilmente cuando sea necesario.

La codificación de URL está destinada a permitir el uso de caracteres reservados en las URL. Sin embargo, se suele abusar de él en ataques de inyección o como una simple capa de ofuscación, ya que derrota a la simple coincidencia de cadenas.

Tipos de ataques de criptoanálisis

La criptología se divide en dos partes. La primera parte, criptografía, enfatiza la creación de códigos secretos, y el criptoanálisis implica el estudio profundo del algoritmo criptográfico y el descifrado de los códigos secretos. Un criptoanalista es una persona que practica el criptoanálisis. Puede ayudarnos a comprender los criptosistemas y mejorarlos identificando los puntos débiles.

El significado de criptoanálisis se ocupa directamente de trabajar en el algoritmo para crear un código secreto más seguro y protegido. Por ejemplo, para derivar el texto sin formato, un criptoanalista podría tener que descifrar un texto cifrado. Ayuda a deducir la clave de cifrado o el texto sin formato.

Los ataques criptoanalíticos se llevan a cabo para identificar las áreas débiles de un sistema criptográfico. A través de estos puntos débiles, se puede descifrar la criptografía. Estos ataques de criptoanálisis dependen principalmente de la naturaleza del algoritmo y del conocimiento de las características generales del texto sin formato. Un texto sin formato podría estar escrito en inglés o un código escrito en Java. Es fundamental conocer la naturaleza del texto sin formato antes de planificar un ataque.

Los ataques criptoanalíticos se pueden clasificar en cinco tipos:

Análisis de texto sin formato conocido o KPA

En este caso, el atacante es consciente de los pares de texto sin formato y texto cifrado. Para encontrar la clave de cifrado, todo lo que tiene que hacer un atacante es mapear esos pares. Este ataque es relativamente fácil porque ya hay mucha información disponible con el atacante.

Análisis de texto sin formato elegido o CPA

Este ataque se lleva a cabo eligiendo textos sin formato aleatorios y luego obteniendo los textos cifrados correspondientes. El atacante debe encontrar la clave de cifrado. Aunque es bastante similar a KPA y relativamente simple de implementar, la tasa de éxito no es alta.

Análisis de solo texto cifrado o COA

Un ataque de este tipo es posible cuando el atacante solo conoce algo de texto cifrado y está tratando de encontrar la clave de cifrado y el texto sin formato correspondientes. Aunque este tipo de ataque es el más difícil de todos, la tasa de éxito es relativamente alta ya que solo se necesita el texto cifrado.

Ataque Man-In-The-Middle o MITM

Este ataque intercepta con éxito el mensaje entre dos comunicadores enviados a través de un canal seguro.

Análisis adaptativo de texto sin formato elegido o ACPA

Aunque es similar al CPA, implica que los atacantes soliciten textos cifrados de textos sin formato adicionales.

Usos de la criptografía

El criptoanálisis se utiliza en diversas industrias. La criptografía ha sido ampliamente adoptada en el mundo moderno de hoy, y todo el sistema fallará en su ausencia.

Veamos los campos en los que la criptografía encuentra una aplicación:

Mantener el secreto al transmitir información confidencial

Los remitentes que transmiten varios datos confidenciales no pueden permitirse que un tercero intercepte y lea mensajes.

Por ejemplo, en el sector de defensa, un oficial superior pasa información sobre una misión secreta a otro oficial superior. En este caso, la criptografía se utiliza para evitar que un tercero lea los datos. El tipo más común es la clave secreta. Se utiliza para cifrar y descifrar datos compartidos entre el remitente y el receptor.

Es fundamental mantener la clave segura para evitar el acceso no autorizado. Cualquiera que tenga la clave puede descifrar fácilmente el mensaje. Existe una clave maestra que se utiliza para generar una clave de sesión única para cada transacción. El único inconveniente es que si un atacante rompe la llave maestra, todo el sistema colapsará.

Una mejor alternativa es utilizar un criptosistema de clave pública. En este sistema, aunque cualquier persona con la clave pública puede cifrar datos, solo una clave privada puede descifrarlos. Además, los datos firmados con una clave privada solo se pueden verificar utilizando una clave pública. De esta manera, el propietario puede mantener el secreto sin tener que realizar un seguimiento de muchas claves o claves maestras.

Mantener el secreto en el almacenamiento

En el cifrado de almacenamiento de datos, la técnica de criptografía se utiliza durante el tránsito y durante el almacenamiento en medios. Las empresas utilizan ampliamente el cifrado de almacenamiento, ya que utilizan redes de área de almacenamiento (SAN). Los datos se almacenan en secreto de forma cifrada. Para descifrar y acceder a estos datos, el usuario debe proporcionar la clave de la computadora al inicio de la sesión. Luego, el cifrado y el descifrado siguen automáticamente a lo largo del curso.

La información almacenada en un disco también se puede cifrar mediante dispositivos de hardware. Después de encender la computadora, el usuario debe proporcionar una clave para el hardware. Sin la clave, la información no sirve de nada. Evita el uso indebido de la información en caso de pérdida o robo del disco. Se puede utilizar más de un cifrado para archivos o carpetas individuales.

Para garantizar la seguridad de los datos, se deben cambiar los cifrados y las claves con frecuencia. El usuario debe recordar la clave porque, sin la clave, la información cifrada se volverá inútil. Se recomienda que los usuarios realicen una copia de seguridad de los datos cifrados y la almacenen en texto sin formato. De esa manera, los datos solo se cifrarán cuando estén almacenados y no durante el uso real.

Un sistema informático puede estar expuesto a una violación de la seguridad de los datos solo cuando el cifrado y el descifrado se realizan mediante el software. Además, si un usuario almacena la clave en algún lugar del sistema, puede producirse una infracción de seguridad.

Mantener la integridad en la transmisión

Criptografía también se puede utilizar para garantizar que no se puedan realizar cambios en los datos durante la transmisión y para asegurarse de que se mantenga su integridad. Es esencial mantener la integridad durante las transferencias electrónicas de fondos, ya que una interceptación no autorizada puede costar a los bancos pérdidas millonarias.

Mediante técnicas criptográficas, los usuarios pueden evitar la alteración de datos accidental o intencionada durante la transmisión de datos. Una excelente manera de garantizar la integridad es realizar una suma de verificación en la información que se transmite y luego transmitir la suma de verificación en forma cifrada. La información se vuelve a realizar una suma de comprobación después de que se recibe en el otro extremo. El siguiente paso es descifrar la suma de comprobación transmitida y compararla con la anterior. Si las sumas de comprobación coinciden, puedes estar seguro de que la información no se modificará.

El único problema con este método es que si se roba la suma de comprobación del mensaje original, se puede generar otro mensaje utilizando la misma suma de comprobación y enviarlo en lugar del original. Un criptosistema de clave pública puede resolver este problema. Después de generar el par de clave pública / clave privada, si el usuario descarta la clave privada y usa solo la clave pública para cifrar la suma de comprobación, la posibilidad de descifrar la suma de comprobación es cero.

Mantener la integridad en el almacenamiento

Esto se puede garantizar utilizando sistemas de control de acceso con cerraduras y llaves. Se utilizan para evitar el acceso no autorizado a los datos almacenados. En un entorno volátil, donde los virus han cambiado los métodos de seguridad de los datos, las sumas de verificación criptográficas ayudan a determinar la validez de los datos almacenados. Durante dicha transmisión de datos, se genera una suma de comprobación criptográfica y se compara con el valor esperado. Como los medios de almacenamiento tienen mayores volúmenes de información o datos con una exposición más prolongada, son más propensos a sufrir ataques.

Autenticación de identidad

El proceso de verificar la autoridad de un usuario para acceder a los datos se denomina autenticación de identidad. Las contraseñas se intercambian para permitir la autenticación de identidad. Los sistemas de la era moderna utilizan transformaciones criptográficas junto con otras características de las personas para una autenticación de identidad más confiable y eficiente.

Las contraseñas se almacenan en forma cifrada y el acceso de lectura está disponible para los programas que pueden usarlas. Dado que las contraseñas no se almacenan como texto sin formato, la seguridad del sistema no se ve comprometida. Estas contraseñas son análogas a la clave en un criptosistema. Este criptosistema permite el cifrado y descifrado de cualquier cosa a la que tenga acceso la contraseña. Es mejor tener una contraseña más larga, ya que cuanto más larga sea, más difícil será adivinarla.

Creación de credenciales del sistema

Al crear una credencial, los usuarios generan una prueba de la calificación de una persona. Ahora, también se pueden crear credenciales electrónicas para permitir la verificación electrónica de algo. Se utiliza principalmente con tarjetas inteligentes que se utilizan para realizar funciones criptográficas y almacenar información secreta.

Firmas digitales

Se utilizan ampliamente para autenticar un mensaje y demostrar que proviene de un remitente de confianza en particular. Es similar a una firma en un documento en papel. Si los usuarios quieren que las firmas digitales sean tan efectivas como las firmas en papel, los letreros deben ser difíciles de falsificar.

Las firmas digitales son bastante útiles cuando las entidades están ubicadas en lugares distantes y no pueden reunirse rápidamente para lidiar con grandes volúmenes de papeleo. Es bastante beneficioso para transacciones comerciales de alto valor. Las firmas digitales se pueden crear fácilmente utilizando un criptosistema de clave pública y un proceso de hash. Otra ventaja de una firma digital es que un receptor no puede impedir que ninguna persona que utilice la clave pública del remitente verifique y firme el documento. Suele incluirse en el formato de firma digital.

Dinero electrónico

Todo el mundo sabe que el dinero electrónico ha reemplazado a las transacciones en efectivo desde hace bastante tiempo. La criptografía mantiene dichos activos en formas electrónicas, como transferencia electrónica de fondos (ETF), moneda de oro digital, moneda virtual y depósitos directos. Las transacciones de dinero electrónico pueden ser retiros en cajeros automáticos, pagos con tarjeta de débito, depósitos directos, transferencias bancarias, etc.

Cálculo seguro de múltiples partes

Implica un conjunto de partes con entradas privadas que tienen la intención de calcular conjuntamente una función de sus entradas para preservar propiedades de seguridad específicas, como la privacidad y la corrección. Se utiliza para resolver varios problemas de la vida real, como subastas privadas, votaciones distribuidas, compartir firmas o funciones de descifrado, etc.

Diferencia entre criptografía y criptoanálisis

Ya hemos aprendido la definición de criptografía y está claro que se usa para ocultar información, especialmente en un canal o modo de transmisión no seguro. Hoy en día, la mayoría de los mensajes se comunican a través de Internet, incluidas las interacciones bancarias y la comunicación por correo electrónico. Por lo tanto, es imperativo proteger los mensajes. Esta técnica convierte un texto sin formato (mensaje a comunicar) en un mensaje de texto cifrado mediante el empleo de técnicas de cifrado. El proceso de obtener un texto cifrado a partir de un texto plano se denomina descifrado.

El criptoanálisis se utiliza como método para descifrar un texto cifrado en texto sin formato. Una persona no autorizada intenta descifrar el mensaje escuchando a escondidas el canal no seguro. También se conoce como descifrado de código. Esta persona no está sujeta a ninguna regla. Puede utilizar cualquier método para adquirir el texto sin formato.

Requisitos y responsabilidades de los criptoanalistas

Un criptoanalista puede proteger los datos y la red aprovechando estas técnicas de criptoanálisis:

  • El trabajo principal es investigar y probar nuevas teorías y aplicaciones de criptología.
  • Capaz de probar modelos computacionales para lograr confiabilidad y precisión.
  • Garantiza que los datos de transmisión de mensajes (red inalámbrica, teléfono seguro, teléfonos móviles, correo electrónico, etc.) no sean conocidos ilegalmente o se alteren durante el tránsito de datos.
  • Protege la información vital para que no sea interceptada, copiada, modificada o eliminada.
  • Capaz de decodificar mensajes crípticos y sistemas de codificación para agencias militares, políticas y fuerzas del orden.
  • Desarrollar modelos estadísticos y matemáticos para analizar datos y resolver problemas relacionados con la seguridad.
  • Evaluar, analizar y localizar las lagunas en los sistemas y algoritmos de seguridad criptográfica.
  • Diseña sistemas de seguridad robustos para prevenir vulnerabilidades.
  • Capaz de buscar lagunas en las líneas de comunicación.

Herramientas para criptoanálisis

A continuación, veremos las principales herramientas utilizadas en criptoanálisis:

CrypTool

CrypTool se lanzó por primera vez en 1998. Es una herramienta de aprendizaje electrónico que explica el criptoanálisis y la criptografía. CrypTool tiene como objetivo hacer que las personas comprendan las amenazas a la seguridad de la red y el funcionamiento de la criptología. Incluye cifrados asimétricos como RSA, criptografía de curva elíptica. CrypTool1 (CT1) experimenta con diferentes algoritmos y se ejecuta en Windows. Fue desarrollado en lenguaje C ++.

CT2, que se lanzó en 2014, también se ejecuta en Windows. Tiene una GUI mejorada y más de cien funciones criptológicas. Está desarrollado en .NET & C #. JCrypTool (JCT) que siguió a CT2 es independiente de la plataforma.

JCT funciona en Linux, MacOS y Windows. JCT es una herramienta centrada tanto en funciones como en documentos. En 2009, se lanzó CrypTool – online (CTO). CTO consta de una gran cantidad de métodos de cifrado y herramientas de análisis. Es una herramienta basada en un navegador web y también está dirigida a teléfonos inteligentes.

EverCrack

EverCrack, un software GPL de código abierto, se ocupa principalmente de cifrados de sustitución y transposición mono-alfabéticos. Es un motor de criptoanálisis con soporte multilingüe para inglés, alemán, francés, español, italiano, sueco, holandés y portugués. Inicialmente se desarrolló en lenguaje C. Actualmente se concentra en aplicaciones en línea basadas en la web. Ahora, la programación se basa en el núcleo, es decir, descifra cifrados complejos para el núcleo.

El objetivo general del diseño es descomponer sistemáticamente cifrados complejos en sus componentes simples para el criptoanálisis (por el núcleo). El núcleo consiste en un diseño algebraico (comparación y reducción) para romper instantáneamente cifrados unilaterales mono-alfabéticos.

Cryptol

Una empresa de desarrollo de software llamada Galois Inc. desarrolló Cryptol. Es una herramienta de aprendizaje y una forma de analizar algoritmos e implementaciones. Originalmente diseñada para NSA, esta herramienta ahora es utilizada por empresas privadas. El lenguaje de programación se utiliza para todos los aspectos del desarrollo y uso de la criptografía, como el diseño y la implementación de nuevos cifrados y la verificación de algoritmos criptográficos existentes.

Cryptol está diseñado para permitir que el criptógrafo observe cómo las funciones de procesamiento de flujo en el programa manipulan los cifrados o los algoritmos de cifrado. Este aspecto de Cryptol ha sido de especial interés para los programadores informáticos que escriben nuevos lenguajes de programación y para el campo de la inteligencia artificial.

Cryptol se ocupa de rutinas criptográficas en lugar de suites criptográficas completas. Fue diseñado para implementar eficientemente algoritmos criptográficos en circuitos de hardware. A pesar de sus fallas, la herramienta puede ayudar a mejorar la confiabilidad de muchos algoritmos criptográficos.

AlphaPeeler

AlphaPeeler es un producto de software gratuito / no comercial para uso educativo y personal. Su desarrollo comenzó en 1997, y AlphaPeeler 1.0 se implementó en junio de 1998. Incluye MD5, SHA – 1, generación de claves RSA, RIPEMD – 16, etc.

AlphaPeeler Professional 1.0 beta se lanzó el 4 de julio de 2001 en el dominio público. AlphaPeeler se fundó con el objetivo específico de proporcionar la investigación más actualizada para ayudar a las empresas, proveedores y transportistas a proteger su entorno comercial y de desarrollo. El grupo de desarrollo AlphaPeeler también crea una amplia gama de soluciones de tecnología de software enumeradas en la sección de servicios, como como desarrollo de software, análisis y diseño de sistemas, documentación y diseño gráfico.

Conclusión

La mayoría de los algoritmos de cifrado modernos son seguros contra ataques conocidos, y muchos de los «rotos» requieren conocimientos de matemáticas avanzadas para comprender los ataques. Sin embargo, muchos algoritmos de cifrado y codificación más antiguos se pueden romper fácilmente con técnicas simples.

Esto es útil porque muchas variantes de malware utilizan estas formas más débiles de cifrado. La comprensión de los conceptos y técnicas criptoanalíticos básicos puede ser muy valioso en ciberseguridad.