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이 생성한 DRM 기술로, 오디오 및 비디오 콘텐츠를 무권한 사용으로부터 보호하기 위해 iOS, tvOS, iPadOS 및 macOS 운영체제에 통합되어 있습니다. 초기에는 iTunes와 iPod을 위해 개발되었지만, FairPlay Streaming 프로토콜을 통해 스트리밍 콘텐츠 보호 시스템으로 진화했습니다.

다른 DRM 해결책과 달리, FairPlay는 Apple 기기의 하드웨어 아키텍처에 완전히 통합되어 있습니다. 복호화 키는 Secure Enclave에 저장됩니다. Secure Enclave는 주요 OS에서 분리된 보호된 보조 프로세서로, 키 추출이 실제로 불가능합니다.

FairPlay의 진화

FairPlay의 역사는 2003년 iTunes Store로부터 시작되었습니다. 고유 M4P 포맷으로 AAC 파일 압호화가 적용되었습니다. 2009년 Apple은 FairPlay Streaming을 발표했습니다. HLS 기반 스트리밍 비디오 보호 프로토콜로, 후에 Apple TV와 iOS 앱에 필수가 되었습니다.

iOS 10 및 tvOS 10부터, Apple은 AVFoundation 프레임워크를 통해 제3자 개발자에게 FairPlay Streaming을 개방했습니다. 오늘날 Netflix, Amazon Prime Video, Disney+는 Dolby Vision을 포함한 4K 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는 Apple 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 레벨의 소프트웨어 방법으로는 회피할 수 없습니다. 키 추출이나 라이선스 파라미터 변경은 하드웨어 보호에 의해 막혀집니다.

다른 DRM과의 FairPlay 비교

파라미터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 프로젝트 번들에 추가되고 빌드 시 서명됩니다.

Android에서 FairPlay를 사용할 수 있나요?

아니요, FairPlay는 Android에서 사용할 수 없습니다. Apple의 고유 기술로 A-시리즈 및 M-시리즈 침의 Secure Enclave 하드웨어 아키텍처에 종속되어 있습니다. Android 기기는 Google의 Widevine DRM을 사용합니다.

FairPlay와 FairPlay Streaming의 차이점은?

FairPlay는 Apple DRM 기술의 일반적인 이름이고, FairPlay Streaming(FPS)은 HLS 스트림을 보호하는 구체적인 프로토콜입니다. FPS는 AVContentKeySession을 통해 비디오 세그먼트를 압호화하고 라이선스를 관리하는 데 FairPlay 메커니즘을 사용합니다.

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 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기