Cajas-S
# Cajas-S

En criptografía, una Caja-S (Caja de Sustitución) es un componente básico de algoritmos de clave simétrica los cuales realizan sustitución. En codificadores de bloques, ellos son típicamente usados para obscurecer la relación entre la clave y el texto cifrado —propiedad de confusión de Claude Shannon.

En general, una Caja-S toma algún número de bits de entrada, m, y los transforma en algún número de bits de salida, n, donde n es no necesariamente igual a m. Una Caja-S m×n puede ser implementada como una tabla de consulta con $2^m$ palabras de n bits cada una. Tablas fijas son comúnmente usadas, como por ejemplo en DES, pero en algunos codificadores las tablas son generadas dinámicamente desde la clave (por ejemplo, cifrado Blowfish y el algoritmo de encriptación Twofish).

Un buen ejemplo de tabla fija es esta Caja-S de 6×4-bits de DES $(S_5):$

| $S_5$ | $S_5$ | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input | Middle 4 bits of input |
| - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| $S_5$ | $S_5$ | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| Outer bits | 00 | 0010 | 1100 | 0100 | 0001 | 0111 | 1010 | 1011 | 0110 | 1000 | 0101 | 0011 | 1111 | 1101 | 0000 | 1110 | 1001 |
| Outer bits | 01 | 1110 | 1011 | 0010 | 1100 | 0100 | 0111 | 1101 | 0001 | 0101 | 0000 | 1111 | 1010 | 0011 | 1001 | 1000 | 0110 |
| Outer bits | 10 | 0100 | 0010 | 0001 | 1011 | 1010 | 1101 | 0111 | 1000 | 1111 | 1001 | 1100 | 0101 | 0110 | 0011 | 0000 | 1110 |
| Outer bits | 11 | 1011 | 1000 | 1100 | 0111 | 0001 | 1110 | 0010 | 1101 | 0110 | 1111 | 0000 | 1001 | 1010 | 0100 | 0101 | 0011 |

Dada una entrada de 6-bits, la salida de 4-bits es encontrada seleccionando la fila usando los dos bits externos (el primero y el último) y la columna usando los cuatro bits internos. Por ejemplo, si la entrada es «011011» sus bits externos son «01» y sus bits internos «1101»; entonces la correspondiente salida debería ser «1001».

Las 8 Cajas-S de DES fueron un tema de intenso estudio por muchos años por la preocupación de que un backdoor —una vulnerabilidad conocida solo por sus diseñadores— podría haber sido colocada en el codificador. El criterio de diseño de Caja-S fue eventualmente publicado (en Coppersmith, 1994) después del redescubrimiento público de criptoanálisis diferencial, mostrando que ellos habían sido cuidadosamente afinados para incrementar la resistencia en contra de este ataque específico. Otra investigación ya ha indicado que aún pequeñas modificaciones a una Caja-S podría significativamente debilitar DES.

Ha habido una gran cantidad de investigación en el diseño de buenas Cajas-S y mucho más se ha comprendido acerca de su uso en codificadores de bloque desde que DES fue lanzado.

