NoamVC: Cómo Construimos el Chat de Voz Más Privado del Mundo
La historia técnica detrás de NoamVC: cifrado multicapa, audio P2P con WebRTC, Tauri 2 + Rust, y por qué creemos que la privacidad en las comunicaciones no debería ser opcional.
NoamVC: Cómo Construimos el Chat de Voz Más Privado del Mundo
Cada vez que usas Discord, Zoom o Google Meet, tu voz viaja a un servidor central. Alguien — o algo — tiene acceso a tu audio. Puede que no lo escuchen, pero pueden. Nosotros queríamos construir algo diferente.
NoamVC es un chat de voz peer-to-peer (P2P), cifrado de extremo a extremo, sin cuentas, sin servidores intermedios, sin telemetría. Tu voz viaja directamente de tu dispositivo al de la otra persona. Punto.
Este artículo cuenta la historia técnica: por qué lo construimos, cómo funciona por dentro, y las decisiones de arquitectura que tomamos.
El problema: la privacidad es una ilusión en las apps de comunicación
La mayoría de las aplicaciones de voz trabajan con un modelo cliente-servidor:
- Tu audio sube a un servidor central
- El servidor lo mezcla/distribuye
- Los otros participantes reciben el audio desde el servidor
Esto significa que el proveedor tiene acceso técnico a tu audio. Aunque digan que no lo procesan, la arquitectura lo permite. Y si la arquitectura lo permite, la confianza depende de una política de privacidad, no de la tecnología.
Con NoamVC, tomamos un enfoque radicalmente diferente: si el servidor nunca toca el audio, no hay nada que proteger con políticas. La privacidad está garantizada por diseño, no por promesas.
Arquitectura: cero servidores de audio
NoamVC usa WebRTC para conexiones peer-to-peer directas. El servidor solo participa en el signaling (la negociación inicial para que los peers se encuentren) y luego desaparece:
- Creas una sala: se genera un código criptográfico de 16 caracteres hex
- Compartes el código: por el canal que prefieras
- El nuevo miembro pide admisión: los miembros existentes aprueban o rechazan
- Conexión P2P directa: audio y texto viajan directo entre dispositivos
- El servidor de signaling nunca recibe audio
Incluso el signaling está protegido: cada mensaje es firmado con HMAC-SHA256 con claves embebidas en el binario Rust en tiempo de compilación — inaccesibles desde JavaScript.
Cifrado multicapa: defensa en profundidad
No confiamos en una sola capa de cifrado. NoamVC implementa defensa en profundidad con múltiples capas:
Capa 1: DTLS-SRTP (Transporte)
El estándar de WebRTC para cifrar el transporte. Todos los datos que viajan entre peers están cifrados en tránsito. Esto es lo que Discord y Zoom también usan — pero nosotros no paramos aquí.
Capa 2: Insertable Streams E2EE (Audio)
Usamos la API de Insertable Streams para cifrar cada frame de audio antes de que entre al pipeline de WebRTC. La clave se genera con PBKDF2-SHA256 con 100.000 iteraciones.
Esto significa que incluso si alguien interceptara el tráfico WebRTC, el audio ya está cifrado frame por frame. Doble cifrado.
Capa 3: AES-256-GCM (Chat de texto)
Los mensajes de texto en las salas se envían por WebRTC DataChannels, cifrados con AES-256-GCM. El historial se guarda en una base de datos SQLite local cifrada — nunca en localStorage.
Capa 4: HMAC-SHA256 (Signaling)
Cada mensaje de señalización está firmado con HMAC-SHA256. Ventana anti-replay de 30 segundos. Comparación timing-safe para prevenir ataques de canal lateral.
Capa 5: Almacenamiento local cifrado
Perfiles, preferencias e historial de salas almacenados en SQLite cifrado local. Nada en localStorage, nunca. Content Security Policy (CSP) enforced.
Audio HD adaptativo
La privacidad no sirve de nada si la calidad es mala. Por eso NoamVC usa configuraciones de audio de grado profesional:
- Codec Opus a 48 kHz fullband
- Bitrate adaptativo de 32–96 kbps según condiciones de red
- FEC (Forward Error Correction) para corregir errores sin retransmisión
- DTX (Discontinuous Transmission) para detectar silencio y ahorrar ancho de banda
- Cancelación de eco y supresión de ruido integradas
- Detección de actividad de voz basada en FFT en tiempo real con suavizado de 100ms
El resultado: audio cristalino con latencia ultra-baja, porque la señal viaja directamente entre peers sin pasar por ningún servidor.
Stack tecnológico: por qué Tauri + Rust
Necesitábamos una app de escritorio que fuera rápida, segura y con acceso a APIs nativas. Las opciones eran Electron o Tauri:
| Criterio | Electron | Tauri 2 |
|---|---|---|
| Tamaño del instalador | ~150 MB | ~8 MB |
| Uso de RAM | ~300 MB | ~50 MB |
| Seguridad | Node.js (superficie amplia) | Rust (memory-safe, minimal surface) |
| Secretos | Accesibles desde JS | Embebidos en binario Rust |
| Auto-updates | Electron-updater | Integrado en Tauri |
Elegimos Tauri 2 + Rust sin dudarlo. Los secretos criptográficos (llaves HMAC, seeds) están embebidos en el binario Rust en tiempo de compilación — literalmente inaccesibles desde el layer de JavaScript.
El stack completo:
- Frontend: React 19 + TypeScript 5.9 + Tailwind CSS 4 + shadcn/ui
- Bundler: Vite 7
- Desktop: Tauri 2 + Rust
- P2P Audio: WebRTC + Insertable Streams
- E2EE Chat: AES-256-GCM via WebRTC DataChannels
- Signaling: Socket.IO 4.8
- State: Zustand
- Storage: SQLite local cifrado (IOTA Stronghold)
- Crypto: HMAC-SHA256 (Rust nativo)
Sistema de admisión: no entras sin permiso
Un chat privado no es privado si cualquiera puede entrar. NoamVC implementa un sistema de admisión:
- Cuando alguien intenta unirse, los miembros existentes ven una tarjeta de admisión con nombre y avatar
- Cada miembro puede admitir o denegar
- Las solicitudes expiran automáticamente en 60 segundos (limpieza server-side)
- No se necesitan cuentas — solo compartes el código de sala
Esto evita que alguien que intercepte un código de sala pueda entrar sin ser detectado.
Zero telemetría: lo decimos en serio
Cuando decimos “zero telemetry”, no significa que desactivamos Google Analytics. Significa que:
- No hay tracking de ningún tipo
- No hay analytics — ni propios ni de terceros
- No recolectamos datos — ninguno
- Rate limiting predefinido para prevenir abuso (100 eventos / 10s por conexión)
- Código verificable — puedes revisar el código fuente
No sabemos cuántos usuarios tiene NoamVC. No sabemos cuántas salas se crean. No sabemos cuánto tiempo duran las llamadas. Y así es como queremos que sea.
Plataformas soportadas
NoamVC está disponible como app de escritorio nativa:
- macOS: Apple Silicon (M1–M4) e Intel x64. Firmado y notarizado por Apple.
- Windows: Windows 10+. Firmado digitalmente.
- Linux: Próximamente.
Incluye auto-updates integrados y reporte de bugs directo desde la app.
Lecciones aprendidas
1. WebRTC es poderoso pero complejo
La negociación ICE, los TURN fallbacks, y las diferencias entre navegadores hacen que WebRTC sea un desafío. Invertimos semanas solo en hacer que las conexiones P2P funcionen de forma confiable en redes corporativas con firewalls agresivos.
2. Insertable Streams cambian el juego
La API de Insertable Streams permite manipular frames de media antes de que entren al pipeline de WebRTC. Esto fue clave para implementar E2EE real sin depender del cifrado de transporte estándar.
3. Rust en el frontend es viable
Gracias a Tauri, pudimos usar Rust para toda la capa de seguridad (HMAC, almacenamiento cifrado, manejo de secretos) mientras manteníamos React/TypeScript para la UI. Lo mejor de ambos mundos.
4. La privacidad tiene un costo de UX
Sin servidores centrales, features como “join from browser” o “mobile app” son más difíciles de implementar. Es un trade-off consciente: priorizamos privacidad sobre conveniencia.
¿Por qué lo construimos?
En CloudLabs construimos software para clientes todos los días. Pero también creemos que ciertas herramientas deberían existir en el mundo — herramientas que prioricen a las personas sobre los datos.
NoamVC nació de una pregunta simple: ¿es posible tener una conversación de voz donde la tecnología garantice que nadie más pueda escuchar? No a través de políticas de privacidad o términos de servicio, sino a través de la arquitectura misma.
La respuesta es sí. Y es gratis.
Pruébalo
NoamVC es gratuito y de código abierto. Sin cuentas, sin registro, sin tracking.
- Descarga: noamvc.web.app
- macOS: Apple Silicon + Intel
- Windows: Windows 10+
Si te importa la privacidad en tus comunicaciones — o simplemente quieres un chat de voz que funcione sin crear una cuenta — prueba NoamVC.
Y si tu empresa necesita una solución de comunicación segura personalizada, hablemos.
¿Te interesa este tema?
En CloudLabs implementamos estas soluciones para empresas reales. Conversemos sobre tu proyecto.
Hablemos →Hans Vergara
Lead Developer & Founder en CloudLabs