Volver al inicio

ONYX messenger: E2EE y LAN sin internet

ONYX — mensajero autoalojado multiplataforma con E2EE en XChaCha20-Poly1305 y modo LAN vía transmisión UDP. Soporta multi-dispositivo, instancias externas para grupos/canales. Cliente en Flutter optimizado para 60 FPS en escritorio y móvil.

ONYX: mensajero con LAN y cifrado E2EE completo
Advertisement 728x90

ONYX: Mensajero Autoalojado con E2EE y Modo LAN Sin Internet

ONYX ofrece un equilibrio perfecto entre facilidad de despliegue y funciones potentes: un servidor basado en Node.js con MariaDB y Redis, y una aplicación cliente construida con Flutter para Android, Windows, macOS y Linux. Soporta cifrado end-to-end completo mediante X25519 y XChaCha20-Poly1305, además de un modo único de LAN sin conexión que permite la comunicación sin internet a través de broadcast UDP.

Arquitectura y Pila Tecnológica

El servidor funciona con Express y WebSocket (express-ws + ws), utiliza MariaDB para almacenar datos y Redis para sesiones y caché. Los archivos se almacenan en un sistema compatible con S3 usando AWS SDK v3. Los protocolos de transporte incluyen wss:// y HTTP/REST. El cifrado aprovecha X25519 para el intercambio de claves, XChaCha20-Poly1305 para los mensajes y AES-256-GCM para el contenido multimedia dentro de la red local.

Ventajas clave de XChaCha20-Poly1305 frente a AES-GCM:

Google AdInline article slot
  • Ejecución en tiempo constante independiente del soporte AES-NI.
  • Nonce extendido (192 bits frente a 96), reduciendo el riesgo de colisiones en sesiones prolongadas.

Formato de paquete cifrado: [pubkey 32B] [nonce 12B] [ciphertext] [mac 16B].

Modo LAN: Detección Automática y Mensajes Fuera de Línea

Los clientes envían paquetes UDP cada 5 segundos hacia 255.255.255.255:45678, conteniendo JSON:

{
  "username": "alice",
  "timestamp": 1710000000000,
  "pubkey": "<clave pública X25519, base64>"
}

Los clientes receptores actualizan sus tablas internas que mapean username → IP y username → pubkey. No se requiere mDNS, entrada manual de IP ni handshake adicional—el cifrado comienza de inmediato.

Google AdInline article slot

Los medios se envían en fragmentos de ~32 KB por el puerto 45679, con cada fragmento cifrado de forma independiente usando AES-256-GCM. El descifrado y renderizado comienzan tan pronto como llegan los primeros fragmentos.

Sincronización Multi-Dispositivo con Protección E2EE Total

Al añadir un nuevo dispositivo, solicita autorización desde uno confiable. Tras la aprobación, se intercambian claves—el servidor nunca ve texto plano.

En chats privados, el servidor envía copias cifradas de los mensajes a cada dispositivo del usuario (una por clave pública). Solo los mensajes entrantes se sincronizan entre dispositivos; los salientes permanecen visibles solo en el dispositivo emisor. Este diseño mantiene la seguridad mientras permite una sincronización básica.

Google AdInline article slot

Derivación de claves: HKDF-SHA256 con etiquetas (onyx-lan-v2 para LAN, etiquetas separadas para chats individuales).

Cliente Multiplataforma Construido con Flutter

Código único para cuatro plataformas. Flutter impulsado por Skia/Impeller garantiza rendimiento suave de 60 FPS sin sobrecarga del DOM. Optimizaciones para escritorio incluyen:

  • fps_booster, fps_optimizer, fps_stimulator
  • message_load_optimizer, chat_preloader

Funcionalidades específicas para escritorio:

  • Bandeja del sistema con soporte de minimizar
  • Aplicación de instancia única mediante IPC
  • Barra de título personalizada con zonas arrastrables
  • Notificaciones nativas en Windows

Seguridad Más Allá del E2EE

  • PIN y biométricos mediante Flutter Secure Storage
  • Soporte de proxy (proxy_manager.dart)
  • Almacenamiento seguro: Keychain / Android Keystore
  • Gestión de sesiones: ver y eliminar sesiones desde dispositivos confiables

Las cuentas usan solo nombre de usuario y contraseña—no se requiere teléfono ni correo electrónico. Los nombres de usuario son permanentes, se permiten múltiples cuentas dentro de la app, y está disponible la eliminación total de datos.

Grupos, Canales y Instancias Autoalojadas

Grupos y canales integrados mediante el servidor ONYX—sin cifrado E2EE para fines de sincronización.

Opciones externas autoalojadas:

  • Red local: compartir archivos y chatear sin internet
  • Comunidad privada en VPS con acceso por invitación
  • Canal público con suscripción por invitación

Conexión: ingresa la dirección del servidor en external_server_join_screen. Despliegue: ONYX Server.

Grupos: bidireccionales. Canales: solo administradores.

Almacenamiento Local de 'Favoritos'

Una pestaña dedicada para notas, categorías (contraseñas, medios, enlaces). Almacenada únicamente localmente—sin sincronización, sin acceso al servidor.

Destacados principales:

  • LAN sin conexión: broadcast UDP + transferencia segmentada de medios
  • Pila E2EE: X25519, XChaCha20-Poly1305, claves de sesión
  • Multi-dispositivo: cifrado por dispositivo, autorización segura
  • Flutter: interfaz optimizada de 60 FPS en todas las plataformas
  • Autoalojado: instancias externas para grupos y canales

El proyecto se encuentra actualmente en fase beta, ideal para comunicaciones privadas y redes locales sin conexión.

— Editorial Team

Advertisement 728x90

Leer después