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.
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.
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 ]
pairingCode; una vez emparejado, el código permanece exclusivamente en la memoria.Cada comando enviado por cable está cifrado con AES-256-GCM, un modo de cifrado autenticado.
SHA-256("WH_SECURE_{code}_{sessionId}_CMD_KEY").Random.secure() por teléfono o RandomNumberGenerator en acompañante.AESGCM:<nonce_b64>:<ciphertext_b64>:<tag_b64>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.
SHA-256("WH_SECURE_{code}_{sessionId}_HMAC_KEY"). Separado de la clave de cifrado.HMAC-SHA256(hmacKey, commandId | ciphertext | sentAtMillis). Las barras verticales son caracteres de barra vertical literales, no delimitadores: tres cadenas concatenadas.| amenaza | Estado | Notas |
|---|---|---|
| Espionaje en la red local | mitigado | El texto cifrado AES-GCM es opaco para los observadores MITM. |
| Escuchador en servidores Firestore | mitigado | Google sees AESGCM:... blobs, not commands. |
| Atacante que puede escribir en Firestore pero no conoce el código | mitigado | La verificación HMAC falla; El compañero registra el rechazo + rechaza la ejecución. |
| Atacante que descifró o suplantó el código de emparejamiento | Residual | Pueden emitir comandos como si fueran el usuario. Mitigación: rote el código desde el menú de la bandeja. |
| Reproducción de un comando grabado | Residual | sentAtMillis is HMAC-bound; companion doesn't yet enforce a freshness window. Future fix adds a TTL. |
| Atacante no autenticado en modo LAN | mitigado | El protocolo de enlace del par WebSocket valida el código; HMAC + AES controla cada comando posterior. |
| Teléfono comprometido con clave de emparejamiento robada | Residual | Indistinguible 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éfono | mitigado | La 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 accidentalmente | mitigado | Companion-side modal requires user click to approve Remove-Item, Format-Volume, reg delete, shutdown /r, etc. |
| Proceso de PowerShell bloqueado/descontrolado | mitigado | Un tiempo de espera de 5 minutos mata todo el árbol de procesos. |
| Companion .exe alterado entre la descarga y la ejecución | mitigado | SHA-256 published in companion-version.json; users can verify. Authenticode signing landing soon. |
| Companion estado sensible a la fuga de fallos | mitigado | Informes de fallos + reescrituras de errores de Firestore desinfectan %USERPROFILE% / %MACHINE% / %USER%. |
| Dispositivo robado, clave de emparejamiento del Registro persistente | Residual | Un 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. |
Cosas que WindowsHelper hace explícitamente no defenderse de:
[security].