jueves, 8 de julio de 2010

Cómo funciona SSH

Realmente quería hablar de conexiones sobre SSH confiables o sin contraseñas, pero primero debemos entender SSH, hagámoslo con un ejemplo:

"A" necesita comunicarse con "B", pero no podría hacerlo directamente porque otro nodo, como "C", podría interceptar la comunicación y enterarse de cosas que no debería. Por ello, "A" y "B" deben comunicarse bajo un canal seguro. Este canal seguro es establecido bajo un canal cifrado haciendo uso de una clave "que sólo ellos dos conocen"; específicamente son utilizados algoritmos de cifrado simétrico para realizar esto.

Ahora, el único problema a este punto es la clave que "A" y "B" deberían compartir (secreto compartido). Para enterarse cada uno de ésta, antes la misma debe ser generada (por uno de ellos) y compartida (enviada al otro).

La clave (a compartir) es enviada al otro bajo un canal seguro empleando algoritmos de cifrado asimétrico; por supuesto, también la clave es compartida sobre un canal seguro!!

La comunicación sobre canales cifrados con algoritmos asimétricos necesita de dos claves por cada nodo. Es decir, "A" y "B" tendrían dos claves cada uno.

La idea es que cada uno de los nodos tenga una clave privada (que sólo él y más nadie conoce) y una pública (que como el nombre lo dice, todos conocen o al menos podrían). Luego, cuando los mensajes son cifrados con la clave privada, sólo pueden descifrarse con la pública (o viceversa).

Ahora, por fin al grano, "A" desea comunicarse con "B", entonces: "A" genera una clave, la cifra con la clave pública de "B" y envía el resultado (mensaje) a "B". Luego, "B" descifra el mensaje (la clave compartida) con su clave privada y voalá!, a este punto "A" y "B" tienen un secreto compartido. De aquí en adelante, toda la comunicación es cifrada con un algoritmo simétrico.

Podrían preguntarse ¿para qué todo este problemón?, ¿por qué no realizar toda la comunicación sobre canales cifrados con algoritmos asimétricos? La respuesta es que se podría, pero sería demasiado lento!! Por ello, generalmente los algoritmos de cifrado asimétrico son utilizados únicamente para compartir claves que después servirán para cifrar canales con algoritmos simétricos.

Increible todo el tema de cifrado, eh? Bruce Schneier en su Applied Cryptography, literatura obligada para cualquier profesional del área de seguridad, escribió: "The lesson here is that it is insufficient to protect ourselves with laws; we need to protect ourselves with mathematics..."

2 comentarios:

  1. interesante y pedagógico artículo! de esas cosas que uno siempre usa, se pregnta còmo funcionan pero nunca averigua còmo.

    ResponderEliminar
  2. Qué bueno que os ha gustado Pablamentasón! Un abrazo.

    ResponderEliminar