Protocolo SSH. Encriptación asimétrica
La información que se aporta a continuación pretende ser complementaria al guion del proyecto y no es de lectura obligatoria.
Motivación
A lo largo del proceso de la creación de la máquina virtual se pide que se seleccione el acceso por clave pública SSH de la cuenta de administrador, que será la utilizada durante el proyecto. Alternativamente se podría generar una contraseña para el administrador y acceder de esa forma a la máquina virtual. Por tanto, el acceso a la máquina virtual por SSH mediante un par de claves hace la misma función que una contraseña tradicional: ser un mecanismo de autenticación.
En las transmisiones de información que viajan a través de redes públicas como Internet es fundamental que la información esté protegida con algún tipo de encriptación, normalmente generada a través de unas claves generadas mediante algoritmos que realizan operaciones matemáticas complejas y con cierto grado de aleatoriedad, siendo difícilmente replicables.
Protocolo SSH
SSH (o Secure SHell) es un protocolo de comunicaciones que permite el acceso remoto a un servidor por medio de un canal seguro en el que toda la información está cifrada, a diferencia de otros protocolos como FTP o Telnet.
Podéis encontrar toda la información referente a SSH en el siguiente enlace:
Criptografía simétrica
Inicialmente, la criptografía protegía la información transmitida encriptando la información con una clave que también se utilizaba para la desencriptación de la información. Este sistema recibía el nombre de criptografía simétrica.
Por un lado, la existencia de una única clave implica que si un atacante intercepta la clave cuando está siendo compartida entre emisor y receptor ya puede interceptar toda la información que ambos se envíen utilizando esa clave.
Por otro, debido al rápido avance tecnológico, para un ordenador moderno de uso común “solo” lleva unos días realizar el proceso de prueba y error (conocido como ataque por fuerza bruta) para encontrar la clave única para desencriptar un mensaje. Para un equipo diseñado específicamente para tal uso, solo supone unas horas.
Criptografía asimétrica
La criptografía asimétrica presenta significativas mejoras respecto a la criptografía simétrica. En el caso que nos ocupa, la idea de los pares de claves se basa en la criptografía asimétrica.
Un par de claves nuevo se genera a partir del sistema criptográfico RSA (que utiliza la factorización de números enteros). Debido a la complejidad de este proceso y a la magnitud de los números elegidos (del orden de 10300), se asume que es imposible generar el mismo par de claves dos veces. Es decir, que no es posible que se repita un par de claves que ya ha sido anteriormente generado.
Cuando se quiere enviar un mensaje, el emisor busca la clave pública del receptor, cifra su mensaje con esa clave, y una vez que el mensaje cifrado llega al receptor, este se ocupa de descifrarlo usando su clave privada.
Una buena analogía que ilustra como funciona un par de claves es la siguiente:
- Cuando el emisor busca la clave pública del receptor, podemos imaginar que escribe el destinatario en el sobre de una carta.
- Cuando el emisor cifra su mensaje con esa clave, cierra el sobre. Por tanto, esa clave solo sirve para cerrar el sobre, no para abrirlo.
- Cuando el receptor recibe su mensaje, emplea su clave privada. Esta clave privada, que no ha sido compartido con nadie, es la que permite abrir el sobre.
De esta forma, aunque un atacante intercepte un mensaje no puede desencriptarlo ya que no conoce la clave privada que permite hacerlo.
Funciones hash
Las funciones hash (como SHA-256 o SHA-512) son algoritmos criptográficos que transforman (“digieren”) un conjunto arbitrario de elementos de datos en único valor de longitud fija, que recibe el nombre de hash.
La seguridad proporcionada por un algoritmo hash recae en su capacidad de producir un único valor para un conjunto de datos dados. De esa forma, un valor hash calculado puede ser utilizado para la verificación de la integridad de copias de un fichero original. Como ejemplo, a la hora de descargar archivos en Internet se suele proporcionar el valor hash obtenido al aplicar la función hash al archivo original, para que el usuario pueda verificar que el archivo descargado no ha sido alterado durante la descarga.
Por otro lado, el protocolo de seguridad SSH emplea funciones hash que permiten verificar si la clave pública proporcionada es conocida; en otras palabras, si el otro interlocutor es conocido y seguro.