Você está na página 1de 64

UNIVERSIDADE REGIONAL DE BLUMENAU

CENTRO DE CIÊNCIAS TECNOLÓGICAS


CURSO DE ENGENHARIA DE TELECOMUNICAÇÕES

PROTÓTIPO DE UM SISTEMA DE TELEFONIA IP CRIPTOGRAFADO BASEADO


NO PADRÃO SIP

HUMBERTO MAXCLIOFF CALVACHE

BLUMENAU, 2005
HUMBERTO MAXCLIOFF CALVACHE

PROTÓTIPO DE UM SISTEMA DE TELEFONIA IP CRIPTOGRAFADO BASEADO


NO PADRÃO SIP

Trabalho de Conclusão de Curso submetido à


Universidade Regional de Blumenau para a
obtenção dos créditos na disciplina Trabalho
de Conclusão de Curso do curso de
Engenharia de Telecomunicações.

Prof. Francisco Adell Péricas – Orientador

BLUMENAU, 2005

I
PROTÓTIPO DE UM SISTEMA DE TELEFONIA IP CRIPTOGRAFADO BASEADO
NO PADRÃO SIP

HUMBERTO MAXCLIOFF CALVACHE

ESTE TRABALHO DE CONCLUSÃO DE CURSO FOI JULGADO ADEQUADO


PARA OBTENÇÃO DOS CRÉDITOS NA DISCIPLINA DE TRABALHO DE
CONCLUSÃO DE CURSO OBRIGATÓRIA PARA A OBTENÇÃO DO TÍTULO DE:

ENGENHEIRO DE TELECOMUNICAÇÕES

________________________________________________
Prof. Francisco Adell Péricas, Ms. – Orientador, FURB

________________________________________________
Prof. Fábio Luis Perez – Coordenador do TCC, FURB

BANCA EXAMINADORA

______________________________________________
Prof. Fábio Rafael Segundo

______________________________________________
Prof. Orlando José Tobias

Blumenau, 1 de Julho de 2005

II
DEDICATÓRIA

Dedico este trabalho à memória de meu avô


que me acompanha e me apóia lá do alto.

III
AGRADECIMENTOS

A Deus por estar sempre presente na minha vida através do seu infinito
amor.
Aos meus amados pais Humberto Maxclioff Calvache Chiliquinga e Ionira
Machado Brincas pelo apoio e amor incondicional.
Aos meus queridos irmãos pelo companheirismo e amor que sempre
dispuseram.
À minha namorada pelo incentivo e carinho.
À todos amigos conquistados durante a graduação e que me deram força
para concluir o curso de engenharia.
Ao meu orientador Francisco Adell Pericas que acreditou no meu trabalho e
se dispôs a orientar-me.

IV
RESUMO

A utilização da telefonia IP e a convergência total das comunicações possibilitam às


organizações reduzir drasticamente os custos ao mesmo tempo em que
potencializam novas formas de negócio. Este trabalho apresenta o desenvolvimento
de um protótipo de um sistema de telefonia IP criptografado entre dois
microcomputadores baseado no Padrão SIP, desenvolvido para comunicação full-
duplex de voz em um ambiente Windows.

Palavras chave: Telefonia IP, VoIP, SIP, Criptografia.

V
ABSTRACT

The use of IP Telephony and total convergence of the communications enable the
organizations to reduce drastically the costs at the same time that they make new
ways of business capable. This work presents the development of a prototype of a
system of IP Telephony Cryptographed between two microcomputers based on SIP
standard, developed for voice full-duplex communication at a Windows environment.

Keywords: IP Telephony, VoIP, SIP, Cryptography.

VI
SUMÁRIO

1 INTRODUÇÃO .....................................................................................................9
1.1 MOTIVAÇÃO............................................................................................................ 9
1.2 OBJETIVOS DO TRABALHO ............................................................................... 10
1.4 ORGANIZAÇÃO DO TRABALHO ....................................................................... 11
2 TELEFONIA IP ..................................................................................................12
2.1 INTRODUÇÃO........................................................................................................ 12
2.2 AMBIENTES PARA TELEFONIA IP .................................................................... 15
2.3 VOZ.......................................................................................................................... 17
2.4 QUALIDADE DE SERVIÇO .................................................................................. 19
2.5 PROTOCOLOS DE TELEFONIA IP ...................................................................... 21
2.5.1 TCP/IP .................................................................................................21
2.5.2 UDP .....................................................................................................22
2.5.3 RTP......................................................................................................23
2.5.4 RTCP ...................................................................................................26
2.5.5 SIP & H.323 .........................................................................................27
3 SIP .....................................................................................................................29
3.1 INTRODUÇÃO........................................................................................................ 29
3.2 ENDEREÇOS SIP.................................................................................................... 35
3.3 SDP........................................................................................................................... 35
3.4 SEGURANÇA SIP ................................................................................................... 36
4 CONCEITOS DE CRIPTOGRAFIA....................................................................38
4.1 INTRODUÇÃO........................................................................................................ 38
4.2 CRIPTOGRAFIA ..................................................................................................... 39
4.2.1 Sistemas de Chaves Simétricas ..........................................................40
4.2.2 Sistemas de Chaves Assimétricas.......................................................41
5 DESENVOLVIMENTO DO TRABALHO............................................................42
5.1 INTRODUÇÃO........................................................................................................ 42
5.2 REQUISISTOS DO PROTÓTIPO........................................................................... 42
5.3 ESPECIFICAÇÃO ................................................................................................... 43
5.3.1 Diagrama de Caso de Uso...................................................................44
5.3.2 Estrutura de Camadas do Protótipo.....................................................46
5.3.3 Diagrama de Classes...........................................................................47
5.4 IMPLEMENTAÇÃO ............................................................................................... 49
5.4.1 Visual C++ 6 ........................................................................................50
5.4.2 JVOIPLIB .............................................................................................50
5.4.3 Protótipo ..............................................................................................53
6 CONCLUSÃO ....................................................................................................59
6.1 TRABALHOS FUTUROS ....................................................................................... 60
7 REFERÊNCIAS BIBLIOGRÁFICAS..................................................................61

VII
LISTA DE FIGURAS

Figura 1 – Multiplexação Estatística ........................................................................................ 14


Figura 2 – Telefonia IP entre dois computadores..................................................................... 15
Figura 3 – Telefonia IP entre um telefone e um computador................................................... 16
Figura 4 – Telefonia IP entre dois telefones convencionais..................................................... 17
Figura 5 – (a) Onda de áudio; (b) Amostragem; (c) Quantização ............................................ 18
Figura 6 – Codecs de Áudio do ITU-T..................................................................................... 19
Figura 7 – Arquitetura do Protocolo TCP/IP............................................................................ 22
Figura 8 – Estrutura do Cabeçalho UDP .................................................................................. 23
Figura 9 – Formato pacote RTP ............................................................................................... 25
Figura 10 – Arquitetura SIP ..................................................................................................... 30
Figura 11 – Mensagem de pedido SIP...................................................................................... 31
Figura 12 – Valores do campo “Cseq” ..................................................................................... 32
Figura 13 – Resposta SIP ......................................................................................................... 34
Figura 14 – Sinalização completa da chamada......................................................................... 34
Figura 15 – Criptografia de um pedido .................................................................................... 37
Figura 16 – Formas de ação do invasor.................................................................................... 38
Figura 17 – Modelo Ilustrativo de Criptografia........................................................................ 39
Figura 18 – Criptografia Simétrica........................................................................................... 40
Figura 19 – Criptografia Assimétrica ....................................................................................... 41
Figura 20 – Criptografia dos Pacotes de Voz ........................................................................... 43
Figura 21 – Mensagem SIP ...................................................................................................... 44
Figura 22 – Diagrama de Caso de Uso ..................................................................................... 45
Figura 23 – Estrutura de Camadas do Protótipo....................................................................... 47
Figura 24 – Diagrama de Classes de Controle e Gerenciamento ............................................. 48
Figura 25 – Ambiente de Trabalho do Visual C++ 6 ............................................................... 50
Figura 26 – Classes de Criação da Sessão................................................................................ 52
Figura 27 – Classes Responsáveis pelo Tratamento da Voz .................................................... 52
Figura 28 – Arquivo Contatos.txt ............................................................................................. 53
Figura 29 – Tela Inicial ............................................................................................................ 54
Figura 30 – Preenchimento de Campos.................................................................................... 55
Figura 31 – Pedido INVITE ..................................................................................................... 56
Figura 32 – Recepção do Pedido INVITE................................................................................ 56
Figura 33 – Estabelecimento de Sessão VoIP .......................................................................... 57
Figura 34 – Finalização de Sessão por “BYE”......................................................................... 58
Figura 35 – Finalização de Sessão por “CANCEL”................................................................. 58

LISTA DE QUADROS

Quadro 1 – Protocolos utilizados no H.323 e SIP .................................................................... 28


Quadro 2 – Endereços SIP........................................................................................................ 35
Quadro 3 – Casos de uso .......................................................................................................... 45
Quadro 4 – JThread .................................................................................................................. 53

VIII
1 INTRODUÇÃO

1.1 MOTIVAÇÃO

A troca de informações através dos meios de comunicações que estão


disponíveis atualmente não para de crescer. Quanto mais rápido é o acesso à
informação requisitada, mais eficaz e produtivo é o trabalho a ser realizado. Com
isso, tecnologias como a comunicação sem fio (wireless), telefonia e principalmente
a Internet vêm sofrendo grandes avanços ao longo dos anos. Dentro deste contexto,
surge um novo conceito com o nome de Next Generation Network (NGN), que nada
mais é do que a convergência das redes de telefonia e de dados existentes graças à
flexibilidade do Internet Protocol (IP). Para Nazario (2003), um dos parâmetros que
impulsionam essa nova realidade é a Telefonia IP. Esta almeja a substituição da
rede comutada por circuitos pela rede comutada por pacotes com o intuito de
realizar a integração dos serviços que envolvem voz, dados e aplicações multimídia
como as videoconferências. A utilização da Telefonia IP e a convergência total das
comunicações possibilitam às organizações reduzir drasticamente os custos ao
mesmo tempo em que potencializam novas formas de negócio.
Segundo Sousa (2001), a comunicação utilizando a tecnologia IP possui
basicamente o mesmo princípio da telefonia pública. Para realizar chamadas são
necessários protocolos de sinalização e controle para executar algumas tarefas
como localização de usuário, notificação de chamada, início de transmissão de voz,
finalização de transmissão de voz e desconexão.
Dois padrões disputam a hegemonia da Telefonia IP: o H.323 da ITU-T
(Internacional Telecommunications Union), presente em muitos equipamentos e
softwares VoIP, e o Session Initiation Protocol (SIP), proposto pelo IETF (Internet
Engineering Task Force), que apesar do curto tempo do processo de padronização,
tem mobilizado muitos fabricantes da área de telefonia e de dados, por causa da sua
flexibilidade e aderência a padrões genuinamente Internet e de arquitetura aberta.
O SIP é o padrão do IETF para conferência multimídia sobre IP. Ele é um
protocolo de controle/sinalização (definido no RFC 3261) que pode ser usado para
estabelecer, manter e terminar sessões ou chamadas multimídia entre usuários.
Como outros protocolos Voice Over IP (VoIP), o SIP é designado para endereçar

9
funções de sinalização e gerenciamento de sessão dentro de uma rede. A
sinalização permite que as informações da chamada sejam transmitidas entre os
limites da rede. O gerenciamento de sessão fornece a habilidade de controlar os
atributos de uma chamada fim a fim.
As principais funcionalidades exercidas por esse padrão são:

localização de usuários;

estabelecimento de chamadas;

suporte a unicast ou multicast.

Para transmissão do fluxo de voz, utiliza-se o protocolo da camada de


aplicação do modelo de referência Transmission Control Protocol/Internet Protocol
(TCP/IP) denominado Real Time Protocol (RTP). O RTP utiliza preferencialmente o
serviço de transporte User Datagrama Protocol (UDP) para transmitir os pacotes.
Segundo Hersent (2002), o RTP foi projetado para permitir que os
receptores compensem o jitter (variação do tempo de atraso) e a perda de seqüência
dos pacotes introduzidos pelas redes IP, podendo ser utilizado para qualquer fluxo
de dados em tempo real, como voz e vídeo.
Observando a tendência do mercado e tendo em vista a preocupação na
confiabilidade necessária para implementação de serviços que regem a Telefonia IP,
este trabalho propõe aliar os dois fatores através de um protótipo de um sistema de
Telefonia IP Criptografado baseado no padrão SIP do IETF. Este se caracteriza por
um software para comunicação entre computadores de uma mesma LAN através
dos protocolos SIP e RTP que farão o transporte da voz entre os recursos da rede,
tendo como objetivo principal a redução dos custos que envolvem a telefonia
convencional.

1.2 OBJETIVOS DO TRABALHO

Este trabalho tem a finalidade de desenvolver um protótipo de um sistema


de Telefonia IP baseado no padrão SIP, com criptografia através da biblioteca
JVOIPLIB criada por Liesenborgs (2004).

Os objetivos específicos deste trabalho são:

10
aquisição e análise da biblioteca JVOIPLIB desenvolvida por Liesenborgs
e disponibilizada gratuitamente na Internet;

criação de uma sessão de Telefonia IP usando o padrão SIP;

captura de áudio e criptografia do fluxo RTP de dados;

decriptografia do fluxo RTP de dados e reprodução do seu conteúdo.

1.4 ORGANIZAÇÃO DO TRABALHO

Este trabalho está organizado em 6 capítulos.


Capítulo 1 – Introdução – Uma breve introdução sobre o assunto de
pesquisa justificando a motivação para realização do trabalho e apresentando o
objetivo principal a ser alcançado.
Capítulo 2 – Telefonia IP – Apresenta a fundamentação sobre o tema, os
protocolos que regem a comunicação, a qualidade de serviço e as suas principais
limitações.
Capítulo 3 – SIP – Apresenta o padrão estabelecido pelo IETF e adotado
neste trabalho.
Capítulo 4 – Criptografia – Faz uma revisão bibliográfica sobre os principais
conceitos de segurança.
Capítulo 5 – Implementação do Protótipo - Realiza a descrição do protótipo
através das suas especificações e características. Além de apresentar o software
desenvolvido e o seu funcionamento através das principais telas.
Capítulo 6 – Considerações Finais e Conclusão – algumas considerações
sobre os resultados obtidos e apresenta as principais conclusões deste trabalho.

11
2 TELEFONIA IP

2.1 INTRODUÇÃO

A possibilidade da comunicação por voz trafegando pela Internet, ao invés


do Sistema de Telefonia Pública Comutada (STFC), tornou-se realidade em fevereiro
de 1995 quando a Vocaltec Inc introduziu seu software chamado Telefone Internet.
Projetado para rodar em cima de um computador pessoal 486/33 MHz (ou superior)
e equipado com placa de som, alto-falante, microfone e modem, o software
comprimia o sinal de voz e o transformava em pacotes IP para sua transmissão na
rede. Segundo Cansado (2004), essa comunicação entre microcomputadores só era
possível se ambas as partes utilizassem o software.
Desde então, em um curto espaço de tempo, a Telefonia Internet tem
avançado rapidamente e despertado o interesse de muitos fabricantes.
A voz sobre IP (VoIP) abre mercado para inúmeras soluções de aplicações e
está sendo acompanhada por grandes fabricantes como Cisco, 3Com, Avaya e
AT&T. "VoIP está em curva exponencial de crescimento", opina o engenheiro de
produto da Siemens, Otávio Bruno (CRN, 2002).
A integração dos serviços de telecomunicações através da convergência das
redes de dados e de voz, tendo como acesso à apenas uma interface, dá vida ao
novo conceito de NGN que vem sendo amplamente discutido em palestras e
congressos realizados no mundo todo.
Essa transmissão conjunta de voz e dados através do protocolo IP é
implementada através da comutação de pacotes que caracteriza a tecnologia de
Telefonia IP.
Segundo Oliveira (2000), o termo Telefonia IP, Telefonia Internet ou ainda
Voz sobre IP, tem sido aplicado à utilização de redes baseadas no protocolo IP na
camada de rede para transporte de voz, em especial da Internet.
Para efetuar uma comparação entre a Telefonia IP e a telefonia
convencional atualmente praticada, precisa-se entender os processos de comutação
envolvidos.
A rede de telefonia convencional, representada pela rede de telefonia
pública ou Public Switched Telephonic Network (PSTN) é baseada no método de

12
multiplexação por divisão do tempo (TDM) e na comutação por circuitos. Nesta, um
assinante (usuário) A, ao se comunicar com outro assinante de destino B, necessita
de um circuito exclusivo para garantir o canal de comunicação. Este circuito, de
largura de banda determinada (limitada), normalmente 64 kbps, é usado para o
transporte de voz entre o assinante A e o assinante B, e multiplexado para
transmissão em um meio físico compartilhado. Vários canais podem ser
multiplexados em um feixe de canais do tipo E1 (32 canais) ou T1 (24 canais) para
ligação entre centrais telefônicas.
A restrição da largura de banda citada anteriormente decorre da
necessidade de compartilhar o canal entre muitos usuários a qualquer momento,
exigindo uma diminuição dessa largura de banda, utilizando apenas a banda de
freqüência essencial (300 a 3400 Hz) para uma transmissão satisfatória da voz
humana.
De acordo com Oliveira (2000) a comutação é dita como baseada em
circuitos porque os elementos do sistema que garantem que a voz chegue ao seu
destino são comutadores que estabelecem circuitos na fase de negociação da
chamada e mantêm estes circuitos até o seu término. Caso não haja comunicação
entre os dois assinantes, como em momentos de silêncio, o canal é desperdiçado.
Conforme Guimarães (1999), nas redes de comutação de pacotes, tais como
a Internet, intranet (redes IP privadas), e outras redes de dados, não há uma reserva
da largura de banda entre os pontos de origem e destino. Esta tecnologia de rede
faz a divisão das mensagens em pequenos pacotes (ou células, dependendo do
tamanho), onde cada pacote pode percorrer uma rota diferente, através da rede, que
é compartilhada com pacotes de mensagens de outros usuários. Desta maneira, a
comutação de pacotes requer que estes tenham um cabeçalho que garanta uma
rota de destino exata, com a reconstrução da mensagem na sua seqüência correta
no terminal de destino.
A vantagem das redes de comutação de circuitos é que elas proporcionam
uma largura de banda dedicada. Fato que pode garantir a qualidade de serviço (QoS
– Quality of Service) no tráfego da voz, que será abordada posteriormente. Como
desvantagem há a utilização ineficiente dos recursos da rede. Conforme descrito
anteriormente, se durante uma ligação telefônica os dois usuários ficam em silêncio,
nenhuma informação estará sendo transmitida, porém a linha (largura de banda)
continua reservada, isto é, outros usuários da rede de telefonia pública (no caso, os

13
seus assinantes) não poderão realizar uma chamada. Na telefonia convencional dois
canais são reservados para cada conversação, independente da existência ou não
de tráfego de voz nos circuitos, ou seja, mesmo nos momentos de silêncio. Esses
pequenos instantes de tempo significam desperdício de recursos, uma vez que hoje
em dia os processadores com algoritmos de supressão de silêncio, utilizados
principalmente em redes de comutação de pacotes, reconhecem uma largura de
banda não utilizada (inexistência de informação), liberando-a para outro usuário.
Isso é conhecido como “multiplexação estatística”, pois se trata de multiplexar várias
conversações em um único canal de comunicação, em vez de ocupar uma largura
de banda durante todo o tempo, esta “largura de banda individual“ pode ser usada
por outro usuário qualquer durante os momentos de silêncio, como pode ser
ilustrado na figura 1.

Figura 1 – Multiplexação Estatística

Na Telefonia IP há um melhor aproveitamento dos recursos disponíveis na


rede e uma perda na qualidade de serviço. Pois apesar da multiplexação estatística
otimizar recursos, ela introduz incertezas na rede como o jitter (atraso variável), que
precisa ser corrigido no lado do receptor. O jitter surge devido ao enfileiramento dos
pacotes nos roteadores da rede. Mesmo assim, a voz sobre IP se destaca como a
principal tecnologia para próxima geração da rede telefônica.
Segundo Oliveira (2000), as vantagens da utilização da tecnologia de
Telefonia IP são:

compartilhamento da rede para tráfego de voz e dados (e-mail, FTP,


etc.);

unificação das redes de transporte, sinalização e gerência sobre a


mesma rede, com economia de infra-estrutura e manutenção;

meio de transmissão de baixo custo, comparado ao sistema telefônico;

14
possibilidade de compactação e supressão de silêncio, reduzindo a
largura de banda utilizada;

capilaridade da rede já instalada no mundo, a Internet, cujo o alcance é


indiscutível;

possibilidade de oferecer outros serviços como correio de voz, call center


via internet, segunda linha virtual, com reconhecimento e síntese de voz,
através de interface telefônica.

Para Oliveira (2000), a redução de custos na Telefonia IP, deve-se


principalmente à tecnologia em si, ou seja, a comutação da rede IP é feita através de
software, por dispositivos como roteadores e switches (dispositivos que filtram e
encaminham pacotes entre segmentos de redes locais), e não através de hardware
como na rede pública atual. A rede IP não garante qualidade de serviços, como por
exemplo, atrasos na voz, perda de pacotes e ruídos na voz não previstos, serviços
estes garantidos na telefonia convencional que a deixam com custo mais elevado.

2.2 AMBIENTES PARA TELEFONIA IP

O tráfego da voz sobre pacotes IP através da Telefonia IP pode ser


estabelecido por meio de várias configurações entre os seus terminais. Estes podem
ser computadores ou mesmo telefones convencionais. Neste caso, um gateway é
necessário para converter os sinais de voz no formato que a rede de telefonia
convencional utiliza.

Figura 2 – Telefonia IP entre dois computadores

15
A figura 2 mostra o modelo mais simples de Telefonia IP, no qual está
baseado este trabalho. Nele a comunicação entre os dois usuários é feita através da
rede IP, portanto a rede telefônica convencional não é utilizada. A codificação de voz
é realizada pelas placas multimídia dos computadores. Segundo Oliveira (2000),
existem vários softwares para este tipo de aplicação, podendo utilizar um protocolo
proprietário ou padrão, permitindo, neste caso a interação de softwares de diferentes
fabricantes.

Figura 3 – Telefonia IP entre um telefone e um computador

No ambiente mostrado na figura 3 há a presença de um gateway. Este


equipamento faz a interface entre a rede de telefonia convencional e a rede de
Telefonia IP. O gateway é responsável por converter voz (analógico-digital),
sinalização e controle da rede telefônica convencional para a rede IP, permitindo a
comunicação entre os usuários dos dois ambientes: rede IP e telefonia
convencional.
Os protocolos envolvidos com a Telefonia IP terminam nesse equipamento
sendo processados e decodificados. A partir daí, a telefonia convencional fica
responsável pelo tráfego da voz.

16
Figura 4 – Telefonia IP entre dois telefones convencionais

Na figura 4 a Telefonia IP é utilizada para fazer ligação entre dois assinantes


da telefonia convencional. Sendo assim, a rede IP é utilizada como forma de
transporte da voz, com o intuito de reduzir os custos envolvidos em uma ligação, já
que a rede baseada na comutação de pacotes caracteriza-se por ser mais barata.
Um exemplo disso seria a utilização desse ambiente para realizar chamadas
interurbanas ou internacionais. As operadoras públicas podem ocasionalmente
substituir parte de sua rede convencional por uma rede IP.

2.3 VOZ

Segundo Tanenbaum (2003), o ouvido humano é surpreendentemente


sensível a variações de som que duram milésimos de segundo, ao contrário do olho
que não percebe mudanças no nível da luz que durem menos de alguns milésimos.
Isso significa que, em uma transmissão multimídia, o atraso afeta mais a qualidade
do som percebido do que a qualidade da imagem percebida. Essa condição é o
principal fator de limitação da tecnologia de Telefonia IP, pois a rede IP introduz
perdas de pacotes, atraso e jitter que degradam sensivelmente a qualidade de voz.
Para que a voz possa trafegar na rede IP ela precisa ser digitalizada,
necessitando-se, portanto, de uma conversão analógico-digital (A/D). O processo de
conversão A/D pode ser dividido em três fases:

17
amostragem: trata-se do processo de medir valores instantâneos de um
sinal analógico em intervalos regulares. O intervalo entre as amostras é
determinado por um pulso de relógio e a freqüência desse relógio é
chamada de Taxa de Amostragem. De acordo com o teorema de Nyquist,
para reproduzir fielmente o sinal, a taxa ou freqüência de amostragem
deve ser de, pelo menos, o dobro da maior freqüência contida no sinal a
ser amostrado (OLIVEIRA, 2000). Um sinal analógico é convertido em
um sinal digital através da captura de uma série de amostras da fonte
analógica. A união dessas amostras forma o equivalente digital de uma
onda sonora;

quantização: o sinal amostrado é convertido para valores discretos na


quantização, ou seja, é considerada a amplitude deste sinal apenas em
níveis discretos. Essa infinidade de valores obtidos do sinal analógico
passam a ser representados por uma quantidade finita de bits, para obter
um sinal digital. A figura 5 mostra o processo quantização de uma onda
de áudio em valores discretos;

Figura 5 – (a) Onda de áudio; (b) Amostragem; (c) Quantização

compressão: para reduzir a banda do canal necessária para a


transmissão de voz digitalizada são usadas técnicas de compressão de
voz que devem acontecer em tempo real para possibilitar a comunicação
e a interação. Segundo Oliveira (2000) a compressão de sinais é
baseada em técnicas de processamento que retiram informações
redundantes, imprevisíveis e inúteis. Os dispositivos responsáveis pela
codificação da voz são conhecidos como voice codecs, ou simplesmente
vocoders. Os vocoders analisam o conteúdo espectral do sinal da fala e
identificam os parâmetros que são entendidos pelo ouvido. Estes

18
parâmetros são transmitidos e usados para sintetizar o padrão de voz. A
forma de onda resultante pode não ser semelhante a original, mas as
diferenças não são percebidas ou, ainda que o sejam, são consideradas
aceitáveis para a aplicação.

Segundo Guimarães (1999), os algoritmos de compressão de voz


possibilitam uma alta qualidade de voz fazendo um uso eficiente da largura de
banda do canal de comunicação. A compressão pode acontecer com ou sem perda
de informação. A escolha depende da degradação que se admite para o sinal e do
fator de compressão que se deseja atingir. O Pulse Code Modulation (PCM) é um
padrão de codificação da voz e consume 64Kbps por canal. Existem outros
algoritmos de compressão de voz que tentam modelar o PCM mais eficientemente
utilizando menos bits. Na figura 6 são demonstrados os principais codecs e suas
aplicações segundo recomendações do ITU-T.

Figura 6 – Codecs de Áudio do ITU-T

Fonte: Nazario, 2003. p. 16

2.4 QUALIDADE DE SERVIÇO

Conforme RNP (1999), desde a sua origem, o protocolo IP foi desenvolvido


e implementado como um protocolo de comunicação com controle de tráfego
utilizando a regra do melhor esforço (Best-effort ou Lak of QoS). Nele cada usuário
da rede envia seus dados e compartilha a largura de banda com todos os fluxos de
dados dos outros usuários. Os fluxos realizam a melhor forma possível para chegar
ao seu destino, conforme as rotas definidas e a largura de banda disponível. Quando
há congestionamento, os pacotes são descartados sem distinção. Desta forma não

19
há garantia de que o serviço será realizado com sucesso, nem mesmo de
desempenho. Entretanto muitas aplicações necessitam de tais garantias e uma
delas é a Telefonia IP, que é dita como uma aplicação intolerante de tempo real.
Isso se justifica porque segundo Nazario (2003) as pessoas não toleram atrasos na
voz de mais de 200ms, ou seja, o retardo fim a fim do tráfego de voz deve estar
dentro de limites que dependem da aplicação, podendo variar:

0 a 150 ms – aceitável para a maioria das aplicações;

150 a 400 ms – aceitável cuidando com o impacto do atraso na


aplicação;

acima de 400 ms – inaceitável para a maioria das aplicações.

De acordo com Hersent (2002), os principais parâmetros responsáveis por


esses atrasos e que caracterizam uma rede de pacotes são:

latência;

largura de banda;

perda de pacotes ou de seqüência.

Para resolver o problema da largura de banda, não adianta apenas


aumentar a capacidade de transmissão da linha até suprir as necessidades da
aplicação. Um provedor também deve assegurar que cada usuário da rede adquira
uma parte justa dessa banda (como uma reserva de recursos).
A perda de pacotes e a de seqüência estão intimamente ligadas com o
problema de largura de banda, mas além disso são influenciadas pela estabilidade
de rota da rede, administração eficiente de fila nos roteadores e o próprio uso de
controle de congestionamento (Internet Control Message Protocol (ICMP), o
protocolo de controle de mensagens na Internet – dissipação de recursos, etc.) nas
extremidades da rede e no backbone.
A latência é considerada o problema mais difícil a ser tratado. É comum
afirmarem que o IP é inadequado para transporte de dados com latência controlada,
mas segundo Hersent (2002), essa afirmativa não procede pois Parekh e Gallager
desenvolveram uma abordagem em 1993 que os levou à construção de uma família
de algoritmos de fila que eles chamaram de enfileiramento balanceado. Embora

20
esses algoritmos sejam difíceis de implementar na prática, eles podem garantir um
limite superior na latência em alguns fluxos de dados.
Segundo RNP (1999), atualmente existem dois modelos desenvolvidos pelo
IETF para implementar QoS na Internet: serviços integrados (IntServ) e serviços
diferenciados (DiffServ). IntServ é modelo baseado na reserva de recursos,
enquanto que serviços diferenciados é uma proposta onde os pacotes são marcados
de acordo com classes de serviços pré-determinadas.

2.5 PROTOCOLOS DE TELEFONIA IP

A seguir serão apresentados os principais protocolos envolvidos na


comunicação da Telefonia IP.

2.5.1 TCP/IP

A arquitetura TCP/IP é, na verdade, um grupo de protocolos que trabalham


conjuntamente, com o objetivo de estabelecer a comunicação e a transferência de
dados entre dois ou mais computadores ligados em rede.
O Transmission Control Protocol (TCP), como o próprio nome diz, controla a
transmissão dos dados, cuidando para que os dados enviados por um computador
cheguem integralmente ao destino correto.
O TCP nada mais é que uma biblioteca de rotinas instaladas nos
computadores origem e destino (ou seja, todos os computadores que utilizem a pilha
de protocolos TCP/IP para se comunicar) que as aplicações, como HTTP, e-mail,
Telnet, e outras, utilizam quando precisam executar o transporte de dados entre
computadores.
Para melhor gerenciar a transmissão, o TCP quebra os dados a serem
transmitidos em blocos menores, que chamamos de pacotes ou datagramas.
Utilizando esta estrutura o TCP é capaz de verificar se os datagramas chegam ao
destino correto ou se não houve perda de dados durante a transmissão,
retransmitindo o datagrama se necessário. Fará também o processo inverso,
juntando os datagramas no host destino para a reconstituição dos dados originais.
Enquanto o TCP cuida da segurança do envio e recebimento dos
datagramas, o IP é responsável pela transmissão em si, fazendo o serviço de

21
roteamento, ou seja, conduzindo os dados para os endereços corretos. Na verdade,
os dois protocolos se completam: enquanto o IP identifica os endereços e cuida para
que os dados sejam enviados pelo meio físico, o TCP verifica se estes dados
enviados foram transmitidos corretamente (TUTORIAL, 2004).
Os protocolos do TCP/IP atuam em camadas. A idéia é que cada camada de
software utilize e preste serviços para outras camadas. São 4 as camadas que
formam o TCP/IP:

aplicação: trata das questões de representação, codificação e controle de


diálogo. Protocolos: HTTP, FTP, Telnet, etc.;

transporte: lida com questões de qualidade de serviços, de


confiabilidade, controle de fluxo e correção de erros. Protocolos: TCP e
UDP;

internet: tem por finalidade enviar pacotes da origem de qualquer rede na


Internet e fazê-los chegar ao destino, independentemente do caminho e
das redes que tomem para chegar lá. Protocolo: IP;

acesso à rede: é a camada que se relaciona a tudo aquilo que um pacote


IP necessita para realmente estabelecer um link físico. Protocolo:
Ethernet, WiFi, etc.

Figura 7 – Arquitetura do Protocolo TCP/IP

2.5.2 UDP

O protocolo UDP é restringido a portas e sockets. Ele transmite os dados de


forma não orientada a conexão e atua no mesmo nível da camada de transporte do

22
protocolo TCP. O UDP nada mais é do que uma interface para o protocolo IP. Esse
protocolo substitui o protocolo TCP quando a transferência dos dados não precisa
estar submetida a serviços como controle de fluxo.
A função básica do UDP é servir como multiplexador e demultiplexador para
o tráfego de informações do IP. Assim como o TCP trabalha com portas que
orientam adequadamente o tráfego de informação a cada aplicação de nível
superior. Essas portas são:

porta de destino: é uma parte do datagrama (uma extremidade) que


indica o aplicativo ao qual se deve enviar a informação que chega;

porta de origem: localiza-se na outra extremidade do datagrama e indica


o aplicativo que enviou a mensagem. Pode ser usado para reenvio ou
quando não é utilizado é preenchido com zeros.

Figura 8 – Estrutura do Cabeçalho UDP

2.5.3 RTP

Segundo Medeiros (2004) o Real Time Transmission Protocol (RTP) foi


apresentado formalmente em janeiro de 1996 pelo Networkig Working Group do
IETF com objetivo de fornecer uma padronização de funcionalidades para os
aplicativos de transmissão de dados em tempo real como vídeo e áudio, tanto em
redes unicast como nas multicast, entretanto, sem garantir a qualidade de serviço
QoS ou reservar recursos de endereçamento.
O RTP é um protocolo que atua sobre a pilha UDP/IP, não garantindo a
entrega de pacotes (não orientado à conexão). Ele utiliza os serviços de

23
multiplexação e soma de verificação do UDP para estabelecer uma comunicação fim
a fim. As informações de áudio e vídeo produzidas pelo aplicativo remetente são
encapsuladas em pacotes RTP que por sua vez são encapsulados em um segmento
UDP. De acordo com Hersent (2002), quando uma transmissão é iniciada, uma
sessão RTP é criada a partir da comunicação entre os usuários da sessão. Cada
participante usa dois endereços de transporte, no caso do IP, por exemplo, são
utilizadas duas portas UDP na máquina local para cada sessão: uma para o fluxo
RTP e a outra para mensagens RTCP. Conforme Medeiros (2004), o RTP permite
basicamente a especificação dos requisitos de tempo e conteúdo pertinentes à
transmissão multimídia, tanto no envio quanto na recepção através de:

número de seqüência: o RTP atribui número de ordem aos pacotes. Isto


pode ser usado para verificação das perdas, sequenciamento e possível
redirecionamento de pacotes;

timestamp (selo de temporização): possibilita a correta temporização dos


pacotes contendo áudio e/ou vídeo;

envio de pacotes sem retransmissão: característica fundamental das


transmissões multimídias onde o reenvio dos dados não se faz
necessário, pois pequenas perdas são suportadas pelo sistema fim a fim
não comprometendo a qualidade da informação. A não retransmissão
torna o sistema mais robusto. O RTP permite apenas ao receptor notar
as perdas e ou atrasos;

identificação de origem: necessário para indicar quem enviou o pacote.


Numa conferência multicast, um mesmo fluxo pode ter várias origens;

identificação de conteúdo: permite a alteração dinâmica dos vocoders em


redes sem garantia de QoS em função das perdas e do atraso a fim de
melhorar a qualidade final do áudio;

sincronismo: pacotes de um mesmo fluxo podem sofrer diferentes


atrasos. A variação deste atraso é prejudicial à reprodução da mídia.
Buffers adicionais podem então ser utilizados para eliminar a diferença
entre os atrasos (jitter). Esses mecanismos processam informações de
tempo de cada pacote RTP que provê esta informação.

24
O protocolo RTP, por não ser orientado à conexão, não monitora a
transmissão e a recepção dos pacotes. Esta tarefa é realizada por outro protocolo, o
RTCP que será abordado posteriormente.
Na figura 9 é demonstrado o formato do pacote RTP.

Figura 9 – Formato pacote RTP

Abaixo segue a descrição dos campos do cabeçalho:

V – Versão (2 bits): especifica a versão do RTP.

P – Preenchimento/padding (1 bit): Sinaliza a adição de octetos de


enchimento adicionais ao conteúdo da carga (payload) sem fazer parte
da mesma. O último octeto do preenchimento contém a informação de
quantos octetos foram inseridos. Este preenchimento adicional é
normalmente utilizado para uso de algoritmos de criptografia de tamanho
de blocos fixos ou para transmissão de pequenos conteúdos.

X – Extensão/extension (1 bit): com esse bit marcado, é acrescentado


uma extensão ao cabeçalho original;

CC – Contador de CSRC/CSRC count (4 bits): informa quantos


identificadores CSRC vem após o cabeçalho fixo. Cada fluxo de mídia
que é adicionado ao cabeçalho RTP incrementa o contador de CSRC
(lista que contém os fluxos contribuintes);

M – Marcador/marker (1 bit): identifica as fronteiras de um quadro numa


corrente de pacotes;

PT – Tipo de carga/payload type (7 bits): este campo identifica o formato


da carga do pacote RTP como também a determinação de sua
interpretação pela aplicação;
25
número de seqüência (16 bits): o número de seqüência põe em ordem
os diversos pacotes de RTP. A cada novo pacote, a numeração é
incrementada de uma unidade. Basicamente, esse ordenamento serve
para o receptor detectar os pacotes perdidos e restaurar a seqüência de
pacotes;

timestamp (32 bits): reflete o instante em que foi criado o primeiro octeto
de dados do pacote, este tempo deve ser fornecido por um clock preciso
e serve para efetuar a sincronização e o cálculo do jitter do lado do
cliente;

identificador de fonte de sincronização (SSRC) (32 bits): fonte de um


fluxo RTP. Todos os pacotes RTP com um SSRC comum possuem uma
mesma referência de tempo e de sequenciamento;

identificador de fonte contribuinte (CSRC) (0...15 x 32 bits cada):


quando um fluxo RTP é resultado de uma combinação de vários fluxos
contribuintes feita por um misturador (mixer) RTP, a lista com os SSRCs
de cada um dos fluxos contribuintes é adicionada ao cabeçalho RTP do
fluxo resultante como uma lista de CSRCs. O fluxo resultante tem o seu
próprio SSRC.

2.5.4 RTCP

Conforme Hersent (2002), o Real Time Control Protocol (RTCP) é


normalmente usado com o RTP para permitir o transporte de algum retorno sobre a
qualidade da transmissão como o jitter da rede, a perda média de pacotes, etc. Além
de poder transportar algumas informações a respeito da identidade dos
participantes, RTCP faz o controle sobre a conexão (transmissão e recepção)
ausente no RTP, diminuindo-se desta forma o overhead que o uso de um único
protocolo teria (LOUREIRO, 1999).
Durante uma sessão multimídia, pacotes são enviados periodicamente entre
participantes de uma sessão RTP. O RTCP, assim como o RTP, atua sobre o UDP,
apresentando diagnósticos de rede e controle de desempenho. O conjunto
RTP/RTCP permite aos receptores compensarem o jitter da rede, por meio do
controle do buffer e sequenciamento apropriado para que medidas corretivas
26
possam ser tomadas, como a diminuição da taxa de transmissão para limitar a
largura de banda utilizada.
Existem vários tipos de pacotes RTCP, um para cada tipo de informação
como é demonstrado a seguir:

Sender Reports (SR): contém informações de transmissão e recepção


para transmissores ativos;

Receiver Reports (RR): contêm informações de recepção para ouvintes


que não sejam também transmissores ativos. Cada um desses relatórios
trás informações sobre timestamp e o atraso desde o último relatório do
transmissor recebido;

Source Description (SDES): nessa mensagem seguem informações


adicionais sobre cada participante de uma sessão RTP (e-mail, telefone,
localização geográfica, etc.) visando exclusivamente sua identificação;

Bye: enviado por um participante quando ele abandona a conferência;

APP: adicionam funções específicas de uma aplicação ao pacote RTP.

2.5.5 SIP & H.323

SIP e o H.323 foram criados com o mesmo objetivo: possibilitar o tráfego de


voz e multimídia IP. Tanto um quanto o outro utiliza a inteligência dos equipamentos
na ponta (end points). Porém a suas semelhanças terminam aí, pois além da
diferença de idade (o SIP nasceu três anos após o lançamento do H.323 pelo
Internacional Telecomunications Union (ITU-T) em 1996), eles diferem em outras
questões que serão abordadas a seguir.
Atualmente, por ter mais tempo de estrada, o H.323 leva vantagem em
relação ao SIP, pois vem sendo utilizado por grande parte das operadoras
tradicionais do mercado VoIP. No entanto, o SIP vem ganhando cada vez mais
espaço no setor, principalmente nos EUA e Europa, por sua facilidade de permitir o
desenvolvimento de aplicações.
Segundo Hersent (2002), o SIP faz em uma transação o que a primeira
versão do H.323 fazia em quatro ou cinco trocas de mensagens e pode usar o UDP
ao contrário do H.323 que nas duas primeiras versões tinham que usar o TCP.

27
Através da figura 10 pode-se ter uma idéia da simplicidade do SIP em
relação ao H.323, levando em consideração o número de protocolos utilizado por
cada um.

Quadro 1 – Protocolos utilizados no H.323 e SIP

Ao levar em consideração a questão da escalabilidade, em ambientes de


alto tráfego de chamadas, o SIP exige menos ciclos de CPU para gerar a sinalização
de mensagens. Com isso, o servidor tem condições de, teoricamente lidar com mais
transações do que o H.323, que usa mensagens definidas no H.225 para ajustar o
gatekeeper a ajustar o balanceamento de carga.
Além disso, na questão de segurança, o SIP possui mais alternativas ao
utilizar autenticação por HTTP (Hypertext Transfer Protocol), SSL (Secure Sockets
Layer) e PGP (Predy Good Privacy), ao contrário do H.323 que utiliza apenas o
H.235 (Gateway to Gatekeeper)
Por outro lado, o H.323 possui recursos poderosos para controle de
conferências, sozinho ou combinado com o H.332. Já no SIP, muitos dos recursos
necessários para fazer uma conferência controlada ainda não existem, pois ele não
foi projetado para efetuar esse controle. Porém essa realidade está mudando.

28
3 SIP

3.1 INTRODUÇÃO

Segundo o Request For Comment 3261 (RFC 3261), o Session Initiation


Protocol (SIP) é um protocolo de controle da camada de aplicação que pode
estabelecer, modificar e terminar chamadas ou sessões multimídia.
De acordo com Oliveira (2000), o SIP é um protocolo cliente-servidor
parecido tanto em sintaxe quanto em semântica com o HTTP, pois utiliza os mesmos
cabeçalhos, erros e regras de codificação.
Geralmente as requisições são geradas por uma entidade cliente e enviadas
para uma entidade receptora ou servidor. O servidor processa as mensagens e
então envia uma resposta para o cliente.
As entidades SIP se comunicam usando transações. O SIP chama cada
transação de pedido e cada pedido produz uma ou mais respostas. A entidade que
inicia um pedido SIP é chamada de cliente SIP e a entidade que responde são
denominadas de servidor SIP (HERSENT, 2002).
Segundo a Oliveira (2000), o SIP é um protocolo ponto a ponto onde seus
terminais em uma sessão são chamados de User Agents (UAs). Um agente de
usuário pode assumir um dos seguintes papéis:

User Agent Client (UAC): é responsável por iniciar chamadas, enviando


requisições SIP;

User Agent Server (UAS): é responsável por responder às chamadas,


enviando respostas.

Existem três tipos servidores que ficam espalhados numa rede de


arquitetura SIP:

servidores de registro e localização: recebem atualizações sobre a


localização corrente de cada usuário e disponibilizam essas informações
aos diversos usuários;

servidores proxy: recebem requisições e enviam-nas para outros


servidores, conhecidos então como servidores next-hop. O servidor next-

29
hop pode ser outro servidor proxy, um UAS ou um servidor de
redirecionamento;

servidores de redirecionamento: também recebe requisições e determina


um servidor next-hop. Entretanto, ao invés de reenviar neste caso, ele
retorna o endereço do servidor next-hope para o cliente.

Figura 10 – Arquitetura SIP

Para se iniciar uma comunicação SIP é necessário abrir uma conexão de


sinalização entre os pontos de origem e de destino da chamada. Os pontos finais
SIP podem usar TCP ou UDP. No protocolo UDP que será utilizado neste trabalho, o
endereço e a porta a serem usados para as respostas a pedidos SIP estarão
contidos no parâmetro de cabeçalho “Via” do pedido SIP, mostrado na figura 11.
A linha de início do pedido SIP contém o tipo de pedido enviado pelo cliente
SIP, o endereço SIP do usuário destino e a versão SIP utilizada.

30
Figura 11 – Mensagem de pedido SIP

De acordo com Hersent (2002), existem dois tipos de mensagens SIP:


pedidos (requests) e respostas (responses). Elas compartilham um formato comum
onde alguns campos do cabeçalho estão presentes tanto nos pedidos quanto nas
respostas (cabeçalho geral), que são descritos a seguir:

Via: traz a versão SIP, o transporte usado, o endereço IP do usuário que


faz a chamada e a porta utilizada;

Call-ID: a primeira parte deste campo deve ser um padrão único dentro
de cada computador e a última um nome de domínio ou endereço IP
(roteáveis) de uma máquina;

From: este campo deve estar presente em todos os pedidos e respostas.


Ele contém um nome que pode ser mostrado opcionalmente e o
endereço do originador da chamada. Nas respostas, o campo “From” é
simplesmente copiado a partir do pedido, neste caso, não designa ser o
originador da chamada;

To: este campo indica o destino da chamada, sendo obrigatório em todos


os pedidos e respostas SIP, sendo simplesmente uma cópia do campo
presente nos pedidos;

31
Cseq: cada pedido deve possuir este campo, composto por um número
de seqüência sem sinal e pelo nome do método que identifica o pedido
que está sendo enviado. A cada novo pedido um número de seqüência é
incrementado iniciando com um valor aleatório. As únicas exceções são
os pedidos ACK e Cancel, que mantêm o número “Cseq” da resposta
recebida (para ACK) ou do pedido cancelado (para o Cancel). No caso
mensagens do tipo resposta, o servidor deve copiar o valor “Cseq” do
pedido para as respostas correspondentes conforme a figura 13.

Encryption: esse campo de cabeçalho especifica que o corpo da


mensagem (Dados SDP conforme figura 11) e, possivelmente, alguns
cabeçalhos de mensagem foram criptografados. Mais detalhes serão
abordados posteriormente.

Figura 12 – Valores do campo “Cseq”

Conforme Hersent (2002), alguns campos de cabeçalho aplicam-se


diretamente ao corpo da mensagem e fazem parte do “cabeçalho de entidade”:

Content-Type: descreve o tipo de mídia do conteúdo do corpo da


mensagem e o protocolo utilizado;

Content-lenght: contém o número de octetos do corpo da mensagem.

32
Segundo Nazario (2003), além dos campos do cabeçalho geral, uma
mensagem de pedido pode transportar campos com informações específicas dos
pedidos. O campo “Accept” é utilizado para indicar os tipos de mídia aceitáveis na
resposta e o campo “Subject” para transportar informações sobre a natureza da
chamada.
Os campos que terminam com CR e LF são utilizados para determinar uma
linha em branco entre os campos.
Todos os pedidos SIP são enviados do terminal cliente para o terminal
servidor e podem ser realizados através de diferentes métodos:

ACK: este pedido é enviado pelo cliente para confirmar que ele recebeu
uma resposta final do servidor, como 200 OK;

BYE: este pedido é enviado pelo agente de origem ou de destino para


interromper uma chamada;

Cancel: este pedido pode ser enviado para interromper um pedido que foi
enviado anteriormente enquanto o servidor ainda não tiver enviado uma
resposta final;

Invite: este pedido é usado para iniciar uma chamada;

Option: um cliente envia este pedido ao servidor para saber as suas


capacidades. O servidor retorna uma lista com os métodos que ele
suporta;

Register: este pedido possibilita aos clientes registrarem sua localização


atual em um servidor.

Segundo Hersent (2002), um servidor SIP responde a um pedido SIP com


uma ou mais respostas SIP, sendo que a maioria delas (2xx, 3xx, 4xx, 5xx, 6xx) são
respostas que finalizam a transação SIP, enquanto que as respostas 1xx são
provisórias e não finalizam a sessão.

33
Figura 13 – Resposta SIP

Sendo assim, o inicio de uma sessão SIP ocorre através do envio de um


pedido INVITE ao terminal de destino, que irá analisar o pedido observando qual o
tipo de mídia e o endereço de transporte que o originador da chamada deseja
receber os dados. Para indicar que aceita o pedido, o terminal de destino retorna a
origem uma resposta de OK. Esta também contém as capacidades de mídia do
ponto de destino da chamada e onde ele pretende receber os dados de mídia. O
originador da chama precisa confirmar que recebeu de maneira adequada à
resposta do ponto de destino com a mensagem ACK (HERSENT, 2002).

Figura 14 – Sinalização completa da chamada

34
3.2 ENDEREÇOS SIP

De acordo com Hersent (2002), os endereços SIP são URLs (Uniform


Resource Locators) que não se referem ao endereço de transporte a ser chamado,
mas a uma entidade abstrata que pode ser um usuário ou um servidor multimídia.
O formato geral das URLs SIP é user@host, onde a parte host pode se
referir a um nome de domínio. Em muitos casos, o endereço SIP de um usuário será
o mesmo que o seu e-mail, porém outras opções (contendo número de porta, por
exemplo) poderão ser adotadas conforme o quadro 2.

Quadro 2 – Endereços SIP


John@netcentrex.net: 1234 URL SIP comum
Userdomain.com Sem a parte do usuário, a porta padrão será 5060
support@company.fr:2345;transport=UDP Deseja ser contatado usando UDP
192.190.234.3:8001 Contate o servidor neste endereço IP
support@netcentrex.net;maddr=239.255.255.1;ttl=32 Suprima o nome normal do host e use o mecanismo
de endereço de transporte use multicast para
239.255.255.1 com um TTL de 32
+33-231759329@cybercall.com;user=phone Número de telefone global
0231759329;isub=10;postd=w11p11@cybercall.com; Número de telefone local com endereço ISDN, espere
user=phone pelo tom de discagem, então disque 11 (pausa) 11
usando DTMF
ACD@netcentrex.net?priority=high& customercode=1234 Usando cabeçalhos de extensão proprietários para
controlar a prioridade em um sistema ACD...
Newcomer@reg.usergroup.com; METHOD=REGISTER URLs anteriores causariam um pedido SIP Invite, esta
inicia um registro junto ao registrar do usergroup:
reg.usergroup.com

3.3 SDP

Segundo Oliveira (2000), Session Description Protocol (SDP) especificado


no RFC 3264 descreve sessões multimídia para telefonia e aplicações de difusão
como radio ou TV via Internet.
Conforme Nazario (2003), o SDP leva informações sobre tipo do fluxo de
mídia, endereços, portas, tipo de conteúdo, em formato textual assim como o SIP.
Quando um pedido INVITE é enviado, os parâmetros SDP descrevem as
capacidades do originador da chamada. Na resposta ao pedido, os parâmetros SDP
são modificados trazendo as capacidades do destino da chamada.

35
A lista contendo todos os campos do protocolo SDP está descrita no RFC
3264. Os campos utilizados por este trabalho e que foram descritos na área de
dados SDP dos pedidos e respostas SIP são:

v: traz a versão do protocolo;

o: nome do usuário/proprietário/criador e identificador de sessão;

c: informação sobe a conexão (c=<tipo de rede><tipo de


endereço><endereço de conexão>). Ex.: IN IP4 192.190.132.31;

m: nome da mídia e endereço de transporte


(m=<mídia><porta><transporte><lista de formatos>. Ex.: m=áudio 49170
RTP/AVT 0;

k: armazena a chave de criptografia de mídia.

3.4 SEGURANÇA SIP

A segurança da mídia que envolve o SIP é implementada através do SDP.


Este especifica a criptografia de mídia utilizando o parâmetro “k”, definido no RFC
2327, e que armazena o algoritmo de segurança em uso bem como a chave
(HERSENT, 2002).
Para que a chave de criptografia de mídia fique protegida, tanto os pedidos
quanto as respostas SDP deverão ser criptografadas.
Essas medidas de segurança não servem apenas para omitir a origem e o
destino das chamadas. Mas isso vai além, com o artifício da autenticação das
mensagens SIP, que auxilia na contabilidade e tarifação, chamadas enganosas
podem ser evitadas.
O SIP define duas maneiras para exercer um sistema de criptografia fim a
fim: um é baseado em uma chave secreta compartilhada (simétrica) entre o
remetente e o receptor e a outra em um mecanismo de chave pública. Neste o
remetente criptografa a mensagem usando a chave pública do receptor. A
criptografia pode ser executada pelo remetente do pedido ou por um proxy de
segurança intermediário.

36
Caso seja usada uma chave secreta conhecida por ambos (emissor e
receptor), o receptor da mensagem será capaz de decriptografar a mensagem
criptografada pelo remetente.
A figura 15 mostra um exemplo de um pedido SIP criptografado.

Figura 15 – Criptografia de um pedido

Nele a linha de pedido e os cabeçalhos não criptografados são enviados em


primeiro lugar, devendo incluir o campo de cabeçalho Encryption, o qual mostra o
método de criptografia e a versão que está sendo utilizada. A parte criptografada
começa após a linha vazia (HERSENT, 2002).
Se apenas o corpo da mensagem tiver de ser criptografado, uma linha vazia
extra deverá ser inserida no corpo antes da criptografia, com o propósito de evitar
que o receptor confunda os dados do corpo da mensagem com os cabeçalhos
criptografados.
Um servidor SIP ao receber um pedido criptografado do remetente,
indicando qual chave deve ser utilizada para criptografar a resposta, não deve
retornar de maneira limpa (não-criptografada) qualquer campo que foi criptografado
anteriormente.

37
4 CONCEITOS DE CRIPTOGRAFIA

4.1 INTRODUÇÃO

Atualmente milhões de pessoas utilizam as redes de comunicação como a


Internet e Telefonia para fazer compras, consultar extratos bancários ou realizar
aplicações financeiras. Para que estes serviços sejam oferecidos de forma segura,
tanto para o usuário do serviço quanto para o fornecedor, certas medidas de
segurança (como a criptografia) devem ser adotadas para que nenhum dos níveis
envolvidos na comunicação sofra algum tipo de dano ou prejuízo causado por um
invasor. Este pode agir de duas formas: interceptando e alterando a informação ou
apenas tendo acesso a ela sem modificá-la conforme ilustra a figura 16.

Figura 16 – Formas de ação do invasor

Segundo Tanenbaum (2003), os problemas de segurança das redes podem


ser divididos nos seguintes campos interligados:

sigilo: manter desconhecido para todos, com exceção de um grupo


controlado de usuários, o conteúdo de um documento;

autenticação: a identidade das entidades deve ser legítima e confirmada;

integridade: o conteúdo original de um documento não pode sofrer


qualquer modificação ou falsificação;

38
não-repúdio: o emissor da mensagem não poderá negar posteriormente
a autoria da mesma.

A solução de um ou parte desses problemas pode ser obtida de formas


variadas. Uma das utilizadas atualmente, e disseminada pelo uso de redes de
computadores, é a criptografia.

4.2 CRIPTOGRAFIA

A criptografia se constitui de um conjunto de métodos e técnicas destinadas


a proteger o conteúdo de uma informação, tanto em relação às modificações não
autorizadas quanto a alteração da sua origem, sendo uma das técnicas que
possibilitam o atendimento dos requisitos básicos de segurança.
De acordo como Bezerra (2004) ela consiste em modificar o texto original da
mensagem (texto simples), através de uma seqüência de instruções (algoritmo),
gerando uma mensagem que se torna ilegível (texto cifrado). O texto cifrado é
enviado ao destino que a partir de um procedimento reverso recupera a mensagem
original (figura 17).

Figura 17 – Modelo Ilustrativo de Criptografia

Nos sistemas criptográficos modernos o segredo não está contido no


algoritmo, e sim na chave. A chave é como uma senha, uma informação secreta que
precisa ser fornecida para cifrar e posteriormente decifrar a mensagem. Existem dois
tipos de sistemas criptográficos: sistemas de chaves simétricas e sistemas de
chaves assimétricas.

39
4.2.1 Sistemas de Chaves Simétricas

Nos sistemas de chaves simétricas a criptografia é baseada em algoritmos


que dependem de uma mesma chave secreta, que é usada tanto no processo de
cifrar quanto no de decifrar o texto cifrado. Somente emissor e receptor devem
conhecer a chave secreta, pois a segurança da comunicação depende desse
segredo. A convenção utilizada neste trabalho adotará que “C” significa rotina de
ciframento e a “D” de deciframento. Subscrito a elas está a chave necessária para
realizar a criptografia (Figura 18).

Figura 18 – Criptografia Simétrica

De acordo com Tanenbaum (2003), os algoritmos de chave simétrica mais


comuns são: o DES (American Data Encryption Standart) e o Rijndael (Daemen e
Rijmen).
Neste trabalho será adotado o algoritmo AES (Advanced Encryption
Standard) de Rijndael para criptografar os pacotes de áudio produzidos durante a
conversação depois de estabelecida a sessão de VoIP através das mensagens SIP .
O AES é um algoritmo que encripta blocos de 128, 192 e 256 bits, podendo usar
chaves de 128, 192 ou 256 bits. Assim como o DES, o Rijndael utiliza substituição e
permutações, e também emprega várias rodadas, cujo número depende do tamanho
da chave e do tamanho do bloco, sendo 10 para chaves de 128 bits com blocos de
128 bits (TANENBAUM, 2003). Conforme o site da WIKIPEDIA, até o presente
momento o Rijdael é imune a qualquer tipo de criptoanálise, sendo que o único
ataque possível é por força bruta. Ou seja, tentar quebrar o criptograma testando
todo o espaço de chaves possíveis do algoritmo.

40
4.2.2 Sistemas de Chaves Assimétricas

Nos sistemas de chaves assimétricas a criptografia é baseada em algoritmos


que utilizam duas chaves diferentes, de forma que o texto cifrado pela chave 1
(chave pública) do par só poderá ser decifrado pela chave 2 (chave privada) do
mesmo par. A chave pública pode ser obtida pelo público em geral, enquanto que a
chave privada só poderá ser de conhecimento do seu titular.
Para exemplificar na figura 19 o emissor “B” processa seu documento “M”
com a chave pública “k” do receptor, que é conhecida. O texto cifrado “T” só poderá
ser decifrado pelo receptor “B”, uma vez que somente ele possui a chave privada “s”
relacionada à chave pública “k” que orientou a criptografia do documento “M”. Desta
forma cada usuário possui duas chaves uma pública e a outra privada.

Figura 19 – Criptografia Assimétrica

41
5 DESENVOLVIMENTO DO TRABALHO

5.1 INTRODUÇÃO

No Brasil algumas empresas já oferecem o serviço de VoIP aos seus


clientes como, por exemplo, GVT, IPPhone Brasil, Nikotel, Redevox, Simphonia,
Sun-isp, VOIPMAX e VoxFone. Porém, é importante ressaltar que na convergência
das redes de voz com as redes de dados baseadas em TCP/IP, há também a
convergência de vulnerabilidades inerentes as duas tecnologias. De acordo com
Galvão (2003), no VoIP o conteúdo das conversas telefônicas está trafegando na
rede de dados, encapsulado em pacotes IP, e a captura de pacotes de dados em
redes IP através das técnicas de “Sniffing” é relativamente trivial. Já existem na
Internet ferramentas como VOMIT (Voice Over Misconfigured Internet Telephones)
capaz de capturar pacotes de uma conversa telefônica, remontá-los e convertê-los
em um formato comum de áudio (*.wav).
Desta forma, este protótipo de Telefonia IP foi desenvolvido para atender
essas questões visando o cumprimento dos objetivos inicialmente traçados, com o
intuito de fornecer uma interface amigável ao usuário que queira estabelecer
chamadas telefônicas com segurança e baixo custo comparado as tarifas telefônicas
convencionais do STFC.

5.2 REQUISISTOS DO PROTÓTIPO

Para atender as necessidades citadas na seção anterior e viabilizar a


comunicação entre dois usuários da Telefonia IP o presente trabalho terá as
seguintes funcionalidades: criar uma sessão de VoIP, através da negociação de
mensagens SIP, capturar e comprimir a voz, criptografar a voz comprimida e enviá-la
em pacotes RTP através do protocolo IP. No usuário de destino, decriptografar a voz
comprimida, descomprimi-la e reproduzi-la na placa de som.
O protótipo do sistema de Telefonia IP desenvolvido tem como principal
embasamento o padrão SIP do IETF e o algoritmo de criptografia AES para
implementar um canal seguro entre os seus usuários. Estes encontram-se em uma
mesma LAN e são identificados através de endereços IP (fixo para cada usuário).

42
5.3 ESPECIFICAÇÃO

Conforme o item 3.4 relacionado à segurança SIP, a criptografia de mídia é


especificada pelo SDP. Desta forma, a ferramenta desenvolvida utiliza o campo “k”
do referido protocolo (que contém a chave secreta) para criptografar os pacotes de
voz produzidos durante a conversação entre dois usuários do sistema depois de
estabelecida a sessão de VoIP através das mensagens SIP.
O protótipo possui duas chaves secretas de 128 bits baseadas no algoritmo
de chave simétrica AES de Rijmaen. A primeira chave secreta “k” é a chave
escolhida pelo usuário originador da chamada. Ela tem a função de criptografar os
fragmentos de voz oriundos do processo de compressão, que posteriormente serão
transmitidos através do RTP. O diagrama de blocos da figura 20 ilustra este
processo:

Figura 20 – Criptografia dos Pacotes de Voz

43
A segunda chave secreta “q” é uma chave interna pré-definida no protótipo
de Telefonia IP que irá criptografar a chave de sessão “k” escolhida pelo originador
da chamada. Depois de criptografada a chave “k” será enviada através de um
pedido de “INVITE” ao receptor conforme o modelo de mensagem SIP construída
neste protótipo e ilustrada na figura 21.

Figura 21 – Mensagem SIP

5.3.1 Diagrama de Caso de Uso

Segundo Araújo (2005) o diagrama de caso de uso é utilizado para


descrever o comportamento do sistema em várias situações que podem ocorrer
durante sua operação.
A figura 22 ilustra o diagrama de caso de uso do protótipo e o quadro 3
descreve as suas possíveis situações, indicando o nome do caso de uso, o
respectivo ator e a descrição de cada um deles.

44
Figura 22 – Diagrama de Caso de Uso

Quadro 3 – Casos de uso


Caso de Uso Ator Descrição
Habilitar Criptografia Usuário O usuário insere a chave secreta
que irá criptografar o pacotes de
áudio transmitidos via RTP durante
a sessão de VoIP.
Efetuar Ligação Usuário Depois de escolher a chave de
sessão o usuário envia uma
mensagem de pedido para um
usuário destino (previamente
escolhido) indicando que deseja
estabelecer a conversação através
de uma conexão segura.
Criar Sessão VoIP Efetuar Ligação A sessão é criada após a troca,
entre os usuários participantes, de
mensagens SIP conforme ilustra a
figura 15 citada anteriormente.

45
Depois do originador da chamada
receber o “200 OK” do receptor e
enviar a resposta “ACK” para
finalizar a negociação a sessão está
praticamente estabelecida.
Enviar Áudio Criptografado Efetuar Ligação Após o estabelecimento da sessão
VoIP o usuário está apto a enviar
áudio capturado, comprimido,
criptografado e enviado via RTP.
Receber Áudio Efetuar Ligação Após o estabelecimento da sessão
Criptografado VoIP o usuário está apto a receber
áudio capturado, comprimido,
criptografado e enviado via RTP.
Desligar Efetuar ligação Após o estabelecimento da sessão
VoIP o tanto o originador da
chamada quanto o receptor podem
enviar um pedido “BYE” para
finalizar a sessão.
Cancelar Ligação Efetuar ligação Antes do estabelecimento da
sessão VoIP o originador da
chamada pode enviar o pedido
“CANCEL” ao receptor antes de
receber a resposta do pedido de
“INVITE” enviado anteriormente.
Desabilitar Criptografia Efetuar ligação Após o estabelecimento da sessão
VoIP o usuário pode desabilitar a
opção de criptografia dos pacotes
de voz enviados via RTP.
Decriptografar Áudio e Receber Áudio O algoritmo AES decriptografa os
Reproduzi-lo Criptografado pacotes de áudio recebidos via RTP
através da chave secreta de sessão
previamente definida e os reproduz
via biblioteca utilizada.
Enviar MensagemSIP Criar Sessão O envio de mensagem ocorre de
VoIP acordo com a mensagem recebida,
ou seja, as mensagens podem ser
enviadas como um pedido ou como
uma resposta a este.

5.3.2 Estrutura de Camadas do Protótipo

O protótipo desenvolvido pode ser visualizado em uma estrutura de


camadas hierárquicas, na qual as camadas inferiores fornecem serviços as camadas
superiores. A figura 23 ilustra os serviços fornecidos e transmitem a forma como foi
tratada e implementada a ferramenta.

46
Figura 23 – Estrutura de Camadas do Protótipo

5.3.3 Diagrama de Classes

Para Furlan, apud Nazario (2003, p.35) “o diagrama de classes é usado para
mostrar a estrutura lógica mostrando elementos tais como: classes, tipos atributos e
métodos”. A figura 24 mostra o diagrama de classes de controle e gerenciamento do
protótipo.

47
Figura 24 – Diagrama de Classes de Controle e Gerenciamento

Abaixo são descritos os papéis desempenhados por cada uma das classes
do diagrama de classes de controle e gerenciamento:

Classe UDPClass: implementa o recurso de enviar e receber pacotes


UDP pela rede;

48
Classe SIPClass: implementa o tratamento das mensagens SIP. Utiliza a
classe “UDPClass” para enviar e receber as mensagens sob forma de
pacotes UDP;

Classe MngrClass: implementa a camada de gerenciamento. Essa classe


possui métodos para iniciar e terminar uma conversação sob VoIP. Ela
utiliza as classes “SIPClass” para controlar a sessão e a classe
“JVOIPSession” para prover a sessão de comunicação;

Classe CTccDlg: classe da janela de diálogo que faz a interface com o


usuário. Implementa os recursos da camada de aplicação;

Classe StrListClass: implementa recurso de manter uma lista de strings,


possibilitando que a classe “MngrClass” mantenha uma lista de contatos.

A camada de segurança foi implementada na classe responsável pela


compressão e descompressão da voz digitalizada. Logo após os procedimentos do
método de compressão da classe citada, a função de criptografia foi escrita, cifrando
os dados provenientes do resultado do método em questão.
Por outro lado, a função de decriptografia foi disposta no método de
descompressão da referida classe, decifrando os dados cifrados para que possam
ser descomprimidos.

5.4 IMPLEMENTAÇÃO

Os itens a seguir irão descrever as ferramentas de apoio utilizadas para o


desenvolvimento do protótipo bem como o seu funcionamento demonstrado através
das suas principais telas devidamente comentadas.
Para a implementação deste protótipo foi utilizada a linguagem de
programação C++ através do Visual C++ 6, baseando-se na biblioteca JVOIPLIB
versão 1.3.0 escrita por Liesenborgs (2004). O algoritmo de criptografia, necessário
à implementação de um canal seguro durante a sessão de VoIP estabelecida
através de JVOIPLIB, foi criado baseando-se no padrão “AES” de Rijmaen.

49
5.4.1 Visual C++ 6

De acordo com Hubbard (2003), o C++ é uma linguagem de programação


criada por Bjarne Stroustrup no início da década que 1980 e atualmente é uma das
linguagens mais populares para programação orientada a objetos.
Segundo Holzner (1995), o Visual C++ é um pacote imenso que oferece
muitos recursos com sua riqueza de editores, ferramentas, repositórios, bibliotecas
de classe, técnicas de depuração e muito mais. A figura 25 mostra o ambiente de
trabalho do Visual C++ 6.

Figura 25 – Ambiente de Trabalho do Visual C++ 6

5.4.2 JVOIPLIB

O termo JVOIPLIB significa Jori’s VoIP Library. Esta biblioteca foi escrita por
Jori Liesenborgs e fornece recursos para implementação de aplicações de VoIP

50
através de uma interface simples e extensível para criação e gerenciamento de
sessões VoIP (LIESENBORGS, 2004).
Ela possui basicamente a função de criar uma sessão de VoIP, transmitir
voz e destruir a sessão VoIP. Suas sessões altamente configuráveis permitem ainda
que atributos previamente escolhidos pelo usuário como a taxa de amostragem,
intervalo da amostra, tipo de compressão e etc, possam ser alterados durante a
sessão já estabelecida.
De acordo com Liesenborgs (2004) os seguintes módulos descritos contêm
os componentes a serem utilizados em uma aplicação VoIP:

leitura de som na entrada e saída da placa de som;

compressão de áudio nos padrões DPCM, Mu-law, GSM e LPC 5.4k;

transmissão de dados via RTP;

um voice mixer (junta sinais enviados pela conexão VoIP criada);

método de localização.

Para adicionar VoIP a uma aplicação primeiramente deve-se criar uma


sessão com os parâmetros desejados (como a taxa de amostragem). Em seguida
adiciona-se destino a essa sessão. E quando não for mais necessária a VoIP, deve-
se simplesmente destruir a sessão. A seguir serão descritas de forma sucinta as
classes e métodos utilizados para realizar esse processo.
A sessão de VoIP é representada pela classe JVoIPSession. Cria-se a
sessão através da chamada da função Create utilizando parâmetros do tipo
JVoIPSessionParams, que contém parâmetros para sessão. O RTP é utilizado
através da classe JVoIPComponentParams. A figura 26 mostra o diagrama que
exemplifica as três classes citadas.

51
Figura 26 – Classes de Criação da Sessão

Depois que a sessão estiver ativa, torna-se necessário definir para onde os
dados VoIP devem ser enviados. As funções membro AddDestination e
DeleteDestination da classe JVoIPSession são responsáveis por essa definição
podendo especificar tanto destinos unicast como multicast. A função
DeleteDestination é utilizada na finalização da sessão.
Após o estabelecimento da sessão, a classe VoiceCall, em conjunto com
outras subclasses, fica responsável pelo tratamento e transmissão da voz sobre o
protocolo IP.

Figura 27 – Classes Responsáveis pelo Tratamento da Voz

52
Depois de terminada a conversação, para destruir a sessão é chamado o
método Destroy da classe JVoIPSession.
A biblioteca JVOIPLIB utiliza o serviço de outras duas bibliotecas para prover
a sessão VoIP. Uma delas é a JRTPLIB que dá suporte ao RTP no envio e
recebimento de pacotes. A outra JThread, como o próprio nome supõe, facilita o uso
de threads em diferentes plataformas.

Quadro 4 – JThread

5.4.3 Protótipo

Neste item serão demonstradas as principais telas que compõem o protótipo


e breve explanação sobre cada uma delas.
Antes que o usuário do Sistema de Telefonia IP Criptografado possa efetuar
uma ligação, ele deve editar a sua lista de contatos inserindo o nome e o endereço
IP do destinatário no arquivo “Contatos.txt”.

Figura 28 – Arquivo Contatos.txt

53
Após essa primeira etapa o usuário poderá inicializar o protótipo executando
o programa Tcc.exe, onde será lhe apresentada a tela da figura 29.

Figura 29 – Tela Inicial

A tela inicial representa a interface que o usuário possui para realizar suas
chamadas. A partir dela o usuário poderá:

escolher um usuário de destino para o qual ele deseja ligar na “Lista de


Contatos” que é carregada na inicialização do protótipo;

escrever um título sobre o assunto a ser tratado com o receptor;

habilitar a criptografia dos pacotes de voz que serão transmitidos durante


a conversação através da inserção da chave secreta no campo “Chave
de Sessão”;

desabilitar depois de criada a sessão VoIP;

limpar o Log de monitoramento das mensagens SIP trocadas durante o


estabelecimento de sessão;

fechar a aplicação.

54
Depois de escolher o usuário de destino e preencher os campos “Assunto” e
“Chave de Sessão”, o originador estará apto a realizar uma chamada pressionando
botão “Ligar” com o mouse para realizar uma chamada com o usuário de destino
escolhido através uma conexão segura conforme ilustra a figura 30.

Figura 30 – Preenchimento de Campos

Após pressionar o botão “Ligar” o originador envia um pedido de INVITE


para estabelecer uma sessão VoIP criptografada pela chave secreta escolhida
anteriormente (figura 31).

55
Figura 31 – Pedido INVITE

“Gerson” que neste caso é o receptor da chamada recebe o pedido de


INIVITE de “Humberto” conforme ilustra a figura 32.

Figura 32 – Recepção do Pedido INVITE

Caso Gerson aceite o convite, ele enviará a resposta “200” OK relacionada


ao pedido de “INVITE” de Humberto. Este por sua vez, envia o pedido “ACK” para

56
confirmar o recebimento da resposta “200 OK” enviada por Gerson e a sessão VoIP
é então estabelecida como mostra a figura 33.

Figura 33 – Estabelecimento de Sessão VoIP

Depois de estabelecida a sessão VoIP, Gerson fica sabendo da chave


secreta utilizada por Humberto para criptografar a sessão. O botão “Desabilitar
Criptografia” aparece na tela fornecendo esta opção tanto para Humberto quanto
para Gerson. Caso um dos dois decida desabilitar a criptografia e o outro continue
aplicando o algoritmo de segurança, não haverá um consenso entre os dois. Pois se
Humberto tiver desabilitado a criptografia, quando os pacotes de voz criptografados
chegarem, ele não aplicará a chave para decriptografá-los. Desta forma ele não vai
entender nada do que Gerson está falando. Gerson também não vai entender o que
Humberto diz porque Humberto não está usando mais a chave secreta para fazer a
criptografia. A comunicação volta ao normal quando ambos estiverem na mesma
condição, criptografia habilitada ou desabilitada.
Neste protótipo pode haver duas maneiras para que a sessão seja
finalizada. Uma através do envio de um pedido “BYE” como ilustra a figura 34.

57
Figura 34 – Finalização de Sessão por “BYE”

E a outra através de um pedido de “CANCEL” enviado pelo originador da


chamada antes de receber a resposta do seu pedido de “INVITE” enviado
anteriormente (figura 35).

Figura 35 – Finalização de Sessão por “CANCEL”

58
6 CONCLUSÃO

O presente trabalho procurou realizar um estudo detalhado do ambiente de


Telefonia IP, apresentando seus principais protocolos e padrões utilizados, suas
vantagens e desvantagens, e de como essa tecnologia poderia afetar o nosso
cotidiano.
Durante o desenvolvimento da fundamentação teórica foi vista a importância
de cada um dos protocolos necessários para sessão de VoIP, destacando-se o RTP
como sendo o protocolo crucial na implementação de aplicações que exijam
respostas em tempo real. Como é o caso do protótipo que foi desenvolvido.
O padrão SIP foi escolhido neste trabalho por causa da sua simplicidade na
criação de sessão em relação aos demais padrões. Isso pôde ser observado na
comparação feita com o H.323 que utiliza um número maior de protocolos em
relação ao SIP.
A biblioteca JVOIPLIB em conjunto com JRTPLIB e Jthread desenvolvida
por Liesenborgs forneceu os recursos necessários para a implementação do
protótipo dentro dos padrões pré-definidos.
O tipo de compressão DPCM e o algoritmo de criptografia AES adotados no
protótipo forneceram um desempenho satisfatório, pois apesar de haver um
pequeno atraso no fluxo de mídia, ele é quase imperceptível, durante as
conversações realizadas entre os usuários do sistema. Estes possuem uma interface
amigável para a criação e destruição de sessões VoIP criptografadas.
Na fase de desenvolvimento do trabalho os conceitos aprendidos durante a
fundamentação teórica foram de grande valia para dimensionar de forma correta a
solução do problema. Para aplicar o algoritmo de criptografia observou-se que seria
inviável aplicá-lo antes do processo de compressão. Isto porque a compressão de
sinais utiliza técnicas de processamento que retiram informações redundantes,
imprevisíveis e inúteis. Desta forma se a compressão retirar informações de dados
criptografados na origem, não será possível decriptografá-los no destino. A partir
deste princípio o algoritmo de criptografia foi aplicado após o processo de
compressão DPCM.
A forma como foi aplicada a criptografia de chave simétrica, torna-se
vulnerável por não atender o quesito de autenticação do usuário. Pois, caso um
intruso do sistema possua o software com a mesma chave interna dos outros dois

59
usuários que estão se comunicando e aplique a técnica de sniffing, este intruso vai
poder conhecer a chave de sessão e conseqüentemente a voz que está sendo
trafegada.
Apesar da aplicação desenvolvida possuir essa vulnerabilidade, o principal
objetivo de criar um sistema de Telefonia IP criptografado baseado no padrão SIP foi
atendido, já que o fluxo RTP de dados é criptografado e decriptografado para a
reprodução do áudio no seu receptor depois de estabelecida a sessão de VoIP
através das mensagens SIP.

6.1 TRABALHOS FUTUROS

Para dar continuidade ao desenvolvimento de um sistema de Telefonia IP


completo e seguro, baseado no padrão SIP, sugere-se:

a implementação da autenticação por HTTP, SSL ou PGP para corrigir a


vulnerabilidade do protótipo desenvolvido, apontada na conclusão do
trabalho;

a implementação desta tecnologia para uso em multicast para sistemas


de áudio-conferência.

60
7 REFERÊNCIAS BIBLIOGRÁFICAS

ARAÚJO, Lúcia Goretti Gonçalves de. Apostila de UML. Disponível em: <
http://www.sdsi.uri.br/geoob/>. Acesso em: 15 de mai. 2005.

BEZERRA, Fábio Fernandes. Ferramenta de análise modal de protocolos de


segurança para redes sem fio na Universidade Regional de Blumenau.
Blumenau, 2004. 69f. Trabalho de Conclusão de Curso (Engenharia de
Telecomunicações) – Centro de Ciências Tecnológicas, Universidade Regional de
Blumenau.

CANSADO, Jascinto Carlos Ascencio. Conectividade entre telecomunicações e


informática. Disponível em:
<http://www.geocities.com/jacintocansado/usp/usp_arquivos/Monografia_PCS5707.p
df>. Acesso em: 25 ago. 2004.

CRN. A hora e a vez da voz sobre IP. Brasil, [2002]. Disponível em:
<http://www.crn.com.br/recapa/artigo.asp?id=23059>. Acesso em: 24 jul. 2004.

GALVÃO, Márcio; ZATTAR, Alexandre. Aspectos de segurança em redes de voz


sobre IP, [2003]. Disponível em: < http://www.modulo.com.br/index.jsp>. Acesso em:
15 ago. 2004.

GUIMARÃES, José Liesse Bollos. Voz sobre IP. Brasil, [1999]. Disponível em:
<http://www.gta.ufrj.br/grad/98_2/liesse/relat.html>. Acesso em: 16 de ago. 2004.

HERSENT, Oliver; GURGLE, David; PETIT, Jean-Pierre. Telefonia IP: comunicação


multimídia baseada em pacotes. São Paulo: Addison Wesley, 2002. 451p.

HOLZNER, Steven. Programando Visual C++ 6: em tempo recorde. São Paulo:


Makron Books, 1995. 608 p.

HUBBARD, John R. Programação em C++: teorias e problemas de, 2. ed. Porto


Alegre: Editora Bookman, 2003. 393 p.

61
INTERNET ENGINEERING TASK FORCE. RFC 2327: Session Description Protocol.
New York, 2002. 16p.

INTERNET ENGINEERING TASK FORCE. RFC 3261: Session Internet Protocol.


New York, 2002. 269p.

INTERNET ENGINEERING TASK FORCE. RFC 3264: Session Description Protocol.


New York, 2002. 16p.

LIESENBORGS, Jori. JVOIPLIB, [2004]. Disponível em:


<http://research.edm.luc.ac.be/jori/jvoiplib/jvoiplib.html>. Acesso em: 20 nov. 2004.

LOUREIRO, Hélio; SAVARIS, Nixon. Protocolos Internet para Comunicação


Multimídia, Florianópolis, [1999]. Disponível em:
<http://www.das.ufsc.br/redes/redes99/helio/protocolos_multimidia/>. Acesso em: 15
ago. 2004.

MEDEIROS, Michel Souza. Protocolos de Suporte a Multimídia. Disponível em:


<http://www.gta.ufrj.br/grad/03_1/rtp/index.html>. Acesso em: 10 set. 2004.

NAZARIO, Débora Luciani. Protótipo de um sistema de telefonia IP para LANs


baseado no padrão SIP na Universidade Regional de Blumenau. Blumenau,
2003. 47 f. Trabalho de Conclusão de Curso (Bacharelado em Ciências da
Computação) – Centro de Ciências Exatas e Naturais, Universidade Regional de
Blumenau.

OLIVEIRA, Sérgio. Telefonia IP para ambientes móveis e usáveis, [2000] .


Disponível em: <http://www.dcc.ufmg.br/~sergiool/diss.pdf>. Acesso em: 16 de ago.
2004.

RNP. Qualidade de Serviço na Internet. Brasil, [1999]. Disponível em:


<http://www.rnp.br/newsgen/9911/qos.html>. Acesso em: 20 ago. 2004.

62
SOUSA, José Márcio de. Protótipo de um sistema VoIP (Voz sobre IP). Blumenau,
2001. 53f. Trabalho de Conclusão de Curso (Bacharelado em Ciências da
Computação) – Centro de Ciências Exatas e Naturais, Universidade Regional de
Blumenau.

TANENBAUM, Andrew S. Redes de Computadores, 4. ed. São Paulo: Editora


Campus, 2003. 968 p.

TUTORIAL sobre TCP/IP. Disponível em:


<http://geocities.yahoo.com.br/conexaopcpc/artigos/tutorialtcpip.htm>. Acesso em:
10 ago. 2004.

63