Criptografia da entrega¶
O detentor dos direitos de um conteúdo premium exige que o stream nunca chegue ao espectador aberto. O streamer sabe criptografar o que sai dele: o espectador recebe texto cifrado e o endereço no qual o reprodutor dele pede a licença. Configura-se no bloco Criptografia da entrega (DRM) na aba Entrega do stream — e da mesma forma no modelo de stream quando há muitos streams.
Criptografa-se a saída, não a gravação. O arquivo no streamer permanece aberto, então retrocesso, miniaturas, transcodificação e reconhecimento de legendas continuam funcionando como em um stream comum.
Quem criptografa é o origin. A criptografia é feita pelo streamer que recebeu a fonte. Os edges recebem dele o texto cifrado já pronto e o entregam como está: não têm a chave e nunca passam a ter — mais abaixo.
A tarefa inversa — puxar uma fonte cifrada — é resolvida na entrada do stream, não aqui: veja Fonte MPEG-DASH.
Ative a criptografia¶
O botão Criptografar a entrega habilita o bloco. Em seguida escolha a Origem da chave:
- Nas configurações — você mesmo informa a chave. Serve quando a chave vem de um acordo com o detentor dos direitos, e não de um servidor.
- Servidor de chaves (SPEKE) — a chave é pedida a um servidor externo pelo SPEKE. É assim que funcionam os serviços comerciais de DRM.

Veja funcionando, com ClearKey¶
Para ver a criptografia de ponta a ponta — do fragmento à imagem no navegador — não é preciso um DRM comercial: o ClearKey toca em um navegador comum, e a licença é emitida pelo próprio streamer. Esse modo não protege nada, a chave vai aberta até o reprodutor, mas todo o caminho é verificado em um minuto e sem nenhuma assinatura.
- Na aba Entrega ative Criptografar a entrega.
- Origem da chave — Nas configurações. Em Valor da chave digite 32 caracteres hexadecimais, por exemplo
00112233445566778899aabbccddeeff. Deixe o Identificador da chave vazio. - Em Sistemas de proteção deixe apenas ClearKey.
- Salve e abra a Página do reprodutor — o link está no bloco Como obter o fluxo, mais abaixo na mesma aba.
A imagem começa como sempre, e é justamente esse o resultado: os fragmentos saíram criptografados, o reprodutor pediu a licença ao streamer, recebeu a chave e os descriptografou sozinho.

Duas verificações mostram o que realmente acontece.
Na playlist apareceu uma chave. Um stream criptografado traz uma linha do sistema de proteção antes da lista de qualidades; um comum não tem:
curl -s http://<endereço>/streaming/v/<nome>/index.m3u8 | grep KEY
#EXT-X-SESSION-KEY:METHOD=SAMPLE-AES,URI="data:text/plain;base64,...",KEYFORMAT="org.w3.clearkey"
Um protocolo sem criptografia recusa. O servidor não sabe criptografar MPEG-TS e por isso não entrega esse stream de forma alguma:
curl -s -o /dev/null -w '%{http_code}\n' http://<endereço>/streaming/mpegts/<nome>
403
O console não mostra mais uma chave salva — o campo traz <redacted>, como na captura acima. O valor da chave não é entregue nem pela API nem aos registros; para colocar outra, digite uma chave nova por cima.
A chave nas configurações¶
- Valor da chave — 32 caracteres hexadecimais (AES-128).
- Identificador da chave — pode ficar vazio: nesse caso é derivado do identificador de conteúdo e do sal.
O servidor de chaves¶
- Endereço do servidor de chaves — para lá vai um documento CPIX. Depois disso a chave não sai deste streamer.
- Versão do SPEKE — a versão do protocolo combinada com o servidor.

O que criptografar¶
O campo O que criptografar define a abrangência:
- Todas as amostras de vídeo — o padrão e o que o detentor dos direitos costuma exigir.
- Somente quadros-chave — bem mais barato em CPU: os quadros diferenciais não decodificam sem o quadro-chave de qualquer forma.
O áudio é criptografado nos dois modos: é barato, e deixá-lo aberto torna inútil a proteção do conteúdo.
Sistemas de proteção¶
Sistemas de proteção lista aqueles a quem a proteção é anunciada: Widevine, PlayReady, FairPlay, ClearKey. É preciso escolher ao menos um: criptografar sem dizer a nenhum reprodutor com o que descriptografar é uma entrega que ninguém conseguirá assistir.
ClearKey é um modo de demonstração e não oferece proteção: a chave é entregue ao reprodutor como está. Ele existe para que todo o caminho — da criptografia à reprodução — seja verificado com um navegador comum, sem comprar um DRM comercial. Para conteúdo real escolha um sistema cuja licença seja entregue de forma protegida.
Identificador de conteúdo e sal¶
- Identificador de conteúdo — vazio significa o nome do stream. Vários streams que devam ser criptografados com uma mesma chave informam aqui um identificador comum.
- Sal do identificador da chave — não é segredo: serve apenas para que os identificadores de duas instalações não coincidam.
Os dois campos alimentam o identificador da chave, então editá-los muda o que é anunciado ao reprodutor.
Um stream tem uma única chave¶
A chave é dada ao stream uma vez e não muda enquanto o stream funciona: não há rotação de chaves.
- Toda a escada de qualidades é criptografada com uma chave — 1080p, 360p e o áudio igualmente.
- O arquivo é criptografado com a mesma chave da borda ao vivo. Retroceder uma semana não exige nem uma segunda chave nem uma segunda ida ao servidor de chaves.
- A playlist traz uma única tag de chave para toda a janela — não surgem grupos de segmentos sob chaves diferentes.
A chave muda apenas junto com as configurações: editar Valor da chave, Identificador de conteúdo ou Sal do identificador da chave significa uma chave nova, e o stream passa a ser criptografado com ela. Quem estiver assistindo naquele momento continua assistindo: o reprodutor pede a licença de novo, como faz numa troca de codec.
Sem chave não há entrega¶
A criptografia em si não quebra — quebra a obtenção da chave, e é isso que se deve acompanhar.
Enquanto a chave não chega, o stream criptografado não é entregue de forma alguma: o pedido de mídia termina em erro. Um stream assim nunca responde com conteúdo aberto: um servidor de chaves inacessível apaga a entrega, não retira a criptografia.
O que pode acontecer com o servidor de chaves:
- Não respondeu — o stream não é entregue. Assim que o servidor responder, a entrega volta sozinha: sem reiniciar o stream e sem um buraco no arquivo.
- Não devolveu todos os sistemas pedidos — a resposta é rejeitada por inteiro. Se foram escolhidos Widevine e FairPlay e na resposta veio só Widevine, a chave não é aceita: uma sinalização incompleta significaria que parte do público não consegue assistir, em silêncio.
- Respondeu outra coisa — não um documento CPIX, ou um XML que não se analisa: a chave não é aceita e o motivo vai para o registro do streamer. Valores de chaves nunca são escritos nos registros.
Há um pedido ao servidor de chaves por stream, não por espectador nem por fragmento: o streamer guarda a chave recebida. Mil espectadores chegando ao mesmo tempo geram um único pedido.
O que deixa de funcionar¶
Em um stream criptografado recusam as superfícies que não têm criptografia: a extração MPEG-TS e sua subárvore HLS, a prévia MP4 do arquivo, o fluxo do arquivo para RTSP, a entrega WebRTC e SRT. A recusa é deliberada: entregar esse stream aberto seria uma forma de contornar a proteção.
Continuam funcionando: as prévias JPEG e as miniaturas, as legendas WebVTT e os pushes do stream.
Streamers que entregam¶
A chave fica no streamer que recebeu a fonte, o origin. Os streamers vizinhos, os edges, recebem o mesmo texto cifrado que o espectador e o entregam adiante, anunciando a proteção em playlists e manifestos — mas não têm a chave, e ela também não aparece nas configurações deles. Um streamer de entrega comprometido não distribui mídia aberta.
Somente o streamer que recebeu a fonte fala com o servidor de chaves, portanto o número de pedidos depende do número de streams, e não do tamanho do cluster.
Se o streamer de entrega tiver discos de cache configurados, o texto cifrado se deposita neles como está, e um pedido repetido do mesmo fragmento é servido localmente. O streamer continua sem conseguir descriptografar esse cache: ele entrega exatamente os bytes que chegaram. O texto cifrado não vai para o arquivo — o arquivo alimenta prévias, miniaturas e a linha do tempo, e tudo isso olha dentro da imagem.
Migração a partir do Flussonic¶
Um stream que tinha criptografia configurada no Flussonic Media Server é importado desativado, com o motivo nomeado no relatório. As configurações de criptografia não viajam: o Flussonic tem uma quinzena de fornecedores de chaves contra um único SPEKE, e não dá para transferi-las literalmente. A criptografia é configurada de novo — mais seguro do que um canal que, depois da importação, ficasse transmitindo aberto.