FairPlay — AppleのDRMとは何か、仕組みと原理

著者: IT Sectr 公開日: 2026-05-24 読了時間: 8 分

FairPlayは、iOS、tvOS、macOSエコシステムで動画コンテンツを保護するためにAppleが開発した独自DRM技術です。このシステムはSecure Enclaveとハードウェア暗号化を使用してキーを安全に保管し、ストリーミングサービスが4K HDR品質でコンテンツを提供できるようにします。Apple Developerドキュメント(2025)によると、FairPlay StreamingはA8チップ以降のすべてのAppleデバイスでサポートされています。

まとめ

  • FairPlay — iOS、tvOS、macOSアプリで動画を保護するAppleのDRMソリューション。
  • Secure Enclaveがチップレベルで暗号化キーをハードウェア保管します。
  • FairPlay Streaming(FPS) — HLSストリームをリアルタイムで保護するプロトコル。
  • SCM(Server Certificate Module) — ライセンスサーバーの信頼性を検証するモジュール。
  • 統合にはApple Developerプログラムへの登録とFPS証明書の取得が必要です。

FairPlayとは?

FairPlayは、オーディオおよび動画コンテンツを不正利用から保護するためにAppleが作成し、iOS、tvOS、iPadOS、macOSオペレーティングシステムに組み込まれたDRM技術です。最初はiTunesとiPodのために開発されましたが、FairPlay Streamingプロトコルを通じてストリーミングコンテンツ保護システムへと進化しました。

他のDRMソリューションとは異なり、FairPlayはAppleデバイスのハードウェアアーキテクチャに完全に統合されています。暗号化キーはSecure Enclaveに保管されます。これはメインOSから分離された保護されたコプロセッサーであり、ジェイルブレイクしてもキーの抽出を事実上不可能にしています。

FairPlayの歴史

FairPlayの歴史は2003年のiTunes Storeから始まりました。ここでは独自M4PフォーマットでAACファイルの暗号化が行われていました。2009年、AppleはFairPlay Streamingを発表しました。これはHLSベースのストリーミング動画保護プロトコルであり、後にApple TVとiOSアプリに必須となりました。

iOS 10およびtvOS 10以降、AppleはAVFoundationフレームワークを通じてサードパーティー開発者にFairPlay Streamingを開放しました。今日では、Netflix、Amazon Prime Video、Disney+がDolby Vision付98K HDR解像度でAppleデバイス上のコンテンツ保護にFairPlayを使用しています。

FairPlay DRMの仕組みは?

FairPlayの仕組みは3つのフェーズから成ります:コンテンツのパッケージ化、CDNを通じた配信、デバイス上での暗号解出し。パッケージ化フェーズでは、動画はAES-128またはAES-256を使用して暗号化され、暗号化キーはKey Envelope機構を通じて特定のデバイスに結び付けられます。

コンテンツをリクエストすると、プレーヤーくAVContentKeySessionを通じてFairPlayセッションを開始し、コンテンツプロバイダーのライセンスサーバーにリクエストを送信します。サーバーはアクセス権を検証し、デバイス証明書の公開鍵で暗号化された暗号解出キーを返します。

ライセンス取得プロセス

クライアントはAVContentKeySessionのインスタンスを作成し、コンテンツトラックを追加します。システムはデバイス識別子とAppleが署名したアプリケーション証明書を含むSPC(Server Playback Context)リクエストを生成します。このリクエストはHTTPSを通じてライセンスサーバーに送信されます。

ライセンスサーバーはSPCを検証し、データベースからコンテンツキーを取得し、デバイスの公開鍵で暗号化してCKC(Content Key Context)を形成します。CKCはクライアントに戻され、AVContentKeySessionがSecure Enclaveの秘密鍵を使用して暗号を解出します。

FairPlay Streamingの仕組み

swift
let contentKeySession = AVContentKeySession(keySystem: .fairPlayStreaming)
contentKeySession.setDelegate(self, queue: .main)

let asset = AVURLAsset(url: streamURL)
asset.resourceLoader.setDelegate(self, queue: .main)
contentKeySession.addContentKeyRecipient(asset)

let playerItem = AVPlayerItem(asset: asset)
let player = AVPlayer(playerItem: playerItem)

FairPlayの主なコンポーネント

FairPlayアーキテクチャは、アプリケーション証明書、Key Envelope、Secure Enclave、コンテンツ暗号解出モジュールのいくつかの互いに関連するコンポーネントを含みます。各コンポーネントはサーバーからユーザーの画面までの保護チェーンで自分の役割を果たします。

コンポーネント機能実行場所
アプリケーション証明書ライセンスサーバーに対してアプリを識別するアプリバンドルに保管
SPCServer Playback Context — ライセンスリクエストAVContentKeySessionにより生成
CKCContent Key Context — キーを含む応答Secure Enclaveで処理
Secure Enclaveハードウェアキー保管と暗号解出SoC上のハードウェアコプロセッサー
Key Envelopeライセンスメタデータ付きキーコンテナライセンスサーバーにより生成

FairPlayアプリケーション証明書

FairPlayを使用するには、開発者はApple Developerプログラムを通じてAppleからFPS証明書を取得する必要があります。証明書には非対称ペアの公開鍵が含まれ、秘密鍵部分はSecure EnclaveがCKCを暗号解出するために使用されます。

アプリケーション証明書はプロジェクトバンドルに追加され、Xcodeによりビルド時に自動的に署名されます。保護されたコンテンツを初めて再生すると、システムが証明書の有効性を確認し、ライセンスをリクエストします。

Secure Enclaveとハードウェア保護

Secure Enclaveは、アプルAシリーズおよびMシリーズチップ上の専用コプロセッサーであり、完全にアイソレートされたL4 OS上で動作します。秘密鍵の生成と保管、CKCの暗号解出、動画暗号解出モジュールへのコンテンツキーの渡しを担当します。

すべての暗号操作はSecure Enclave内で実行され、キーが保護領域を外に出ることはありません。Secure Enclaveと主プロセッサー間のデータバスへのサイドチャネル攻撃は、ハードウェア整合性モニタリングによってブロックされます。

iOS・ tvOSへのFairPlay統合

FairPlayの統合はAVFoundationを通じて行い、AVContentKeySessionDelegateおよびAVAssetResourceLoaderDelegateプロトコルの実装が必要です。開発者は4つの主なイベントを処理する必要があります:SPCの受信、サーバーへの送信、CKCの受信、プレーヤーへの渡しです。

AVContentKeySessionデリゲートの実装

swift
func contentKeySession(
    _ session: AVContentKeySession,
    didProvide keyRequest: AVContentKeyRequest
) {
    guard let identifier = keyRequest.identifier
    else { return }

    let spc: Data = keyRequest.makeStreamingContentKeyRequestData(
        appCertificate: certificate,
        contentIdentifier: identifier,
        options: nil
    )

    licenseService.requestCKC(spc) { ckc in
        keyRequest.processContentKeyResponse(
            AVContentKeyResponse(fairPlayStreamingKeyResponseData: ckc)
        )
    }
}

証明書とコンテンツ識別子の準備

再生開始前に、バンドルからアプリケーション証明書を読み込み、コンテンツ識別子(通常はストリームURLまたは映画ID)を準備する必要があります。証明書はコンテンツ貸与期間中有効である必要があります。そうでないと、ライセンスは失敗します。

コンテンツ識別子はSPC形成フェーズでライセンシングシステムに渡されます。ライセンスサーバーはこの識別子を使用して対応するキーと再生ポリシーを検索します。これには時間制限やデバイス制限が含まれます。

ライセンスエラーの処理

ライセンス処理中にエラーが発生する可能性があります:証明書の期限切れ、無効なコンテンツ識別子、ユーザーにアクセス権がないなど。FairPlayエラーはcontentKeySession:didFailWithErrorデリゲートを通じて返され、適切なUIを表示して処理する必要があります。

主なエラーコードには、サブスクリプションがない場合のFP_NO_ENTITLEMENTやネットワーク問題のFP_REQUEST_TIMEOUTがあります。一時的なネットワーク障害に対しては、指数的な待ち時間を伴う再トライアルロジックの実装が推奨されます。

FairPlay Streamingとライセンシング

FairPlay Streamingは、セグメント暗号化と有効期限定のキー機構を使用するHLSベースのストリーミング動画保護プロトコルです。コンテンツプロバイダーは独自のライセンスサーバーを展開し、ユーザー認証システムと統合します。

ライセンスサーバーはクライアントからSPCリクエストを受け取り、デバイスとコンテンツの識別子を抽出し、バックエンドでユーザーの権限を確認し、CKC応答を生成します。コンテンツキーはFPS証明書からのデバイスの公開鍵で暗号化されます。

FairPlayライセンスポリシー

FairPlayライセンスには時間制限(48時間の貸与)、デバイス制限(最大5デバイス)、再生品質制限(ベーシックプランでは1080pまで)を含めることができます。ポリシーはサーバー側で設定され、Key Envelopeにパッケージ化されます。

FairPlayポリシーはSecure Enclaveレベルで適用され、OSレベルのソフトウェア方法では回避できません。ジェイルブレイクしても、ハードウェア保護によりキーの抽出やライセンスパラメーターの変更を防げます。

FairPlayと他のDRMの比較

パラメータFairPlayWidevinePlayReady
エコシステムApple (iOS, tvOS, macOS)Google (Android, Chrome)Microsoft (Windows, Xbox)
最高品質4K HDR Dolby Vision4K UHD4K UHD
ハードウェア保護Secure EnclaveTEETPM + TEE
開発者への要件Apple FPS証明書不要Microsoftライセンス

異なるiOSバージョンでのFairPlayの特徴

FairPlay Streamingのサポートは、OSバージョンとデバイスタイプに依存します。iOS 10およびtvOS 10以降、AVContentKeySession APIはすべてのアプリで利用可能ですが、Secure Enclaveを通じたハードウェア加速が必要なのは4K HDR品質のコンテンツだけです。A8–A10チップのデバイスでは、最高1080pまでです。

iOS 14で、Appleは複数のFairPlayセッションをサポートし、アプリが一度に複数の保護ストリームを再生できるようになりました。例えば、異なるライセンスでの画面再生です。iOS 15では、長時間見るためのバックグラウンドキー更新サポートを追加してプロトコルを拡張しました。

マルチDRMアーキテクチャでのFairPlay

クロスプラットフォームのストリーミングサービスでは、FairPlayはWidevineやPlayReadyと並びてマルチDRMアーキテクチャの一部として使用されます。ライセンスアグリゲーター(AxinomやEZDRMなど)は、リクエストをFairPlay用SPCフォーマットやWidevine用MediaDrmフォーマットに変換する統一APIを提供し、すべてのプラットフォームでの統合を簡素化します。

よくある質問

iOSでのFairPlay DRMとは?

FairPlayは、動画コンテンツを保護するために、AppleがiOS、tvOS、macOSに組み込んだDRM技術です。Appleデバイス上で暗号解出キーを安全に転送するために、Secure EnclaveとFairPlay Streamingプロトコルを通じたハードウェア暗号化を使用します。

FairPlay Streaming証明書の取得方法は?

FPS証明書を取得するには、Apple Developerプログラムに登録し、Certificates, Identifiers & Profilesセクションで証明書を作成し、DER形式でダウンロードする必要があります。証明書はXcodeプロジェクトバンドルに追加され、ビルド時に署名されます。

FairPlayをAndroidで使用できますか?

いいえ、FairPlayはAndroidでは利用できません。Appleの独自技術であり、AシリーズおよびMシリーズチップのSecure Enclaveハードウェアアーキテクチャに結び付けられています。AndroidデバイスはGoogleのWidevine DRMを使用します。

FairPlayとFairPlay Streamingの違いは?

FairPlayはAppleのDRM技術の総称であり、FairPlay Streaming(FPS)はHLSストリームを保護するための特定のプロトコルです。FPSはFairPlayの機構を使用して動画セグメントを暗号化し、AVContentKeySessionを通じてライセンスを管理します。

FairPlayライセンスにはどんな制限がありますか?

FairPlayライセンスは、視聴時間、最高動画品質(720p、1080p、4K)、デバイス数、キーの有効期限に制限を設けることができます。すべてのポリシーはSecure Enclaveのハードウェアレベルで実行され、回避できません。

まとめ

  • FairPlay — HLSに対するSecure EnclaveとFairPlay Streamingプロトコルによるハードウェア保護付きApple独自のDRM。
  • SPCとCKC — プロトコルの主なメッセージ:クライアントからのライセンスリクエストとサーバーからのキー付き応答。
  • FPS証明書は開発者に必須で、Apple Developerプログラムを通じて取得します。
  • 統合はAVFoundationのAVContentKeySessionとAVAssetResourceLoaderDelegateを通じて行います。
  • Secure Enclaveがハードウェアレベルでキーのアイソレーション保管と処理を提供します。
  • ライセンス制限には時間、品質、デバイス数が含まれます。
  • マルチDRMアプローチ(FairPlay、Widevine、PlayReady)はクロスプラットフォームのストリーミングアプリに必要です。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください