9.1 Algoritmos de cifrado

Los algoritmos de cifrado (o criptográficos) se utilizan para esconder la información a aquel conjunto de personas que no deberían tener acceso a ella. La idea es muy simple y consiste en alterar la representación de la información usando una clave (o key). Así, sólo quien conozca la clave es capáz de restaurar la representación original (descrifrada) de la información.

Existen dos tipos distintos de algoritmo de cifrado, dependiendo del número de claves que se utilizan:

Algoritmos de clave simétrica:
También se llaman algoritmos de clave secreta y se caracterizan por usar la misma clave para cifrar y descifrar. Así, si enviamos un e-mail cifrado a alguien también tenemos que indicarle la clave que usamos para cifrarlo.
Algoritmos de clave asimétrica:
Los sistemas de clave simétrica presuponen que el receptor conoce la clave secreta, pero, ¿cómo le hacemos llegar dicha clave sólo a él a través de un canal inseguro como puede ser Internet? Usando un algoritmo de clave simétrica es imposible.

Para evitar este problema se idearon los algoritmos de clave asimétrica (o algoritmos de clave pública). En estos algoritmos cada extremo de la comunicación maneja dos claves, una pública y otra privada (en total, 4 claves).* Se cumple que: (1) lo que se cifra utilizando la clave pública puede descifrarse, sólo, utilizando la clave privada y (2) es imposible derivar la clave privada a partir de la pública (sin información adicional).

Así, cuando dos personas desean intercambiarse información primero deben intercambiar sus claves públicas. Habiendo hecho esto, cuando yo (por ejemplo) deseo enviar un mensaje a alguien lo cifro usando la clave pública de mi interlocutor. Dicho mensaje puede ser interceptado por una tercera persona, pero sólo mi interlocutor va a ser capaz de descifrarlo porque es la única persona que posee la clave privada que puede descifrarlo. De la misma manera, sólo yo podré descifrar lo que mi interlocutor me envía porque sólo yo poseo la clave privada que permite descifrar el mensaje.