W jaki sposób WindowsHelper chroni Twój komputer i telefon, jakiej kryptografii używamy i przed czym wyraźnie się nie bronimy. Ostatnia aktualizacja: 25.04.2026.
E-mail support@windowshelper.app z tematem [security]. Nie otwieraj publicznych problemów w GitHubie — daj nam czas na przesłanie poprawki przed ujawnieniem.
Kod parowania to wspólny sekret, z którego wywodzi się każda inna operacja kryptograficzna. Pełny cykl życia:
[ Telefon TWORZY losowy 8-znakowy kod ] ↓ [ Telefon ZAPISUJE kod + sessionId w Firestore, w dokumencie pc_connections ] ↓ [ Telefon WYŚWIETLA kod użytkownikowi na ekranie ] ↓ [ Użytkownik ODCZYTUJE kod i wpisuje go w pole Companiona ] ↓ [ Companion WYSZUKUJE w Firestore oczekującą sesję pasującą do kodu ] ↓ [ Obie strony WYPROWADZAJĄ klucze szyfrujące z SHA-256(kod, sessionId) ] ↓ [ Kod POZOSTAJE w pamięci po obu stronach; żadna nie zapisuje go w Firestore ] ↓ [ Rozłączenie / ponowne parowanie USUWA kod po obu stronach ]
Każde polecenie wysyłane przewodem jest szyfrowane przy użyciu AES-256-GCM, trybu szyfrowania uwierzytelnionego.
SHA-256("WH_SECURE_{code}_{sessionId}_CMD_KEY").Random.secure() na telefonie lub RandomNumberGenerator po stronie Companion.AESGCM:<nonce_b64>:<ciphertext_b64>:<tag_b64>Każde polecenie zawiera również podpis HMAC, więc telefon, który nie zna kodu parowania, nie może wstrzykiwać poleceń, nawet jeśli może pisać do Firestore.
SHA-256("WH_SECURE_{code}_{sessionId}_HMAC_KEY"). Oddzielne od klucza szyfrowania.HMAC-SHA256(hmacKey, commandId | ciphertext | sentAtMillis). Potoki to dosłowne znaki potoku, a nie ograniczniki — trzy połączone ciągi.| Zagrożenie | Stan | Notatki |
|---|---|---|
| Podsłuchiwacz w sieci lokalnej | Złagodzony | Tekst zaszyfrowany AES-GCM jest nieprzezroczysty dla obserwatorów MITM. |
| Podsłuchiwacz na serwerach Firestore | Złagodzony | Google widzi bloki AESGCM:..., a nie polecenia. |
| Atakujący, który może pisać do Firestore, ale nie zna kodu | Złagodzony | Weryfikacja HMAC się nie udaje; Companion zapisuje odrzucenie i odmawia wykonania. |
| Osoba atakująca, która złamała/wyłudziła kod parowania | Pozostały | Mogą wydawać polecenia tak, jakby byli użytkownikiem. Łagodzenie: obróć kod z menu zasobnika. |
| Powtórka nagranego polecenia | Pozostały | sentAtMillis jest powiązany z HMAC; Companion nie wymusza jeszcze okna ważności. Przyszła poprawka doda termin ważności. |
| Nieuwierzytelniony atakujący w trybie LAN | Złagodzony | Uzgadnianie pary protokołu WebSocket sprawdza poprawność kodu; Bramka HMAC + AES przy każdym kolejnym poleceniu. |
| Zhakowany telefon ze skradzionym kluczem do parowania | Pozostały | Nie do odróżnienia od „samego użytkownika”. Ograniczanie: limit szybkości (10 cmd/min) + potwierdzenie polecenia niszczącego wymaga kliknięcia po stronie komputera. |
| Błędnie wpisane polecenie z aplikacji na telefon | Złagodzony | Lista dozwolonych po stronie telefonu blokuje nieznane prefiksy; kontrola wstępna po stronie Companion blokuje polecenia kierowane do nieistniejących usług. |
| Destrukcyjne polecenie zostało uruchomione przypadkowo | Złagodzony | Okno po stronie aplikacji Companion wymaga kliknięcia użytkownika, aby zatwierdzić Remove-Item, Format-Volume, reg delete, shutdown /r itp. |
| Zawieszony/niekontrolowany proces PowerShell | Złagodzony | Każde polecenie ma limit czasu — domyślnie 5 minut, 45 dla długiej naprawy, 60 przy twardym suficie — i kończone jest całe drzewo procesów. |
| Companion Manipulowanie plikiem .exe pomiędzy pobieraniem i uruchamianiem | Złagodzony | SHA-256 publikowany w companion-version.json; użytkownicy mogą go sprawdzić. Podpis Authenticode jest zaplanowany przed premierą. |
| Companion awaria, wyciek, stan wrażliwy | Złagodzony | Raporty o awariach + zapisywanie zwrotne błędów Firestore oczyszczają %USERPROFILE% / %MACHINE% / %USER%. |
| Skradzione urządzenie, zachowany klucz parowania rejestru | Złagodzony | Utrwalony kod parowania jest szyfrowany za pomocą Windows DPAPI (na konto), więc nie można go odczytać ze skopiowanego dysku ani innego konta Windows. |
Rzeczy, przed którymi WindowsHelper wyraźnie nie chroni:
[security].