logo-@ralphmcs

Pontifícia Universidade Católica do Rio de Janeiro

 

 

INF-1259 - PROJETO FINAL

 

Graduação em Tecnologia em Processamento de Dados

 

 

 

 

O protocolo TCP / IP e a segurança nos equipamentos conectados à internet

 

 

 

 

Ralph Möller Cabral Silva - 9414338-1

 

Orientado por Hélio da Silva Ferreira Júnior

 

 

 

 

 

Rio de Janeiro, 09 de setembro de 1999.

 


 

         SINOPSE

De modo a possibilitar uma visão mais consciente, no que se refere ao aspecto da segurança, do conjunto de protocolos TCP / IP, o pilar fundamental da Internet e de sua arquitetura, este estudo visa, sem pretender esgotar o assunto, abordá-lo de forma teórica, apresentando a história do seu desenvolvimento, os conceitos envolvidos no seu funcionamento, as principais vulnerabilidades intrínsecas a sua especificação ou implementação e as respectivas defesas. Ademais, é realizada uma breve análise da nova versão do protocolo IP, o IPv6, também denominado “IP Next Generation”, com foco nos benefícios para a minimização das ameaças trazidos pelas modificações sofridas, uma vez que o aprimoramento dos recursos de segurança é um dos aspectos que têm sido enfatizados durante o seu desenvolvimento.

         AGRADECIMENTO

Este espaço é reservado para prestar a devida homenagem aqueles que, das mais diversas formas, contribuíram para que este estudo pudesse ser realizado.

Meus sinceros agradecimentos ao meu orientador, o Professor Hélio da Silva Ferreira Júnior, pela compreensão demonstrada no momento em que aceitou assumir este compromisso, mesmo com prazo tão curto e condições tão especiais, e pela dedicação e atenção durante a execução deste trabalho.

Para Sandra Abreu, Coordenadora Administrativa, e para o Professor Sílvio Strauss, ambos da Secretaria do Departamento de Graduação em Tecnologia em Processamento de Dados da PUC-Rio, pela flexibilidade com que analisaram o meu caso, possibilitando que este projeto se iniciasse.

Ao meu ex-orientador, o Professor Sérgio Campos, que, mesmo não tendo contribuído especificamente na elaboração desta monografia, foi importante na definição de diversos requisitos que, indiretamente, possibilitaram o êxito desta empreitada.

Aos meus pais, Carlos Augusto Cabral da Silva e Vanêssa Möller Cabral Silva, por toda a minha educação, no seu sentido mais amplo, ao longo da vida, pelo suporte emocional e financeiro, e pela paciência com que, inúmeras vezes, revisaram este texto, apesar do quase completo desconhecimento do assunto.

A minha namorada, Raquel Scholl Rabello da Rocha, e a minha irmã, a designer Renata Möller Cabral Silva. Esta pelo auxílio na composição da apresentação gráfica deste material, e aquela pelo apoio moral e pelo tempo durante o qual abdicou da minha companhia enquanto este projeto se concretizava.

Aos amigos Leonardo Severo Alves de Melo, Marcus Vinicuis de Almeida Baeta Neves e Patrick Ribeiro Braz, pela atenção que me deram quando solicitei e pelas dicas e referências bibliográficas que indicaram e disponibilizaram.

E, "last but not least", a toda a comunidade de internautas que, movida pelos mais diversos interesses, desde o estritamente comercial ao simples desejo de compartilhar e tornar pública a informação de um modo geral, tornou disponível um conjunto de recursos, variando de pequenas figuras até livros inteiros, sem o qual eu jamais conseguiria ter acesso ao conhecimento necessário para concluir esta pesquisa.

         ÍNDICE

INTRODUÇÃO                                                                                                                         5

1)    HISTÓRICO                                                                                                                      5

1.1)     EVOLUÇÃO DA COMPUTAÇÃO                                                                            5

1.2)     EVOLUÇÃO DAS REDES                                                                                        5

1.3)     O TCP / IP                                                                                                                    5

2)    PROTOCOLOS                                                                                                                5

2.1)     FUNDAMENTOS                                                                                                        5

2.2)     ORGANIZAÇÕES DE PADRONIZAÇÃO                                                                5

2.2.1)       ISO                                                                                                                           5

2.2.2)       IEC                                                                                                                           5

2.2.3)       ITU-T                                                                                                                         5

2.2.4)       IAB                                                                                                                            5

2.3)     MODELO DE REFERÊNCIA OSI DA ISO                                                              5

2.3.1)       CAMADA FÍSICA                                                                                                   5

2.3.2)       CAMADA DE ENLACE                                                                                        5

2.3.3)       CAMADA DE REDE                                                                                             5

2.3.4)       CAMADA DE TRANSPORTE                                                                              5

2.3.5)       CAMADA DE SESSÃO                                                                                        5

2.3.6)       CAMADA DE APRESENTAÇÃO                                                                        5

2.3.7)       CAMADA DE APLICAÇÃO                                                                                  5

2.4)     ARQUITETURA INTERNET                                                                                       5

2.4.1)       CAMADA DE REDE FÍSICA                                                                                5

2.4.2)       CAMADA DE INTERFACE DE REDE                                                               5

2.4.3)       CAMADA INTER-REDE                                                                                        5

2.4.4)       CAMADA DE TRANSPORTE                                                                              5

2.4.5)       CAMADA DE APLICAÇÃO                                                                                  5

2.5)     O MODELO OSI x O MODELO INTERNET                                                             5

3)    REQUISITOS DE SEGURANÇA                                                                                   5

3.1)     CONCEITOS BÁSICOS                                                                                             5

3.1.1)       AMEAÇAS E ATAQUES                                                                                      5

3.1.2)       POLÍTICA DE SEGURANÇA                                                                               5

3.1.3)       MECANISMOS DE SEGURANÇA                                                                      5

3.2)     MODELO OSI DE GERÊNCIA DA SEGURANÇA                                                 5

3.3)     ARQUITETURA DE SEGURANÇA DA INTERNET                                               5

3.4)     OS SERVIÇOS DE SEGURANÇA                                                                          5

3.4.1)       AUTENTICAÇÃO                                                                                                   5

3.4.2)       CONTROLE DE ACESSO                                                                                   5

3.4.3)       INTEGRIDADE                                                                                                       5

3.4.4)       CONFIDENCIALIDADE                                                                                        5

3.4.5)       IMPEDIMENTO DE REJEIÇÃO                                                                           5

4)    IPv4                                                                                                                                    5

4.1)     FUNDAMENTOS                                                                                                        5

4.2)     CLASSES DE ENEREÇOS IP                                                                                 5

4.2.1)       A CLASSE "A"                                                                                                       5

4.2.2)       A CLASSE "B"                                                                                                       5

4.2.3)       A CLASSE "C"                                                                                                       5

4.2.4)       A CLASSE "D"                                                                                                       5

4.2.5)       A CLASSE "E"                                                                                                       5

4.3)     FORMATO DO DATAGRAMA IP                                                                             5

4.3.1)       VERSION - VERSÃO                                                                                            5

4.3.2)       IHL - TAMANHO DO CABEÇALHO INTERNET                                                5

4.3.3)       SERVICE-TYPE – TIPO DE SERVIÇO                                                               5

4.3.4)       TOTAL-LENGTH – TAMANHO TOTAL                                                               5

4.3.5)       IDENTIFICATION - IDENTIFICAÇÃO                                                                   5

4.3.6)       FLAGS - MARCADORES                                                                                     5

4.3.7)       FRAGMENT OFFSET – DESLOCAMENTO DO FRAGMENTO                    5

4.3.8)       TTL – TEMPO DE VIDA                                                                                        5

4.3.9)       PROTOCOL - PROTOCOLO                                                                                5

4.3.10)     HEADER-CHECKSUM – VERIFICADOR DO CABEÇALHO                         5

4.3.11)     SOURCE ADDRESS – ENDEREÇO DE ORIGEM                                          5

4.3.12)     DESTINATION ADDRESS – ENDEREÇO DE DESTINO                               5

4.3.13)     OPTIONS - OPÇÕES                                                                                            5

4.3.14)     PADDING - PREENCHIMENTO                                                                          5

4.4)     ROTEAMENTO                                                                                                           5

4.4.1)       ROTEAMENTO DIRETO                                                                                       5

4.4.2)       ROTEAMENTO INDIRETO                                                                                   5

4.5)     TABELAS DE ROTEAMENTO                                                                                 5

4.6)     PROTOCOLOS SECUNDÁRIOS                                                                             5

4.6.1)       ICMP                                                                                                                        5

4.6.2)       ARP                                                                                                                          5

4.6.3)       RARP                                                                                                                       5

4.6.4)       IGP                                                                                                                           5

4.6.5)       EGP                                                                                                                         5

4.7)     VULNERABILIDADES E PREVENÇÃO                                                                 5

4.7.1)       IP SNOOPING / IP SNIFFING                                                                               5

4.7.2)       MESSAGE REPLAY                                                                                             5

4.7.3)       MESSAGE ALTERATION                                                                                     5

4.7.4)       PACKET FILTERING                                                                                             5

4.7.5)       ADDRESS MASQUERADING                                                                             5

4.7.6)       SESSION HIJACKING                                                                                           5

5)    TCP                                                                                                                                   5

5.1)     FUNDAMENTOS                                                                                                        5

5.2)     FORMATO DO SEGMENTO TCP                                                                            5

5.2.1)       SOURCE PORT - PORTA DE ORIGEM                                                             5

5.2.2)       DESTINATION PORT - PORTA DE DESTINO                                                   5

5.2.3)       SEQUENCE NUMBER - NÚMERO DE SEQÜÊNCIA                                      5

5.2.4)       ACKNOWLEDGMENT - RECONHECIMENTO                                                 5

5.2.5)       DATA OFFSET - DESLOCAMENTO DE DADO                                              5

5.2.6)       RESERVED - RESERVADO                                                                               5

5.2.7)       CODE BITS - BITS DE CÓDIGO                                                                         5

5.2.8)       WINDOW - JANELA                                                                                              5

5.2.9)       CHECKSUM - VERIFICADOR                                                                             5

5.2.10)     URGENT POINTER - PONTEIRO DE URGENTE                                              5

5.2.11)     OPTIONS - OPÇÕES                                                                                            5

5.2.12)     PADDING - PREENCHIMENTO                                                                          5

5.2.13)     DATA - DADOS                                                                                                     5

5.3)     VULNERABILIDADES E PREVENÇÃO                                                                 5

5.3.1)       SEQUENCE NUMBER PREDICTION                                                                 5

6)    UDP                                                                                                                                   5

6.1)     FUNDAMENTOS                                                                                                        5

6.2)     O SEGMENTO UDP                                                                                                   5

6.2.1)       SOURCE PORT - PORTA DE ORIGEM                                                             5

6.2.2)       DESTINATION PORT - PORTA DE DESTINO                                                   5

6.2.3)       LENGTH - TAMANHO                                                                                           5

6.2.4)       CHECKSUM - VERIFICADOR                                                                             5

6.2.5)       DATA OCTETS - OCTETOS DE DADOS                                                          5

6.3)     VULNERABILIDADES E PREVENÇÃO                                                                 5

7)    IPv6                                                                                                                                    5

7.1)     APRIMORAMENTOS                                                                                                 5

7.2)     FORMATO DO DATAGRAMA                                                                                  5

7.2.1)       VERSION - VERSÃO                                                                                            5

7.2.2)       PRIORITY - PRIORIDADE                                                                                     5

7.2.3)       FLOW LABEL - MARCA DE FLUXO                                                                  5

7.2.4)       PAYLOAD LENGTH - TAMANHO                                                                        5

7.2.5)       NEXT HEADER - PRÓXIMO CABEÇALHO                                                      5

7.2.6)       HOP LIMIT - LIMITE DE HOSTS DE PASSAGEM                                            5

7.2.7)       SOURCE ADDRESS - ENDEREÇO DE ORIGEM                                           5

7.2.8)       DESTINATION ADDRESS - ENDEREÇO DE DESTINO                                5

7.3)     QUESTÕES SOBRE SEGURANÇA                                                                       5

CONCLUSÃO                                                                                                                         5

BIBLIOGRAFIA                                                                                                                        5

 


 


         INTRODUÇÃO

Hoje, quando, segundo o visionário Alvin Toffler [CALIDAD 1997], autor de livros consagrados como “O Choque do Futuro”, “A Terceira Onda” e “Powershift”, e dezenas de outros “gurus”, vive-se a “Era da Conhecimento”, a informação se mostra como o bem mais precioso das empresas e também dos indivíduos.

A popularização dos microcomputadores e da informática como um todo, ocorrida entre o final da década de 1980 e o início dos anos 90, seguida pelo vertiginoso crescimento da interligação destas máquinas em redes de comunicação e do acesso à Internet, observados, sobretudo, nos últimos cinco anos, são os maiores responsáveis por esta “Revolução da Informação”.

No entanto, os benefícios advindos desta nova fase da humanidade trouxeram consigo também problemas inerentes ao novo paradigma. Um dos mais importantes, se não o principal deles, conforme mostrado no gráfico 01, é a vulnerabilidade dos sistemas e equipamentos que processam, armazenam e por onde trafegam estas informações.

(01) AMEAÇAS AOS SISTEMAS DE INFORMAÇÃO [MÓDULO 1998B]

As perdas financeiras causadas pelo acesso indevido a informações são significativas, não podendo ser desconsideradas, sobretudo neste momento em que cada vez mais as organizações vêm migrando aplicações para o ambiente Internet e Intranet, como pode ser constado na figura 02, de acordo com a "4a Pesquisa Nacional sobre Segurança da Informação - 1998", com base em 237 respostas de 176 empresas localizadas no Brasil e distribuídas entre diversas áreas de atuação [MÓDULO 1998A].

(02) INTENÇÃO DE MIGRAÇÃO [MÓDULO 1998B]

A informação já é considerada como um dos principais ativos destas entidades. Seja para proteger segredos de negócio, estratégias comerciais ou o capital intelectual, a conservação do ambiente no qual ela se encontra é fator de sobrevivência e competitividade.

E a relevância destes dados que circulam na chamada "Grande Rede" tende a ser ainda maior! Uma matéria recentemente publicada pela Revista Exame (figura 03) mostra que o E-Commerce (gráficos 04) irá transformar as relações comerciais [EXAME 1999-12A].

(03) REVISTA EXAME DE 16 DE JUNHO DE 1999 [EXAME 1999-12B]

(04) EXPLOSÃO DO COMÉRCIO ELETRÔNICO [EXAME 1999-12B]

Mesmo no Brasil, um país no qual as novidades tecnológicas costumam chegar com algum atraso em relação aos países tidos como desenvolvidos, as empresas se mostram com uma expectativa em relação ao comércio eletrônico significativamente positiva (gráfico 05), o que se justifica pela intenção da população em utilizar a Internet para transações financeiras e comerciais (gráfico 06).

(05) EXPECTATIVA DAS EMPRESAS [EXAME 1999-12B]

(06) DISPOSIÇÃO DA POPULAÇÃO [EXAME 1999-12B]

Todos estes fatores, aliados à crescente tendência de miniaturização e digitalização dos equipamentos e utensílios de uso cotidiano, trazem para breve a possibilidade de concretização do conceito de computação ubíqua [O GLOBO 19990510], cunhado, em 1988, por Mark Weiser, do PARC (Palo Alto Research Center), o Centro de Pesquisa da Xerox. Recentemente falecido, após um câncer fulminante, Weiser profetizou um mundo no qual o computador praticamente desaparecerá, passando a ser embutido nos aparelhos e utensílios de uso normal e a estar permanentemente interconectados. Com o advento da Internet, ele simplesmente uniu os conceitos e percebeu a interdependência de ambos.

A partir desta realidade torna-se evidente a necessidade de se compreender os aspectos da tecnologia no qual todas estas possibilidades se fundamentam. E a questão da segurança é um dos mais importantes entre estes aspectos.

Mas a segurança é também um tema bastante vasto e que pode ser abordado com diferentes enfoques. Um deles, que pode ser considerado como o maior gerador de preocupação, é o que visa apontar as vulnerabilidades inerentes às principais implementações em termos de utilização dos protocolos TCP (Transmission Control Protocol) e IP (Internet Protocol), respectivamente o Protocolo de Controle de Transmissão e o Protocolo Inter-rede. Este título de ser um dos enfoques que mais provocam preocupação se justifica por um simples motivo: o TCP / IP, como é designado o conjunto dos dois protocolos, é um dos "pilares de sustentação" da Internet, pois todos os equipamentos ligados a ela, mesmo que indiretamente, o utilizam e, uma vez que todos fazem uso dele, todos estão, a princípio, expostos aos riscos advindos de suas fraquezas intrínsecas.

Portanto, de modo a permitir o melhor entendimento dessas questões, é desenvolvido o presente estudo, que tem como objetivo apresentar os conceitos relativos ao funcionamento e à segurança da Arquitetura Internet e dos equipamentos a ela conectados, com ênfase nas principais vulnerabilidades de proteção do tráfego nativas da suite de protocolos TCP / IP, possibilitando não só a compreensão de cada uma dessas fraquezas, mas também a prevenção contra as mesmas. Especificamente, são as seguintes as metas que se pretende atingir através desta monografia:

1)          Compreender os fatores históricos que resultaram na realidade atual;

2)          Analisar o funcionamento dos protocolos de comunicação de dados e a relação existente entre o Modelo de Referência OSI da ISO e a Arquitetura Internet;

3)          Identificar os requisitos de segurança de uma arquitetura de rede;

4)          Entender a Arquitetura Internet e, principalmente, o conjunto de protocolos de TCP / IP, visando apresentar as causas de suas vulnerabilidades;

5)          Caracterizar os principais mecanismos que exploram estas fraquezas e são utilizados pelos agentes invasores para obtenção de acesso não autorizado a um ambiente computacional conectado à Internet e, conseqüentemente, à informação nele contido;

6)          Avaliar possíveis medidas de segurança que sejam capazes de minimizar ou até de eliminar estas vulnerabilidades encontradas no ambiente que faz uso do TCP / IP e da Internet; e

7)          Descrever as mais importantes mudanças sofridas pela nova versão do protocolo IP, o IPv6, que substituirá a versão em uso atualmente, o IPv4, com ênfase no que se refere a segurança nativa do mesmo.

Para tanto, o método utilizado para elaboração desta monografia foi, primordialmente, a pesquisa em fontes de referência especializadas em redes de comunicação de dados, em Internet e nas diversas questões da área de segurança da informação tais como livros, trabalhos acadêmicos, periódicos e páginas WEB. Ademais também se procura dar importância a materiais bibliográficos abordando questões de segurança reais e do cotidiano, possibilitando um enfoque prático sobre o tema, em contraposição ao ponto de vista acadêmico e científico das demais fontes de consulta.

Contudo vale fazer algumas ressalvas. O assunto em questão é tão polêmico quanto é importante. Desta forma, não se pretende aqui esgotá-lo, mas apenas analisar o que é normalmente aceito como consenso. Além disso, há diversas implementações das especificações do IPv4 em uso atualmente, cada uma apresentando os seus próprios pontos fracos e fortes. Assim sendo, também não é o objetivo deste trabalho avaliar todas as vulnerabilidades de qualquer das versões, mas apenas as principais fraquezas das implementações mais utilizadas (aquelas versões usadas praticamente por toda a comunidade Internet e que derivam da implementação do TCP / IP usada no Unix desenvolvido pela Universidade de Berkeley, o 4.2 BSD Unix) [BELLOVIN 1989].

1)                   HISTÓRICO

"Penso que haja talvez no mundo um mercado para cinco computadores." [KACEW 1997] Quando se analisa esta frase, imediatamente, surge a questão: quem teria sido capaz de afirmar tamanha asneira?! Entretanto tal sentença foi proferida por Thomas Watson, em 1943, o então presidente da IBM, uma personalidade que, anos mais tarde, entrou para história da computação como o responsável por tornar esta empresa a maior e mais poderosa de seu segmento, mais influente no mundo dos mainframes do que a Microsoft é hoje em relação aos softwares. Mas o que, então, teria levado este bem sucedido executivo e conhecedor do seu ramo de negócio a falar tão surpreendente bobagem? Neste ponto surge outra surpresa: não é bobagem! Pelo menos não foi. Não, naquela época, quando os computadores eram muito diferentes do que são agora. Pesavam algumas toneladas, custavam milhões de dólares, ocupavam dezenas de metros cúbicos e, principalmente, não eram eletrônicos e digitais, eram eletro-mecânicos e analógicos.

A importância de se conhecer a evolução dos fatos, o processo através do qual o conhecimento em determinada área se desenvolveu e o histórico das tecnologias reside exatamente em questões como a mencionada anteriormente. Conhecer a história propriamente dita é pré-requisito para que se entenda com perfeição como determinada situação chegou no ponto em que se encontra em determinado momento. Tendo-se em mente o contexto histórico em que aquela afirmação foi feita, torna-se bem mais evidente que ela não era absurda. Da mesma forma, saber que o ambiente no qual o conjunto de protocolos TCP / IP foi inicialmente desenvolvido, em meados da década de 1970, consistia de uma interligação de apenas quatro redes explica porque somente foram definidos pouco mais de quatro bilhões de endereços possíveis, o que, no cenário atual, obviamente, se mostra insuficiente para o tamanho que a Internet atingiu.

E é justamente este o objetivo do presente capítulo: ajudar a compreender a realidade atual.

1.1)           EVOLUÇÃO DA COMPUTAÇÃO

O primeiro computador, o ENIAC (Eletronic Numerical Integrator And Calculator ou Eletronic Numerator, Integrator, Analyser and Computer), surgiu no final de 1945. Ele tinha, aproximadamente, 18 mil válvulas, 70 mil resistores e 5 milhões de pontos de solda. Pesava em torno de 30 toneladas e ocupava mais de 100 metros quadrados. Seu projeto, que era americano, iniciou-se em 1943, durante a Segunda Guerra Mundial, com um objetivo bem definido: realizar cálculos balísticos para atirar bombas na Alemanha. Por ironia, não ficou pronto a tempo. Entretanto é considerado o precursor da indústria de computadores por ter sido a primeira máquina eletrônico-digital automática com a função de executar instruções, uma enorme evolução em relação às anteriores, que eram eletro-mecânicas analógicas automáticas.

Apesar do ENIAC constituir a primeira geração de computadores, a história da computação inicia-se muitos séculos antes, no extremo oriente, com o ábaco, que é considerado o primeiro instrumento feito pelo homem capaz de auxiliá-lo no processo de calcular. Embora se tenha indícios da utilização de tábuas de contagem datadas de aproximadamente 1700 A. C., na região próxima à Babilônia, usando o sistema numérico sexagesimal (base 60), como elas apenas registravam a contagem, é aceito que o surgimento do ábaco, que se deu há cerca de 2500 anos, consiste no primeiro antepassado do computador. Sua maior difusão aconteceu entre o japoneses, que até hoje o utilizam no ensino da matemática, para o desenvolvimento do raciocínio e até mesmo no dia-a-dia em algumas situações. Mais tarde, quando o sistema chegou aos romanos, recebeu o nome de calculi, sendo a origem da palavra cálculo.

À medida que a necessidade do uso da matemática foi ficando mais complexa, alternativas foram sendo buscadas, até que, em 1633, o sacerdote inglês William Oughtred, inventou o Círculo de Proporção, que acabou originando a Régua de Cálculos, considerada o primeiro computador analógico. Ele utilizou-se do sistema chamado Bastões de Napier, criado pelo nobre e matemático escocês John Napier, o inventor dos logaritmos. É verdade que dispositivos semelhantes já vinham sendo utilizados desde o século XVI, mas somente em 1614 foram documentados.

Alguns anos mais tarde, em 1642, o filósofo, físico e matemático francês Blaise Pascal, então com 18 anos e ainda trabalhando com o pai em um escritório de coleta de impostos, desenvolveu sua Pascalina, uma máquina de calcular que executava soma e subtração, concebida para auxiliá-lo no trabalho de contabilidade que executava. Foi a primeira calculadora mecânica, sendo comercializada na época (sem muito sucesso devido a pouca confiabilidade), e deu origem as máquinas registradoras, muito comuns até há alguns anos.

Em 1671, o filósofo e matemático alemão Gottfried Wilhelm von Leibnitz estendeu a capacidade da Pascalina com as operações de multiplicação e divisão, através de somas e subtrações sucessivas.

Quase um século e meio depois, em 1820, o francês Charles Xavier Thomas, conhecido como Thomas de Colmar, usando o princípio da calculadora de Leibnitz, desenvolveu a Arithmometer, a primeira calculadora a se tornar um sucesso comercial.

Nesta época, e mesmo um pouco antes, começa a surgir o que se tornaria o software. As calculadoras da geração da Pascalina executavam somente operações seqüenciais, completamente independentes. A cada cálculo o operador deveria intervir, introduzindo novos dados e o comando para determinar qual operação deveria ser efetuada. Essas máquinas não tinham capacidade para tomar decisões baseadas nos resultados. Com o objetivo de permitir uma rudimentar programação, não só destas calculadoras, mas também de teares e outras máquinas semelhantes, personalidades brilhantes como Bouchon, Falcon, Jaques, Joseph Marie Jacquard, J. Müller, Charles Babbage e Ada Lovelace (Ada Byron) introduziram o uso de cartões perfurados para permitir o controle do fluxo das operações.

Em 1890, o Bureau de Censo Demográfico dos EUA contratou Hermann Hollerith para desenvolver um método para processar os dados tabulares correspondentes às informações demográficas daquele país. Usando os conceitos de cartões perfurados ele criou máquinas que foram capazes de concluir o censo em 2 anos e meio, contra 10 anos que eram necessários até o censo de 1880, mesmo a população tendo crescido 26%, de 50 para 63 milhões de pessoas. Em 1896, com base nesta tecnologia, ele fundou uma empresa que, após algumas associações, se tornou, em 1924, a International Business Machine Corporation, a IBM.

Em 1939, eclodiu a Segunda Grande Guerra. Ironicamente, este período de grande destruição e genocídios foi também de grande desenvolvimento, e até fundamental, para a história da computação. Tanto do lado dos aliados como do eixo máquinas consideradas computadores eletro-mecânicos foram desenvolvidas e utilizadas com fins bélicos. Nesta época, o inglês Alan Mathison Turing participou do desenvolvimento do Colossus, um gigante de servo-motores, no Departamento de Comunicações da Grã-Bretanha (Government Code and Cypher School), com o intuito de quebrar o código das comunicações alemãs, produzido por um tipo de computador chamado Enigma. O Colossus é considerado um precursor do ENIAC, projeto do qual este mesmo Turing veio a participar logo em seguida.

Terminada a guerra, inicia-se a era dos computadores digitais, com a conclusão do ENIAC, no final 1945, início de 1946. Os conceitos ainda eram pouco definidos, havendo uma fronteira ainda muito tênue entre o que era hardware e o que era software. Em 1949 entra em funcionamento o EDSAC (Eletronic Delay Storage Automatic Calculator), o primeiro computador a implementar a arquitetura de von Neumann, que foi proposta em 1945 e aperfeiçoava extraordinariamente o processamento. Em 1951, surge o UNIVAC (de UNIVersal Automatic Computer), a evolução natural do ENIAC. A IBM lança, em 1953, o IBM 701, primeiro rival do UNIVAC. A partir daí outras empresas começam a fazer seus lançamentos e o mercado da computação inicia sua fase de crescimento. Ainda na década de 50 surgem as primeiras linguagens de alto nível, que permitem uma maior abstração do programador em relação à máquina, como o FORTRAN (FORmula TRANslator), em 1957, e o COBOL (COmmon Business Oriented Language), em 1959.

Estas máquinas ainda eram todas da primeira geração, usavam válvulas. A medida que foi evoluindo a tecnologia e surgiram os transistores, os micro-circuitos e os chips (2a, 3a e 4a gerações respectivamente), elas se tornavam cada vez menores, mais baratas, rápidas e acessíveis.

1.2)           EVOLUÇÃO DAS REDES

Assim como a computação deu seus primeiros passos na antigüidade, com o ábaco, as redes de dados têm no passado, com a comunicação por tambores e sinais de fumaça, a sua gênese. Elas surgiram como uma evolução e especialização das redes de comunicação, que têm como objetivo a satisfação desta que é uma das maiores necessidades da sociedade humana desde os primórdios da sua existência, a interação, o contato, a troca de informações.

O primeiro passo realmente significativo no processo de evolução da comunicação, no que diz respeito às redes de dados, se deu em 1838, com a invenção do telégrafo por Samuel F. B. Morse. Utilizando-se sinais elétricos, as mensagens eram codificadas e transmitidas por um meio físico. Este princípio, aprimorado ao longo do tempo, permitiu o surgimento da maior parte dos mais importantes sistemas de comunicação atuais, como o telefone, o rádio e a televisão.

Na década de 60, já neste século, as tecnologias de comunicação e de computação começaram a convergir, iniciando uma revolução que veio a resultar na realidade do presente, quando as redes de dados são indispensáveis e a união entre ambas é indissolúvel, sendo batizada de Tecnologia da Informação (TI).

Mas... Como isto aconteceu?!

Na segunda geração, os computadores ainda eram muito caros, grandes e sensíveis às condições ambientais. Em função disto o processamento era centralizado nos mainframes, computadores de grande porte. Somente operadores tinham acesso a estas máquinas, que executavam programas agrupados em lotes (forma de trabalho que originou o termo processamento batch). Não havia nenhuma interação entre o operador e o programa em execução. Surgiu, então, na década de 60, o circuito integrado e, com ele, a terceira geração de computadores, relativamente menores e mais baratos. Mais acessíveis, eles se tornaram uma realidade nas empresas, além de aumentar a sua penetração também no ambiente acadêmico. A necessidade de interação entre os seus usuários e o programa em execução fez surgir os terminais de vídeo e teclado.

A evolução tecnológica prosseguiu e a conseqüente diminuição dos custos dos computadores tornou cada vez mais atraente a distribuição do poder computacional em módulos processados localizados em diversos pontos das organizações. Entretanto havia a necessidade de interconexão dos mesmos para permitir o compartilhamento dos recursos de software e de hardware e a troca de informação entre seus usuários. Este conjunto de fatores criou o ambiente propício para o desenvolvimento das redes de computadores. Na década de 70, as redes, mesmo que implementadas empiricamente, se difundiram bastante. O surgimento do chip permitiu, no final dos anos 70, a criação da quarta geração de computadores, da qual o microcomputador é o seu representante mais famoso. A sua versatilidade, aliada ao seu baixo custo e ao bom poder de processamento fez com que ele fosse um sucesso, na década de 80, difundindo-se de forma sem precedente nas empresas. O conseqüente aumento da distribuição do poder computacional incrementou ainda mais a expansão das redes de dados, mas desta vez de forma já sistemática devido ao conhecimento adquirido ao longo dos anos anteriores.

1.3)           O TCP / IP

O surgimento empírico das redes gerou uma diversidade de padrões e protocolos, cada qual implementado de forma proprietária pelo fabricante do equipamento que deveria ser conectado em rede. Tais padrões não eram compatíveis entre si. Entretanto, em 1969, começava a surgir a necessidade de interligar as diversas redes militares de pesquisa espalhadas pelos Estados Unidos para facilitar a comunicação. Era época da Guerra Fria e um ataque nuclear soviético era uma possibilidade real. A rede que viria a fazer esta interconexão deveria então ser capaz de operar independentemente da plataforma de hardware e de algum elo da ligação estar fora de funcionamento por qualquer motivo (mesmo que este motivo fosse uma explosão atômica). Em outras palavras, ela deveria conectar redes heterogêneas e ser totalmente descentralizada.

Com este propósito a ARPA (Advanced Research Projects Agency - Agência de Projetos de Pesquisa Avançada), posteriormente rebatizada para DARPA (Defense ARPA - Agência de Projetos de Pesquisa Avançada de Defesa), iniciou o projeto. Quando entrou em funcionamento, dois anos mais tarde, a rede foi batizada de ARPANET e conectava inicialmente 4 nós. Sua arquitetura era de Sistema Aberto (todas as especificações são livres para consulta de quem se interessar) e usava o NCP (Network Control Program - Programa de Controle de Rede), que logo se mostrou incapaz de suportar o tráfego e apresentou uma série de outras limitações. Em 1974, desenvolvido e aprimorado a partir de artigos publicados por Vincent Cerf e Robert Kahn, criou-se o protocolo TCP / IP, que, na realidade, eram dois protocolos, o TCP (Transmission Control Protocol, também chamado de Transport Control Protocol, respectivamente Protocolo de Controle de Transmissão ou de Transporte) e o IP (Internet Protocol - Protocolo Inter-rede), que compunham uma suite, um conjunto, de protocolos. Ele apresentava ainda uma série de vantagens como ser leve, em relação aos recursos de rede necessários para seu funcionamento, e ter baixo custo de implantação.

O processo de aprimoramento foi longo e a versão 4 foi padronizada em 1981. No ano seguinte sua utilização ultrapassou a do NCP e calculava-se que a cada 20 dias um novo nó era adicionado à rede, algo surpreendente para a época. Em 1983, para encorajar pesquisadores universitários a adotá-lo, o DARPA, juntamente com a Universidade de Berkeley (UCB), o então centro de referência de desenvolvimento de UNIX, implementou uma versão deste sistema operacional que o utilizava, o 4.2 BSD (Berkeley Software Distribution) UNIX. Esta iniciativa foi fundamental para a popularização da suite de protocolos. Os novos nós utilizando o UNIX com o TCP / IP deixaram claro o potencial de fomento às pesquisas que este ambiente de redes interconectadas tinha, provocando, em 84, a divisão da ARPANET em duas partes, uma que manteve o nome, para pesquisa acadêmica, e outra batizada de MILNET, com fins militares não secretos. Em seguida, a National Science Foundation (NSF - Fundação Nacional de Ciência) criou a NSFNET, que disponibilizava em sua estrutura o poder computacional de 6 supercomputadores espalhados pelo país, usando o TCP / IP, estimulando ainda mais a expansão da ARPANET.

Em 1990, o Departamento de Defesa dos EUA declarou que a ARPANET estava obsoleta e se desfez de sua estrutura. Mas já era tarde! A rede, então batizada de Internet, já possuía vida própria. Iniciava sua expansão para fora dos limites nacionais daquele país e ligava instituições de pesquisa e ensino em praticamente todo o mundo. Neste momento a história do TCP / IP confunde-se com a da Internet. Esta depende e deve a sua existência àquela.

Até 1993 a utilização da Internet esteve, na prática, restrita ao meio acadêmico, tendo o e-mail como o responsável pela maior parcela do tráfego de dados. Entretanto, neste ano, o físico britânico Tim Berners-Lee desenvolveu para uso da organização na qual trabalhava um conjunto de programas no modelo cliente-servidor que permitia, graficamente, a visualização de um determinado conteúdo. Nascia a World Wide Web, (numa tradução livre, "Teia de Alcance Mundial") também conhecida por WWW ou, simplesmente, Web. Ela passou a ser interessante para o usuário comum de computador, aquele que não necessariamente faz parte do meio acadêmico ou domina o uso da informática. Conseqüentemente passou a chamar a atenção do mercado que viu na Internet, mais particularmente na Web, um enorme potencial de negócios. Aliada ao crescimento das redes, disparado nos anos 80 pelo sucesso dos microcomputadores, a WWW se torna a aplicação responsável pela espetacular expansão da utilização da Internet.

Neste ponto os problemas começam a se tornar significativos. O TCP / IP, um conjunto de protocolos concebido para ligar uma restrita quantidade de redes heterogêneas de forma descentralizada, trafegando simplesmente aplicações no modo texto, ao longo de sua existência passa a ser usada para conectar um grande número de redes ao redor de todo o mundo, implementando o conceito de uma rede única, transportando de forma integrada conteúdo de diversas mídias, como vídeo, áudio, gráficos e, também, textos, e ainda provendo segurança.

2)                   PROTOCOLOS

O primeiro desafio encontrado pelos pioneiros no uso de redes de comunicação de dados foi definir padrões que deveriam ser respeitados na produção de hardware e software de modo a permitir que os diferentes equipamentos conectados em uma determinada rede fossem capazes de se comunicar e trocar dados entre si. A resposta a este desafio foi justamente a criação de protocolos. Protocolo foi o nome dado à este conceito. Convencionava-se como deveria ser a interface (o meio através do qual dois pontos interagiriam) e a este conjunto de funções, características e respostas padronizados dava-se o nome de "Protocolo (de Comunicação) X", onde "X", em geral, era um mnemônico, uma sigla pela qual aquela reunião de normas passava a ser referenciado.

2.1)           FUNDAMENTOS

Passada esta fase inicial, quando as redes eram projetadas até certo ponto empiricamente, acumulou-se um nível de conhecimento que fez surgir uma série de princípios, permitindo um desenvolvimento de forma mais estruturada. Dentre esses princípios, um que se destacou e passou a ser quase que universalmente aceito e seguido foi o de estruturar a rede como um conjunto de camadas hierárquicas, cada uma sendo construída utilizando-se das funções e serviços disponibilizados pelas camadas hierarquicamente inferiores. Cada camada, também designada como nível, é um conjunto de processos, implementados via hardware ou software, em execução em um determinado ponto de uma rede, que se comunica com a respectiva camada de mesmo nível em outro determinado ponto dela. Em oposição ao conceito inicial de se implementar toda a lógica envolvida no processo de comunicação em um único módulo na forma de um "protocolo de comunicação X" chegou-se ao protocolo, de nível N, responsável pela implementação da troca de informações entre os níveis N de dois pontos de uma rede e pelo fornecimento de serviços ao seu nível hierarquicamente superior. Importante ressaltar, no entanto, que não necessariamente um único protocolo é responsável pelo funcionamento de todo um nível. Pode acontecer, e é até comum, que dois ou mais protocolos o façam. Além disso, ao contrário do que pode parecer à primeira vista, uma camada de determinado um ponto da rede não se comunica diretamente com a camada correspondente de um outro ponto. Como pode ser visto na figura 07, que demonstra a transmissão de dados nas camadas do Modelo OSI (Open Systems Interconnection), a ser apresentado adiante, o tráfego gerado pela aplicação em um determinado ponto, denominado Unidade de Dados do Serviço (Service Data Unit - SDU), é encapsulado no nível mais alto, utilizando-se um processo no qual a entidade deste nível junta aos dados um cabeçalho, denominado Informação de Controle do Protocolo (Protocol Control Information - PCI). O resultado dessa junção forma o PDU (Protocol Data Unit - Unidade de Dados do Protocolo). Esse PDU, através de uma interface, é enviado para o nível imediatamente inferior, onde se torna o SDU dessa camada. Assim acontece sucessivamente até o nível mais baixo que, este sim, se comunica diretamente com a camada mais inferior do outro ponto. Neste outro ponto, este nível retira as suas informações de encapsulamento e, usando uma interface, envia o que restou para a próxima camada. Desta foram, cada uma elimina seu respectivo encapsulamento e repassa o restante hierarquicamente para cima, até a aplicação destino.

(07) TRANSMISSÃO ENTRE AS CAMADAS [SOARES 1995]

Esta organização de protocolos em camadas se mostrou como a maneira mais eficiente para a estruturação de uma rede. Uma vez definidas as interfaces e o funcionamento dos níveis, cada um poderia ser implementado ou alterado sem que isto interferisse no funcionamento dos demais. Entretanto, o número e as características das camadas de uma rede variavam de uma arquitetura para outra. Cada fabricante de equipamento adotava um padrão e adequava seus produtos a ele, produzindo uma arquitetura de rede proprietária. O Modelo SNA, uma arquitetura proprietária da IBM, é um exemplo deste tipo de padrão em uso atualmente.

Mas estes sistemas proprietários, de forma geral, eram, e ainda são, extremamente prejudiciais aos usuários da tecnologia, uma vez que os equipamentos em uso só se comunicavam com outros do mesmo fabricante, provocando a dependência em relação aos mesmos e gerando um ambiente pouco ou nada flexível. Desta forma, permitir a comunicação entre hardware e software de diferentes marcas tornou-se imprescindível para escapar daquela situação, fazendo surgir a necessidade de uma arquitetura única seguida por todos. Para impedir o favorecimento de alguns produtores em detrimento de outros, era condição sine qua non que esta arquitetura fosse aberta e pública. Surge, então, o Reference Model for Open System Interconnection (Modelo de Referência para Interconexão de Sistemas Abertos), também chamado de Modelo de Referência OSI da OSI, ou, simplesmente, Modelo OSI.

2.2)           ORGANIZAÇÕES DE PADRONIZAÇÃO

O Modelo OSI é baseado em uma proposta desenvolvida pela Organização de Padrões Internacionais (International Standard Organization - ISO), uma das mais importantes entre as diversas entidades internacionais de padronização. A relevância destas organizações reside exatamente na necessidade de que sejam estabelecidas regras a serem seguidas de modo a permitir que equipamentos de diferentes origens sejam capazes de se comunicar entre si.

Cada uma destas entidades atua de uma forma específica e com escopo técnico, político e geográfico bem definidos. As mais importantes e que merecem o maior destaque em relação ao tópico de redes de computadores são a ISO, a IEC, a ITU-T e a IAB.

2.2.1)      ISO

A Organização de Padrões Internacionais (International Standard Organization) foi fundada em 1946 com o objetivo de elaborar padrões internacionais em várias áreas técnicas como a eletro-eletrônica, a mecânica e a química entre outras. A ela são filiadas entidades de normatização nacionais de mais de 80 países. É através destes organismos nacionais que os países membros submetem suas propostas e se fazem representar. Como exemplo, pode-se mencionar o representante brasileiro, a ABNT (Associação Brasileira de Normas Técnicas), o inglês BSI (British Standards Institute) e o ANSI (American National Standards Institute), o mais conhecido e importante no estudo das áreas de computação e de redes de comunicação de dados, ao qual está submetido o igualmente famoso Institute of Eletrical and Eletronics Engineers - IEEE.

A ISO é organizada em diversos Comitês Técnicos (TC - Techinical Committees - TCs) que possuem Subcomitês (SCs - SubCommittees) que, por sua vez, dividem-se em WGs (Working Groups - Grupos de Trabalho). O Comitê Técnico responsável por todos os padrões na área da computação é o TC97.

2.2.2)      IEC

A International Electrotechnical Commission (Comissão Eletrotécnica Internacional) é a responsável internacionalmente pela normatização no setor eletrotécnico. Devido à superposição nas áreas de atuação desta e da ISO em relação à tecnologia da informação foi criado o JTC 1 (Joint Technical Committee 1) no qual ambas agem juntas na definição final dos padrões relativos a redes.

2.2.3)      ITU-T

A International Telecomunications Union corresponde ao antigo CCITT (Comité Consultatif Intenational Télégraphique et Téléphonique, que também já se chamou Consultative Committee on International Telegraphy and Telephony). Com sede em Gênova, ela mantém estreita relação com o CCIR (Comité Consultatif International des Radiocommunications), organismo internacional responsável pela padronização relativa à comunicação via ondas de rádio. Pode-se dizer que a ITU-T seja o órgão de normatização das empresas de telecomunicação. Entretanto, ele não elabora padrões. Faz recomendações as quais se espera que sejam seguidas pelos seus membros.

2.2.4)      IAB

O Internet Activity Board (numa tradução livre, "Quadro de Atividade da Internet") é um organismo que atua de forma incomum, não sendo propriamente uma organização internacional de padronização. Uma vez que é a responsável pelas definições referentes à Internet, esta entidade, seguindo a natureza aberta e sem dono daquela, se propõe a receber propostas elaboradas por qualquer pessoa, embora, em geral, somente cientistas, estudiosos e entidades relacionadas com o assunto as façam. Vale ressaltar que a principal entidade na pesquisa, no desenvolvimento e na elaboração de tais propostas para Internet é a IETF (Internet Engineering Task Force, a "Força Tarefa de Engenharia da Internet").

As propostas são sempre submetidas ao RFCEditor, o órgão moderador da IAB em questões relativas aos RFCs (Request For Comments, algo como "Pedido Para Comentário"), na forma de um Draft (Rascunho) de um RFC. Após passar por alguns procedimentos internos e uma minunciosa avaliação ele pode ser adotado, ou não, caso em que é simplesmente descartado. Mas quando é aceito ele se torna um Internet Standard (Padrão Internet), passando a ser designado somente como RFC e recebendo um número seqüencial que passará a identificá-lo. Os RFC 791 e RFC 793, ambos elaborados por J. Postel em 1981, tratando do IP e do TCP, respectivamente, são dois exemplos de RFCs de grande importância para o desenvolvimento da dita Arquitetura Internet.

2.3)           MODELO DE REFERÊNCIA OSI DA ISO

Em contrapartida à Arquitetura Internet, que nasceu de contribuições feitas potencialmente por qualquer pessoa, o Modelo de Referência para Interconexão de Sistemas Abertos da ISO, assim como diversos outros padrões a ele relacionados, foi desenvolvido de forma bem menos distribuída por WGs subordinados ao TC97.

De acordo com o International Standard 7498-1, também denominado RM-OSI, o objetivo deste padrão é viabilizar o desenvolvimento coordenado de padrões para interconexão de sistemas heterogêneos através do fornecimento de uma base comum. Entretanto não é objeto de estudo da norma a criação de nenhuma implementação, tecnologia, ou modo de conexão específico. A intenção é o reconhecimento e o suporte as especificações da mesma. É o fornecimento de uma modelo conceitual sem a preocupação de definir detalhadamente como cada nível deve implementar seus respectivos protocolos e serviços. Ela apenas define o que deve ser feito, mas não exatamente como. Desta forma, sem a especificação minunciosa dos protocolos e serviços, o RM-OSI não define uma arquitetura de rede propriamente dita.

Curiosamente, uma vez que o Modelo OSI não especifica os protocolos e serviços de cada camada, é perfeitamente possível que dois sistemas distintos em conformidade com a norma não sejam capazes de trocar informações. Existem várias opções de implementação do conjunto de protocolos e serviços, inclusive aqueles que são incompatíveis entre si. Mas para que dois sistemas sejam capazes de interagir é necessário que tenham optado por um conjunto compatível para todas as camadas. De modo a definir grupos padronizados e compatíveis, foi elaborado o conceito de Perfis Funcionais. Estando dois sistemas dentro do mesmo Perfil Funcional eles garantidamente serão capazes de se comunicar. Os mais difundidos PFs são o MAP (Manufacturing Automation Protocols) e o TOP (Technical and Office Protocols), este inicialmente desenvolvido pela Boeing e utilizado em ambientes de escritório, e aquele em pela General Motors para fábricas. Também é bastante conhecido o GOSIP (Government OSI Profile), para uso dos órgãos governamentais dos EUA. Já não tão famoso, o POSIG (Perfil OSI do Governo Brasileiro) é o utilizado pelos órgãos de direito público no Brasil.

O RM-OSI define sete camadas. O princípios aplicados para esta definição foram os seguintes:

1)          Uma camada deveria ser criada onde um nível de abstração diferente fosse necessário;

2)          Cada camada deveria exercer uma função bem definida

3)          A função de cada camada deveria ser escolhida com uma visão à frente, definindo protocolos padronizados internacionalmente;

4)          Os limites da camada deveriam ser escolhidos para minimizar o fluxo de informação através das interfaces; e

5)          número de camadas deveria ser grande o bastante tal que funções distintas não precisassem ser colocadas juntas na mesma camada sem necessidade e pequeno o bastante tal que a arquitetura não se tornasse impraticável.

Conforme ilustrado na figura 08, as camadas são:

1)          Camada Física

2)          Camada de Enlace

3)          Camada de Rede

4)          Camada de Transporte

5)          Camada de Sessão

6)          Camada de Apresentação

7)          Camada de Aplicação

(08) CAMADAS OSI [ALBUQUERQUE 1999]

De acordo com as suas funções, os sete níveis podem ser divididos em dois grupos funcionais, o de Plataforma de Transporte, que compreende as camadas 1 até 4, e o de Plataforma de Aplicação, englobando as camadas 5 até 7. A função do primeiro (Plataforma de Transporte) é levar o dado de um sistema ao outro livre de erros, enquanto a do segundo (Plataforma de Aplicação) é interpretar o fluxo de dados e apresentá-lo de forma útil e utilizável para o usuários final.

A figura 09 representa o fluxo de dados entre dois sistemas.

(09) A COMUNICAÇÃO NO MODELO OSI [SOARES 1995]

2.3.1)      CAMADA FÍSICA

A unidade de dados da camada física é formada por um bit, no caso de uma transmissão serial, ou “n” bits, se a transmissão for paralela.

É esta camada que define as características físicas da conexão. Ela especifica como um bit é representado eletricamente, quanto tempo ele dura e se ele vai trafegar no modo half-duplex ou full-duplex, o que significa, respectivamente, se será nos dois sentidos, um sentido de cada vez, ou nos dois sentidos, ao mesmo tempo. Também é ela que define como a conexão será efetuada, mantida e desfeita, como é o meio físico, a mídia, e como são e funcionam as placas, conectores e etc.

O objetivo, neste nível, é simplesmente transmitir uma cadeia de bits, sem que seja importante saber o significado dos mesmos ou se houve erro de transmissão.

2.3.2)      CAMADA DE ENLACE

Nesta camada os bits são agrupados em quadros. É uma das principais funções dela criar e reconhecer os limites destes quadros. Quatro métodos são usados para tal: transparência de bits, que é o mais usado, transparência de caracter, contagem de caracter e a violação de códigos de sinal no meio físico.

Na transparência de bits, seqüências especiais de bits são usadas como delimitadores de quadros e para evitar que tal seqüência apareça nos dados, bits são acrescentados na origem e retirados no destino de forma a eliminá-la. Na transparência de caracter, o processo é análogo, mas são utilizados caracteres especiais, e não seqüências de bits, como delimitadores dos quadros. Na contagem de caracter, é utilizado um campo no cabeçalho que informa a quantidade de caracteres do quadro. E, finalmente, na violação de códigos do nível físico, são utilizadas variações específicas do sinal elétrico do nível físico para delimitar os quadros.

Outra função tratada neste nível é a de evitar que sejam transmitidos mais bits pelo transmissor do que o receptor é capaz de receber em um período de tempo. Pela utilização de mecanismos de controle de fluxo, que permitem àquele identificar qual é o espaço disponível no buffer deste em um dado momento, é que se impede o acontecimento deste problema.

O objetivo destas funções e, conseqüentemente, desta camada, que também pode ser chamada de camada de conexão, é detectar e, opcionalmente, corrigir erros que venham a acontecer no nível inferior, o físico, transformando em um canal confiável um meio que não o era. Para tanto, são acrescentados a cada quadro bits de redundância para identificação destes erros. Não é obrigatório, entretanto, que sejam implementados mecanismos para correção dos mesmos, seja também por redundância, seja por retransmissão.

2.3.3)      CAMADA DE REDE

Este nível, que tem como objetivo o de apresentar à camada de transporte uma independência em relação às necessidades e ao controle de chaveamento e roteamento inerentes ao estabelecimento e utilização de uma conexão de rede, pode prover seus serviços usando uma das seguintes filosofias: orientado ou não-orientado à conexão, respectivamente, datagrama ou circuito virtual.

No primeiro (datagrama), cada unidade de dados, chamada de pacote, não tem dependência de e nem relação com qualquer outro pacote. Desta forma, deve sempre levar consigo seu endereço de destino, fazendo com que o roteamento deva ser calculado a cada pacote que encaminhado por um nó da rede.

No segundo (circuito virtual), ao contrário do anterior, todos os pacotes de uma determinada “conversação” são interdependentes, devendo ser estabelecida uma conexão. A esta conexão, denominada circuito, é fornecida um número de identificação que é utilizado por cada pacote subseqüente para chegue ao destino pela mesma rota, calculada uma única vez.

2.3.4)      CAMADA DE TRANSPORTE

O nível de transporte é o único dos analisados até aqui no qual a comunicação se dá realmente de fim a fim, da camada de transporte da origem até a camada de transporte do destino. Nas anteriores, a comunicação se dá somente entre pontos adjacentes da rede. Desta forma, ele consegue uma comunicação realmente confiável, isolando dos níveis superiores as questões de transmissão da rede.

Este nível executa diversas funções, entre as quais três devem ser destacadas: o controle de fluxo, semelhante ao que é feito pela camada de enlace; a multiplexação, que permite que várias conexões de transporte compartilhem a mesma conexão de rede, permitindo uma maior utilização desta quando há banda não utilizada; e o splitting, que seria o oposto da multiplexação, permitindo que várias conexões de rede sejam utilizadas por uma única conexão de transporte, simulando um aumento da banda disponível para o transporte. Além dessas, também estão entre as principais funções o controle de seqüência fim a fim e a detecção e recuperação de erros fim a fim, responsáveis por tornar mais confiável a comunicação.

2.3.5)      CAMADA DE SESSÃO

Esta camada oferece três principais serviços com objetivo de estruturar as conexões disponibilizadas pelo nível inferior, o de transporte. São eles: o gerenciamento de token (uma espécie de "bastão", cuja "posse" condiciona a possibilidade de prestar ou solicitar determinado serviço), utilizado para a transmissão em half-duplex em um meio full-duplex; o controle de diálogo, que, utilizando pontos de sincronização, permite que um diálogo seja retomado praticamente do ponto onde tenha sido interrompido; e o gerenciamento de atividades, que são partes de um ou mais diálogo, e, através do serviço gerenciamento, podem ser interrompidas e retomadas de acordo com a necessidade.

2.3.6)      CAMADA DE APRESENTAÇÃO

A camada de apresentação tem como função realizar transformações nos dados depois da recepção e antes do envio para o nível de sessão e estabelecer e manter conexões de apresentação. Tais transformações têm como objetivo funcionar como uma interface entre os padrões do sistema local e os padrões reconhecidos pela rede e vice-versa e / ou adequar os dados a necessidades específicas, realizando compressão e descompressão ou criptografia de dados, por exemplo.

2.3.7)      CAMADA DE APLICAÇÃO

A camada de aplicação contém uma variedade de protocolos que são necessários para oferecer aos processos de aplicação os meio para que eles se utilizem do ambiente de comunicação OSI. Através da utilização das funções e protocolos disponibilizados por este nível é fornecido o suporte para o desenvolvimento de aplicações distribuídas. O principais serviços dessa camada são os seguintes:

1)          Sincronização das aplicações;

2)          Seleção entre os modos full-duplex e half-duplex;

3)          Determinação da responsabilidade pela recuperação de erros;

4)          Definição da qualidade de serviço; e

5)          Especificação de aspectos relativos a segurança.

2.4)           ARQUITETURA INTERNET

A Arquitetura Internet dá uma ênfase significativa a interligação de redes tecnologicamente distintas. A lógica desta abordagem está no fato de que não existe uma tecnologia de rede que seja adequada a necessidade de todos os seus possíveis usuários. Desta forma, cada um pode optar por utilizar uma solução que satisfaça suas condições de uso e, ainda assim, ser capaz de se manter em comunicação com outros usuários, de outras redes, através de uma internet que, usando uma máquina denominada internet gateway, ou internet router, consegue interligar redes independentemente da tecnologia das mesmas.

A palavra internet, que hoje é usada para designar esta “Grande Rede” de alcance mundial surgida nos tempos de Guerra Fria, significa, simplesmente, "entre rede", ou "inter-rede". Não fosse o fato de ter sido utilizada especificamente como nome desta rede, poderia ser usada, sem necessidade de maiores explicações, para classificar qualquer rede que fosse capaz de interligar sistemas de arquitetura de rede distintos.

Algo parecido ocorreu com o conjunto de protocolos TCP / IP. Este passou a ser conhecido como o protocolo de rede da Internet. Entretanto o TCP / IP é um protocolo de redes cujas definições são abertas e públicas, assim como é a Arquitetura Internet, e pode ser utilizado por qualquer um, para qualquer fim, sem que haja a necessidade de que se solicite qualquer tipo de permissão aos detentores do direito de propriedade do mesmo para fazê-lo, simplesmente pelo motivo de que ninguém detêm tais direitos. Assim sendo, o TCP / IP pode ser, e é, usado em outras redes que não fazem parte da Internet.

Estas pequenas confusões se intensificaram com a popularização sem precedentes desta grande rede. Como já foi abordado anteriormente, a Internet tornou-se um sucesso nos últimos anos e tem sido apontada como a responsável por uma das maiores revoluções pela qual a humanidade já passou, principalmente em função da sua capacidade de democratizar o acesso à informação em geral e de eliminar as barreiras de distância física entre entidades que desejem se comunicar, sejam eles pessoas, ou organizações.

Para que seja possível o melhor entendimento do porquê deste sucesso, faz-se imprescindível conhecer mais profundamente a organização e o funcionamento do Modelo Internet.

No Modelo Internet de rede, assim como acontece no Modelo de Referência OSI da ISO, ocorre a divisão em camadas. Entretanto, enquanto este possui sete níveis, aquele tem apenas cinco: a de rede física, a de interface de rede, a inter-rede, a de transporte e a de aplicação.

Cada uma destas cinco camadas corresponde, quase que por completo, diretamente a uma camada do Modelo OSI, respectivamente, a física, a de enlace, a de rede, a de transporte e de aplicação. Os dois níveis restantes, o de sessão e o de apresentação, não estão presentes no Modelo Internet TCP / IP, devendo ter seus serviços explicitamente implementados na camada de aplicação, caso sejam necessários.

Como em todo modelo de rede em níveis, divisão esta que é quase que universalmente adotado pelas especificações de sistemas de rede, na Arquitetura Internet as camadas de um determinado ponto também não se comunicam diretamente com as camadas correspondentes em um outro ponto. A troca de informações é feita somente com as camadas adjacentes do mesmo ponto, através das interfaces existentes, sempre respeitando a hierarquia natural do modelo em níveis, conforme pode ser observado na figura 10.

(10) A COMUNICAÇÃO NO MODELO INTERNET [SOARES 1995]

2.4.1)      CAMADA DE REDE FÍSICA

Embora não seja universalmente aceita como um dos níveis do Modelo Internet, a camada de rede física, também chamada de intra-rede, pode ser considerada como a camada de nível hierárquico mais baixo da Arquitetura TCP / IP. Sua especificação é substancialmente igual a do seu nível equivalente no Modelo OSI

2.4.2)      CAMADA DE INTERFACE DE REDE

Como acontece na camada de rede física, este nível do Modelo Internet TCP / IP também é análogo ao seu nível equivalente no Modelo OSI.

Uma vez que não o modelo não faz nenhuma restrição às redes que são interligadas para a formação da inter-rede, cabe a esta camada a tarefa de compatibilizar a tecnologia usada neste nível, e no inferior, com a camada inter-rede.

2.4.3)      CAMADA INTER-REDE

Esta camada, que corresponde ao nível de rede do Modelo OSI, provê seus serviços se utilizando da filosofia não-orientada à conexão, também chamada de datagrama, através, primordialmente, do protocolo IP.

Ela é a responsável pela transferência de dados através da inter-rede, desde o ponto de origem do pacote até o ponto de destino, e atua em dois sentidos, recebendo os datagramas vindos do nível de transporte, ou do nível de interface de rede.

No primeiro caso, o pacote vem da camada de transporte com o endereço de máquina de destino. O pacote é então encapsulado em um datagrama IP e o algoritmo de roteamento é executado de forma a determinar se este pode ser entregue diretamente, ou se deve ser passado a um gateway internet, e é enviado à interface de rede apropriada para ser transmitida.

No segundo caso, quando origem imediata do pacote é a interface de rede, o algoritmo de roteamento define se o datagrama deve ser passado ao nível de transporte local, por ter chegado ao destino, ou se deve ser enviado adiante por uma das interfaces de rede.

Este nível, além usar o protocolo IP (Internet Protocol), o seu protocolo primário, também se utiliza de outros, que são os auxiliares, como o ICMP (Internet Control Message Protocol), RIP (Routing Information Protocol), IGMP (Internet Group Management Protocol), OSPF (Open Shortest Path First) e BGP (Border Gateway Protocol).

2.4.4)      CAMADA DE TRANSPORTE

Esta camada corresponde ao nível de mesmo nome do Modelo de Referência OSI e tem como função básica permitir a comunicação fim-a-fim entre aplicações de diferentes pontos da rede. Ela se utiliza de dois protocolos para cumprir esta tarefa, dependendo da necessidade: o TCP e o UDP.

O TCP (Transmission Control Protocol), é um protocolo orientado à conexão que trabalha de forma full-duplex. Desta forma, ele garante uma comunicação confiável, fornecendo controle de erro, controle de fluxo, splitting e multiplexação de acesso ao nível inter-rede e seqüencialização.

O UDP (User Datagram Protocol), mais simples e leve, porém menos poderoso, é não-orientado à conexão. Bem menos usado que o TCP, ele somente á capaz de oferecer multiplexação do acesso ao nível inter-rede.

A existência do UDP pode parecer inútil frente ao poderio do TCP. Entretanto, algumas aplicação simplesmente não têm benefício algum com as vantagens oferecidas por este. Tais aplicações, geralmente de pequena complexidade, não sendo vulneráveis a perda, duplicação, erro, ou problemas de ordenação dos pacotes e não necessitando dos demais serviços oferecidos pela TCP, simplesmente se beneficiam da menor sobrecarga relativa do sistema conseqüente do uso UDP, como será visto mais adiante. A continuidade da utilização deste se deve justamente a essas aplicações.

2.4.5)      CAMADA DE APLICAÇÃO

O protocolo do nível de aplicação, neste modelo, é, na prática, definido pela própria aplicação. Embora exista uma correlação entre este nível e a camada de aplicação do Modelo OSI, não há, no Modelo Internet TCP / IP, os níveis de sessão e de apresentação, fazendo com seja necessário que esta camada interaja diretamente com os protocolos TCP, ou UDP, do nível de transporte, de acordo com a necessidade da aplicação, implementando os serviços e protocolos dos níveis de sessão e de apresentação de acordo com a própria demanda.

Há alguns serviços e protocolos desta camada bastante conhecidos e já padronizados, como, por exemplo, o FTP (File Transfer Protocol), para transferência de arquivos; o SMTP (Simple Mail Tansfer Protocol), para entrega de correio eletrônico; o NNTP (Network News Transfer Protocol), para entrega de “Usenet News”; o HTTP (Hyper Text Transfer Protocol), para transferência de arquivos da World Wide Web; o DNS (Domain Name System), para mapeamento de nomes em endereços de rede, o endereço IP; e o TELNET, para uso de terminal virtual. Entretanto, quando comparada a quantidade dos mesmos já desenvolvidos e padronizados para o Modelo OSI, este número é pequeno. Pode-se dizer que praticamente todo desenvolvedor acabo por criar um serviço ou protocolo de nível de aplicação próprios exclusivamente da sua aplicação.

2.5)           O MODELO OSI x O MODELO INTERNET

Como já mencionado, o Modelo de Referência da ISO para Interconexão de Sistemas Abertos foi inicialmente publicado em 1978, com o propósito de criar um padrão internacional para comunicação em rede. Apesar da prévia existência do Modelo Internet, que desde a metade desta década encontrava-se em funcionamento, já indicando a possibilidade de que se tornasse o padrão para comunicação global, a ISO temia que, uma vez que o TCP / IP era uma invenção americana, os americanos pudessem levar algum tipo de vantagem nas relações comerciais com o resto do mundo.

A realidade atual evidencia que os esforços da ISO não foram suficientes para resultar na situação inicialmente desejada. O Modelo Internet TCP / IP, principalmente por oferecer uma solução simples, porém funcional, além de ter sido a primeira arquitetura não-proprietária com este fim, acabou por se tornar o padrão de facto, enquanto o Modelo OSI, devido sobretudo ao alto custo para o desenvolvimento de uma arquitetura que atenda fielmente às especificações, ficou sendo apenas o padrão de jure, em função da legitimidade da instituição que o estabeleceu.

Entretanto, também não é correto considerar que a iniciativa não tenha sido bem sucedida. Longe disso, o Modelo OSI, mesmo não seguido à perfeição, é a referência para o desenvolvimento de praticamente qualquer hardware ou software para redes de comunicação de dados no mundo, até porque isto não gera, necessariamente, incompatibilidade com o Modelo Internet. São raras atualmente as exceções, como o já citado caso do SNA da IBM, que fogem deste padrão aberto e público para um outro modelo, principalmente um que seja proprietário.

Desta forma, a importância da comparação entre os dois modelos reside principalmente neste ponto. Além da semelhança nas funções desempenhadas por seus níveis, conforme pode ser visualizado no esquema 11, o status de ambas faz com sejam obrigadas a coexistir e trocar informações entre si, cada uma com suas vantagens e desvantagens.

 MODELO OSI               ARQUITETURA INTERNET

 

+-------------------+    +-------------------+

| Aplicação         |    |                   |

+-------------------+    |                   |

| Apresentação      |    | Aplicação         |

+-------------------+    |                   |

| Sessão            |    |                   |

+-------------------+    +-------------------+

| Transporte        |    | Transporte        |

+-------------------+    +-------------------+

| Rede              |    | Inter-rede        |

+-------------------+    +-------------------+

| Enlace            |    | Interface de Rede |

+-------------------+    +-------------------+

| Física            |    | Rede Física       |

+-------------------+    +-------------------+

(11) O MODELO OSI E A ARQUITETURA INTERNET

O Modelo OSI, por exemplo, não se propõe a definir as especificações de uma arquitetura propriamente dita, pois trata de todos os aspectos do problema de interconexão de sistemas abertos. Apesar da flexibilidade permitida por esta abordagem, ela pode gerar situações em que dois sistemas em conformidade com o OSI não sejam capazes de se comunicar, bastando que tenham escolhido perfis funcionais não compatíveis.

No modelo TCP / IP, ao contrário, isto jamais aconteceria. A inflexibilidade da abordagem do mesmo, que se propõe a resolver o problema prático de interligar redes de tecnologias distintas, usando apenas alguns protocolos e serviços específicos, apresenta uma solução simples e satisfatória. O foco mais importante neste modelo está apenas nos níveis de rede e de transporte, respectivamente com o protocolo IP e os protocolos TCP e UDP. Em relação às outras camadas, principalmente em relação às inferiores, o modelo apenas define as funções e a interface com estas duas. Esta abordagem, ao mesmo tempo que simplifica a solução do problema (tendo sido, em grande parte, a responsável pelo sucesso da arquitetura), implica em algumas desvantagens, como a não padronização de serviços que corresponderiam às camadas de sessão e de apresentação do Modelo OSI, e a conseqüente necessidade de re-implementá-los.

Toda esta simplicidade e objetividade, além das desvantagens já apresentadas, também trouxe à arquitetura TCP / IP alguns outros problemas que não foram totalmente previstos ou abordados no momento da sua concepção. A segurança foi um deles. No contexto daquela época era possível prever que a Internet, ao menos como é conhecida hoje, iria existir e, muito menos, que necessitaria de recursos para dar garantia de segurança aos dados que nela trafegassem e aos usuários que dela fizessem uso. Naquele contexto esta palavra sequer tinha este significado. Segurança significava que a rede continuaria operando caso um ataque nuclear soviético (ou algo parecido) tornasse inoperante parte de sua estrutura de comunicação.

3)                     REQUISITOS DE SEGURANÇA

Como sugerido anteriormente é necessário definir o que significa a palavra segurança no contexto desta monografia. Desta forma, quando o termo segurança for mencionado, deste ponto em diante, significa que se tem a intenção de abordar as questões relativas às vulnerabilidades (fraquezas) das redes de comunicação de dados que potencialmente exponham ao acesso não autorizado, por meios que não sejam os previstos na implementação dos sistemas, o que é transmitido utilizando-se recursos das mesmas.

Apesar da definição ampla a ser utilizada neste trabalho de pesquisa, não é o objetivo do mesmo analisar toda e qualquer vulnerabilidade das redes. Ao contrário, o seu escopo é bastante menos amplo, englobando somente as principais questões de segurança intrínsecas às implementações normalmente utilizadas dos protocolos fundamentais do nível de transporte e inter-rede da Arquitetura Internet, respectivamente o TCP e o IP, sem a pretensão de se desejar esgotar o assunto (há versões modificadas e implementações particulares que corrigem e agregam funcionalidades aos mesmos e não serão abordadas). Além disto, em função da troca de versão do protocolo IP, que do atual IPv4 migrará para o IPv6, a ser iniciada nos próximos dois ou três anos, julgou-se necessário uma breve abordagem também dos aspectos de segurança deste novo protocolo, mesmo não estando, ainda, concluída a especificação do mesmo.

Além dos já expostos segurança e vulnerabilidade, há ainda alguns outros conceitos básicos para o estudo deste vasto campo da computação que é a segurança de redes.

3.1)           CONCEITOS BÁSICOS

Os conceitos sucintamente expostos a seguir, em complementação às definições dos termos vulnerabilidade e segurança, permitem um entendimento mais completo da questão de segurança de redes em uma organização, uma vez que estão todos intimamente interligados. Prover segurança a uma rede significa minimizar a vulnerabilidade da mesma a ameaças e ataques, através da utilização de mecanismos de segurança, segundo as necessidades de proteção definidas na política de segurança da organização.

3.1.1)      AMEAÇAS E ATAQUES

Uma ameaça consiste em uma potencial violação da segurança de um sistema. Por exemplo, pode-se citar a destruição ou revelação não autorizada de informações, ou a interrupção indevida de um serviço. Uma ameaça é classificada em acidental ou intencional, podendo, cada uma das duas, ser: passiva, quando não resulta em alteração de informação, estado ou operação do sistema; ou ativa, quando a modificação ocorre. Considera-se acidental a ameaça que não está associada à intenção de violação da segurança. Já a intencional se caracteriza pela existência do objetivo de violação do sistema, configurando um ataque.

3.1.2)      POLÍTICA DE SEGURANÇA

Política de segurança é o parâmetro em relação ao qual se avalia a segurança de um sistema. Este é considerado seguro quando esta política é seguida. Uma política de segurança é, portanto, um conjunto de leis, regras e práticas que regulam como uma organização gerencia, protege e distribui seus dados e recursos.

3.1.3)      MECANISMOS DE SEGURANÇA

Os mecanismos de segurança são os meios utilizados por uma organização para garantir que uma determinada política de segurança é cumprida. Este mecanismos podem ser elementos físicos e funções realizadas e definidas no “mundo real”, tais como a limitação do acesso de pessoas não autorizadas ao local onde ficam os servidores ou aos cabos de transmissão, ou funções, dados e algoritmos implementados por meio de recursos computacionais de software e hardware, como a utilização de sistema criptografia e decriptografia, ou de sistemas de autenticação dos usuários de um determinado serviço ou recurso disponível.

Definidos o escopo do estudo e o conceitos básicos, é necessário definir a sua metodologia. Assim como existe o Modelo de Referência OSI, definido pela norma ISO 7498-1 (parte 1), também existe o padrão ISO 7498-2 (parte 2), o Modelo OSI de Gerência da Segurança de Redes, um conjunto de definições e recomendações complementares ao primeiro.

3.2)           MODELO OSI DE GERÊNCIA DA SEGURANÇA

Embora no passado a exposição a riscos sofrida pelas redes de comunicação de dados fosse significativamente menor, uma vez que não havia redes com abrangência tão grande como as atuais e que a utilização do parque computacional das instituições era restrito aos relativamente poucos técnicos em computação da época, a preocupação com o acesso não autorizado a informações transportadas através delas já se fazia presente.

A norma ISO 7498-2 tem como objetivo descrever os serviços de segurança OSI e os seus respectivos mecanismos de segurança e definir a posição, no Modelo de Referência OSI, em que tais serviços e mecanismos devem estar implementados e disponíveis. Este último é alcançado utilizando-se de propostas de mapeamento dos mesmos nas sete camadas, que não necessariamente representam soluções definitivas.

Apesar das semelhanças entre as camadas OSI e a Arquitetura Internet, a forma genérica como o assunto é tratado pela norma ISO não é satisfatoriamente precisa e específica nas orientações sobre segurança necessárias aos desenvolvedores de produtos para Internet.

Com o objetivo de criar uma Arquitetura de Segurança da Internet que cumpra este papel o IRTF (International Research Task Force - Força Tarefa de Pesquisa Internacional) criou o PSRG (Privacy and Security Research Group - Grupo de Pesquisa de Segurança e Privacidade).

3.3)           ARQUITETURA DE SEGURANÇA DA INTERNET

Embora não esteja ainda completamente terminada, a expectativa é de que a Arquitetura de Segurança da Internet adote as definições de serviços, mecanismos e ameaças da norma ISO 7498-2. Entretanto, isto não significa que serão utilizados os mesmos mapeamentos dos serviços nas camadas e dos mecanismos no serviços como proposto no Modelo de Gerência de Segurança. Isto nem seria possível, devido a natureza excessivamente genérica do padrão da ISO, e, pelo mesmo motivo, nem seria objetivo o suficiente para os usuários das definições.

Além das definições originalmente estabelecidas pela ISO, o PSGR, sempre com o objetivo de tornar mais específicas as suas definições, também determinou uma série de princípios para manter o caráter de arquitetura aberta da Internet e que devem ser considerados na elaboração do seu padrão e criou um mapeamento adicional para os serviços e respectivos mecanismos utilizados em cada camada. Este mapeamento visa indicar o que deve ser utilizado para cada tipo de aplicação de rede no ambiente Internet, determinando, por exemplo, os serviços e mecanismos a serem utilizados para garantir a segurança em aplicações de correio eletrônico, de transferência de arquivos, de terminal remoto, de gerenciamento de redes e etc.

Os serviços de segurança, assim como acontece no padrão ISO 7498-2, são empregados nas camadas, seja do RM-OSI, seja da Arquitetura Internet, em combinações apropriadas, de modo a, utilizando os mecanismos de segurança, anular as ameaças e satisfazer os requisitos da política de segurança.

3.4)           OS SERVIÇOS DE SEGURANÇA

Os serviços de segurança básicos apresentados pelo Modelo de Gerência de Segurança OSI e que deverão ser ratificados pelo PSGR são cinco:

1)          Autenticação;

2)          Controle de acesso;

3)          Integridade;

4)          Confidencialidade; e

5)          Impedimento de Rejeição.

A importância da autenticação se deve a ser ela a responsável por diferenciar uma entidade de outra. Sem a mesma, todas as entidades têm de ser tratadas igualmente, ou cada uma deve simplesmente confiar que a outra é o que anuncia ser. Com a existência de um mecanismo de autenticação no qual se confie é possível controlar e, quando necessário, restringir o acesso de quem não está autorizado a efetuá-lo. E com a existência de um controle de acesso, associado à integridade, à confidencialidade e ao impedimento de rejeição se torna possível garantir, respectivamente, que a mensagem em trânsito ou recebida é idêntica à enviada, que somente as entidades autorizadas terão acesso a ela e que quando tiverem acesso, não poderão negar que o tiveram.

3.4.1)      AUTENTICAÇÃO

Autenticação significa estabelecer a prova da identidade. Este prova se dá com base em algo que a entidade a ser autenticada tenha e / ou saiba. Como já mencionado, é um serviço básico para que os demais serviços funcionem em harmonia.

3.4.2)      CONTROLE DE ACESSO

Este serviço visa garantir que uma entidade, se não autorizada para tal, não possa ter acesso ao recurso. Da mesma forma, este deve liberar a utilização do recurso às entidades autorizadas. Seu funcionamento é completamente baseado em um mecanismo de autenticação.

3.4.3)      INTEGRIDADE

A integridade tem como princípio impedir e / ou identificar que uma mensagem enviada tenha seu conteúdo modificado, por alteração, retirada ou inserção de dados, ou que a mesma seja reenviada sem autorização.

3.4.4)      CONFIDENCIALIDADE

Garantir a confidencialidade significa garantir que o conteúdo da mensagem não será revelado a uma entidade não autorizada.

3.4.5)      IMPEDIMENTO DE REJEIÇÃO

O serviço de impedimento de rejeição visa impedir a negação da solicitação e do recebimento do pedido de serviços através da prova das identidades das entidades envolvidas, da prova de que uma solicitação de serviço foi corretamente recebida e da prova de que determinada solicitação de serviço foi realmente enviada.

Com base nestes serviços avaliados e nos demais conceitos já apresentados, é realizada, daqui em diante, uma análise do funcionamento e das vulnerabilidades de segurança dos dois protocolos base da Arquitetura Internet, o IPv4 e o TCP, seguida de uma explanação sobre o IPv6 e seus respectivos melhoramentos, principalmente os relativos à proteção do tráfego de rede, cumprindo o restante dos objetivos anteriormente mencionados.

4)                   IPv4

O protocolo IPv4 (IP version 4 - IP versão 4), como é conhecida a versão de número 4 do protocolo da camada inter-rede da Arquitetura Internet, é o mesmo protocolo utilizado desde que o NCP (Network Control Program) foi substituído pelo TCP / IP como base de funcionamento da ARPANET, no início da década de 80, tendo sido definido na RFC 791, criada por J. Postel, em 1981 [POSTEL 1981A]. Pode parecer incorreto que a RFC que define o protocolo IP, um dos fundamentos da Internet, tenha um número seqüencial tão alto, mas foi realmente isto que aconteceu. O processo de desenvolvimento do Modelo Internet foi longo e as primeiras RFCs tinham que tratar de questões ainda mais fundamentais que a padronização do funcionamento dos protocolos. Um bom exemplo disso é o fato de que a primeira RFC a ser considerada um padrão a ser seguido é a de número seqüencial 733 [RABELO 1998]. Também chama a atenção que a primeira versão seja a de número 4. Isto acontece pelo mesmo motivo exposto anteriormente, pois, durante o processo de definição, as versões 1, 2 e 3 não chegaram a ser totalmente formalizadas e, conseqüentemente, não foram sequer utilizadas [COMER 1995].

Uma vez que o IP é principal protocolo do nível inter-rede da Arquitetura TCP / IP e que este nível corresponde à camada de rede do Modelo OSI, são exatamente as funções e os serviços correspondentes a este nível os executados pelo IPv4. Portanto, a partir deste ponto é examinado o funcionamento do mesmo.

4.1)           FUNDAMENTOS

As características mais importantes do Internet Protocol, examinadas mais adiante, são as seguintes:

1)          Endereçamento hierárquico;

2)          Filosofia de transmissão por datagrama não-confiável;

3)          Fragmentação e remontagem de datagramas com facilidade;

4)          Identificação do protocolo de transporte (TCP ou UDP) utilizado;

5)          Indicação do nível de confiabilidade da rede necessário para o datagrama;

6)          Identificação da importância do datagrama;

7)          Descarte e controle do tempo de existência dos pacotes feito nos internet gateways (roteadores);

8)          Roteamento adaptativo nos roteadores;

9)          Indicação da urgência de entrega do datagrama; e

10)      Identificação da ocorrência, ou não, de pacotes na mesma direção.

A unidade de informação do IP é um pacote, também chamado datagrama, uma vez que este trabalha na filosofia não-orientada à conexão e, conseqüentemente, não se utiliza de circuitos virtuais. A função do IP é providenciar para que os datagramas sejam enviados de um host (um equipamento conectado à Internet) a outro. Isto é chamado de roteamento e para efetuá-lo é utilizada a tecnologia de chaveamento de pacotes (também designada como comutação de pacotes) com datagrama não-confiável, a ser descrita adiante, fazendo do o Internet Protocol a parte mais fundamental de uma rede enquadrada no Modelo Internet. Portanto, todos os dados devem ser acondicionados em pacotes para serem enviados pela rede e roteados para seus destinos.

Em uma rede simples, na qual exista apenas um segmento de rede, não há a necessidade de um roteador e todo o tráfego é enviado a todas as máquinas conectadas. Os pacotes somente são enviados para roteadores quando o seu destino está em um outro segmento de rede. Isto acontece pois em um segmento todas as máquinas conectadas recebem os pacotes enviados pela rede. Entretanto, uma máquina de um segmento não recebe os datagramas enviados por um equipamento de outro segmento sem que entre ambos haja uma máquina , chamada roteador, que faça a conexão entre as duas redes.

Para que o pacote chegue ao destino é necessário que cada host seja identificado. É esta a função do endereço IP. Cada equipamento em uma rede conectada a Internet precisa de pelo menos um endereço IP, que consiste de um número de trinta e dois bits, permitindo que mais de quatro bilhões de pontos de rede sejam endereçados. No entanto, como será abordado adiante, em função da divisão dos IPs em classes, da alocação de alguns endereços para funções especiais e da impossibilidade de se utilizar alguns valores em determinados grupos de oito bits, a quantidade de endereços disponíveis é significativamente menor [DAVIS 1998].

4.2)           CLASSES DE ENDEREÇOS IP

Com o objetivo de simplificar a representação do endereço IP foi criada a notação decimal de pontos (dotted decimal notation, também chamada dotted quad - quadra de pontos) que representa os trinta e dois bits em em quatro grupos de números decimais, variando de 0 até 255, separados por pontos, conforme exemplificado no esquema 12, tornado a representação de um endereço IP significativamente mais objetiva e menos sujeita a erros.

11111110000001000010101000000110 => 254.4.42.6

(12) NOTAÇÃO DECIMAL DE PONTOS

Um endereço IP internamente é dividido em duas partes, a netid (identificação da rede) e a hostid (identificação da máquina). De acordo com os valores que estas partes podem assumir, os endereços são separados em cinco classes, como mostra a figura 13.

(13) CLASSES DE ENDEREÇOS IP [GARCIA 1999]

A netid identifica a uma rede, enquanto a hostid identifica os respectivos hosts, os nós, desta rede, fazendo com que o endereçamento seja hierárquico. Cabe salientar, no entanto, que um host não corresponde necessariamente a uma máquina individual. Ao contrário, geralmente um host é um equipamento central ao qual estão ligadas as várias máquinas de um segmento de rede.

Das cinco classes mencionadas anteriormente, duas, a "D" e a "E", são reservadas para funções especiais e somente três, a "A", a "B" e a "C", são usadas para o endereçamento propriamente dito (sendo este um dos fatores de diminuição da quantidade de endereços disponíveis).

4.2.1)      A CLASSE "A"

Os endereços da classe “A” são usados para redes extremamente grandes, podendo ter 16.777.214 hostids. O primeiro byte representa o número da rede, enquanto que os três bytes restantes especificam o número do host. O bit mais significativo do primeiro byte é colocado em 0 (zero), os 7 seguintes identificam a rede e os 24 restantes (segundo, terceiro e quarto bytes) identificam hosts. Este formato permite definir até 128 redes classe “A”, mas como os valores 0 (zero) e 127 não são válidos a quantidade correta é de 126 redes. Devido a esta pequena quantidade, não há mais endereços desta classe disponíveis.

4.2.2)      A CLASSE "B"

Na classe “B” os primeiros dois bytes representam o número da rede, e os dois bytes restantes especificam o número do host. Os 2 bits mais significativos do primeiro byte são colocados em 10; os próximos 14 bits especificam o endereço da rede e os 16 bits restantes (terceiro e quarto bytes) especificam o endereço do host. Desta forma, é possível ter 16.383 redes classe “B” e 64.534 hosts para cada uma delas.

4.2.3)      A CLASSE "C"

Na classe “C” os primeiros 3 bytes representam o número da rede e o quarto byte representa o número do host. Os três bits mais significativos do primeiro byte são colocados em 110; os 21 bits seguintes especificam o número da rede e os 8 bits restantes (quarto byte) especificam o número do host. Esta classe permite 2.097.151 de redes e 253 hosts para cada uma destas redes, pois os endereços terminados em 0 (zero), 1 e 255 são reservados.

4.2.4)      A CLASSE "D"

Na classe “D” os quatro bits mais significativos do primeiro byte são colocados em 1110, e os 28 bits restantes especificam um endereço especial de destino designado como multicasting / broadcasting address. Estes tipos de endereço são utilizados na transmissão simultânea de um ou mais pacotes, respectivamente, para um grupo multicast (que são um conjunto de um ou mais hosts identificados por este endereço especial), ou para todas as máquinas do host.

4.2.5)      A CLASSE "E"

Na classe “E” os 4 primeiros bits do primeiro byte são colocados em 1111. Reservada originalmente para necessidades futuras, ainda não teve a sua utilização definida.

Os intervalos destinados para cada classe não são inteiramente utilizados, possuindo vários endereços reservados para usos especiais, além daqueles já citados, sendo este outro dos fatores que determinam a diminuição da quantidade de endereços IP disponíveis.

É através dos endereços IP que o protocolo efetua a transmissão de dados pela rede, mas, além dos endereços IP, outras informações também são utilizados para isto. Estas outras informações, juntamente com os dados transmitidos em si, compõem um datagrama IP.

4.3)           FORMATO DO DATAGRAMA IP

O datagrama IP é a unidade básica de dados no protocolo IP, estando dividido em duas áreas, uma área de cabeçalho e outra de dados. Na figura 14 pode ser visto como está dividido o cabeçalho. O campo de dados, que nada mais é do que a unidade básica do nível transporte, denominada segmento, encapsulada (ou seja, um segmento TCP ou UDP), começa imediatamente após o campo padding do cabeçalho IP.

(14) CABEÇALHO DO DATAGRAMA IP [POSTEL 1981A]

O cabeçalho contém toda a informação necessária para que o pacote IP seja corretamente identificado e roteado. A seguir encontra-se uma descrição da função de cada um dos campos do mesmo:

4.3.1)      VERSION - VERSÃO

Este campo, composto de quatro bits, contém a versão do protocolo IP utilizada para criar o datagrama, atualmente a 4. Quando uma máquina recebe um pacote com uma versão incompatível com a sua ela o descarta para evitar que uma interpretação errônea possa acontecer.

4.3.2)      IHL - TAMANHO DO CABEÇALHO INTERNET

Esta sigla significa Internet Header Length. O campo armazena o comprimento do cabeçalho, medido em palavras de 32 bits, e é composto de 4 bits. O cabeçalho tem tamanho variável devido a possibilidade de o campo option não ter conteúdo de tamanho fixo.

4.3.3)      SERVICE-TYPE – TIPO DE SERVIÇO

Com tamanho de 8 bits, este campo especifica como o datagrama deve ser manejado e subdividido em cinco campos:

1)          Precedence (precedência), com 3 bits, indica a precedência de datagramas, podendo assumir os valores no intervalo entre 0 (zero), para precedência normal (menor importância relativa), e 7, para controle da rede (maior importância relativa);

2)          D (Delay - Retardo), com 1 bit, quando assume valor 1, indica que o pacote deve sofrer baixo retardo;

3)          T (Throughput – Taxa de transferência), com 1 bit, quando ligado, solicita que o datagrama deve ser transmitido por rede com alta taxa de transferência;

4)          R (Reliability - Confiabilidade), com 1 bit,  indica, quando assume valor 1, que o pacote deve ser transferido por rede com alta confiabilidade; e

5)          UNUSED, com os 2 bits restantes, não é propriamente um campo, mas apenas um preenchimento para ocupar todos os bits do byte.

Como não é possível que estes tipos de serviços sempre sejam oferecidos, já que dependem das condições física da rede, eles funcionam como uma sugestão de uso e não como uma regra.

4.3.4)      TOTAL-LENGTH – TAMANHO TOTAL

Este campo tem 16 bits de comprimento e indica o tamanho total do datagrama medido em bytes, incluindo cabeçalho e dados. Conseqüentemente o tamanho máximo do pacote IP é de 64 Kb (216 bytes = 65.535 bytes).

4.3.5)      IDENTIFICATION - IDENTIFICAÇÃO

Composto de 16 bits, este campo contém um número inteiro único para cada datagrama e permite ao destinatário saber a que datagrama pertence um fragmento. Um fragmento é gerado quando um pacote IP necessita ser transmitido por uma rede cujo tamanho máximo suportado é menor que o tamanho do próprio pacote. Quando possível, este é então fragmentado em pacotes menores. Caso não seja possível a fragmentação, o datagrama é descartado.

4.3.6)      FLAGS - MARCADORES

O campo flag é formado por 3 bits que, individualmente, marcam determinadas situações do datagrama:

1)          Bit 1 (chamado de DF, que significa Don't Fragment - Não Fragmentar) ligado indica que o pacote não pode ser fragmentado;

2)          Bit 2 (chamado de MF, que significa More Fragments - Mais Fragmentos) ligado significa que o fragmento pertence ao meio do pacote do qual se originou; e

3)          Bit 3 ligado indica que o fragmento é último componente do pacote do qual foi originado.

4.3.7)      FRAGMENT OFFSET – DESLOCAMENTO DO FRAGMENTO

Com tamanho de 13 bits, o campo em questão indica a posição do fragmento em relação ao pacote do qual se originou.

4.3.8)      TTL – TEMPO DE VIDA

Esta sigla significa Time To Live. O campo, que tem comprimento de 8 bits, especifica o tempo em segundos que o datagrama está permitido a permanecer na rede (máximo de 255 segundos). Gateways e hosts que processam o datagrama devem decrementar o valor do campo TTL e removê-lo quando seu tempo expirar.

4.3.9)      PROTOCOL - PROTOCOLO

Com 8 bits de comprimento especifica qual protocolo de alto nível foi usado para criar a mensagem que está sendo transportada na área de dados do datagrama, por exemplo, se o conteúdo da área de dados é um segmento TCP ou UDP.

4.3.10)HEADER-CHECKSUM – VERIFICADOR DO CABEÇALHO

Este campo, composto de 16 bits, é usado para assegurar a integridade dos valores do cabeçalho, mas não permite verificar a situação da área de dados.

4.3.11)SOURCE ADDRESS – ENDEREÇO DE ORIGEM

Aqui, neste campo de 32 bits, é registrado o endereço IP de origem do pacote, composto pela netid e pelo hostid, de acordo com uma das quatro classes apresentadas anteriormente.

4.3.12)DESTINATION ADDRESS – ENDEREÇO DE DESTINO

Já neste campo, também de 32 bits, é registrado o endereço IP do destinatário do pacote. Como acontece com source address, ele é composto pela netid e pelo hostid, de acordo com uma das quatro classes apresentadas anteriormente.

4.3.13)OPTIONS - OPÇÕES

Este campo é um campo opcional. Além disso, mesmo quando utilizado não apresenta um tamanho predeterminado. Seu comprimento varia de acordo com as opções sendo utilizadas. É usado para informações de segurança, roteamento na origem, relatório de erros, depuração, fixação da hora, etc. Este campo proporciona basicamente uma saída para que as versões subsequentes do protocolo incluam informações não presentes no projeto original, para que os pesquisadores experimentem novas idéias e para evitar a alocação de bits do cabeçalho a informações raramente necessárias.

4.3.14)PADDING - PREENCHIMENTO

Este campo, com tamanho de 8 bits, é usado como complemento do campo options.

Os campo options, padding (quando utilizados) e flags podem servir tanto para identificação do pacote quanto para o seu roteamento. Para a identificação do datagrama, os campos mais importantes são o version, IHL, total lenght, identification, fragment offset, protocol e header checksum. Já para o roteamento, os campos principais são o type of service (embora praticamente não seja levado em conta), TTL, source address e destination address.

4.4)           ROTEAMENTO

Para que um protocolo roteável tenha uma capacidade de roteamento eficiente o endereço deve ser composto de duas partes. Os endereços IP apresentam dois componentes: um componente de rede (netid) e um componente de nó (hostid).

O roteamento IP consiste em decidir para onde enviar um datagrama baseando-se nos campos endereço IP de destino, flags e, quando possível, também nos campos type of service, options e padding contidos no datagrama. Como a Internet é composta de múltiplas redes, chamadas de hosts, ou nós, interconectadas por computadores chamados internet gateways, cada um deles com conexão para duas ou mais redes, cabe ao nível inter-rede decidir, de acordo com os campo mencionados, para qual destes dois tipos de máquina cada datagrama deve ser enviado (vale lembrar que a diferença entre um internet gateway e um host é que este último é a conexão de uma rede com a Internet, enquanto aquele interliga dois ou mais hosts). Portanto, o roteamento do datagrama IP é dividido em dois tipos, o roteamento direto e o roteamento indireto.

4.4.1)      ROTEAMENTO DIRETO

Neste tipo de roteamento a transmissão do datagrama é diretamente de uma máquina à outra. Duas máquinas podem trabalhar em roteamento direto somente se ambas estão no mesmo segmento de rede. A transmissão de um datagrama IP entre duas máquinas numa mesma rede física não envolve um gateway. O transmissor encapsula o datagrama em um frame (quadro) do nível de enlace, liga o endereço IP destino ao endereço físico correspondente e envia o quadro resultante diretamente ao destino. Na verdade o pacote não é enviado ao host, mas é enviado a todas as máquinas do segmento de rede, ficando isolado da Internet pelo host. Para saber se a máquina destino está no mesmo segmento de rede é feita uma comparação entre os endereços IP de origem e de destino. Caso ambos campos identifiquem o mesmo segmento significa que o datagrama pode ser enviado diretamente sem ter que passar por um internet gateway.

4.4.2)      ROTEAMENTO INDIRETO

Este tipo de roteamento é mais complexo que o roteamento direto já que o remetente deve identificar um gateway ao qual o datagrama pode ser enviado, devendo este gateway, em seguida, enviar o datagrama a rede destino. Quando um host necessita enviar um pacote a outro host, de uma outra rede, ele encapsula este datagrama em frame do nível de enlace e o envia a um gateway ao qual esteja conectado. Uma vez que o quadro chega ao gateway, o datagrama é retirado do encapsulamento e as rotinas de roteamento IP selecionam o próximo gateway que será parte do trajeto que levará o datagrama ao host destino, sempre decrementando o campo TTL para evitar que um pacote fique circulando eternamente pela rede. Para que um gateway envie um datagrama ao gateway ou host adequado e para que um host determine qual gateway utilizar para um destino determinado, é necessário um algoritmo de roteamento capaz de processar as informações das tabelas de roteamento.

4.5)           TABELAS DE ROTEAMENTO

Um algoritmo de roteamento IP usa uma tabela de roteamento em cada máquina que armazena informações relativas aos possíveis destinos e às maneiras de chegar até eles. Tanto os hosts quanto os gateways têm tabelas de roteamento. Quando um deles necessita transmitir um datagrama, uma rotina de roteamento consulta a tabela de roteamento para decidir por onde enviar o datagrama.

A informação armazenada nas tabelas de roteamento é um conjunto de pares de endereços onde um componente é um endereço IP da rede destino e o outro é o endereço IP do próximo gateway no caminho até esta rede. Desta forma, uma tabela de roteamento em um determinado gateway somente especifica um passo do caminho deste gateway até a rede destino, não sendo possível determinar o caminho completo ao destino.

Nas tabelas de roteamento não é possível armazenar as informações de cada máquina destino, pois, além da impossibilidade de mantê-las atualizadas, haveria ainda as questões da enorme quantidade de espaço necessária para o armazenamento de toda esta informação e da grande capacidade de processamento adequada para efetuar as buscas em um tempo aceitável.

Embora todo este processamento aconteça no nível inter-rede ele não é realizado exclusivamente pelo protocolo IP. Este, apesar de ser o protocolo primário da camada inter-rede, não é o único. Há os protocolos secundários.

4.6)           PROTOCOLOS SECUNDÁRIOS

Alguns outros protocolos também são necessários para que outras funções importantes da camada inter-rede sejam exercidas, como o próprio roteamento, o controle de alguns tipos específicos de erros e a tradução de endereços IP em endereços de máquina e vice-versa. A seguir são mencionados os principais protocolos secundários do nível inter-rede com uma breve descrição dos mesmos:

4.6.1)      ICMP

O ICMP (Internet Control Message Protocol, numa tradução livre, "Protocolo de Mensagem de Controle da Internet") é utilizado para o envio de mensagens dos gateways para os hosts, ou entre os hosts, para o reporte de alguns tipos de erros e para sugestão de rotas a serem seguidas. A operação da rede é monitorada e, quando ocorre algo suspeito, este evento é relatado pelo ICMP, através de um pacote IP, usando uma das aproximadamente dez mensagens definidas. A seguir são listadas as principais mensagens ICMP:

1)          Network Unreachable (rede não alcançável);

2)          Host Unreachable (host não alcançável);

3)          Port Unreachable (porta não alcançável);

4)          Destination Host Unknown (host de destino desconhecido);

5)          Destination Network Unknown (rede de destino desconhecida);

6)          Echo Request (solicitação de eco);

7)          Echo Replay (resposta de eco); e

8)          Time Exceded for Datagram - TTL (tempo do pacote excedido).

4.6.2)      ARP

Para que sejam capazes de se comunicar, duas máquinas no mesmo segmento de rede devem conhecer o endereço de máquina, também chamado de endereço físico, uma da outra. É importante notar que este não é o endereço IP, chamada de endereço de rede, mas sim o endereço usado na camada inferior hierarquicamente no Modelo Internet.

A função do protocolo ARP (Address Resolution Protocol - Protocolo de Resolução de Endereço) é justamente transformar um endereço de rede em um endereço de máquina. Desta forma, o ARP permite que cada máquina monte, de acordo com a sua necessidade, uma tabela com o mapeamento entre os endereços IP e os endereços físicos do segmento de rede ao qual está conectada.

4.6.3)      RARP

Enquanto o ARP converte um endereço IP em um endereço físico, o protocolo RARP (Reverse Address Resolution Protocol - Protocolo de Resolução de Endereço Reverso) faz exatamente o contrário: transforma um endereço físico em um endereço de rede. A princípio isto pode parecer desnecessário, pois cada máquina deve saber o seu endereço IP. Entretanto, uma máquina diskless (sem disco) que seja inicializada pela rede não tem onde armazenar esta informação quando não está ligada. E é exatamente este o propósito do RARP, permitir que durante a inicialização esta máquina consulte um servidor RARP para saber o seu endereço IP.

4.6.4)      IGP

A denominação IGP (Interior Gateway Protocols) é um nome genérico para protocolos de roteamento que trocam informações a este respeito com gateways e hosts pertencentes ao mesmo sistema autônomo. Cabe esclarecer que um sistema autônomo é o nome dado a um conjunto de gateways e hosts que possuem uma entidade centralizada responsável por coordenar automaticamente a definição e a divulgação de rotas. Os principais representantes são:

1)          RIP (Routing Information Protocol);

2)          HELLO;

3)          IGRP (Internal Gateway Routing Protocol); e

4)          OSPF (Open Shortest Path First).

4.6.5)      EGP

Já EGP (Exterior Gateway Protocol) é um protocolo que permite a troca de informações de roteamento entre sistemas autônomos.

Além destes protocolos secundários, a camada inter-rede do Modelo Internet conta ainda com outros protocolos auxiliares como o IGMP, o IGP, o GGP, o BGP e etc.

O entendimento da camada inter-rede da Arquitetura Internet e, em particular, do protocolo IP, o principal protocolo deste nível, são aspectos fundamentais para a compreensão de como a utilização de uma rede baseada no Internet Protocol expõe seus usuários a riscos de segurança. Nos próximos parágrafos, uma vez que as mais importantes questões relativas a este protocolo já foram abordadas [STALLINGS 1995], são avaliadas as principais vulnerabilidades do mesmo, de forma a cumprir mais um dos objetivos específicos desta monografia.

4.7)           VULNERABILIDADES E PREVENÇÃO

A Internet expõe seus usuários a diversos tipos de risco. Uma vez que é baseada em uma arquitetura aberta e pública, qualquer pessoa tem acesso as suas especificações e, muitas vezes, as implementações dos softwares e hardwares utilizados para o seu funcionamento. Não é possível garantir que uma mensagem enviada vá chegar ao seu destino ou que não será alterada ou simplesmente lida durante o trajeto. A quantidade de ameaças é enorme e acontece nos vários níveis do Modelo Internet.

Nesta seção, como já foi mencionado anteriormente, serão analisadas as principais vulnerabilidades do protocolo IP [STALLINGS 1995] geradas ou pelo não cumprimento dos requisitos básicos de segurança de redes ou por falhas e situações não previstas (bugs) nas implementações das versões mais populares do mesmo, aquelas derivadas do 4.2 BSD Unix [BELLOVIN 1989].

4.7.1)      IP SNOOPING / IP SNIFFING

As técnicas de IP snooping e IP sniffing, na verdade, são a mesma técnica. São dois nomes para o mesmo mecanismo. Esta técnica, que explora o fato de a especificação do protocolo IP não levar em consideração os serviços básicos para segurança de rede, é a mais simples de todas e consiste em simplesmente monitorar os datagramas. Em outras palavras é visualizar o conteúdo dos pacotes que trafegam por uma rede. Apesar de ser simples e caracterizar uma ameaça passiva, pois nenhuma informação é alterada, é uma vulnerabilidade perigosa pois é quase sempre utilizada em conjunto com outras técnicas que, em geral, representam uma ameaça ativa, um ataque. O protocolo IP não é o único suscetível a esta ameaça, pois existem diversas ferramentas que tornam fácil a execução deste procedimento até para pessoas relativamente leigas, mais é o que mais sofre com ela justamente pela popularização da Internet e do protocolo TCP / IP. Como os dados geralmente são transmitidos em clear text (em texto puro, na forma como é gerado pelas aplicações, sem qualquer codificação) é possível usar esta técnica para ler mensagens e informações gerais de outros usuários e até senhas.

A defesa para esta ameaça é igualmente simples, mas de difícil implementação. Para evitar que o conteúdo do pacotes possa ser compreendido por entidades que não a remetente ou a destinatária é necessário prover um serviço de confidencialidade à rede. Atualmente utiliza-se pacotes de criptografia para a defesa contra este problema.

4.7.2)      MESSAGE REPLAY

Como acontece no IP snooping / IP sniffing, esta técnica, assim como todas as outras abordadas no presente capítulo, se baseia no fato de a especificação do IP não disponibilizar para seus usuários um ou mais dos serviços básicos de segurança de redes.

A retransmissão de mensagem consiste em gravar períodos de transmissão de uma rede e retransmitir em um determinado momento uma parte ou todo este tráfego para simular que esta comunicação esteja realmente acontecendo novamente. Desta forma é possível, por exemplo, capturar uma transmissão de requisição e fornecimento de senha de um usuário e utilizá-la, mais tarde, para simular que uma conexão à rede feita por este usuário, fazendo com que o intruso se passe por outro pessoa.

A defesa para este problema requer mecanismos de confidencialidade. A solução utilizada hoje também se baseia em mecanismos de encriptação.

4.7.3)      MESSAGE ALTERATION

A alteração de mensagem se baseia no fato de que o IP não provê nenhum mecanismo de integridade dos dados. Mesmo os campos do cabeçalho que são "protegidos" pelo campo checksum podem ser alterados pois o algoritmo de formação do mesmo é amplamente conhecido. Hoje em dia, a criptografia é o recurso utilizado como defesa contra esta vulnerabilidade.

4.7.4)      PACKET FILTERING

A filtragem de pacotes também se baseia na ausência de mecanismos de confidencialidade. Ela consiste em retirar da rede datagramas, ou provocar atraso na entrega dos mesmos, de acordo com o conteúdo de seus campos.

A defesa para este problema se baseia na utilização de serviços que garantam a confidencialidade dos dados.

4.7.5)      ADDRESS MASQUERADING

O mascaramento de endereço é utilizado para que uma entidade assuma a identidade de uma outra. Como no IP a autenticação se baseia em endereços e bastante fácil burlar o seu controle, pois não há dificuldade para um intruso experiente configurar uma máquina sobre a qual tenha controle como se fosse outra. A defesa para este tipo de ameaça consiste na utilização de mecanismos de autenticação mais eficazes que os oferecidos pelo IP.

4.7.6)      SESSION HIJACKING

O seqüestro, ou roubo, de sessão é um mecanismo bastante parecido com o IP spoofing, que é abordado no Capítulo 5. É considerado como um tipo de IP spoofing, no qual o intruso tem menos restrições, pois ele tem o controle de um nó na rede através do qual trafegam informações de uma conexão TCP em andamento. O intruso localiza então esta conexão já existente entre dois hosts e tenta ter o controle sobre ela. Monitorando conexão que está sendo efetuada o intruso é capaz de determinar os números de seqüência utilizados por ambos os hosts. Estes números são usados para identificar a conexão em cada host e, de posse deles, o intruso gera um tráfego que parece vir de um dos dois hosts, simplesmente "roubando" a sessão de uma das duas entidades envolvidas no processo. Ao fazê-lo, este obtém os mesmos privilégios de acesso que a entidade, a dona legítima da conexão, tinha. Como tem o controle sobre o nó da rede, o invasor então descarta a entidade original.

A proteção contra seqüestros de sessão, na prática, é extremamente difícil. Embora possa ser resolvido com mecanismos de autenticação ou de confidencialidade dos dados, o IP não os fornece naturalmente. Em geral, a melhor proteção é obtida com uso de criptografia.

O seqüestro de seção pode ser também considerado como uma vulnerabilidade do TCP e não do IP. Entretanto, ele se baseia numa deficiência do IP, a possibilidade de monitoramento do tráfego IP, sendo um exemplo da utilização da técnica de IP snooping / IP sniffing para ataques a uma rede. Apesar da semelhança com o que acontece no IP spoofing, que será abordado no Capítulo 5, onde o ataque se baseia fundamentalmente na possibilidade de se prever o número de seqüência do TCP, preferiu-se classificá-lo como sendo derivado de uma deficiência do IP, seguindo o consenso observado entre os principais autores consultados.

5)                   TCP

O TCP (Transmission Control Protocol - Protocolo de Controle de Transmissão), é um protocolo orientado à conexão que trabalha de forma full-duplex. Sua tarefa básica é possibilitar uma transmissão ordenada dos dados de um host para outro. Seu trabalho é verificar se os dados chegam de forma integra ao destino. Enquanto o IP apenas envia os dados sem qualquer controle extra, o TCP primeiro faz contato com o destino e depois configura e estabelece um caminho entre as duas máquinas, proporcionando uma conexão fim a fim (a camada de transporte da origem se comunica diretamente com a camada de transporte do destino), o que possibilita uma comunicação realmente confiável, isolando dos níveis superiores as questões de transmissão da rede. No nível inter-rede e nos inferiores a comunicação se dá somente entre pontos adjacentes da rede.

5.1)           FUNDAMENTOS

O principal objetivo do TCP é fornecer integridade de uma extremidade a outra para as mensagens que cruzam a rede em um datagrama IP. Estes pacotes IP poderiam chegar fora de seqüência e a qualquer momento pela rede, cabendo ao TCP montar outra vez os pacotes na ordem correta. Desta forma, é o TCP que está no comando da seqüência dos pacotes.

O TCP também administra o controle de fluxo, regulando a velocidade dos dados que são enviados de modo que o host receptor não precise se preocupar em ordenar cada pacote, pois um pacote somente é enviado quando o receptor está pronto para efetuar o recebimento.

Além dessas tarefas, este protocolo possibilita a detecção e a correção de erros, o que não é feito pelo IP. Quando um pacote com erro é detectado o receptor o descarta e aguarda que este seja retransmitido, pois a máquina de origem não receberá uma resposta referente ao sucesso de transmissão deste pacote. Da mesma forma, se um datagrama não é recebido ele é automaticamente retransmitido após um determinado tempo.

Finalmente, o Transmission Control Protocol ainda tem três funções: a compatibilização do tamanho dos segmentos de dados recebidos dos níveis superiores com o usado nos níveis inferiores, possibilitando transparência às aplicações em relação à rede; a multiplexação, que permite o compartilhamento da mesma conexão de rede por várias conexões de transporte, permitindo uma maior utilização desta quando há banda não utilizada; e o splitting, o oposto da multiplexação, possibilitando que mais de uma conexão de rede seja utilizada por uma única conexão de transporte, simulando um aumento da banda disponível para o transporte.

O funcionamento básico do TCP consiste em associar um número inteiro, chamado de porta de origem, a cada aplicação que solicita um serviço da rede. Da mesma forma a aplicação que vai prestar este serviço está também associada a um número inteiro, chamado porta de destino. Utilizando-se estas duas portas, em associação aos endereços IP de origem e de destino, a conexão entre a máquina de origem e a máquina de destino pode ser estabelecida. Como a combinação destes quatro elementos sempre resulta em um identificador único é possível que mais de uma aplicação possa utilizar o protocolo simultaneamente. O TCP utiliza-se então da multiplexação para fazê-lo.

Para ser capaz de executar todas as suas funções o TCP faz uso de uma série de campos presentes no cabeçalho de cada segmento, a unidade básica de informação do TCP. A seguir encontra-se uma descrição do formato de um segmento.

5.2)           FORMATO DO SEGMENTO TCP

Conforme pode ser visualizado na figura 15, um segmento TCP é composto de onze ou treze campos (dependendo do uso, ou não, dos campos opcionais), os quais encontram-se descritos nos parágrafos seguintes.

(15) CABEÇALHO DO SEGMENTO TCP [POSTEL 1981B]

5.2.1)      SOURCE PORT - PORTA DE ORIGEM

Composto de 16 bits, este campo é utilizado para a identificação de uma aplicação em execução na máquina solicitante do serviço e, em associação com o campo destination port, permite a multiplexação do fluxo de dados entre as camadas de transporte da origem e do destino.

Com o estabelecimento de mais de um destes canais virtuais formados entre as duas extremidades de uma comunicação é possível que várias aplicações de uma mesma máquina se utilizem da rede de forma simultânea.

5.2.2)      DESTINATION PORT - PORTA DE DESTINO

Igualmente composto de 16 bits, é utilizado de maneira análoga ao campo source port, com a diferença de que é utilizado para a identificação da aplicação na máquina provedora do serviço.

5.2.3)      SEQUENCE NUMBER - NÚMERO DE SEQÜÊNCIA

Este campo é composto de 32 bits e especifica o número de seqüência de dados no mesmo segmento.

É através deste número que se torna possível a seqüencialização.

5.2.4)      ACKNOWLEDGMENT - RECONHECIMENTO

Também chamado de acknowledgment number, que significa número de reconhecimento, este campo, que é formado por 32 bits, especifica o número de bytes que a origem espera receber na próxima transmissão.

5.2.5)      DATA OFFSET - DESLOCAMENTO DE DADO

O campo em questão é composto de 4 bits e contém um inteiro que especifica o início da porção de dados do segmento. Este campo é necessário uma vez que o campo options é opcional e, mesmo quando utilizado, varia seu comprimento dependendo de quais opções tenham sido incluídas, fazendo com que o tamanho do cabeçalho TCP varie.

5.2.6)      RESERVED - RESERVADO

Este campo, com tamanho de 6 bits, não tem função definida, sendo reservado para utilização futura.

5.2.7)      CODE BITS - BITS DE CÓDIGO

Estes 6 bits, usados de forma independente, determinam o propósito e o conteúdo do segmento. Quando ligados, têm os seguintes significados, a partir da esquerda para a direita:

1)          URG, indica que o campo urgent pointer é válido;

2)          ACK, sinaliza que o campo de acknowledgement number é válido;

3)          PSH, indica que este segmento solicita um PUSH, devendo ser passado para a aplicação tão logo possível;

4)          RST, sinaliza que a conexão deve sofrer um RESET;

5)          SYN, indica que deve ser estabelecida a sincronização do número de seqüência; e

6)          FIN, sinaliza que o transmissor finalizou a transmissão.

5.2.8)      WINDOW - JANELA

Através deste campo de 16 bits o TCP indica quantos dados ele tem capacidade de receber em seu buffer.

5.2.9)      CHECKSUM - VERIFICADOR

Utiliza seus 16 bits para verificar a integridade tanto do cabeçalho como dos dados do segmento TCP.

5.2.10)URGENT POINTER - PONTEIRO DE URGENTE

Este campo de 16 bits permite que o transmissor especifique que alguns dados são urgentes, o que significa que os dados serão enviados tão rápido quanto seja possível.

Esta informação é repassada ao IP, mas a sua utilização depende das condições de comunicação.

5.2.11)OPTIONS - OPÇÕES

Este campo é opcional e tem tamanho variável, sendo reservado para algumas opções especiais do TCP definidas em diversas RFCs.

5.2.12)PADDING - PREENCHIMENTO

Este campo, que também é opcional, é reservado para que sejam colocados parâmetros requeridos quando determinadas opções são utilizadas no campo options.

5.2.13)DATA - DADOS

Este campo corresponde a PDU (Protocol Data Unit - Unidade de Dados do Protocolo) do nível de aplicação. São, basicamente, os dados a serem transmitidos.

Da mesma forma que acontece em relação ao nível inter-rede, o entendimento da camada de transporte da Arquitetura Internet e, conseqüentemente, do protocolo TCP fornecem requisitos primordiais para a compreensão de como a utilização de redes dependentes do Transmission Control Protocol deixam seus usuários expostos a riscos de segurança. Uma vez que os principais aspectos relativos a este protocolo já foram abordadas [STALLINGS 1995], os próximos parágrafos, seguindo o modelo já apresentado no capítulo anterior, fazem uma avaliação das mais importantes vulnerabilidades nativas do mesmo, de forma a cumprir mais um dos objetivos específicos deste trabalho.

5.3)           VULNERABILIDADES E PREVENÇÃO

O protocolo TCP, além da sua vulnerabilidade intrínseca gerada por falhas e situações não previstas (bugs) nas implementações das suas versões mais populares (aquelas derivadas do 4.2 BSD Unix [BELLOVIN 1989]), a qual aqui serão analisadas, sofre ainda com mais um problema. Uma vez que o seu segmento é encapsulado pelo datagrama IP ele está, mesmo que indiretamente, exposto às mesmas condições de risco que deixam o IP vulnerável [STALLINGS 1995].

Desta forma, mesmo sendo este um protocolo com uma quantidade de erros de implementação, do ponto de vista da segurança, pequena, ele se mostra tão, ou mais, suscetível a ameaças que protocolo IP. Entretanto, como estas vulnerabilidades são provocadas pelo IP, as próprias medidas de prevenção tomadas para defender o nível inter-rede já são suficientes para eliminar as ameaças também na camada de transporte.

A seguir será analisado o caso da previsão do número de seqüência de um segmento TCP, a falha existente na implementação do mesmo.

5.3.1)      SEQUENCE NUMBER PREDICTION

A previsão de número de seqüência consiste em tentar adivinhar qual é o número de seqüência usado para o estabelecimento de uma conexão TCP que um host envia como resposta a uma solicitação de conexão feita por um host autorizado. Esta técnica também é conhecida como IP spoofing e, como já foi mencionado, é um tipo de seqüestro de seção. Mas é um seqüestro de uma sessão entre máquinas que têm um relacionamento de confiança entre si e que usam uma conexão de rede à qual o invasor tem acesso, mas da qual não tem o controle, representando uma situação semelhante a que já foi analisada no Capítulo 4, mas com uma série de complicações a mais. Ou seja, o invasor enfrenta mais restrições para efetuar o roubo, ou seqüestro, de uma sessão.

Para estabelecer uma conexão TCP / IP bem sucedida, primeiro as duas máquinas devem concluir um procedimento chamado handshake (aperto de mão), no qual trocarão informações de reconhecimento entre si. Dentre essas informações está o endereço de ambos os computadores, bem como os números de seqüência que as duas máquinas utilizarão ao estabelecerem a comunicação. Esses números de seqüência são exclusivos para a conexão entre essas duas máquina e se baseiam no horário do relógio interno do sistema, obedecendo a um padrão muito previsível. Em conseqüência disso, conhecendo-se os números de seqüência utilizados em uma conexão com uma máquina, é possível prever quais números de seqüência serão usados pela mesma máquina em futuras conexões. Para determinar o padrão utilizado, um violador simula a tentativa de estabelecer diversas conexões fazendo se passar pelo host autorizado. Mesmo que a resposta não vá para ele, e sim para o host autorizado, ele é capaz de ter acesso ao conteúdo da resposta e prever o número usado na próxima conexão. Em seguida ele tenta novamente estabelecer uma conexão e envia as informações do handshake como se fosse o host autorizado. Para evitar que o host autorizado, que é quem efetivamente recebe as respostas do host atacado, interfira na tentativa, o invasor provoca a queda do host autorizado ou espera que ele saia do ar por algum motivo qualquer. Após algumas tentativas a probabilidade indica que o invasor tem sucesso em acertar o número de seqüência do host atacado, conseguindo estabelecer a conexão.

São três as possíveis defesas para este tipo de ataque. A primeira consiste em tornar o número de seqüência randômico de forma a impedir que seja previsível. A segunda é usar criptografia para codificar o número de seqüência antes de enviá-lo pela rede. E a terceira faz uso de um sistema de log para registrar e avisar o administrador do host atacado sobre as repetidas tentativas de estabelecimento de conexão sem sucesso, já que esta é uma situação atípica.

Assim como acontece no nível inter-rede, onde o IP não é o único protocolo, apesar de ser o principal, na camada de transporte da Arquitetura Internet o TCP também não está só, pois o protocolo UDP é responsável por parte do tráfego gerado por este nível.

6)                   UDP

Uma vez que o objetivo do presente estudo é avaliar questões sobre segurança na suite de protocolos TCP / IP, considerando aqui tanto o IPv4 quanto o IPv6, pode parecer incorreto, ou fora do escopo, que haja um capítulo sobre um terceiro protocolo denominado UDP (User Datagram Protocol - Protocolo de Datagrama do Usuário). Entretanto, apesar de não ser o principal protocolo do nível de transporte, o UDP não pode ser considerado um protocolo auxiliar como acontece, por exemplo, com o ICMP, ou com o ARP, em relação ao IP. Mesmo não sendo o principal, o UDP tem, basicamente, a mesma função do TCP na camada de transporte. A diferença reside nos benefícios a mais, em termos de qualidade de serviços, que o TCP proporciona e que fazem dele o protocolo mais usado na camada a qual pertence (com uma larga vantagem), sendo, conseqüentemente, o principal do seu nível. Desta forma, o UDP é considerado parte da suite TCP / IP, estando, conseqüentemente, englobado pelo escopo desta monografia.

6.1)           FUNDAMENTOS

O UDP é bastante mais simples que o TCP. Ao contrário do que acontece com este, aquele é não-orientado à conexão, não faz checagem de erro, não garante a entrega dos pacotes, nem é capaz de ordená-los e, portanto sofre basicamente das mesmas deficiências do IP apresentadas no último parágrafo do Capítulo 4. Entretanto, da mesma forma que acontece com o IP, estas características, a princípio indesejáveis, são previstas e propositais. Enquanto o IP não exerce estas funções porque elas não fazem parte do seu papel, o UDP não oferece, além da multiplexação, nenhum dos serviços disponibilizados pelo TCP porque, em determinadas situações, os benefícios advindos da maior complexidade do TCP não são necessários. Conforme já foi sucintamente mencionado anteriormente, alguns serviços do nível de aplicação, aqueles cuja informação transmitida cabe em um único datagrama, ou não é sensível a erros, a perdas, à duplicação ou à ausência de ordenação dos pacotes IP, simplesmente não têm vantagem alguma em utilizar o TCP. Em função da menor complexidade, o processamento e a utilização do UDP têm um impacto significativamente menor sobre a rede em termos de recursos consumidos em relação ao TCP. Assim, estes serviços do nível de aplicação, em geral bastante simples, tiram vantagem do menor custo de utilização do UDP, sendo este o motivo básico para que ele continue sendo utilizado. A simplicidade do UDP é tão grande que, se não fosse a sua capacidade multiplexar o acesso ao nível inter-rede, ele praticamente não acrescentaria nenhum outro serviço à rede além daqueles já oferecidos pelo protocolo IP. O UDP simplesmente envia o segmento de uma máquina, usando o endereço IP e a porta de origem, para outra máquina, usando o endereço IP e a porta de destino, sem estabelecer nenhum tipo de conexão, como é feito pelo TCP. Caso a rede consiga enviar o pacote IP, no qual este fragmento está encapsulado, sem erros, este chegará perfeitamente. Caso contrário, não há retransmissão.

Para que o UDP possa cumprir as suas tarefas ele utiliza-se uma estrutura bastante simples.

6.2)           O SEGMENTO UDP

O segmento UDP, como é mostrado na figura 16, é composto de apenas cinco campos, divididos em uma área de cabeçalho, com quatro campos de 16 bits, e outra de dados, ambas descritas a seguir:

(16) SEGMENTO UDP [POSTEL 1980]

6.2.1)      SOURCE PORT - PORTA DE ORIGEM

Como acontece no uso do TCP, este campo é utilizado para a identificação de uma aplicação em execução na máquina solicitante do serviço. Entretanto, o preenchimento deste campo é opcional, devendo conter zeros quando não utilizado. Apesar disto a multiplexação do fluxo de dados entre as camadas de transporte da origem e do destino ainda é possível, mesmo sem que uma conexão seja estabelecida. Desta forma é possível que várias aplicações de uma mesma máquina se utilizem da rede simultaneamente, pois estas aplicações, em geral, não necessitam de uma resposta da máquina destino.

6.2.2)      DESTINATION PORT - PORTA DE DESTINO

Este campo é utilizado de maneira análoga ao campo source port, com a diferença de que é de preenchimento obrigatório e de que é utilizado para a identificação da aplicação na máquina provedora do serviço.

6.2.3)      LENGTH - TAMANHO

Este campo contém um contador de bytes do segmento UDP que indica o tamanho deste, considerando tanto o cabeçalho quanto os dados. O valor mínimo é oito, sendo este só o comprimento do cabeçalho, e o máximo é de 64 Kb..

6.2.4)      CHECKSUM - VERIFICADOR

Este campo também é opcional. Ele é utilizado no receptor para verificar se o dado recebido esta correto. Um valor de zero indica que a verificação não será feita na recepção.

6.2.5)      DATA OCTETS - OCTETOS DE DADOS

Neste campo são colocados os bytes (octetos) correspondentes a informação a ser transferida, a PDU (Protocol Data Unit - Unidade de Dados do Protocolo) do nível de aplicação.

Ao contrário do que acontece em relação ao Internet Protocol e ao Transmisson Control Protocol, o User Datagram Protocol, apesar de toda a sua simplicidade, quando corretamente utilizado, não representa uma ameaça real de exposição dos usuários de uma rede a riscos de segurança [STALLINGS 1995]. Entretanto a compreensão de seus fundamentos é igualmente importante para que sua utilização seja feita de maneira correta e para que se perceba os motivos pelos quais a seu uso correto pouco expõe os sistema a vulnerabilidades nativas de segurança.

6.3)           VULNERABILIDADES E PREVENÇÃO

Assim como o segmento TCP, por estar encapsulado pelo protocolo do nível inter-rede, o Protocolo Inter-rede, o segmento UDP está vulnerável às mesmas ameaças que podem atingir o datagrama IP [STALLINGS 1995]. Entretanto, na prática, esta exposição de segurança não se consolida, pois, conforme definido em sua especificação [POSTEL 1980], o protocolo UDP não foi concebido para ser, e realmente não é, utilizado por aplicações que necessitem prover qualquer tipo de garantia para os dados sendo transferidos. Como já foi mencionado, o UDP somente é utilizado por aplicações em geral simples, e que não requerem cuidados com segurança e nem necessitam garantir a entrega correta do segmento. Quando é necessário algo robusto, o TCP deve ser, e é, o utilizado.

Agora que já são conhecidas as principais vulnerabilidades dos dois protocolos base da Arquitetura Internet, este estudo prossegue com a apresentação de uma breve análise, sempre com foco nos aspectos relativos à segurança, das modificações em estudo para o IP, uma vez que em um ou dois anos deverá iniciar-se o processo de migração em larga escala da sua versão atual, o IPv4, para o IPv6 [BRADNER 1995].

7)                   IPv6

A versão 4 do Internet Protocol (IPv4) é fundamentalmente a mesma em utilização desde que foi formalizada na RFC 791, em setembro de 1981, e submetida por J. Postel [POSTEL 1981A] à IAB. A longevidade deste protocolo demonstra o quão flexível e poderoso é o seu design. Desde a sua padronização a performance dos processadores aumentou duas ordens de grandeza, a quantidade típica de memória foi multiplicada por 32, a largura de banda nos internet backbones cresceram mais de 800 vezes, a tecnologia de redes locais emergiu e o número de internet hosts ultrapassou os 4 milhões [COMER 1995]. O protocolo IP foi capaz de acomodar cada uma destas mudanças. Entretanto, a sua capacidade de acomodação está chegando ao limite. Já em 1991, o IETF (Internet Engineering Task Force), ao analisar o crescimento exponencial da Internet, chegou a conclusão que a quantidade de endereços IP disponível se esgotaria por volta de 1994. Também constatou que os roteadores corriam o risco de não mais serem capazes de lidar com as gigantescas tabelas de roteamento devido as limitações do hardware da época, o que poderia acontecer ainda antes do esgotamento dos números IPs. Algumas medidas paliativas foram tomadas tanto para facilitar o roteamento quanto para racionalizar a distribuição de endereços IP, mas uma medida mais concreta e definitiva deveria ser tomada.

Várias entidades ao redor do mundo iniciaram então, em paralelo, pesquisas para a criação de uma nova versão do protocolo IP, o IPv6 (IP version 6 - IP versão 6 - também conhecido como IP6), uma vez que a de número 5 já havia sido destinada para o protocolo ST (stream, que significa "corrente", em alusão a idéia de um fluxo constante de datagramas IP), uma versão experimental que tinha o propósito de suportar serviços em tempo real (real time) na Arquitetura Internet [RABELO 1998]. Em função da natureza aberta da Internet, diversas propostas surgiram com o intuito de servir de base para a especificação da nova versão deste protocolo. Foi então escolhida a que propunha que as características gerais do IP fossem mantidas, mas, ao mesmo tempo, estendidas para que fosse possível suportar uma quantidade maior de endereços. Este design, conhecido como SIP (Simple IP - IP Simples), serviu como ponto de partida para uma proposta intermediária que adicionava características de outras propostas a sua especificação, sendo chamada de SIPP (Simple IP Plus - numa tradução livre, "IP Simples Estendido"). Esta sim foi a base para o IPv6. Curiosamente, em uma publicação da IAB, a entidade de padronização da Internet, esta versão acabou sendo incorretamente referenciada como a de número 7. Para desfazer a confusão gerada, a IETF passou a se referir à nova versão do protocolo como "IP - The Next Generation", ou, simplesmente, "IP Next Generation" (IP Nova Geração), abreviada como IPng, em referência a então popular série de televisão, "Jornada nas Estrela - Nova Geração" [COMER 1995]. Desta forma, a versão 6 do protocolo IP acaba podendo ser referenciada de três formas: IPv6, IP6 e IPng.

Apesar de os problemas de roteamento e de esgotamento dos endereços IP terem sido os principais motivadores para a criação do IPng, o crescimento da utilização da Internet demonstrava ser necessário aumentar a gama de recursos disponibilizados por este protocolo. E foram exatamente estes recursos os adicionados ao SIP para criação de SIPP. Se tornara importante que o Modelo Internet fosse estendido e esta era a oportunidade para que isto fosse concretizado. Entre outros aprimoramentos, a nova versão passaria a suportar aplicações real time, tornando obsoleta a ainda não formalizada versão 5, e deveria prover uma melhor segurança em relação ao IPv4, sendo este o foco do presente estudo. Entretanto, antes que sejam abordadas as questões específicas sobre a minimização das vulnerabilidades advindas da utilização do IPv6, será apresentada, de forma sucinta, uma visão geral das extensões do mesmo.

7.1)           APRIMORAMENTOS

Em primeiro lugar é importante destacar que, embora exista uma aceitação geral de que as características aqui abordadas farão parte das determinações finais para o novo IPv6, as definições apresentadas no decorrer dos próximos parágrafos ainda não estão completas e nem aprovadas em definitivo e, portanto, estão sujeitas a sofrerem modificações totais, ou parciais, e até a serem simplesmente descartadas.

Desta forma, a nova versão do protocolo IP traz consigo uma série de aprimoramentos capazes de solucionar quase a totalidade das deficiências da atual versão em relação às necessidades surgidas da disseminação do uso da Internet e das novas finalidades para as quais ela têm sido utilizada. Tudo isto sem perder a compatibilidade e a interoperabilidade com a atual versão, possibilitando que o processo de migração ocorra sem que seja necessária a mudança de todo a Internet de uma única vez. o que seria impraticável. Assim sendo, o IPv4 e o IPv6 coexistirão por um longo tempo, mesmo apesar do fato de que alguns campos daquele foram tornados opcionais ou, simplesmente, retirados do formato do datagrama IPv6, por serem relativos a características e funções não mais interessantes, ou que ficaram obsoletas e caíram em desuso.

A mais importante modificação é a que determina que um endereço IP passa a ser formado por 128 bits, o que aumenta a significativamente a quantidade de nós endereçáveis, permitindo uma a sua quantidade seja virtualmente inesgotável, pois passam a existir mais de 665 X 1021 endereços por metro quadrado do planeta Terra. Estes passam a ser escritos em 16 grupos de números decimais variando de 0 a 255. Esta nova representação também permite a existência de mais níveis hierárquicos, o que otimiza o roteamento e diminui o tamanho das tabelas de rotas.

O IPv6 passa a suportar que diferentes tipos de tráfego tenham prioridade diferentes de encaminhamento de acordo com a sensibilidade a atraso da aplicação que gerou os dados, implementando um conceito conhecido como QoS, de Quality of Service, que literalmente significa "Qualidade do Serviço". Isto possibilita a transmissão de multimídia e a execução de áudio e vídeo conferências, por exemplo, além de compatibilizar o IPv6 com a Internet2 (resumidamente uma rede TCP / IP com infra-estrutura para altíssimas velocidades) e com a tecnologia ATM.

Os equipamento com suporte ao IPv6, quando ligados a uma rede, passam a ter o seu endereço IP alocado e configurado dinamicamente, o que significa dizer que o IPv6 é auto-configurável e suporta a tecnologia PnP (Plug-and-Play - Plugue e Use). Isto também diminuiu significativamente o trabalho dos administradores de rede.

O multicasting, a possibilidade de se enviar um pacote IP a vários destinatários de uma única vez, recursos previsto para o IPv4 mas que não chegou a funcionar de forma ampla, está padronizado e disponível com uma série de vantagens do ponto de vista da configuração, diminuindo o trabalho dos administradores e dos usuários de redes.

Finalmente, o IPv6 padroniza serviços de segurança na camada inter-rede, o que é considerada a segunda mais importante mudança em relação ao IPv4 [BRADNER 1995]. Tão importante que fez surgir uma quarta denominação para versão 6 do protocolo IP, que além de ser chamado de IPv6, IP6 e IPng, também é referenciado como IPSec [MÓDULO 1999], onde Sec é uma abreviação de secure (seguro em inglês). Esta questão, uma vez que é um dos objetivos específicos deste trabalho, será abordada um pouco mais detalhadamente mais adiante.

Para suportar todas estas novas características o datagrama IPv6 sofreu uma grande reestruturação do seu formato. Alguns campos do pacote IPv4 foram mantidos, outros tornados opcionais ou retirados, enquanto novos campos também foram adicionados.

7.2)           FORMATO DO DATAGRAMA

Apesar do aumento do tamanho dos endereços IPv6 (o quádruplo em relação ao IPv4) e do próprio cabeçalho do datagrama IPv6 (o dobro do comprimento que tinha o do IPv4), a performance dos sistemas que processam o pacote não sofreu grande impacto. Ao contrário, em alguns casos, ficou mais rápida. Isto acontece por dois motivos. Em primeiro lugar, o cabeçalho, apesar de estar maior, agora tem tamanho fixo e está mais simples, sendo processado mais rapidamente em função disto. Além desta característica, embora tenha aumentado significativamente de tamanho, o endereço IP também passou a ter maior número de níveis hierárquicos, o que representa uma condição natural de otimização do funcionamento dos algoritmos de roteamento e de diminuição das tabelas de rotas [BRADNER 1995].

A seguir encontra-se o formato básico do novo cabeçalho do datagrama IPv6, na figura 17, seguido de uma breve descrição dos seus campos.

(17) CABEÇALHO DO DATAGRAMA IPv6 [DEERING 1995]

É importante destacar que o datagrama IP pode também ter em sua composição, além do cabeçalho básico e da área de dados, 1 ou mais cabeçalho de extensão caso seja indicado a existência das extensões do cabeçalho, o que constitui uma opção do campo next header, como será abordado mais adiante.

7.2.1)      VERSION - VERSÃO

Com tamanho de 4 bits, este campo indica a versão do protocolo, que é a 6.

7.2.2)      PRIORITY - PRIORIDADE

Também com tamanho de 4 bits, este campo indica a prioridade do datagrama e, juntamente com o campo flow label e com os cabeçalhos de extensão permite que seja implementado o conceito de QoS.

7.2.3)      FLOW LABEL - MARCA DE FLUXO

Este campo, que tem tamanho de 24 bits, informa para o roteador a rota a ser seguida, associando a prioridade e a velocidade necessárias ao datagrama de acordo com o conceito de QoS.

7.2.4)      PAYLOAD LENGTH - TAMANHO

O campo em questão, com 16 bits de tamanho, identifica o tamanho do datagrama, limitado a 64 Kb como no IPv4.

7.2.5)      NEXT HEADER - PRÓXIMO CABEÇALHO

Este campo, com 8 bits de comprimento, possibilita uma grande flexibilidade ao protocolo, permitindo até que ele seja expandido para suportar novos recursos sem que sejam necessárias modificações na estrutura do datagrama. Ele indica a existência, ou não, de outros cabeçalhos, os cabeçalhos de extensão, encadeados e também o tipo dos mesmos.

7.2.6)      HOP LIMIT - LIMITE DE HOSTS DE PASSAGEM

Com 8 bits, este campo indica o número máximo de hosts por onde o datagrama pode passar antes de ser descartado. Entretanto não guarda nenhuma relação com o tempo de permanência (TTL) do IPv4.

7.2.7)      SOURCE ADDRESS - ENDEREÇO DE ORIGEM

Este campo, de 128 bits, indica o endereço de origem do datagrama.

7.2.8)      DESTINATION ADDRESS - ENDEREÇO DE DESTINO

Este campo, de 128 bits, indica o endereço de destino do datagrama.

Uma vez a especificação do IPng ainda não foi totalmente concluída, estando até mesmo sujeita a mudanças, nem sequer testada de forma abrangente na prática (embora já existam algumas redes em fase de testes utilizando IPv6), torna-se necessário enfatizar que é impossível realizar uma abordagem aprofundada sobre a segurança e sobre as possíveis vulnerabilidades intrínsecas à implementação do mesmo.

7.3)           QUESTÕES SOBRE SEGURANÇA

A utilização comercial da Internet fez crescer a demanda por segurança na transmissão e recepção de dados. Até o IPv4 a segurança era oferecida somente coma adição de aplicativos auxiliares e ou serviços extras, na nativos da Arquitetura Internet. Para esta nova versão a segurança foi um pré-requisito. Foram, então, projetados mecanismos de proteção que permite  m a autenticação e a criptografia ao nível do IP. Estas opções, definidas pelo valor atribuído ao campo next header, podem ser usadas separadamente ou em conjunto, tornando os mecanismos de segurança bastante flexíveis e adaptáveis às mais diferentes necessidade de cada aplicação ou cada usuários. Ou seja, os mecanismos de segurança têm vários níveis de granularidade. Em função destas novas opções esta versão do IP também é referenciada como o IPSec (Secure).

A criptografia é proporcionada pela tecnologia conhecida com DES CBC (Data Encryption Standard - Padrão de Encriptação de Dados), é acionado pela atribuição do valor 50 ao campo next header. Isto indica que deve ser usado o IPv6 Encapsulating Security Header (numa tradução literal, "Cabeçalho de Encapsulamento de Segurança do IPv6"). Com a sua utilização garante-se a oferta de dois dos cinco serviços básicos de segurança abordados no Capítulo 3 [BRADNER 1995]:

1)          A confidencialidade, pois a codificação do datagrama impede que o seu conteúdo seja revelado a qualquer entidade que não tenha a chave de decriptação; e

2)          A integridade, já que o datagrama somente será decriptável caso não tenha sofrido alteração.

Já o mecanismo de autenticação, denominado IPv6 Authentication Header (Cabeçalho de Autenticação do IPv6), é acionado pela atribuição do valor 51 ao campo next header e assegura ao destinatário que o dados enviados são realmente do remetente indicado. Normalmente utilizando o mecanismo conhecido como MD5, esta extensão nega o acesso ao pacote, caso o remetente e destinatário não sejam identificados, e o libera, caso contrário. Este processo permite, então, que também sejam oferecidos dois dos serviços básicos de segurança analisados no Capítulo 3 [BRADNER 1995]:

1)          A autenticação, que é o próprio mecanismo em si; e

2)          A integridade, uma vez que, como o acesso ao pacote somente é permitido às entidades autenticadas, ele não é passível de alteração.

Os dois mecanismos abordados podem parecer insuficientes, a princípio. Entretanto representam um enorme avanço em relação ao IPv4. Neste não havia nenhum mecanismo nativo para o provimento de segurança. O simples fato de os datagramas serem sempre transportados em cleartext (texto puro, na forma original gerada pela aplicação e sem nenhuma codificação dos campos dos cabeçalhos) já possibilitava uma quantidade enorme de ameaças, até as passivas, nas quais os pacotes são simplesmente visualizados e monitorados. Estas extensões, mesmo só cobrindo três dos cinco serviços básicos de segurança em redes já serão capazes de minimizar a exposição da Internet às ameaças e eliminar o efeito da maior parte das vulnerabilidades intrínsecas ao IPv4 apresentados nesta monografia, desde que sejam corretamente ativadas pela aplicação com a utilização do campo next header.

         CONCLUSÃO

Um aspecto que chama a atenção na estrutura da Internet é a ausência de uma entidade que possa ser considerada proprietária da mesma. Ela simplesmente é mantida por um conjunto de organizações espalhadas ao redor do mundo sem que nenhuma seja fundamentalmente imprescindível para o seu funcionamento. Embora a maior parte de sua estrutura e do tráfego gerado tenha os Estados Unidos como localização geográfica, este país não é o dono da Internet. Atualmente, mesmo que os EUA acabassem com a Internet em seu território, ela ainda continuaria a existir, enfrentando enormes dificuldades, utilizando-se de rotas alternativas para interligar toda a Terra. A Internet ganhou vida própria e tem condições de se manter independentemente da vontade de qualquer entidade. Pelo mesmo princípio, quando algo não funciona com a Internet, não há ninguém a quem reclamar. Mas mesmo com todos estes riscos e com a ausência de uma organização central para cobrar mudanças ou reclamar de um e-mail que não chegou ao destino, a Internet á uma realidade na atualidade e já se tornou fundamental para o dia-a-dia de uma quantidade enorme de pessoas e organizações. Esta pessoas e organizações não podiam esperar que os problemas de segurança nativos do TCP / IP fossem resolvidos e simplesmente continuaram a utilizar a Internet auxiliados por ferramentas que fossem capazes de evitar que suas instalações ficassem tão expostas a estas vulnerabilidades. Com este objetivo, dezenas de mecanismos, ferramentas e produtos capazes aumentar o grau de confiabilidade da rede, como firewalls, filtros, proxies e protocolos de segurança como o SET e o SSL, entre outros, foram desenvolvidos, comercializados, conquistaram o mercado e os usuários e se tornaram padrões. Entretanto a Internet está agora diante de uma enorme mudança prestes a acontecer. O protocolo IPv6, sucessor da atual versão do protocolo IP, deve começar a ser utilizado em larga escala nos próximos dois anos e com isto trazer grandes melhorias sem comprometer o funcionamento da atual estrutura baseada na versão 4 do IP. Só que o mercado não pode esperar até agora e também não vai esperar mais dois anos. Ele continuará a encontrar soluções para seus problemas de segurança neste período que resta. Não há dúvida de que as melhorias em relação a garantia de proteção da informação que transita na Internet são significativas, mas será que elas serão aceitas pelo mercado como um novo padrão? O protocolo IPv6 retirou alguns campos do datagrama do IPv4 pois estes não tinham função. Seu uso, por diversos fatores, não tinha se tornado um padrão. Será que a mesma coisa não poderá acontecer com os mecanismos de segurança que serão disponibilizados com o IPv6. É natural para o ser humano e, conseqüentemente, para as organizações resistir a mudanças, principalmente quando estas mudanças implicam em abandonar uma situação que está funcionado. E não há como negar que, apesar de todas as vulnerabilidades da Internet, ela já vem sendo usado com sucesso para diversas atividades que necessitam de segurança. Será, então, que as pessoas e as organizações abandonarão os seus esforços e investimentos na infra-estrutura de segurança atual, e dos próximos dois anos, para adotar um novo modelo? Está é uma pergunta que, apesar de todas as evidências da qualidade dos novos mecanismos de segurança do IPv6 apontadas, nenhum estudo é capaz de responder. Só o tempo dirá...

         BIBLIOGRAFIA

1)          [ALBUQUERQUE 1999]       ALBUQUERQUE, João Carvalho. Redes de computadores. [online] Disponível na Internet via HTTP. URL: < http://www.geocities.com/Area51/Orion/9873/ redes/ >. Capturado em 24 de maio de 1999.

2)          [O GLOBO 19990426]         BALBIO, Marcelo. História passada a micro. O Globo: Informática etc. Rio de Janeiro, 26 - abril - 1999

3)          [BASTOS 1996]                  BASTOS, Cleverson & KELLER. Aprendendo a aprender: Introdução à metodologia científica. 8a ed. Petrópolis: Vozes, 1996, 104 p.

4)          [BELLOVIN 1989]               BELLOVIN, S. M. Security problems in the TCP / IP protocol suite. Computer Comunication Review. s. l., Volume 19, No 2, 32 - 48, abril - 1989. [online] Disponível na Internet via FTP. URL: < ftp://ftp.research.att.com/dist/ internet_security/ipext.ps.Z >. Capturado em 31 de maio de 1999.

5)          [BOLETINS 1999]               BOLETINS DE SEGURANÇA. [online] Disponível na Internet via HTTP. URL: < http://www.geocities.com/ SiliconValley/Network/1493/ >. Capturado em 15 de junho de 1999.

6)          [BRADNER 1995]                BRADNER, Scott O. & MANKIN, Allison. IPNG: Internet protocol next generation. Massachusetts: Addison Wesley, 1995, 307 p.

7)          [BROD 1999]                      BROD, Fernando Augusto Treptow; KRÜGER, Simoni & SEGATTO, Carlos Auri. ETFPEL: O TCP / IP e o processo de informatização. [online] Disponível na Internet via HTTP. URL: < http://esin.ucpel.tche.br/bbvirt/ pos/etfpel.htm >. Capturado em 06 de setembro de 1999.

8)          [BURDEN 1999]                  BURDEN, Peter. Communication Systems - CP3340. [online] Disponível na Internet via HTTP. URL: < http:// www.scit.wlv.ac.uk/~jphb/comms/ >. Capturado em 24 de maio de 1999.

9)          [CARDIM 1984]                  CARDIM, Ismael & HOUAISS, Antônio. Mini-Webster’s dicionário – Inglês / Português – Português / Inglês. Rio de Janeiro: Distribuidora Record de Serviços de Imprensa, 1984.

10)       [CG-GTS 1999-01-01]         COMITÊ GESTOR DA INTERNET / BRASIL – GRUPO DE TRABALHO EM SEGURANÇA DE REDES. Recomendação para evitar invasões – Recomendação 1999-01-01. [online] Disponível na Internet via HTTP. URL: < http://www.cg.org.br/recomendacao.htm >. Capturado em 12 de maio de 1999.

11)      [COMER 1995]                   COMER, Douglas E. Internetworking with TCP / IP volume I: Principles, protocols, and architecture. 3a ed. New Jersey: Prentice Hall, 1995, 613 p.

12)      [CORDEIRO 1998]              CORDEIRO, Roberto Cesar Serra. Apostila TCP / IP. s. l.: s. ed., Setembro - 1998, 104 p.

13)      [DAVIS 1998]                     DAVIS, Peter & LEWIS, Barry. Aprenda em 14 dias: Windows NT Server 4. Rio de Janeiro: Campus, 1998, 835 p.

14)      [DEERING 1995]                 Deering, S. & Hinden, R. RFC 1883 – Internet Protocol, Version 6 (IPv6) Specification. Dezembro de 1995. [online] Disponível na Internet via HTTP. URL < http://www.scit.wlv.ac.uk/rfc/rfc18xx/RFC1883.html >. Capturado em 28 de maio de 1999.

15)      [EDDINGS 1999]                 EDDINGS, Joshua. Como funciona a Internet. s. l.: Quark, s. d., 217 p.

16)      [FERREIRA 1999]               FERREIRA. Aurélio Buarque de Holanda. Novo dicionário da língua portuguesa. Rio de Janeiro: Nova Fronteira, s. d., 1517 p.

17)      [GARCIA 1999]                   GARCIA, Vinícius Jacques; MATHIAS, Eder Nicoletti; MORAES, Gonçalo Canabarro de & PINTO, Marcelo Cezar. TCP / IP – transport control protocol / internet protocol. [online] Disponível na Internet via HTTP. URL: < http://www.inf.ufsm.br/~mathias/tcp-ip/ >. Capturado em 10 de abril de 1999.

18)       [EXAME 1999-08]              GUROVITZ, Helio. Mundo digital: Já cerfou na internet? Exame. São Paulo, Ano 32, No 8, 118 - 121, 21 - abril - 1999.

19)      [EXAME 1999-12A]             GUROVITZ, Helio. Reportagem de capa: Planeta e. Exame. São Paulo, Ano 32, No 12, 148 - 159, 16 - junho - 1999.

20)      [EXAME 1999-12B]             GUROVITZ, Helio. Reportagem de capa: Planeta e. Exame. São Paulo, Ano 32, No 12, 148 - 159, 16 - junho - 1999. [online] Disponível na Internet via HTTP, acesso restrito. URL: < http://www.exame.com.br >. Capturado em 20 de junho de 1999.

21)      [HUGHES 1995]                  HUGHES JR, Larry J. Actually usefull internet security techniques. Indianapolis, Indiana: New Riders Publishing, 1995, 378 p.

22)      [KACEW 1997]                   KACEW, Enrique. Informatica: El fin de la miniaturización. Poder & Dinero. Bogotá, 08 - abril - 1997. [online] Disponível na Internet via HTTP. URL: < http://www.dinero.com/pydabr97/informa/fin/fin.htm >. Capturado em 02 de maio de 1999.

23)      [LEVINE 1996]                    LEVINE, John R. & BAROUDI, Carol. Segredos da internet. São Paulo: Berleley Brasil, 1996, 1133 p.

24)      [MACHADO 1992]               MACHADO, Francis B. & MAIA, Luiz Paulo. Introdução à arquitetura de sistemas operacionais. Rio de Janeiro: LTC - Livros Técnicos e Científicos Editora, 1992, 143 p.

25)      [MICROSOFT 1996]            MICROSOFT CORPORATION. Conceitos básicos de redes: Treinamento prático e individual para suporte às redes locais e de longa distância. Redmond: Microsoft Press, 1996, 824 p.

26)      [MÓDULO 1998A]               MÓDULO SECURITY SOLUTIONS. 4a Pesquisa nacional sobre segurança da informação – 1998.

27)      [MÓDULO 1998B]               MÓDULO SECURITY SOLUTIONS. 4a Pesquisa nacional sobre segurança da informação – 1998. [online] Disponível na Internet via HTTP. URL: < http:// www.modulo.com.br/noticia/pesquisa.htm >. Capturado em 25 de março de 1999.

28)      [MÓDULO 1999]                 MÓDULO SECURITY SOLUTIONS. NET.S@FE – Anexo – Introdução ao TCP / IP. [online] Disponível na Internet via HTTP. URL: < http://mingus.modulo.com.br/ ns6.htm >. Capturado em 15 de maio de 1999.

29)      [MONTEIRO 1992]              MONTEIRO, Mário A. Introdução à organização de computadores. Rio de Janeiro: LTC - Livros Técnicos e Científicos Editora, 1992, 312 p.

30)      [NEVES 1999]                    NEVES, Carvalho. Citação de documentos eletrônicos da internet. [online] Disponível na Internet via HTTP. URL: < http://www.geocities.com/Athens/Forum/1934/6citacao.html >. Capturado em 08 de abril de 1999.

31)      [NOVELL 1999A]                NOVELL. Novell academics: Introdução a intranet e internet. São Paulo: s. ed., s. d., 11 p.

32)      [NOVELL 1999B]                NOVELL. Novell academics: Introdução a redes de computadores. São Paulo: s. ed., s. d., 23 p.

33)      [PARKER 1996]                  PARKER, Tim. Teach yourselp TCP / IP in 14 days. 2a ed. s. l.: Sams Net, 1996, 512 p. [online] Disponível na Internet via HTTP, mediante cadastro prévio e gratuito. URL < http://www.pbs.mcp.com/ebooks/0672308851/ viewabookna.html >. Capturado em 08 de maio de 1999.

34)      [PINTO 1995]                     PINTO, Ana Clara & TAROUCO, Liane Margarida Rockenbach (Orientador). SEGREDE: Mecanismo para gerência de segurança em redes (Tese). Porto Alegre: Curso de Pós-Graduação em Ciência da Computação - Departamento de Informática - Universidade Federal do Rio Grande do Sul - UFRGS, 1995, 194 p.

35)      [POSTEL 1980]                  POSTEL, J. RFC 768 – User Datagram Protocol. Agosto de 1980. [online] Disponível na Internet via HTTP. URL < http://www.scit.wlv.ac.uk/rfc/rfc7xx/RFC768.html >. Capturado em 28 de maio de 1999.

36)      [POSTEL 1981A]                POSTEL, J. RFC 791 - Internet Protocol. Setembro de 1981. [online] Disponível na Internet via HTTP. URL < http://www.scit.wlv.ac.uk/rfc/rfc7xx/RFC791.html >. Capturado em 28 de maio de 1999.

37)      [POSTEL 1981B]                POSTEL, J. RFC 793 - Transmission Control Protocol. Setembro de 1981. [online] Disponível na Internet via HTTP. URL < http://www.scit.wlv.ac.uk/rfc/rfc7xx/ RFC793.html >. Capturado em 28 de maio de 1999.

38)      [RABELO 1998]                  RABELO, Alessandra Boaventura & LEITE, Henrique Barbosa (Orientador). Internet protocolo versão 4 para internet protocolo versão 6 (Monografia). Uberlândia: Bacharelado em Ciência da Computação - Instituto de Ciências Exatas e Tecnológicas - Centro Universitário do Triângulo - UNIT, 1998, 93p. [online] Disponível na Internet via HTTP. URL < http://www.bcc.facintr.com.br/ bcc2/monografia/monografias98/mono98/05021999.zip >. Capturado em 27 de maio de 1999.

39)      [O GLOBO 19990510]         RÓNAI, Cora. Antes da tragédia, o amor (Coluna publicada juntamente com a matéria "Mark Weiser, 1952 - 1999", escrita por John Markoff, do New York Times). O Globo: Informática etc. Rio de Janeiro, 10 - maio - 1999

40)      [SAMS 1997]                      SAMS Net. Maximum internet security: A hackers guide to protecting your internet site and network. s. l.: Sams Net, 1997, 928 p. [online] Disponível na Internet via HTTP, mediante cadastro prévio e gratuito. URL < http://www.pbs.mcp.com/ebooks/1575212684/viewabookna.html >. Capturado em 08 de maio de 1999.

41)      [SOARES 1995]                  SOARES, Luiz Fernando Gomes; LEMOS, Guido & COLCHER, Sérgio. Redes de computadores: Das LANs, MANs e WANs às Redes ATM. 2a ed. Rio de Janeiro: Campus, 1995, 705 p.

42)      [CALIDAD 1997]                 SOCIEDAD LATINOAMERICANA PARA LA CALIDAD. “Management experts” de A a Z. 03 - março - 1997. [online] Disponível na Internet via HTTP. URL: < http://www.qualidade.org/articles/mar97/3mar97.htm >. Capturado em 20 de março de 1999.

43)      [STALLINGS 1995]             STALLINGS, William. Network and internetwork security principles and practice. Englewood Cliffs, New Jersey: Prentice Hall, 1995, 462 p.

44)      [UFF 1999A]                       UNIVERSIDADE FEDERAL FLUMINENSE – Centro Tecnológico Escola de Engenharia – Departamento de Engenharia de Telecomunicações. Tecnologia de redes locais. s. l.: s. ed., s. d.

45)      [UFF 1999B]                       UNIVERSIDADE FEDERAL FLUMINENSE – Centro Tecnológico Escola de Engenharia – Departamento de Engenharia de Telecomunicações. Redes avançadas de telecomunicações – Volume I. s. l.: s. ed., s. d.

46)      [UFF 1999C]                       UNIVERSIDADE FEDERAL FLUMINENSE – Centro Tecnológico Escola de Engenharia – Departamento de Engenharia de Telecomunicações. Redes avançadas de telecomunicações – Volume II. s. l.: s. ed., s. d.

47)      [UFRGS 1999]                    UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL. Protocolos IP, TCP e UDP. [online] Disponível na Internet via HTTP. URL: < http://penta.ufrgs.br/Esmilda/ primeiro.html >. Capturado em 06 de setembro de 1999.

48)      [WHITE 1999]                     WHITE, Ron. Como funciona o computador. 3a ed. s. l.: Quark, s. d., 201 p.