Cifrado de extremo a extremo
ARGUS admite cifrado de extremo a extremo (E2E) por operación en el tráfico del canal de control y en los campos con información de posición de los planes de misión, polígonos y registros de vuelo. Las cargas cifradas son opacas para la red TACLINK y para los servicios de backend de ARGUS: solo los participantes que poseen la clave de la operación pueden descifrarlas.
E2E es una concesión del operador, no un valor por defecto. Activarlo protege contra el compromiso del servidor y contra operadores de backend curiosos, pero también deshabilita un puñado de funciones calculadas en el servidor que necesitan leer el texto en claro.
Qué se cifra
- Mensajes del canal de datos
flight_control: entradas de joystick DRC, teclado y gamepad que fluyen a través de TACLINK. - Mensajes
drone_command: despegue, RTH, gimbal, zoom, acciones de carga útil. - Waypoints de misión: el array
waypoints[], máspointAltOverridesywaypointActions, almacenados en Firestore como blobswaypointsEnc. - Polígonos:
points[]del anillo ypaths[]multi-polígono, almacenados comopointsEncypathsEnc. - Registros de vuelo: la ruta de migas de pan de alta frecuencia
path[]junto con las coordenadas de despegue y aterrizaje, almacenados comopathEnc,takeoffLocationEncylandingLocationEnc. - Metadatos seleccionados de Firestore: por ejemplo, las claves de stream WHIP, que de otro modo darían a un lector pasivo acceso al video en vivo.
Qué NO se cifra
- Pistas de video en vivo. TACLINK envía las pistas con su propio cifrado de transporte; el SFU aún puede ver los frames. Pide a soporte que habilite el cifrado de frames de insertable-streams de TACLINK si necesitas también esa capa.
- Tópicos de telemetría (
aircraft_flight_status,osd, etc.). Los mantenemos inspeccionables para la analítica del copiloto, el master caution y los informes de misión. Nota aspiracional: un toggle para E2E de telemetría está planificado pero no está disponible actualmente. - Agregados escalares del registro de vuelo: duración, altitud máxima, velocidad máxima, batería al inicio/fin. Se necesitan para el informe posterior a la acción y no revelan nada sobre la posición.
Habilitar E2E
E2E se configura en el momento de crear o editar la misión en el paso Seguridad del asistente de misión. Marca Cifrado E2E, guarda y, desde ese punto en adelante, todas las escrituras se cifrarán.
Una vez que la operación está activa (el primer participante se ha unido) el toggle queda bloqueado. Esto es deliberado: cambiarlo a mitad de la operación dejaría los mensajes anteriores en un estado ilegible.
Gestión de claves
La clave por operación vive en missions/{id}.e2eKey y se acuña de
forma diferida en la primera escritura cifrada. Los participantes la
reciben mediante lecturas autenticadas de Firestore, delimitadas por
las reglas de Firestore a los usuarios
listados en la operación. La clave nunca toca los logs del backend de
ARGUS y nunca se devuelve al SFU.
Los documentos heredados (escritos antes de activar E2E) siguen siendo legibles: la capa de cifrado realiza un passthrough grácil: texto en claro entra, texto en claro sale.
El indicador del candado
La barra de herramientas de la misión muestra un candado con tres estados:
- Verde, cerrado: E2E activo y el participante local descifró correctamente los últimos N mensajes.
- Ámbar, abierto: E2E está desactivado para esta operación.
- Rojo, pulsante: E2E está activo pero el descifrado está fallando. Suele significar que tu cliente tiene una clave antigua o incorrecta, o que la clave de la operación se rotó sin que te reconectaras.
Si el candado se pone rojo, vuelve a unirte a la operación desde el panel. Si sigue rojo, abre una tesela de depuración TACLINK y toma la huella de clave que se muestra en el encabezado.
Impacto en otras funciones
- Las consultas de Firestore que filtran por campos cifrados (p. ej. “waypoints dentro del bbox”) no funcionarán: el valor es un blob AES-GCM del lado del servidor.
- La IA del servidor que recorría la ruta no puede hacerlo porque la ruta es opaca. El copiloto en misión sigue funcionando: se ejecuta dentro de tu navegador tras el descifrado.
- La exportación de misión desde el panel sigue funcionando; el cliente descifra antes de escribir el ZIP.