El criptoanálisis diferencial es el nombre de una variedad de métodos de ataque criptográfico en cifrados de bloque utilizando un ataque de texto plano conocido. El criptoanálisis diferencial funciona cifrando texto plano conocido o texto no cifrado, utilizando una clave de cifrado elegida para determinar cómo funciona el proceso de cifrado. Se seleccionan dos entradas con una diferencia constante entre ellas, donde la diferencia entre las dos entradas se puede determinar mediante diferentes operaciones, incluido el uso de la operación eXclusive OR (XOR). Cuando el par de entrada se ejecuta a través del código de criptoanálisis diferencial, se forma un par de salida utilizando una clave de cifrado. La entrada es conocida, por lo que el criptógrafo busca patrones de cambio en la salida.
Una vez que se recibe la salida, el criptógrafo asigna probabilidades a ciertos pares de entrada-salida para determinar qué clave de cifrado causó cambios particulares en los pares de salida. Diferentes claves de cifrado tienen diferentes probabilidades de que se produzcan determinadas salidas para cada entrada. Estas probabilidades permiten al criptógrafo realizar conjeturas informadas sobre varios aspectos de la clave en función de los patrones de entrada y salida.
Este método fue desarrollado originalmente a fines de la década de 1980 por Eli Bidham y Adi Shamir. Su objetivo era atacar los cifrados en bloque y comprobar las debilidades en el algoritmo del estándar de cifrado de datos (DES) de la Oficina Nacional de Estándares de EE. UU., Utilizado como estándar federal de procesamiento de información para cifrar datos confidenciales no clasificados. En 1994, Don Coppersmith, uno de los ingenieros de software de IBM que ayudó a diseñar el DES, dijo que IBM ya estaba familiarizado con el criptoanálisis diferencial y había trabajado para hacer que el DES fuera resistente a los ataques.
Para determinar con éxito qué clave de cifrado se está utilizando con este proceso, se deben cumplir ciertos requisitos. Tiene más éxito cuando el criptógrafo puede elegir él mismo el texto sin formato y recibir el texto cifrado de salida. El criptoanálisis diferencial se adapta mejor a los cifrados de bloques iterativos. Estos tipos de cifrados cifran el texto sin formato utilizando la misma transformación en varias rondas utilizando una subclave.
Los diseñadores de cifrados y códigos criptográficos trabajan para asegurarse de que su código no sea vulnerable a este tipo de ataque conocido. Uno de ellos es el uso de claves de mensaje y las limitaciones en la cantidad de texto cifrado recibido utilizando una única clave de mensaje. Esta es una debilidad del criptoanálisis diferencial debido a su dependencia de grandes cantidades de texto sin formato.
El método de criptoanálisis diferencial se basa en el uso de tablas particulares para elegir el par de entrada. Sabiendo esto, un sistema de cifrado puede protegerse contra el ataque de varias formas. No importa si el código está configurado para seleccionar entre un número mayor de tablas de lo esperado, para seleccionar entre todas las tablas diferentes o para mezclar los resultados de la tabla tan pronto como se determinen los resultados.