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 版よりも洗練されていません。

Sources