WindowsHelper 如何保护您的 PC + 手机、我们使用哪些加密技术以及我们明确不防御哪些内容。最后更新时间:2026 年 4 月 25 日。
电子邮件 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 尚未强制有效期窗口,后续修复将加入有效期限。 |
| LAN 模式未经身份验证的攻击者 | 缓解 | WebSocket配对握手验证代码; HMAC + AES 门控每个后续命令。 |
| 配对密钥被盗的手机被盗 | 残差 | 与“用户本身”没有区别。缓解措施:速率限制(10 cmd/min)+破坏性命令确认需要 PC 端点击。 |
| 从手机应用程序输入错误的命令 | 缓解 | 手机端的允许列表会拦截无法识别的前缀;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].