Como WindowsHelper protexe o teu PC e o teu teléfono, que criptografía usamos e contra o que non defendemos explícitamente. Última actualización: 25-04-2026.
Correo electrónico support@windowshelper.app con tema [security]. Non abras os problemas públicos de GitHub: dános unha xanela para enviar unha solución antes da divulgación.
O código de emparellamento é o segredo compartido do que deriva calquera outra operación criptográfica. O ciclo de vida completo:
[ O teléfono XERA un código aleatorio de 8 caracteres ] ↓ [ O teléfono ESCRIBE o código + sessionId en Firestore, no documento pc_connections ] ↓ [ O teléfono MOSTRA o código ao usuario na pantalla ] ↓ [ O usuario LE o código e escríbeo no campo do Companion ] ↓ [ O Companion CONSULTA Firestore para atopar a sesión en espera que coincide co código ] ↓ [ Ambos os lados DERIVAN as claves criptográficas de SHA-256(código, sessionId) ] ↓ [ O código PERMANECE na memoria dos dous lados; ningún o escribe en Firestore ] ↓ [ Desconectar / vincular de novo BORRA o código nos dous 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 ou RandomNumberGenerator no Companion.AESGCM:<nonce_b64>:<ciphertext_b64>:<tag_b64>Cada comando tamén leva unha sinatura HMAC polo que un teléfono que non coñece o código de sincronización non pode inxectar comandos aínda que poida escribir en Firestore.
SHA-256("WH_SECURE_{code}_{sessionId}_HMAC_KEY"). Separado da clave de cifrado.HMAC-SHA256(hmacKey, commandId | ciphertext | sentAtMillis). As canalizacións son caracteres literais, non delimitadores: tres cadeas concatenadas.| Ameaza | Estado | Notas |
|---|---|---|
| Escoita na rede local | Atenuado | O texto cifrado AES-GCM é opaco para os observadores do MITM. |
| Eavesdropper nos servidores Firestore | Atenuado | Google ve bloques AESGCM:..., non ordes. |
| Atacante que pode escribir en Firestore pero non coñece o código | Atenuado | A verificación HMAC falla; o Companion rexistra o rexeitamento e négase a executalo. |
| Atacante que descifrau/suplantou o código de vinculación | Residual | Poden emitir comandos coma se fosen o usuario. Mitigación: xira o código desde o menú da bandexa. |
| Reprodución dun comando gravado | Residual | sentAtMillis está ligado ao HMAC; o Companion aínda non aplica unha xanela de validez. Unha corrección futura engadirá unha caducidade. |
| Atacante non autenticado en modo LAN | Atenuado | O enlace de par de WebSocket valida o código; Porta HMAC + AES cada comando posterior. |
| Teléfono comprometido coa chave de sincronización roubada | Residual | Indistinguible de "o propio usuario". Mitigación: límite de velocidade (10 cmd/min) + a confirmación do comando destrutivo require un clic no lado do PC. |
| Comando mal escrito da aplicación do teléfono | Atenuado | A lista de permitidos do móbil bloquea prefixos descoñecidos; a comprobación previa do lado do Companion bloquea ordes dirixidas a servizos inexistentes. |
| O comando destrutivo execútase accidentalmente | Atenuado | Unha xanela no lado do Companion require un clic do usuario para aprobar Remove-Item, Format-Volume, reg delete, shutdown /r, etc. |
| Proceso de PowerShell suspendido / desbocado | Atenuado | Cada orde ten un límite de tempo: 5 minutos por defecto, 45 para unha solución longa, 60 no tope duro — e mátase a árbore de procesos enteira. |
| Companion Manipulación .exe entre a descarga e a execución | Atenuado | SHA-256 publicado en companion-version.json; os usuarios poden comprobalo. A sinatura Authenticode está prevista antes do lanzamento. |
| Estado sensible de fuga de Companion fallo | Atenuado | Informes de fallos + desinfeccións de erros de Firestore %USERPROFILE% / %MACHINE% / %USER%. |
| Dispositivo roubado, clave de sincronización do rexistro persistente | Atenuado | O código de sincronización persistente está cifrado con Windows DPAPI (por conta), polo que non se pode ler desde un disco copiado ou dunha conta Windows diferente. |
Cousas contra as que WindowsHelper non protexe explicitamente:
[security].