DRM mobilos alkalmazásokban: alapok, védelmi sémák és működési elv

Szerző: IT Sectr Megjelenés: 2026-05-24 Olvasási idő: 11 perc

DRM (Digital Rights Management) — a digitális tartalom jogosulatlan másolása és terjesztése elleni technológiák összessége. A mobilalkalmazásokban a DRM-et video-, audio- és e-könyvek titkosítására használják, biztosítva a jogtulajdonosok és fogyasztók közötti licencszerződések betartását. A Google Widevine Documentation, 2026 szerint a DRM be van építve a legtöbb streaming szolgáltatásba — Netflix, Spotify, Apple TV+ — és kötelező a prémium tartalom legális terjesztéséhez.

Főbb pontok

  • DRM (Digital Rights Management) — szerzői jogvédelmi technológiák, amelyek korlátozzák a digitális tartalom másolását és terjesztését.
  • Három fő séma: Widevine (Google), FairPlay (Apple), PlayReady (Microsoft) — dominálnak a mobil platformokon.
  • A Widevine Android és iOS rendszeren CDM-en keresztül működik, három biztonsági szintet támogat: L1, L2, L3.
  • Az Apple FairPlay-je KSM szervert használ a kulcsok generálásához és be van építve az AVFoundation-ba iOS és macOS rendszeren.
  • A DRM visszafejtés a médialejátszó szintjén történik — a fejlesztő a kész videostreamet ExoPlayeren vagy AVPlayeren keresztül kapja.

Mi az a DRM?

DRM — kriptográfiai és szoftveres módszerek gyűjteménye, amelyek szabályozzák a digitális tartalomhoz való hozzáférést. Az egyszerű titkosítástól eltérően a DRM tartalmaz egy licencrendszert: a tartalom titkosított, és megtekintéséhez egy kulcs szükséges, amelyet csak a felhasználó jogainak ellenőrzése után adnak ki.

A DRM fő feladata a kalózkodás megelőzése és a regionális korlátozások betartatása. DRM nélkül a tartalomtulajdonosok (filmstúdiók, lemezkiadók) nem licencelik tartalmukat a streaming platformoknak. A Motion Picture Association (2025) szerint a DRM használata 62%-kal csökkentette a filmek illegális terjesztését a streamingben a DVD-rip-ek korszakához képest.

A mobilfejlesztésben a DRM a médialejátszó szintjén van beépítve: a fejlesztő az ExoPlayert (Android), AVPlayert (iOS) vagy Shaka Playert (Web) használja, amelyek támogatják a titkosított stream beépített visszafejtését. A fejlesztőnek nem kell kriptográfiát implementálnia — elég az SDK-t integrálni a licenceléshez.

DRM és CENC (Common Encryption)

A CENC (Common Encryption — ISO/IEC 23001-7) szabvány lehetővé teszi egyetlen titkosított médiafájl használatát minden DRM rendszerhez. A tartalmat egyszer titkosítják, és a kulcsokat különböző licencszervereken keresztül osztják el. Ez kritikus a többplatformos szolgáltatások számára: a Netflix egyszer titkosítja a filmet, és elküldi Android (Widevine), iOS (FairPlay) és Windows (PlayReady) rendszerre újrakódolás nélkül.

A CENC CBC titkosítást használ különböző kulcsokkal az audio és video sávokhoz. Minden kulcs titkosított formában van tárolva az MPD (MPEG-DASH) vagy M3U8 (HLS) manifesztumban. A tartalomazonosító (KID) összeköti a titkosított streamet a szerveren lévő licenceel — érvényes licenc nélkül a kulcs nem fejthető vissza.

Hogyan működik a DRM a mobilalkalmazásokban

A DRM lejátszási folyamat négy szakaszból áll: manifesztum betöltése, licenc megszerzése, tartalom visszafejtése és megjelenítése. Minden szakaszt a rendszer különböző összetevői végeznek — a médialejátszó, a CDM modul és a licencszerver.

  • Manifesztum betöltése — a lejátszó megkapja az MPD-t (DASH) vagy M3U8-at (HLS) a titkosított szegmensekről, a titkosítási sémáról és a licencszerver URL-jéről szóló metaadatokkal.
  • Licenckérés — a lejátszó továbbítja a tartalomazonosítót (KID) a Content Decryption Module-hoz (CDM), amely kérést képez a licencszerverhez.
  • Kulcs megszerzése — a szerver ellenőrzi a felhasználó jogait (előfizetés, régió, eszköz), és visszaküldi a kulcsot az eszköz nyilvános kulcsával titkosítva.
  • Stream visszafejtése — a CDM visszafejti a kulcsot az eszköz privát kulcsával, és továbbítja a lejátszónak a videoszegmensek valós idejű visszafejtéséhez.

Content Decryption Module (CDM)

A CDM — egy védett szoftveres vagy hardveres modul, amely végzi a tartalom visszafejtését. Androidon a CDM a MediaDrm API szintjén van implementálva, iOS-en — beépítve az AVFoundation-ba az AVContentKeySession-en keresztül. A CDM soha nem fedi fel a kulcsot az alkalmazásnak — minden kriptográfiai művelet egy védett környezeten (TEE — Trusted Execution Environment) belül történik.

A hardveres támogatással rendelkező eszközökön (Secure Level 1) a CDM a TEE-n belül működik — a kulcs soha nem kerül az eszköz főmemóriájába. Ez a stúdiók követelménye a tartalom 4K HDR-ben történő lejátszásához. A TEE nélküli eszközökön a kulcsok szoftveresen vannak visszafejtve (L3), ami csökkenti a védelmet és a maximális minőséget 540p-re korlátozza.

Fő DRM sémák

A mobil platformokon három DRM rendszer dominál. Mindegyik kizárólagos a saját ökoszisztémájára, de támogatja a CENC-et, ami lehetővé teszi egyetlen titkosított tartalom használatát minden platformon.

DRMFejlesztőPlatformMax. minőségHardveres védelem
WidevineGoogleAndroid, Chrome, Android TV4K HDR (L1)TEE (L1)
FairPlayAppleiOS, iPadOS, macOS, tvOS4K HDR (iOS)Secure Enclave
PlayReadyMicrosoftWindows, Xbox, Windows Phone4K (SL3000)TPM + TEE

DRM választás többplatformos szolgáltatáshoz

Egy minden platformon működő streaming szolgáltatáshoz mindhárom DRM támogatása szükséges. Gyakorlati megoldás — multi-DRM támogatással rendelkező CDN (Muvi, Vualto, Axinom) használata, amelyek automatikusan a megfelelő szerverhez irányítják a licenckéréseket a felhasználó eszközétől függően. A Streaming Learning Center (2025) szerint a streaming szolgáltatások 78%-a Multi-DRM megközelítést használ.

A CENC-el ellátott MPEG-DASH szabvány egyszerűsíti az architektúrát: a tartalmat egyszer titkosítják megosztott kulccsal, és a DRM rendszert az ügyfél oldalon választják ki. A licencszerver megkapja a kérést az eszközazonosítóval, és visszaküldi az adott CDM-hez titkosított kulcsot. Nincs különbség a tartalomban a különböző platformok számára — csak más licencszerver.

Widevine: szintek és jellemzők

Widevine — a Google DRM rendszere, amely de facto szabvány Androidon. Három biztonsági szintet támogat, amelyek meghatározzák, hol és hogyan történik a tartalom visszafejtése. A biztonsági szint az eszköz hardveres képességeitől függ és meghatározza a tartalom maximális felbontását.

Widevine biztonsági szintek

Widevine L1 (hardveres) — a legvédettebb szint. Minden kriptográfiai művelet a Trusted Execution Environment (TEE) belsejében történik. A kulcs soha nem hagyja el a védett területet. Az L1-gyel rendelkező eszközök 4K HDR-ig terjedő tartalmat képesek lejátszani. Google tanúsítvány szükséges — egy eljárás, amelyen a zászlóshajó eszközök átesnek.

Widevine L3 (szoftveres) — a visszafejtés az eszköz főmemóriájában történik. A kulcsot egy technikailag képzett támadó kinyerheti. A felbontás prémium tartalom esetén 540p-re (960x540) korlátozott. Az összes Android-eszköz támogatja az L3-at, még akkor is, ha nem rendelkezik L1 tanúsítvánnyal.

Widevine L2 — egy ritka köztes szint, ahol a visszafejtés a TEE-ben történik, de a megjelenítés nem védett úton. Néhány Smart TV-n használják. Mobil eszközökön gyakorlatilag nem fordul elő.

Hogyan határozzuk meg a Widevine szintet az eszközön

kotlin
import android.media.MediaDrm
import android.media.UUID

fun checkWidevineLevel(): String {
    val widevineUuid = UUID.fromString("edef8ba9-79d6-4ace-a3c8-27dcd51d21ed")
    val mediaDrm = MediaDrm(widevineUuid)

    val securityLevel = mediaDrm.getPropertyString(
        MediaDrm.PROPERTY_SECURITY_LEVEL
    )

    return when (securityLevel) {
        "L1" -> "Widevine L1 — hardveres védelem"
        "L3" -> "Widevine L3 — szoftveres védelem"
        else -> "Widevine $securityLevel"
    }
}

A metódus a CDM-től kéri a securityLevel tulajdonságot a Widevine UUID-n keresztül. A visszaadott érték — egy L1, L2 vagy L3 string — jelzi az eszköz aktuális védelmi szintjét. Ez az információ kritikus a streaming szolgáltatások számára: ha az eszköz csak L3-mal rendelkezik, a 4K tartalom nem jeleníthető meg.

Apple FairPlay: architektúra és működési elv

FairPlay — az Apple DRM rendszere, beépítve az ökoszisztéma összes platformjába: iOS, iPadOS, macOS, tvOS és watchOS. A Widevine-tól eltérően a FairPlay-nek nincsenek biztonsági szintjei — a védelmet az eszköz határozza meg. iOS-en Secure Enclave-val a FairPlay a Widevine L1-gyel összehasonlítható védelmi szintet nyújt.

A FairPlay kizárólag a HLS (HTTP Live Streaming) protokollal működik. A tartalom .ts (MPEG-TS) szegmensekbe vagy .m4s (fMP4) fragmentumokba van csomagolva. Az M3U8 manifesztum tartalmazza a #EXT-X-KEY címkét a licencszerver URI-jával (KSM — Key Server Module) és az IV inicializálóval. A lejátszás indításakor az AVPlayer beolvassa a manifesztumot, és az AVContentKeySessionen keresztül kéri a kulcsot.

FairPlay Streaming integráció

swift
import AVFoundation

let contentKeySession = AVContentKeySession(keySystem: fairPlayStreaming)
let player = AVPlayer(playerItem: playerItem)
contentKeySession.setDelegate(self, queue: delegateQueue)

func contentKeySession(
    _ session: AVContentKeySession,
    didProvide keyRequest: AVContentKeyRequest
) {
    let assetId = keyRequest.identifier as! String
    sendLicenseRequest(assetId) { licenseData in
        keyRequest.processContentKeyResponse(
            AVContentKeyResponse(fairPlayStreamingKeyResponseData: licenseData)
        )
    }
}

Az AVContentKeySession delegáltja fogadja a kulcskérést a tartalomazonosítóval (assetId). Az alkalmazás elküldi ezt az ID-t a saját licencszerverére (KSM), amely visszaküldi a titkosított kulcsot. A processContentKeyResponse hívás továbbítja a kulcsot a CDM-nek visszafejtésre. Ha a licenc érvénytelen (lejárt, ki nem fizetett), a szerver 403-as hibát küld, és az AVPlayer nem indítja el a lejátszást.

Persistent Key Loading offline tartalomhoz

A FairPlay támogatja a persistent keys — a licenc eszközön történő mentését offline megtekintéshez. A kulcs megszerzése után az alkalmazás meghívja a processContentKeyResponse-ot az allowsPersistableKey flaggel. A kulcs a Keychain-ben tárolódik, és ismételt nézésnél a szerver megkeresése nélkül használható. Az offline licenc érvényességi ideje azonban korlátozott — általában 7–30 nap, ezután megújítás szükséges.

Az offline licencek az iOS védett tárhelyén — a Keychain-ben — tárolódnak. Feltörési kísérlet (jalibreak, memóriakiiratás kinyerése) esetén a Secure Enclave megsemmisíti a kulcsokat. Az Apple (2025) szerint a persistent keys technológiát az Apple TV+, Netflix és Disney+ használja tartalom iPad-re történő letöltéséhez utazás előtt.

Microsoft PlayReady az univerzális védelemhez

PlayReady — Microsoft DRM, amely Windows, Xbox és elavult Windows Phone rendszeren használatos. Bár a mobileszközökön a PlayReady ritkább, mint a Widevine és a FairPlay, fontos az összes Microsoft platformon működő univerzális streaming megoldások számára. A PlayReady mind szoftveres, mind hardveres védelmet támogat TPM-en keresztül.

A PlayReady SL (Security Level) architektúrát használ: SL2000 (szoftveres, a Widevine L3 analógja), SL3000 (hardveres, az L1 analógja). Xbox Series X-en a PlayReady SL3000 TEE+TPM-en keresztül működik — a kulcsok csak védett környezetben kerülnek kinyerésre. Ez lehetővé teszi a 4K Blu-ray lejátszást a konzolon másolási kockázat nélkül.

A Microsoft Docs (2026) szerint a PlayReady támogatja a CENC-et, és képes együttműködni az MPEG-DASH-sal a Media Source Extensions (MSE) segítségével az Edge böngészőkben. Android és iOS mobilalkalmazásokhoz a PlayReady SDK-n keresztül érhető el, de ritkán használják — főleg vállalati alkalmazásokhoz és Microsoft médiaszolgáltatásokhoz.

PlayReady Native SDK Androidhoz

A Microsoft PlayReady Native SDK-t biztosít Android és iOS rendszerhez. Az integráció az ExoPlayeren keresztül történik a PlayReady kiterjesztéssel: a fejlesztő hozzáadja a PlayReadyRenderert, amely beépül a dekódolási láncba. Az ExoPlayer automatikusan vált a Widevine és PlayReady között attól függően, hogy melyik DRM van megadva az MPD manifesztumban.

Bár a PlayReady ritkán fordul elő mobilalkalmazásokban, támogatása kötelező a Microsoft ökoszisztémába tartozó szolgáltatások számára — például vállalati képző platformok a SharePointon és Streamen. A Microsoft (2025) szerint a PlayReady a vállalati médiamegoldások 23%-ában használatos, míg a Widevine 62%-ban.

A DRM integrálása a mobilalkalmazásba

A DRM integrálása a mobilalkalmazásba nem igényel kriptográfiai kód írását — a fejlesztő egy olyan lejátszóval dolgozik, amely készpénz támogatja a DRM-et. Nézzük az integrációt Androidon az ExoPlayeren keresztül a DRM kiterjesztéssel.

ExoPlayer beállítása Widevine támogatással

kotlin
val drmSessionManager = DefaultDrmSessionManager.Builder()
    .setUuidAndExoMediaDrmProvider(
        C.WIDEVINE_UUID,
        FrameworkMediaDrm.DEFAULT_PROVIDER
    )
    .setMultiSession(true)
    .build(mediaDrmCallback)

val mediaItem = MediaItem.Builder()
    .setUri(mpdUrl)
    .setDrmConfiguration(
        MediaItem.DrmConfiguration.Builder(C.WIDEVINE_UUID)
            .setLicenseUri(licenseUrl)
            .setLicenseRequestHeaders(headers)
            .build()
    )
    .build()

exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()

A DefaultDrmSessionManager kezeli a DRM munkamenetet: létrehozza a MediaDrm munkamenetet, feldolgozza a licenckéréseket és továbbítja a kulcsokat a dekódernek. A setMultiSession(true) paraméter lehetővé teszi több stream (audio + video) egyidejű visszafejtését különböző munkamenetekben. A MediaDrmCallback implementálja a licencszerverhez intézett HTTP kérést — általában POST a kérés törzsével SignedRequest formátumban.

MediaDrmCallback licenckéréshez

kotlin
val mediaDrmCallback = DefaultDrmSessionManager.MediaDrmCallback {
    url, requestBody ->

    val response = OkHttpClient().newCall(
        Request.Builder()
            .url(url)
            .post(RequestBody.create(requestBody, MediaType.parse("application/octet-stream")))
            .addHeader("Authorization", "Bearer ")
            .build()
    ).execute()

    val responseBytes = response.body?.bytes()
        ?: throw DrmSessionException(Exception("Empty license response"))

    responseBytes
}

A callback POST kérést küld a licencszerverre a Widevine UUID-vel a törzsben. A szerver ellenőrzi a felhasználó hitelesítését (token a fejlécben), és visszaküldi a titkosított kulcsot. Ha a felhasználónak nincs aktív előfizetése, a szerver 403 Forbidden hibát küld — az ExoPlayer DRM hibát generál, amelyet az onPlayerError segítségével kell kezelni.

DRM hibák kezelése

DRM hibák akkor fordulnak elő, ha a licenc érvénytelen, lejárt, vagy az eszköz nem támogatja a szükséges védelmi szintet. Az ExoPlayer a hibát a Player.Listener.onPlayerError segítségével továbbítja TYPE_DRM_LICENSE_EXPIRED, TYPE_DRM_UNSUPPORTED vagy TYPE_SOURCE kóddal. Javasolt egy tájékoztató üzenet megjelenítése a felhasználó számára: „A tartalom nem érhető el ehhez az eszközhöz” vagy „Hosszabbítsa meg előfizetését a nézéshez”.

A streaming szolgáltatások elemzése (2025) szerint a sikertelen lejátszási indítások 8%-a DRM hibákhoz kapcsolódik. Ezek 60%-a lejárt licenc, 25%-a eszköz inkompatibilitás és 15%-a hálózati hiba a kulcskérésnél. Az automatikus újrapróbálkozás 5 másodperc után a hálózati hibák 40%-át megoldja.

Gyakran Ismételt Kérdések

Megkerülhető a DRM egy mobileszközön?

Technikailag lehetséges Widevine L3 (szoftveres védelem) eszközökön, ahol a kulcs kinyerhető a memóriából. L1 és Secure Enclave-val rendelkező FairPlay esetén a megkerülés rendkívül nehéz — fizikai hozzáférés szükséges a TEE-hez. A tartalomstúdiók a prémium tartalomhoz L1 eszközöket céloznak.

Miért mutat a Netflix alacsony minőséget az Androidomon?

Valószínűleg az eszköz nem rendelkezik Widevine L1 tanúsítvánnyal és L3-at használ. A Netflix L3 eszközökön 540p-re korlátozza a minőséget. Ellenőrizze a Widevine szintet a Google Play-ből származó DRM Info alkalmazással. A Samsung, Pixel és OnePlus zászlóshajó eszközei általában L1-gyel rendelkeznek.

Melyik DRM jobb egy streaming szolgáltatáshoz?

Használjon Multi-DRM-et: Widevine-t Androidhoz, FairPlay-t Apple-höz, PlayReady-t Windowshoz. Az olyan szolgáltatások, mint az Axinom vagy a Vualto, egységes API-t biztosítanak mindhárom DRM-hez. A tartalmat egyszer titkosítják CENC-en keresztül, és a DRM választás automatikusan az ügyfél oldalon történik.

Hogyan valósítsak meg offline nézést DRM-mel?

iOS-en használja a FairPlay persistent keys funkcióját az AVContentKeySessionen keresztül. Androidon — a Widevine Offline License-t az ExoPlayer OfflineLicenseHelper segítségével. A kulcs helyileg tárolódik a Keychain-ben (iOS) vagy KeyStore-ban (Android) korlátozott érvényességi idővel — általában 7-től 30 napig.

Mi az a KID a DRM kontextusában?

KID (Key ID) — a titkosítási kulcs egyedi 16 bájtos azonosítója a CENC manifesztumban. Minden KID a tartalom egy adott szegmenséhez van kötve (például egy film 10 perces szegmenséhez). A licencszerver a KID segítségével keresi meg a megfelelő kulcsot az adatbázisában. Egy film akár 20 különböző KID-et is tartalmazhat különböző részekhez.

Összefoglaló

  • DRM (Digital Rights Management) — a digitális tartalom kriptográfiai védelmi rendszere, kötelező a legális streaminghez.
  • Három fő séma: Widevine (Android), FairPlay (iOS), PlayReady (Windows) — CENC-et használnak a tartalom egységes titkosításához.
  • A Widevine L1 (hardveres védelem TEE-n keresztül) 4K HDR-t tesz lehetővé, az L3 (szoftveres) 540p-re korlátozott. A szint a MediaDrm.getPropertyString segítségével ellenőrizhető.
  • A FairPlay csak HLS-sel működik és AVContentKeySession-t használ a kulcskérésekhez a KSM szerveren keresztül.
  • A DRM integráció a médialejátszón keresztül történik: ExoPlayer (Android) DefaultDrmSessionManager-rel, AVPlayer (iOS) AVContentKeySession-nel.
  • A DRM hibák kezelése az onPlayerError segítségével történik — lejárt licencek, eszköz inkompatibilitás és hálózati hibák a sikertelen indítások 8%-át teszik ki.
  • Többplatformos szolgáltatásokhoz a Multi-DRM megközelítés ajánlott CDN szolgáltatóval és egységes CENC tartalomtitkosítással.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is