← Volver a WindowsHelper

Modelo de seguridad

Cómo protege WindowsHelper su PC y su teléfono, qué criptografía utilizamos y contra qué no nos defendemos explícitamente. Última actualización: 2026-04-25.

reportar una vulnerabilidad

Correo electrónico support@windowshelper.app con tema [security]. No abra problemas públicos de GitHub; denos un tiempo para enviar una solución antes de revelarlos.

Ciclo de vida del código de emparejamiento

El código de emparejamiento es el secreto compartido de donde se derivan todas las demás operaciones criptográficas. El ciclo de vida completo:

[ Phone GENERATES random 8-char code ]
   ↓
[ Phone WRITES code + sessionId to Firestore in pc_connections doc ]
   ↓
[ Phone DISPLAYS code to user on screen ]
   ↓
[ User READS code, types it into companion's input field ]
   ↓
[ Companion QUERIES Firestore for waiting session matching the code ]
   ↓
[ Both sides DERIVE crypto keys from SHA-256(code, sessionId) ]
   ↓
[ Code STAYS in memory on both sides; never written to Firestore by either ]
   ↓
[ Disconnect / re-pair WIPES the code from both sides ]

Criptografía

AES-256-GCM (confidencialidad de comando + integridad)

Cada comando enviado por cable está cifrado con AES-256-GCM, un modo de cifrado autenticado.

HMAC-SHA256 (autenticidad del comando)

Cada comando también lleva una firma HMAC, por lo que un teléfono que no conoce el código de emparejamiento no puede inyectar comandos incluso si puede escribir en Firestore.

Modelo de amenaza

amenazaEstadoNotas
Espionaje en la red localmitigadoEl texto cifrado AES-GCM es opaco para los observadores MITM.
Escuchador en servidores FirestoremitigadoGoogle sees AESGCM:... blobs, not commands.
Atacante que puede escribir en Firestore pero no conoce el códigomitigadoLa verificación HMAC falla; El compañero registra el rechazo + rechaza la ejecución.
Atacante que descifró o suplantó el código de emparejamientoResidualPueden emitir comandos como si fueran el usuario. Mitigación: rote el código desde el menú de la bandeja.
Reproducción de un comando grabadoResidualsentAtMillis is HMAC-bound; companion doesn't yet enforce a freshness window. Future fix adds a TTL.
Atacante no autenticado en modo LANmitigadoEl protocolo de enlace del par WebSocket valida el código; HMAC + AES controla cada comando posterior.
Teléfono comprometido con clave de emparejamiento robadaResidualIndistinguible de "el propio usuario". Mitigación: límite de velocidad (10 cmd/min) + confirmación de comando destructivo requiere un clic en el lado de la PC.
Comando mal escrito desde la aplicación del teléfonomitigadoLa lista de permitidos del lado del teléfono bloquea prefijos no reconocidos; El prevuelo del lado acompañante bloquea comandos dirigidos a servicios inexistentes.
Comando destructivo ejecutado accidentalmentemitigadoCompanion-side modal requires user click to approve Remove-Item, Format-Volume, reg delete, shutdown /r, etc.
Proceso de PowerShell bloqueado/descontroladomitigadoUn tiempo de espera de 5 minutos mata todo el árbol de procesos.
Companion .exe alterado entre la descarga y la ejecuciónmitigadoSHA-256 published in companion-version.json; users can verify. Authenticode signing landing soon.
Companion estado sensible a la fuga de fallosmitigadoInformes de fallos + reescrituras de errores de Firestore desinfectan %USERPROFILE% / %MACHINE% / %USER%.
Dispositivo robado, clave de emparejamiento del Registro persistenteResidualUn atacante con acceso a disco + inicio de sesión podría leer el código persistente. La solución futura lo incluye con Windows DPAPI.

Fuera de alcance

Cosas que WindowsHelper hace explícitamente no defenderse de:

Divulgación