Как WindowsHelper защищает ваш компьютер и телефон, какую криптографию мы используем и от чего явно не защищаемся. Последнее обновление: 25 апреля 2026 г.
электронная почта support@windowshelper.app с предметом [security]. Пожалуйста, не открывайте общедоступные проблемы GitHub — дайте нам время выпустить исправление, прежде чем оно будет раскрыто.
Код сопряжения — это общий секрет, из которого выводятся все остальные криптографические операции. Полный жизненный цикл:
[ Телефон СОЗДАЁТ случайный код из 8 символов ] ↓ [ Телефон ЗАПИСЫВАЕТ код + sessionId в Firestore, в документ pc_connections ] ↓ [ Телефон ПОКАЗЫВАЕТ код пользователю на экране ] ↓ [ Пользователь ЧИТАЕТ код и вводит его в поле Companion ] ↓ [ Companion ИЩЕТ в Firestore ожидающий сеанс, соответствующий коду ] ↓ [ Обе стороны ВЫВОДЯТ ключи шифрования из SHA-256(код, sessionId) ] ↓ [ Код ОСТАЁТСЯ в памяти на обеих сторонах; ни одна не записывает его в Firestore ] ↓ [ Отключение / повторное сопряжение СТИРАЕТ код с обеих сторон ]
Каждая команда, передаваемая по проводу, шифруется с помощью AES-256-GCM, режима шифрования с проверкой подлинности.
SHA-256("WH_SECURE_{code}_{sessionId}_CMD_KEY").Random.secure() по телефону или RandomNumberGenerator на стороне Companion.AESGCM:<nonce_b64>:<ciphertext_b64>:<tag_b64>Каждая команда также имеет подпись HMAC, поэтому телефон, который не знает код сопряжения, не может вводить команды, даже если он может писать в Firestore.
SHA-256("WH_SECURE_{code}_{sessionId}_HMAC_KEY"). Отдельно от ключа шифрования.HMAC-SHA256(hmacKey, commandId | ciphertext | sentAtMillis). Трубы представляют собой буквальные символы вертикальной черты, а не разделители — три объединенные строки.| Угроза | Статус | Примечания |
|---|---|---|
| Подслушиватель в локальной сети | Смягченный | Зашифрованный текст AES-GCM непрозрачен для наблюдателей MITM. |
| Подслушиватель на серверах Firestore | Смягченный | Google видит блоки AESGCM:..., а не команды. |
| Злоумышленник, который может писать в Firestore, но не знает кода. | Смягченный | Проверка HMAC не проходит; Companion записывает отказ и не выполняет команду. |
| Злоумышленник, взломавший/фишинговый код сопряжения | Остаточный | Они могут отдавать команды, как если бы они были пользователем. Смягчение: повернуть код из меню в трее. |
| Воспроизведение записанной команды | Остаточный | sentAtMillis привязан к HMAC; Companion пока не проверяет окно актуальности. Будущее исправление добавит срок действия. |
| Неаутентифицированный злоумышленник в режиме локальной сети | Смягченный | Парное рукопожатие WebSocket проверяет код; HMAC + AES пропускает каждую последующую команду. |
| Взломанный телефон с украденным ключом сопряжения | Остаточный | Неотличим от «самого пользователя». Смягчение: ограничение скорости (10 см/мин) + подтверждение команды разрушения требует щелчка мыши на стороне ПК. |
| Неверно введена команда из приложения на телефоне | Смягченный | Список разрешений на стороне телефона блокирует незнакомые префиксы; предварительная проверка на стороне Companion блокирует команды к несуществующим службам. |
| Деструктивная команда запускается случайно | Смягченный | Окно на стороне Companion требует нажатия пользователя, чтобы подтвердить Remove-Item, Format-Volume, reg delete, shutdown /r и подобные. |
| Зависший / вышедший из-под контроля процесс PowerShell | Смягченный | У каждой команды есть предел по времени — 5 минут по умолчанию, 45 для долгого исправления, 60 на жёстком потолке — и завершается всё дерево процессов. |
| Companion Вмешательство в .exe между загрузкой и запуском | Смягченный | SHA-256 публикуется в companion-version.json; пользователи могут его проверить. Подпись Authenticode запланирована до запуска. |
| Companion сбой, утечка конфиденциального состояния | Смягченный | Отчеты о сбоях + обратная запись ошибок Firestore, очистка %USERPROFILE% / %MACHINE% / %USER%. |
| Украденное устройство, сохраненный ключ сопряжения реестра | Смягченный | Сохраненный код сопряжения зашифрован с помощью Windows DPAPI (для каждой учетной записи), поэтому его нельзя прочитать с скопированного диска или другой учетной записи Windows. |
От чего WindowsHelper явно не защищает:
[security].