Lección 3: Criptografía de Clave Pública o Asimétrica
1. El Problema de la Distribución de la Clave
Hasta mediados del siglo XX, muy pocos necesitaban realmente hacer uso de la criptografía: militares, diplomáticos y algunas empresas. Por eso, tenían suficiente con la criptografía de clave simétrica. A finales del siglo XX, la demanda del uso de la criptografía aumentó, por lo que resultaba necesario encontrar un mecanismo capaz de distribuir claves secretas de manera rápida, segura y al alcance de todos.
Pensemos en un sencillo candado con su llave. El candado representará el algoritmo de cifrado y la llave representará la clave de cifrado. Con un candado pueden realizarse dos operaciones: abrirlo y cerrarlo. Hay una operación que la puede hacer fácilmente todo el mundo, cerrarlo, pero abrirlo sólo puede el que tenga la llave.
¿Y cómo puedo enviar una clave secreta usando un candado?
Imagínate que tienes la clave secreta escrita en un papel dentro de un sobre. Tu amigo tiene una caja como ésta para meterla dentro y también tiene un candado con su llave. ¿Cómo lo haríais para que tú pudieras enviarle tu clave secreta?
Le pediría a mi amigo que me mandase la caja junto con su candado abierto. Como todo el mundo sabe cómo cerrar un candado, yo metería dentro de la caja el sobre con mi clave secreta y cerraría el candado. De esta forma, solamente él, que es quien posee la llave, podrá abrirlo. Si alguien intercepta la caja, no podrá abrirla porque no posee la llave. Así es exactamente el fundamento de cómo funciona la criptografía de clave pública.
2. La Criptografía de Clave Pública
El apartado anterior es una analogía que nos ayuda a comprender cómo funcionan los algoritmos de cifrado de clave pública. Se dispone de dos claves: una es pública y, por tanto, conocida por todo el mundo; y la otra es privada y conocida solamente por su poseedor. Aunque cualquiera puede cifrar usando la clave pública, sólo el que posee la correspondiente clave privada podrá descifrar. En este tipo de criptografía se utiliza una pareja de claves: una para cifrar y otra para descifrar. La clave pública debe ser conocida por todo el mundo, lo que facilita su distribución. Eso sí, la clave privada es muy importante que la mantengas en privado y sólo tú la conozcas. Por eso, a la criptografía de clave pública se le llama también asimétrica. Si cifras un mensaje con la clave pública, no podrás descifrarlo usando esa misma clave pública. Necesitarás usar la clave privada. Lo que cifras con una clave, debes descifrarlo con la otra. Es lo que en matemática discreta se conoce como inversos.
También puede cifrarse con la clave privada, no hay por qué usar la clave pública sólo para cifrar y la privada sólo para descifrar. Si cifro algo con mi clave privada, entonces cualquiera que conozca mi clave pública podrá descifrarlo. Y mi clave pública la puede conocer todo el mundo. Entonces, ¿qué sentido puede tener hacer una cosa así? Que sólo tú puedes cifrar y todo el mundo puede descifrar. Como esa operación sólo puedes hacerla tú, lo interesante de esto es que entonces también puedes firmar un mensaje. Se trata de una firma digital. Cuando cifras algo con tu clave privada estás demostrando tu autoría: sólo tú puedes haberlo cifrado. Esto se llama autenticación. Cualquiera puede descifrarlo usando mi clave pública, lo que equivaldría a verificar mi firma, por eso es muy importante que tu clave privada sea privada o secreta y nunca la conozca nadie más que tú.
¿Y si un atacante descifra el mensaje que yo he cifrado con mi clave privada usando mi clave pública y luego lo cifra él o ella usando su clave privada, qué pasaría? Cuando los destinatarios intenten verificar la firma tuya, o lo que es lo mismo, descifrar usando tu clave pública, entonces se obtendrá un texto sin ningún sentido, porque no se puede descifrar un texto cifrado con una clave privada mediante una clave pública que no le corresponde. Es lo de los inversos que antes habíamos comentado. Cuando cifro algo con mi clave privada, luego no puedo decir que yo no lo firmé. Y esta propiedad del cifrado asimétrico se conoce como no repudio, ya que no podrás repudiar tus mensajes. La pareja de claves debería guardarse, por ejemplo, en una tarjeta inteligente, como el DNI electrónico, aunque hay otras maneras de hacerlo. ¿Cómo es posible que, conociendo la clave pública, no pueda descifrarse el mensaje cifrado con ella?
En un buen algoritmo de clave asimétrica, el conocimiento de la clave pública no permite obtener ninguna información sobre la correspondiente clave privada ni descifrar el texto que con ella se ha cifrado. Para comprender cómo funcionan, hay que entender primero qué son las funciones unidireccionales. En una próxima lección, analizaremos este tema con detenimiento.
3. El Problema de la Confianza
¿Cómo sé yo que la clave pública de un usuario es en realidad la suya y no la de un atacante que la ha sustituido por la suya propia?
Alguien podría haber interceptado la clave pública de mi amigo por el camino y haberla sustituido por la propia. Si envío mi clave secreta cifrada con esa clave pública, que en realidad es la del atacante, éste podrá descifrar sin problemas el mensaje y obtener mi clave secreta. Después, podría volver a cifrarlo, ahora sí, con la clave pública legítima de mi amigo y mandársela. Ninguno de los dos nos daríamos cuenta de nada, mientras que el atacante se habrá hecho con la clave secreta y podrá descifrar los mensajes que cifremos con ella. Esto es un grave problema de la criptografía de clave pública, se conoce como ataque del hombre en el medio o, por sus siglas en inglés, man in the middle. Es difícil distribuir claves públicas de manera fiable. Hoy en día, se ha resuelto, al menos parcialmente, usando los certificados digitales y las infraestructuras de clave pública PKI.