155
Anais do EATI - Encontro Anual de Tecnologia da Informação
e Semana Acadêmica de Tecnologia da Informação
Segurança em Streams Multimídia
Fabrício S. Cardoso1, Marco Antônio de O. Araújo1
1
Instituto CEUB de Pesquisa e Desenvolvimento (ICPD) – Centro Universitário de
Brasília (UniCEUB)
CEP 70.790-075 – Brasília – DF – Brazil
[email protected], [email protected]
Abstract. This paper proposes a study of security information applied to
multimedia streaming. The pursued method of development was such that
could assure proper authentication and safe transmission throughout the
internet. The history, development and formation of streaming were
researched, and various security information concepts were used. For the next
step, a search of open source tools that could build the solution took place.
The result was a set of tools that work for mutual authentication between
client and server, which enabled safe information transmission.
Resumo. Este artigo propõe o estudo da segurança da informação aplicada
aos fluxos multimídia, ou streams. Buscou-se desenvolver um método que
possa assegurar a devida autenticação e transmissão segura do fluxo pela
internet. Foram pesquisados a história, desenvolvimento e formação dos
fluxos, bem como vários conceitos de segurança da informação. A seguir,
partiu-se para a busca de ferramentas que atendessem a uma solução open
source. O resultado foi um conjunto de ferramentas que trabalham em função
da autenticação mútua entre cliente e servidor, o que habilitou a transmissão
segura das informações.
1. Introdução
No início da era de popularização da internet, as informações disponibilizadas eram, na
maior parte, textos e imagens organizados. Em pouco tempo, sua evolução se deu, entre
outros tipos, por meio da inserção de conteúdos multimídia em suas páginas. Dessa
forma, surgiram os primeiros fluxos – streams – digitais de áudio e vídeo, com o
propósito de se publicar conteúdo digital de forma dinâmica e próxima do que o rádio e
televisão oferecem. A ideia inicial seria prover um modo de acessar o conteúdo
radiofônico ou televisivo sem o uso de aparelhos físicos.
Entretanto, há casos em que esses fluxos digitais podem ser desejáveis apenas
para acesso restrito. É o caso de uma rádio ou canal de vídeo digital que possui
conteúdo exclusivo e cobra pelo serviço diferenciado que oferece. Com isso, o presente
estudo tem como objetivos compreender como se dá a segurança em streams e propor
uma solução para o problema.
O presente trabalho está organizado em seis partes. Na primeira e segunda seção,
é apresentado o conceito e estrutura de streams multimídia. A terceira seção
proporciona uma análise sobre protocolo de streaming utilizado, o Icecast. Na quarta
seção, é apresentado como estudo de caso uma solução de segurança implementada com
as ferramentas selecionadas. Por fim, as duas últimas partes explicitam os testes
realizados e seus resultados.
Anais do EATI
Frederico Westphalen - RS
Ano 3 n. 1
p. 155-162
Nov/2013
156
Anais do EATI - Encontro Anual de Tecnologia da Informação
e Semana Acadêmica de Tecnologia da Informação
2. Streams de Áudio
No início dos anos 20, George Squier desenvolveu a primeira rede de transmissão e
distribuição de sinais de áudio a partir das linhas de energia elétrica. Isso caracterizou o
primeiro registro de uma transmissão de streaming e foi batizada de muzak [1].
Com o passar dos anos, várias tentativas de se transmitir sinais de áudio em
fluxo foram feitas. No início da década de 90, a tecnologia de redes de comunicação
Multicast Backbone foi utilizada transmitir um show da banda Rolling Stones, e foi
considerado o primeiro uso significativo da tecnologia de streaming realizado sobre
redes IP [2].
Essas tentativas encontraram um de seus picos em 1995, com a criação da
RealAudio [3]. A primeira transmissão foi um jogo de beisebol entre os times New
York Yankees e Seattle Mariners. Em 1997, ela criou a primeira solução de streaming
de vídeo [7].
O W3C trabalha na revisão da linguagem HTML5. Essa habilita a transmissão
de streams de áudio e vídeo apenas com o uso do navegador. A Apple a utiliza como
solução padrão para a reprodução de conteúdo de fluxo em seus produtos mais recentes,
o que impulsionou o uso da solução ao redor do mundo [8].
3. Estrutura de Streaming
Há quatro elementos que compõem a estrutura de funcionamento de um serviço de
streaming. São eles: Captura e Codificação, Serviço, Distribuição e Entrega e Tocador
de Mídia [4].
A etapa de captura e codificação consiste em obter o áudio ou vídeo a partir de
alguma entrada, gravá-lo em um arquivo de computador, comprimi-lo e codificá-lo. A
captura é feita por meio de placas de captura, instaladas em computadores que possuem
diversas entradas de áudio e vídeo [4].
Em seguida, comprime-se o arquivo por meio do uso de compressoresdecompressores, ou codecs. Estes reduzem o tamanho do arquivo para que não haja
perda considerável de qualidade. Além disso, esse passo adequa o arquivo ao tamanho
da banda disponível para transmissão [4].
Ao final, insere-se uma camada de identificação ao fluxo. São gravados
metadados que carregam informações como duração, número de partes e qualidade.
Essa camada é chamada de codificação, ou wrapping [4].
Na figura 1 é possível ver os passos descritos na Captura e Codificação:
Anais do EATI
Frederico Westphalen - RS
Ano 3 n. 1
p. 155-162
Nov/2013
157
Anais do EATI - Encontro Anual de Tecnologia da Informação
e Semana Acadêmica de Tecnologia da Informação
Figura 1. Captura e codificação [4].
Na parte de Serviço, o arquivo gerado é armazenado em um servidor de
conteúdo. Ele é responsável pela distribuição do conteúdo pela rede IP. Essa
distribuição é regulada, a fim de que o fluxo esteja alinhado às restrições da banda
disponível. Além disso, essa parte controla os pedidos de alteração na reprodução, ou
seja, fast forwarding – FF – e rewinding – RWD, bem como pausas [4].
Na etapa de Distribuição e Entrega, o foco é alcançar o usuário por meio de um
canal de entrega e distribuição. Em regra, é necessária somente a conexão entre o
servidor de conteúdo e o tocador de mídia. Entretanto, a internet não foi desenvolvida
para esse tipo de transmissão. Logo, perdas de qualidade e pausas inesperadas podem
acontecer. Como solução, são necessários algoritmos específicos para correção de erros
e regulagem do fluxo, tarefa dessa etapa. Além disso, o aumento na banda disponível
contribuiu para melhorar a qualidade da transmissão e potencializar a entrega e
distribuição [4].
A última parte é a interface do usuário. O Tocador de Mídia – player – é um
aplicativo feito para reprodução de áudio e vídeo em forma de stream ou reprodução de
arquivos multimídia. Algumas empresas que disponibilizam esses produtos são a
Microsoft, com o Windows Media Player, e a Nullsoft, com o Winamp.
4. O protocolo Icecast
O protocolo utilizado neste trabalho para a transmissão dos fluxos é o Icecast, que é
baseado no protocolo shoutcast, concebido pela Nullsoft. Seu funcionamento está
baseado no http.
A arquitetura de funcionamento é dividida em três partes [5]:

Fonte – uma aplicação que gerencia um dispositivo de entrada, como uma
câmera ou lista de reprodução de arquivos de mídia;

Servidor – elemento responsável por receber o que a fonte produz e convertê-lo
em fluxo para o cliente;

Cliente – usado para escutar ou visualizar o conteúdo multimídia a partir do que
servidor envia.
Na figura 2, é possível ver o esquema de funcionamento do protocolo Icecast:
Anais do EATI
Frederico Westphalen - RS
Ano 3 n. 1
p. 155-162
Nov/2013
158
Anais do EATI - Encontro Anual de Tecnologia da Informação
e Semana Acadêmica de Tecnologia da Informação
Figura 2. Funcionamento do Icecast [6].
Para que o servidor permita requisições do cliente, ele precisa da fonte. Quando
essa conexão é estabelecida, o servidor realiza o trabalho de passar os dados em fluxo
da fonte para o cliente. A sequência de passos entre o servidor e o cliente pode ser vista
a seguir [5]:

A fonte solicita uma conexão com a porta de serviço do servidor;

A fonte envia a senha de conexão definida pelo servidor. Se estiver correta, o
servidor responderá com uma mensagem de autorização da conexão e estará
pronto para receber os dados. Caso contrário, o servidor sinalizará com uma
mensagem de senha inválida;

Se a fonte receber o acesso, deverá, então, começar a enviar informações sobre o
stream para o servidor.
A partir do estabelecimento da conexão mencionada, o fluxo começa a ser
transmitido.
5. Proposta de Segurança
A estrutura da implementação está embasada no proxy reverso, representado pela
ferramenta Nginx, que tratará a requisição SSL. Ao recebê-la, exigirá o certificado do
cliente, funcionalidade opcional do SSL, e o autenticará junto ao certificado da AC para
a validação de informações. Da mesma forma, a operação padrão do SSL de
autenticação do servidor junto ao cliente será realizada.
Caso haja sucesso, a segurança será reforçada pelo uso da autenticação simples.
A solicitação resultante será encaminhada a uma página PHP, que realizará a
autenticação mediante o uso de credenciais de usuário e senha. Os dados inseridos serão
conferidos por meio de um cadastro armazenado no banco de dados MySQL. Após o
sucesso da etapa anterior, uma nova página disponibilizará o acesso a um link que
direcionará o usuário para o servidor de mídia, representado pelo Icecast, responsável
pela geração e transmissão do fluxo de streaming para o cliente.
O Nginx realizará toda a negociação – handshake – SSL com o cliente, o que
evitará que a requisição do streaming chegue diretamente ao servidor de mídia. Ao
mesmo tempo, assegurará, com certificados digitais e autenticação simples, que a
conexão esteja devidamente autenticada e verificada antes de chegar a seu destino final.
Além disso, o servidor é o responsável por hospedar as páginas PHP da autenticação
simples.
A configuração do Nginx consiste na edição dos arquivos nginx.conf e default.
O primeiro é responsável pelas configurações globais do servidor. O último permite
realizar a configuração do host virtual que responderá pelo protocolo https.
Anais do EATI
Frederico Westphalen - RS
Ano 3 n. 1
p. 155-162
Nov/2013
159
Anais do EATI - Encontro Anual de Tecnologia da Informação
e Semana Acadêmica de Tecnologia da Informação
O Icecast possui um arquivo de configuração chamado icecast.xml. Nele,
definem-se informações como o número de conexões ao servidor de mídia e credenciais
de acesso. A fonte de mídia, representada pelo Ices, possui o arquivo de configuração
ices.conf. Nele, é possível configurar os dados a respeito do stream gerado. Neste
trabalho, foi utilizado um fluxo gerado a partir de uma playlist que será reproduzida
dinamicamente.
A geração dos certificados digitais do cliente foi feita com o OpenCA. Esta
ferramenta habilita todo o processo de gerenciamento de certificados realizado por uma
AC. O arquivo de configuração é o config.xml. Ele define as credenciais de acesso,
porta de conexão, entre outros. Para efeito de praticidade, o certificado do servidor SSL
foi auto-assinado.
A autenticação simples foi realizada com o uso da linguagem PHP e o banco de
dados MySQL. A senha é armazenada no banco de dados na forma de hash SHA-1. A
autenticação consiste em solicitar ao usuário, após a validação de seu certificado,
usuário e senha. Com isso, caso haja roubo do certificado, o invasor deve ter, ainda,
essas credenciais para completar o acesso ao stream.
6. Testes
O ambiente onde foram feitos os testes é composto por cinco máquinas lógicas. A
primeira, que hospeda o Nginx, é o proxy reverso e efetua a conexão SSL com
autenticação do servidor e do cliente.
A segunda representa os servidores Web e banco de dados que faz a
autenticação simples. Esse serviço é também suportado pelo Nginx, que hospeda os
scripts PHP.
A terceira máquina é o servidor Icecast, que carrega a lista de reprodução de
arquivos mp3 e os transforma em fluxo para entrega ao cliente. As três máquinas estão
baseadas na plataforma Ubuntu Linux, instalado no ambiente de virtualização Oracle
VirtualBox.
A quarta hospeda o OpenCA, autoridade certificadora que é utilizada para gerar
os certificados e roda no sistema operacional CentOS 5.9, também instalado no
VirtualBox. A quinta, por sua vez, é a máquina do cliente que deseja acessar o stream
por meio do browser.
A figura 3 apresenta um esquema com a solução empregada:
Figura 3. Esquema de funcionamento da solução de segurança.
Anais do EATI
Frederico Westphalen - RS
Ano 3 n. 1
p. 155-162
Nov/2013
160
Anais do EATI - Encontro Anual de Tecnologia da Informação
e Semana Acadêmica de Tecnologia da Informação
O primeiro teste consistiu em verificar o funcionamento do processo de
autenticação SSL para que o servidor ateste o certificado do cliente. Para isso, foram
gerados dois certificados fictícios de cliente, assinados por uma CA fictícia.
Com o acesso https inicial realizado, foi exibida a tela de seleção de certificados,
que pode ser vista na figura 4:
Figura 4. Seleção de Certificado.
O teste inicial foi não apresentar nenhum certificado, clicando no botão
“Cancelar” da figura 4. A tela exibida após a ação foi a da figura 5, que bloqueou o
acesso caso não fosse apresentado algum certificado:
Figura 5. Tela de bloqueio de acesso do Nginx.
Na segunda parte do teste, foi selecionado um certificado. Com isso, o servidor
iniciou os procedimentos do handshake SSL para autenticação do cliente.
Utilizou-se o Wireshark para capturar os pacotes de rede e acompanhar o
handshake, conforme a tabela 1:
Tabela 1. Extrato do Wireshark mostrando o handshake SSL com autenticação de cliente
e servidor.
No.
Source
Destination
Length
Info
23
192.168.1.2
192.168.1.9
220
Client Hello
26
192.168.1.9
192.168.1.2
1514
Server Hello
27
192.168.1.9
192.168.1.2
1514
Certificate
29
192.168.1.9
192.168.1.2
398
Server Key Exchange, Certificate Request, Server Hello Done
52
192.168.1.2
192.168.1.9
1241
Certificate, Client Key Exchange, Certificate Verify, Change Cipher Spec,
Encrypted Handshake Message
56
192.168.1.9
192.168.1.2
1004
New Session Ticket, Change Cipher Spec, Encrypted Handshake Message
74
192.168.1.2
192.168.1.9
1128
Client Hello
77
192.168.1.9
192.168.1.2
199
Server Hello, Change Cipher Spec, Encrypted Handshake Message
78
192.168.1.2
192.168.1.9
113
Change Cipher Spec, Encrypted Handshake Message
79
192.168.1.2
192.168.1.9
512
Application Data, Application Data
81
192.168.1.9
192.168.1.2
571
Application Data
O primeiro sinal de handshake foi o “Client Hello”. O servidor apresentou seu
certificado para que o cliente o autenticasse. Em seguida, o servidor exigiu a
apresentação de um certificado do cliente. Após a autenticação do servidor pelo cliente,
o cliente enviou para o servidor o certificado selecionado. Com isso, uma nova sessão
foi criada pelo servidor, mediante a bem sucedida análise de certificado do cliente.
Tentou-se efetuar testes de autenticação do cliente fazendo uso de um certificado
emitido pela AC não reconhecida pelo Nginx. O resultado foi o de que o servidor
Anais do EATI
Frederico Westphalen - RS
Ano 3 n. 1
p. 155-162
Nov/2013
161
Anais do EATI - Encontro Anual de Tecnologia da Informação
e Semana Acadêmica de Tecnologia da Informação
ignorou certificados que não tinham ACs reconhecidas. Isso pode ser visto na figura 6,
em que foi retirado o certificado da AC fictícia das configurações do servidor e houve a
substituição por outro, da AC fictícia “serv.dummy.com”, e importou-se um certificado
emitido por ela, com nome “serv2.dummy.com”:
Figura 6. CA substituída e certificado correspondente.
Os certificados emitidos pela CA fictícia não apareceram na lista, o que
caracteriza uma boa construção do Nginx quanto à verificação de certificados.
O segundo teste foi elaborado para verificar como funciona a autenticação do
servidor pelo cliente. Utilizou-se, em princípio, um certificado auto-assinado pelo
servidor Web que hospeda o Nginx. O Google Chrome, ao se deparar com um
certificado auto-assinado, emitiu uma tela de aviso alertando para o fato de o certificado
do servidor Web não ter sido devidamente verificado. Ao clicar na opção “Continuar
mesmo assim”, a autenticação foi feita com sucesso. Essa ação não é recomendada e foi
tomada apenas para observar o tratamento de certificados auto-assinados.
O último teste foi o de autenticação simples. Se bem sucedido, a aplicação
permitirá o acesso ao link do stream. Caso contrário, será negado. Logo após a
autenticação de cliente, houve direcionamento para a página PHP, onde foram
solicitados usuário e senha. Bem sucedida, houve acesso à página com o link para o
fluxo, conforme a figura 7:
Figura 7. Link de acesso ao stream.
Foi testado, ainda, um perfil que não existe. A tela da figura 8 foi mostrada:
Figura 8. Tela de falha na autenticação simples.
7. Resultados
Conseguiu-se, a partir dos testes, uma observação mais precisa a respeito do
comportamento da solução. Na tabela 2, é possível observar as principais características
dos testes efetuados:
Tabela 2. Resultados dos testes efetuados.
Anais do EATI
Implementação
Aplicabilidade
Personalização
Proteção
Autenticação
do cliente
Média
Alta
Sim
Alta
Autenticação
do servidor
Fácil
Alta
Sim
Alta
Autenticação
simples
Fácil
Alta
Sim
Baixa
Frederico Westphalen - RS
Ano 3 n. 1
p. 155-162
Nov/2013
162
Anais do EATI - Encontro Anual de Tecnologia da Informação
e Semana Acadêmica de Tecnologia da Informação
O uso de certificados em ambas as partes apresenta um método confiável de
autenticação e transmissão de fluxos, pois, de acordo com observações feitas com o
Wireshark, o tráfego do stream será criptografado do início ao fim da transmissão. A
autenticação simples complementa a autenticação por certificados ao adicionar mais
uma camada de segurança. Como extensão, pode-se utilizar algoritmos de hash
alternativos, como o SHA-2, para a autenticação simples.
8. Conclusão
Há várias formas de se aplicar a segurança da informação para streams. Neste trabalho,
a solução está no canal de comunicação, que é tornado seguro de forma transparente
para o usuário. Para que haja acesso ao stream, são necessários certificado e credenciais
válidos.
Pode-se ampliar o estudo para várias vertentes, como filtrar tipos de acesso com
perfis de assinante, ao usar credenciais de usuário e senha. Além disso, o script em PHP
pode utilizar o salt quando a senha for cadastrada. Isso pode lhe conferir maior
aleatoriedade, o que eleva a segurança.
Como solução alternativa, há o uso de algoritmos criptográficos diretamente no
stream, o que dispensa o SSL. O trabalho pode ser feito bloco a bloco ou em fluxo, com
criptografia simétrica ou assimétrica, ou ambas.
Por fim, verificou-se que a solução possui caráter genérico e pode ser utilizada
para diversas aplicações, tais como a autenticação de clientes em web services, páginas
de acesso restrito, entre outras.
Referências
[1]LANZA, J. Elevator Music. Michigan: The University of Michigan Press, 2004, p.
25-27.
[2]MBONE. Low-complexity Video Coding for Receiver-driven Layered Multicast.
Disponível
em:
<http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.83.3540&rep=rep1&type=p
df>. Acesso em: 25 out. 2013.
[3]GIROD,
B.
Video
Over
Networks.
<http://www.stanford.edu/class/ee398b/handouts/lectures/08VideoOverNetworks.pdf>. Acesso em: 15 nov. 2012.
Disponível
em:
[4]AUSTERBERRY, D. The Technology of Video and Audio Streaming. Burlington:
El Sevier, 2005, p. 133-243.
[5]JAY, M. The SHOUTcast Streaming Standard [Technical]. Disponível em:
<http://forums.radiotoolbox.com/viewtopic.php?t=74>. Acesso em: 03 fev. 2013.
[6]ICECAST.
Stream
Structure
per
Mount
Point.
<http://www.icecast.org/docs.php>. Acesso em: 21 jan. 2013, il.
Disponível
em:
[7]REALNETWORKS.
RealNetworks,
Inc.
History.
Disponível
<http://www.fundinguniverse.com/company-histories/realnetworks-inc-history/>.
Acesso em: 25 out. 2013.
em:
[8]HTML5.
Thoughts
on
Flash.
Disponível
<http://www.apple.com/hotnews/thoughts-on-flash/>. Acesso em: 25 out. 2013.
em:
Anais do EATI
Frederico Westphalen - RS
Ano 3 n. 1
p. 155-162
Nov/2013
Download

Segurança em Streams Multimídia