Sobre el proyecto
Syndeo es un proyecto de navegador de código abierto que reimagina la arquitectura tradicional del navegador web priorizando la caché como el producto central. Su filosofía de diseño se centra en la separación estricta de procesos y límites de seguridad, con el objetivo de convertir la confianza en verdad a través de interacciones verificables.
**Arquitectura y modelo de proceso**
El sistema se construye alrededor de tres límites de carga:
1. **Los renderizadores nunca hablan con la red:** Los procesos de representación (Servo o WebKit) no abren sockets. Envían objetos `NetRequest` a un proceso de red separado (`syndeo-net`), que maneja DNS, TLS y caché. Esto garantiza que el renderizador no pueda eludir las políticas de seguridad ni filtrar información a través del tiempo de red.
2. **El agente nunca habla con el almacén de claves:** El proceso del agente, que puede ejecutar herramientas WebAssembly, está aislado del almacén de claves. No puede acceder directamente a las claves, lo que reduce la superficie de ataque para scripts maliciosos o agentes.
3. **El almacén de claves expone exactamente una operación:** Solo puede firmar una carga útil si el shell confirma la intención del usuario. Esta confirmación incluye un MAC sobre el origen, el propósito y el hash de la carga útil, lo que garantiza que el consentimiento sea explícito y esté vinculado a acciones específicas.
**Componentes clave**
- **`syndeo-cache`:** Implementa políticas RFC 9111 con un índice redb y un almacén de blobs direccionados BLAKE3. Admite integridad de subrecursos (SRI) y está particionado por origen de nivel superior para evitar el seguimiento entre sitios a través del tiempo de caché.
- **`syndeo-net`:** El proceso de red que maneja HTTP/1.1, HTTP/2 y HTTP/3 (QUIC). Se integra con la caché y proporciona una API de obtención para el resto del sistema.
- **`syndeo-peer`:** Habilita la obtención de contenido de igual a igual utilizando libp2p. A los pares solo se les solicita contenido ya nombrado por hash en la página, lo que preserva algo de privacidad mientras permite la distribución descentralizada de contenido.
- **`syndeo-keystore`:** Administra claves criptográficas con un secreto raíz sellado. Utiliza Argon2id para sellar la frase de contraseña e interactúa con tiendas de credenciales de nivel de sistema operativo (Keychain en macOS, Servicio Secreto en Linux). Admite consentimiento por firma y olvido automático de semillas después de inactividad o bloqueo.
- **`syndeo-dom`:** Una implementación de DOM sin cabeza utilizada por el agente para leer páginas sin representación completa, centrándose en prosa, enlaces y formularios.
- **`syndeo-ui`:** Un shell con ventanas creado con winit, wgpu y egui, que proporciona una interfaz gráfica con soporte de accesibilidad.
**Privacidad y seguridad**
Syndeo aplica varios valores predeterminados de privacidad:
- **Caché particionada:** La caché está vinculada por el origen del documento de nivel superior, lo que evita el seguimiento entre sitios a través del tiempo de aciertos/errores de caché. El contenido se deduplica a nivel de blob para ahorrar espacio a pesar de la partición.
- **DNS sobre HTTPS (DoH):** Habilitado por defecto (Cloudflare), con opciones para Google, Quad9 o resolutor de sistema.
- **No telemetría:** El código base no contiene análisis, informes de fallos ni pings de actualización.
- **Extracción de credenciales:** Los encabezados `Authorization` y `Cookie` se eliminan cuando las redirecciones cruzan orígenes.
**Uso y herramientas**
- **Instalación:** Disponible para macOS (Apple Silicon) y Linux (x86_64/arm64) a través de un script de shell que verifica sumas de comprobación. No se requiere `sudo`.
- **CLI:** `syndeo browse` obtiene páginas e informa sobre el estado de la caché. `syndeo agent` ejecuta tareas como leer o rastrear páginas. `syndeo sign` realiza la firma criptográfica con confirmación del usuario.
- **Modo de proxy:** `syndeo-proxy` puede ejecutarse como un proxy interceptador para medir la eficiencia de la caché en tráfico real de otros navegadores como Chrome.
- **Representación:** Admite Servo (sin cabeza/ característica-gateada) y WebKit (solo macOS, para reproducción de video). La integración de WebKit utiliza un proxy local para hacer cumplir los límites de red ya que WebKit no admite manejadores de esquemas personalizados para HTTP/HTTPS.
**Desarrollo y estado**
- **Compilación:** Requiere Rust, con dependencias específicas para Linux (D-Bus, Wayland/X11). La integración de Servo está característica-gateada debido a los largos tiempos de compilación.
- **Pruebas:** Incluye conformidad RFC 9111, scripts de medición de memoria y herramientas de verificación de lanzamiento.
- **Brechas:** La compatibilidad con Windows y ChromeOS está pendiente. El proyecto está en desarrollo activo, con un enfoque en verificar la viabilidad del modelo de caché primero y sus propiedades de seguridad.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.