USTP-Secure: protocolo UDP con cifrado AEAD por paquete y retransmisión selectiva

Fuentes: USTP-Secure: AEAD-secured UDP protocol with selective retransmission and stream_pos
Imagen generada por IA con el prompt: Abstract network visualization: glowing UDP packets flying through a dark tunnel, each wrapped in a translucent AEAD shield, selective retransmission arrows re-routing lost packets, cyber blue and purple tones, technical
Imagen generada con IA

USTP-Secure (USTPS) es una evolución del protocolo USTP que mantiene el transporte sobre UDP y añade un sobre de cifrado y autenticación AEAD a nivel de paquete. El proyecto, publicado en GitHub por x1colegal, se encuentra en fase Beta y está pensado como un datagrama fiable pero no ordenado, con metadatos de posición de stream (stream_pos) que la aplicación puede usar para reconstruir el orden lógico si lo necesita.

El sistema no implementa control de congestión: cuando la red está saturada, USTPS no reduce voluntariamente su ritmo como hace TCP, ya que su diseño prioriza la velocidad. Para la fiabilidad, emplea retransmisión selectiva: cada paquete de datos único se confirma con ACK, las pérdidas generan RETRANSMIT_REQUEST solo para el seq ausente y se mantiene un búfer de retransmisión hasta la confirmación, con RTO como mecanismo de respaldo.

La seguridad es obligatoria: no existe modo sin cifrar. Por defecto se usan ChaCha20-Poly1305, AES-256-GCM o AES-128-GCM. Cada cliente realiza un intercambio de claves X25519 al conectarse y obtiene una clave de sesión AEAD efímera propia, mientras que el servidor conserva una clave de host persistente en ~/.ustps_host_key para que el modelo TOFU (Trust On First Use) sea estable entre reconexiones. Los clientes rechazan cualquier negociación de cifro inesperada y abortan si la clave del servidor cambia sin haberla rotado explícitamente.

El repositorio se centra en streaming: el servidor envía vídeo HLS o un archivo local mediante ffmpeg a través de USTPS, y el cliente puede entregar la salida por TCP local a un reproductor. Incluye un parámetro --loss para simular pérdida de paquetes y validar la recuperación. USTPS evita el bloqueo Head-of-Line típico de TCP y de las streams individuales de QUIC, pero la reordenación final, cuando la aplicación la requiera, debe hacerse por encima del transporte usando stream_pos.