DRM em aplicativos móveis: fundamentos, esquemas de proteção e princípio de funcionamento

Autor: IT Sectr Publicado: 2026-05-24 Tempo de leitura: 11 min

DRM (Digital Rights Management) é um conjunto de tecnologias para proteger o conteúdo digital contra cópia e distribuição não autorizadas. Em aplicações móveis, o DRM é usado para criptografar vídeo, áudio e e-books, garantindo a conformidade com acordos de licenciamento entre detentores de direitos e consumidores. De acordo com Google Widevine Documentation, 2026, o DRM está integrado na maioria dos serviços de streaming — Netflix, Spotify, Apple TV+ — e é obrigatório para a distribuição legal de conteúdo premium.

Pontos principais

  • DRM (Digital Rights Management) — tecnologias que protegem os direitos autorais ao restringir a cópia e distribuição de conteúdo digital.
  • Três esquemas principais: Widevine (Google), FairPlay (Apple), PlayReady (Microsoft) — dominam as plataformas móveis.
  • Widevine funciona no Android e iOS via CDM, suportando três níveis de segurança: L1, L2, L3.
  • O FairPlay da Apple usa o servidor KSM para geração de chaves e está integrado no AVFoundation no iOS e macOS.
  • A descriptografia DRM ocorre no nível do reprodutor de mídia — o desenvolvedor recebe um fluxo de vídeo pronto via ExoPlayer ou AVPlayer.

O que é DRM?

DRM é um conjunto de métodos criptográficos e de software que controlam o acesso ao conteúdo digital. Ao contrário da criptografia simples, o DRM inclui um sistema de licenciamento: o conteúdo é criptografado e para visualizá-lo é necessária uma chave que é emitida somente após a verificação dos direitos do usuário.

O objetivo principal do DRM é prevenir a pirataria e garantir o cumprimento de restrições regionais. Sem DRM, os proprietários de conteúdo (estúdios de cinema, gravadoras) não licenciam seu conteúdo para plataformas de streaming. De acordo com a Motion Picture Association (2025), o uso de DRM reduziu a distribuição ilegal de filmes em streaming em 62% em comparação com a era dos DVD-rips.

No desenvolvimento móvel, o DRM é integrado ao nível do reprodutor de mídia: o desenvolvedor usa ExoPlayer (Android), AVPlayer (iOS) ou Shaka Player (Web), que suportam descriptografia incorporada do fluxo criptografado. O desenvolvedor não precisa implementar criptografia — basta integrar um SDK para licenciamento.

DRM e CENC (Common Encryption)

O padrão CENC (Common Encryption — ISO/IEC 23001-7) permite usar um único arquivo de mídia criptografado para todos os sistemas DRM. O conteúdo é criptografado uma vez e as chaves são distribuídas através de diferentes servidores de licenças. Isso é fundamental para serviços multiplataforma: a Netflix criptografa um filme uma vez e o entrega ao Android (Widevine), iOS (FairPlay) e Windows (PlayReady) sem necessidade de recodificação.

CENC usa criptografia CBC com chaves diferentes para faixas de áudio e vídeo. Cada chave é armazenada criptografada no manifesto MPD (MPEG-DASH) ou M3U8 (HLS). O identificador de conteúdo (KID) vincula o fluxo criptografado à licença no servidor — sem uma licença válida, a chave não pode ser descriptografada.

Como o DRM funciona em aplicações móveis

O processo de reprodução com DRM consiste em quatro etapas: carregamento do manifesto, obtenção de licença, descriptografia do conteúdo e exibição. Cada etapa é executada por diferentes componentes do sistema — o reprodutor de mídia, o módulo CDM e o servidor de licenças.

  • Carregamento do manifesto — o reprodutor recebe MPD (DASH) ou M3U8 (HLS) com metadados sobre segmentos criptografados, o esquema de criptografia e a URL do servidor de licenças.
  • Solicitação de licença — o reprodutor passa o identificador de conteúdo (KID) para o Módulo de Descriptografia de Conteúdo (CDM), que gera uma solicitação ao servidor de licenças.
  • Obtenção de chave — o servidor verifica os direitos do usuário (assinatura, região, dispositivo) e retorna uma chave criptografada com a chave pública do dispositivo.
  • Descriptografia do fluxo — o CDM descriptografa a chave usando a chave privada do dispositivo e a passa ao reprodutor de mídia para descriptografia em tempo real dos segmentos de vídeo.

Módulo de Descriptografia de Conteúdo (CDM)

CDM é um módulo protegido de software ou hardware que realiza a descriptografia de conteúdo. No Android, o CDM é implementado ao nível da API MediaDrm; no iOS, está integrado no AVFoundation através de AVContentKeySession. O CDM nunca expõe a chave à aplicação — todas as operações criptográficas são realizadas dentro de um ambiente seguro (TEE — Trusted Execution Environment).

Em dispositivos com suporte de hardware (Secure Level 1), o CDM opera dentro do TEE — a chave nunca entra na memória principal do dispositivo. Este é um requisito dos estúdios para reproduzir conteúdo 4K HDR. Em dispositivos sem TEE, as chaves são descriptografadas por software (L3), o que reduz a segurança e limita a qualidade máxima a 540p.

Principais esquemas de DRM

Três sistemas DRM dominam as plataformas móveis. Cada um é exclusivo do seu ecossistema, mas todos suportam CENC, permitindo usar um único fluxo de conteúdo criptografado em todas as plataformas.

DRMDesenvolvedorPlataformaQualidade máximaProteção de hardware
WidevineGoogleAndroid, Chrome, Android TV4K HDR (L1)TEE (L1)
FairPlayAppleiOS, iPadOS, macOS, tvOS4K HDR (iOS)Secure Enclave
PlayReadyMicrosoftWindows, Xbox, Windows Phone4K (SL3000)TPM + TEE

Escolha de DRM para um serviço multiplataforma

Para um serviço de streaming que funcione em todas as plataformas, é necessário suporte para todos os três sistemas DRM. Uma solução prática é usar uma CDN com suporte multi-DRM (Muvi, Vualto, Axinom), que roteia automaticamente as solicitações de licença para o servidor apropriado com base no dispositivo do usuário. De acordo com o Streaming Learning Center (2025), 78% dos serviços de streaming usam a abordagem Multi-DRM.

O padrão MPEG-DASH com CENC simplifica a arquitetura: o conteúdo é criptografado uma vez com uma chave compartilhada e o sistema DRM é selecionado no lado do cliente. O servidor de licenças recebe uma solicitação com o identificador do dispositivo e retorna uma chave criptografada para o CDM específico. Sem diferença no conteúdo para diferentes plataformas — apenas um servidor de licenças diferente.

Widevine: níveis e características

Widevine é o sistema DRM do Google, o padrão de facto no Android. Suporta três níveis de segurança que determinam onde e como a descriptografia de conteúdo é realizada. O nível de segurança depende das capacidades de hardware do dispositivo e determina a resolução máxima do conteúdo.

Níveis de segurança do Widevine

Widevine L1 (hardware) — o nível mais seguro. Todas as operações criptográficas são realizadas dentro do Trusted Execution Environment (TEE). A chave nunca sai da área segura. Dispositivos com L1 podem reproduzir conteúdo até 4K HDR. É necessária certificação da Google — um processo que os dispositivos emblemáticos realizam.

Widevine L3 (software) — a descriptografia é realizada na memória principal do dispositivo. Um atacante com conhecimentos técnicos pode extrair a chave. A resolução é limitada a 540p (960x540) para conteúdo premium. Todos os dispositivos Android suportam L3, mesmo que não estejam certificados para L1.

Widevine L2 — um nível intermédio raro onde a descriptografia é realizada no TEE, mas a renderização segue um caminho não protegido. Usado em alguns Smart TVs. Praticamente nunca encontrado em dispositivos móveis.

Como determinar o nível de Widevine num dispositivo

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 — proteção por hardware"
        "L3" -> "Widevine L3 — proteção por software"
        else -> "Widevine $securityLevel"
    }
}

O método consulta ao CDM a propriedade securityLevel através do UUID do Widevine. O valor retornado é uma string L1, L2 ou L3, indicando o nível de proteção atual do dispositivo. Esta informação é crítica para serviços de streaming: se um dispositivo tiver apenas L3, o conteúdo 4K não pode ser exibido.

Apple FairPlay: arquitetura e princípio de funcionamento

FairPlay é o sistema DRM da Apple, integrado em todas as plataformas do ecossistema: iOS, iPadOS, macOS, tvOS e watchOS. Ao contrário do Widevine, o FairPlay não tem níveis de segurança — a proteção é determinada pelo dispositivo. No iOS com Secure Enclave, o FairPlay oferece um nível de proteção comparável ao Widevine L1.

O FairPlay funciona exclusivamente com o protocolo HLS (HTTP Live Streaming). O conteúdo é empacotado em segmentos .ts (MPEG-TS) ou fragmentos .m4s (fMP4). O manifesto M3U8 contém a tag #EXT-X-KEY com o URI do servidor de licenças (KSM — Key Server Module) e o IV de inicialização. Ao iniciar a reprodução, o AVPlayer lê o manifesto e solicita a chave através de AVContentKeySession.

Integração do FairPlay Streaming

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)
        )
    }
}

O delegado do AVContentKeySession recebe uma solicitação de chave com o identificador de conteúdo (assetId). A aplicação envia este ID para o seu servidor de licenças (KSM), que retorna a chave criptografada. A chamada processContentKeyResponse passa a chave ao CDM para descriptografia. Se a licença for inválida (expirada, não paga), o servidor retorna um erro 403 e o AVPlayer não inicia a reprodução.

Carregamento de chaves persistentes para conteúdo offline

O FairPlay suporta chaves persistentes — guardar a licença no dispositivo para visualização offline. Após receber a chave, a aplicação chama processContentKeyResponse com o sinalizador allowsPersistableKey. A chave é armazenada no Keychain e pode ser usada sem contactar o servidor em reproduções posteriores. No entanto, a licença offline tem um período de validade limitado — geralmente de 7 a 30 dias, após o qual é necessária renovação.

As licenças offline são armazenadas no armazenamento protegido do iOS — o Keychain. Em caso de tentativa de jailbreak ou extração de dump, o Secure Enclave destrói as chaves. De acordo com a Apple (2025), a tecnologia de chaves persistentes é usada no Apple TV+, Netflix e Disney+ para descarregar conteúdo num iPad antes de uma viagem.

Microsoft PlayReady para proteção universal

PlayReady é o DRM da Microsoft, usado no Windows, Xbox e Windows Phone legado. Embora o PlayReady seja menos comum em dispositivos móveis que o Widevine e o FairPlay, é importante para soluções de streaming universais que funcionam em todas as plataformas Microsoft. O PlayReady suporta proteção tanto por software como por hardware através de TPM.

O PlayReady usa a arquitetura SL (Security Level): SL2000 (software, semelhante ao Widevine L3), SL3000 (hardware, semelhante ao L1). No Xbox Series X, o PlayReady SL3000 funciona através de TEE+TPM — as chaves são extraídas apenas num ambiente protegido. Isto permite reproduzir Blu-ray 4K na consola sem risco de cópia.

De acordo com a Microsoft Docs (2026), o PlayReady suporta CENC e pode funcionar com MPEG-DASH através de Media Source Extensions (MSE) nos navegadores Edge. Para aplicações móveis no Android e iOS, o PlayReady está disponível através de SDK, mas é raramente usado — principalmente para aplicações empresariais e serviços de média da Microsoft.

PlayReady Native SDK para Android

A Microsoft fornece o PlayReady Native SDK para Android e iOS. A integração é feita através do ExoPlayer com a extensão PlayReady: o desenvolvedor adiciona PlayReadyRenderer, que é incorporado na cadeia de descodificação. O ExoPlayer alterna automaticamente entre Widevine e PlayReady dependendo de qual DRM está especificado no manifesto MPD.

Embora o PlayReady seja raramente usado em aplicações móveis, o seu suporte é obrigatório para serviços dentro do ecossistema Microsoft — por exemplo, plataformas de formação empresarial no SharePoint e Stream. De acordo com a Microsoft (2025), o PlayReady é usado em 23% das soluções de média empresariais contra 62% do Widevine.

Integração de DRM numa aplicação móvel

Integrar DRM numa aplicação móvel não requer escrever código criptográfico — o desenvolvedor trabalha com um reprodutor que suporta DRM nativamente. Vamos ver a integração no Android através do ExoPlayer com a extensão DRM.

Configuração do ExoPlayer com suporte Widevine

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()

O DefaultDrmSessionManager gere a sessão DRM: cria uma sessão MediaDrm, trata pedidos de licença e passa as chaves ao descodificador. O parâmetro setMultiSession(true) permite descriptografar múltiplos fluxos (áudio + vídeo) simultaneamente em diferentes sessões. O MediaDrmCallback implementa o pedido HTTP ao servidor de licenças — geralmente um POST com corpo SignedRequest.

MediaDrmCallback para pedido de licença

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
}

O callback envia um pedido POST ao servidor de licenças com o UUID do Widevine no corpo. O servidor verifica a autenticação do utilizador (token no cabeçalho) e retorna a chave criptografada. Se o utilizador não tiver uma assinatura ativa, o servidor retorna 403 Forbidden — o ExoPlayer gera um erro DRM, que deve ser tratado através de onPlayerError.

Tratamento de erros DRM

Os erros DRM ocorrem quando uma licença é inválida, expirou ou o dispositivo não suporta o nível de proteção necessário. O ExoPlayer passa o erro através de Player.Listener.onPlayerError com códigos TYPE_DRM_LICENSE_EXPIRED, TYPE_DRM_UNSUPPORTED ou TYPE_SOURCE. Recomenda-se mostrar ao utilizador uma mensagem informativa: “O conteúdo não está disponível para este dispositivo” ou “Renove a sua assinatura para visualizar.”

De acordo com análises de serviços de streaming (2025), até 8% das falhas de início de reprodução estão relacionadas a erros DRM. Destes, 60% são licenças expiradas, 25% incompatibilidade do dispositivo e 15% erros de rede durante o pedido de chave. Uma repetição automática após 5 segundos resolve 40% dos casos de erros de rede.

Perguntas frequentes

É possível contornar o DRM num dispositivo móvel?

Tecnicamente possível em dispositivos com Widevine L3 (proteção por software), onde a chave pode ser extraída da memória. No L1 e FairPlay com Secure Enclave, contornar é extremamente difícil — é necessário acesso físico ao TEE. Os estúdios de conteúdo visam dispositivos L1 para conteúdo premium.

Porque é que o Netflix mostra baixa qualidade no meu Android?

Provavelmente, o dispositivo não está certificado para Widevine L1 e está a usar L3. O Netflix limita a qualidade a 540p em dispositivos L3. Verifique o nível do Widevine através da aplicação DRM Info da Google Play. Os dispositivos emblemáticos da Samsung, Pixel e OnePlus geralmente têm L1.

Qual DRM é melhor para um serviço de streaming?

Use Multi-DRM: Widevine para Android, FairPlay para Apple, PlayReady para Windows. Serviços como Axinom ou Vualto fornecem uma API unificada para os três sistemas DRM. O conteúdo é criptografado uma vez via CENC e a seleção de DRM ocorre automaticamente no lado do cliente.

Como implementar a visualização offline com DRM?

No iOS, use chaves persistentes do FairPlay através de AVContentKeySession. No Android, use a Licença Offline do Widevine através do ExoPlayer OfflineLicenseHelper. A chave é armazenada localmente no Keychain (iOS) ou KeyStore (Android) com um período de validade limitado — geralmente de 7 a 30 dias.

O que é KID no contexto de DRM?

KID (Key ID) — um identificador único de 16 bytes da chave de criptografia no manifesto CENC. Cada KID está vinculado a um segmento específico de conteúdo (por exemplo, um segmento de 10 minutos de um filme). O servidor de licenças usa o KID para procurar a chave correspondente na sua base de dados. Um único filme pode conter até 20 KIDs diferentes para diferentes partes.

Resumo

  • DRM (Digital Rights Management) — sistema de proteção criptográfica de conteúdo digital, obrigatório para streaming legal.
  • Três esquemas principais: Widevine (Android), FairPlay (iOS), PlayReady (Windows) — usam CENC para criptografia unificada de conteúdo.
  • Widevine L1 (proteção por hardware via TEE) permite 4K HDR, L3 (software) está limitado a 540p. O nível é verificado através de MediaDrm.getPropertyString.
  • FairPlay funciona apenas com HLS e usa AVContentKeySession para solicitar chaves ao servidor KSM.
  • A integração DRM é feita através do reprodutor de mídia: ExoPlayer (Android) com DefaultDrmSessionManager, AVPlayer (iOS) com AVContentKeySession.
  • Os erros DRM são tratados através de onPlayerError — licenças expiradas, incompatibilidade do dispositivo e falhas de rede representam 8% das falhas de início.
  • Para serviços multiplataforma, recomenda-se uma abordagem Multi-DRM com um fornecedor de CDN e criptografia CENC unificada de conteúdo.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também