← WindowsHelper に戻る

セキュリティモデル

WindowsHelper が PC と携帯電話をどのように保護するか、使用する暗号化、および明示的に防御しないもの。最終更新日: 2026-04-25。

脆弱性を報告する

電子メール support@windowshelper.app 件名付き [security]。 GitHub の公開問題を開かないでください。開示前に修正を提供するための猶予を与えてください。

ペアリングコードのライフサイクル

ペアリングコードは、他のすべての暗号操作の派生元となる共有秘密です。ライフサイクル全体:

[ スマホが 8 文字のランダムなコードを生成 ]
   ↓
[ スマホがコードと sessionId を Firestore の pc_connections ドキュメントに書き込み ]
   ↓
[ スマホが画面にコードを表示 ]
   ↓
[ ユーザーがコードを読み、Companion の入力欄に入力 ]
   ↓
[ Companion がコードに一致する待機中セッションを Firestore に照会 ]
   ↓
[ 両側が SHA-256(コード, sessionId) から暗号鍵を導出 ]
   ↓
[ コードは両側のメモリ内にとどまり、どちらも Firestore には書き込まない ]
   ↓
[ 切断・再ペアリングで両側からコードを消去 ]

暗号化

AES-256-GCM (コマンドの機密性 + 完全性)

ネットワーク経由で送信されるすべてのコマンドは、認証暗号化モードである AES-256-GCM で暗号化されます。

HMAC-SHA256 (コマンドの信頼性)

すべてのコマンドには HMAC 署名も含まれるため、ペアリング コードを知らない携帯電話は、たとえ Firestore に書き込むことができたとしてもコマンドを挿入できません。

脅威モデル

脅威ステータス注意事項
ローカルネットワーク上の盗聴者緩和された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 が明示的に防御しないもの:

開示