Rosenpass, un proyecto de VPN que promete resistir ataques por computadoras cuánticas

marzo 07, 2023 0 Comments

Rosenpass

Rosenpass es una importante precaución contra lo que está por venir:

Hace poco se dio a conocer la noticia de que un grupo de investigadores, desarrolladores y criptógrafos alemanes ha publicado la primera versión del proyecto Rosenpass, que desarrolla VPN y mecanismos de intercambio de claves que son resistentes a los ataques de computadoras cuánticas.

Rosenpass utiliza bajo el capo la VPN de WireGuard junto a algoritmos y claves de cifrado estándar que se utiliza como transporte y lo complementa con herramientas de intercambio de claves protegidas contra hackeo en computadoras cuánticas (es decir, Rosenpass protege adicionalmente el intercambio de claves sin cambiar los algoritmos de operación y los métodos de cifrado de WireGuard).

Rosenpass también se puede usar por separado de WireGuard en forma de una herramienta genérica de intercambio de claves adecuada para proteger otros protocolos de ataques a computadoras cuánticas.

Sobre Rosenpass

Rosenpass está escrita en Rust y usa liboqs 1 y libsodium 2, la herramienta establece una clave simétrica y se la proporciona a WireGuard. Dado que proporciona a WireGuard una clave a través de la función PSK, el uso de Rosenpass+WireGuard no es criptográficamente menos seguro que el uso de WireGuard solo («seguridad híbrida»).

Actualmente se está trabajando para verificar formalmente el protocolo, los algoritmos criptográficos y la implementación para proporcionar una prueba matemática de confiabilidad. De momento, utilizando ProVerif, ya se ha realizado un análisis simbólico del protocolo y su implementación básica en el lenguaje Rust.

El protocolo Rosenpass se basa en el mecanismo de intercambio de claves autenticado post-cuántico PQWG (Post-quantum WireGuard), construido empleando el criptosistema McEliece, que resistente a la fuerza bruta en una computadora cuántica. La clave generada por Rosenpass se utiliza en forma de clave simétrica compartida (PSK, clave precompartida) WireGuard, implementando una capa adicional para la protección de la conexión VPN híbrida.

Rosenpass asigna dos puertos UDP; si se especifica el puerto N para rosenpass, asignará el puerto N+1 para WireGuard.

Al igual que WireGuard, Rosenpass no impone ninguna separación entre clientes y servidores. Si no especifica la listenopción, Rosenpass y WireGuard elegirán puertos aleatorios; este es el modo cliente. Si no especifica endpoint, Rosenpass no intentará conectarse con el par y, en su lugar, esperará las conexiones de los pares. Este es el modo servidor . Puede especificar ambos. Omitir ambos no está prohibido pero tampoco es muy útil.

Rosenpass proporciona un proceso en segundo plano independiente que se utiliza para generar claves WireGuard predefinidas e intercambios de claves seguras durante el proceso de reconocimiento mediante técnicas de criptografía poscuántica.

Al igual que WireGuard, las claves simétricas en Rosenpass se actualizan cada dos minutos. Para proteger la conexión, se usan claves compartidas (en cada lado, se genera un par de claves públicas y privadas, después de lo cual los participantes se transfieren las claves públicas entre sí).

Al igual que con cualquier aplicación, existe un pequeño riesgo de problemas críticos de seguridad (como desbordamientos de búfer, ejecución remota de código); la aplicación Rosenpass está escrita en el lenguaje de programación Rust, que es mucho menos propenso a este tipo de problemas. Rosenpass también puede escribir claves en archivos en lugar de proporcionarlas a WireGuard. Con un poco de secuencias de comandos, el modo independiente de la implementación se puede usar para ejecutar la aplicación en un Contenedor, VM u otro host. Este modo también se puede emplear para integrar herramientas distintas de WireGuard con Rosenpass.

Cabe mencionar que Rosenpass cuenta con algunos inconvenientes; se ejecuta como root, lo que exige acceso a las claves privadas de WireGuard y Rosenpass, toma el control de la interfaz y funciona exactamente con una interfaz. Si no está seguro de ejecutar Rosenpass como root, debe usar el modo independiente para crear una configuración más segura usando contenedores, cárceles o máquinas virtuales.

El código del kit de herramientas está escrito en Rust y se distribuye bajo las licencias MIT y Apache 2.0. Los algoritmos criptográficos y las primitivas se toman prestados de las bibliotecas C liboqs y libsodium.

El código base publicado se posiciona como una implementación de referencia: en función de las especificaciones proporcionadas, se pueden desarrollar opciones de herramientas alternativas utilizando otros lenguajes de programación.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.