Anda di halaman 1dari 82

UNIVERSIDADE SÃO FRANCISCO

Curso de Engenharia de Computação

FELIPE CESAR CARDOSO

CONCEITOS DE REDE VIRTUAL PRIVADA PARA


STREAMING SEGURO DE VÍDEO

Itatiba
2010
ii

FELIPE CESAR CARDOSO – R.A. 002200600550

CONCEITOS DE REDE VIRTUAL PRIVADA PARA


STREAMING SEGURO DE VÍDEO

Monografia apresentada à disciplina Trabalho de


Conclusão de Curso, do curso de Engenharia de
Computação da Universidade São Francisco, sob
orientação do Prof. Marcelo Augusto Gonçalves Bardi,
como exigência para conclusão do curso de graduação.

Orientador: Prof. Marcelo Augusto Gonçalves Bardi

Itatiba
2010
iii

Dedico este trabalho aos meus pais, Antonio Carlos Cardoso e

Sueli Maria Thomasini Cardoso, que sempre me incentivaram e

ajudaram em todas as minhas decisões e momentos difíceis.


iv

AGRADECIMENTOS

Agradeço a realização deste trabalho a minha família, que sempre me apoiou em todos

os momentos da minha vida, sempre me dando força e incentivo.

Agradeço também ao meu orientador, Marcelo Augusto Gonçalves Bardi, pela sua

colaboração durante toda a elaboração do trabalho, compartilhando seus conhecimentos.


v

“As pessoas comuns pensam apenas como passar o


tempo. Uma pessoa inteligente tenta usar o tempo.”
(Arthur Schopenhauer)
vi

RESUMO

Com o crescimento da Internet aliado ao aumento das velocidades de acesso com banda larga,
a mesma se transformou em um meio conveniente para transmissão de dados em nível
coorporativo, como por exemplo, a transmissão de streaming de vídeo baseada no modelo
cliente-servidor. Todavia, quando se quer transmitir dados de maneira segura e confiável, a
Internet em si não é a melhor escolha, visto que as informações que nela trafegam podem
estar susceptíveis a serem capturadas e/ou visualizadas indevidamente. Por isso, a VPN
(Virtual Private Network) surge como uma alternativa barata e viável para este tipo de
transmissão, visto que tal estrutura é construída sobre a rede pública de comunicação e
garante uma transmissão segura através de técnicas de tunelamentos e métodos de segurança,
tendo como destaque a criptografia. Este trabalho pretende desenvolver uma alternativa para a
transmissão de streaming de vídeo em estrutura de tunelamento criada pela VPN, previamente
configurada, utilizando softwares livres que se baseiam no sistema operacional Unix-like. Para
a configuração da VPN, foi utilizado o software OpenVPN, trabalhando com chave estática de
criptografia e criando IPs virtuais para a máquina servidora e para a máquina cliente. Em
relação ao streaming de vídeo, foi utilizado o software VLC Media Player, no qual o usuário
do lado servidor seleciona um vídeo de interesse, e este será transmitido via streaming em
direção ao cliente, por meio do tunelamento criado pelo OpenVPN. Assim, evidencia-se que é
possível transmitir vídeo de maneira segura e eficiente, em razão da integração entre VPN e
streaming de vídeo.

Palavras-chave: VPN; streaming de vídeo; criptografia.


vii

ABSTRACT

The growth of the Internet linked to the increasing speeds of a broadband, it became a
convenient way for data transmission in corporative level, such as the transmission of
streaming video-based client-server model. However, when one wants to transmit data
securely and reliably, the Internet is not the best choice, because the information travels in it
may be susceptible to being captured and / or displayed improperly. Therefore, the VPN
(Virtual Private Network) appears as an alternative cheap and feasible for this type of
transmission, since such a structure is built on the public network of communication and
ensures a secure transmission through techniques of tunneling and security methods, with
emphasis encryption. This project intends to develop an alternative to the transmission of
streaming video on the structure created by the VPN tunneling, preconfigured, using free
software that are based on Unix-like operating system. For the configuration of the VPN, it
was used OpenVPN software, working with static key encryption and creating virtual IPs to
the server machine and the client machine. Regarding the streaming video, it was used VLC
Media Player software, in which the user server-side selects a video of interest, and this will
be transmitted via streaming towards the client, through the tunneling created by OpenVPN.
Thus, it becomes evident that you can transmit video safely and efficiently, due to the
integration of VPN and video streaming.

Keywords: VPN; video streaming; encryption.


viii

SUMÁRIO

1. INTRODUÇÃO ..................................................................................................................... 1
1.1 Objetivos ................................................................................................................................ 2
1.2 Organização do Trabalho ....................................................................................................... 2
2. ASPECTOS TEÓRICOS ...................................................................................................... 3
2.1 SEGURANÇA ....................................................................................................................... 3
2.1.1 Firewall ............................................................................................................................... 4
2.1.2 Criptografia ......................................................................................................................... 4
2.1.2.1 Criptografia Simétrica ..................................................................................................... 5
2.1.2.2 Criptografia Assimétrica ................................................................................................. 7
2.1.3 Função de Hash .................................................................................................................. 9
2.1.4 Assinatura Digital ............................................................................................................... 9
2.1.5 Certificado Digital .............................................................................................................. 10
2.2. VIRTUAL PRIVATE NETWORK (VPN) ............................................................................... 11
2.2.1 Principais tipos de VPN ...................................................................................................... 11
2.2.2 Vantagens e Desvantagens da VPN .................................................................................... 13
2.2.3 Principais Características e Requisitos ............................................................................... 13
2.2.4 Tunelamento ....................................................................................................................... 14
2.2.5 Protocolos de Tunelamento ................................................................................................ 16
2.2.5.1 PPTP ................................................................................................................................ 16
2.2.5.2 L2F .................................................................................................................................. 16
2.2.5.3 L2TP ................................................................................................................................ 17
2.2. 5.4 IPSEC ............................................................................................................................. 17
2.2.5.5 SSL/TLS ........................................................................................................................... 18
2.3. STREAMING DE VÍDEO ..................................................................................................... 20
2.3.1 Aplicações Multimídia ....................................................................................................... 21
2.3.1.1 Streaming de Vídeo Armazenado .................................................................................... 21
2.3.1.2 Streaming de Vídeo ao Vivo ........................................................................................... 22
2.3.1.3 Vídeo Interativo em Tempo Real .................................................................................... 22
2.3.2 Streaming Unicast e Multicast ........................................................................................... 23
2.3.3 Protocolos Multimídia ........................................................................................................ 24
2.3.3.1 HTTP ............................................................................................................................... 24
2.3.3.2 RTP .................................................................................................................................. 25
ix

2.3.3.3 RTCP ............................................................................................................................... 26


2.3.3.4 RTSP ................................................................................................................................ 27
2.3.4 Codec e Compressão de dados ........................................................................................... 29
2.4. FERRAMENTAS PARA VPN ............................................................................................. 29
2.4.1 FreeS/Wan .......................................................................................................................... 29
2.4.2 OpenVPN ............................................................................................................................ 30
2.5. FERRAMENTAS PARA STREAMING DE VÍDEO ........................................................... 31
2.5.1 VLC Media Player .............................................................................................................. 32
2.5.2 Flumotion Streaming Software ........................................................................................... 32
3. METODOLOGIA DE DESENVOLVIMENTO ................................................................. 34
3.1 FERRAMENTAS UTILIZADAS ......................................................................................... 34
3.2 CONFIGURAÇÃO DA VPN ................................................................................................ 34
3.2.1 Cenário de Configuração .................................................................................................... 34
3.2.2 Instalação do OpenVPN ...................................................................................................... 35
3.2.3 Driver TUN/TAP ................................................................................................................ 35
3.2.4 Geração de Chave de Criptografia ...................................................................................... 36
3.2.5 Cópia de Chave Estática para o Cliente ............................................................................. 37
3.2.6 Configuração do Servidor ................................................................................................... 38
3.2.7 Configuração do Cliente ..................................................................................................... 40
3.2.8 Inicialização da VPN no Servidor ....................................................................................... 41
3.2.9 Inicialização da VPN no Cliente ......................................................................................... 43
3.2.10 Testes de Conexão ............................................................................................................ 45
3.2.11Acesso ao Servidor ............................................................................................................ 47
3.3. CONFIGURAÇÃO DO SERVIDOR DE STREAMING DE VÍDEO .................................. 47
3.3.1 Cenário de Configuração .................................................................................................... 47
3.3.2 Instalação do VLC ............................................................................................................... 48
3.3.3 Configuração Manual de Streaming de Vídeo no Servidor ................................................ 49
3.3.5 Acesso do Cliente ao Streaming de Vídeo ......................................................................... 58
3.3.6 Automatização do Processo com Script ............................................................................. 59
3.4 TESTES DE INTEGRAÇÃO ................................................................................................ 61
4. RESULTADOS E DISCUSSÕES ........................................................................................ 63
5. CONCLUSÕES ...................................................................................................................... 65
5.1 Sugestões de Trabalhos Futuros ............................................................................................ 65
x

6. REFERÊNCIAS BIBLIOGRÁFIAS ................................................................................... 66


xi

LISTA DE SIGLAS

AVI Audio Video Interleave


DVD Digital Video Disc
FLAC Free Lossless Audio Codec
IP Internet Protocol
IPX Internetwork Packet Exchange
JPEG Joint Photographic Experts Group
LAN Local Area Nerwork
MP3 MPEG-1/2 Audio Layer 3
MPEG Moving Picture Experts Group
OGM Ogg Media File
PCM Pulse Code Modulation
QoS Quality Of Service
SSH Secure Shell
TCP Transmission Control Protocol
UDP User Datagram Protocol
VCD Video Compact Disc
VCR Video Cassette Recorder
VLC VideoLAN Client
VLS VideoLAN Server
WAV Waveform Audio Format
xii

LISTA DE FIGURAS

Figura 1: Exemplo de Firewall .................................................................................................... 4

Figura 2: Modelo de criptografia simétrica ................................................................................. 6

Figura 3: Criptografia Assimétrica .............................................................................................. 8

Figura 4: Autenticação ................................................................................................................. 8

Figura 5: Processo de Assinatura Digital .................................................................................... 10

Figura 6: Arquitetura Host-Host .................................................................................................. 12

Figura 7: Arquitetura Host-Rede ................................................................................................. 12

Figura 8: Arquitetura Rede-Rede ................................................................................................ 13

Figura 9: Processo de Tunelamento ............................................................................................ 15

Figura 10: Camadas do modelo TCP/IP modificadas com SSL .................................................. 19

Figura 11: Camadas do protocolo SSL ........................................................................................ 20

Figura 12: Processo de Streaming ............................................................................................... 21

Figura 13: Streaming Unicast ...................................................................................................... 23

Figura 14: Streaming Multicast ................................................................................................... 24

Figura 15: RTP sobre UDP........................................................................................................... 25

Figura 16: Comunicação RTSP .................................................................................................... 28

Figura 17: Conteúdo da chave estática ........................................................................................ 36

Figura 18: Transferência da chave estática .................................................................................. 38

Figura 19: Inicialização da VPN no servidor ............................................................................... 42

Figura 20: Conteúdo do arquivo servidor.log .............................................................................. 43

Figura 21: Conteúdo do arquivo servidor-status.log ................................................................... 43

Figura 22: Inicialização da VPN no cliente ................................................................................. 44

Figura 23: Conteúdo do arquivo cliente.log ................................................................................ 45

Figura 24: Conteúdo do arquivo cliente-status.log ...................................................................... 45


xiii

Figura 25: Teste de conexão com o cliente ................................................................................. 46

Figura 26: Teste de conexão com o servidor ............................................................................... 46

Figura 27: Acesso ao servidor ..................................................................................................... 47

Figura 28: Integração de VPN com Streaming de vídeo ............................................................. 48

Figura 29: Configuração Gráfica do VLC .................................................................................... 49

Figura 30: Adicionar Arquivo de vídeo ....................................................................................... 50

Figura 11: Seleção do Arquivo .................................................................................................... 50

Figura 32: Início do Fluxo ........................................................................................................... 51

Figura 33: Confirmação da Fonte ................................................................................................ 51

Figura 34: Seleção do Protocolo .................................................................................................. 52

Figura 35: Configuração RTSP .................................................................................................... 53

Figura 36: Encapsulamento ......................................................................................................... 54

Figura 37: Codec de Vídeo .......................................................................................................... 54

Figura 38: Codec de áudio ........................................................................................................... 55

Figura 39: Seleção do Perfil ........................................................................................................ 56

Figura 40: Fluxo Gerado ............................................................................................................. 57

Figura 41: Transmissão do streaming de vídeo ........................................................................... 57

Figura 42: Acesso do cliente ....................................................................................................... 58


xiv

LISTA DE TABELAS

Tabela 1: Especificações dos Computadores ............................................................................... 35


Tabela 2: Métricas para Streaming com VPN ............................................................................. 64
Tabela 3: Métricas para Youtube ................................................................................................. 64
1

1. INTRODUÇÃO

Atualmente, com o crescimento da Internet, o constante aumento de sua área de


abrangência, e a expectativa de uma rápida melhoria na qualidade dos meios de comunicação
associada ao aumento das velocidades de acesso com banda larga, a mesma passou a ser vista
como um meio conveniente para as comunicações corporativas. No entanto, a transmissão de
dados sensíveis pela rede somente se torna possível com o uso de tecnologias que tornem esse
meio altamente inseguro em um meio confiável. Com essa abordagem, o uso de VPN (Virtual
Private Network) sobre o modelo de referência TCP/IP parece ser uma alternativa viável e
adequada (ROSSI e FRANZIN, 2010).
Assim, uma VPN, ou Rede Privada Virtual, é uma rede privada construída sobre a
infra-estrutura de uma rede pública, normalmente a Internet. Ou seja, ao invés de se utilizar
links dedicados ou redes de pacotes (como Frame Relay e X.25) para conectar redes remotas,
utiliza-se a infra-estrutura da Internet.
Além de estabelecer comunicação entre duas redes privadas, as VPNs têm que garantir
alguns aspectos em termos de comunicação segura, como: confidencialidade, autenticação,
integridade e disponibilidade dos dados (KUROSE e ROSS; 2003).
Uma VPN é baseada em conceitos de tunelamento, na qual existem vários protocolos
que podem ser utilizados para a transferência de dados pela rede pública (Internet), sendo que
o tunelamento pode ser definido como o processo de encapsular um protocolo dentro de outro.
Analisando-se os principais conceitos de segurança e tunelamento, nota-se que o
método de criptografia é de extrema importancia durante a definição de uma VPN. Além da
criptografia, pode-se ter outros métodos de segurança, como funções de hash, assinatura
digital e certificado digital.
Deste modo, podemos ter diversas aplicações trabalhando em conjunto com a VPN,
sempre levando em consideração técnicas de segurança, por meio de criptografia. Uma dessas
aplicações, que será o objetivo do trabalho, é a transmissão de streaming de vídeo pela VPN,
onde todos os dados da transmissão estariam protegidos por meio de métodos de segurança e
tunelamento. Nesse caso, interceptores externos, que não estão conectados na VPN, não
conseguiriam visualizar um vídeo sigiliso ou dedicado, por exemplo.
Podemos definir streaming como uma forma de distribuir informação multimídia
numa rede através de pacotes. Em streaming, as informações da mídia não são usualmente
arquivadas pelo usuário que está recebendo o stream, mas sim a mídia geralmente é
2

constantemente reproduzida à medida que chega ao usuário se a sua banda for suficiente para
reproduzir a mídia em tempo real.
Em suma, neste trabalho, fazeremos uso de softwares livres, tanto para configurar a
VPN como para configurar um servidor de streaming de vídeo em cima de plataforma Unix-
like, sendo utilizado o sistema operacional Ubuntu. Desta forma, poderemos estudar os
conceitos do projeto sem maiores problemas de restrinções, possuindo total liberdade de
configuração e desenvolvimento, para depois realizarmos integração e testes.

1.1 Objetivos

A elaboração deste projeto tem como objetivo estudar os principais conceitos de Rede
Virtual Privada, que é utilizada amplamente em diversos lugares para transmissão segura de
dados entre redes distintas, propondo a aplicação destes conceitos na transmissão de
streaming de vídeo de maneira segura e eficiente, em ambiente livre.

1.2 Organização do Trabalho

No Capítulo 2 são apresentados os principais aspectos teóricos que serão importantes


para o estudo e elaboração deste trabalho. Tem-se um detalhamento dos conceitos de
segurança, VPN (Virtual Private Network) e streaming de vídeo em rede de computadores.
Além, de uma análise e seleção das principais ferramentas que serão úteis na configuração da
VPN e streaming de vídeo.
O Capítulo 3 é descrito como foi realizada a configuração da VPN e do servidor de
streaming de vídeo, explicando passo a passo os detalhes das configurações, através do
software OpenVPN e do software VLC Media Player. Também descreve como foi feito os
testes de integração.
No Capítulo 4, têm-se os resultados e discussões feitos através de testes realizados
depois de todas as configurações prontas, comparando o projeto com outra aplicação de
streaming de vídeo.
Por fim, no Capítulo 5 tem-se a conclusão deste projeto, bem como sugestões para
trabalhos futuros.
3

2. ASPECTOS TEÓRICOS

Este capítulo tem como principal objetivo realizar uma revisão bibliográfica dos
principais aspectos teóricos que serão fundamentais para o desenvolvimento do projeto. Em
virtude disto, será descrito e analisado os principais conceitos de segurança, VPN (Virtual
Private Network) e streaming de vídeo. Além disso, será feito uma análise e seleção das
principais ferramentas para configuração de VPN e streaming de vídeo.

2.1 SEGURANÇA

Segundo TANENBAUM (2003), a segurança é um assunto abrangente e inclui diversos


tipos de problemas. De maneira geral, a segurança foca-se em garantir que pessoas mal-
intencionadas não leiam ou modifiquem secretamente mensagens enviadas a outros
destinatários.
Com a introdução do computador, tornou-se evidente a necessidade de ferramentas
automatizadas para proteger arquivos e outras informações armazenadas no computador. Esse
é especialmente o caso de um sistema compartilhado, como um sistema de time-sharing. A
necessidade é ainda mais evidente para sistemas que podem ser acessados por meio de uma
rede telefônica pública, rede de dados ou a Internet. O nome genérico para o conjunto de
ferramentas projetadas para proteger dados e impedir hackers é a segurança do computador
(STALLINGS, 2008).
Deste modo, conforme KUROSE e ROSS (2004), pode-se identificar as seguintes
propriedades desejáveis para uma comunicação segura:
• Confidencialidade: Somente o remetente e o destinatário pretendido devem
poder entender a mensagem transmitida;
• Autenticação: O remetente e o destinatário precisam confirmar a identidade da
outra parte envolvida na comunicação;
• Integridade: Mesmo que o remetente e o destinatário consigam se autenticar
reciprocamente, eles também querem assegurar que o conteúdo da
comunicação não seja alterado, por acidente ou por má intenção, durante a
transmissão.
• Disponibilidade: Manter os recursos disponíveis, mesmo em caso de ataques.
4

2.1.1 Firewall

Um firewall é uma combinação de hardware e software que tem a função de isolar a


rede interna de uma organização da Internet, permitindo que alguns pacotes passem e
bloqueando outros, conforme mostra a Figura 1:

Fonte: CASNOVA (2010)


Figura 1: Exemplo de um Firewall

Há mais de uma forma de funcionamento de um firewall, que varia de acordo com o


sistema, aplicação ou do desenvolvedor do programa. No entanto, existem dois tipos básicos
de conceitos de firewalls: o que é baseado em filtragem de pacotes IP e o que é baseado em
controle de aplicações, que é geralmente instalado em servidores e são conhecidos como
Proxy.

2.1.2 Criptografia

De acordo com TANENBAUM (2003), a palavra criptografia vem das palavras gregas
(Kryptos = escondido, oculto e Grafia = escrita) que significam “escrita secreta”. As
mensagens a serem criptografadas, conhecidas como texto simples (plain text) são
5

transformadas por uma função que é parametrizada por uma chave. Em seguida, a saída do
processo de criptografia, conhecida como texto cifrado (cipher text), é transmitida,
normalmente através de um mensageiro. Presume-se que o inimigo, ou intruso, “ouça” e copie
cuidadosamente o texto cifrado completo. No entanto, ao contrário do destinatário pretendido,
ele não conhece a chave pra descriptografar o texto e, portanto, não pode fazê-lo com muita
facilidade.
Em sistemas de criptografia, deve-se observar que a chave é o elemento mais
importante. A chave é formada por uma combinação de bits, e quanto maior for esta
combinação, maior será a segurança adquirida, entretanto ocorrendo uma maior sobrecarga de
processamento. Então, dependendo do tipo de chave utilizada, tem-se criptografia simétrica
ou criptografia assimétrica.

2.1.2.1 Criptografia Simétrica

Na técnica de criptografia simétrica, tem-se a mesma chave para criptografar e


decriptografar os dados. Logo, esta chave será previamente trocada entre o emissor e receptor,
por meio de uma comunicação segura.
Segundo STALLINGS (2008), um esquema de criptografia simétrica possui cinco
componentes (Figura 2):
• Texto claro: Esta é a mensagem ou dados originais, como entrada para o
algoritmo.
• Algoritmo de criptografia: O algoritmo de criptografia realiza diversas
substituições e transformações no texto claro.
• Chave secreta: A chave secreta também é a entrada para o algoritmo de
criptografia. A chave é um valor independente do texto claro e do algoritmo. O
algoritmo produzirá uma saída diferente, dependendo da chave específica
sendo usada no momento. As substituições e transformações exatas realizadas
pelo algoritmo dependem da chave;
• Texto cifrado: Essa é a mensagem embaralhada, produzida como saída. Ela
depende do texto claro e da chave secreta.
6

• Algoritmo de decriptografia: Esse é basicamente o algoritmo de criptografia


executado de modo inverso. Ele toma o texto cifrado e a chave secreta e produz
o texto claro original.

Fonte: STALLINGS (2008)


Figura 2: Modelo de criptografia simétrica

A criptografia simétrica possui algumas desvantagens em relação à transmissão das


chaves, pois caso esta transmissão não seja segura o bastante, a segurança de toda a
criptografia da informação pode ficar comprometida. Então como uma chave é gerada para a
comunicação entre duas pessoas, a segurança nessas chaves dever ser alta. E se o número de
emissores e receptores for grande, necessariamente tem-se um elevado número de chaves para
gerenciar.
Entretanto, a criptografia simétrica possui a vantagem em relação à alta velocidade
para codificação e decodificação dos dados.
De acordo com ASSIS (2003), existem vários algoritmos simétricos que produzem
chaves de tamanhos variados:
• Data Encryption Standard (DES): 56 bits;
• Triple Data Encryption Standard (3DES): 112 bits;
• Blowfish: até 448 bits;
• Twofish: 128, 192 ou 256 bits;
• Advanced Encryption Standard (AES): 128, 192 ou 256 bits.

Nesses algoritmos, quanto maior a chave, maior será a segurança adquirida.


7

2.1.2.2 Criptografia Assimétrica

Na criptografia assimétrica, a criptografia e a decriptografia são realizadas usando


chaves diferentes, na qual existe uma chave privada e uma chave pública. Desta forma, tal
método transforma o texto claro em texto cifrado usando uma das duas chaves e um algoritmo
de criptografia, e usando a outra chave associada e um algoritmo de decriptografia, o texto
claro é recuperado a partir do texto cifrado.
Segundo STALLINGS (2008), um esquema de criptografia assimétrica possui seis
componentes:
• Texto claro: Essa é a mensagem ou dados legíveis, como entrada para o
algoritmo;
• Algoritmo de criptografia: O algoritmo de criptografia realiza várias
transformações no texto claro;
• Chaves públicas e privadas: Esse é um par de chaves que foi selecionado de
modo que, se uma for usada para criptografia, a outra será usada para
decriptografia. As transformações exatas realizadas pelo algoritmo dependem
da chave pública ou privada que é fornecida como entrada;
• Texto cifrado: Essa é a mensagem codificada produzida como saída. Ela
depende do texto claro e da chave. Para uma determinada mensagem, duas
chaves diferentes produzirão dois textos cifrados diferentes;
• Algoritmo de decriptografia: Esse algoritmo aceita o texto cifrado e a chave
correspondente e produz o texto claro original.

As etapas essenciais são as seguintes:


1. Cada usuário gera um par de chaves a ser usado para a criptografia e a
decriptografia das mensagens.
2. Cada usuário coloca uma das duas chaves em um registro público ou outro
arquivo acessível. Essa é a chave pública. A outra chave permanece privada.
3. Se um emissor deseja enviar uma mensagem confidencial para receptor, o
emissor criptografa a mensagem usando a chave pública do receptor.
4. Quando o receptor recebe a mensagem, ele a decriptografa usando sua chave
privada. Nenhum outro destinatário pode decriptografar a mensagem, pois somente o
receptor conhece a sua chave (Figura 3).
8

Fonte: STALLINGS (2008)


Figura 3 - Criptografia Assimétrica

No entanto, se o emissor faz o uso da chave privada para cifrar a mensagem, qualquer
pessoa na rede poderá decifrá-la, já que a chave pública é conhecida por todos. Então, apenas
garante-se a autenticidade da mensagem (Figura 4).

Fonte: STALLINGS (2008)


Figura 4 – Autenticação

A grande desvantagem desse tipo de criptografia é sua velocidade de processamento


dos dados, uma vez que faz uso de mais que um tipo de chave para criptografia, além de
possuir uma estrutura mais complexa.
O principal algoritmo assimétrico é o RSA (Rivest Shamir Addleman) que é um padrão
criado em 1977 e que utiliza chaves de 512, 768, 1024 ou 2048 bits. Tal algoritmo explora
9

propriedades específicas dos números primos e a dificuldade de fatorá-los mesmo em


equipamentos velozes.

2.1.3 Função de Hash

Uma função de Hash tem como principal função produzir um número, através da
mensagem que um determinado emissor quer transmitir. Este número também é conhecido
como resumo, que irá representar unicamente a mensagem a ser enviada. Então, quando um
determinado receptor receber a mensagem, este deverá recalcular a função de hash para
verificar se o resumo teve alguma alteração. Se este resumo for diferente significa que a
mensagem foi alterada, violando o princípio da integridade.
Deve-se destacar que, a partir de um dado resumo, é de extrema importância não ser
possível descobrir a mensagem original, além de ser improvável que duas mensagens
produzam o mesmo resumo.
Segundo ASSIS (2003), dentre os principais algoritmos para realização de função
hash, destacam-se
• Message Digest 5 (MD5) que retorna um resumo de 128 bits;
• Secure Hash Algorithm 1 (SHA-1) que retorna um resumo de 160 bits;
• Secure Hash Algorithm 2 (SHA-2), que retorna um resumo que pode ter 256, 384 e
512 bits.

2.1.4 Assinatura Digital

A Assinatura Digital é uma função de assinatura eletrônica que consiste em um selo


eletrônico que é acrescentado a um documento e que é criado através de um sistema de
criptografia assimétrica, ou seja, a chave privada serve para assinar o documento e a chave
pública serve para verificar a assinatura.
Então, um sistema de assinatura digital simples possui o seguinte processo: quando um
emissor quer assinar sua mensagem para ser entregue a um receptor, ele irá fazer uso de sua
chave privada para assinar a mensagem. No momento que o receptor receber esta mensagem,
ele irá utilizar a chave pública do emissor para produzir uma cópia da mensagem e fazer uma
comparação com a recebida. Desta forma, pode-se claramente comprovar que foi realmente o
10

emissor original da mensagem que a enviou, não sendo alterada durante a transmissão.
(Figura 5)

Emissor Receptor
Canal Inseguro

Chave Chave
Secreta Pública
Emissor Emissor

Cifrar Decifrar
Canal Inseguro

Fonte: GUILHERME (2010)


Figura 5 – Processo de Assinatura Digital

Adicionalmente, o processo de assinatura digital pode também usar o conceito de


função de hash. Como o uso de algoritmos de chaves públicas nas assinaturas digitais pode
causar muita demora em um processo de decifragem, a função de hash se mostra como uma
solução ideal.

2.1.5 Certificado Digital

O certificado digital é um tipo de documento que armazena a chave pública de um


usuário e seus dados de identificação. Este documento deve ser assinado e reconhecido por
uma entidade confiável, conhecida como Autoridade Certificadora.
Logo, os certificados digitais são utilizados para garantir a integridade e origem de
chaves públicas depositadas em bases de dados de acesso público. O padrão mais utilizado
para certificados digitais é o denominado X.509.
Um Certificado Digital normalmente possui as seguintes informações:
• Nome da pessoa ou entidade a ser associada à chave pública;
• Período de validade do certificado;
11

• Chave pública;
• Nome e assinatura da entidade que assinou o certificado;
• Número de série.

Portanto, conseguindo uma chave pública de um usuário associada a um certificado,


confiando-se na autoridade certificadora, podemos ter certeza de que a chave realmente
pertence ao usuário solicitado.

2.2. VIRTUAL PRIVATE NETWORK (VPN)

A sigla VPN significa Virtual Private Network, ou seja, Redes Privadas Virtuais, onde:
• Rede corresponde às redes de computadores;
• Privada corresponde à forma como os dados trafegam neste caso os dados
podem ser criptografados o que garante a privacidade das informações;
• Virtual por não fazerem, necessariamente, parte do mesmo meio físico
(FAGUNDES, 2007).

Então, uma VPN é uma rede privada construída sobre a infra-estrutura de uma rede
pública já existente, normalmente a Internet, onde o acesso e a troca de dados só são
permitidos a pessoas que estejam autorizadas. Desta forma, tem-se a construção de um túnel
entre duas ou mais redes, pelo qual pode ser configurado para garantir autenticidade de dados,
sigilo de informação, controle de acesso através de criptografia do tráfego de informação
entre uma rede e outra.

2.2.1 Principais Tipos de VPN

Existem basicamente, três tipos de configuração para o uso de uma VPN:

• Host- Host: Neste tipo de configuração de VPN, há o estabelecimento de um túnel


seguro entre duas máquinas (hosts), para que ambas possam se comunicar através do
meio público (Internet). As máquinas podem estar em redes separadas ou na mesma
rede, tal como ilustra a Figura 6:
12

Fonte: 3WAY (2010)


Figura 6 - Arquitetura Host – Host

• Host – Rede: Neste tipo de configuração de VPN, a principal finalidade é estabelecer


uma comunicação de um host externo com uma rede privada. Por exemplo, esta
estrutura pode ser utilizada quando se deseja estabelecer comunicação entre um
computador de casa com a rede privada corporativa de uma empresa, tal como ilustra a
Figura 7.

Fonte: 3WAY (2010)


Figura 7- Arquitetura Host – Rede

• Rede – Rede: Neste tipo de configuração de VPN, tem-se como principal finalidade
estabelecer a comunicação entre duas redes distintas. Um exemplo deste tipo de VPN é
quando se deseja interligar a rede matriz de uma empresa com a rede filial desta
mesma empresa, para que ambas se comuniquem de maneira segura, tal como
representado na Figura 8.
13

Fonte: 3WAY (2010)


Figura 8 - Arquitetura Rede – Rede

2.2.2 Vantagens e Desvantagens da VPN

Segundo CHIN (2010), uma das grandes vantagens decorrentes do uso das VPNs é a
redução de custos com comunicações corporativas, pois elimina a necessidade de links
dedicados de longa distância que podem ser substituídos pela Internet. As LANs podem, por
exemplo, através de links dedicados ou discados, conectarem-se a algum provedor de acesso
local e interligar-se a outras LANs, possibilitando o fluxo de dados através da Internet.
No entanto, uma VPN depende da rede pública (Internet) para realização de suas
conexões. Logo, esta rede pública deve estar quase que sempre disponível, porém isto é
praticamente impossível, pois podem ocorrer falhas nas mesmas, falhas de seguranças,
ataques externos, etc.

2.2.3 Principais Características e Requisitos

De acordo com CHIN (2010), quando se desenvolve um VPN, deve-se ter em mente
algumas características e requisitos que podem fazer parte do projeto a ser implementado.
Dentre as principais características, destacam-se:
• Autenticação de usuário: Verificação da identidade do usuário, restringindo o acesso
às pessoas autorizadas. Na maioria de vezes, temos recursos de usuário e senha para
garantir a autenticação;
14

• Gerenciamento de endereços: O endereço do cliente na sua rede privada não deve


ser divulgado, devendo-se adotar endereços fictícios para o tráfego externo, ou seja,
são criados endereços virtuais quando se estabelece um túnel entre duas pontas da
rede;
• Compressão e Criptografia dos dados: Os dados devem trafegar na rede pública ou
privada num formato cifrado e, caso sejam interceptados por usuários não autorizados,
não deverão ser decodificados, garantindo a privacidade da informação. Além disso,
tais dados devem ser comprimidos e compactados, quando forem transferidos para o
canal de comunicação da VPN;
• Gerenciamento de chaves: O uso de chaves que garantem a segurança das
mensagens criptografadas deve funcionar como um segredo compartilhado
exclusivamente entre as partes envolvidas. O gerenciamento de chaves pode garantir a
troca periódica das mesmas, visando manter a comunicação de forma segura;
• Suporte a múltiplicos protocolos: Uma VPN pode dar suporte aos mais variados
tipos de protocolos existentes usados em redes públicas, como: IP, IPX, Appletalk, etc.

2.2.4 Tunelamento

De acordo com MARLETA (2007), o tunelamento é uma técnica utilizada pela VPN
para encapsular um protocolo dentro de outro. Assim, pode-se utilizar esta técnica para que
seja possível que um pacote dentro de uma rede que não usa o protocolo IP, possa trafegar
pela Internet.
No entanto, quando se utiliza o tunelamento por meio de VPN, existem estratégias de
criptografia a serem adicionadas ao processo, antes de encapsular um pacote que irá ser
transportado pela rede. Logo, o processo de tunelamento em uma VPN é composto pelas
seguintes fases (ASSIS, 2003):
• Criptografia dos dados: Criptografar o pacote a ser transportado, de forma que o
torne ilegível em caso de interceptação da transmissão;
• Encapsulamento: Um dado protocolo de tunelamento encapsula os pacotes com um
cabeçalho que contém informações de roteamento, com identificação do destino do
pacote;
15

• Transmissão ao longo da rede: Os pacotes são roteados entre as extremidades do


túnel na rede intermediária (rede pública), até chegarem ao seu destino;
• Desencapsulamento: No destino, o pacote é desencapsulado, deixando apenas
informações do protocolo da rede local;
• Decriptografia dos dados: Realiza a descriptografia dos pacotes finais, de forma que
o torne legível para a outra extremidade do túnel.

A Figura 9 ilustra o processo de tunelamento:

Fonte: CHIN (2010)


Figura 9 - Processo de Tunelamento

Segundo ASSIS (2003), pode-se ter dois tipos de tunelamento:


• Tunelamento Voluntário: Quando uma estação de trabalho ou um servidor utiliza um
software para o cliente de tunelamento para criar uma conexão até o servidor VPN.
Este método é utilizado por clientes dial-up que primeiro conectam-se a Internet, para
depois criar o túnel utilizando o software, com isso o cliente passa a ser o fim do túnel;
• Tunelamento Compulsório: Neste tipo de tunelamento, o computador do usuário não
funciona como extremidade do túnel. Existe um servidor de acesso remoto, que está
localizado entre o computador do usuário e o servidor do túnel, pelo qual funciona
como uma das extremidades do túnel. Desta forma, não é necessário que os clientes de
rede tenham software cliente para tunelamento.
16

2.2.5 Protocolos de Tunelamento

Existem diversos protocolos utilizados para definir como os pacotes serão


encapsulados para serem transmitidos na rede pública, além de definir como uma chave de
criptografia será compartilhada entre os integrantes da comunicação e o tipo de autenticação
que será utilizada. Desta maneira, dependendo do tipo de protocolo utilizado, estes podem
atuar em camadas diferentes do modelo TCP/IP. Os principais protocolos utilizados para o
tunelamento são: PPTP (Point-to-Point Tunneling Protocol), L2F (Layer-2-Forwarding),
L2TP (Layer Two Tunneling Protocol), IPSEC (IP Security) e SSL/TLS (Secure Sockets
Layer/ Transport Layer Security).

2.2.5.1 PPTP

O PPTP (Point-to-Point Tunneling) é um protocolo de tunelamento para acesso


discado, tendo como principal desenvolvedor a Microsoft. Para se realizar criptografia
necessita-se de métodos específicos de autenticação em que seja possível a troca de uma
chave, já que a criptografia é simétrica. Não faz autenticação de pacotes e o túnel é construído
com computadores remotos, sendo, por isso, chamados de túneis voluntários, ou seja, o
próprio sistema permite que o usuário final configure e estabeleça conexões sem a
intermediação do provedor de acesso, fazendo o encapsulamento dos pacotes fim a fim
(MARLETA, 2007).
O protocolo PPTP é capaz de lidar com outros tipos de pacotes, além do IP, como o
IPX (Internet Packet Exchange) e o NetBEUI (Network Basic Input/Output System Extended
User Interface), pois é um protocolo baseado na camada de enlace. Este tipo de característica
torna-se a grande vantagem desse protocolo.

2.2.5.2 L2F

O L2F (Layer-2-Forwarding) é um protocolo cujo principal desenvolvedor foi a


Cisco. Tinha como missão permitir que provedores de acesso ou empresas de
telecomunicações oferecessem ao mercado acesso remoto discado para redes privadas. Desta
17

forma, as empresas não necessitariam adquirir modems ou equipamentos de acesso remoto.


Neste protocolo, o túnel é formado pelo provedor de acesso e não do computador remoto, por
isso são chamados de túneis compulsórios (MARLETA, 2007).
A grande vantagem desse protocolo é que os túneis podem suportar mais de uma
conexão, o que não é possível no protocolo PPTP. E assim como o PPTP, também permite
lidar com outros pacotes diferentes, como o IPX e NetBEUI (Network Basic Input/Output
System Extended User Interface) por ser um protocolo baseado na camada de enlace.

2.2.5.3 L2TP

Este protocolo foi criado pela IETF (Internet Engennering Task Force) para resolver as
falhas do PPTP e do L2F. Na verdade, utiliza os mesmo conceitos do L2F e assim como este,
foi desenvolvido para transportar pacotes por diferentes meios, como X.25, frame-relay e
ATM e também é capaz de lidar com outros pacotes diferentes, como o IPX e o NetBEUI
(CATRAMBY, 2010).
No entanto, o protocolo L2TP faz uso de um tunelamento compulsório, pelo qual temos
a criação do mesmo por um provedor de acesso, que não permite a um determinado usuário
realizar participação na criação do túnel. Assim, antes do túnel ser instalado, o usuário é
autenticado pelo provedor de acesso e depois autenticado quando a conexão é estabelecida
entre as duas pontas da comunicação VPN.

2.2.5.4 IPSEC

O protocolo IPSEC (IP Security) é considerado um conjunto de protocolos da camada


de rede, que define a arquitetura e as especificações para prover serviços de segurança dentro
do protocolo IP. Foi desenvolvido pela IP Security Work Group da IETF e será um padrão
utilizado para o IPV6. Logo, o IPSEC foi padronizado para garantir interoperabilidade,
mecanismo de criptografia para o IPV4 e também para o IPV6. Não se pode esquecer que o
IPSEC tem como principais características fornecer serviços de segurança, incluindo
integridade dos dados, autenticação, confidencialidade e limite do fluxo de tráfego
(MARLETA, 2007).
18

O protocolo IPSEC pode trabalhar de 2 modos distintos, que são os seguintes


(VASQUES e SCHUBER, 2002):
• Modo Transporte: Este modo é utilizado quando se trabalha com uma arquitetura de
VPN Host-Host, na qual o host é responsável pelo encapsulamento, e à medida que os
pacotes vão sendo criados são adicionados cabeçalhos IPSEC entre o cabeçalho IP
original e os dados;
• Modo Túnel: Este modo é utilizado entre comunicação de gateways, na qual o
gateway é responsável pelo encapsulamento, que mais tarde irá desencapsular em
outra ponta da comunicação para ser entregue ao host. Então, o pacote original é
encapsulado em um novo pacote com criptografia do IPSEC, incluindo um cabeçalho
original. Este modo é bem mais seguro, em comparação com o outro modo.

Além disso, o protocolo IPSEC é constituído de vários outros protocolos que garantem
a segurança durante a transmissão de informações pela rede pública. Os dois principais
protocolos são (FAGUNDES, 2007):
• AH (Autentication Header): Este protocolo garante autenticidade e a integridade do
pacote, ou seja, que este não foi modificado durante a sua transmissão;
• ESP (Encapsulating Security Payload): Este protocolo fornece autenticação,
confidencialidade e integridade dos dados trafegados durante a comunicação.

2.2.5.5 SSL/TLS

O protocolo SSL (Secure Sockets Layer) foi originalmente desenvolvido pela empresa
Netscape e ao ser padronizado recebeu o nome de TLS (Transport Layer Security), sendo que
a versão TLS 1.0 é equivalente ao SSL 3.0.
O SSL foi projetado para fornecer criptografia dos dados e autenticação entre um
cliente e um servidor Web. O protocolo começa com uma fase de apresentação mútua que
negocia um algoritmo de criptografia e chaves, e depois autentica o servidor para o cliente,
também podendo o cliente ser autenticado para o servidor. Uma vez concluída a apresentação
mútua e iniciada a transmissão de dados da aplicação, todos os dados são criptografados
usando chaves de sessão negociadas durante a fase de apresentação mútua (KUROSE, 2004).
19

Um exemplo de funcionamento básico deste tipo de protocolo é quando existe um


servidor web que está sendo acessado por meio de um cliente (browser). Neste caso, o
servidor envia uma chave pública ao browser. O browser usa esta chave para criptografar sua
chave simétrica e envia a mesma para o servidor. Desta forma, servidor e o cliente
compartilham a mesma chave simétrica, podendo ser utilizada para realizar a criptografia de
todos os dados que forem transmitidos entre as duas entidades, dentro de um canal de
comunicação.
Logo, o SSL é considerado uma adição de uma nova camada acima da camada de
transporte do modelo TCP/IP, isto é, fica entre a camada de transporte e a camada de
aplicação (Figura 10). Ele pode rodar sobre outros protocolos como HTTP, TELNET, FTP,
SMTP dentre outros, transparentemente, de modo que o usuário da aplicação praticamente não
o perceba sua presença. Como exemplo, o HTTPS, que é o protocolo HTTP rodando sobre
uma conexão SSL.

Fonte: GTA (2010)


Figura 10 – Camadas do modelo TCP/IP modificadas com SSL

O protocolo SSL é dividido em duas camadas (Figura 11): Record e Handshake. A


camada Record é responsável por encapsular os dados das camadas superiores em pacotes
compactados e cifrados e repassá-los para a camada de transporte. Já a camada Handshake
permite que a aplicação servidora e a aplicação cliente autentiquem-se e negociem os
algoritmos de cifragem e as chaves criptográficas antes que o protocolo de aplicação receba
ou envie seu primeiro byte (SOUSA e PUTTINI, 2010).
20

Fonte: SOUSA e PUTTINI (2010)


Figura 11 - Camadas do protocolo SSL

2.3 STREAMING DE VÍDEO

Há alguns anos, para se assistir um vídeo na Internet, consumia-se em um elevado


tempo para download, pelo qual o usuário teria que realizar o download completo do vídeo
em seu computador, para depois assisti-lo. Desta forma, surgiu a possibilidade de reproduzir o
vídeo desejado antes mesmo que todo o arquivo fosse gravado localmente no computador. Tal
tecnologia ficou conhecida como streaming, que é composta por técnicas de compressão e
armazenamento em memória temporária (buffer).
O streaming de vídeo funciona da seguinte maneira: O computador cliente conecta-se
com o servidor e este começa a lhe enviar o arquivo de vídeo. O cliente começa a receber o
arquivo de vídeo e constrói um buffer onde começa a salvar a informação. Quando o buffer é
preenchido com uma pequena parte do arquivo, conhecido como stream, o cliente começa a
executar e ver o arquivo em um player enquanto, simultaneamente, o download é continuado.
Portanto, o sistema está sincronizado para que o arquivo possa ser visto enquanto se baixa o
arquivo, podendo ser rápido ou não dependendo da banda de rede disponível do usuário
(ALVAREZ, 2010).
A Figura 12 demonstra essa interação, onde uma fonte (servidor) envia um arquivo por
meio de fluxo de dados (stream) que serão entregues ao destino (cliente):
21

Fonte: SAUVÉ (2010)


Figura 12 - Processo de Streaming

Deve-se destacar que questões relacionadas à temporização e a tolerância à perda de


dados são meramente importantes para aplicações de multimídia em rede, como é o caso de
streaming de vídeo. Considerações de temporização são importantes porque muitas aplicações
de multimídia são altamente sensíveis ao atraso. Entretanto, estas aplicações são mais
tolerantes a perda de dados, na qual perdas esparsas causam pequenas falhas que podem
passar desapercebidas (KUROSE e ROSS, 2004).

2.3.1 Aplicações Multimídia

Existem diversas aplicações multímidias, tendo como destaque: Streaming de Vídeo


Armazenado, Streaming de Vídeo ao Vivo e Vídeo Interativo em Tempo Real.

2.3.1.1 Streaming de Vídeo Armazenado

De acordo com KUROSE e ROSS (2004), neste tipo de aplicação multimídia, os


clientes requisitam, sob demanda, arquivos de vídeo comprimidos que estão armazenados em
servidores. Tal aplicação possui três características fundamentais:
• Mídia armazenada: O conteúdo de vídeo foi pré-gravado e está armazenado no
servidor. Desta forma, o usuário pode fazer pausa, voltar, avançar, dentre outras
funções, que são similares a um VCR;
• Fluxo Contínuo: O cliente inicia a reprodução do vídeo alguns segundos após
começar a receber o arquivo do servidor. Ou seja, o cliente estará reproduzindo uma
22

parte do arquivo ao mesmo tempo em que está recebendo do servidor partes do


arquivo que estão mais a frente;
• Reprodução Contínua: Uma vez que a reprodução começa, isto deve ocorrer de
acordo com o tempo original de gravação, pelo qual a informação deve chegar ao
destino, a tempo de ser vista corretamente pelo cliente.

2.3.1.2 Streaming de Vídeo ao Vivo

Segundo KUROSE E ROSS (2004), neste tipo de aplicação, tem-se uma semelhança
em relação à transmissão tradicional de rádio e televisão, no entanto a transferência da
informação é feita pela Internet, permitindo que o usuário receba uma transmissão de rádio ou
televisão ao vivo de qualquer parte do mundo.
Nesta aplicação, um cliente não pode interagir com o vídeo que está recebendo, visto
que o fluxo contínuo de vídeo não é armazenado. Entretanto, com o armazenamento local de
dados recebidos, outras operações interativas, como pausa e retrocesso, são possíveis em
alguns casos.

2.3.1.3 Vídeo Interativo em Tempo Real

Essa aplicação permite às pessoas utilizar áudio e vídeo para comunicar-se em tempo
real. Dentre as aplicações interativas em tempo real temos softwares de telefonia e
videoconferência na Internet, onde dois ou mais usuários podem se comunicar oral e
visualmente.
Para uma conversação com interação entre vários usuários, o atraso entre o momento
em que o usuário fala ou se move e o momento em que a ação se manifesta nos hospedeiros
receptores deve ser menor que algumas centenas de milissegundo. Portanto, este tipo de
aplicação torna-se mais exigente nos requisitos de atraso de informações (KUROSE e ROSS,
2004).
23

2.3.2 Streaming Unicast e Multicast

De acordo TSCHÖKE (2001) o fluxo de dados enviados do servidor para o cliente


pode ser feitos através de dois métodos principais:
• Unicast: É uma conexão ponto-a-ponto entre o cliente e o servidor, onde cada cliente
recebe seu próprio stream do servidor. Dessa forma, cada usuário conectado ao stream
tem sua própria conexão e os dados vêm diretamente do servidor. A vantagem deste
método é que os computadores clientes podem requisitar diretamente o stream do
servidor e a desvantagem é cada cliente que conectar ao servidor irá receber um
stream separado, o que ocasiona o aumento de consumo da largura de banda da rede
(Figura 13);

Fonte: CATALIN (2010)


Figura 13 - Streaming Unicast

• Multicast: Ocorre quando o conteúdo é transmitido sobre uma rede com suporte à
multicast, onde todos os clientes na rede compartilham o mesmo stream. Desta forma,
temos a vantagem de que apenas uma cópia do stream seja enviada na rede para um
grupo de clientes, reduzindo o tráfego na conexão. A grande desvantagem deste
método é que os clientes não possuem controle em cima dos streams recebidos, ou
seja, não podem avançar, pausar, retroceder, continuar o conteúdo recebido, apenas o
recebe (Figura 14).
24

Fonte: CATALIN (2010)


Figura 14 - Streaming Multicast

2.3.3 Protocolos Multimídia

Existem vários protocolos que podem ser utilizados para realizar a transmissão de
streaming de vídeo na Internet, sendo que os principais são: HTTP, RTP, RTCP e RTSP.

2.3.3.1 HTTP

O HTTP (Hypertext Transfer Protocol) é um protocolo da camada de aplicação da


Web, na qual é implementado em dois programas: um programa cliente e outro servidor. Os
dois programas, executados em sistemas finais diferentes, conversam um com o outro por
meio da troca de mensagens HTTP, sendo que o HTTP define a estrutura dessas mensagens e
o modo como o cliente o servidor as trocam (KUROSE e ROSS, 2004).
Então, o protocolo HTTP utiliza o protocolo de transporte TCP, pelo qual um cliente
inicia uma conexão TCP com o servidor na porta 80 (portão padrão do HTTP). O servidor
aceita a conexão TCP do cliente, e assim mensagens HTTP são trocadas entre o cliente
(normalmente um browser) e o servidor (normalmente um servidor Web). Finalmente a
conexão TCP é finalizada e fechada.
Segundo URBIÊTA (2007), o protocolo HTTP não foi criado para streaming de dados,
na qual a comunicação sobre o protocolo HTTP é stateless, ou seja, o servidor não mantém
informações sobre os pedidos passados pelos clientes e usualmente respostas do HTTP
utilizam buffer. Entretanto, a versão HTTP 1.1 adicionou suporte para streaming através do
25

cabeçalho keep-alive, onde uma conexão permanece aberta até ser finalizada pelo cliente ou
pelo servidor.
O protocolo HTTP, normalmente não realiza streaming em tempo real, para fazer este
procedimento, necessita-se de uma largura de banda da rede maior que a taxa de dados do
vídeo. Logo, como tal protocolo roda em cima do protocolo TCP, a sensibilidade de perdas de
pacotes é alta, transformando esse protocolo inadequado para streaming ao vivo, sendo mais
utilizada para streaming de vídeo armazenado.

2.3.3.2 RTP

O protocolo RTP (Real Time Protocol) é um protocolo que oferece funções de


transporte de rede fim a fim para aplicações que transmitem fluxos de dados em tempo real.
Logo, o protocolo RTP é utilizado para transportar pacotes com formatos de dados para áudio
e para vídeo, cujos pacotes RTP normalmente são enviados através do protocolo UDP da
camada de transporte da arquitetura TCP/IP. Ou seja, RTP roda em cima do UDP, na camada
de transporte, de acordo com a Figura 15.

Fonte: KUROSE e ROSS (2004)


Figura 15 - RTP sobre UDP

De acordo com ALMEIDA (2010), o protocolo RTP pode ser usado não somente em
uma comunicação ponto a ponto, mas também pode ser usada em uma comunicação
multicast. Este protocolo não reserva recursos nem garante qualidade de serviço (QoS),
todavia ele é na maioria da vezes utilizado em paralelo com o protocolo RTCP (Real Time
Control Protocol) permitindo que haja certa monitoração da comunicação.
26

Além disso, o RTP permite atribuir a cada fonte (por exemplo, uma câmera ou um
microfone) o seu próprio fluxo de pacotes RTP independente. Por exemplo, para uma
videoconferência entre dois participantes, quatro fluxos RTP poderiam ser abertos: dois fluxos
para transmitir o áudio (um em cada direção) e dois fluxos para o vídeo (novamente, um em
cada direção). Contudo, algumas técnicas de codificação populares, incluindo MPEG1 e
MPEG2, reúnem o áudio e o vídeo num único fluxo durante o processo de codificação.
Quando o áudio e o vídeo são reunidos pelo codificador, então apenas um fluxo RTP é gerado
em cada direção (KUROSE e ROSS, 2004).
Enfim, segundo KUROSE e ROSS (2004), o protocolo RTP possui diversos campos
específicos localizados dentro de seu cabeçalho, que oferecem funções importantes ao suporte
de streaming de vídeo. Os principais são:
• Tipo de carga: Usado para indicar o tipo de codificação que está sendo usado no
momento, ou seja, o formato dos dados transportados (Ex: Vídeo MPEG1, Vídeo
MPEG2, Motion JPEG, Áudio MPEG, etc);
• Número de Seqüência: Um número de seqüência é incrementado de um a cada
pacote RTP enviado, podendo ser usado para detectar perdas de pacotes e para
recuperar a seqüência de pacotes;
• Marca de Tempo: É um número que permite sincronizar a aplicação servidora e
cliente e eliminar a variação de atraso de pacotes através da indicação temporal do
momento em que foi gerado o sinal de streaming;
• Identificador de sincronização da fonte (SSRC – Synchronization source
identifier): Identifica a fonte do fluxo RTP, pelo qual cada fluxo numa sessão RTP
deve ter um SSRC distinto.

2.3.3.3 RTCP

O protocolo RTCP (Real Time Control Protocol) é normalmente utilizado em conjunto


com o protocolo RTP para monitoramento da comunicação. Cada participante de uma sessão
RTP transmite periodicamente pacotes de controle RTCP para todos os outros participantes.
Deste modo, cada pacote RTCP contém relatórios do transmissor ou do receptor que serão
úteis para a aplicação (KUROSE e ROSS; 2004).
Os relatórios gerados pelo protocolo RTCP são compostos por estatísticas que incluem
o número de pacotes enviados, número de pacotes perdidos, variação de atraso entre
27

chegadas, etc. Estas informações podem ser utilizadas para controle do desempenho de
transmissão e para fins de diagnóstico.
Então, de acordo com ALMEIDA (2010), o uso das informações geradas pelos
relatórios é importante, quando todos os participantes da comunicação poderão estar enviando
pacotes RTCP a todo o momento. Nesta situação é necessário restringir a taxa de transmissões
dos participantes para não sobrecarregar a rede, havendo um controle de banda.

2.3.3.4 RTSP

O RTSP (Real Time Streaming Protocol) é um protocolo da aplicação do tipo cliente-


servidor, na qual permite ao usuário controlar apresentações de mídia contínua, tais como:
voltar ao início, avançar, pausar, continuar, etc.
De acordo com KUROSE e ROSS (2004), o RTSP não define e não restringe as
seguintes características:
• Não define esquemas de compressão para áudio e vídeo;
• Não define como o áudio e vídeo são encapsulados em pacotes para transmissão em
uma rede, sendo que o encapsulamento para mídia de fluxo contínuo pode ser
fornecido por RTP;
• Não restringe como a mídia contínua é transportada, podendo usar UDP ou TCP;
• Não restringe como o receptor armazena o áudio e o vídeo, a qual o áudio e o vídeo
podem ser reproduzidos logo que começa a chegar ao cliente, após um atraso de
alguns segundos, ou pode ser descarregado integralmente antes de ser reproduzido.

O RTSP é considerado um protocolo “fora de banda”, isto é, as mensagens de controle


RTSP usam diferentes números de portas em relação ao fluxo de dados de mídia contínua, e,
portanto são enviados “fora de banda”. Já o fluxo de dados de mídia contínua, cuja estrutura
não é definida pelo RTSP, é considerado “dentro de banda”. As mensagens RTSP usam o
número de porta 554 e a corrente de mídia utiliza um número diferente, sendo que as
mensagens RTSP podem ser enviadas por TCP ou UDP (KUROSE e ROSS, 2004).
Na figura 16, tem-se um exemplo de comunicação RTSP entre o cliente e o servidor:
28

Fonte: W3C (2010)


Figura 16 - Comunicação RTSP

Neste exemplo, o cliente obtém uma descrição de apresentação multimídia do


servidor, que pode ser através de um servidor Web, usando HTTP. Essa apresentação de
descrição é um arquivo que contém informações sobre a mídia a ser enviada, tais como,
formato de codificação, característica dos fluxos de mídia, etc. Depois disto, o cliente irá
chamar um transdutor de mídia (tocador), com base de conteúdo da descrição de
apresentação. E, teremos os seguintes passos (KUROSE e ROSS, 2004):
a) O cliente através do transdutor envia o comando de requisição RSTP SETUP para
iniciar uma sessão, e o servidor envia uma resposta de confirmação (RTSP OK), que
irá conter um identificador de sessão utilizado nas outras requisições;
b) O cliente através do transdutor envia o comando de requisição RSTP PLAY e o
servidor envia uma resposta de confirmação (RTSP OK), iniciando a transmissão dos
dados;
c) O servidor descarrega o fluxo de mídia (áudio e vídeo), através do protocolo RTP;
d) O cliente através do transdutor envia o comando de requisição RSTP PAUSE e o
servidor envia uma resposta de confirmação (RTSP OK), pausando a reprodução do
vídeo;
e) O cliente através do transdutor envia o comando de requisição RSTP TEARDOWN e o
servidor envia uma resposta de confirmação (RTSP OK), finalizando a sessão.
29

2.3.4 Codec e Compressão de dados

Um Codec é considerado um algoritmo, que possui a responsabilidade de comprimir


dados, quando ocorrer algum tipo de gravação e produção de arquivos de áudio ou vídeo, e
descomprimir quando o arquivo estiver sendo executado. Um Codec também possui a função
de realizar a codificação e a decodificação dos dados, isto é, converter os sinais analógicos em
sinais digitais.
De acordo com KUROSE e ROSS (2004), a necessidade de digitalização é óbvia, uma
vez que as redes de computadores transmitem bits, e toda informação transmitida deve ser
representada como uma seqüência de bits. Logo, a compressão dos dados é importante porque
o áudio e vídeo não comprimidos consomem um quantidade elevada de capacidade de
armazenamento e de largura de banda. Tais fatores podem prejudicar a transmissão de
streaming de vídeo, na qual exige uma boa qualidade de largura de banda para uma
transmissão sem atrasos.
Existem diversos Codecs para compressão, tanto para áudio como para vídeo. Dentre
os Codecs para áudio destacam-se PCM, MPEG-Audio, MP3, dentre outros. Os mais
conhecidos para vídeo, tem-se MPEG-1 para vídeo com qualidade de CD-ROM, MPEG-2
para vídeo com qualidade de DVD, MPEG-4 para compressão de vídeo na Internet, entre
vários outros Codecs.

2.4. FERRAMENTAS PARA VPN

Para a criação de uma VPN, existem várias ferramentas para o seu desenvolvimento.
Dentre as mais importantes, destacam-se: FreeS/Wan e OpenVPN.

2.4.1 FreeS/Wan

Desenvolvida em 1996, esta ferramenta implementa os protocolos do IPSEC, com a


finalidade de proteger a comunicação da Internet contra ataques de interceptação, utilizando
um mecanismo gratuito. Por usar recursos criptográficos, o FreeS/WAN sofre com algumas
leis de exportação, principalmente as dos Estados Unidos, que proíbem a exportação de
30

qualquer software criptográfico de computadores deste país, sem a prévia autorização do


governo. Em geral, estas leis restringem inclusive quando o software já é de domínio público
ou são oriundos de outros países. Por esta razão, o projeto não pode aceitar qualquer
contribuição de cidadãos americanos, nem mesmo para correções de problemas no software
(VASQUES e SCHUBER, 2002).
Como o fundador do projeto do FreeS/WAN, John Gilmore, é americano, ele não pode
desenvolver o código, função essa desempenhada por uma equipe de canadenses, residentes
no Canadá, a fim de evitar problemas com o governo (VASQUES e SCHUBER, 2002).
Esta ferramenta para criação de VPN segue um padrão de algoritmos de chaves
assimétrica RSA, simétrica 3DES, funções de hash MD5 e SHA-1. Ela também utilizada o
recurso de IKE (Internet Key Exchange), que é utilizado para estabelecer uma relação de
confiança entre as duas entidades da VPN, para negociar opções de segurança, como por
exemplo, trocas de chaves de criptografia.
Portanto, esta ferramenta não será usada para a configuração da VPN, uma vez que não
é tão simples de implementar com o protocolo IPSEC. Além disso, o projeto de
desenvolvimento da ferramenta não está mais em andamento, estando desatualizado.

2.4.2 OpenVPN

O OpenVPN é um software de código aberto que implementa o protocolo SSL/TLS


(Secure Sockets Layer/Transport Layer Security), o qual estabelece um canal de comunicação
criptografada entre o cliente e o servidor, e permite realizar diferentes tipos de VPN, como:
Host-Host, Host-Rede e Rede-Rede. O software foi escrito por James Yonan e publicado sob
licença GNU General Pulic Licence (GPL), e é um serviço que roda sobre a camada de
aplicação, podendo ser utilizados em várias plataformas: Linux, FreeBSD, OpenBSD,
NetBSD, Windows 2000/XP, Solaris e Mac OS X.
Pode operar basicamente em três modos de operação: sem nenhuma criptografia,
criptografia com chaves estáticas ou no modo TLS. No modo sem nenhuma criptografia, tem-
se apenas a criação do túnel para comunicação entre as entidades. Já no modo de criptografia
com chaves estáticas, existem chaves pré-compartilhadas entres as entidades da comunicação,
a qual será simétrica para ambos, sendo um método simples e rápido de implementar. E no
modo TLS, tem-se uma comunicação criptografada por meio de chaves públicas, trabalhando
31

junto com certificados e algoritmos assimétricos (Ex: RSA), pelo qual as chaves serão
trocadas periodicamente.
O OpenVPN utiliza a biblioteca OpenSSL para prover criptografia entre ambos os
canais de controle de dados. Assim, o OpenSSL realiza o funcionamento de toda a criptografia
e autenticação, permitindo ao OpenVPN utilizar todas as cifras disponíveis no pacote do
OpenSSL.
Além, disso o OpenVPN pode ser configurado para transportar os dados sobre TCP ou
UDP e tem a grande vantagem de conseguir estabelecer conexões diretas entre computadores
que estejam atrás de Firewalls, tendo um ótimo desempenho e suportando o trabalho junto
com Proxy Servers e NAT (Network Address Translation).
Não se pode esquecer que o OpenVPN faz uso de uma interface genérica (TUN/TAP)
para a criação da interface de rede virtual, permitindo que ele funcione corretamente, e desta
forma cada VPN aparece na tabela de roteamento como se fosse uma placa adicional da rede.
O sistema operacional, na qual o OpenVPN está rodando deve ter suporte a este tipo de
interface. No caso do Linux, que será utilizado para a configuração da VPN, as versões de
kernel anteriores a 2.2, é necessário realizar a instalação deste driver e recompilar o kernel.
Para usuários do kernel 2.4.7 ou superior o suporte a esse driver já está incluído
(FAGUNDES, 2007).
Para finalizar, existe outra característica opcional que pode ser utilizada durante a
configuração da VPN: utilizar uma biblioteca de compressão chamada LZO, que tem a função
de compactar os dados que irão ser transmitidos pela rede.

2.5 FERRAMENTAS PARA STREAMING DE VÍDEO

Para a criação de streaming de vídeo existem várias ferramentas para o seu


desenvolvimento. Dentre as mais importantes, destacam-se: VLC Media Player e Flumotion
Streaming Software.
32

2.5.1 VLC Media Player

O VLC Media Player é um player multimídia de código aberto, que foi desenvolvido
por estudantes da Ecole Centrale Paris além de colaboradores de vários lugares do mundo.
Por ser um programa e um projeto de código aberto, o mesmo pode ser instalado e
configurado em vários sistemas operacionais (Windows, Linux, MacOS, etc), suportando
vários formatos e Codecs de áudio e vídeo. Para vídeo destacam-se MPEG-1, MPEG-2,
MPEG-4, DVD, OGM, VCDs, DivX, dentre outros. Já para áudio tem-se FLAC, MP3, WAV,
OGG, etc.
Além de todas essas características do VLC, não se pode esquecer-se de uma de suas
principais funções, que é a capacidade de realizar streaming de vídeo e áudio por uma rede,
fazendo o uso de vários protocolos de streaming, como RTP, RTSP, HTTP, UDP, etc. Desta
forma, tal ferramenta pode ser utilizada como um servidor de streaming de vídeo, tendo
suporte a uma transmissão Unicast ou Multicast.
O VLC faz parte de uma das soluções do projeto chamado VideoLAN, que além do
VLC, tem o VLS como outra opção. O VLC derivado do nome VideoLAN Client é basicamente
usado como servidor e como cliente para realizar streaming de vídeo e receber streaming de
vídeo. Por outro lado, o VLS derivado do nome VideoLAN Server é utilizado apenas como
servidor de streaming de vídeo. Nas primeiras versões do projeto, o VLS era mais
aconselhável para criação do servidor de streaming de vídeo, tendo que usar o VLC como
cliente. Entretanto, nas ultimas versões do VLC, o mesmo possui praticamente as mesmas
funcionalidades do VLS, podendo ser utilizado como servidor e cliente ao mesmo tempo,
sendo seu uso mais aconselhável, segundo o próprio site da VideoLAN
(http://www.videolan.org/vlc/streaming.html)

2.5.2 Flumotion Streaming Software

De acordo com URBIÊTA (2007), o Flumotion Streaming Software é um programa


servidor para realizar streaming de vídeo e foi desenvolvido pela empresa Fluendo. Tal
ferramenta é distribuída em duas versões: a básica e a avançada. A versão básica é livre, tendo
suporte a alguns tipos de formatos livres para realizar streaming (Ex.: OGG, Theora, etc). Já a
33

versão mais avançada, utilizada para uso comercial, tem mais funções e recursos, podendo
trabalhar e dar suporte para formatos de áudio e vídeo proprietários (Ex.: MPEG).
Esta ferramenta tem a capacidade de realizar streaming de vídeo apenas por meio do
protocolo HTTP, necessitando do protocolo de transporte TCP para isto. Desta forma, não
possui protocolos específicos de streaming, como RTSP e RTP, para trabalhar com esta
ferramenta, tornado o processo de configuração um pouco mais restrito. Além disso, opera
apenas sobre Linux, não possuindo versões para outros tipos de sistemas operacionais.
Enfim, esta ferramenta não será usada para ser feita a configuração de streaming de
vídeo, uma vez que possui apenas suporte para protocolo HTTP, o que deixaria o estudo do
projeto um pouco mais limitado.
34

3. METODOLOGIA DE DESENVOLVIMENTO

Este capítulo tem como finalidade descrever como foi feita a configuração da VPN
bem como a configuração do servidor de streaming de vídeo, explicando passo a passo os
detalhes das configurações, para depois serem realizados testes de integração.

3.1 FERRAMENTAS UTILIZADAS

Será utilizado o software OpenVPN para a configuração da VPN e o software VLC


Media Player para a configuração do servidor de streaming de vídeo. Para os testes de análise
de desempenho, será utilizado o software Wireshark, que é um programa que analisa o tráfego
de rede, possibilitando a captura e filtragem de pacotes transmitidos pela rede.

3.2 CONFIGURAÇÃO DA VPN

3.2.1 Cenário de Configuração

Será utilizado o software OpenVPN na versão 2.1.1 para o desenvolvimento de uma


VPN entre dois computadores (hosts). Um host será o servidor e o outro será o cliente, na qual
ambos irão se interconectar através de um túnel criptografado. No caso, tem-se uma VPN do
tipo host-host. Foi escolhida esta ferramenta, por ser um software estável, simples de
configurar, além de ser um projeto que está sempre em desenvolvimento, sendo facilmente
instalada no sistema operacional Ubuntu. Deve-se destacar que tal ferramenta trabalha no
nível da camada de aplicação do modelo TCP/IP, levando a uma configuração fácil e objetiva.
A configuração do OpenVPN para o desenvolvimento da VPN será feita por meio de
chave estática compartilhada (criptografia simétrica) entre o servidor e o cliente, pelo qual o
tamanho dessa chave é de 2048 bits utilizada para criptografar os dados transmitidos pelo
túnel. Desta forma, com uma configuração de chave estática compartilhada, tem-se um
método simples, rápido de implementar, sendo mais veloz, levando em consideração que irá
ser realizada a transmissão de streaming de vídeo pela VPN, a qual exige que a comunicação
35

não tenha tantos atrasos de pacotes e sobrecarga de processamento. A chave de tamanho de


2048 bits é um chave padrão fornecida pelo OpenVPN neste tipo de configuração, sendo um
tamanho bom em nível de segurança para uma configuração de rede local.
Um detalhe importante é que a configuração da VPN entre os dois hosts será feita em
uma mesma rede local, visto que se pretende apenas estudar e entender como funciona uma
VPN, tornando o processo mais simples, podendo no futuro servir como base para uma
implementação mais sofisticada.
A Tabela 1 apresenta algumas especificações dos dois computadores a serem
utilizados nesta configuração.

Tabela 1 – Especificações dos Computadores


Computador Servidor Computador Cliente
Sistema Operacional Ubuntu 10.04 Sistema Operacional Ubuntu 10.04
IP Local: 192.168.0.101 IP Local: 192.168.0.100
IP Virtual VPN: 10.0.0.1 IP Virtual VPN: 10.0.0.2

3.2.2 Instalação do OpenVPN

Teve-se que fazer a instalação do OpenVPN nas duas máquinas (servidor e cliente).
Desta forma, foi utilizado o comando apt-get, principal instalador de pacotes do Ubuntu, tal
como segue:

apt-get install openvpn

3.2.3 Driver TUN/TAP

Antes de configurar o OpenVPN, foi feito o carregamento do driver TUN/TAP, que


realiza a criação da interface de rede virtual utilizada pela VPN para transmissão dos dados
pelos IPs virtuais. O carregamento foi feito através do seguinte comando no terminal:

modprobe tun

Também se acrescentou o módulo tun dentro do arquivo /etc/modules para que ele
seja carregado no kernel a cada boot. O módulo tun é responsável pelas interfaces virtuais que
36

o OpenVPN cria. Então, foi digitado no terminal do servidor e do cliente, o seguinte comando
(MORIMOTO, 2010):

echo tun >> /etc/modules

3.2.4 Geração da Chave de Criptografia

Depois de ter instalado o OpenVPN nas duas máquinas e ter carregado o módulo tun
no kernel, será gerado a chave estática de criptografia no servidor.
Primeiramente deve-se acessar o diretório padrão onde estarão os arquivos de
configuração, através do comando abaixo:

cd /etc/openvpn

Depois, gera-se a chave de criptografia, através do seguinte comando (MAGUIONE,


2010):

openvpn --genkey --secret chave.key

Desta forma, gerou-se uma chave estática de criptografia, com o nome de chave.key,
com o conteúdo da Figura 17.

Figura 17 - Conteúdo da chave estática


37

3.2.5 Cópia da Chave Estática para o Cliente

Depois de ter gerado a chave estática de criptografia no servidor, terá que ser feita a
cópia da chave para o cliente de uma maneira segura. Então foi necessário instalar o
OpenSSH, no servidor e no cliente. O OpenSSH é uma coleção de programas de computador
que provem a criptografia em sessões de comunicações em uma rede de computadores usando
o protocolo SSH.
Então, no servidor foi instalado o OpenSSH Server, através do seguinte comando no
terminal:

apt-get install openssh-server

Já no cliente, teve-se que instalar o OpenSSH Client, através do seguinte comando no


terminal:

apt-get install openssh-client

Depois de ter instalado o pacote OpenSSH no servidor e no cliente, o servidor foi


acessado a partir do cliente, através de SFTP (Secure File Transfer Protocol, também
conhecido como SSH File Transfer Protocol), o qual é um protocolo de rede que oferece o
acesso a arquivos, transferências de arquivos e funcionalidade de gerenciamento de arquivos
de maneira segura. O SFTP já está incluso no pacote OpenSSH.
Portanto, no cliente, foram digitados alguns comandos para acessar o servidor e
transferir a chave, como mostra a Figura 18:
38

Figura 18 - Transferência da chave estática

Primeiramente deve-se acessar o diretório para onde será copiada a chave estática (cd

/etc/openvpn) e conectar ao servidor através do protocolo SFTP (sftp

root@192.168.0.101), onde se deve digitar a senha do usuário root do servidor.


Depois de conectado ao servidor, acessa-se o diretório onde se encontra a chave
estática (cd /etc/openvpn), onde é realizada a cópia da chave (get chave.key). E

finalmente desconecta-se do servidor (quit).

3.2.6 Configuração do Servidor

Primeiramente, foi necessário criar um arquivo chamado servidor.conf no diretório

/etc/openvpn do servidor:

touch servidor.conf
39

Dentro deste arquivo, foi colocado o seu conteúdo de configuração, onde os


comentários de cada comando estão identificados com “#”:
#Utilização da Interface Virtual da VPN
dev tun

#IP Remoto do cliente


remote 192.168.0.100

#Endereço IP virtual da VPN no servidor e no cliente, ou seja, direção do túnel do servidor


para o cliente
ifconfig 10.0.0.1 10.0.0.2

#Protocolo utilizado para transporte dos dados


proto udp

#Porta padrão da VPN usada pelo OpenVPN


port 1194

#Diretório de localização da chave estática


secret /etc/openvpn/chave.key

#Compressão de dados através da biblioteca LZO


comp-lzo

#Realiza monitoramento da conexão: primeiro número dá um ping para o cliente a cada 10


segundos sem atividade, e o segundo número identifica que a VPN é reiniciada depois de 120
segundos sem resposta.
keepalive 10 120

#Mantém a chave carregada quando a VPN é reiniciada


persist-key

#Mantém a interface tun carregada quando a VPN é reiniciada


persist-tun

#Caso o IP da outra máquina mude, o túnel continua estabelecido


float

#Nível de log 3. Existem níveis 0,1,3 e 9. Quanto maior o nível, maior será o detalhamento do
log.
verb 3

#Arquivo que mostra informações de status da conexão


status /var/log/openvpn/servidor-status.log

#Arquivo de log que mostra o estabelecimento da conexão


log-append /var/log/openvpn/servidor.log
40

Após ter ajustado o arquivo de configuração do servidor, foram criados os arquivos de


log do OpenVPN, que são importantes, por exemplo, para detectar algum erro de conexão.
Mas primeiro, criou-se um diretório, onde foram armazenados os arquivos de log:

mkdir /var/log/openvpn

E depois se criou os arquivos de log do servidor:

touch /var/log/openvpn/servidor-status.log

touch /var/log/openvpn/servidor.log

3.2.7 Configuração do Cliente

Primeiramente, foi necessário criar um arquivo chamado cliente.conf no diretório

/etc/openvpn do cliente:

touch cliente.conf

Dentro deste arquivo, foi colocado o seu conteúdo de configuração, onde os


comentários de cada comando estão identificados com “#”:
#IP Remoto do servidor
remote 192.168.0.101

#Utilização da Interface Virtual da VPN


dev tun

#Endereço IP virtual da VPN no cliente e no servidor, ou seja, direção do túnel cliente para o
servidor
ifconfig 10.0.0.2 10.0.0.1

#Protocolo utilizado para transporte dos dados


proto udp

#Porta padrão da VPN usada pelo OpenVPN


port 1194

#Chave estática
secret /etc/openvpn/chave.key

#Compressão de dados através da biblioteca LZO


41

comp-lzo

#Realiza monitoramento da conexão: primeiro número dá um ping para o servidor a cada 10


segundos sem atividade, e segundo número identifica que a VPN é reiniciada depois de 120
segundos sem resposta.
keepalive 10 120

#Mantém a chave carregada quando a VPN é reiniciada


persist-key

#Mantém a interface tun carregada quando a VPN é reiniciada


persist-tun

#Caso o IP da outra máquina mude, o túnel continua estabelecido


float

#Nível de log 3. Existem níveis 0,1,3 e 9. Quanto maior o nível, maior será o detalhamento do
log.
verb 3

#Informações de status da conexão


status /var/log/openvpn/cliente-status.log

#Arquivo de log que mostra o estabelecimento da conexão


log-append /var/log/openvpn/cliente.log

Após ter ajustado o arquivo de configuração do cliente, foram criados os arquivos de


log do OpenVPN, que são importantes, por exemplo, para detectar algum erro de conexão.
Mas primeiro, criou-se um diretório, onde foram armazenados os arquivos de log:

mkdir /var/log/openvpn

E depois se criou os arquivos de log do cliente:

touch /var/log/openvpn/cliente-status.log

touch /var/log/openvpn/cliente.log

3.2.8 Inicialização da VPN no Servidor

Para inicializar a VPN no servidor, digita-se o seguinte comando no terminal:

/etc/init.d/openvpn start
42

A inicialização da VPN no servidor é verificada na Figura 19.

Figura 19 - Inicialização da VPN no servidor

Se quisermos finalizar a VPN, deve-se digitar o seguinte comando no terminal:

/etc/init.d/openvpn stop

Se quisermos reinicializar a VPN, deve-se digitar o seguinte comando no terminal:

/etc/init.d/openvpn restart

Pode-se verificar o status da conexão e o processo de estabelecimento da VPN, através


dos arquivos de logs criados no servidor.
No servidor, o arquivo servidor.log mostra o processo de estabelecimento da
conexão no servidor, na qual ao final do processo aparecerá a confirmação de sucesso
identificada na Figura 20.
43

Figura 20 - Conteúdo do arquivo servidor.log

No servidor, o arquivo servidor-status, mostra o status da conexão, verificado na


Figura 21.

Figura 21 - Conteúdo do arquivo servidor-status.log

3.2.9 Inicialização da VPN no Cliente

Para inicializar a VPN no cliente, digita-se o seguinte comando no terminal:

/etc/init.d/openvpn start

A inicialização da VPN no cliente é verificada na Figura 22:


44

Figura 22 - Inicialização da VPN no cliente

Se quisermos finalizar a VPN, deve-se digitar o seguinte comando no terminal:

/etc/init.d/openvpn stop

Se quisermos reinicializar a VPN, deve-se digitar o seguinte comando no terminal:

/etc/init.d/openvpn restart

Pode-se verificar o status da conexão e o processo de estabelecimento da VPN, através


dos arquivos de logs criados no cliente.
No cliente, o arquivo cliente.log mostra o processo de estabelecimento da conexão no
cliente, na qual ao final do processo aparecerá a confirmação de sucesso identificada Figura
23.
45

Figura 23 - Conteúdo do arquivo cliente.log

No cliente, o arquivo cliente-status, mostra o status da conexão, verificado na


Figura 24.

Figura 24 - Conteúdo do arquivo cliente-status.log

3.2.10 Testes de Conexão

Depois de ter iniciado a VPN no servidor e no cliente, foi testada a conexão utilizando
o comando ping no IP criado pela interface virtual no cliente (10.0.0.2), a partir do servidor
(Figura 25):
46

Figura 25 - Teste de conexão com o cliente

Mas também, foi testada a conexão pingando o IP criado pela interface virtual do
servidor (10.0.0.1), a partir do cliente (Figura 26):

Figura 26 - Teste de conexão com o servidor


47

3.2.11 Acesso ao Servidor

Para fazer acesso ao servidor, utilizou-se do protocolo SSH. Na Figura 27, têm-se os
comandos necessários para acessar o servidor a partir do cliente:

Figura 27 - Acesso ao servidor

Observa-se que no comando ssh root@10.0.0.1, foi utilizado o IP virtual do


servidor, uma vez que se quer fazer uso do tunelamento criado pela VPN para comunicação
segura dos dados acessados.

3.3 CONFIGURAÇÃO DO SERVIDOR DE STREAMING DE VÍDEO

3.3.1 Cenário de Configuração

Foi utilizada a ferramenta VLC na versão 1.1.4 para a transmissão de streaming de


vídeo entre o servidor e o cliente configurados durante o desenvolvimento da VPN. Esta
48

ferramenta foi escolhida, uma vez que possui suporte aos principais protocolos de streaming,
que poderão ser utilizados para a transmissão de um vídeo através da rede, tendo flexibilidade
e facilidade para trabalhar tanto como host servidor como host cliente. Além disso, tem-se
uma gama grande de Codecs e formatos de áudio e vídeo suportados, tanto proprietários como
abertos.
Basicamente, a transmissão de vídeo será feita entre os IPs virtuais de tunelamento
criados durante a configuração da VPN, tanto na máquina servidor (IP 10.0.0.1) como na
máquina cliente (IP 10.0.0.2), garantindo assim a segurança do vídeo a ser transmitido através
de criptografia simétrica de chave estática. Neste caso, o usuário que estiver no lado servidor
selecionará um vídeo a ser transmitido para o usuário cliente, através do tunelamento formado
pela VPN. Portanto, pode-se considerar que este tipo de transmissão está bem próximo de uma
aplicação de streaming de vídeo ao vivo, já que não é o cliente que começa a fazer a primeira
interação, e sim o servidor que primeiramente começar a transmitir o vídeo com destino ao
cliente. O processo pode ser observado na Figura 28.

Figura 28 - Integração de VPN com Streaming de vídeo

3.3.2 Instalação do VLC

Teve-se que fazer a instalação do VLC nas duas máquinas (servidor e cliente). Desta
forma, foi utilizado o comando apt-get, principal instalador de pacotes do Ubuntu, tal como
segue:
49

apt-get install vlc

3.3.3 Configuração Manual de Streaming de Vídeo no Servidor

Para fazer a configuração manual de Streaming de Vídeo no Servidor, será utilizada a


interface gráfica do VLC, simplificando o processo de configuração. Desta forma, com o VLC
aberto deve-se clicar no menu “Mídia” e depois escolher a opção “Fluxo”, como identificado
na Figura 29.

Figura 29 - Configuração Gráfica do VLC

Agora, deve-se selecionar o arquivo de vídeo a ser transmitido. Então, deve-se clicar
no botão “Adicionar” (Figura 30) e depois escolher o vídeo e clicar no botão “Abrir” (Figura
31). No nosso caso, o arquivo a ser transmitido tem o nome “video” e é do formado “AVI”,
possuindo um tamanho de 458,8 MB. O mesmo está localizado no seguinte diretório:
/home/Felipe/Desktop.
50

Figura 30 - Adicionar Arquivo de vídeo

Figura 31 - Seleção do Arquivo

Após ter selecionado o arquivo, volta-se para a janela anterior, o qual se deve clicar no
botão “Fluxo”, para começar o procedimento de configuração de streaming (Figura 32).
51

Figura 32 - Início do Fluxo

Na tela seguinte, apenas confirma-se a fonte, isto é, o caminho onde o arquivo de


vídeo se encontra e clica-se no botão “Próximo”, como mostra a Figura 33.

Figura 33 - Confirmação da Fonte


52

Nesta etapa, escolhe-se o protocolo para realizar a transmissão de streaming de vídeo.


Foi escolhido o protocolo RTSP, uma vez que é um protocolo próprio e específico para
transmissão de dados em tempo real tanto de áudio como vídeo, podendo controlar
apresentações de mídia contínua. Deve-se, ressaltar que os dados de áudio de vídeo serão
encapsulados para transmissão por meio do protocolo RTP, sendo que o RTSP será utilizado
apenas para controle. Assim, deve-se selecionar o protocolo RTSP e clicar no botão
“Adicionar”, como mostra a Figura 34.

Figura 34 - Seleção do Protocolo

Feito isto, define-se o número da porta como 1194, que é a porta padrão da VPN criada
pelo OpenVPN, garantindo a saída de transmissão pela porta da VPN. No campo “Caminho”,
define-se o nome do fluxo de streaming a ser gerado como “/servidor”, no formato de um
diretório. Nesta mesma tela, habilita-se a opção de transcodificação e clica-se no ícone
identificado com um círculo vermelho, como mostra a Figura 35.
53

Figura 35 - Configuração RTSP

Com a janela de “Formulário” aberta, configura-se o tipo de Encapsulamento e os


Codecs de áudio e vídeo. Deve se definir um nome para o perfil de configuração, neste caso
deu-se o nome de “Perfil RTSP”. Na aba “Encapsulamento” seleciona-se o tipo de
encapsulamento suportado de acordo com o tipo de protocolo escolhido. Em nosso caso
escolheu-se MPEG-TS (Transport stream), que é um tipo de container, ou seja, um arquivo
que irá armazenar e encapsular um conjunto de Codecs de áudio e vídeo além de legendas, de
modo que ocorra sincronismo de áudio, vídeo e legendas durante a reprodução (Figura 36).
54

Figura 36 - Encapsulamento

Na aba “Codec de vídeo”, seleciona-se o tipo de Codec de vídeo de acordo com o tipo
de encapsulamento escolhido. Então, marca-se a opção “Vídeo” e seleciona-se o Codec
“MPEG-4”, que é um dos Codecs de vídeo suportados pelo encapsulamento MPEG-TS, sendo
utilizado na compressão de dados digitais de vídeo transportados pela Internet (Figura 37).

Figura 37 - Codec de Vídeo


55

Já na aba “Codec de áudio”, seleciona-se o tipo de Codec de áudio de acordo com o


tipo de encapsulamento escolhido. Então, marca-se a opção “Áudio” e seleciona-se o Codec
“MPEG Audio”, que é um dos Codecs de áudio suportados pelo Encapsulamento MPEG-TS,
sendo um Codec muito utilizado e conhecido (Figura 38).

Figura 38 - Codec de áudio

Clica-se em “Salvar” para voltar para a janela anterior de configuração. Agora,


precisa-se apenas selecionar o Perfil salvo e clicar no botão “Próximo”, como mostra a Figura
39.
56

Figura 39 - Seleção do Perfil

Finalmente na última janela, verifica-se que foi gerada uma linha de saída de fluxo,
que será útil na criação de um Script para que o processo seja automatizado. No entanto, nesta
sessão apenas será realizada a configuração manual, logo, deve-se clicar no botão “Fluxo”,
afim de que o vídeo seja transmitido, como identificado na Figura 40.
57

Figura 40 - Fluxo Gerado

Após ter clicado no botão “Fluxo”, começará a transmissão do streaming de vídeo,


como mostra a Figura 41.

Figura 41 - Transmissão do streaming de vídeo

Um detalhe importante é que o servidor consegue controlar o vídeo com ações de


Pause, Play, Avançar, Retroceder e Stop, ou seja, possui controle total do fluxo de streaming
de vídeo.
58

3.3.5 Acesso do Cliente ao Streaming de Vídeo

Para que o cliente possa acessar a transmissão de streaming de vídeo gerado pelo
servidor, deve-se digitar o seguinte comando no terminal do Ubuntu:

vlc rtsp://10.0.0.1:1194/servidor

Neste comando existem os seguintes campos:


• vlc : Chamará o programa VLC;

• rtsp: Utilização do protocolo RTSP;

• 10.0.0.1: IP Virtual do Servidor, criado durante a configuração da VPN, forçando o


cliente usar o tunelamento da VPN, na qual os dados irão conseqüentemente chegar à
outra ponta da VPN, em seu IP Virtual 10.0.0.2;

• 1194: Porta por onde está saindo o fluxo gerado pelo servidor;

• servidor: Nome do fluxo gerado pelo servidor.

Depois de ter executado o comando acima, será aberta uma janela do VLC, onde será
reproduzido o vídeo que foi transmitido pelo servidor. Pode-se observar o acesso, identificado
na Figura 42.

Figura 42 - Acesso do cliente


O cliente consegue controlar o vídeo apenas com as ações de Stop, Pause e Play, pois
é o servidor que realiza a transmissão do vídeo.
59

3.3.6 Automatização do Processo com Script

A Automatização do processo foi realizada por meio de Shell Script, que é um arquivo
que armazena diversos comandos e pode ser executado quando houver necessidade. Estes
comandos podem ser comandos do sistema, mas também possuem seus próprios comandos,
como IF, WHILE, FOR, dentre outros.
Portanto, no lado servidor foi criado um Script, na qual automatiza o processo de
seleção do vídeo e configuração de streaming deste vídeo pela VPN. Desta forma, o usuário
entra com o caminho do diretório e o nome do arquivo de vídeo, e este é automaticamente
transmitido dentro do tunelamento criado pela VPN, como todas as configurações vistas
durante a configuração manual. Abaixo, verifica-se o conteúdo do Script com o nome de
“streaming-servidor”, onde os comentários estão identificados com “#”, exceto a primeira
linha que indica para o sistema que será o Shell que irá interpretar os comandos:
#!/bin/bash

#Script para inicialização automática de streaming de vídeo no servidor.

echo
echo
echo "----------------------------------------"
echo "Servidor de Streaming de Vídeo"
echo "----------------------------------------"
echo
echo

#Digitar o diretório onde se encontra o vídeo, verificando se o que o usuário realmente digitou
#é um diretório válido e armazenando na variável “diretorio”.

while :
do
echo "Digite o diretório onde se encontra o vídeo: "
read diretorio
if (test -d "$diretorio")
then
break
else
echo
echo "Diretório Inválido !"
fi
done

echo
echo
60

#Entra no diretório escolhido, que foi armazenado na variável "diretorio".


cd $diretorio

#Depois de digitado o diretório, digitar o nome do arquivo de vídeo do respectivo diretório,


#verificando se o que o usuário realmente digitou é um arquivo válido e armazenado na
#variável "nome".

while :
do
echo "Digite o nome do arquivo de vídeo que está no diretório $diretorio: "
read nome
if (test -e "$nome")
then
break
else
echo
echo "Vídeo Inválido !"
fi
done

#Obs.: o comando abaixo é executado em uma única linha.

vlc $nome --sout


'#transcode{vcodec=mp4v,vb=800,scale=1,acodec=mpga,ab=128,channels=2,samplerate
=8000}: rtp{sdp=rtsp://10.0.0.1:1194/servidor}'

#Comando de execução para streaming de vídeo, com os seguintes campos:

#vlc $nome = chama o programa vlc, seguido da variável "nome" que contém o nome do
arquivo de vídeo

#transcode = especificações de codificações:

#vcodec = tipo de Codec de vídeo (MPEG-4);

#vb = taxa de bits (bitrate) do fluxo de vídeo codificado em kbits/s;

#scale = proporção do tamanho da imagem para a codificação;

#acodec = tipo de Codec de áudio (MPEG Audio);

#ab = taxa de bits (bitrate) do fluxo de áudio codificado em kbits/s;

#channels = número de canais resultantes do fluxo de áudio;

#samplerate = defini a taxa de amostragem do fluxo de áudio codificado em HZ.

#rtp{sdp=rtsp://10.0.0.1:1194/servidor}

#rtp = significa que os dados serão encapsulados em pacotes RTP;


61

#sdp = protocolo utilizado para criação de uma sessão de fluxo de dados com o nome
"servidor";

#10.0.0.1 = IP Virtual da VPN do lado Servidor, no qual terá a saída do fluxo de dados,
pois se quer a transmissão dentro da VPN. Este campo foi adicionado ao fluxo gerado para
forçar a saída dos dados apenas pelo tunelamento.

#1194 = porta padrão do OpenVPN, no qual terá a saída dos dados, pois se quer a
transmissão dentro da VPN.

No lado cliente também foi criado um Script, na qual automatiza o processo de acesso
ao vídeo transmitido pelo servidor dentro do tunelamento criado pela VPN. Abaixo, verifica-
se o conteúdo do Script como o nome de “streaming-cliente”, onde os comentários estão
identificados com “#”, exceto a primeira linha que indica para o sistema que será o Shell que
irá interpretar os comandos:
#!/bin/bash

#Script para inicialização automática de streaming de vídeo no cliente.

#Comando para acessar o vídeo transmitido pelo servidor

vlc rtsp://10.0.0.1:1194/servidor

Tanto o Script do servidor como o Script do cliente foram copiados para o diretório
“/usr/bin” de sua respectiva máquina, para que o Script tenha capacidade de ser executado de
qualquer lugar do sistema. Então, quando for digitado “streaming-servidor” ou “streaming-
cliente” no Shell do Linux, este irá interpretá-lo como um comando e começará a ser
executado.

3.4 TESTES DE INTEGRAÇÃO

Nesta sessão será descrito a metodologia de testes feita para analisar o desempenho do
projeto em questão, que é a transmissão de streaming de vídeo dentro do tunelamento criado
pela VPN, na qual será comparada com outro tipo de aplicação de streaming de vídeo
(Youtube).
Foram testadas as seguintes métricas de desempenho, que indicam o comportamento
de cada aplicação na rede:
62

• Atraso: o tempo que um determinado pacote leva para sair de um host emissor até um
host receptor;
• Jitter (Variação de Atraso): a diferença do atraso de um determinado pacote com o
atraso do seu pacote anterior;
• Largura de Banda: é utilizado para medir a capacidade de transmissão de dados em
uma determinada rede.

Para os dois tipos de aplicação, por meio do Wireshark, foram capturados os 10


primeiros pacotes do vídeo transmitido e calculado a atraso, Jitter e largura de banda ocupada,
e feito a média dos valores para cada métrica, chegando a um valor final. Logo, consegue-se
ter uma estimativa aproximada. Deve-se lembrar que os vídeos transmitidos para as duas
aplicações não possuem o mesmo tamanho e que a transmissão de Streaming de vídeo com
VPN foi feita em computadores de uma mesma rede local.
63

4. RESULTADOS E DISCUSSÕES

Com as métricas de desempenho testadas na sessão 3.4, foi possível montar as tabelas
2 e 3 que mostram as métricas de desempenho calculadas através do Wireshark, para os dois
tipos de aplicação.
Através destas tabelas, pode-se observar que existe uma variação entre os valores de
atraso e Jitter das duas aplicações. A aplicação deste projeto apresentou atraso e Jitter
maiores do que a aplicação do Youtube, pois além do vídeo ser transmitido via streaming,
todos os dados estão sendo criptografados quando o mesmo é transmitido dentro do
tunelamento da VPN, levando a uma maior sobrecarga de processamento. Assim, é diferente
do Youtube, no qual os dados não estão sendo criptografados, levando a um atraso e um Jitter
um pouco menor.
A largura de banda é menor na aplicação deste projeto, visto que a mesma está sendo
testada apenas em rede local, onde o consumo de banda e sobrecarga de aplicações rodando é
menor, se comparada à aplicação do Youtube.
Portanto, a aplicação de Streaming com VPN se mostrou eficiente nos testes
realizados, tendo um bom desempenho em relação às métricas analisadas, levando em conta a
questão de criptografia dos dados transmitidos.
64

Tabela 2 – Métricas para Streaming com VPN


Atraso (ms.) Jitter (ms.) Tamanho do pacote (Bytes) Largura de banda (Kbytes/ms)
Pacote 1 0 1428 ------
6, 925
Pacote 2 6, 925 1428 206, 2093863
Pacote 3 6, 949 1428 205, 4971938
0, 012
Pacote 4 6, 961 459 65, 9388019
Pacote 5 6, 949 1428 205, 4971938
4, 542
Pacote 6 2, 407 620 257, 5820523
Pacote 7 8, 015 1428 178, 1659389
2,414
Pacote 8 10, 429 1428 136, 9258798
Pacote 9 10, 431 257 24, 63809798
0, 009
Pacote 10 10, 422 1428 137, 0178469
Total 69, 488 4, 8 11332 1417, 472392
Média 6, 9488 0, 96 1133,2 157, 4969324

Tabela 3 – Métricas para Youtube


Atraso (ms.) Jitter (ms.) Tamanho do pacote (Bytes) Largura de banda (Kbytes/ms)
Pacote 1 0 1514 ------
0, 304
Pacote 2 0, 304 1514 4980, 263158
Pacote 3 2, 236 1514 677, 1019678
0,34
Pacote 4 2, 576 1514 587, 7329193
Pacote 5 2, 102 1514 720, 2664129
0, 335
Pacote 6 2, 437 1514 621, 2556422
Pacote 7 2,6 1514 582, 3076923
0, 341
Pacote 8 2, 941 1514 514, 7908875
Pacote 9 2, 009 1514 753, 6087606
0, 427
Pacote 10 2, 436 1514 621, 5106732
Total 19, 641 1, 747 15140 10058, 83811
Média 1, 9641 0, 3494 1514 1117, 648679
65

5. CONCLUSÕES

A pesquisa deste trabalho foi importante para analisar diversas técnicas de segurança
que foram úteis para a configuração da VPN. Houve uma análise dos principais conceitos de
VPN, analisando suas principais características, tecnologias, aplicações, dentre outros
aspectos. Além de um estudo sobre os principais conceitos de streaming de vídeo.
Neste contexto, foi possível configurar uma VPN para a transmissão de streaming de
vídeo entre uma máquina servidora e uma máquina cliente, através de softwares livres, o que
demonstrou rapidez e eficiência nos testes realizados em rede local, apesar do atraso na
transmissão de pacotes, quando comparado com a aplicação de streaming de vídeo do
Youtube.
Além disso, o sistema operacional Ubuntu em conjunto com esses softwares atendeu
as necessidades esperadas para o desenvolvimento do projeto. Portanto, este tipo de aplicação
pode, futuramente, tornar-se útil em nível corporativo, para uma empresa matriz que queira
transmitir um vídeo sigiloso de uma reunião em direção a sua empresa filial, levando a uma
integração de métodos de segurança em VPN e streaming de vídeo, através de uma solução
barata e eficiente.

5.1 Sugestões de Trabalhos Futuros

Uma sugestão para trabalhos futuros seria aprimorar este projeto através da adição de
outros tipos de métodos de segurança na configuração da VPN, como por exemplo, certificado
digital, criptografia assimétrica, dentre outros, comparando e testando esses métodos junto
com streaming de vídeo. Além de realizar a transmissão de streaming de vídeo pela VPN não
apenas em rede local, mas em um nível maior de redes e de computadores, pela qual um
servidor transmitiria vários fluxos de streaming de vídeo para diversos clientes, permitindo
um estudo mais amplo e diversificado.
66

6. REFERÊNCIAS BIBLIOGRÁFICAS

3WAY. Networks. Virtual Private Networks – VPN. Disponível em:


<http://fgsl.aslgo.org.br/fgsl3/images/atividades/vpn.pdf>. Acesso em: 5 de out. de 2010.

ALMEIDA, Juliana. Transmissão Multimídia Multidestinatária. Disponível em:


<http://www.gta.ufrj.br/grad/01_2/vidconf/inicial.html>. Acesso em: 12 de mai. de 2010.

ALVAREZ, Miguel Angel. O que é Streaming. Disponível em:


<http://www.criarweb.com/artigos/214. php>. Acesso em: 7 de mai. de 2010.

ASSIS, João Mário. Implementando VPN em Linux. 2003. 76f. Monografia de Pós-
Graduação apresentada ao Departamento de Ciência da Computação – Universidade Federal
de Larvas, Larvas.

BILIEN, Johan; DAOUND, Anil. Documentation: Streaming HowTo. Disponível em:


<http://wiki.videolan.org/Documentation:Streaming_HowTo>. Acesso em: 3 de out de 2010.

CASNOVA. TI Consulting. FIREWALL, QOS, VPN LINUX: Segurança da sua rede


local. Disponível em: <http://www.casnova.com.br/casnova>. Acesso em: 11 de out. de 2010.

CATALIN. Unicast and Multicast streaming. Disponível em:


<http://www.thehdstandard.com/hd-streaming/unicast-and-multicast-streaming/>. Acesso em:
8 de set. De 2010.

CATRAMBY, Gabriela Ferraz. VPN – Virtual Private Network. Disponível em: <
http://www.gta.ufrj.br/grad/99_1/gabriela/vpn.html#5>>. Acesso em: 10 de abr. de 2010.

CHIN, L. K. Rede Privada Virtual. Disponível em:


<http://www.rnp.br/newsgen/9811/vpn.html>. Acesso em: 8 de abr. de 2010.

FAGUNDES, Bruno Alves. Uma Implementação de VPN. 2007. 76f. Monografia


(Graduação em Tecnologia da Informação e Comunicação) – Instituto Superior de Tecnologia
em Ciências da Computação de Petrópolis, Petrópolis.
67

GTA. Grupo de Teleinformática e Automação. SSL: Secure Socket Layer. Disponível em:
<http://www.gta.ufrj.br/grad/00_2/ssl/ssl.htm>. Acesso em: 10 de mai. de 2010.

GUILHERME, Joel. Criptografia, Chaves Públicas e Assinatura Digital para Leigos.


Disponível em: <http://www.sbis.org.br/Criptografia.doc>. Acesso em: 8 de out. de 2010.

HOWTO. Disponível em: <http://www.openvpn.net/index. php/open-


source/documentation/howto.html>. Acesso em: 2 de mai. de 2010.

KUROSE, J., ROSS, K. Redes de computadores e a Internet: uma nova abordagem.


Pearson Education do Brasil, 2004.

MAGUIONE, Magno. Configuração de um servidor VPN com OpenVPN e chave


estática. Disponível em: <http://www.vivaolinux.com.br/artigo/Configuracao-de-um-
servidor-VPN-com-OpenVPN-e-chave-estatica>. Acesso em: 5 de mai. de 2010.

MARLETA, Marcelo Honorato. Projeto de uma VPN(Rede Virtual Privada) baseada em


computação reconfigurável e aplicada a robôs móveis. 2007. 103f. Dissertação (Mestrado
em Ciência da Computação e Matemática Computacional) – Universidade de São Paulo -
USP, São Carlos.

MORIMOTO, Carlos E. Criando VPN’s usando chaves estáticas. Disponível em:


<http://www.guiadohardware.net/tutoriais/openvpn/pagina3.html>. Acesso em: 3 de mai. De
2010.

ROSSI, Marco Antonio G.; FRANZIN, Oswaldo. VPN – Virtual Private Network (Rede
Virtual Privada). Disponível em: <http://www.gpr.com.br/download/vpn.pdf>. Acesso em:
23 de fev. de 2010.

SAUVÉ, Jacques. Estrutura de dados – Arquivos. Disponível em:


<http://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/ed/arquivos.htm>. Acesso em: 1 de out.
de 2010.
68

SOUSA, R.; PUTTINI, PR. S. O Protocolo SSL 3.0. Disponível em:


<http://www.redes.unb.br/security/ssl3/protocolo.html#- Topo>. Acesso em: 15 de abr. de
2010.

STALLINGS, William. Criptografia e segurança de redes: princípios e práticas. 4. ed. São


Paulo: Pearson Prentice Hall, 2008. 492 p.

STREAMING: Overview of the VideoLAN streaming solution. Disponível em:


<http://www.videolan.org/vlc/streaming.html>>. Acesso em: 16 de ago. de 2010.

TANENBAUM, Andrew S. Redes de computadores. Tradução de V. D. de Souza. Rio de


Janeiro: Elsevier, 2003. 945 p.

TSCHÖKE, Clodoaldo. Criação de Streaming de Vídeo para Transmissão De Sinais de


Vídeo em Tempo Real Pela Internet. 2001. 82f. Trabalho de Conclusão de Curso
(Graduação em Ciência da Computação) – Universidade Regional de Blumenau – Blumenau

URBIÊTA, Jauber Lopes. Estudo das Soluções de Transmissão de Vídeo Utilizando


Software Livre. 2007. 84f. Monografia de Pós-Graduação (Especialista em Administração
em Redes Linux) – Universidade Federal de Lavras – Lavras.

VASQUES, Tamer Alan; SCHUBER, Rafael Priante. Implementação de uma VPN em


Linux utilizando o protocolo IPSec. 2002. 72f. Trabalho de Conclusão de Curso (Graduação
em Ciência da Computação) – Centro Universitário do Estado do Pará – CESUPA, Belém.

W3C. UA Server RTSP Communication. Disponível em:


<http://www.w3.org/2008/WebVideo/Fragments/wiki/UA_Server_RTSP_Communication>.
Acesso em: 2 de mai. de 2010.