Criptografı́a - 2016 . 1. Red de Sustitución y Permutación Los algoritmos en bloque de este tipo incorporan rondas que combinan operaciones de sustitución (incorporan la propiedad de confusión) y de permutación (incluyen la propiedad de difusión). Estos algoritmos tienen tres fases en cada una de sus rondas: 1. Fase de sustitución por medio de cajas-S, que representan una función no lineal en el campo de Galois GF (2b ). 2. Fase de permutación que permite difusión por medio de una transformación lineal GF (2b )m . 3. Fase de mezcla con la subclave, tı́picamente mediante una OR exclusiva, que permite mantener la confidencialidad. De las tres fases, solo la mezcla con la subclave provee de privacidad, ya que la sustitución y la permutación son parte pública del algoritmos, a menos que dependan de la clave de usuario. fases modificando únicamente la subclave de ronda. Una desventaja de este tipo de algoritmos es que debe invertirse la red para poder descifrar el texto. En otro tipo de algoritmos el ingresar las subclaves en orden inverso al cifrado permite recuperar el texto plano. 2. Red Feistel Una red Feistel es un sistema criptográfico caracterizado por cifrar mitades de bloque, a través de una función de generación de números pseudoaleatorios. Este tipo de cifrado fue concebido por Hörst Feistel, criptógrafo de IBM, en 1973. La propuesta de este tipo de algoritmos trabaja como una red de sustitución/permutación. Sin embargo, este proceso es un generador f de números pseudoaleatorios, cuya finalidad es obtener una secuencia de cifrado lo más aleatoria posible, donde los bits están uniformemente distribuidos. La salida de la función f cifra como un algoritmo de cifrado en flujo una mitad de bloque; para compensar, la siguiente ronda intercambia las mitades y se aplica el mismo proceso. Los pasos que sigue una red Feistel para trabajar son: 1. La entrada a la ronda i es un bloque de texto dividido en dos secciones: Li−1 ||Ri−1 . 2. Una función fi (consistente en operaciones de sustitución, permutación y mezcla con subclave de ronda) es aplicada a la sección derecha de la entrada: fi (Ri−1 , ki ). 3. Se calcula el valor de operar (mediante una XOR) la sección izquierda y la sección derecha transformada: Li−1 ⊕ fi (Ri−1 , ki ). 4. La ronda termina cuando se hace un intercambio de secciones: Li = Ri−1 ||Ri = Li−1 ⊕ fi (Ri−1 , ki ) Esta construcción es recursiva; es decir, la salida entra nuevamente a las tres 1 Comúnmente, las operaciones de sustitución se llevan a cabo con base en cajas de sustitución (caja-S), la cual puede ser predeterminada estándar (DES), calculada según la clave dada por el usuario (Blowfish) o predeterminada según necesidades del usuario (GOST). Antes y después de la aplicación de las cajasIng. Aldo Jiménez Arteaga Criptografı́a - 2016 S se realizan otras operaciones de sustitución, generalmente para combinar el bloque de texto con la subclave en turno. La permutación del bloque de datos se lleva a cabo mediante desplazamientos de bits, al aplicar cajas de permutación (caja-P) o bien mediante operaciones algebraicas como la multiplicación matricial (Twofish); esta operación puede llevarse a cabo antes o después de la sustitución. 3. Modos de Operación Los modos de operación sirven para dar robustez a los algoritmos en bloque, evitando ataques por repetición al insertar bloques similares o iguales para obtener la clave. Además, permiten un cifrado en flujo al tomar como generador de clave al algoritmo de cifrado en bloque. con el texto cifrado anterior mediante una XOR. Para operar el primer bloque se utiliza un vector de inicialización secreto (una semilla aleatoria). Este modo evita los ataques por repetición al enmascarar el texto plano, pero un error en el cifrado o la transmisión se propagará a los bloques siguientes. Cipher Feedback (CFB). Este modo realimenta la entrada al cifrado con el propio cifrado, utilizando byte por byte (cifrado en flujo). Un vector de inicialización entra al algoritmo de cifrado junto con la clave. El vector cifrado se opera con el texto plano mediante una XOR y la salida es el texto cifrado final que se convierte en un nuevo vector en claro para seguir cifrando. Puesto que el algoritmo de cifrado exige un bloque constante, el vector de inicialización se almacena en un registro de corrimiento donde la nueva entrada es el byte cifrado anterior (similar a un generador por LFSR). Electronic Code Book (ECB). Cada bloque del texto plano se cifra de manera independiente, utilizando una única clave. En este modo de operación se espera que a cada bloque de texto plano se corresponda un texto cifrado (función inyectiva). Una vulnerabilidad del modo tı́pica es que si en el texto a cifrar un mismo bloque se repite, el texto cifrado también se repetirá. Output Feedback (OFB). Este modo opera de manera similar al CFB, pero la diferencia radica en que la realimentación se da antes de realizar la XOR con el texto plano convirtiendo al vector de inicialización, la clave y el algoritmo de cifrado en bloque en un algoritmo de cifrado en flujo. Cipher Block Chaining (CBC). Es un modo de cifrado por encadenamiento de bloques. Antes de ser cifrado el bloque de texto plano actual se opera 2 Ing. Aldo Jiménez Arteaga Criptografı́a - 2016 Counter (CTR). Genera la clave a partir del cifrado de la concatenación de un nonce y un contador. El contador es una función que garantiza una salida aperiódica; el proceso más popular es un contador que incrementa su valor de uno en uno. Cada bloque de texto plano se cifrará con una secuencia que depende de la clave de usuario, el nonce y del valor del contador 3 Ing. Aldo Jiménez Arteaga