Widevine은 모바일 기기, Smart TV 및 웹 플랫폼에서 비디오 콘텐츠를 무단 복사로부터 보호하기 위해 Google이 개발한 DRM 기술입니다. 콘텐츠 암호화는 전 세계 40억 대의 기기에서 지원되는 CDM 모듈을 통해 수행됩니다. Widevine 기술은 Android, iOS, Chrome 및 Smart TV와의 호환성을 보장하여 스트리밍 서비스가 모든 플랫폼에서 프리미엄 콘텐츠를 보호할 수 있도록 합니다.
주요 포인트
Widevine은 2010년 Google이 인수한 독점 DRM 기술로, Android 생태계에서 비디오 콘텐츠 보호의 사실상 표준이 되었습니다. Netflix, Amazon Prime Video, Disney+, Hulu를 포함한 주요 스트리밍 서비스에서 콘텐츠의 무단 복사 및 배포를 방지하는 데 사용됩니다.
Widevine은 보안 라이선스 채널을 통해 승인된 기기에만 전송되는 콘텐츠 키를 사용한 AES-128 CBC 암호화를 지원합니다. 시스템은 서버의 암호화부터 사용자 기기의 디코딩까지 엔드투엔드 보호를 제공합니다.
Widevine Technologies는 1999년에 설립되었으며 원래 케이블 TV 플랫폼에서 콘텐츠 보호 솔루션을 개발했습니다. 2010년 Google에 인수된 후, 이 기술은 모바일 플랫폼에 적용되었고 Android OS에 버전 4.4 KitKat부터 통합되었습니다. 2015년부터 Widevine은 Google Mobile Services 인증의 필수 구성 요소가 되었습니다.
2018년 Google은 Widevine Modular DRM을 발표하여 기기 제조업체가 OS 코드를 수정하지 않고도 하드웨어에서 다양한 보호 수준을 구현할 수 있게 했습니다. 현재 Widevine Modular은 40억 대 이상의 기기에서 지원되며 Android의 기본 DRM 메커니즘입니다.
Widevine 아키텍처는 Content Decryption Module(CDM), 라이선스 서버, 콘텐츠 암호화 도구의 세 가지 핵심 구성 요소로 구성됩니다. CDM은 클라이언트 측에서 복호화를 수행하고 안전한 키 저장을 위해 하드웨어 Trusted Execution Environment(TEE)와 상호 작용합니다.
Google 라이선스 서버는 콘텐츠 제공업체의 정책에 따라 키 발급을 관리하며, 시간, 기기 수, 재생 품질에 대한 제한을 정의합니다. 암호화 도구는 제공업체 측에서 콘텐츠를 준비하여 CENC 암호화와 함께 MPEG-DASH 또는 HLS 형식으로 패키징합니다.
보호 프로세스는 미디어 파일이 제공업체 서버에서 콘텐츠 키를 사용하여 암호화되는 콘텐츠 패키징 단계에서 시작됩니다. 암호화된 스트림은 CDN을 통해 사용자 기기로 전송되며, CDM이 라이선스 서버에 라이선스를 요청합니다.
라이선스 서버는 기기의 신뢰성과 콘텐츠 접근 권한을 확인합니다. 확인에 성공하면 서버는 CDM이 복호화에 사용할 키가 포함된 라이선스를 발급합니다. 라이선스에는 시청 시간 및 해상도에 대한 제한이 포함될 수 있습니다.
Widevine의 라이선스 교환은 브라우저의 EME(Encrypted Media Extensions) 프로토콜 또는 모바일 플랫폼의 SDK를 통해 구현됩니다. 라이선스 요청은 CDM에 의해 생성되어 HTTPS를 통해 라이선스 서버로 전송되며, 전송 중 키 가로채기로부터 보호합니다.
서버는 요청을 처리하고 암호화된 라이선스를 반환하며, 이는 기기의 CDM만 복호화할 수 있습니다. 특정 기기에 키를 하드웨어 바인딩하면 다른 플랫폼으로의 전송을 방지합니다.
Widevine은 ISO/IEC 23001-7에 정의된 Common Encryption(CENC) 표준을 사용하여 MPEG-DASH 및 HLS 형식과의 호환성을 보장합니다. 미디어 스트림 보호에는 CTR 또는 CBC 모드의 AES-128 암호화가 사용됩니다.
키 파생에는 HKDF(HMAC-based Key Derivation Function)가 사용되어 콘텐츠의 각 세그먼트에 고유한 키를 생성할 수 있습니다. Widevine의 HLS 지원은 Modular 버전 2.0에서 추가되어 Apple 플랫폼과의 호환성이 확장되었습니다.
@Throws
fun requestLicense(): ByteArray {
val drmSessionManager = mediaDrm.createSession(
sessionId,
List("keyRequestType", "init")
)
val request = mediaDrm.getKeyRequest(
sessionId,
schemeData.get("mimeType"),
KeyType.STREAMING,
mutableMapOf()
)
return licenseService.acquire(request.data)
}
Widevine은 암호화 작업 수행 및 콘텐츠 처리 방식이 다른 세 가지 보안 수준을 정의합니다. L1 수준은 최대 보호를, L3는 최소 보호를, L2는 중간 위치를 차지합니다.
| 수준 | 보호 유형 | 기기 요구 사항 | 최대 해상도 |
|---|---|---|---|
| L1 | 하드웨어 | SoC 수준의 TEE | 4K Ultra HD |
| L2 | 하이브리드 | 키용 TEE, 비디오용 소프트웨어 | 1080p |
| L3 | 소프트웨어 | 소프트웨어 CDM만 | 720p |
L1 수준은 모든 암호화 작업이 수행되는 하드웨어 수준의 Trusted Execution Environment(TEE)가 필요합니다. 콘텐츠 키는 TEE를 절대 벗어나지 않으므로 기본 OS가 손상되어도 추출을 방지합니다.
L1 인증을 받은 기기는 사용자 프로세스의 접근 없이 복호화된 비디오 스트림이 보호된 비디오 출력으로 직접 전송되므로 4K 품질 및 HDR로 콘텐츠를 재생할 수 있습니다.
L3 수준은 일반 사용자 공간 내에서 소프트웨어로 모든 암호화 작업을 수행합니다. 이것은 가장 안전하지 않은 모드로, 기기의 RAM에서 키를 추출할 수 있습니다.
Widevine L3는 재생 품질을 720p로 제한하므로 저사양 기기나 하드웨어 보호 기능이 없는 데스크톱 브라우저에서 시청하기에 적합합니다.
fun getSecurityLevel(): String {
val mediaDrm = MediaDrm(UUID.fromString(
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
))
val level = mediaDrm.getPropertyString(
"securityLevel"
)
return level.ifEmpty { "L3" }
}
모바일 애플리케이션에 Widevine 통합은 표준 MediaDrm(Android) 및 AVContentKeySession(iOS) API를 통해 수행됩니다. 대부분의 경우 개발자가 DRM을 직접 다룰 필요는 없습니다 — ExoPlayer 및 AVPlayer와 같은 플레이어 라이브러리가 라이선싱을 자동으로 처리합니다.
Android에서 Widevine은 CDM에 직접 액세스를 제공하는 MediaDrm 클래스를 통해 통합됩니다. 스트리밍 애플리케이션의 경우 라이선스 요청을 자동으로 관리하는 DrmSessionManager 모듈과 함께 ExoPlayer를 사용하는 것이 좋습니다.
플레이어를 초기화할 때 Widevine 스키마 UUID(`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`)와 콘텐츠 제공업체가 제공하는 라이선스 서버 URL을 지정해야 합니다. ExoPlayer는 라이선스 요청 및 갱신 주기를 자동으로 처리합니다.
val drmLicenseUrl = "https://license.service.com/wv"
val mediaItem = MediaItem.Builder()
.setUri(Uri.parse(streamUrl))
.setDrmKeyRequestUrl(drmLicenseUrl)
.setDrmKeyRequestHeaders(
mapOf("Authorization" to token)
)
.build()
val exoPlayer = ExoPlayer.Builder(context)
.build()
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
웹 플랫폼에서 Widevine은 Media Source Extensions(MSE) 및 Encrypted Media Extensions(EME)를 통해 작동합니다. Chromium 기반 브라우저에는 Widevine CDM이 내장되어 있으며, 개발자는 올바른 구성으로 EME 세션을 초기화하기만 하면 됩니다.
브라우저에서 Widevine을 사용하려면 keySystem 유형 `com.widevine.alpha`로 라이선스 초기화 프로그램을 지정해야 합니다. MediaKeys 인스턴스를 생성하면 브라우저가 자동으로 라이선스 요청을 처리합니다.
Widevine을 통합할 때는 접근 권한 부족, 구독 만료 또는 기기 비호환성으로 인해 발생하는 라이선싱 오류를 올바르게 처리하는 것이 중요합니다. TYPE_EXPIRED_LICENSE 오류는 서버에 재요청을 통한 라이선스 업데이트가 필요하며, TYPE_OUTPUT_NOT_ALLOWED는 DRM 정책과 비디오 출력의 비호환성을 나타냅니다.
일시적인 네트워크 오류에는 지수 백오프를 사용한 재시도 메커니즘을 구현하고 영구적인 라이선싱 실패 시 사용자에게 명확한 메시지를 표시하는 것이 좋습니다. DRM 세션 오류 로깅은 콘텐츠 제공업체가 기기 문제를 식별하고 정책을 최적화하는 데 도움이 됩니다.
Widevine은 Apple의 FairPlay 및 Microsoft의 PlayReady와 경쟁하며 모바일 플랫폼 시장에서 세 가지 주요 DRM 솔루션을 형성합니다. 각 기술에는 플랫폼 생태계와 관련된 고유한 장점과 제한 사항이 있습니다.
| 특성 | Widevine | FairPlay | PlayReady |
|---|---|---|---|
| 개발자 | Apple | Microsoft | |
| 주요 플랫폼 | Android, Chrome | iOS, tvOS, Safari | Windows, Xbox, UWP |
| 최대 수준 | L1 (4K) | L1에 상응 (4K) | SL3000 (4K) |
| 하드웨어 보호 | TEE | Secure Enclave | TPM + TEE |
DRM 선택은 애플리케이션의 대상 플랫폼에 따라 달라집니다. Android 우선 프로젝트의 경우 Widevine이 Google Mobile Services가 있는 모든 인증 기기에 사전 설치되어 제공되며 추가 라이선스 비용이 필요하지 않으므로 자연스러운 선택입니다.
크로스 플랫폼 프로젝트의 경우 Axinom, EZDRM, Vualto와 같은 라이선스 애그리게이터를 사용한 멀티 DRM 접근 방식이 자주 사용되며, 세 가지 DRM 시스템 모두와 작동하는 통합 API를 제공합니다. 이는 통합 복잡성을 줄이고 라이선스 관리를 중앙화합니다.
자주 묻는 질문
Widevine은 디지털 비디오 콘텐츠를 무단 복사로부터 보호하도록 설계된 Google의 DRM 기술입니다. 스트리밍 서비스에서 비디오를 암호화하고 라이선스 시스템을 통해 접근을 관리하는 데 사용됩니다.
Widevine은 세 가지 보안 수준을 지원합니다: TEE의 하드웨어 암호화를 사용하는 L1, 하이브리드 접근 방식의 L2, 완전 소프트웨어 구현의 L3. L1은 4K 콘텐츠 재생을 허용하고 L3는 720p 품질로 제한됩니다.
MediaDrm 클래스를 통해 securityLevel 속성을 요청하여 Android에서 Widevine 수준을 확인할 수 있습니다. Widevine UUID로 MediaDrm 인스턴스를 생성하고 getPropertyString을 호출하거나 DRM Info와 같은 타사 앱을 사용하세요.
Widevine은 Google이 Android 및 Chrome용으로 개발한 반면 FairPlay는 iOS, tvOS 및 Safari용입니다. 둘 다 하드웨어 암호화와 4K를 지원하지만 Widevine은 Android 기기에서 더 널리 보급되어 있고 FairPlay는 Apple 생태계의 사실상 표준입니다.
모바일 애플리케이션에서 Widevine을 사용하기 위해 별도의 라이선스가 필요하지 않습니다 — 이 기술은 인증된 Android 기기 및 Chrome에 내장되어 있습니다. 수수료는 라이선스 서버를 사용하는 콘텐츠 제공업체에만 부과됩니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.