インストーラーはまずネットワークアクセスを求め、次に連絡先、アクセシビリティ、証明書のインストールを求めます。この作業に属するのは最初の要求だけです。本当の判断は二番目の画面にあります。

選んだ機能と、使っているプラットフォームに照らして各要求を判断してください。すべてのVPN製品を網羅する普遍的な許可リストは存在せず、長いリスト自体は何も証明しません。

この作業が本当に必要とする唯一の許可

Androidはトンネルが始まる前にシステムダイアログでVPNサービスを承認するようユーザーに求め、アプリのサービスはシステムが接続できるようBIND_VPN_SERVICEを宣言します。運用上はアプリがルーティングを担います。同意は端末を持つ人から、アプリ名を示すダイアログで得られ、後から取り消すこともサポートされています。

Appleのプラットフォームは、許可画面ではなくネットワーク拡張とインストール承認で同じ考えを表します。Windowsは仮想アダプタードライバーと権限昇格のプロンプトを使います。形は二つ、意味は一つ:このプログラムはパケットを扱ってよい、ということです。その承認に、アドレス帳を読むことや自前の証明書機関を発行することは含まれません。

追加のアクセスは別個の効果を持つ別個の許可です。それを求めるルーティングクライアントには、独自の理由が必要です。

追加の要求に独自の説明が必要な場面

アクセシビリティサービスは画面の内容を読み取りユーザーの代わりに操作できますが、これはルーティングをはるかに超えています。デバイス管理はロックポリシーを強制し、データを消去できます。ユーザーがインストールしたルート証明書があれば、対応する鍵を持つ者は、TLSが本来保護する通信を読めます。

いずれも正当な場合があります。管理対象デバイス向け製品やペアレンタルコントロールにはポリシー権限が必要なことがあり、サポートツールが設定を案内するためにアクセシビリティを必要とすることもあります。

要件は追跡可能性であり、要求は名前のある機能を指し、その機能はインストールした製品で確認できます。連絡先向けの画面がない連絡先要求には、説明する材料がありません。暗号化の論法も当てはまりません、パケットを守ることは、友人が誰かということには何も語らないからです。正当な製品でも同梱ライブラリを通じて過剰に要求することがあり、それは報告すべき欠陷であって、通報すべき犯罪ではありません。

要求と対応する機能を記録してから判断します。そのメモは、拒否後に機能が壊れたときにサポートへ見せるものでもあります。

端末で要求を読む

ストアの掲載情報は意図を、インストール済みパッケージは現実を表します。他の何かを承認する前に、何が宣言され何が付与されたかをパッケージマネージャーに尋ねてください。掲載情報とマニフェストが食い違うとき、この対が最も重要になります。

二つのクエリで大半を網羅できます:

adb shell dumpsys package com.example.vpn | grep -E "requested permissions|install permissions" -A 30
adb shell cmd appops get com.example.vpn

一つ目は宣言された許可と付与された許可を並べ、マニフェストが広すぎることを明らかにするのはこの比較です。二つ目は実行時のアプリ操作を示し、通常の許可としては決して現れない特別なアクセスも含みます。開発者向けツールがない場合は、プラットフォームの設定画面から同じ事実を読み取ってください。

これらの画面は一分で済み、ソフトウェアも不要です。アクセシビリティ、デバイス管理、証明書ストレージのそれぞれが、許可を持つアプリを一覧表示します。

判断し、それから被害を抑える

選んだクライアントにネットワーク許可を与え、追加の要求はそれぞれ別の判断として扱います。対応する機能のないものは拒否し、何が壊れるかを見ます。連絡先へのアクセスを拒否されたときに失敗するルーティングクライアントは、ユーザーの代わりに連絡先を求めていたわけではありません。

一つの許可を取り消すと、通常はアプリをアンインストールせず、各プロファイルを解体せずに、一つの機能だけが無効になります。その後で再接続し、トンネルが今も確立することを確認してください。

一つの要求が混同しがちな二つの問い、つまりこのプログラムが端末上で何をしてよいかと、トンネルが上がった後にその運営者が通信をどう扱うかを分けてください。前者はここで答えます。後者には保持ポリシーが必要で、ダイアログが提供するものではありません。

関連記事