tcc - conceitos de rede virtual privada para streaming seguro de vÍdeo

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

Upload: lipanzin

Post on 30-Jun-2015

9.418 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 2: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 3: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 4: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 5: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

v

“As pessoas comuns pensam apenas como passar o

tempo. Uma pessoa inteligente tenta usar o tempo.”

(Arthur Schopenhauer)

Page 6: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 7: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 8: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 9: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 10: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

x

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

Page 11: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 12: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 13: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 14: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 15: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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 é

Page 16: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 17: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 18: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 19: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 20: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 21: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 22: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 23: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 24: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

10

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

(Figura 5)

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;

Cifrar

Decifrar Canal Inseguro

Chave

Pública

Emissor

Chave

Secreta

Emissor

Emissor Receptor

Canal Inseguro

Page 25: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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:

Page 26: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 27: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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;

Page 28: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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;

Page 29: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 30: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 31: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 32: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 33: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 34: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 35: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 36: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 37: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 38: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 39: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 40: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 41: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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:

Page 42: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 43: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 44: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 45: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 46: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 47: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 48: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 49: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 50: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 51: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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:

Page 52: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

[email protected]), 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

Page 53: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 54: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 55: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 56: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 57: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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:

Page 58: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 59: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 60: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 61: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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 [email protected], 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

Page 62: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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:

Page 63: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 64: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 65: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 66: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 67: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 68: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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

Page 69: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO 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.

Page 70: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 71: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 72: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO 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.

Page 73: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE 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

Page 74: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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;

Page 75: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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:

Page 76: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 77: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 78: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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 6, 925

1428 ------

Pacote 2 6, 925 1428 206, 2093863

Pacote 3 6, 949 0, 012

1428 205, 4971938

Pacote 4 6, 961 459 65, 9388019

Pacote 5 6, 949 4, 542

1428 205, 4971938

Pacote 6 2, 407 620 257, 5820523

Pacote 7 8, 015 2,414

1428 178, 1659389

Pacote 8 10, 429 1428 136, 9258798

Pacote 9 10, 431 0, 009

257 24, 63809798

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 0, 304

1514 ------

Pacote 2 0, 304 1514 4980, 263158

Pacote 3 2, 236 0,34

1514 677, 1019678

Pacote 4 2, 576 1514 587, 7329193

Pacote 5 2, 102 0, 335

1514 720, 2664129

Pacote 6 2, 437 1514 621, 2556422

Pacote 7 2,6 0, 341

1514 582, 3076923

Pacote 8 2, 941 1514 514, 7908875

Pacote 9 2, 009 0, 427

1514 753, 6087606

Pacote 10 2, 436 1514 621, 5106732

Total 19, 641 1, 747 15140 10058, 83811

Média 1, 9641 0, 3494 1514 1117, 648679

Page 79: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 80: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 81: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.

Page 82: TCC - CONCEITOS DE REDE VIRTUAL PRIVADA PARA STREAMING SEGURO DE VÍDEO

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.