トンネルは暗号化され、プライバシーページはログを取らないと説明しているのに、アプリはどの画面を開いたかを報告する診断ライブラリを今も同梱している。これらは別々のポリシーを持つ別々のデータフローだ。接続ログはトンネルがどこへ向かったかを記録し、分析イベントはアプリをどう使ったかを記録する。一方を読んで他方もカバーしていると考えるのは、この設定が招く典型的な誤解だ。

切り替えが通常制御するもの

多くのクライアントは、サービスが運用に欠かせない処理と任意の報告を分けている。切り替えは通常、クラッシュレポート、利用イベント、パフォーマンス測定を制御し、認証、課金、不正利用防止はその位置に関係なく続く。

クラッシュレポートにはスタックトレース、端末モデル、OSバージョン、アプリバージョンが含まれる。利用イベントは画面と機能を記録し、時には所要時間も含む。パフォーマンスイベントは接続時間、プロトコルの選択、エラーコードを記録する。サポート診断は第四のカテゴリで、通常は手動で起動し、ログと設定をまとめられる。

送信元は常にアイコンのブランドとは限らない。アプリに組み込まれたSDKが独自のエンドポイントへ送ることも、クラッシュサービスが別会社であることもある。だからこそ通知の受信者一覧は、切り替えのラベルと同じくらい重要だ。

レポートを識別可能にする項目

カテゴリだけではプライバシーの問いに決着はつかない。決めるのはイベントに付随する識別子だ。無害に見えるレポートも、同じインストールIDが毎行に現れれば履歴になる。

Report typeTypical fieldsWhy it can identify
CrashStack trace, device model, OS, app version, install IDThe install ID links crashes over months
UsageScreen names, feature events, session lengthBuilds a behavior profile even without content
PerformanceConnect duration, protocol, error codeNetwork conditions can fingerprint a connection
Support bundleLogs, configuration, sometimes addressesMay contain endpoints and timestamps you did not intend to share

アカウントとの紐付けは最も強い結合キーだ。端末の履歴を人の履歴に変えてしまうからである。IPアドレスは、レポートに名前がなくても多くの法域で個人データであり、安定した識別子は一部のプラットフォームでは再インストールを生き延びる。

生の識別子が送信者側に残っているなら、集計は匿名化ではない。通知が匿名の統計をうたう場合は、その方法を探す。何をどの段階で捨てるのか、受信者がイベントを再結合できるのか。

誰がレポートを受け取るか

ブランドではなく受信者をたどる。アプリの開発者がエンドポイントを運営する場合もあれば、ブランドを別の事業者にライセンスする場合もある。分析ベンダーとクラッシュサービスは追加の当事者だ。プライバシー通知はこれらの役割と、それぞれが受け取るカテゴリを示すべきである。Mozillaのサブスクリプションのプライバシー通知は、アカウントデータを技術カテゴリや診断カテゴリから分けており、探すべきはまさにこの種の切り分けだ。

保存期間は各段階で定められる。開発者はイベントを短く保持し、分析ベンダーは自社ポリシーでより長く保持し、メールで送ったサポートバンドルはその両方より長く残りうる。データを集めたのは誰かだけでなく、誰が保持しているかを尋ねよう。

国境を越える転送も同じ検討に入る。別地域の診断エンドポイントは、トンネルの暗号化が影響しない転送を生む。レポートがそもそもトンネルを通っていないからだ。

オフにすると何ができて何ができないか

切り替えをオフにすると、今後の任意のレポートは止まる。すでに送られたレポートを取り戻すことはなく、受信者から削除もしない。削除はプロバイダーのデータ処理における別個の請求である、そして端末の設定ではなくアカウント識別子が必要になることがある。

必須の処理も続く。サインイン、サブスクリプションの更新、不正検知、サービスの健全性は別の根拠で記録されうるし、OSにはアプリの切り替えが制御したことのない独自のクラッシュ・分析機能がある。目的が端末の診断を止めることなら、OSレベルの設定を確認しよう。

トラブルシューティングでは、この設定を意図的に使い、診断を有効にして不具合を再現し、バンドルを集め、その後で報告を無効にしてチケットが閉じたらバンドルを削除する。手動の添付ファイルは自動のものと同じ検討に値する、ログファイルは分析イベントがかつて含んだ以上のものを含みうるからだ。

通知と端末から出ていくものを比べる

内容を復号せずに宛先を見ることはでき、macOSとLinuxでは、接続一覧がクライアントの通信先のリモートアドレスを示す。

sudo lsof -i -P -n | grep -i vpnclient
ss -tup | grep -i vpnclient

TLSはペイロードを隠すので、出力が証明するのは宛先とおおよその時刻であり、中身の項目ではない。それでも主張を確かめるには十分だ。通知が分析の受信者を一つ挙げているのに、アプリが一覧にないドメインとも通信しているなら、ポリシーを鵜呑みにする前に確認しよう。

受け入れるカテゴリ、それに付随する識別子、それを保持する受信者を書き留める。この短い記録は、アプリがSDKを更新したりプロバイダーが所有者を変えたりするときに、頭の中のメモより役立つ。

関連記事