Como WindowsHelper protege seu PC e seu telefone, qual criptografia usamos e contra o que explicitamente não nos defendemos. Última atualização: 25/04/2026.
E-mail support@windowshelper.app com assunto [security]. Por favor, não abra problemas públicos do GitHub – dê-nos uma janela para enviar uma correção antes da divulgação.
O código de emparelhamento é o segredo compartilhado do qual derivam todas as outras operações criptográficas. O ciclo de vida completo:
[ O telefone GERA um código aleatório de 8 caracteres ] ↓ [ O telefone ESCREVE o código + sessionId no Firestore, no documento pc_connections ] ↓ [ O telefone MOSTRA o código ao usuário na tela ] ↓ [ O usuário LÊ o código e o digita no campo do Companion ] ↓ [ O Companion CONSULTA o Firestore em busca da sessão em espera que corresponde ao código ] ↓ [ Os dois lados DERIVAM as chaves de criptografia de SHA-256(código, sessionId) ] ↓ [ O código PERMANECE na memória dos dois lados; nenhum deles o escreve no Firestore ] ↓ [ Desconectar / emparelhar novamente APAGA o código dos dois lados ]
Cada comando enviado pela rede é criptografado com AES-256-GCM, um modo de criptografia autenticada.
SHA-256("WH_SECURE_{code}_{sessionId}_CMD_KEY").Random.secure() por telefone ou RandomNumberGenerator no Companion.AESGCM:<nonce_b64>:<ciphertext_b64>:<tag_b64>Cada comando também carrega uma assinatura HMAC para que um telefone que não conheça o código de emparelhamento não possa injetar comandos, mesmo que possa gravar no Firestore.
SHA-256("WH_SECURE_{code}_{sessionId}_HMAC_KEY"). Separado da chave de criptografia.HMAC-SHA256(hmacKey, commandId | ciphertext | sentAtMillis). As barras verticais são caracteres verticais literais, não delimitadores – três strings concatenadas.| Ameaça | Estado | Notas |
|---|---|---|
| Bisbilhoteiro na rede local | Mitigado | O texto cifrado AES-GCM é opaco para observadores MITM. |
| Bisbilhoteiro em servidores Firestore | Mitigado | O Google vê blocos AESGCM:..., não comandos. |
| Invasor que pode gravar no Firestore, mas não conhece o código | Mitigado | A verificação HMAC falha; o Companion registra a rejeição e se recusa a executar. |
| Atacante que decifrou/phishing o código de emparelhamento | Residual | Eles podem emitir comandos como se fossem o usuário. Mitigação: gire o código no menu da bandeja. |
| Repetição de um comando gravado | Residual | sentAtMillis está vinculado ao HMAC; o Companion ainda não impõe uma janela de validade. Uma correção futura adicionará um prazo de validade. |
| Atacante não autenticado no modo LAN | Mitigado | O handshake do par WebSocket valida o código; HMAC + AES bloqueia todos os comandos subsequentes. |
| Telefone comprometido com chave de emparelhamento roubada | Residual | Indistinguível do "próprio usuário". Mitigação: limite de taxa (10 cmd/min) + confirmação do comando destrutivo requer clique no PC. |
| Comando digitado incorretamente no aplicativo do telefone | Mitigado | A lista de permissões do lado do telefone bloqueia prefixos desconhecidos; a verificação prévia do lado do Companion bloqueia comandos direcionados a serviços inexistentes. |
| Comando destrutivo executado acidentalmente | Mitigado | Uma janela no lado do Companion exige um clique do usuário para aprovar Remove-Item, Format-Volume, reg delete, shutdown /r etc. |
| Processo do PowerShell travado/descontrolado | Mitigado | Todo comando tem limite de tempo — 5 minutos por padrão, 45 para uma correção longa, 60 no teto rígido — e toda a árvore de processos é encerrada. |
| Companion adulteração de .exe entre download e execução | Mitigado | SHA-256 publicado em companion-version.json; os usuários podem conferir. A assinatura Authenticode está planejada antes do lançamento. |
| Companion falha vazando estado confidencial | Mitigado | Relatórios de falhas + writebacks de erros do Firestore são limpos %USERPROFILE% / %MACHINE% / %USER%. |
| Dispositivo roubado, chave de emparelhamento de registro persistente | Mitigado | O código de emparelhamento persistente é criptografado com Windows DPAPI (por conta), portanto, não pode ser lido de um disco copiado ou de uma conta Windows diferente. |
Coisas contra as quais o WindowsHelper explicitamente não protege:
[security].