AppleがiPhoneでサイドロードされたアプリを検出する仕組み
Appleは、iOSデバイス上でサイドロードされたアプリを識別・管理するために、いくつかの仕組みを開発しています。これらの検出システムがどのように機能するかを理解することで、どのサイドロード方法を使うべきか、そしてインストールしたアプリへの影響を最小限に抑える方法について、より賢い判断ができるようになります。このガイドでは、Appleの検出の仕組みを分かりやすく解説します。
アプリ検証の核心:コード署名
iOS上のすべてのアプリは、暗号化による署名が必要です。署名によって、そのアプリが特定の発行元から提供されたものであり、署名後に改ざんされていないことが証明されます。この仕組みにおいて、Appleは信頼の起点として機能しており、最終的にすべての有効なiOSアプリの署名証明書は、Appleにまでさかのぼることができます。
iPhoneでアプリを起動すると、iOSは署名を検証します。証明書が無効、期限切れ、または失効している場合、アプリは起動しません。これが、AppleがどのアプリをiOS上で動作させるかを管理するための基本的な仕組みです。
証明書の種類とAppleによる監視方法
Developer証明書
どのApple IDでも、XcodeなどのツールでアプリをPersonal Use用に署名できます。無料アカウントは、7日間有効な署名で最大3つのアクティブなアプリに制限されていますが、有料のApple Developerアカウント(年間$99)では、年間最大100台(各デバイス種別ごと)のデバイスを登録できます。これらの証明書はあなたのアカウントに紐づいており、Appleはそのアカウントに登録されたアプリIDやデバイスを把握しています。
Enterprise証明書
Apple Developer Enterprise Program(年間$299)は、企業内でのアプリ配布を目的とした証明書を発行します。これらはより強力で、組織内の無制限のデバイスへの配布が可能です。多くのサイドローディングサービスが行っているように、これらを一般公開のために使用すると、Appleのエンタープライズプログラムの規約に違反することになり、Appleは不正使用を検知した証明書を失効させます。
Appleは判断基準を公開していませんが、不正使用を示す兆候には以下が含まれます。
- 無関係な多数のデバイスへの配布
- 従業員ではなく一般の人々へのアプリ配布
- 一般的な企業導入のパターンと一致しない高いインストール速度
Appleが不正使用を検知すると証明書を失効させ、各デバイスが証明書のステータスを確認した時点で、その証明書で署名されたすべてのアプリが使用できなくなります。これは、すでにアプリをインストール済みのデバイスでも同様です。これが、サイドローディングツールで証明書の失効が定期的に発生する理由です。証明書失効問題の素早い対処法について詳しくはこちらをご覧ください。
デバイスのレポートとテレメトリー
Appleは、ユーザーが同意したデバイスから診断データと使用状況データを収集しています(この設定が実際にどこまで守られているかについては、一部の研究者が疑問を呈しています)。このテレメトリーには理論上、アプリのインストールやクラッシュに関する情報が含まれる可能性がありますが、Appleはサイドローディングに関連してどのようなデータを収集しているかを具体的に公表していません。
これが気になる場合は、「設定」→「プライバシーとセキュリティ」→「分析と改善」で分析データの共有を無効にすることで、デバイスからAppleへ送られる情報を減らすことができます。
アプリの公証と、管理されたサイドローディングへの移行
EUでは、Appleはデジタル市場法(DMA)に基づき、サードパーティ製アプリストアを許可することが義務付けられています。Appleの実装では「公証(notarization)」というシステムが採用されており、代替マーケットプレイスを通じて配布される前であっても、アプリは自動チェックと人によるレビューを組み合わせた基本的な審査のためにAppleへ提出する必要があります。
つまり、EU内でサードパーティ製ストアを通じて配布されるアプリについても、Appleは依然として把握できる状態にあるということです。公証を受けていないアプリは、EUの公式な代替マーケットプレイスの経路を通じて配布することができません。
Appleが証明書を特定して失効させる仕組み
Appleは不正使用された証明書をどのように見つけているかを公表していません。考えられる方法は以下の通りです。
自動検出
Appleは、異常に高い配布量を示す証明書や、企業内配布のパターンに一致しないデバイスへの配布を検出するため、自動化されたシステムを利用していると考えられます。
ユーザーからの報告
ユーザーはアプリをAppleに報告できます。特定の証明書に関連付けられたアプリについて多数の報告が寄せられると、その証明書は注目されることになります。
潜入ダウンロード
Appleは、証明書の不正利用やポリシー違反を特定するため、一般に配布されているサイドロードアプリを調査していると考えられます。
法的措置
繰り返しや悪質な違反者に対して、Appleはデベロッパーアカウントを停止し、証明書を失効させてきました。
アプリが失効した場合に起こること
インストール済みのアプリが依存している証明書をAppleが失効させると、次のようなことが起こります。
- デバイスが証明書を確認した時点で、アプリが起動しなくなります
- 「App を検証できません」または「使用できません」というメッセージが表示されます
- アプリを削除しない限り、アプリのコンテナに保存されたデータには影響しません
- 再びアプリを使用するには、有効な証明書で再インストールする必要があります
これは不便ではありますが、致命的な問題ではありません。解決方法については、「App を検証できません」エラーの対処方法のガイドをご覧ください。
失効の影響を最小限に抑える方法
失効はApple側で行われるため完全に防ぐことはできませんが、その影響は最小限に抑えることができます。
- 失効が発生した際に証明書をすばやく切り替えるサイドロードツールを使用する
- サイドロードアプリ自体を常に最新の状態に保つ:アップデートには新しい証明書が含まれることが多いです
- よく使うアプリのデータはバックアップしておく
- 大規模な失効の影響を受けにくい署名方法を使用する(個人デベロッパーアカウントは影響を受けるユーザー数が少なくなります)
より大きな視点から
Appleの検出・失効システムは完璧ではありませんが、Scarlet iOSのようなエンタープライズ署名のツールでは今後も失効は起こり続けますし、停止がどのくらい続くかもその都度異なります。App Store以外のアプリにアクセスできることとのトレードオフとして妥当かどうかは、ご自身の判断次第です。
失効が最初に報告されるのは、たいていサイドローディング関連のコミュニティです。アプリが突然開かなくなった際には、チェックしてみる価値があります。Scarlet iOSガイドでは、よくある対処法を紹介しています。