![](https://help.apple.com/assets/6537FB06A074DBB5E802EA07/6537FB31280588A5490B6E1D/ja_JP/52d714626638d3391623c853be0c593b.png)
iOSおよびiPadOSのアプリコード署名プロセス
iOSおよびiPadOSでは、必須のコード署名、厳密なデベロッパによるサインインなどによってアプリのセキュリティが提供されています。
必須のコード署名
iOSまたはiPadOSのカーネルが起動すると、どのユーザプロセスとアプリの実行を許可するかをカーネルが制御します。すべてのアプリが既知の承認済みのソースから提供されており、改ざんされていないことを保証するため、iOSおよびiPadOSでは、すべての実行コードに対して、Apple発行の証明書を使用した署名を要求しています。「メール」やSafariといったデバイスに付属するアプリは、Appleによって署名されています。他社製アプリも、Apple発行の証明書を使用して検証および署名される必要があります。こうしたコード署名を必須とすることで、信頼チェーンの概念をオペレーティングシステムのみならずアプリにまで適用することができ、他社製アプリによって未署名のコードリソースが読み込まれたり、自己書き換えコードが使用されたりするのを防ぐことができます。
デベロッパがアプリに署名する方法
デベロッパは(Apple Developer Programを通じた)証明書の検証を通じてアプリに署名することができます。フレームワークをアプリに埋め込み、そのコードを(チーム識別文字列を通じて)Appleが発行した証明書で検証することができます。
証明書の検証: アプリを開発してiPhoneまたはiPadにインストールするには、デベロッパはAppleに登録し、Apple Developer Programに参加する必要があります。個人または企業のいずれの場合でも、Appleがデベロッパの身元確認を行ったあとに証明書が発行されます。この証明書によって、デベロッパはアプリに署名し、アプリをApp Storeに提出して配信できるようになります。したがって、App Storeにあるすべてのアプリは、身元を確認できる個人または組織によって提出されたものであり、これは悪意のあるアプリ開発に対する抑止力にもなります。また、Appleは、アプリが通常説明の通りに動作し、明らかなバグや何らかの目立つ問題が含まれていないことを確認するための審査も行います。前述のセキュリティ技術に加え、このような選別プロセスを実施することで、ユーザはアプリの品質について懸念することなく安心して購入できるようになります。
コード署名の検証: iOSおよびiPadOSでは、デベロッパがアプリ内にフレームワークを埋め込み、そのフレームワークをアプリ自体またはアプリに埋め込まれた機能拡張で使用することが可能です。システムやその他のアプリがそのアドレス空間内に第三者のコードを読み込むことを防止するため、プロセスがリンクするすべてのダイナミックライブラリについて、起動時にコード署名の検証が実行されます。この検証は、Apple発行の証明書から抽出されるチーム識別情報(チームID)を使って実施されます。チーム識別情報は、英数字10文字(例: 1A2B3C4D5F)で構成されます。プログラムは、システムに付属のプラットフォームライブラリや、コード署名内にメインの実行可能ファイルと同じチーム識別情報を持つライブラリにリンクできます。システムの一部として付属する実行可能ファイルにはチーム識別情報がないため、システム自体に付属するライブラリにのみリンクできます。
独自の社内アプリの検証
適格な企業は組織内で使用するための独自の社内アプリを開発して、従業員に配付することができます。企業や組織はApple Developer Enterprise Program(ADEP)に申請できます。詳しい情報や資格の要件を確認するには、Apple Developer Enterprise ProgramのWebサイトを参照してください。組織がADEPに登録されると、承認したデバイスで独自の社内アプリの実行を許可するプロビジョニングプロファイルを登録して取得できます。
ユーザがこれらのアプリを実行するには、プロビジョニングプロファイルをインストールする必要があります。このため、組織が意図したユーザしか、組織のアプリをiPhoneやiPadに読み込めません。モバイルデバイス管理(MDM)でインストールされたアプリは、組織とデバイス間の信頼関係がすでに確立されているため、暗黙的に信頼されます。それ以外のアプリについては、ユーザが「設定」でアプリのプロビジョニングプロファイルを承認する必要があります。組織は、不明なデベロッパのアプリをユーザが承認しないように制限することもできます。どの独自の社内アプリでも、初回起動時に、アプリの実行を許可するというAppleからの許諾をデバイスで受信する必要があります。