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:
[ El teléfono GENERA un código aleatorio de 8 caracteres ] ↓ [ El teléfono ESCRIBE el código + sessionId en Firestore, en el documento pc_connections ] ↓ [ El teléfono MUESTRA el código al usuario en la pantalla ] ↓ [ El usuario LEE el código y lo escribe en el campo del Companion ] ↓ [ El Companion CONSULTA Firestore en busca de la sesión en espera que coincide con el código ] ↓ [ Ambos lados DERIVAN las claves criptográficas de SHA-256(código, sessionId) ] ↓ [ El código PERMANECE en la memoria de ambos lados; ninguno lo escribe en Firestore ] ↓ [ Desconectar / volver a vincular BORRA el código en ambos lados ]
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 el Companion.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 ve bloques AESGCM:..., no comandos. |
| Atacante que puede escribir en Firestore pero no conoce el código | mitigado | La verificación HMAC falla; el Companion registra el rechazo y se niega a ejecutarlo. |
| 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 está ligado al HMAC; el Companion aún no aplica una ventana de validez. Una corrección futura añadirá una caducidad. |
| 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 móvil bloquea prefijos desconocidos; la comprobación previa del lado del Companion bloquea órdenes dirigidas a servicios inexistentes. |
| Comando destructivo ejecutado accidentalmente | mitigado | Una ventana en el lado del Companion exige un clic del usuario para aprobar Remove-Item, Format-Volume, reg delete, shutdown /r, etc. |
| Proceso de PowerShell bloqueado/descontrolado | mitigado | Toda orden tiene límite de tiempo: 5 minutos por defecto, 45 para una solución larga, 60 en el tope duro — y se mata el árbol de procesos entero. |
| Companion .exe alterado entre la descarga y la ejecución | mitigado | SHA-256 publicado en companion-version.json; los usuarios pueden comprobarlo. La firma Authenticode está prevista antes del lanzamiento. |
| 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 | mitigado | El código de emparejamiento persistente está cifrado con Windows DPAPI (por cuenta), por lo que no se puede leer desde un disco copiado ni desde una cuenta Windows diferente. |
Cosas contra las que WindowsHelper explícitamente no protege:
[security].