Notas sobre Criptografía Clásica
Fundamentos de los Sistemas de Cifrado
Las bases de la criptografía moderna se asientan en principios establecidos por figuras históricas. Bacon, en el siglo XVI, definió que un sistema de cifrado debe ser sencillo de operar para los usuarios legítimos, pero imposible de descifrar para intrusos que desconozcan la función de descifrado . Además, el criptograma debe mantener una apariencia inocente. En el siglo XIX, Kerckhoffs complementó estos requisitos con principios fundamentales: la seguridad del sistema debe residir exclusivamente en el secreto de la clave y no en el algoritmo (el cual debe poder caer en manos del enemigo sin comprometer la seguridad), las claves deben ser fáciles de recordar y el equipo de cifrado debe ser portable y de fácil uso. Actualmente, la fortaleza de un sistema se mide por su imposibilidad computacional, donde el tiempo necesario para romper la cifra excede cualquier valor razonable.
Evolución Histórica y Clasificación
La criptografía clásica se extiende desde la antigüedad hasta mediados del siglo XX. El desarrollo histórico se divide por tres hitos principales: la publicación de la Teoría de la Información de Claude Shannon en 1948, el estándar DES en 1974 y el desarrollo del cifrado de clave pública por Whitfield Diffie y Martin Hellman en 1976. Los sistemas clásicos se basan principalmente en dos herramientas: técnicas de sustitución, donde los caracteres se reemplazan por otros, y técnicas de transposición o permutación, donde los caracteres originales se redistribuyen siguiendo reglas específicas.
Cifradores de Transposición y Sustitución Monoalfabética
La Escítala, utilizada por los lacedemonios en el siglo V a.d.C., es el primer cifrador de transposición conocido; la clave reside en el diámetro del bastón donde se enrolla la cinta. En cuanto a la sustitución, el sistema de Polybios (siglo II a.d.C.) utiliza una cuadrícula para convertir letras en coordenadas numéricas. El cifrador de César (siglo I a.d.C.) aplica un desplazamiento fijo de tres posiciones en el alfabeto, utilizando aritmética modular . El cifrado Afín generaliza este concepto mediante la función , donde el factor debe ser primo relativo con el cuerpo para que exista el inverso . Ambos sistemas son vulnerables al análisis estadístico de frecuencias del lenguaje.
El Cifrador de Vigenère y el Método de Kasiski
El cifrador de Vigenère es un sistema polialfabético que utiliza una clave de longitud para sumar cada carácter del mensaje mediante la fórmula . Aunque difumina la redundancia del lenguaje, no es seguro frente a técnicas de criptoanálisis. El método de Kasiski permite romper la cifra buscando repeticiones en el criptograma para determinar la longitud de la clave mediante el máximo común divisor de las distancias. Complementariamente, el Índice de Coincidencia () ayuda a identificar si un cifrado es monoalfabético ( para el castellano) o polialfabético (valor significativamente menor).
Cifrados Poligrámicos: Playfair y Hill
Los sistemas poligrámicos cifran bloques de caracteres para dificultar el análisis estadístico. El cifrador de Playfair emplea una matriz de letras para cifrar digramas basándose en su posición relativa (fila, columna o diagonal). El cifrador de Hill, propuesto en 1929 por Lester Hill, utiliza una matriz clave para transformar -gramas mediante la operación . Para descifrar, se requiere que la matriz clave tenga inversa , lo que implica que su determinante no sea cero ni comparta factores con . A pesar de su gran espacio de claves, el sistema de Hill es vulnerable a ataques de texto claro conocido mediante la eliminación de Gauss Jordan debido a su naturaleza lineal.
El Cifrador de Vernam
Propuesto en 1917 por Gilbert Vernam, es el único sistema matemáticamente seguro e imposible de criptoanalizar. Se basa en el concepto de "one-time pad" (clave de un solo uso), donde la operación de cifra es la función XOR () entre el mensaje y una secuencia binaria aleatoria . Para garantizar la seguridad perfecta, la clave debe ser tan larga como el mensaje, ser totalmente aleatoria y utilizarse una sola vez, lo que anula cualquier posibilidad de ataque por correlación de bits o estadísticas del lenguaje.