Detalles técnicos de la seguridad
Esto es una traducción. En caso de discrepancia, prevalecerá la versión italiana.
Esta página es para quien tiene que evaluar Walkie Desk desde el punto de vista técnico. Para una visión general, consulta Seguridad.
Describe el servicio tal como es hoy, en beta: cuando algo cambia, la actualizamos.
Visión general
Walkie Desk tiene cuatro partes: el programa del PC al que se quiere acceder, el navegador de quien se conecta, el servidor de coordinación en walkiedesk.app y un servidor de retransmisión (TURN), que solo se usa cuando los dos dispositivos no consiguen conectarse directamente.
- Navegador y walkiedesk.app: HTTPS y WebSocket seguro (TLS). Sirven para iniciar sesión en la cuenta y para intercambiar los parámetros de la sesión, firmados por los dispositivos.
- PC y walkiedesk.app: WebSocket seguro (TLS) abierto por el servicio de Windows, que siempre verifica el certificado y el nombre del servidor, incluida la comprobación de revocación.
- PC y navegador: la sesión propiamente dicha (vídeo, audio del equipo, teclado, ratón, portapapeles, archivos y chat), mediante WebRTC y cifrada de extremo a extremo. El servidor de coordinación no está en este recorrido.
- Retransmisión: si la conexión directa no es posible, los mismos paquetes cifrados pasan por el servidor de retransmisión, que no tiene las claves para leerlos.
Cifrado
La sesión usa WebRTC. El vídeo y el audio del equipo viajan con SRTP, con claves negociadas mediante DTLS (DTLS-SRTP); el teclado, el ratón, el portapapeles, los archivos, los mensajes del chat y los comandos viajan en canales de datos (data channels), es decir, SCTP dentro de DTLS. Las claves se negocian entre el PC y el navegador y se quedan allí: no las conocen ni el servidor de coordinación ni el servidor de retransmisión.
En la negociación DTLS cada dispositivo presenta un certificado cuya huella está escrita en los parámetros de la sesión (SDP). Esos parámetros los firman los dispositivos (más abajo): así el navegador sabe que está hablando con el PC correcto, y el PC con el navegador correcto.
Entre los dispositivos y walkiedesk.app todo pasa por HTTPS y WebSocket seguro (TLS), con HSTS.
- Vídeo y audio del equipo
- SRTP con claves DTLS (DTLS-SRTP); audio codificado con Opus
- Teclado, ratón, portapapeles, archivos, chat
- canales de datos WebRTC: SCTP sobre DTLS
- Firmas de los dispositivos
- ECDSA P-256
- Hash de los parámetros firmados
- SHA-256
- Vinculación, QuickSupport e ID y contraseña
- CPace, intercambio de claves autenticado por contraseña
- Llamadas
- DTLS-SRTP entre los dos navegadores; parámetros autenticados con HMAC-SHA-256 y una clave derivada con HKDF de un secreto de un solo uso
- Contraseñas de las cuentas
- Argon2id
- Segundo factor
- TOTP o WebAuthn (llave de seguridad o llave de acceso)
- Componentes en el PC
- libdatachannel, OpenSSL, libsrtp, libsodium, Opus
- Componentes en el navegador
- la implementación WebRTC de Chrome, Edge o Firefox
Usamos componentes de código abierto muy extendidos que mantenemos actualizados; la lista completa de cada versión (SBOM), con versiones, licencias y procedencia, es pública: Componentes de software.
Identidad de los dispositivos y firma de las sesiones
Cada PC con Walkie Desk y cada navegador de confianza tiene su propio par de claves ECDSA P-256:
- en el PC, la clave privada se crea en el chip TPM, no exportable, cuando el PC lo tiene; si no, en el almacén de claves de Windows, también no exportable;
- en el navegador es una clave WebCrypto no extraíble, guardada en IndexedDB: la página puede usarla para firmar, pero no leerla.
Los navegadores de confianza de una persona forman una cadena firmada: el primero la crea, y cada navegador posterior entra en ella solo con una entrada firmada por un dispositivo que ya está en la cadena. Hay tres formas:
- la aprobación desde un navegador que ya es de confianza, con un código de un solo uso intercambiado con CPace: el navegador de confianza firma la entrada después de que la persona haya confirmado el acceso con la aplicación de autenticación o la llave de acceso (defensa frente a un equipo que se ha quedado desbloqueado); queda activa de inmediato y se envía un correo electrónico;
- la llave de acceso del usuario (WebAuthn, ES256 o RS256), la misma credencial con la que inicia sesión: vinculada al dispositivo o sincronizada, tiene los mismos poderes y la entrada queda activa de inmediato, con un correo electrónico. La aserción de inicio de sesión usa un desafío (challenge) con un prefijo distinto del de las firmas de la cadena, así que el servidor no puede hacer pasar un inicio de sesión por una firma;
- el código de recuperación: a partir del código, el navegador obtiene la clave de recuperación (su parte privada está cifrada con el código, que nunca sale del navegador). Un navegador añadido así se activa en los PC solo 10 minutos después de que lo reciban; mientras tanto, el usuario recibe un correo electrónico con un enlace para detenerlo, y una entrada firmada por un navegador de confianza o por una llave de acceso anula la incorporación.
Cada PC verifica todas las firmas de la cadena antes de aceptar un navegador, y cuenta él mismo los 10 minutos. El servidor guarda la cadena, pero no puede añadirle ningún navegador, porque no tiene las claves para firmarla. Un PC con una versión anterior de Walkie Desk aplica las reglas anteriores (por ejemplo, también exige la llave de acceso para aprobar un navegador): mientras no se actualice, el área de usuario lo indica y solo ofrece las operaciones que ese PC acepta.
Antes de cada sesión, el PC firma su propuesta de conexión y el navegador firma su respuesta, incluidas las huellas DTLS. Cada parte verifica la firma de la otra con una clave que ya conoce, antes de usar los parámetros.
Qué protege: si alguien en el recorrido de la coordinación, incluido el servidor, sustituyera una huella DTLS para interponerse entre el PC y el navegador, la firma dejaría de ser válida y la sesión se rechazaría. El servidor pone en contacto a los dispositivos, pero no puede hacerse pasar por ellos. Lo que no cubre se explica en Limitaciones conocidas.
Qué ve y qué no ve el servidor
Ve
- los PC (identificador, clave pública, nombre del equipo, versiones de Windows y del programa), las cuentas y las claves públicas de los navegadores de confianza;
- los datos de cada sesión: quién se conecta a qué PC, cuándo y durante cuánto tiempo, si pasa por la retransmisión, si se ha grabado (sí o no) y estadísticas técnicas de calidad;
- los registros técnicos de los servidores, como direcciones IP y páginas solicitadas;
- en el acceso con ID y contraseña, los intentos fallidos (cuenta, dirección IP, PC, hora) y, para cada usuario, la lista «Recientes» de PC de otras personas a los que se ha conectado;
- en las llamadas, quién ha llamado a qué PC y cuándo, y los parámetros de conexión (direcciones de red y huellas DTLS).
No ve
- el contenido de las sesiones: pantalla, audio del equipo, pulsaciones de teclas, ratón, portapapeles, archivos transferidos y mensajes del chat;
- el audio y el vídeo de las llamadas, ni si el micrófono y la webcam están encendidos;
- las grabaciones de las sesiones, que se quedan en el dispositivo de quien graba;
- la contraseña de QuickSupport, la del acceso con ID y contraseña ni la parte secreta del código de vinculación;
- las claves privadas de los PC y de los navegadores.
El servidor de retransmisión, cuando la sesión pasa por él, transporta solo paquetes cifrados: no tiene las claves para leerlos y no guarda el contenido de las sesiones, los archivos ni los mensajes.
Los servidores están en Italia; los datos y las copias de seguridad se quedan en la Unión Europea. Qué guardamos, durante cuánto tiempo y con qué proveedores: política de privacidad.
Cuenta
- Contraseñas de 12 a 128 caracteres, sin reglas de composición, guardadas solo como hash Argon2id.
- Segundo factor obligatorio para todas las cuentas desde el registro: una aplicación de autenticación (TOTP) o una llave de acceso (WebAuthn, también una llave de seguridad), o ambas. Ni SMS ni correo electrónico como factor.
- Un único código de recuperación (128 bits) creado en el navegador: el servidor guarda solo el hash de un valor derivado con HKDF, nunca el código. Los intentos fallidos repetidos bloquean el código durante un tiempo.
- Los intentos de inicio de sesión fallidos repetidos se bloquean; los inicios de sesión y los cambios de contraseña o de segundo factor se registran como eventos de seguridad.
- Próximamente: inicio de sesión sin contraseña, solo con una llave de acceso.
Acceso desatendido
- Un PC con Walkie Desk no es accesible hasta que lo vinculas a una cuenta.
- Para vincularlo generas en el área de usuario un código de 9 caracteres y lo introduces en el PC. El código caduca a los pocos minutos y admite muy pocos intentos. Una parte del código es un secreto creado en tu navegador que nunca llega al servidor: el PC y el navegador lo usan con CPace para reconocerse e intercambiar las claves públicas, así que el servidor no puede vincular un PC en tu lugar.
- Puedes quitar un PC de tu cuenta en el área de usuario, y quien administra el PC puede revocar el acceso de una cuenta desde la aplicación de Walkie Desk en el PC.
- Durante cada sesión el PC muestra, de forma predeterminada, un marco rojo alrededor del monitor con el nombre de quien está conectado y un botón Finalizar. Quien administra el PC puede ocultar el marco en las sesiones con cuenta; si la sesión se graba, el PC lo indica igualmente.
- Quien administra el PC decide si la transferencia de archivos está permitida, requiere confirmación cada vez o no está permitida, y en qué sentidos. El ajuste reside en el PC: ni el servidor ni una cuenta pueden ampliarlo.
QuickSupport
- Se ejecuta sin instalación y con los permisos del propio usuario; quien recibe la asistencia no necesita una cuenta.
- Muestra un ID de 9 cifras y una contraseña de 6 caracteres. La contraseña nunca se envía al servidor: el equipo y el navegador del técnico la usan con CPace para reconocerse. Sirve para una sola sesión y cambia tras unos pocos intentos fallidos.
- La clave del equipo se crea en cada inicio y solo está en la memoria del programa: desaparece cuando lo cierras.
- Antes de cada sesión, una ventana muestra quién quiere conectarse: la sesión empieza solo si pulsas Permitir; si nadie responde, la solicitud se rechaza al poco tiempo.
- Durante la sesión, un marco rojo rodea la pantalla y el botón Finalizar la cierra en cualquier momento. El marco no se puede ocultar.
- Una grabación de la sesión empieza solo si la persona que está en el PC la permite en una ventana específica, cada vez que se graba.
- Al cerrarse, el programa elimina la carpeta temporal que había creado.
Contra las estafas del falso soporte técnico: Protección contra las estafas.
ID y contraseña
- Desde la versión 0.10.0, cada PC con Walkie Desk para Windows, Linux o Mac tiene, además del ID, una contraseña: aleatoria, generada en el PC y mostrada en la aplicación, o elegida por el administrador del PC.
- La contraseña nunca se envía al servidor: el navegador de quien se conecta y el PC la usan con CPace para reconocerse, como en QuickSupport. El servidor encamina los mensajes, pero no puede verificar la contraseña ni interponerse: la oferta de conexión del PC está firmada con su clave y autenticada con la clave que resulta del intercambio CPace.
- Quien se conecta debe tener una cuenta de Walkie Desk, con segundo factor, y hacerlo desde un navegador de confianza; la sesión lleva su nombre firmado.
- De forma predeterminada, tras la contraseña correcta el PC pide confirmación a la persona que está delante, en una ventana que solo acepta el teclado y el ratón físicos: quien ya controla el PC no puede confirmar en su lugar. La confirmación solo se puede quitar con una contraseña elegida por el administrador del PC, porque la aleatoria la ve cualquiera que use el PC.
- Los intentos fallidos están limitados en el servidor (por cuenta, dirección IP y PC) y en el PC, que bloquea el acceso con contraseña durante un tiempo creciente y lo indica en la aplicación; el bloqueo afecta solo al acceso con contraseña, no a las cuentas vinculadas.
- En el PC, la contraseña aleatoria se guarda protegida (en Windows con la protección de datos del equipo, en Linux en un archivo que solo puede leer el administrador del sistema); de una contraseña elegida por el administrador solo se guarda un valor derivado.
Audio del equipo y llamadas
- Audio del equipo. El PC captura lo que reproduce solo si un técnico lo pide, y lo envía como pista de audio WebRTC (Opus sobre DTLS-SRTP), con las mismas claves y los mismos parámetros firmados que el vídeo. Está apagado al inicio de cada sesión y el marco del PC muestra quién lo recibe.
- Llamadas (función en beta). La voz y la webcam no pasan por el programa del PC: cuando la persona que está en el PC ha respondido, el programa abre en su navegador predeterminado la página de llamada de walkiedesk.app, con un secreto de un solo uso en la parte de la dirección que el navegador no envía al servidor. El mismo secreto llega al navegador del técnico dentro de la sesión, que ya está cifrada y autenticada.
- Las dos páginas se conectan con una conexión WebRTC independiente (DTLS-SRTP), directa o a través del servidor de retransmisión. La oferta y la respuesta llevan un código de autenticación (HMAC) con una clave derivada del secreto, que el servidor no conoce: un servidor que sustituyera una huella DTLS sería detectado por ambas partes.
- El servidor sabe que hay una llamada, entre quién y cuándo, pero no lo que se dice; las llamadas no se graban y la grabación de la sesión no las incluye.
- La ventana que anuncia la llamada en el PC solo acepta el teclado y el ratón físicos. Con QuickSupport, las llamadas no están disponibles después de reiniciar como administrador, porque el navegador se abriría con esos permisos.
Programas firmados y códec OpenH264
El instalador de Walkie Desk para Windows, sus programas y QuickSupport están firmados con Authenticode por el editor iDev srl, con sello de tiempo: la firma sigue siendo verificable incluso después de que caduque el certificado. Las bibliotecas de terceros incluidas no las firmamos nosotros.
El códec OpenH264 no está incluido: el programa lo descarga del sitio web de Cisco y solo lo usa si su hash SHA-256 es el esperado.
Cómo comprobar el editor y el hash de un archivo descargado: Seguridad.
Actualizaciones y periodo de soporte
- Walkie Desk para Windows se actualiza solo desde la versión 0.8.0, sin interrumpir las sesiones en curso: instala una actualización solo si su manifiesto está firmado con la clave de publicación de Walkie Desk y el instalador lleva la firma digital de iDev srl. Walkie Desk para Linux y para Mac (en beta) todavía no se actualiza solo: las nuevas versiones se instalan desde la página Descargar.
- QuickSupport no se actualiza: se descarga de la web cada vez, así que siempre es la última versión.
- Periodo de soporte: durante la beta solo la última versión recibe correcciones. A partir del lanzamiento, cada versión recibe correcciones de seguridad hasta 12 meses después de que salga la siguiente, y el producto tiene soporte durante al menos 5 años desde el lanzamiento.
- Las vulnerabilidades corregidas se publican en los avisos de seguridad, con las versiones afectadas y la versión que las corrige.
- La lista de componentes de software de cada versión (SBOM, formato CycloneDX) es pública: Componentes de software.
Actualización automática, firma de las versiones con la clave de publicación, ajustes para desactivarla, verificación pública de una versión y versiones anteriores: Actualizaciones.
Limitaciones conocidas
El código de la aplicación web, es decir, el área de usuario y el visor desde el que se conecta el técnico, lo entrega el servidor de walkiedesk.app en cada visita. La firma de los parámetros protege las sesiones frente a quien altere los mensajes de coordinación, pero no frente a un servidor comprometido que entregara al navegador código modificado.
Mitigación actual: una Content Security Policy estricta, que solo permite scripts del mismo dominio y ningún recurso de terceros, salvo el componente de pago de Stripe, únicamente en la página Suscripción. Un visor firmado, verificable sin tener que confiar en el servidor, es una mejora prevista.
Lo mismo vale para la página de llamada que se abre en el navegador del PC, que también sirve walkiedesk.app. Un técnico que ya controla el PC podría abrir él mismo una página de llamada sin la ventana de respuesta: es un poder que ya tiene de todos modos, porque con el control puede abrir cualquier programa o sitio web; la pestaña del navegador y el indicador de micrófono en uso del sistema siguen visibles.
Informar de un problema
- Política de divulgación: cómo comunicarnos una vulnerabilidad y qué esperar.
- Avisos de seguridad, también como feed Atom.
- Informar de un problema: vulnerabilidades, abusos y otros problemas de seguridad o privacidad.
- Correo electrónico: security@walkiedesk.app.