Breve Historia de la Criptografía
Los criptosistemas pueden
clasificarse según:
a) Su relación con la Historia en:
- Sistemas Clásicos y Sistemas
Modernos
O bien según:
b) El tratamiento de la
información a cifrar en:
- Cifrado en Bloque y Cifrado en Flujo
c) El tipo de clave utilizada
en la cifra en:
- Sistema con Clave Secreta y Sistema con
Clave Pública
La criptografía es casi tan
antigua como las primeras civilizaciones de nuestro planeta. Ya en el siglo V antes de J.C.
se usaban técnicas de cifra para proteger a la información. Se pretendía garantizar sólo la
confidencialidad y la autenticidad de los mensajes.
Los mayores avances se lograron
en la Segunda Guerra Mundial: los países en conflicto tenían un gran número de
técnicos encargados de romper los mensajes cifrados de los teletipos.
Tanto máquinas, artilugios de
cifra, como los algoritmos que trabajaban matemáticamente dentro de un cuerpo
finito n, hacen uso de dos técnicas básicas orientadas a caracteres y que,
muchos siglos después, propone Shannon:
* Sustitución:
un carácter o letra se modifica o sustituye por otro elemento en la cifra.
* Transposición:
los caracteres o letras del mensaje se redistribuyen sin modificarlos y según
unas reglas, dentro del criptograma. También se le conoce como permutación.
La criptografía clásica abarca
desde tiempos inmemoriales hasta la mitad del siglo XX. El punto de inflexión en esta
clasificación la marcan tres hechos relevantes:
v En el año 1948
se publica el estudio de Claude Shannon sobre la Teoría de la Información.
v En 1974
aparece el estándar de cifra DES.
v En el año 1976
se publica el estudio realizado por W. Diffie y M. Hellman sobre la aplicación
de funciones matemáticas de un solo sentido a un modelo de cifra, denominado
cifrado con clave pública.
Tipos de Cifrado Clásico
Transposición
Consiste
en crear el texto cifrado simplemente desordenando las unidades que forman el
texto original; los algoritmos de transposición, reordenan las letras pero no
las disfrazan.
Ejemplo
de transposición:
TU
SECRETO ES TU PRISIONERO; SI LO SUELTAS, TU ERES
SU
PRISIONERO
Sustitución
Consiste en
sustituir las unidades del texto original por otras; Los algoritmos de sustitución
y los códigos, preservan el orden de los símbolos en claro, pero los disfrazan.
Ejemplo de sustitución:
ENCONTREMONOS
A MEDIANOCHE
Primer cifrado por
transposición: escítala.
La escítala era usada en el
siglo V a.d.C. por el pueblo griego de los lacedemonios. Consistía en un bastón
en el que se enrollaba una cinta de cuero y luego se escribía en ella el
mensaje de forma longitudinal. Al desenrollar
la cinta, las letras aparecen desordenadas. La única posibilidad de recuperar
el texto en claro pasaba por enrollar dicha cinta en un bastón con el mismo
diámetro que el usado en el extremo emisor y leer el mensaje de forma longitudinal.
La clave del sistema está en el diámetro del bastón. Se trata de una cifra por
transposición pues los caracteres del criptograma son los mismos que en el
texto en claro distribuidos de otra forma.
![]() |
|
En ese bastón residía la
fortaleza de un pueblo. Hoy en día el popular bastón de mando que se le entrega
al Alcalde de una ciudad proviene de esos tiempos remotos.
El texto en claro es:
M = ASI CIFRABAN CON LA
ESCITALA
El texto cifrado o criptograma
será:
C = AAC SNI ICT COA INL FLA RA AE
BS
Primer cifrado por sustitución:
Polybios
Es el cifrado por sustitución
de caracteres más antiguo que se conoce (siglo II a.d.C.) pero como duplica el
tamaño del texto en claro, con letras o números, resulta poco interesante.
El cifrado del César
En el siglo I a.d.C.,
Julio César usa este cifrado, cuyo algoritmo consiste en el desplazamiento de
tres espacios hacia la derecha de los caracteres del texto en claro. Es un cifrado
por sustitución monoalfabético en el que las operaciones se realizan módulo n,
siendo n el número de elementos del alfabeto (en aquel entonces latín).
Cada letra se cifrará siempre
igual. Es una gran debilidad y hace que este sistema sea muy vulnerable y fácil
de atacar simplemente usando las estadísticas del lenguaje.
El cifrado Pigpen
La
cifra de sustitución monoalfabética perduró a través de los siglos en formas
diversas.
Por
ejemplo la cifra de los templarios:
El
Temple era una orden de monjes fundada en el siglo XII., cuya misión principal
era asegurar la seguridad de los peregrinos en Tierra Santa. Rápidamente, los
templarios se desentendieron de este objetivo, y se enriquecieron
considerablemente hasta el punto de llegar a ser tesoreros del rey y del Papa.
Para codificar las letras de crédito que ellos intercambiaban, ellos remplazaban
cada letra por un símbolo, siguiendo la sustitución siguiente:
Otro
ejemplo es la cifra Pigpen fue utilizada por los masones en el siglo XVIII para
preservar la privacidad de sus archivos, y todavía la usan los niños hoy en
día. La cifra no sustituye una letra por otra, sino que sustituye cada letra
por un símbolo de acuerdo al siguiente modelo:
Sistemas Modernos de
la Criptografía
¿Qué es la
criptografía?
Es la ciencia que
estudia los métodos y procedimientos para modificar los datos, con objeto de
alcanzar las características de seguridad. Las principales características que
un sistema de seguridad quiere obtener son:
v Confidencialidad.
Consiste en garantizar que sólo las personas autorizadas tienen acceso a la
información.
v Integridad. Consiste
en garantizar que el documento original no ha sido modificado. El documento
puede ser tanto público como confidencial.
v Autenticación. Permite
garantizar la identidad del autor de la información.
Existen diversos
algoritmos matemáticos que intentan cubrir una o varias de estas características
básicas de seguridad. El nivel de cumplimiento de sus objetivos es difícil de evaluar,
ya que diversos algoritmos pueden ser vulnerables ante técnicas de ataque
diferentes, además la mayoría de los algoritmos pueden trabajar con claves de
distinta longitud. Lo cual afecta directamente a la robustez.
Por otro lado, existen
otras características, a parte de la robustez del algoritmo, que también influyen
en el proceso de selección del algoritmo más apropiado para una determinada aplicación.
Algunas de estas características son: el tiempo de cálculo del proceso de
cifrado, el tiempo de cálculo del proceso de descifrado, la relación de tamaño
entre el documento original y el documento cifrado, etc.
En general los
algoritmos criptográficos se pueden clasificar en tres grandes familias.
v Criptografía de clave
secreta o criptografía simétrica.
v Criptografía de clave
pública o criptografía asimétrica.
v Algoritmos HASH o de
resumen.
A continuación se
describe cada una de estas familias de algoritmos, así como los algoritmos más
utilizados dentro de cada familia.
Criptografía de clave
secreta
Se incluyen en esta
familia el conjunto de algoritmos diseñados para cifrar un mensaje utilizando
una única clave conocida por los dos interlocutores, de manera que el documento
cifrado sólo pueda descifrarse conociendo dicha clave secreta. Algunas de las características
más destacadas de este tipo de algoritmos son las siguientes:
Ø A partir del mensaje
cifrado no se puede obtener el mensaje original ni la clave que se ha utilizando,
aunque se conozcan todos los detalles del algoritmo criptográfico utilizado1.
Ø Se utiliza la misma
clave para cifrar el mensaje original que para descifrar el mensaje codificado.
Ø Emisor y receptor
deben haber acordado una clave común por medio de un canal de comunicación
confidencial antes de poder intercambiar información confidencial por un canal
de comunicación inseguro.
Los algoritmos
simétricos más conocidos son: DES, 3DES, RC2, RC4, RC5, IDEA, Blowfish y AES.
El
algoritmo DES, basado en Lucifer de IBM
(1975), fue seleccionado como algoritmo estándar de cifrado en 1977 por NIST (National
Institute of Standards and Technology, USA). Utiliza claves de cifrado bastante
cortas (56 bits, de los cuales sólo se utilizan 48 bits) y hoy en día se
considera poco robusto, sobre todo desde que en 1998 la Electronica Frontier
Foundation hizo público un crackeador de código DES capaz de descifrar mensajes
DES en menos de 3 días.
Criptografía de clave
pública
Esta categoría incluye
un conjunto de algoritmos criptográficos que utilizan dos claves distintas para
cifrar y para descifrar el mensaje. Ambas claves tienen una relación matemática
entre sí, pero la seguridad de esta técnica se basa en que el conocimiento de una
de las claves no permite descubrir cuál es la otra clave. En realidad sería
necesario conocer todos los números primos grandes para ser capaz de deducir
una clave a partir de otra, pero está demostrado que en la práctica se
tardarían demasiados años sólo en el proceso de obtención de los número primos
grandes.
Cada usuario cuenta
con una pareja de claves, una la mantiene en secreto y se denomina clave
privada y otra la distribuye libremente y se denomina clave pública. Para
enviar un mensaje confidencial sólo hace falta conocer la clave pública del
destinatario y cifrar en mensaje utilizando dicha clave. En este caso los algoritmos
asimétricos garantizan que el mensaje original sólo puede volver a recuperarse
utilizando la clave privada del destinatario (ver el esquema de la Figura 2). Dado
que la clave privada se mantiene en secreto, sólo el destinatario podrá
descifrar el mensaje.
Algunas de las
características más destacadas de este tipo de algoritmos son las siguientes:
• Se utilizan una
pareja de claves denominadas clave pública y clave privada, pero a partir de la
clave pública no es posible descubrir la clave privada.
• A partir del mensaje
cifrado no se puede obtener el mensaje original, aunque se conozcan todos los
detalles del algoritmo criptográfico utilizado y aunque se conozca la clave
pública utilizada para cifrarlo.
• Emisor y receptor no
requieren establecer ningún acuerdo sobre la clave a utilizar. El emisor se
limita a obtener una copia de la clave pública del receptor, lo cual se puede realizar,
en principio, por cualquier medio de comunicación aunque sea inseguro.
A diferencia de los
algoritmos de clave secreta, que existen desde los tiempos de los romanos, los
métodos asimétricos son muy recientes. En 1976, Whitfield Diffie y Martin Hellman
crearon un método con la ayuda de Ralph Merkle para iniciar una comunicación segura
sin haber acordado previamente una clave secreta. El método se conoce como Diffie-Hellman
Key Exchange [13]. Poco más tarde se publicó el primer algoritmo asimétrico completo,
denominado RSA, que sigue siendo el más utilizado en la actualidad.
Algoritmos HASH o de
resumen
Los algoritmos HASH,
parten de una información de entrada de longitud indeterminada y obtienen como
salida un código, que en cierto modo se puede considerar único para cada
entrada. La función de estos algoritmos es determinista, es decir que partiendo
de una misma entrada siempre se obtiene la misma salida. Sin embargo, el
interés de estos algoritmos reside en que partiendo de entradas distintas se
obtienen salidas distintas.
Unos ejemplos muy
sencillos, aunque muy vulnerables, son los dígitos de control y los CRC (Cyclic
Redundancy Code) que se utilizan para detectar errores de trascripción o de
comunicación. Estos algoritmos en particular garantizan que el código generado
cambia ante una mínima modificación de la entrada y tienen aplicaciones muy
concretas de control de integridad en procesos con per turbaciones fortuitas y poco
probables. Sin embargo son poco robustos y está demostrado que se pueden realizar
pequeños conjuntos de modificaciones en un documento de manera que el CRC
resulte inalterado. En un buen algoritmo HASH es inadmisible que un conjunto reducido
de modificaciones no altere el código resultante, ya que se podrían realizar retoques
en el documento sin que fuesen detectados, y por lo tanto no se garantiza la
integridad.
Dado que el tamaño
del código que se genera como salida es de tamaño limitado, (típicamente 128,
256 ó 512 bits) mientras que el tamaño del documento de entrada es ilimitado
(típicamente un archivo), es evidente que se cumplen dos propiedades:
v El algoritmo es
irreversible, es decir, no es posible obtener el documento original a partir
del código generado.
v Existen varios
documentos que dan lugar a un mismo código.
La segunda propiedad
es debida a que el número de combinaciones de los códigos de tamaño limitado es
menor al número de combinaciones de cualquier archivo grande. Sin embargo los
buenos algoritmos consiguen que los documentos que dan lugar al mismo código,
sean completamente diferentes y por lo tanto sólo uno de ellos será legible. Los
algoritmos más utilizados son MD5 y SHA1, pero nunca se utilizan códigos CRC en
aplicaciones de seguridad.