Loupe: iOS デバイスフィンガープリントの表面を可視化する
Loupe は、ネイティブアプリケーションが利用可能なデバイスフィンガープリントの表面を実証するために設計された、オープンソースの iOS および iPadOS アプリケーションです。サードパーティ製アプリが利用可能なものと同じ公開 iOS API から実際の値を取得することで、Loupe は、名前やメールアドレスのような明示的な識別子を必要とせずに、アプリが異なるプラットフォーム間でユーザーを認識し追跡するために収集できる生データを明らかにします。
デバイスフィンガープリントのメカニズム
デバイスフィンガープリントは、アプリがさまざまな非一意的なデータポイントを収集して、デバイスのユニークな識別子を作成するときに発生します。個々の読み取り値はそれ自体では一意ではないかもしれませんが、これらのシグナルの組み合わせが、トラッカーが異なるアプリやウェブサイトにわたってユーザーを特定することを可能にする高エントロピーなフィンガープリントを作成します。
Loupe におけるデータアクセス階層
Loupe は、収集するデータを、アクセスの「コスト」とオペレーティングシステムによって要求される権限レベルに基づいて、3 つの階層に整理しています。 \n### 受動的シグナル
受動的シグナルは、システムのプロンプトをトリガーすることなく、あらゆるアプリケーションから閲覧可能です。これには以下が含まれます:
- Locale 設定
- Time zone
- Screen 仕様
- Battery 状態
- およびその他の一般的なデバイスメタデータ
権限ベースのシグナル
これらの読み取り値は標準的な iOS の権限プロンプトをトリガーし、ユーザーに特定のデータカテゴリへのアクセスを明示的に許可することを要求します。例:
- Contacts
- Photos
- Location
- Calendars
高度なシグナル
高度なシグナルには、情報を収集するために公開 API を使用したサイドチャネル手法の使用が含まれます。例:
- URL-scheme probing:
canOpenURLを使用して、デバイスに他のどのアプリがインストールされているかを検出します。 - Keychain persistence: Keychain を利用して、アプリが削除および再インストールされた後でも保持されるデータを保存します。
プライバシーと開発
Loupe はプライバシー第一のアプローチで構築されています。ユーザーが明示的にエクスポートしない限り、アプリによって読み取られたデータがデバイスを離れることはありません。すべての値は、集計やハッシュ化なしの生データとして表示され、外部サーバーにアップロードまたは同期されることはありません。
特筆すべき点として、このプロジェクトはほぼ完全に AI コーディングツールを使用して開発されました。ソースコードは MIT License の下でリリースされていますが、ブランディング、ロゴ、およびデザインファイルは Mysk の所有物です。
ビルドのための技術要件
ソースから Loupe をビルドしたい開発者は、以下の要件が必要です:
- Xcode 26 またはそれ以降。
- 有効な
DEVELOPMENT_TEAMとバンドル識別子を含むローカルのSigning.local.xcconfigファイルの設定。
Loupe は macOS もサポートしていますが、Mac 版は現在 iOS 版よりも洗練されていません。