MÓDULO DE: ESTRUTURA E FLUXO DA INFORMAÇÃO AUTORIA: GILBERTO OLIVEIRA Copyright © 2008, ESAB – Escola Superior Aberta do Brasil Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 1 Módulo de: Estrutura e Fluxo da Informação Autoria: Gilberto Oliveira Primeira edição: 2008 CITAÇÃO DE MARCAS NOTÓRIAS Várias marcas registradas são citadas no conteúdo deste módulo. Mais do que simplesmente listar esses nomes e informar quem possui seus direitos de exploração ou ainda imprimir logotipos, o autor declara estar utilizando tais nomes apenas para fins editoriais acadêmicos. Declara ainda, que sua utilização tem como objetivo, exclusivamente na aplicação didática, beneficiando e divulgando a marca do detentor, sem a intenção de infringir as regras básicas de autenticidade de sua utilização e direitos autorais. E por fim, declara estar utilizando parte de alguns circuitos eletrônicos, os quais foram analisados em pesquisas de laboratório e de literaturas já editadas, que se encontram expostas ao comércio livre editorial. Todos os direitos desta edição reservados à ESAB – ESCOLA SUPERIOR ABERTA DO BRASIL LTDA http://www.esab.edu.br Av. Santa Leopoldina, nº 840/07 Bairro Itaparica – Vila Velha, ES CEP: 29102-040 Copyright © 2008, ESAB – Escola Superior Aberta do Brasil Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 2 A presentação Este módulo busca apresentar aos alunos de forma clara, através de figuras, gráficos e sistemas, o funcionamento da engenharia de informação, bem como, apresenta modelos de desenvolvimento de sistemas de informação. Ao longo das 30 unidades do módulo, o aluno é convidado a compreender o que é engenharia de informação através de atividades, exercícios e participação nos fóruns. Bons estudos ! O bjetivo Apresentar ao aluno os conceitos e formas de usar as ferramentas de planejamento em engenharia de informação. E menta Conhecimento dos aspectos conceituais e práticos sobre informações aplicadas e Dados como recurso de informações da empresa. Interpretação de Sistemas de Informação, recursos usados e classificação. Engenharia da Informação - modelos de desenvolvimento de sistemas de informação; planejamento estratégico de informações; modelagem de dados; construção, implementação e manutenção de sistemas. Busca de compreensão de quais são os aspectos de segurança necessários aos sistemas de informação. Conhecimento da estrutura de acesso aos dados e as vantagens e desvantagens do banco de dados, das Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 3 operações críticas da manipulação de dados e definição de modelos de dados relacionais. Conhecimento das estruturas (conceituais e práticas) de Rede Neural e estabelecimentos de relações que possam processar informações com eficiência comparada ao Cérebro. S obre o Autor Especialista em Tecnologia e Gestão em Telecomunicações (MBA Telecomunicações) e Informática Educacional; graduado em Engenharia Elétrica (Bacharel) e Licenciatura Plena em Informática, Computação e Mecanografia e Processamento de Dados. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 4 S UMÁRIO UNIDADE 1 .............................................................................................................................. 8 A INFORMAÇÃO................................................................................................................... 8 UNIDADE 2 ............................................................................................................................ 15 ENGENHARIA DA INFORMAÇÃO (EI)............................................................................... 15 UNIDADE 3 ............................................................................................................................ 20 SISTEMA DE INTELIGÊNCIA ARTIFICIAL (IA) .................................................................. 20 UNIDADE 4 ............................................................................................................................ 26 REDE NEURAL ARTIFICIAL (RNA).................................................................................... 26 UNIDADE 5 ............................................................................................................................ 33 AGENTES INTELIGENTES EM REDES............................................................................. 33 UNIDADE 6 ............................................................................................................................ 37 PROTOCOLO TCP/IP ......................................................................................................... 37 UNIDADE 7 ............................................................................................................................ 44 TRANSMISSION CONTROL PROTOCOL (TCP) e USER DATAGRAM PROTOCOL (UDP) ............................................................................................................................................ 44 UNIDADE 8 ............................................................................................................................ 49 PROTOCOLOS DE GERÊNCIA ......................................................................................... 49 UNIDADE 9 ............................................................................................................................ 55 RELACIONAMENTOS ADMINISTRATIVOS ...................................................................... 55 UNIDADE 10 .......................................................................................................................... 62 DISPOSITIVO REMOTE MONITORING (RMON)............................................................... 62 UNIDADE 11 .......................................................................................................................... 69 SERVIDOR PROXY ............................................................................................................ 69 Exemplo: ............................................................................................................................. 73 UNIDADE 12 .......................................................................................................................... 74 ESTRUTURA DE DADOS................................................................................................... 74 UNIDADE 13 .......................................................................................................................... 80 LISTAS ENCADEADAS ...................................................................................................... 80 Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 5 UNIDADE 14 .......................................................................................................................... 88 HASH .................................................................................................................................. 88 UNIDADE 15 .......................................................................................................................... 90 BANCO DE DADOS ............................................................................................................ 90 UNIDADE 16 .......................................................................................................................... 96 DADOS ............................................................................................................................... 96 UNIDADE 17 ........................................................................................................................ 103 RELACIONAMENTOS ...................................................................................................... 103 UNIDADE 18 ........................................................................................................................ 109 ENTIDADE DE RELACIONAMENTO................................................................................ 109 UNIDADE 19 ........................................................................................................................ 115 MODELO RELACIONAL ................................................................................................... 115 UNIDADE 20 ........................................................................................................................ 122 ATRIBUTOS DE DADOS .................................................................................................. 122 UNIDADE 21 ........................................................................................................................ 130 OPERAÇÕES MATEMÁTICAS E CARTESIANAS ........................................................... 130 UNIDADE 22 ........................................................................................................................ 139 ÁRVORES......................................................................................................................... 139 UNIDADE 23 ........................................................................................................................ 145 SEGURANÇA DE INFORMAÇÕES .................................................................................. 145 UNIDADE 24 ........................................................................................................................ 151 O INIMIGO ........................................................................................................................ 151 UNIDADE 25 ........................................................................................................................ 156 ENGENHARIA SOCIAL ................................................................................................... 156 UNIDADE 26 ........................................................................................................................ 160 VÍRUS, WORMS E TROJANS .......................................................................................... 160 UNIDADE 27 ........................................................................................................................ 165 MEDIDAS DE SEGURANÇA ............................................................................................ 165 UNIDADE 28 ........................................................................................................................ 169 DoS ................................................................................................................................... 169 UNIDADE 29 ........................................................................................................................ 175 SISTEMAS ........................................................................................................................ 175 Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 6 UNIDADE 30 ........................................................................................................................ 183 SISTEMAS DE DETECÇÃO DE INSTRUÇÃO DE HOST ................................................ 183 GLOSSÁRIO ........................................................................................................................ 185 BIBLIOGRAFIA .................................................................................................................... 186 Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 7 U NIDADE 1 Objetivo: Conceituação de Informação, Fluxo, Dados, Engenharia da Informação, Sistemas, Poder da Informação. A INFORMAÇÃO Estamos em plena era da sociedade da informação. Usamos, absorvemos, assimilamos, manipulamos, transformamos, produzimos e transmitimos informação durante todo tempo, sendo por isso alterada constantemente. Apesar de não termos uma definição precisa do que é informação, a sabemos intuitivamente, mesmo sem conseguir descrevê-la. No contexto transmite algum significado às pessoas e empresas. No mundo dos negócios, as empresas de modo geral visam o lucro, o retorno dos capitais investidos. No âmbito competitivo as informações têm papel fundamental no sucesso empresarial. A informática é uma importante contribuição no gerenciamento da enorme Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 8 quantidade de informações diárias, sendo necessários critérios para selecionar e organizar as que realmente nos interessam. Um sistema de informações adequado e eficiente permite que uma maior quantidade de benefícios seja produzida, ou alta quantidade de serviços e clientes sejam atendidos, permitindo a previsão de situações e o planejamento para manuseá-las, fornecendo bases de dados consistentes, seguras e de qualidade, atendendo a melhor alocação dos recursos. Fluxo Pode ser definido como um tráfego unidirecional com um conjunto de identificação único de variáveis. Qualquer fluxo não contendo um pacote no período de 64 segundos é considerado ser um fluxo que expirou. Um fluxo no qual um pacote foi examinado no último segundo é considerado um fluxo conhecido. Podem ser: Fluxos unidirecionais: quando seus dados trafegam de A para B, tendo A e B como pontos finais, podendo ser uma subdivisão do fluxo bidirecional. Fluxos bidirecionais: quando seus dados trafegam de A para B e B para A, nos fornecendo uma percepção do comportamento individual dos protocolos, incluindo problemas que podem se manifestar nos backbones, mas que são mais difíceis de identificar nos pontos finais da rede. Dados como Recurso de Informações da Empresa Uma empresa informatizada informa e deposita seus dados setoriais e globais, que podem ser manipulados pelo seu sistema de informações corporativo e/ou restrito. Dados Modelados: deverão pertencer ao acervo da empresa, mantidos os requisitos de segurança e privacidade definidos na sua área de origem. Os dados deverão ser estudados no seu formato, na sua origem, meio, natureza e formação, e no seu relacionamento com outros dados. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 9 Dados Resguardados: deverão apresentar os requisitos básicos de integridade (garantia de sua veracidade lógica), segurança (define o seu estado físico e os seus aspectos de privacidade), e documentação. Todos são fundamentais nos processos decisórios de alta competitividade. Dados Disponibilizados: deverão possuir a liquidez de uma boa aplicação financeira, sem os seus riscos inerentes, ou seja, deverá existir um conjunto de ferramentas que permitam o acesso, a atualização, a consolidação, tabulação e a simulação de informações para os momentos inesperados de tomada de decisões. O Poder da Informação “O poder da informação dentro de uma empresa é proporcional a sua capacidade de ser compartilhada” (Robert Buckman, pai da gestão de conhecimento nas empresas). “É se tratando bem dos dados que se obtêm as melhores informações”. Essas definições nem sempre são observados em empresas que trocam a qualidade pelo imediatismo. A crescente evolução na busca do conhecimento levou cientistas a estudar formas de raciocínio, memorização e pensamento (formulação de hipóteses) para máquinas, algoritmos e sistemas, a fim de permitir, de forma integrada, o processamento de quantidades maiores de informação, liberando o homem de uma série de tarefas repetitivas como memorização, cálculos, e, mais recentemente, formulação de hipóteses. Sistemas É um conjunto de componentes que interagem para atingir um objetivo comum. Um sistema pode ser decomposto em sistemas menores denominados subsistemas. Deve-se considerar: • Os objetivos totais do sistema; • Ambiente do sistema; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 10 • Os recursos do sistema; • Os componentes do sistema e suas finalidades; • A administração do sistema. Objetivos Processo de Transformação Saídas Controle e Avaliação Entradas Retroalimentação Componentes de um sistema Sistemas de Informações: descreve um sistema automatizado (denominado Sistema de Informação Computadorizado, incluindo o seu processamento), ou mesmo manual (abrange pessoas, máquinas, e/ou métodos organizados para coletar, processar, transmitir e disseminar dados que representam informação para o usuário). Sistemas de Informações Gerenciais (SIG): ferramenta essencial para implementar a modernização da gestão da empresa ou instituição, que integra e consolida os dados operacionais e históricos de todos os demais sistemas corporativos, alimentando o processo de tomada de decisões com informações gerenciais e estratégicas. SIG “É um sistema baseado em computador que faz avaliações das informações para usuários com necessidades similares” (MCLEOD, 1993, p. 427). As informações são utilizadas por administradores ou não para tomada de decisões e para resolver problemas. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 11 “É um agrupamento organizado de pessoas, procedimentos, banco de dados e dispositivos usados para oferecer informações de rotina aos administradores e tomadores de decisões” (STAIR, 1998, p. 38). Os níveis de decisão obedecem à hierarquia existente na empresa: • Nível estratégico; • Nível tático; • Nível operacional. A decisão que é tomada em cada nível requer um diferente grau de agregação da informação. Sistemas de Informações de Banco de Dados: organizar as informações em Banco de Dados que se compõe essencialmente de arquivos de dados (data base), conjunto de programas e linguagem de exploração. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 12 Estrutura de um Sistema Engenharia da Informação (EI) É um conjunto de técnicas e lógicas formais que englobam as técnicas de engenharia de software de forma diferente. É a aplicação de um conjunto interligado de técnicas formais de planejamento, análise, projeto e construção de Sistemas de Informações (SI) sobre uma organização como um todo ou em um dos seus principais setores, com o uso de ferramentas automatizadas que permitem planejar, analisar, projetar, construir e conjugar sistemas de processamento de dados, de forma integrada: • Dados: fornece a base de sustentação das informações necessárias para a sobrevivência da empresa e para suas decisões gerenciais. • Atividades: nos aspectos funcionais, sustenta os Processos Gerenciais e as atividades que devem ser exercidas para que a empresa cumpra sua Missão e atinja seus objetivos, metas e desafios. • Tecnologias: referencia os recursos tecnológicos e as ferramentas de que a empresa dispõe para tornar permanente a sua existência e para dar sustentação à sua base de dados e à execução de suas atividades. • Pessoas: relacionada com os recursos humanos disponíveis para o desenvolvimento dos projetos da empresa. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 13 ENGENHARIA DA INFORMAÇÃO Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 14 U NIDADE 2 Objetivo: Conhecimento das fases e ferramentas de planejamento em Engenharia da Informação (EI). ENGENHARIA DA INFORMAÇÃO (EI) As fases da EI responsáveis pela execução e incorporação de tarefas específicas são coesas, integradas, interativas e seqüenciais: Planejamento Estratégico de Informações: identifica as informações necessárias para suportar seus propósitos, funções e fatores, estabelece o modelo corporativo de dados e o modelo funcional da empresa, fornecendo parâmetros para fixação de prioridades ao desenvolvimento de sistemas. Análise das Áreas de Negócios: detalha as áreas mais carentes de apoio dos sistemas automatizados. Com a aplicação da Prototipação como recurso permitirá uma participação mais intensa do usuário e a migração mais sólida da análise para o projeto. Projeto: analisada a área de negócios priorizada e identificados os processos gerenciais e as atividades críticas, iniciamos a fase de Projeto em que se estabelece o sub-modelo de dados de cada atividade envolvida. Construção: esgotadas todas as filtragens e refinamentos necessários na fase de projeto passamos a executar a construção do sistema enfocado, com a utilização das ferramentas disponíveis. Manutenção: se as quatro fases anteriores tenham sido executadas criteriosamente, a manutenção restringir-se-á a ocorrências eventuais, visto que a estabilidade do modelo de dados e dos processos vinculados foram bem tratados, e somente mudanças políticas, econômicas e legislativas do ambiente externo poderão teoricamente resultar em alterações. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 15 Terminologia – A importância da Padronização: é uma forma básica e essencial para se manter o diálogo e o entendimento uniforme entre todos os participantes do projeto, desde os técnicos de processamento de dados até os dirigentes e usuários envolvidos. Documentação das fases da Engenharia da Informação: é necessário manter permanente a documentação atualizada, condição fundamental para pleno conhecimento, análise e manutenção do sistema. Ferramentas CASE (Computer-Aided Software Engineering): voltadas a dar apoio e possibilitar o desenvolvimento gráfico, a interação e a documentação totais ou parciais das cinco fases anteriores. • Ferramentas de Análise Estática; • Ferramentas de Análise Dinâmica; • Ferramentas de Gerenciamento de Testes; • Ferramentas de Testes Cliente/Servidor; • Ferramentas de Reengenharia; • Ferramentas de Engenharia da Informação; • Ferramentas de Gerenciamento e Modelagem de Processo; • Ferramentas de Planejamento de Projeto; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 16 • Ferramentas de Análise de Risco; • Ferramentas de Gerenciamento de Projeto; • Ferramentas de Auditoria de Requisitos (Tracing). Usuários – A necessidade de comprometimento no Projeto: a globalização e a tecnologia trazem uma influência intensa nos hábitos e comportamentos das pessoas. O comprometimento das pessoas é uma jornada permanente, é fazer com que se superem a todo o momento e sejam percebidas de forma positiva. O usuário é um perfeito aliado no desenvolvimento de sistemas voltados para sua área já que vive diariamente a sua área de negócio, conhece profundamente os processos desenvolvidos, a periodicidade de execução das tarefas, e as necessidades de informação para gerir as atividades. Planejamento Estratégico de Informações: é a primeira fase da Engenharia da Informação onde se estabelecem os propósitos básicos para implementar sistemas computadorizados estáveis e de apoio à tomada de decisões. Para facilitar a comunicação, o analista deve: • Procurar conhecer bem os termos técnicos e gírias empregadas pelos usuários; • Definir cada termo em um Dicionário de Termos, se possível; • Anotar os sinônimos; • Iniciar o processo de análise sem idéias prévias de como é a Organização, evitando pré-conceitos, pois apesar de ser do mesmo ramo de negócio possuem suas particularidades; Feito isso, só assim o analista deve traçar seu planejamento, visando: • Entrada: problemas ou áreas a melhorar na Organização; • Objetivo: definir informações necessárias para resolver problemas identificados; • Resultado: conjunto de informações necessárias para resolver problemas. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 17 Para isso é necessário: Entrevistas (técnicas utilizadas): instrumento de pesquisa fundamental no processo de captação de informações para a elaboração de um plano que reflita os anseios dos executivos de uma determinada organização, através do levantamento prévio dos Objetivos, Fatores Críticos de Sucesso, Problemas, Desafios, Metas, etc. Questionários de Apoio às Entrevistas: sugere-se a elaboração e aplicação de um questionário objetivo, dirigido e diferenciado, de forma a compatibilizar as informações fornecidas pelos usuários durante as entrevistas. JAD (Join Application Design): substitui as entrevistas individuais de levantamento de dados. É um método específico de pesquisa desenvolvido pela IBM-Brasil, com o objetivo de extrair informações dos usuários (especialistas no negócio) através de reuniões ou sessões de trabalho. Produtos: modelo da organização, mostrando as funções básicas da empresa em um diagrama de decomposição funcional. Deve-se considerar: • Modelo de dados corporativo da empresa; • Análise dos sistemas atuais; • Estabelecimento de prioridades para o desenvolvimento de sistemas de informações. O Modelo de Dados Corporativo deverá conter todas as informações básicas necessárias para o negócio da empresa, a fim de cumprir sua missão e os seus objetivos. Para isso, deve incorporar todos os dados de real valia, identificados a partir das necessidades de informações relatadas pelos usuários e registradas nos questionários de apoio. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 18 Modelo de Dados Corporativo Faça uma síntese sobre Agentes inteligentes em Redes. Busque as informações na Internet e em livros sobre o tema (Redes Neurais Artificiais). TCP/IP e SUA IMPORTÂNCIA NO FLUXO DE INFORMAÇÃO Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 19 U NIDADE 3 Objetivo: Conhecimento dos Componentes de Sistema de Inteligência Artificial (IA); Origem da Rede Neural Artificial (RNA). SISTEMA DE INTELIGÊNCIA ARTIFICIAL (IA) Define-se Inteligência Artificial (IA) como princípios que permitem simular a inteligência humana por meio da criação de modelos computacionais de processos cognitivos e desenvolver sistemas (hardware/software) mais úteis com capacidade de dedução e percepção. IA é simplesmente uma maneira de fazer o computador pensar de maneira inteligente, ou seja, permite que o computador pense. Imita o processo básico de aprendizado humano, onde novas informações são absorvidas e se tornam disponíveis futuramente. Comparado à mente humana, que pode incorporar novos conhecimentos sem alterar seu funcionamento e sem atrapalhar todos os outros fatos que já estão armazenados no cérebro, um programa IA funciona do mesmo modo. Mostra um método simples e estruturado de projetar programas complexos de tomada de decisão. Todos os elementos nos quais consiste o processo humano de tomada de decisão – objetivos, fatos, regras, mecanismos de inferência – devem ser reunidos em um programa de computador para que ele possa ser realmente qualificado como um programa que possui IA. Os componentes de um sistema de IA baseado em regras: • Define fatos; • Obtém dados; • Define objetivos; • Define a solução; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 20 • Obtém novos objetivos via regras e inferências. Pode-se modificar uma ou mais partes de um projeto sem desarranjar a estrutura do sistema de raciocínio, pois a “mente” do computador é capaz de atuar uma série de regras previamente manipuladas. Se pudermos determinar o que nossas mentes fazem em um determinado estágio de qualquer processo de tomada de decisão, podemos facilmente encontrar nesse projeto de programa uma seção que corresponda a um aspecto equivalente da Inteligência. Redes Neurais O cérebro humano é considerado o mais fascinante processador baseado em carbono existente, composto por aproximadamente 10 bilhões neurônios, relacionados a todas as funções e movimentos do organismo. Os neurônios conectam-se uns aos outros através de sinapses, e juntos formam uma grande rede (rede neural). As sinapses transmitem estímulos por todo o corpo humano através de diferentes concentrações de sódio (Na+) e potássio (K+). Esta grande rede proporciona uma fabulosa capacidade de processamento e armazenamento de informação. O sistema nervoso é formado por um conjunto extremamente complexo de neurônios, nos quais a comunicação é realizada através de impulsos. Quando um impulso é recebido, o neurônio o processa, e passado um limite de ação, dispara um segundo impulso que produz uma substância neurotransmissora o qual flui do corpo celular para o axônio (que por sua vez pode ou não estar conectado a um dendrito de outra célula). O neurônio que transmite o pulso pode controlar a freqüência de pulsos aumentando ou diminuindo a polaridade na membrana pós-sináptica. Eles têm um papel essencial na determinação do funcionamento, comportamento e do raciocínio do ser humano. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 21 Ao contrário das redes neurais artificiais, as redes neurais naturais não transmitem sinais negativos, sua ativação é medida pela freqüência com que emite pulsos, contínuos e positivos. As redes naturais não são uniformes, apresentando uniformidade apenas em alguns pontos do organismo. Seus pulsos não são síncronos ou assíncronos, devido ao fato de não serem contínuos. Com o desenvolvimento da IA da informática surgiu a idéia de representar por meio de determinados programas o funcionamento do processo de aprendizagem do cérebro humano. A tentativa de simular a rede neural do cérebro deu origem à Rede Neural Artificial (RNA), que são sistemas não-lineares. Uma rede neural pode possuir uma ou múltiplas camadas. Com três camadas, poderíamos ter a camada de entrada (onde as unidades recebem os padrões, possuindo uma unidade especial conhecida como “bias”), a camada intermediária (onde é feito processamento e a extração de características), e a camada de saída (que conclui e apresenta o resultado final). Tecnicamente, o número de camadas define a capacidade de representação das relações entre o espaço de entrada e de saída. Quanto maior o número de camadas, melhor a capacidade de aprendizado. A inexistência da camada intermediária, característica do modelo Perceptrons, representa somente relações linearmente independentes. A existência Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 22 de camadas intermediárias, característica do modelo Perceptron de Múltipla Camada (MLP), retira tal limitação. Se houver apenas uma camada intermediária, o MLP pode representar qualquer função contínua. Duas ou mais camadas, ampliam o universo de representação a qualquer função contínua ou não. Os trabalhos sobre redes neurais se iniciaram na década de 40, na Universidade de Illinois, com o neurofisiologista McCulloch e o matemático Walter Pitts, publicadas no artigo A Logical Calculus of the Ideas Immanent in Nervous Activity (1943). Os autores estabeleceram uma analogia entre o processo de comunicação das células nervosas vivas e o processo de comunicação por transmissão elétrica e propuseram a criação de neurônios formais. Em 1947 eles conseguiram demonstrar que era possível conectar os neurônios formais e formar uma rede capaz de executar funções complexas. As redes neurais possuem diferentes denominações: redes neuronais, modelos de redes neurais artificiais, modelos conectistas e sistemas neuromórficos. Assim, como o cérebro humano é composto de células biológicas, a rede neural possui um neurônio artificial semelhante, pois ainda não é possível copiar totalmente o sistema de processamento paralelo existente nas células biológicas. O objetivo da neurocomputação é o aprendizado da máquina baseado em modelos que possam ser implementados para desempenhar funções próprias do cérebro humano. As pesquisas em RNA tentaram simular o cérebro humano quanto a sua capacidade de aprender e se adaptar a eventuais mudanças. Portanto, têm como principal objetivo simular a capacidade de aprendizado e de generalização do cérebro humano podendo executar tarefas que os programas convencionais não conseguiam realizar, pois não tinham essa característica de aprendizagem e adaptabilidade. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 23 O psicólogo Donald Hebb (1949) elaborou uma teoria baseada no processo de aprendizagem que ocorre no cérebro humano, servindo de base para a aprendizagem das redes neurais. O processo de aprendizado é geralmente um processo interativo de adaptação aplicado aos parâmetros da rede (pesos e thresholds) onde os conhecimentos são armazenados após cada interação. Em 1956, Nathaniel Rochester desenvolveu um modelo de RNA no qual era simulado a interconexão de centenas de neurônios e um sistema para verificar o comportamento da rede diante dos estímulos externos. No entanto, a Rede Perceptron criada por Frank Rosenblat (1957) se tornou mais popular. Porém, recebeu severas críticas por Mavin Minsky e Seymour Papert no livro Perceptron, em 1969, argumentando que os Perceptrons apresentavam limitações em suas aplicações, não possuíam capacidade de aprendizado para resolver problemas simples e não possuíam adequada sustentação matemática. A primeira rede capaz de imitar o cérebro humano utilizando processadores paralelos (ao invés de um único processador) surgiu com Widrow e Hoff, em 1959, com a estruturação da Rede ADALINE, (ADAptative LInear Element) mais tarde denominada MADALINE (Many ADALINE). Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 24 Apesar de terem surgido trabalhos significativos na década de 60 e 70, como os de Werbos, Anderson, Grossberg, as pesquisas com as redes neurais só voltaram a recuperar sua credibilidade (em 1982) com os trabalhos do físico e biólogo John Hopfield. As RNA podem ser entendidas como conjuntos bem estruturados de unidades de processamentos, interligados por canais de comunicação, cada qual tendo um determinado peso correspondente a um valor numérico. Consistem de várias unidades de processamento (neurônios artificiais) interconectados entre si formando uma determinada disposição estrutural de camadas (entrada, intermediárias e saída) e conexões entre elas. REDES NEURAIS: Sistema de Inteligência Artificial Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 25 U NIDADE 4 Objetivo: Conhecimento dos tipos de redes mais comuns, dificuldades, algoritmos, aplicações. REDE NEURAL ARTIFICIAL (RNA) Atualmente existem dezenas de modelos de redes neurais estruturados para as mais diversas aplicações. Os mais conhecidos são: Rede neural de mcculloch-pitts (mcp): representa o neurônio como uma unidade de limite binário que pode executar operações lógicas básicas (NOT, OR e AND), por meio do ajuste adequado dos pesos. Apesar de cada neurônio possuir apenas uma entrada e uma saída, a interligação de várias unidades forma uma rede capaz de executar ações complexas. Perceptron de camada simples: desenvolvida por Frank Rosemblatt (1958) são utilizadas para reconhecimento e classificação de padrões e resolução de problemas lógicos que envolvem os conectivos AND e OR. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 26 MLP (Multi Layer Perceptron) ou MLFF (Multi Layer Feed Forward): desenvolvida por Minsky e Papert (1969) realizam operações lógicas complexas, reconhecimento, classificação de padrões, controle de robôs e processamento da fala. Redes BPN (Back Propagtion Network): desenvolvida por E. Rumelhart, G. E. Hilton e R. J. Williams (1986) é utilizada na previsão anual de aparecimentos de manchas solares, em operações lógicas complexas, classificação de padrões e análise da fala. Rede de hopfield: desenvolvida por J. J. Hopfield (1982) é utilizada para reconhecimento de imagens. Redes de kohonen: desenvolvida pelo Prof. Teuvo Kohonen (1987) é utilizada para classificação de padrões, otimização de problemas e simulações. Rede neural adalanie (adaptive linear neuron): desenvolvida por Widrow e Hoff (1959), é rede de uma camada com backpropagation utilizada para reconhecimento de padrões, mas só reconhece os padrões nos quais foi treinada (Regra de Widrow-Hoff). Quando transposta para uma rede de backpropagation de multicamadas é denominada de MADALINE (Multilayer ADALINE) e apresenta um alto grau de tolerância a falhas. ART (ADAPTATIVE RESONANCE THEORY) de GROSSBERG: representa um único neurônio artificial que recebe input de várias outras unidades semelhantes. É um programa Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 27 que tem por base características da teoria da ressonância adaptativa, que consiste na habilidade de se adaptar diante de novos inputs. É utilizada para reconhecimento de sinais de radar e processamento de imagens. CNM (COMBINATORIAL NEURAL MODEL): utilizada no processamento de reconhecimento, análise e classificação de dados. SOM (SELF ORGANIZING MAP) de KOHONEN: é uma rede competitiva com a habilidade de fazer mapeamentos entre dados de input e output. Capaz de equilibrar um bastão aplicando forças na sua base, o objetivo da rede é estabelecer um mapeamento entre as variáveis do estado do bastão e a força ideal para manter o equilíbrio. CPN (COUTERPROPAGATION NETWORK): é uma rede competitiva desenhada para funcionar como uma tabela de consulta auto-programável com a habilidade de interpolar dados de entrada. Pode determinar a rotação angular de um objeto na forma de foguete que lhe é apresentada como um padrão bitmap. O desempenho da rede é limitado pela resolução do bitmap. BAM (BIDIRECTIONAL ASSOCIATIVE MEMORY): possui uma memória associativa bidirecional capaz de fornecer o número do telefone associado ao nome que lhe foi fornecido e vice-versa. Permite certo grau de tolerância a erros, quando os dados fornecidos possuem um padrão corrompido. NEOCOGNITRON: é uma rede que possui múltiplas camadas com conexões parciais entre as unidades das várias camadas. Foi desenvolvida para reconhecer caracteres alfabéticos escritos a mão. É de treinamento difícil, mas possui boa tolerância a erros, pois reconhece os caracteres mesmo com certa inclinação na escrita ou pequenas distorções na imagem. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 28 Aplicações das Redes Neurais: • Análise de assinaturas; • Análise de características demográficas para marketing; • Análise do grau de satisfação de um cliente; • Controle de processos industriais; • Detecção de cartões de crédito falsos; • Monitoramento para manutenção de motores; • Previsão da bolsa de valores e cotação de moedas; • Previsão do mercado financeiro; • Reconhecimento de caracteres e impressões digitais; • Reconhecimento ótico de caracteres. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 29 Algoritmo de Aprendizado: É um conjunto de regras bem definidas que são utilizadas para solucionar um determinado problema de aprendizado. Podemos encontrar diferentes algoritmos de aprendizado agrupados em quatro categorias: • Aprendizado por correção de erro; • Hebbiano; • Competitivo; • De Boltzmann. Quanto ao tipo de treinamento para aprendizado as redes apresentam: Aprendizado Supervisionado: exige a presença de um agente externo (tutor) que avalia e informa à rede sobre a sua performance. O tutor adquire conhecimento da rede na forma de mapeamentos (padrões) de entrada-saída. Aprendizado não-Supervisionado: não possui um tutor (crítico). A rede é autônoma, trabalha com os dados que lhes são apresentados e aprende a refletir sobre as suas propriedades no seu output. Esse tipo de aprendizado pode ser utilizado com um algoritmo competitivo ou hebbiano. Aprendizado por Reforço: possui um crítico externo que avalia as respostas fornecidas pela rede e direciona o ajuste dos pesos. O aprendizado é on-line, feito por um processo de tentativas e erros, que visa maximizar um dado índice de desempenho, denominado de sinal de reforço. Vantagens da Utilização das Redes Neurais Artificiais: • Inferência de múltiplas variáveis; • Grande tolerância a falhas; • Modelamento direto do problema; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 30 • Paralelismo inerente. Características que definem uma rede neural artificial: • Arquitetura; • Capacidade de aprendizado; • Habilidade Funcional; • Vantagens da Utilização das Redes Neurais Artificiais; • Inferência de múltiplas variáveis; • Grande tolerância a falhas; • Modelamento direto do problema; • Paralelismo inerente. Dificuldades das Redes Neurais: As redes neurais artificiais trabalham com um número reduzido (centenas) de neurônios artificiais, enquanto as redes neurais biológicas trabalham com milhões de neurônios. A modelagem de uma rede neural depende da análise consistente de um sistema complexo, implicando em dificuldades para definir qual arquitetura melhor responde às necessidades do problema proposto, e na escolha de quais dados são verdadeiramente relevantes para o processamento. Além da entrada, também devemos definir de forma ideal os parâmetros de aprendizagem, os pesos sinápticos e os níveis de tendência, os quais são de grande importância para o processo de aprendizado. Outra dificuldade encontrada seria a extração de regras que justifiquem as decisões tomadas pela rede, as quais representariam o conhecimento adquirido durante o treinamento. Por este motivo, as redes neurais são apelidadas de “Caixas Pretas”. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 31 Contudo, pesquisadores vêm tentando minimizar as dificuldades da implementação das redes neurais através de algoritmos que possam extrair regras (como o algoritmo KBANN – Knowledge Base Neural Networks) e do uso de sistemas híbridos, combinando, por exemplo, uma rede neural com algoritmos genéticos. Isso poderá definir melhor as taxas de aprendizado, pesos sinápticos e nível tendencioso. Dicas de leitura: Esteganografia Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 32 U NIDADE 5 Objetivo: Conhecimento de Agentes Inteligentes em redes e aplicações. AGENTES INTELIGENTES EM REDES “Agente é uma entidade de software persistente dedicada a um propósito específico. O fato do agente ser persistente o distingue das sub-rotinas, pois os agentes tem suas próprias idéias sobre como resolver os seus problemas, ou como organizar sua própria agenda. Propósitos especiais os diferenciam das aplicações multifuncionais, já que os agentes são tipicamente menores” (SMITH et al apud ITO, 1999). “Agente é uma entidade cognitiva, ativa e autônoma, ou seja, que possui um sistema interno de tomada de decisões. Agindo sobre o mundo e sobre os outros agentes que o rodeiam, e, por fim, que é capaz de funcionar sem necessitar de algo ou de alguém para guiá-lo (tem mecanismos próprios de percepção do exterior)”. River (1995) associa aos agentes inteligentes a posse de uma ou mais características: • Uma base de conhecimento pré-definida e um mecanismo de inferência; • Um sistema de aquisição de conhecimento; • Um mecanismo de aprendizagem neuronal. Nissen (1995) apresenta cinco componentes da infra-estrutura necessária à atuação dos agentes inteligentes: • Recursos de execução; • Recursos de comunicação; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 33 • Recursos de transporte; • Recursos de empacotamento; • Segurança integrada. Agentes Inteligentes Cooperando para Gerenciamento de Serviços em uma Rede de Comunicação: uma comunidade aberta de diferentes sistemas de computadores (agentes) coopera para solucionar uma variedade de problemas em um sistema de gerenciamento de redes de telecomunicações complexo. Os agentes são chamados a entrar ou sair da comunidade que eles formam. Têm como funções estabelecimento e restauração de rotas em uma rede física e satisfazer as necessidades do cliente. O planejamento do fornecimento e restauração do serviço é realizado em um contexto de conhecimento incompleto. Processos de alto nível são descritos para solução destes problemas, tendo como característica ser distribuído e flexível a falhas. Este sistema de controle distribuído suporta a possibilidade de melhorar o desempenho sobre o sistema centralizado e o escopo de redução da quantidade total de dados passados para um ponto central, e a flexibilidade de permitir ao sistema distribuído uma degradação mais suave. Agentes Inteligentes em Logística e Simulação: um sistema de planejamento e controle para automatização de uma célula de trabalho está sendo desenvolvido para fornecer um melhor desempenho em trabalhos relativos à logística e simulação. Para lidar com a complexidade dinâmica de um ambiente de produção o sistema de planejamento necessita de habilidades de adaptação dinâmica e autocontrole. Para alcançar esta habilidade, a tarefa de planejamento é distribuída a vários agentes inteligentes virtuais, cada qual suporta uma tarefa específica e possui suas próprias estratégias de solução e é capaz de solicitar serviços de outros agentes. A simulação desempenha um papel crucial no sistema de planejamento e é usada por outros agentes para revisar suas estratégias de planejamento e para determinar as conseqüências futuras de suas decisões. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 34 Aplicações de Agentes Inteligentes na Internet: Agentes Inteligentes são entidades autônomas dotadas de uma base de conhecimento e capazes de interagir com o meio em que estão tomando decisões que irão auxiliar ou substituir o trabalho de um agente humano. Applets são conjuntos de código de programa que podem ser descarregados, instanciados e executados em WEB browsers. Aglet é um agente para Internet com a capacidade adicional de ser transportado pela rede. São objetos Java que podem mover-se de um host ao outro, parar a execução, despachar-se para um host remoto e executar-se lá autonomamente, traçando seu próprio itinerário. Para implementar um Aglet pode ser usada a plataforma IBM Aglet Workbench para programação de agentes móveis. Trata-se de um ambiente para Windows destinado à programação de aglets em Java, linguagem utilizada por permitir a criação de aplicativos (applets, servlets e aglets) independentes da plataforma em que serão executados, facilitando a movimentação de um sistema de um computador a outro. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 35 Agentes de Correio Eletrônico: Maxims, implementado em Macintosh Commom Lisp, comunica com o pacote comercial de e-mails EUDORA usando Apple Events. É um agente que ajuda o usuário com seu e-mail. Ele aprende a priorizar, deletar, responder, organizar e arquivar mensagens de e-mail recebido pelo usuário. Tem como principal técnica de aprendizado o raciocínio baseado em memórias. Se o usuário realiza uma ação, o agente memoriza toda a situação gerada, por exemplo, se o usuário salva uma mensagem particular após tê-la lido, o agente adiciona a descrição desta situação e a ação tomada pelo usuário em sua memória de exemplos. Quando uma nova situação ocorre, o agente compara-a com seu banco de memória e verifica qual ação tomar. Faça uma síntese sobre SGBD Busque as informações na Internet e em livros sobre o tema (Banco de Dados). Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 36 U NIDADE 6 Objetivo: Conceituação de Transmission Control Protocol (TCP) e Internet Protocol (IP) e sua importância no fluxo de informação; Definição de classes e endereços. PROTOCOLO TCP/IP Hoje, as redes de computadores baseadas em protocolos Transmission Control Protocol/Internet Protocol (TCP/IP), como a Internet cresce assustadoramente, pelo fato destes protocolos serem de fácil implementação e manutenção, além de permitirem a interligação de redes locais através de outras redes de longa distância, com um desempenho considerável. Atualmente é possível ter-se uma implementação local de redes TCP/IP, sem conectá-las a outras redes, caracterizando uma rede Intranet, muito utilizada para implementar redes locais em empresas. Porém um grande problema surge para os administradores de rede, pois é necessário monitorar e controlar o funcionamento, crescimento e os parâmetros dessas redes, garantindo o seu correto desempenho. Um esquema de gerenciamento de rede deve ser capaz de detectar e corrigir possíveis erros que venham a ocorrer durante as transmissões. Este mesmo esquema deve estar apto a estabelecer procedimentos para a previsão de problemas futuros. Fazendo uma monitoração do tráfego da rede é possível detectar qual máquina na rede está gerando maior tráfego e pode-se prever alguma forma de controle deste tráfego. O gerenciamento da rede realizado pelo protocolo Simple Network Management Protocol (SNMP) permite que uma ou mais máquinas na rede sejam designadas gerentes da rede. Esta máquina recebe e processa informações de todas as outras máquinas da rede (agentes), gerenciando toda a rede e detectando facilmente problemas ocorridos. As informações coletadas pela máquina gerente estão armazenadas nas próprias máquinas da rede, em uma base de dados conhecida como Management Information Base (MIB). Nesta base de dados estão gravadas todas as informações necessárias para o Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 37 gerenciamento deste dispositivo, através de variáveis que são requeridas pela estação gerente. Entretanto, em uma interligação de diversas redes locais, pode ser que uma rede local esteja funcionando perfeitamente, mas sem conexão com as outras redes, e, conseqüentemente, sem conexão com a máquina gerente. O ideal é implementar em alguma máquina, dentro desta rede local, um protocolo para gerenciamento que permita um trabalho off-line, isto é, que a rede local possa ser gerenciada, ou pelo menos tenha suas informações de gerenciamento coletadas, mesmo que estas informações não sejam enviadas instantaneamente à estação gerente. O protocolo Remote Monitoring (RMON) permite uma implementação neste sentido, devendo ser implementado em diversas máquinas ao longo da rede. É possível, ainda, que uma estação com implementação RMON, envie dados à estação gerente apenas em uma situação de falha na rede. Isto contribuiria para redução do tráfego de informações de controle na rede (overhead). A instalação de um servidor Proxy diminui o tráfego na rede facilitando seu gerenciamento, servindo como cache dos documentos acessados por uma rede local. Pode também restringir o acesso a alguns documentos ou a utilização de algum protocolo, garantindo segurança à rede. O desenvolvimento da arquitetura Internet Transmission Control Protocol/Internet Protocol (TCP/IP) foi patrocinado pela Defense Advanced Research Projects Agency (DARPA). O TCP/IP (Conjunto de Protocolos Internet) foi desenvolvido para permitir que computadores Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 38 compartilhem recursos dentro de uma rede. Por serem os mais conhecidos, é comum se referir o TCP e IP para referenciar toda a família de protocolos. Alguns deles, como TCP, IP e User Datagram Protocol (UDP), provêm funções de baixo nível, necessárias a diversas aplicações. Os outros protocolos são execução de tarefas específicas, como transferência de arquivos entre computadores, envio de mensagens. Os serviços TCP/IP mais importantes são [Hedrick88]: • Transferência de Arquivos (File Transfer Protocol – FTP): permite a um usuário em um computador copiar arquivos de outro computador, ou enviar arquivos para outro computador. A segurança é garantida requerendo-se que o usuário especifique um username e uma senha, para acesso ao outro computador. • Login Remoto (Network Terminal Protocol – TELNET): permite que um usuário se log (tenha uma seção de trabalho) em outro computador da rede. A seção remota é iniciada especificando-se o computador em que se deseja conectar. Até que a seção seja finalizada, tudo o que for digitado será enviado para o outro computador. O programa de TELNET faz com que o computador requisitante seja totalmente invisível, tudo é enviado diretamente ao computador remoto. • Eletronic Mail: permite ao usuário enviar mensagens para usuários em outro computador. Deve ser mantido um arquivo de mail para cada usuário onde será adicionado novas mensagens. Para que um usuário possa enviar um mail, o programa espera ser capaz de manter uma conexão com o computador destino. O protocolo TCP/IP é baseado em um modelo que pressupõe a existência de um grande número de redes independentes conectadas através de gateways. Um usuário pode ter acesso a computadores ou outros recursos em qualquer uma destas redes. As mensagens, muitas vezes, passam por uma grande quantidade de redes para atingirem seus destinos. O roteamento destas mensagens deve ser completamente invisível para o usuário. Assim, para ter acesso a um recurso em outro computador o usuário deve conhecer o endereço Internet deste computador. Atualmente este endereço é um número de 32 bits, escrito como 4 números decimais, cada um representando 8 bits de endereço. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 39 Internet Protocol (IP) Protocolo de Internet, usado entre duas ou mais máquinas em rede para encaminhamento dos dados, enviados em blocos (como pacotes ou datagramas). No IP nenhuma definição é necessária antes do host tentar enviar pacotes para um host com o qual não comunicou previamente. O IP é o elemento comum encontrado na internet pública dos dias de hoje. É descrito no RFC 791 da IETF, publicado pela primeira vez em Setembro de 1981. Este documento descreve o protocolo da camada de rede mais popular e atualmente em uso. Esta versão do protocolo é designada de versão 4, ou IPv4. O IPv6 tem endereçamento de origem e destino de 128 bits, oferecendo mais endereçamentos que os 32 bits do IPv4. O IP, padrão para redes Internet, é baseado em um serviço sem conexão. Sua função é transferir blocos de dados (datagramas) da origem para o destino, hosts identificados por endereços IP. Este protocolo também fornece serviço de fragmentação e remontagem de datagramas longos, para que estes possam ser transportados em redes onde o tamanho máximo permitido para os pacotes é pequeno. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 40 Como o serviço fornecido pelo protocolo IP é sem conexão, cada datagrama é tratado como uma unidade independente que não possui nenhuma relação com qualquer outro datagrama. A comunicação é não-confiável, pois não são utilizados reconhecimentos fim-a-fim ou entrenós intermediários, nem empregados mecanismos de controle de fluxo e de controle de erros. Apenas uma conferência simples do cabeçalho é realizada, para garantir que as informações nele contidas, usadas pelos gateways para encaminhar datagramas, estão corretas. O IP oferece um serviço de datagramas não-confiável (chamado de melhor esforço), ou seja, o pacote vem quase sem garantias, podendo chegar desordenado ou duplicado se comparado com outros pacotes enviados entre os mesmos hosts, ou podem ser perdidos por inteiro. Se a aplicação precisa de confiabilidade, esta é adicionada na camada de transporte. Os roteadores são usados para reencaminhar datagramas IP através das redes interconectadas na segunda camada. A falta de qualquer garantia de entrega significa que o desenho da troca de pacotes é feito de forma mais simplificada. Se a rede cai, reordena ou de outra forma danifica um grande número de pacotes, o desempenho observado pelo utilizador será pobre, logo a maioria dos elementos de rede tentam arduamente não fazer este tipo de coisas – melhor esforço. Contudo, um erro ocasional não irá produzir nenhum efeito notável. Endereços IP: pode ser considerado como um conjunto de números que representa o local de um determinado equipamento (normalmente computadores) em uma rede privada ou pública. Para um melhor uso dos endereços de equipamentos em rede pelas pessoas, utiliza-se a forma de endereços de domínio, tal como “www.wikipedia.org”. Cada endereço de domínio é convertido em um endereço IP pelo DNS. Este processo de conversão é conhecido como resolução de nomes de domínio. O endereço IP, na versão 4 (IPv4), é um número de 32 bits escrito com quatro octetos e no formato decimal (128.6.4.7). A primeira parte do endereço identifica uma rede específica na inter-rede, a segunda identifica um host dentro dessa rede. Um endereço IP não identifica uma máquina individual, mas uma conexão à inter-rede. Assim, um gateway conectando à n redes tem ‘n’ endereços IP diferentes, um para cada conexão. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 41 O IP utiliza três classes diferentes de endereços pelo fato do tamanho das redes que estão interligadas variar muito, indo desde redes locais de computadores a redes públicas interligando milhares de hosts [Soares97]. Examinando os primeiros bits de um endereço, o software do IP consegue determinar rapidamente qual a classe, e logo, a estrutura do endereço. Classe A: primeiro bit é 0 (zero), é o mais significativo, os outros 7 bits do primeiro octeto identificam a rede, e os 24 bits restantes definem o endereço local. Essa classe é usada para redes de grande porte, seus endereços variam de 1 a 126, e cada rede tem capacidade de endereçar cerca de 16 milhões de hosts. Classe B: primeiros dois bits são 10 (um, zero). Usa dois octetos para o endereço da rede e dois para endereços de hosts, que variam na faixa de 128.1 até 191.255 (os números 0 e 255 do segundo octeto, e 127 do primeiro octeto são usados para funções especiais e testes), e cada rede pode interligar cerca de 65 mil hosts. Classe C: primeiros três bits são 110 (um, um, zero). Utilizam três octetos para identificar a rede e apenas um octeto para o host. Os endereços de rede situam-se na faixa de 192.1.1 até 223.254.254 (os endereços acima de 223 no primeiro octeto foram reservados para uso futuro), e cada rede pode endereçar 254 hosts. Classe D (endereço multicast): primeiros quatro bits são 1110 (um, um, um, zero). Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 42 Classe E (endereço especial reservado): primeiros cinco bits são 11110 (um, um, um, um, zero). Tabela 1: Intervalo das classes de endereços IPs. Classe Gama de Endereços Nº Endereços por Rede A 1.0.0.0 até 127.255.255.255 16 777 216 B 128.0.0.0 até 191.255.255.255 65 536 C 192.0.0.0 até 223.255.255.255 256 D 224.0.0.0 até 239.255.255.255 multicast E 240.0.0.0 até 247.255.255.255 uso futuro Faça uma síntese sobre DDoS – Distributed Denial-of-Services Attacks Busque as informações na Internet e em livros sobre o tema (Ataques a Redes). Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 43 U NIDADE 7 Objetivo: Definição e característica de TCP e UDP. TRANSMISSION CONTROL PROTOCOL (TCP) e USER DATAGRAM PROTOCOL (UDP) Transmission Control Protocol (TCP) Atualmente é um dos protocolos sob os quais assenta o núcleo da Internet. Adequado para redes globais por verificar se os dados são enviados de forma correta pela rede, na seqüência apropriada e sem erros, sendo versátil e robusto. O TCP é um protocolo do nível da camada de transporte (camada 4) do Modelo OSI e é sobre o qual assentam a maioria das aplicações cibernéticas, como o SSH, FTP, HTTP - a World Wide Web (www). Características fundamentais do TCP: • Orientado à conexão: envia um pedido de conexão para o destino, usando-o para transferir dados. • Ponto a ponto: sua conexão é estabelecida entre dois pontos. • Confiabilidade: usa várias técnicas para proporcionar entrega confiável dos pacotes de dados, grande vantagem em relação ao UDP, e motivo do seu uso extensivo nas redes de computadores. Permite eliminar pacotes duplicados, recuperar pacotes perdidos, dados corrompidos, e a ligação em caso de problemas no sistema e na rede. • Full duplex: possibilita transferência simultânea em ambas as direções (clienteservidor) durante toda a sessão. • Handshake: mecanismo de estabelecimento e finalização de conexão a três e quatro tempos, respectivamente, o que permite a autenticação e encerramento de uma Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 44 sessão completa, com garantia de que todos os pacotes foram bem recebidos que no final da conexão. • Entrega ordenada: a aplicação faz a entrega ao TCP de blocos de dados com um tamanho arbitrário num fluxo (ou stream) de dados, tipicamente em octetos. O TCP parte estes dados em segmentos de tamanho especificado pelo valor MTU, garantindo a reconstrução do stream no destinatário mediante os números de seqüência, caso a circulação dos pacotes ao longo da rede (utilizando um protocolo (IP) de encaminhamento, na camada inferior) não cheguem ordenados. • Controle de fluxo: usa o campo janela (window) para controlar o fluxo. O receptor, a medida que recebe os dados, envia mensagens ACK (acknowledgement), confirmando a recepção de um segmento; como funcionalidade extra, estas mensagens podem especificar o tamanho máximo do buffer no campo (janela) do segmento TCP, determinando a quantidade máxima de bytes aceita pelo receptor. O transmissor pode transmitir segmentos com um número de bytes que deverá estar confinado ao tamanho da janela permitido: o menor valor entre sua capacidade de envio e a capacidade informada pelo receptor. Descrição do funcionamento do TCP: O TCP especifica três fases durante uma conexão: 1. estabelecimento da ligação: feito em três passos; 2. transferência da ligação; 3. término da ligação: feito em quatro passos. Inicialmente são ativados alguns parâmetros, como o Sequence Number (número de seqüência), para garantir a entrega ordenada e robustez durante a transferência. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 45 O TCP interage de um lado com processos das aplicações e de outro com o protocolo da camada de rede da arquitetura Internet. A interface entre o protocolo e a camada superior consiste em um conjunto de chamadas, como para abrir e fechar conexões, para enviar e receber dados em conexões estabelecidas. Já a interface entre o TCP e a camada inferior define um mecanismo através do qual as duas camadas trocam informações assincronamente. Este protocolo é capaz de transferir uma cadeia (stream) contínua de octetos, nas duas direções, entre seus usuários, decidindo o momento de parar de agrupar os octetos e de transmitir o segmento formado por esse agrupamento. Porém, caso seja necessário, o usuário do TCP pode requerer a transmissão imediata dos octetos que estão no buffer de transmissão, através da função push. O TCP não exige um serviço de rede confiável para operar, mas responsabiliza-se pela recuperação de dados corrompidos, perdidos, duplicados ou desordenados pelo protocolo de rede. Isto é feito associando-se cada octeto a um número de seqüência. O número de seqüência do primeiro octeto dos dados contidos em um segmento é transmitido junto com o segmento (número de seqüência do segmento). Os segmentos carregam "de carona" (piggybacking) um reconhecimento. User Datagram Protocol (UDP) Protocolo de datagramas de utilizador (ou usuário) faz entrega de mensagens independentes, designadas por datagramas, entre aplicações ou processos, em sistemas host, podendo ser desordenada ou até perdida. A integridade dos dados pode ser gerida por um checksum (campo no cabeçalho de checagem por soma). O UDP dá às aplicações acesso direto ao serviço de entrega de datagramas, como o IP. É pouco confiável para conexão, ou seja, não há técnicas para confirmar que os dados chegaram ao destino corretamente. O UDP usa número de porta de origem e de destino de 16 bits na Word 1 do cabeçalho da mensagem. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 46 Os pontos de acesso do UDP são designados “portas de protocolo”, “portas” ou “portos”, em que cada unidade de transmissão de dados UDP identifica o endereço IP e o número de porta do destino e da fonte da mensagem. Os números podendo ser diferentes em ambos os casos. O UDP é o protocolo irmão do TCP. A diferença é que o TCP é um protocolo orientado à conexão, que inclui vários mecanismos para iniciar e encerrar a conexão, negociar tamanhos de pacotes e permitir a retransmissão de pacotes corrompidos. No TCP tudo isso é feito com muito cuidado, para garantir que os dados realmente cheguem inalterados, apesar de todos os problemas que possam existir na conexão. O lema é “transmitir com segurança”. Já UDP transmite dados pouco sensíveis, como streaming de áudio e vídeo, sem checagens, sem confirmação, e apenas uma vez, incluindo apenas um frágil sistema de CRC. Os pacotes que chegam corrompidos são simplesmente descartados, sem que o emissor sequer saiba do problema. A idéia é transmitir dados com o maior desempenho possível, eliminando dos pacotes quase tudo que não sejam dados em si. Apesar da pressa, o UDP tem seus méritos, pois impede Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 47 que quadros fantasmas sejam exibidos no meio de um vídeo, sem considerável perda de desempenho. Em geral, os programas que utilizam portas UDP recorrem também a uma porta TCP para enviar as requisições de dados e também para checar periodicamente se o cliente ainda está online. Na Internet, O UDP é um protocolo de transporte que presta um serviço de comunicação não orientado a conexão e sem garantia de entrega. Portanto, as aplicações que utilizam este tipo de protocolo devem ser responsáveis pela recuperação dos dados perdidos. Cabeçalho UDP: É extremamente simples, contendo apenas os números de porta, comprimento da mensagem e o checksum. O cabeçalho dos datagramas UDP, muito menor que o inserido pelo TCP, é colocado a seguir ao cabeçalho IP. Descrição do funcionamento do UDP: O UDP opera no modo sem conexão e fornece um serviço de datagrama não confiável, sendo, portanto, uma simples extensão do protocolo IP. Recebe os pedidos de transmissão de mensagens entregues pelos processos de aplicação da estação de origem e os encaminha ao IP, responsável pela transmissão. Na estação de destino, o processo inverso ocorre. O protocolo IP entrega as mensagens (datagramas) recebidas ao UDP que as entrega aos processos de aplicação, sem nenhuma garantia. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 48 U NIDADE 8 Objetivo: Conhecimento do modelo, operação e aplicação de Protocolos de Gerência. PROTOCOLOS DE GERÊNCIA Simple Network Management Protocol (SNMP) Protocolo de Gerência Simples de Rede é um protocolo de gerência típica de redes TCP/IP, da camada de aplicação designada para facilitar a troca de informações (intercâmbio) de gerenciamento entre dispositivos de rede, como placas e comutadores (switches). O SNMP possibilita os administradores de rede gerenciar o desempenho da rede, encontrar e solucionar eventuais problemas e planejar com mais precisão uma possível expansão da rede. O software de gerência de redes segue o modelo cliente-servidor convencional: uma aplicação ‘servidora’ na máquina cliente e uma aplicação ‘cliente’ no dispositivo de rede a ser analisado ou monitorado. Para evitar confusão com outras aplicações de rede, os sistemas Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 49 de gerência de redes usam “gerente” para a aplicação servidora e “agente” para a aplicação cliente que roda no dispositivo de rede. O SNMP é um protocolo relativamente simples, porém suficientemente poderoso para resolver difíceis problemas apresentados quando se tenta gerenciar redes heterogêneas. É um protocolo de requisição/resposta simples. Os NMS podem enviar múltiplas requisições sem receber uma resposta. Aplicações de gerenciamento que utilizam o SNMP [Oda94b]: • Fazer polling nos dispositivos de rede e coletar dados estatísticos para análise em tempo real. • Receber um conjunto limitado de notificações de eventos significativos ou mensagens trap. • Reconfigurar dispositivos de rede. Operações definidas no SNMP [Cisco96]: • get-request: solicitação de recuperação do valor de uma ou um conjunto de variáveis informados na solicitação. • get-next-request: solicitação de recuperação do valor de uma ou um conjunto de variáveis que sucedem lexicograficamente àquelas informações na solicitação. • get-response: resposta às operações get-request, get-next-request e set-request. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 50 • trap: envio de um evento não solicitado para uma ou várias estações de gerenciamento. Tipo de traps definidos no RFC 1215: cold start, warm start, link down, link up, authentication failure, egp neighbor loss e enterprise specific. Os pacotes de mensagem do SNMP são divididos em duas partes. A primeira parte contém a versão e o nome comunitário, e a segunda contém o protocolo de unidade de dados (PDU) do SNMP especificando a operação que será realizada (get, set e outros) e a instância de objetos envolvida na operação. O modelo de gerenciamento da Internet Como o TCP/IP, o SNMP é um protocolo Internet. Ele é uma parte da arquitetura de gerenciamento da Internet, que é baseada na interação de diversas entidades: Elementos de rede: ou dispositivos gerenciados, são dispositivos de hardware, como computadores, roteadores e servidores de terminais que estão conectados à rede. Agentes: são módulos de software que residem nos elementos de rede. Coletam e armazenam informações de gerenciamento como o número de pacotes de erros recebidos pelo elemento de rede. São eles que respondem às solicitações dos gerentes. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 51 Objeto gerenciado: é qualquer elemento que possa ser gerenciado, como uma lista dos circuitos TCP atualmente ativos em um host particular. MIB (Management Information Base): é uma coleção de objetos gerenciados residentes em um armazenamento virtual de informações, definidos em módulos específicos da MIB. Notação sintática: é a linguagem usada para descrever os objetos gerenciados da MIB em um formato independente da plataforma. Um uso consistente da notação sintática permite que diferentes tipos de computadores compartilhem informações. Sistemas de gerenciamento Internet usam um subconjunto Open System Interconnection (OSI) Abstract Syntax Notation 1 (ASN.1) da International Organization for Standardization's (ISO) para definir tanto os pacotes que são trocados pelo protocolo de gerenciamento quanto os objetos que ele deve gerenciar. Structure of Management Information (SMI): define as regras para descrever as informações de gerenciamento, usando ASN.1. Network Management Stations (NMS): ou consoles, executam aplicações de gerenciamento para monitorar e controlar elementos de rede. Fisicamente, os NMS são usualmente Workstations com CPU velozes, monitores coloridos de alta definição, memória substancial e um grande espaço em disco. Protocolo de gerenciamento: é usado para transportar informações de gerenciamento entre agentes e NMS. O SNMP é o protocolo de gerenciamento padrão da comunidade Internet. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 52 O SNMP foi construído para minimizar a quantidade e a complexidade das funções necessárias para gerenciar um agente. O paradigma funcional de controle e monitoração do protocolo foi definido de maneira extensiva, para poder absorver mais facilmente novos aspectos das operações de rede e gerenciamento. Além disto, esta arquitetura é totalmente independente da plataforma dos elementos da rede e dos NMS [Case90]. Os processos que implementam as funções de gerenciamento Internet atuam ou como agentes ou como gerentes. Os agentes coletam junto aos dispositivos gerenciados as informações relevantes ao gerenciamento da rede. O gerente processa essas informações com o objetivo de detectar falhas no funcionamento dos elementos da rede, para que “possam ser tomadas providências no sentido de contornar os problemas que ocorrem como conseqüência das falhas”. Um objeto gerenciado representa um recurso e pode ser visto como uma coleção de variáveis cujo valor pode ser lido ou alterado. O gerente envia comandos aos agentes. Para monitorar os dispositivos gerenciados, o gerente solicita ao agente uma leitura no valor das variáveis mantidas por estes dispositivos, através do comando Get, e o agente responde através do comando Response. Para controlar os dispositivos gerenciados, o gerente modifica o valor das variáveis armazenadas nos dispositivos gerenciados, através do comando Put. Isto pode ser usado para disparar indiretamente a execução de operações nos recursos associados aos objetos gerenciados. Um reboot do elemento de rede pode ser Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 53 facilmente implementado, basta que o gerente modifique o parâmetro que indica o tempo até uma reinicialização do sistema. Gerente pode ainda determinar que variável um dispositivo gerenciado suporta e colher informações de forma seqüencial, das tabelas de variáveis (como as tabelas de roteamento IP) nos dispositivos gerenciados. Para isto, ele utiliza as operações transversais (transversal operations). Em alguns casos é necessário que a troca de informações seja em sentido inverso, isto é, o agente tem de passar informações para o gerente. O SNMP define a operação Trap para que um agente informe ao gerente a ocorrência de um evento específico [Cisco96]. Filho, Edson Costa de Barros Carvalho., Modelagem, Aplicações e Implementações de redes Neurais. Anais da IV Escola Regional de Informática da SBC Regional Sul, 21 a 27 de abril de 1996. Páginas 36 - 53. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 54 U NIDADE 9 Objetivo: Conhecer a implementação de dispositivo Remote MONitoring (RMON), política Proxy e relacionamentos administrativos. RELACIONAMENTOS ADMINISTRATIVOS Definição dos Relacionamentos Administrativos A arquitetura SNMP admite uma variedade de relacionamentos administrativos entre entidades que participam do protocolo. As entidades residentes nas estações gerenciadas e os elementos de rede que se comunica com outro elemento usando SNMP são chamados de entidades de aplicação SNMP. O processo que implementa e suporta as entidades de aplicação SNMP é chamado protocolo de entidades. A junção de um agente SNMP com algum conjunto arbitrário de entidades de aplicação SNMP é chamada de comunidade SNMP, cada qual nomeada através de uma cadeia de octetos. Uma mensagem SNMP, originada por uma entidade de aplicação SNMP que de fato pertence a comunidade SNMP referenciada pela mensagem, é chamada mensagem SNMP autêntica. O conjunto de regras existentes para que uma mensagem seja identificada como uma mensagem SNMP autêntica para uma comunidade SNMP qualquer é chamado de esquema de autenticação. A implementação de uma função que identifica mensagens autênticas de acordo com um ou mais esquemas de autenticação é chamado serviço de autenticação. Um efetivo gerenciamento das relações administrativas entre entidades de aplicação SNMP requer que os serviços de autenticação (pelo uso de criptografia ou outra técnica) sejam capazes de identificar mensagens autênticas com um alto grau de confiabilidade. Para qualquer elemento da rede, um subconjunto de objetos na MIB é chamado de visão da MIB SNMP. Um elemento do conjunto (READ-ONLY, READ-WRITE) é chamado de modo de acesso SNMP. A junção do modo de acesso SNMP com a visão da MIB é chamada de perfil da comunidade SNMP, que representa um privilégio de acesso específico para variáveis em Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 55 uma MIB específica. A união da comunidade SNMP com o perfil da comunidade é chamada de política de acesso SNMP. Uma política de acesso representa um perfil de comunidade específico proporcionado por um agente SNMP de uma comunidade para outros membros desta comunidade. Todos os relacionamentos administrativos entre entidades de aplicação SNMP são definidos em termos das políticas de acesso. Para toda política de acesso SNMP, se o elemento de rede em que o agente SNMP especificado pela comunidade SNMP reside não contém a visão MIB que o perfil especifica então esta política é chamada política de acesso Proxy SNMP. O agente associado com a política de acesso Proxy é chamado de agente Proxy. A política Proxy é usualmente definida de duas maneiras: • Permite a monitoração e o controle dos elementos de rede que não são endereçáveis usando o protocolo de gerenciamento e o protocolo de transporte. Um agente Proxy provê uma função de conversão de protocolo permitindo a uma estação de gerenciamento aplicar um gerenciamento consistente em todos os elementos da rede, incluindo dispositivos como modems e multiplexadores, e outros que suportam diferentes estruturas de gerenciamento. • Protege os elementos da rede de elaboradas políticas de controle de acesso. Um agente Proxy pode implementar sofisticados controles de acesso, fazendo com que diversos subconjuntos de variáveis dentro de uma MIB se tornem acessíveis para diferentes estações de gerenciamento da rede, sem aumentar a complexidade do elemento de rede. Remote Monitoring Protocol (RMON) O SNMP não é adequado para ambientes de redes corporativas constituídas de diversas redes locais conectadas através de outra de longa distância. Esses enlaces de rede de longa distância por operarem a taxas de transmissão inferiores as LAN que a interconectam, passam a ter grande parte da sua banda de transmissão ocupada para informações de Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 56 gerenciamento. Uma solução encontrada para dirimir este problema foi o Remote MONitoring (RMON). O RMON oferece suporte à implementação de um sistema de gerenciamento distribuído, atribuindo função de monitor remoto aos diferentes elementos, como estações de trabalho, hubs, switches ou roteadores, das redes locais remotas [Waldbusser91, Carvalho97]. Cada elemento RMON tem como tarefa, coletar, analisar, tratar e filtrar informações de gerenciamento da rede e apenas notificar à estação gerente os eventos significativos e situações de erro. Se existirem múltiplos gerentes, cada elemento RMON deve determinar quais informações de gerenciamento devem ser encaminhados para cada gerente. Objetivos do RMON: • Reduzir a quantidade de informações trocadas entre a rede local gerenciada e a estação gerente conectada a uma rede local remota. • Possibilitar o gerenciamento contínuo de segmentos de redes locais, mesmo quando a comunicação entre o elemento RMON e a estação gerente estiver, temporariamente, interrompida. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 57 • Permitir o gerenciamento pró-ativo da rede, diagnosticando e registrando eventos que possibilitem detectar o mau funcionamento e prever falhas que interrompam sua operação. • Detectar, registrar e informar à estação gerente condições de erro e eventos significativos da rede. • Enviar informações de gerenciamento para múltiplas estações gerentes, permitindo, no caso de situações críticas de operação da rede gerenciada, que a causa da falha ou mau funcionamento da rede possa ser diagnosticada a partir de mais de uma estação gerente. Os dispositivos de monitoramento remoto de rede (RMON) são instrumentos que existem com o propósito de gerenciar uma rede. Uma organização pode dispor de diversos destes dispositivos, um por segmento de rede, para gerenciar sua rede Internet. A especificação RMON é uma definição de uma MIB. O objetivo, contudo, é definir padrões de monitoração e interfaces para a comunicação entre agentes/gerentes SNMP. Objetivos da implementação de um dispositivo RMON [Waldbusser91]: • Operação Off-Line: é a condição em que a estação gerenciadora não está em contato constante com o dispositivo RMON. Presta-se para desenhar redes de baixo custo de comunicação (acesso discado ou conexões com World Area Networks – WAN) ou para acidentes onde as falhas na rede afetam a comunicação entre a estação gerenciadora e os dispositivos RMON. Desta forma, o monitor é configurado para coletar estatísticas, fazer diagnósticos continuamente, mesmo se a conexão com o gerente não for possível ou apresentar falhas, e notificar a estação de gerenciamento se eventos excepcionais ocorrerem. • Monitoramento Preemptivo: se o monitor tiver recursos disponíveis poderão ser usados para executar diagnósticos continuamente e para analisar o desempenho da rede. Quando uma falha ocorrer, o monitor pode notificar a estação de gerenciamento Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 58 e armazenar o histórico estatístico referente à falha, com o objetivo de se fazer um estudo mais profundo e permitir a detecção e reparo da falha. • Detecção de Problemas e Geração de Relatórios: o monitor pode ser configurado para reconhecer certas situações como condições de erro e checar continuamente por elas. Quando uma destas situações ocorrer, o monitor pode registrá-la e reportá-la à estação de gerenciamento. • Análise de Dados: por ser um dispositivo dedicado exclusivamente ao gerenciamento de rede e por estar localizado diretamente no segmento monitorado da rede, os dispositivos RMON podem fazer uma análise significativa dos dados que coletam, como determinar qual host gera maior tráfego ou mais erros na rede. • Múltiplos Gerentes: uma configuração de rede pode ter mais de uma estação gerente para dar mais confiabilidade, executar funções diferentes e prover capacidades de gerência para unidades diferentes dentro da organização. A qualquer tempo acessos concorrentes são permitidos para um recurso disponível em um agente. Esta é uma característica potencial para conflitos e pode gerar resultados inesperados. No caso de agentes RMON compartilhados podem surgir as seguintes dificuldades: • Requisições concorrentes podem exceder a capacidade do monitor para fornecer estes recursos. • Uma estação gerente pode capturar e ocupar recursos de monitor por um longo período de tempo, prevenindo seu uso por outras funções gerente desejadas por outras estações gerentes. • Recursos podem ser designados para uma estação gerente onde ocorreu uma falha e os recursos não foram liberados. Para proceder com esses problemas, uma combinação de características de resolução e prevenção é necessária. Ela pretende que uma simples característica na MIB RMON suporte Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 59 estes requerimentos. Associado com cada tabela de controle está um objeto do tipo registro que identifica o proprietário de um registro particular da tabela e de funções associadas. O rótulo proprietário pode ser usado das seguintes formas: • Uma estação gerente pode reconhecer recursos próprios. • Um operador pode identificar a estação gerente que seja proprietária de um recurso em particular ou função e negociar para serem acessíveis para todos. • Um operador pode ter autoridade para liberar recursos que outro operador tenha reservado. A especificação sugere que o rótulo proprietário contenha um ou mais dos atributos: endereço IP, nome da estação gerente, nome do gerente de rede, localização ou telefone. Apesar do rótulo ser proveitoso, é importante ressaltar que o rótulo não tem ação como uma senha ou mecanismo de controle de acesso. Se múltiplo gerente de rede tem acesso à tabela de controle, uma maior eficiência pode ser alcançada pelo compartilhamento. Quando uma estação gerente quer utilizar certa função no monitor, ela precisa verificar a tabela de controle relevante para ver que função, tem sido definida por outra estação gerente. Neste caso, a estação gerente pode compartilhar a função simplesmente observando os registros de dados read-only associados com o registro de controle. Contudo, a estação gerente que seja proprietária de uma tabela de controle pode modificar ou apagar aquele registro a qualquer hora. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 60 Freqüentemente, um monitor será configurado com um conjunto padrão de funções que serão setadas quando ele for inicializado. Os registros que definem estas funções são propriedades do monitor. Cada rótulo relevante é configurado com uma cadeia de nome "monitor". Gorni, Antônio Augusto, Redes Neurais Artificiais - Uma Abordagem revolucionária em Inteligência Artificial. Revista MicroSistemas edição 133 páginas 14 a 25 e edição 134 páginas 14 a 17, Ano XII Antes de dar continuidades aos seus estudos é fundamental que você acesse sua SALA DE AULA e faça a Atividade 1 no “link” ATIVIDADES. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 61 U NIDADE 10 Objetivo: Conhecer a implementação de dispositivo Remote MONitoring (RMON), política Proxy e relacionamentos administrativos (continuação). DISPOSITIVO REMOTE MONITORING (RMON) O dispositivo Remote MONitoring (RMON) É um monitor remoto que pode ser configurado como uma função disponível em um sistema ou como um dispositivo dedicado. Configurado como dispositivo dedicado, o monitor é capaz de efetuar operações mais complexas. A definição da MIB RMON contém características que suportam controle extensivo da estação de gerenciamento. Estas características dividem-se em duas categorias: 1. Configuração: um monitor remoto necessitará ser configurado para coletar dados em tipo e forma. A MIB é organizada em grupos funcionais, cada qual terá uma ou mais e tabelas de dados e tabelas de controle (que contém parâmetros que descrevem o dado na tabela de dados, somente para leitura). Assim, a estação gerente envia os parâmetros apropriados para configurar o monitor remoto para coletar os dados desejados. Os parâmetros são configurados pela adição de um novo registro na tabela ou alterando uma existente. Desse modo, funções para serem executadas pelo monitor são definidas e implementadas na tabela. Uma tabela controle pode conter objetos que especifiquem a origem dos dados coletados, tipos de dados. Para modificar qualquer parâmetro na tabela de controle é necessário primeiro invalidar a entrada, retirando-a daquela entrada e de todos os registros associados em tabelas de dados. A estação gerente pode então criar um novo registro controle com os parâmetros modificados. O mesmo mecanismo é usado para apenas desabilitar uma coleção de dados. Quando um registro da tabela de controle é apagado, os registros das tabelas de dados associadas são apagados, e os recursos usados pelos registros são recuperados. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 62 2. Invocação de Ação: o SNMP providencia mecanismos não específicos para emitir um comando para um agente executar uma ação. SNMP tem apenas capacidade de ler valores de objetos e setar valores de objetos com visão MIB. Contudo, isto é possível para usar o conjunto de operações SNMP para emitir um comando. Um objeto pode ser usado para representar um comando, assim que uma ação específica é alcançada se o objeto é setado para um valor específico. Um número desses objetos é incluído na MIB RMON. Em geral, estes objetos representam estados, e uma ação é executada se a estação gerente trocar o estado (pela troca do valor do objeto). RMON1 e RMON2: são dois padrões básicos de protocolo RMON, funcionalmente complementares. O RMON1 opera somente na camada Media Access Control (MAC) e “oferece recursos ao administrador da rede para monitorar o tráfego e coletar informações estatísticas da operação de um segmento de rede local, além de realizar o diagnóstico remoto de falhas e erros ocorridos no segmento de rede a partir de funcionalidades de um analisador de protocolo suportadas pelo correspondente elemento RMON” [Carvalho97]. Segundo [NetScout96] o fato do RMON1 só trabalhar na camada MAC significa que somente apresenta estatísticas para tráfego agregado, porém não apresenta estatísticas para camadas diferentes de várias pilhas de protocolos (IP, FTP, IPX). Significa também que, por não serem capazes de monitorar a camada de rede, os dispositivos RMON1 não distinguem o tráfego neste segmento originado através de um roteador, o que é uma grande deficiência. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 63 Assim, muitas aplicações usuais como uma medição do tempo de resposta cliente/servidor ou uma provisão de estatística para as sete camadas, não é possível através deste protocolo unicamente. O RMON2 opera no nível da camada de rede e camadas superiores, complementando o RMON1, possibilitando coletar informações estatísticas e monitorar a comunicação fim-a-fim e o tráfego gerado por diferentes tipos de aplicação. Remote Monitoring Management Information Base (RMON-MIB) A implementação das funções do protocolo RMON somente é viável mediante o suporte de uma base de dados de gerenciamento (RMON-MIB) associada a cada elemento RMON da rede. Grupos da RMON1-MIB: Para a RMON1-MIB, foram especificados nove grupos básicos de variáveis [Carvalho97]: 1. Estatístico: mantém estatísticas de utilização, tráfego e taxas de erros ocorridos em um segmento de rede. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 64 2. Histórico: permitem controlar o processo de amostragem (definição dos intervalos) de informações do grupo estatístico e registra-as, empregadas na análise do comportamento de uma rede e que oferecem subsídios para um gerenciamento próativo. 3. Alarmes: possibilitam estabelecer condições limites de operação de uma rede que deve provocar a geração de alarmes. 4. Hosts: contêm informações relativas ao tráfego gerado e recebido pelos hosts conectados através da referida rede. 5. Classificação de n hosts (top n hosts): permite classificar os hosts segundo critérios pré-definidos, como determinar quais os hosts conectados através da rede que geram maior tráfego em um dado período do dia. 6. Matriz: contém informações de utilização da rede e taxa de erros na forma de matriz, associando pares de endereços MAC de elementos de rede. 7. Filtro: define condições associadas a pacotes trafegados pela rede, que uma vez satisfeitas implicam captura de tais pacotes pelo elemento RMON ou no registro de estatísticas baseadas nos mesmos. 8. Captura de Pacotes: determina como devem ser capturados os dados dos pacotes trafegados pela rede a serem enviados aos gerentes. Como default, são capturados os cem primeiros bytes dos pacotes filtrados pelo elemento RMON. 9. Evento: define todos os eventos que implicam a criação de registros (logs) de eventos e o envio de informações pertinentes do elemento RMON aos gerentes. A implementação de todos os grupos é opcional, embora exista uma relação de dependência entre alguns deles, como é o caso do grupo de “classificação de n hosts” em relação ao grupo de hosts. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 65 Grupos da RMON2-MIB: Para a RMON2-MIB, foram especificados oito grupos básicos de variáveis: 1. Grupo Protocol Directory (protocolDir): lista os protocolos que o probe tem capacidade de monitorar e permite a adição, remoção e configuração das entradas nesta lista. 2. Grupo Protocol Distribution (protocolDist): coleta as quantidades relativas de octetos e pacotes para os diferentes protocolos detectados no segmento da rede. 3. Grupo Address Map (addressMap): lista endereços MAC para endereços de rede descobertos pelo probe e em qual interface eles estavam na última utilização. 4. Grupo Network Layer Matrix (nlMatrix): calcula a quantidade de tráfego enviado entre cada par de endereço de rede descoberto pelo probe. Embora hlMatrixControlTable também tenha objetos que controlam alMatrixTable, a implementação da alMatrixTable não é necessária para a implementação total desse grupo. 5. Grupo Application Layer Host (alHost): calcula a quantidade de tráfego, por protocolo, enviado de e para cada endereço de rede descoberto pelo probe. Implementações desse grupo requerem a implementação do grupo Network Layer Host. 6. Grupo Application Layer Matrix (alMatrix): calcula a quantidade de tráfego, por protocolo, enviado de cada par de endereço de rede descoberto pelo probe. Implementações desse grupo requerem a implementação do grupo Network Layer Matrix. 7. Grupo User History Collection (usrHistory): combina mecanismos usados nos grupos alarm e history para prover um mecanismo de história especificado pelo usuário utilizando três tabelas adicionais: duas de controle e uma de dados. Esta função tem sido feita tradicionalmente por aplicações NMS, via polling periódico. O grupo userHistory permite que essa tarefa seja descarregada em um probe RMON. Os dados são coletados da mesma maneira que qualquer tabela de dados history (etherHistoryTable) exceto que o usuário especifica as instâncias MIB a serem Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 66 coletadas. Os objetos são coletados em bucket-groups, com o intuito de que todas as instâncias MIB no mesmo bucket-group sejam coletadas da forma mais atômica possível pelo probe RMON. 8. Grupo Probe Configuration (probeConfig): permite controlar a configuração de vários parâmetros operacionais do probe. As entradas de usrHistoryObject associadas com outra usrHistoryControlTable não precisam estar ativas antes da entrada de controle estar ativada. WWW Proxy Server Um servidor de Proxy World Wide Web (WWW), ou simplesmente servidor de Proxy Web, é um servidor Hyper-Text Transfer Protocol (HTTP) especializado. A utilização primária desse servidor é permitir acesso à Internet para clientes que estejam por trás de um firewall 1, podendo acessar completamente a Internet passando por um host firewall com o mínimo de esforço e sem comprometer a segurança. O servidor Proxy espera pelas requisições dos clientes de dentro do firewall e repassa estas requisições para um servidor Internet remoto, fora do firewall. O servidor Proxy recebe as respostas do servidor externo e envia-as de volta ao cliente interno. Todos os clientes dentro de uma mesma sub-rede usam o mesmo servidor de Proxy, o que permite ao Proxy fazer cache 2 eficiente de todos os documentos que são requisitados por um certo número de clientes. Os clientes sob os servidores Proxy sentem-se como se estivessem recebendo os documentos diretamente do servidor remoto. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 67 Servidor Proxy está rodando em um host com firewall e faz conexões com servidores externos usando o software firewall. A habilidade que o Proxy tem no uso do cache torna-o atrativo para aqueles que não estão dentro do firewall. Configurar um servidor Proxy é fácil e os mais populares programas clientes Web já tem suporte a essa ferramenta, tornando simples a tarefa de configurar um grupo de trabalho inteiro para usar o serviço de cache do Proxy. Isto reduz os custos com tráfego de rede porque muitos documentos que são requisitados são lidos do cache local. Clientes sem Domain Name Service (DNS) também podem usar a Web. O endereço IP do Proxy é a única informação realmente necessária. Organizações usando endereços, por exemplo, classe A (como 10.*.*.*), em suas redes particulares, podem ainda acessar a Internet contanto que o Proxy seja visível tanto para a rede particular como para a Internet [Process97]. Muitos servidores Proxy são implementados através de um método de acesso simples. Porém, alguns podem aceitar ou não as requisições Internet, de acordo com o protocolo destas requisições. Em alguns casos, o servidor Proxy pode permitir chamadas de servidores File Transfer Protocol (FTP) enquanto recusa chamadas de servidores HTTP. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 68 U NIDADE 11 Objetivo: Conhecer as aplicações de servidor Proxy; Comunicação através de um Servidor HTTP; Controle de acesso seletivo a Internet. SERVIDOR PROXY É utilizado com diversos objetivos: • Permitir e restringir o acesso de clientes à Internet baseado no endereço IP do cliente. • Cache de documentos para documentos muito acessados pelos clientes. • Controle seletivo de acesso à Internet e às sub-redes, baseado na Uniform Resource Location (URL). • Prover acesso à Internet para companhias usando redes privativas. • Conversão de dados para o formato Hyper-Text Markup Language (HTML), tornandoos acessíveis através de um navegador. Acesso à Internet: Algumas máquinas de uma rede local podem não estar habilitadas para acessar os recursos da Internet diretamente por estarem rodando em sistemas sob um firewall de proteção. Neste caso, o servidor Proxy pode enviar os documentos solicitados por estes navegadores. O servidor recebe a requisição do navegador em formato de URL, analisa a informação requisitada, converte-a para o formato HTML e a envia para o navegador dentro do firewall. O servidor pode manejar todas as requisições da rede, se ele for a única máquina diretamente conectada à Internet. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 69 Cache de Documentos: Os clientes dentro de uma mesma sub-rede acessam a um mesmo servidor Proxy. Alguns servidores mantêm um cache de documentos Internet para clientes dentro de uma rede local. Cache de documentos significa manter uma cópia local de um documento Internet, evitando que o servidor requisite este documento mais vezes. O cache é mais efetivo se realizado em um servidor Proxy do que no sistema cliente. Isto minimiza o espaço de disco utilizado, uma vez que apenas uma cópia do documento é feita. O cache de documentos no servidor Proxy permite que documentos muitas vezes referenciados por múltiplos navegadores possam ser disponibilizados através desse servidor com maior eficiência. Através do acesso ao cache é possível acessar a Internet mesmo que o servidor HTTP ou a rede externa estejam com problemas e fora de funcionamento. O acesso às informações mantidas no servidor Proxy, possibilita uma melhoria na utilização dos recursos da rede, como o acesso a servidores FTP que normalmente estão fora de funcionamento ou muito cheios, mais que podem ter seus arquivos armazenados localmente. Existem muitos problemas que necessitam ser resolvidos quando o uso do cache é introduzido: qual o tempo máximo de armazenamento de um documento e como decidir quais documentos vale a pena ser colocados no cache. A especificação do tempo de vida de documentos foi prevista pelo protocolo HTTP que contém um objeto especificando a data em que o documento já não será mais válido. Entretanto, existem muito poucos servidores que atualmente fornecem essa informação, sendo necessário confiar em estimativas heurísticas e grosseiras do tempo de vida do documento. Controle Seletivo do Acesso à Internet: Quando se utiliza um servidor Proxy é possível filtrar as transações dos clientes no nível de protocolo, controlar o acesso aos serviços para métodos individuais, hosts e domínios. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 70 Alguns servidores Proxy permitem: • Decidir quais requisições serão respondidas e quais serão descartadas. • Especificar as URL ou a URL Mask (máscara de rede) dos hosts da rede que não serão atendidos pelo servidor Proxy. • Especificar quais protocolos os clientes podem utilizar, baseado nos endereços IP. Por exemplo, pode ser permitido que um cliente faça requisições HTTP, mas não permitir que ele utilize o protocolo FTP. Comunicação Através de um Servidor HTTP: Muitos clientes têm um endereço IP próprio e uma conexão direta com a Internet. Quando uma requisição HTTP normal é feita por um cliente, o servidor identifica somente o path e a “porção chave” da URL requisitada. Outras partes da URL, como o especificador de protocolo “http:” e o nome do servidor são claros para o servidor HTTP remoto. O path requisitado especifica um documento ou um script CGI no sistema de arquivos local do servidor ou ainda algum outro recurso disponível daquele servidor. Exemplo: Quando um usuário digita: http://www.empresaX.com.br/documentos/Proxy.html O navegador converte para: GET/documentos/Proxy.html O navegador conecta-se ao servidor rodando no endereço www.empresaX.com.br, envia o comando e espera por uma resposta. O navegador fez uma requisição a um servidor HTTP Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 71 especificando o recurso requisitado. Não há especificação de protocolo ou nome de host na requisição. A requisição especificou o path (diretório de dados) da informação e o documento Proxy.html localizado no diretório de dados. A resposta é um documento ou uma mensagem de erro. Comunicação Através de um Servidor Proxy O servidor Proxy atua tanto como um sistema servidor quanto um sistema cliente. Ele é um servidor quando aceita uma requisição HTTP de um navegador, e age como um cliente quando se conecta ao servidor remoto para requerer um documento. Este servidor usa o campo cabeçalho da requisição passada pelo navegador, quando ele vai se conectar ao servidor remoto. Isto significa que o navegador não perde sua funcionalidade quando está conectado através de um Proxy. Um servidor Proxy completo deve ser capaz de se comunicar com todos os protocolos Web (HTTP, FTP, Gopher e WAIS). Proxies que trabalham com apenas um protocolo Internet (HTTP) são possíveis, porém o navegador Web pode acessar outros servidores Proxy para utilizar todos os protocolos Internet. Quando um navegador envia uma requisição, estando sob um servidor Proxy, o navegador sempre usa o protocolo HTTP para as transações com o servidor Proxy. Isto acontece mesmo quando o navegador quer acessar o servidor remoto usando outro protocolo, como o FTP. Ao invés de especificar apenas o diretório de dados e o documento requerido ao servidor Proxy, o navegador deve especificar toda a URL. Deste modo o servidor Proxy tem toda a informação necessária para fazer a requisição ao servidor remoto especificado na URL requisitada, utilizando o protocolo especificado. A única diferença entre uma transação HTTP normal e uma utilizando Proxy é que a transação usando o servidor Proxy requer a URL completa do documento. Quando utilizamos um servidor Proxy como um sistema cliente, ele age como um navegador nas transações de documentos. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 72 Exemplo: Quando um usuário digita: http://www.empresaX.com.br/documentos/Proxy.html O navegador converte a URL: GET http://www.empresaX.com.br/documentos/Proxy.html O navegador então se conecta ao servidor Proxy e este provê a conexão com a Internet. O servidor Proxy converte a requisição para: GET /documentos/Proxy.html O servidor Proxy conecta-se ao servidor rodando em www.empresax.com.br, envia o comando e espera por uma resposta. Quando recebe a resposta, o Proxy repassa-a ao cliente. Aprendizagem por Reforço para Emergência de Comportamentos em Navegação Autônoma de Robô Dotado de Visão (Edivaldo de Araujo Pereira).pdf http://www.din.uem.br/arquivos/pos-graduacao/mestrado-em-ciencia-dacomputacao/dissertacoes/Aprendizagem%20por%20Reforco%20para%20Emergencia %20de%20Comportamentos%20em%20Navegacao%20Autonoma%20de%20Robo% 20Dotado%20de%20Visao%20%28Edivaldo%20de%20Araujo%20Pereira%29.pdf/vie Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 73 U NIDADE 12 Objetivo: Conhecer os tipos de Dados; Características Gerais e aplicações dos Ponteiros. ESTRUTURA DE DADOS Um dos temas fundamentais da ciência da computação, é aplicado com os mais diferentes propósitos nas mais diversas áreas do conhecimento. Sabe-se que algoritmos manipulam dados. Quando estes dados estão organizados (dispostos) de forma coerente, caracteriza uma forma (estrutura) de dados. São a organização e os métodos que manipulam esta determinada estrutura que lhes conferem singularidade. As estruturas de dados são chamadas tipos de dados compostos e se dividem em dois: Estruturas homogêneas (vetores e matrizes): são conjuntos de dados formados pelo mesmo tipo de dado primitivo. Estruturas heterogêneas (registros): são conjuntos de dados formados por tipos de dados primitivos diferentes (campos do registro) em uma mesma estrutura. A escolha de uma estrutura de dados apropriada pode tornar um problema complicado em uma solução bastante trivial. O estudo das estruturas de dados está em constante Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 74 desenvolvimento (assim como o de algoritmos), mas, apesar disso, existem certas estruturas clássicas que se comportam como padrões. Considerações Gerais A automatização de tarefas é um aspecto marcante da sociedade moderna e na ciência da computação houve um processo de desenvolvimento simultâneo e interativo de máquinas (hardware) e dos elementos que gerenciam a execução automática (software) de uma tarefa. Nesta grande evolução do mundo computacional, um fator de relevante importância é a forma de armazenar as informações, já que, informática é a ciência da informação, aliando o grande desenvolvimento do hardware e do software com a forma de armazenamento e tratamento da informação. Por isso a importância das estruturas de dados, que são formas otimizadas de armazenamento e tratamento das informações eletronicamente. As estruturas de dados foram espelhadas em formas naturais de armazenamento do nosso dia-a-dia, ou seja, é a transformação de uma forma de armazenamento já conhecida e utilizada no nosso mundo para o mundo computacional. Por isso, cada tipo de estrutura de dados possui vantagens e desvantagens e cada uma delas tem sua área de atuação (massa de dados) ótima. O objetivo deste capítulo é introduzir àquele que já possua um conhecimento da linguagem Pascal, no mundo das estruturas de dados, a teoria (conceitos) e a prática (implementação) das estruturas de dados mais utilizadas no dia-a-dia do profissional de informática. Se somente teve contato com estruturas de dados estáticas (vetores e matrizes) e está familiarizado com suas facilidades e dificuldades de uso, agora novas estruturas de dados dinâmicas serão apresentadas, ou seja, crescem e diminuem de acordo com a necessidade, sendo necessárias várias rotinas que controlam esta dinamicidade das estruturas. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 75 Tipo Apontador (Ponteiro) Um das características mais marcantes do Pascal é permitir a criação e destruição de variáveis que possibilita a implementação das estruturas de dados dinâmicos durante a execução do programa, chamadas variáveis dinâmicas. Uma variável dinâmica não é declarada na parte de declaração de variáveis porque esta ainda não existe antes do seu tempo de execução, ela não possui sequer um nome, ficando a cargo dos ponteiros desempenharem esta função de “nome”. Uma variável dinâmica é sempre referenciada indiretamente por um apontador, ou seja, para cada variável dinâmica criada deve existir um apontador, que literalmente aponta para ela, permitindo a sua manipulação. A principal função dos ponteiros é permitir a criação e a manipulação das variáveis dinâmicas, as quais irão compor as estruturas de dados dinâmicas. Características Gerais: Os apontadores são declarados como as demais variáveis, seguindo a sintaxe da linguagem de programação utilizada. São variáveis que armazenam o endereço de memórias de outras variáveis, funcionando assim, como meio de referenciar uma variável dinâmica, permitindo o acesso a essa variável. Outra característica é que na sua declaração deve ser indicado qual o tipo de variável este irá armazenar o endereço. Ponteiros no Pascal Declaração: a sintaxe de declaração de um tipo ponteiro é o seguinte: type identificador = ^ tipo ; {onde o símbolo ^ indica que o identificador é um ponteiro}, isso indica que teremos um ponteiro com o nome de identificador com a capacidade de armazenar o endereço de memória de uma variável desse tipo. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 76 Como os ponteiros são utilizados para implementar as estruturas de dados dinâmicas, o mais comum é que seja criado um tipo do ponteiro desejado (type) e depois declaramos (var) as variáveis ponteiros deste tipo. Exemplo: type Nome: string[35]; PontNome : ^Nome; var nome1,nome2,nome3 : PontNome; Inicialização: como os ponteiros armazenam endereços de memória, assim que eles são declarados o seu conteúdo é um valor desconhecido (como as demais variáveis), ou seja, não podemos prever para qual área de memória este está apontando, por isso, a linguagem Pascal permite que um ponteiro seja inicializado da seguinte forma: identificador: = nil; {nil é um valor constante pode ser armazenado em uma variável do tipo apontador para indicar que a variável não contém endereço de memória de nenhuma variável dinâmica } Criação de uma variável dinâmica: para criação de uma variável dinâmica é necessário que exista uma variável do tipo apontador para o tipo da variável que se deseja criar, e então utilizar-se o procedimento new, cuja sintaxe é a seguinte: new(identificador); {onde, identificador deve ser uma variável do tipo ponteiro para o tipo de variável a ser criada} Observação: quando uma variável dinâmica é criada através do procedimento NEW, um espaço de memória do tamanho da variável criada é alocado na memória heap e este espaço ficará alocado até ser liberado. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 77 Destruição de uma variável dinâmica: para que o espaço de memória heap seja liberado é necessário que a variável dinâmica seja destruída, isso pode ser feito através do procedimento dispose, utilizando a seguinte sintaxe: dispose (identificador); Referência a uma variável dinâmica: quando uma variável dinâmica é criada através de um ponteiro, este pode ser utilizado para referenciá-la, permitindo a manipulação (leitura, atribuição, escrita, etc.) desta variável como outra variável qualquer, para isso devemos utilizar o símbolo ^ após o nome da variável do tipo ponteiro: identificador^ Marcação e liberação de uma área no heap – mark (ponteiro) e release (ponteiro) Exemplo: program ManipulacaoVariaveisDinamicas; type nome = string[30]; ponteiro = ^nome; var p1, p2 : ponteiro; begin new(p1); new(p2); readln(p1^); p2^ := 'José Maria'; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 78 p1^:= p1^ + ' ' + p2^; writeln(p1^); end. Revista da Sociedade Brasileira de Redes Neurais http://www.sbrn.org.br/ Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 79 U NIDADE 13 Objetivo: Diferenciar os tipos de Listas Encadeadas, Pilhas, Deck e Filas. LISTAS ENCADEADAS Listas Encadeadas Esta classe de estruturas de dados foi inspirada numa forma de armazenamento bastante comum no cotidiano, pois o homem utiliza-se da idéia de listar coisas com o objetivo de melhor organizá-las. Baseado nesse conceito a estrutura de dados lista foi concebida, onde cada elemento da lista armazena uma informação útil e uma, ou mais, referência para outro elemento (limitação do mundo computacional) e assim por diante. Desta forma, com o auxílio dos ponteiros, pode-se acrescentar ou retirar elementos conforme a necessidade. Arranjo da memória de uma lista encadeada Listas encadeadas geralmente são utilizadas para criar vetores de extensão de memória desconhecida, pela sua característica dinâmica, permitindo que o vetor (lista) tenha sempre o tamanho necessário. Listas Simplesmente Encadeadas Este tipo de lista é o mais simples. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 80 Segue as seguintes regras: • Deve existir um ponteiro que aponte para o primeiro elemento da lista (início da lista); • Cada elemento, ou nó, da lista aponta para o próximo sucessivamente (daí o nome listas encadeadas); • O último elemento deve apontar para NIL, indicando o final da lista. Estrutura básica de um nó da lista: Declaração: type apontador = ^no; InfoType = record campos do registro; end; no = record info : InfoType; prox : apontador; end; Onde: nó é um registro com dois campos: info e prox, sendo que info é um tipo registro do tipo infotype contendo as informações (variáveis) úteis e prox é um ponteiro capaz de armazenar o endereço de memória de um registro do tipo nó (elemento da lista). Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 81 Onde: INICIO é um ponteiro que guarda o endereço de memória do primeiro elemento da lista. Aplicação: são utilizadas quando há necessidade de criar vetores com tamanho variável (dinâmico). Sua limitação é somente permitir o caminhamento unidirecional na lista, pois, como as referências iniciam no primeiro elemento da lista e seguem unidirecionalmente até o último elemento, não é possível regressar no caminhamento através da lista. Mesmo com esta limitação, as listas são largamente utilizadas, pela sua simplicidade de implementação fornecendo um bom índice entre custo/benefício, na gerencia, em memória, de conjuntos de dados não muito extensos. Operações Básicas (Inclusão, Pesquisa, Alteração e Exclusão): Como toda estrutura de armazenamento de dados, as listas simplesmente encadeadas devem suportar as operações de cadastro das informações. Uma particularidade é o fato de apresentar uma pequena variação no código de inclusão e exclusão. De acordo com o local onde o novo elemento deverá ser inserido (no início, meio ou fim), e ainda assim, esta variação pode ocorrer de acordo com os mecanismos de controle utilizados na gerência da lista, tais como, utilização de um único ponteiro apontando para o inicio da lista, ou dois ponteiros, um para o início e outro para o final. As operações de cadastro sobre listas devem ter o cuidado de analisar se o valor do ponteiro para o início é diferente de NIL, pois, se for igual a lista está vazia e certamente as rotinas deverão efetuar procedimentos especiais. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 82 • Inclusão: levando em consideração o uso de um único ponteiro para o início: procedure InsereLista (var inicio : ponteiro ; info : InfoType); No início No fim No meio • Inclusão: levando em consideração o uso de dois ponteiros (início e fim): procedure InsereLista (var inicio, fim : ponteiro; info : InfoType); No início No fim No meio (ordenada) • Pesquisa: normalmente, usa-se uma função que, se encontrar, retornará o endereço do nó, caso contrário, retornará o valor NIL: Function PesquisaLista (inicio : ponteiro ; info : InfoType) : ponteiro; • Alteração: utilizando a função de pesquisa, obtêm-se o endereço do nó a ser alterado e de posse deste endereço, altera-se os dados deste nó. procedure AlteraLista (inicio : ponteiro ; info : InfoType); • Exclusäo: usa-se um procedimento recebendo o início da lista e os dados do nó ser excluído, então, através do campo identificado (chave) efetua-se uma pesquisa e localiza-se o nó anterior ao nó a ser excluído, e então devemos liberar o espaço alocado para o nó excluído e fazer o seu anterior apontar para o posterior. procedure Exclui Lista (inicio : ponteiro ; info : InfoType); No início Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 83 No meio No fim Listas Duplamente Encadeadas É uma lista encadeada, onde cada elemento contém um ponteiro para o nó anterior e um ponteiro para o nó posterior, permitindo o caminhamento nos dois sentidos da lista, diferentemente, da lista simplesmente encadeada, que só permitia em um único sentido. Aplicação: é semelhante às listas simplesmente encadeadas, mas aquela é mais apropriada, quando há a necessidade de caminhamento em ambos os sentidos, isso faz com que, novas sub-rotinas sejam utilizadas nas listas duplamente encadeadas, tais como Anterior, Posterior. Operações Básicas (Inclusão, Pesquisa, Alteração, Exclusão, Anterior e Posterior): Anterior: deverá retornar o endereço do nó anterior ou NIL, caso não exista anterior: function Anterior (Endereço No : ponteiro) : ponteiro; Posterior: deverá retornar o endereço do nó posterior ou NIL, caso não exista posterior: function Posterior (Endereço No : ponteiro) : ponteiro; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 84 Filas Uma fila é uma lista linear de informação que é acessada na seguinte ordem: o “primeiro que entra, primeiro que sai” (FIFO – First In First Out). Uma fila não permite acesso a um elemento que não seja o primeiro. Aplicação: são utilizadas na administração de recursos compartilhados, impondo uma prioridade por ordem de chegada, como as filas de impressão, onde, cada documento espera sua vez para ser impresso. Operações Básicas (Inclusão e Exclusão): Existem, basicamente, duas operações básicas a serem implementadas nos filas: adicionar e remover. É comum a utilização de um ponteiro para o início e outro para o fim do fim, facilitando assim as operações. • Adicionar: procedure adiciona (ver inicio : ponteiro ; info : InfoType); • Remover: function remove (ver inicio : ponteiro) : InfoType; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 85 Pilhas Análogo a estrutura fila, a estrutura pilha pré-define a posição de inserção e remoção dos elementos, sendo que, a estratégia é “último que entra, primeiro que sai” (LIFO – Last In First Out). Aplicação: um bom exemplo da aplicação das pilhas é a gerencia das chamadas as subrotinas utilizadas pela maioria dos compiladores das linguagens de programação. Operações Básicas (Inclusão e Exclusão): Por raches históricas, as duas operações primárias de pilha – inserção e retirada – são normalmente chamadas de push e pop, respectivamente. Para implementar uma pilha são necessárias duas funções: • PUSH: coloca um elemento no topo da pilha: procedure push (var inicio : ponteiro; info : InfoType); • POP: retira um elemento do topo da pila: function pop (var inicio : ponteiro) : InfoType; Deck É uma união das pilhas e filas, ou seja, só é permitido, manipular os elementos das extremidades. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 86 Operações Básicas (Inclusão e Exclusão): Pode-se inserir e retirar no início e no fim. Faça uma agenda eletrônica que utilize os seguintes campos: código, nome, endereço, telefone e uma observação, que permita todas as operações de cadastro (inclusão, consulta, alteração e exclusão). Esta agenda deverá utilizar listas simplesmente encadeadas, onde, as informações, deverão ser carregadas e salvas em arquivos, da seguinte maneira, quando o programa agenda for carregado, este deverá carregar o arquivo em disco para uma lista em memória, e quando o programa for encerrado, a lista deverá ser descarregada no arquivo em disco. Utilizando a agenda criada anteriormente, acrescente a possibilidade de navegação (para frente e para traz) na rotina de pesquisa. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 87 U NIDADE 14 Objetivo: Conhecer função de hashing. HASH Hash é largamente utilizada para organização dos arquivos em discos nos banco de dados. Particularidade: é utilizada em memória para melhorar o tempo de busca de elementos armazenados em listas encadeadas. A idéia básica é criar uma série de sub-listas no lugar de uma única lista maior. A partir da aplicação de uma determinada função (chamada função de hashing1) sobre a chave de busca do elemento, decide-se em qual das sub-listas o elemento deve ser ou estar armazenado. Procede-se, então, uma busca na sub-lista determinada. Portanto, ao invés de realizar a busca em toda a lista, faz-se uma busca num subconjunto da lista, conseguindo fazer uma busca eficiente. Embora os elementos não fiquem dispostos ordenadamente, o hash permite uma melhora na eficiência da localização individual dos elementos em relação às listas. Por existir uma variedade enorme nas funções de hashing, a questão principal é escolher uma função adequada para garantir uma distribuição uniforme dos elementos nas sub-listas. Os ponteiros iniciais de cada sub-lista são dispostos num vetor. O número de sub-listas (dimensão deste vetor) define o tamanho da chamada tabela de hash. 1 Tem como objetivo resolver duas questões importantes: • Garantir a integridade do documento recebido; • Agilizar a decifração do documento, pois a criptografia assimétrica é muito lenta na decifragem, não deixando de ser eficiente. - Ao aplicar a função de hashing ao documento é gerado um resumo que é chamado de código hash. Este deve ter duas características fundamentais: - Deve ser único para cada documento; - Não deve ser possível recompor o documento a partir do código hash. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 88 A forma mais comum da função hashing é a aplicação, no campo-chave de ordenação, da função módulo pelo tamanho da hash table e o resultado desta operação indica qual a sublista do elemento. Caso o campo-chave de ordenação não seja numérico, pode-se utilizar artifícios para transformá-lo em um campo numérico e, então, aplicar a função hashing. O hash é utilizado para buscar uma melhor eficiência na busca de elementos. Este tipo de hash em memória é muito utilizado nas implementações das tabelas de símbolos dos compiladores das linguagens de programação. Projetos de Redes Neurais http://www.di.ufpe.br/~compint/projetos-rn.html Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 89 U NIDADE 15 Objetivo: Diferenciar Banco de Dados e Processamento Tradicional de Arquivos; Caracterização de Administrador de Banco de Dados; Utilização de SGBD. BANCO DE DADOS A tecnologia aplicada aos métodos de armazenamento de informações vem crescendo e gerando um impacto cada vez maior no uso de computadores, em qualquer área em que os mesmos podem ser aplicados. Define-se “banco de dados” como um conjunto de “dados” devidamente relacionados. “Dados” são “fatos conhecidos” que podem ser armazenados e que possuem um significado implícito. Porém, o significado do termo “banco de dados” é mais restrito que a definição dada acima. Um banco de dados possui as seguintes propriedades: • É uma coleção lógica coerente de dados com um significado inerente; uma disposição desordenada dos dados não pode ser referenciada como um banco de dados; • É projetado, construído e populado com dados para um propósito específico; um banco de dados possui um conjunto pré-definido de usuários e aplicações; • Representa algum aspecto do mundo real, o qual é chamado de “mini-mundo” ; qualquer alteração efetuada no mini-mundo é automaticamente refletida no banco de dados. Um banco de dados pode ser criado e mantido por um conjunto de aplicações desenvolvidas especialmente para esta tarefa ou por um “Sistema Gerenciador de Banco de Dados” (SGBD), que permite aos usuários criar e manipular bancos de dados de propósito gerais. O Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 90 conjunto formado por um banco de dados mais as aplicações que manipulam o mesmo é chamado de “Sistema de Banco de Dados”. Abordagem: Banco de Dados X Processamento Tradicional de Arquivos Auto Informação: Uma característica importante da abordagem Banco de Dados é que o SGBD mantém os dados e a forma como são armazenados, contendo uma descrição completa do banco de dados. Estas informações são armazenadas no catálogo do SGBD (Meta Dados), o qual contém informações como a estrutura de cada arquivo, o tipo e o formato de armazenamento de cada tipo de dado, restrições, etc. No processamento tradicional de arquivos, o programa que irá manipular os dados deve conter este tipo de informação, ficando limitado a manipular as informações que o mesmo conhece. Utilizando a abordagem banco de dados, a aplicação pode manipular diversas bases de dados diferentes. Ambiente de Sistema de Banco de Dados Separação entre Programas e Dados No processamento tradicional de arquivos, a estrutura dos dados está incorporada ao programa de acesso. Desta forma, qualquer alteração na estrutura de arquivos implica na Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 91 alteração no código fonte de todos os programas. Já na abordagem banco de dados, a estrutura é alterada apenas no catálogo, não alterando os programas. Abstração de Dados: o SGBD deve fornecer ao usuário uma “representação conceitual” dos dados, sem fornecer muitos detalhes de como as informações são armazenadas. Um “modelo de dados” é uma abstração de dados que é utilizada para fornecer esta representação conceitual utilizando conceitos lógicos como objetos, suas propriedades e seus relacionamentos. A estrutura detalhada e a organização de cada arquivo são descritas no catálogo. Múltiplas Visões de Dados: como um conjunto de informações pode ser utilizado por um conjunto diferenciado de usuários, é importante que estes usuários possam ter “visões” diferentes da base de dados. Uma “visão” é definida como um subconjunto de uma base de dados, formando deste modo, um conjunto “virtual” de informações. Usuários: Para um grande banco de dados, existe um grande número de pessoas envolvidas, desde o projeto, uso até manutenção. Administrador de Banco de Dados (DBA) Em um ambiente de banco de dados, o recurso primário é o banco de dados e secundário o SGBD e os softwares relacionados, cabendo ao Administrador de Banco de Dados a responsabilidade pela autorização de acesso ao banco de dados e pela coordenação e monitoração de seu uso. Projetista de Banco de Dados: responsável pela identificação dos dados que devem ser armazenados no banco de dados, escolhendo a estrutura correta para representar e armazenar dados. Atuam como staff do DBA, assumindo outras responsabilidades após a construção do banco de dados. Tem também a função de avaliar as necessidades de cada grupo de usuários para definir as visões que serão necessárias, integrando-as, fazendo com que o banco de dados seja capaz de atender a todas as necessidades dos usuários. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 92 Usuários Finais: Existem basicamente três categorias de usuários finais do banco de dados, fazendo consultas, atualizações e gerando documentos: • Usuários casuais: acessam o banco de dados casualmente, mas que podem necessitar de diferentes informações a cada acesso; utilizam sofisticadas linguagens de consulta para especificar suas necessidades; • Usuários novatos ou paramétricos: utilizam porções pré-definidas do banco de dados, utilizando consultas preestabelecidas que já foram exaustivamente testadas; • Usuários sofisticados: são usuários que estão familiarizados com o SGBD e realizam consultas complexas. Analistas de Sistemas e Programadores de Aplicações. Os analistas determinam os requisitos dos usuários finais e desenvolvem especificações para transações que atendam estes requisitos, e os programadores implementam estas especificações como programas, testando, depurando, documentando e dando manutenção no mesmo. É importante que, tanto analistas quanto programadores, estejam a par dos recursos oferecidos pelo SGBD. Vantagens e desvantagens do uso de um SGBD: Controle de Redundância: no processamento tradicional de arquivos, cada grupo de usuários deve manter seu próprio conjunto de arquivos e dados. Desta forma, acaba ocorrendo redundâncias que prejudicam o sistema com problemas como: Toda vez que for necessário atualizar um arquivo de um grupo, todos os grupos devem ser atualizados para manter a integridade dos dados no ambiente como um todo; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 93 A redundância desnecessária de dados leva ao armazenamento excessivo de informações, ocupando espaço que poderia estar sendo utilizado com outras informações. Compartilhamento de Dados: um SGBD multiusuário deve permitir que múltiplos usuários acessem o banco de dados ao mesmo tempo. Este fator é essencial para que múltiplas aplicações integradas possam acessar o banco. Deve manter o controle de concorrência para assegurar que o resultado de atualizações seja correto. Um banco de dados multiusuários deve fornecer recursos para a construção de múltiplas visões. Restrição a Acesso não Autorizado: um SGBD deve fornece um subsistema de autorização e segurança, o qual é utilizado pelo DBA para criar “contas” e especificar as restrições destas contas; o controle de restrições se aplica tanto ao acesso aos dados quanto ao uso de softwares inerentes ao SGBD. Representação de Relacionamentos Complexos entre Dados: um banco de dados pode incluir uma variedade de dados que estão inter-relacionados de várias formas. Um SGBD deve fornecer recursos para se representar uma grande variedade de relacionamentos entre os dados, bem como, recuperar e atualizar os dados de maneira prática e eficiente. Tolerância a Falhas: um SGBD deve fornecer recursos para recuperação de falhas tanto de software quanto de hardware. Quando não Utilizar um SGBD: Em algumas situações, o uso de um SGBD pode representar uma carga desnecessária aos custos quando comparado à abordagem processamento tradicional de arquivos como: • Alto investimento inicial na compra de software e hardware adicionais; • Generalidade que um SGBD fornece na definição e processamento de dados; • Sobrecarga na provisão de controle de segurança, controle de concorrência, recuperação e integração de funções. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 94 Problemas adicionais podem surgir caso os projetistas ou administradores de banco de dados não elaborem os projetos corretamente ou se as aplicações não são implementadas de forma apropriada. Se o DBA não administrar o banco de dados de forma apropriada, tanto a segurança quanto a integridade dos sistemas podem ser comprometidas. A sobrecarga causada pelo uso de um SGBD e a má administração justificam a utilização da abordagem processamento tradicional de arquivos em casos como: • O banco de dados e as aplicações são simples, bem definidas e não se espera mudanças no projeto; • A necessidade de processamento em tempo real de certas aplicações, que são terrivelmente prejudicadas pela sobrecarga causada pelo uso de um SGBD; • Não haverá múltiplo acesso ao banco de dados. Conceitos e Arquiteturas de um SGBD. O que é Phishing? Phishing é uma tentativa fraudulenta, feita geralmente através de email, para roubar suas informações pessoais. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 95 U NIDADE 16 Objetivo: Conhecer Níveis, Arquitetura e Modelagem de Dados; Possíveis Linguagens para Manipulação de Dados DADOS Modelos de Dados Uma das principais características do banco de dados é que fornece alguns níveis de abstração de dados omitindo ao usuário final, detalhes de como estes dados são armazenados. Um “modelo de dados” é um conjunto de conceitos que podem ser utilizados para descrever a estrutura “lógica” e “física” de um banco de dados. Por “estrutura” podemos compreender o tipo dos dados, os relacionamentos e as restrições que podem recair sobre os dados. Os modelos de dados podem ser basicamente de dois tipos: 1. Alto nível: ou modelo de dados conceitual, fornece uma visão mais próxima do modo como os usuários visualizam os dados realmente; 2. Baixo nível: ou modelo de dados físico, fornece uma visão mais detalhada do modo como os dados estão realmente armazenados no computador. Esquemas e Instâncias Em qualquer modelo de dados utilizado, é importante distinguir a “descrição” do banco de dados do “banco de dados” por si próprio. A descrição de um banco de dados é chamada de “esquema de um banco de dados” e é especificada durante o projeto do banco de dados. Geralmente, poucas mudanças ocorrem no esquema do banco de dados. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 96 Os dados armazenados em um banco de dados em um determinado instante do tempo formam um conjunto chamado de “instância do banco de dados”. A instância altera toda vez que uma alteração no banco de dados é feita. O SGBD é responsável por garantir que toda instância do banco de dados satisfaça ao esquema do banco de dados, respeitando sua estrutura e suas restrições. O esquema de um banco de dados também pode ser chamado de “intensão” de um banco de dados e a instância de “extensão” de um banco de dados. A Arquitetura Três Esquemas: tem como meta separar as aplicações do usuário do banco de dados físico. Os esquemas podem ser definidos como: 1. Nível interno: ou esquema interno, descreve a estrutura de armazenamento físico do banco de dados; utiliza um modelo de dados e descreve detalhadamente os dados armazenados e os caminhos de acesso ao banco de dados; 2. Nível conceitual: ou esquema conceitual, descreve a estrutura do banco de dados como um todo; é uma descrição global do banco de dados, que não fornece detalhes do modo como os dados estão fisicamente armazenados; 3. Nível externo: ou esquema de visão, descreve as visões do banco de dados para um grupo de usuários; cada visão descreve quais porções do banco de dados um grupo de usuários terá acesso. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 97 Arquitetura Três Esquemas Independência de Dados Pode ser definida como a capacidade de alterar um esquema em um nível em um banco de dados sem ter que alterar um nível superior. Existem dois tipos de independência de dados: • Independência de dados lógica: é a capacidade de alterar o esquema conceitual sem ter que alterar o esquema externo ou as aplicações do usuário; • Independência de dados física: é a capacidade de alterar o esquema interno sem ter que alterar o esquema conceitual, o esquema externo ou as aplicações do usuário. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 98 As Linguagens para Manipulação de Dados Para definir os esquemas conceituais e internos pode-se utilizar uma linguagem chamada DDL (Data Definition Language – Linguagem de Definição de Dados). O SGBD possui um compilador DDL que permite a execução das declarações para identificar as descrições dos esquemas e para armazená-las no catálogo do SGBD. A DDL é utilizada em SGBDs onde a separação entre os níveis interno e conceitual não é muito clara. Quando são bem claras, é utilizada outra linguagem, a SDL (Storage Definition Language – Linguagem de Definição de Armazenamento) para a especificação do esquema interno. A especificação do esquema conceitual fica por conta da DDL. Em um SGBD que utiliza a arquitetura três esquemas são necessários a utilização de mais uma linguagem para a definição de visões, a VDL (Vision Definition Language – Linguagem de Definição de Visões). Uma vez que o esquema esteja compilado e o banco de dados esteja populado, usa-se uma linguagem para fazer a manipulação dos dados, a DML (Data Manipulation Language – Linguagem de Manipulação de Dados). Os Módulos Componentes de um SGBD: um SGBD é um sistema complexo, formado por um conjunto muito grande de módulos. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 99 Estrutura de um Sistema Gerenciador de Banco de Dados Classificação dos SGBDs: tem como critério principal o modelo de dados no qual é baseado. A grande maioria dos SGBDs contemporâneos é baseado no modelo relacional, alguns em modelos conceituais e alguns em modelos orientados a objetos: Usuários: um SGBD pode ser mono-usuário, comumente utilizado em computadores pessoais ou multiusuários, utilizado em estações de trabalho, mini-computadores e máquinas de grande porte; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 100 Localização: um SGBD pode ser localizado ou distribuído; se ele for localizado, então todos os dados estarão em uma máquina (ou em um único disco) ou distribuído, onde os dados estarão distribuídos por diversas máquinas (ou diversos discos); Ambiente: ambiente homogêneo é o ambiente composto por um único SGBD e um ambiente heterogêneo é o ambiente compostos por diferentes SGBDs. Modelagem de Dados Utilizando o Modelo Entidade Relacionamento (ER) O modelo Entidade-Relacionamento é um modelo de dados conceitual de alto nível, cujos conceitos foram projetados para estar o mais próximo possível da visão que o usuário tem dos dados, não se preocupando em representar como estes dados estarão realmente armazenados. É utilizado principalmente durante o processo de projeto de banco de dados. Fases do Projeto de um Banco de Dados Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 101 Entidades e Atributos: O objeto básico tratado pelo modelo ER é a “entidade”, que pode ser definida como um objeto do mundo real, concreto ou abstrato e que possui existência independente. Cada entidade possui um conjunto particular de propriedades que a descreve chamado “atributos” que pode ser dividido em diversas sub-partes com significado independente entre si, recebendo o nome de “atributo composto”. Um atributo que não pode ser subdividido é chamado de “atributo simples” ou “atômico”. Os atributos que podem assumir apenas um determinado valor em uma determinada instância são denominados “atributo simplesmente valorado”, e um atributo que pode assumir diversos valores em uma mesma instância é denominado “multi valorado”. Um atributo que é gerado a partir de outro atributo é chamado de “atributo derivado”. Tipos Entidade, Conjunto de Valores, Atributo Chave: Um banco de dados costuma conter grupos de entidades que são similares, possuindo os mesmos atributos, porém, cada entidade com seus próprios valores para cada atributo. Este conjunto de entidades similares define um “tipo entidade”, identificado por seu nome e pelo conjunto de atributos que definem suas propriedades. A descrição do tipo entidade é chamada de “esquema do tipo entidade”, especificando o nome do tipo entidade, o nome de cada um de seus atributos e qualquer restrição que incida sobre as entidades. Uma restrição muito importante em uma entidade de um determinado tipo entidade é a “chave”. Um tipo entidade possui um atributo cujos valores são distintos para cada entidade individual, chamado “atributo chave” e seus valores podem ser utilizados para identificar cada entidade de forma única. Muitas vezes, uma chave pode ser formada pela composição de dois ou mais atributos. Uma entidade pode também ter mais de um atributo chave. Cada atributo simples de um tipo entidade está associado com um conjunto de valores denominado “domínio”, o qual especifica o conjunto de valores que podem ser designados para este determinado atributo para cada entidade. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 102 U NIDADE 17 Objetivo: Conceituar e conhecer os tipos e Instâncias de relacionamentos; Diferenciação de Entidades. RELACIONAMENTOS Tipos e Instâncias de Relacionamento: um “tipo relacionamento” R entre n entidades E1, E2, ..., En, é um conjunto de associações entre entidades deste tipo. Cada instância de relacionamento r1 em R é uma associação de entidades que inclui exatamente uma entidade de cada tipo entidade participante no tipo relacionamento. Isto significa que estas entidades estão relacionadas de alguma forma no mini-mundo. A figura abaixo mostra um exemplo entre dois tipos entidade (empregado e departamento) e o relacionamento entre eles (trabalha para). Para cada relacionamento, participam apenas uma entidade de cada tipo entidade, porém, uma entidade pode participar de mais do que um relacionamento. Exemplo 1: Relacionamento Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 103 Grau de um Relacionamento: O “grau” de um tipo relacionamento é o número de tipos entidade que participam do tipo relacionamento. No exemplo da figura 5, temos um relacionamento binário. O grau de um relacionamento é ilimitado, porém, a partir do grau 3 (ternário), a compreensão e a dificuldade de se desenvolver a relação corretamente se tornam extremamente complexas. Relacionamentos como Atributos: Algumas vezes é conveniente pensar em um relacionamento como um atributo. Considerando o exemplo dado acima, podemos pensar departamento como sendo um atributo da entidade empregado, ou empregado, como um atributo multivalorado da entidade departamento. Se uma entidade não possuir existência muito bem definida, talvez seja mais interessante para a coesividade do modelo lógico que ela seja representada como um atributo. Nomes de Papéis e Relacionamentos Recursivos: Cada tipo entidade que participa de um tipo relacionamento desempenha um “papel” particular no relacionamento. “Papel” representa o que uma entidade de um tipo entidade participante desempenha no relacionamento. No exemplo 1 temos o papel empregado ou trabalhador para o tipo entidade EMPREGADO e o papel departamento ou empregador para a entidade DEPARTAMENTO. Nomes de papéis não são necessariamente importantes quando todas as entidades participantes desempenham papéis diferentes. Algumas vezes, o papel torna-se essencial para distinguir o significado de cada participação. Isto é muito comum em “relacionamentos recursivos”. Um relacionamento recursivo é um relacionamento entre entidades do mesmo tipo entidade. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 104 Exemplo 2: Relacionamento Recursivo No exemplo 2 temos um relacionamento entre o tipo entidade EMPREGADO, onde um empregado pode supervisionar outro empregado e um empregado pode ser supervisionado por outro empregado. Restrições em Tipos Relacionamentos: Geralmente, os tipos relacionamentos sofrem certas restrições que limitam as possíveis combinações das entidades participantes, derivadas de restrições impostas pelo estado destas entidades no mini-mundo. Exemplo 3: Relacionamento EMPREGADO gerencia DEPARTAMENTO No exemplo 3 temos um empregado que pode gerenciar apenas um departamento, enquanto que um departamento pode ser gerenciado por apenas um empregado. A este tipo de restrição, nós chamamos cardinalidade, que indica o número de relacionamentos dos quais Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 105 uma entidade pode participar. A cardinalidade pode ser: 1:1, 1:N, M:N. A cardinalidade do exemplo 3 é 1:1, pois cada entidade empregada pode gerenciar apenas um departamento e um departamento pode ser gerenciado por apenas um empregado. No exemplo 2, o relacionamento EMPREGADO Trabalha Para DEPARTAMENTO é 1:N, pois um empregado pode trabalhar em apenas um departamento, enquanto que um departamento pode possuir vários empregados. Exemplo 4: Relacionamento No exemplo 4 temos um relacionamento com cardinalidade N:M, onde um empregado pode trabalhar em vários projetos enquanto que um projeto pode ter vários empregados trabalhando. Outra restrição muito importante é a participação, que define a existência de uma entidade através do relacionamento, podendo ser parcial ou total. No exemplo 3 a participação do empregado é parcial, pois nem todo empregado gerencia um departamento, porém a participação do departamento neste relacionamento é total, pois todo departamento precisa ser gerenciado por um empregado. Desta forma, todas as entidades do tipo entidade DEPARTAMENTO precisam participar do relacionamento, mas nem todas as entidade do tipo entidade EMPREGADO precisam participar do relacionamento. No exemplo 1 ambas participações são totais, pois todo empregado precisa trabalhar em um departamento e todo departamento tem que ter empregados trabalhando nele. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 106 Estas restrições são chamadas de restrições estruturais. Algumas vezes, torna-se necessário armazenar um atributo no tipo relacionamento. No exemplo 3, pode-se querer saber em que dia o empregado passou a gerenciar o departamento. É difícil estabelecer a qual tipo entidade pertence atributo, pois o mesmo é definido apenas pela existência do relacionamento. Quando temos relacionamentos com cardinalidade 1:1, podemos colocar o atributo em uma das entidades, de preferência, em uma cujo tipo entidade tenha participação total. No caso, o atributo poderia ir para o tipo entidade departamento. Isto porque nem todo empregado participará do relacionamento. Caso a cardinalidade seja 1:N, podemos colocar o atributo no tipo entidade com participação N. Porém, se a cardinalidade for N:M, o atributo deverá mesmo ficar no tipo relação. No exemplo 4, caso queiramos armazenar quantas horas cada empregado trabalhou em cada projeto, então este deverá ser um atributo do relacionamento. Tipos Entidades Fracas Alguns tipos entidade podem não ter um atributo chave por si só. Isto implica que não poderemos distinguir algumas entidades por que as combinações dos valores de seus atributos podem ser idênticas. São as entidades fracas, que precisam estar relacionadas com uma entidade pertencente ao tipo entidade proprietária. Este relacionamento é chamado de relacionamento identificador. Exemplo 5: Relacionamento com uma Entidade Fraca (Dependente) Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 107 O tipo entidade DEPENDENTE é uma entidade fraca, pois não possui um método de identificar uma entidade única. O EMPREGADO não é uma entidade fraca, pois possui um atributo para identificação (atributo chave). O número do RG de um empregado identifica um único empregado. Porém, um dependente de 5 anos de idade não possui necessariamente um documento, sendo tipo entidade fraca. Um tipo entidade fraca possui uma chave parcial, que juntamente com a chave primária da entidade proprietária forma uma chave primária composta. Neste exemplo: a chave primária do EMPREGADO é o RG. A chave parcial do DEPENDENTE é o seu nome, pois dois irmãos não podem ter o mesmo nome. Desta forma, a chave primária desta entidade fica sendo o RG do pai ou mãe mais o nome do dependente. Todos os exemplos vistos acima foram para relacionamentos binários, ou seja, entre dois tipos entidades diferentes ou recursivos. Porém, o modelo entidade relacionamento não se restringe apenas a relacionamentos binários, pois o número de entidades que participam de um tipo relacionamento é irrestrito e armazenam muito mais informações do que diversos relacionamentos binários. Considerando o exemplo: um motorista pode efetuar uma viagem para uma localidade dirigindo um determinado caminhão em uma determinada data. Se efetuarmos três relacionamentos binários, não teremos estas informações de forma completa como se criássemos um relacionamento ternário. Exemplo 6: Relacionamento Ternário Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 108 U NIDADE 18 Objetivo: Conhecer a Modelagem de Entidade de Relacionamento. ENTIDADE DE RELACIONAMENTO Diagrama Entidade Relacionamento (ER) É composto por um conjunto de objetos gráficos que visa representar todos os objetos do modelo Entidade Relacionamento, tais como entidades, atributos, atributos chaves, relacionamentos, restrições estruturais, etc. O diagrama ER fornece uma visão lógica do banco de dados, fornecendo um conceito mais generalizado de como estão estruturados os dados de um sistema. Objetos que compõem o diagrama ER: Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 109 Objetos que Compõem o Diagrama ER Modelagem Entidade Relacionamento Estendido (ERE) Os conceitos do modelo ER são suficientes para representar logicamente a maioria das aplicações de banco de dados. Porém, com o surgimento de novas aplicações, surgiu também a necessidade de novas semânticas para a modelagem de informações mais complexas. O modelo ERE visa fornecer esta semântica para permitir a representação de informações complexas. Embora trate classes e subclasses, não possui a mesma semântica de um modelo orientado a objetos. O modelo ERE engloba todos os conceitos do modelo ER mais os conceitos de subclasse, superclasse, generalização e especialização e o conceito de herança de atributos. Subclasses, Superclasses e Especializações: O primeiro conceito do modelo ERE que será abordado é o de subclasse de um tipo entidade. Como já visto, um tipo entidade é utilizado para representar um conjunto de entidades do mesmo tipo. Em muitos casos, um tipo entidade possui diversos subgrupos adicionais de entidades que são significativas e precisam ser representadas explicitamente devido ao seu significado à aplicação de banco de dados. Considere o exemplo: Para um banco de dados de uma empresa temos o tipo entidade empregado, o qual possui as seguintes características: nome, rg, cic, número funcional, endereço completo (rua, número, complemento, cep, bairro, cidade), sexo, data de nascimento e telefone (ddd e número); caso o(a) funcionário(a) seja um(a) engenheiro(a), então deseja-se armazenar as seguintes informações: número do CREA e especialidade (Civil, Mecânico, Elétro/Eletrônico); caso o(a) funcionário(a) seja um(a) secretário(a), então deseja-se armazenar as seguinte informações: qualificação (bi ou tri língue) e os idiomas no qual possui fluência verbal e escrita. Representando as informações número do CREA, especialidade, tipo e idiomas no tipo entidade empregado representando informações de um conjunto limitado de entidades empregado para os todos os funcionários da empresa. Neste caso, podemos criar duas subclasses do tipo entidade empregado: engenheiro e secretária, as quais irão conter as Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 110 informações acima citadas. Além disso, engenheiro e secretária podem ter relacionamentos específicos. Uma entidade não pode existir meramente como componente de uma subclasse. Antes de ser componente de uma subclasse, uma entidade deve ser componente de uma superclasse. Isto leva ao conceito de herança de atributos, ou seja, a subclasse herda todos os atributos da superclasse. Isto porque a entidade de subclasse representa as mesmas características de uma mesma entidade da superclasse. Uma subclasse pode herdar atributos de superclasses diferentes. Exemplo 7: Representação de Superclasse e Subclasses Especialização É o processo de definição de um conjunto de classes de um tipo entidade, chamado de superclasse da especialização. O conjunto de subclasses é formado baseado em alguma característica que distinguia as entidades entre si. No exemplo 7 temos uma especialização, a qual podemos chamar de função. No exemplo 8 temos a entidade empregado e duas especializações. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 111 Exemplo 8: Duas Especializações para Empregado: Função e Categoria Salarial Como já visto uma subclasse pode ter relacionamentos específicos com outras entidades ou com a própria entidade que é a sua superclasse. Veja o exemplo 9. Exemplo 9: Relacionamentos Entre Subclasses e Entidades O processo de especialização nos permite: • Definir um conjunto de subclasses de um tipo entidade; • Associar atributos específicos adicionais para cada subclasse; • Estabelecer tipos relacionamentos específicos entre subclasses e outros tipos entidades. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 112 Generalização A generalização pode ser pensada como um processo de abstração reverso ao da especialização, no qual são suprimidas as diferenças entre diversos tipos entidades, identificando suas características comuns e generalizando estas entidades em uma superclasse. Exemplo 10: Tipos Entidades Engenheiro e Secretária Exemplo 11: Generalização Empregado para os Tipos Entidades Engenheiro e Secretária Na especialização podemos notar que a ligação entre a superclasse e as subclasses é feita através de um traço simples, indicando participação parcial por parte da superclasse. Analisando o exemplo 7 é observado que um empregado não é obrigado a ser um engenheiro ou uma secretária. Na generalização a ligação entre a superclasse e as subclasses é feita através de um traço duplo, indicando participação total por parte da Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 113 superclasse. Analisando o exemplo 11 observa-se que um empregado é obrigado a ser um engenheiro ou uma secretária. A letra d dentro do círculo que especifica uma especialização ou uma generalização significa disjunção, que é uma disjunção em uma especialização ou generalização indica que uma entidade do tipo entidade que representa a superclasse pode assumir apenas um papel dentro da mesma. Analisando o exemplo 8 temos duas especializações para a superclasse Empregado, as quais são restringidas através de uma disjunção. Neste caso, um empregado pode ser um engenheiro ou uma secretária e o mesmo pode ser horista ou mensalista. Além da disjunção podemos ter um “overlap”, representado pela letra o. No caso do overlap uma entidade de uma superclasse pode ser membro de mais que uma subclasse em uma especialização ou generalização. Analisando a generalização no exemplo 12, suponha que uma peça fabricada em uma tornearia pode ser manufaturada ou torneada ou ainda, pode ter sido manufaturada e torneada. Exemplo 12: - Uma Generalização com “Overlap” Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 114 U NIDADE 19 Objetivo: Diferenciar Domínios, Tuplas, Atributos e Relações; Conhecer o Mapeamento do Modelo Entidade Relacionamento para o Modelo Relacional. MODELO RELACIONAL “Lattice” ou Múltipla Herança Uma subclasse pode ser definida através de um “lattice”, ou múltipla herança, ou seja, ela pode ter diversas superclasses, herdando características de todas. Leve em consideração o seguinte exemplo: Uma construtora possui diversos funcionários, os quais podem ser engenheiros ou secretárias. Um funcionário pode também ser assalariado ou horista. Todo gerente de departamento da construtora deve ser um engenheiro e assalariado. Exemplo 13: Um “Lattice” com a Subclasse Gerente Compartilhada Neste caso então, um gerente será um funcionário que além de possuir as características próprias de Gerente, herdará as características de Engenheiro e de Mensalista. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 115 O Modelo Relacional Foi criado por Codd em 1970 e tem por finalidade representar os dados como uma coleção de relações, onde cada relação é representada por uma tabela, ou falando de uma forma mais direta, um arquivo. Porém, um arquivo é mais restrito que uma tabela. Toda tabela pode ser considerada um arquivo, porém, nem todo arquivo pode ser considerado uma tabela. Quando uma relação é pensada como uma tabela de valores, cada linha nesta tabela representa uma coleção de dados relacionados. Estes valores podem ser interpretados como fatos descrevendo uma instância de uma entidade ou de um relacionamento. O nome da tabela e das colunas desta tabela é utilizado para facilitar a interpretação dos valores armazenados em cada linha da tabela. Todos os valores em uma coluna são necessariamente do mesmo tipo. Na terminologia do modelo relacional, cada tabela é chamada de relação; uma linha de uma tabela é chamada de tupla, o nome de cada coluna é chamado de atributo; o tipo de dado que descreve cada coluna é chamado de domínio. Domínios, Tuplas, Atributos e Relações Um domínio D é um conjunto de valores atômicos, sendo que por atômico, podemos compreender que cada valor do domínio é indivisível. Durante a especificação do domínio é importante destacar o tipo, o tamanho e a faixa do atributo que está sendo especificado. Coluna Tipo Tamanho RG Numérico 10,0 Nome Carácter 30 a-z, A-Z Salário Numérico 5,2 00100,00-12999,99 Copyright © 2007, ESAB – Escola Superior Aberta do Brasil Faixa 0300000025999999 116 Um esquema de relação R, denotado por R(A 1 , A 2 , ... , A n), onde cada atributo A i é o nome do papel desempenhado por um domínio D no esquema relação R, onde D é chamado domínio de A i e é denotado por dom(A i). O grau de uma relação R é o número de atributos presentes em seu esquema de relação. A instância r de um esquema relação denotado por r(R) é um conjunto de n-tuplas r = [t 1 , t 2 , ... , t n] onde os valores de [t 1 , t 2 , ... , t n] devem estar contidos no domínio D . O valor nulo também pode fazer parte do domínio de um atributo e representa um valor não conhecido para uma determinada tupla. Atributo Chave de uma Relação Uma relação pode ser definida como um conjunto de tuplas distintas. Isto implica que a combinação dos valores dos atributos em uma tupla não pode se repetir na mesma tabela. Existirá sempre um subconjunto de atributos em uma tabela que garantem que não haverá valores repetidos para as diversas tuplas da mesma, garantindo que t1[SC] ¹ t2[SC]. SC é chamada de superchave de um esquema de relação. Toda relação possui ao menos uma superchave – o conjunto de todos os seus atributos. Uma chave C de um esquema de relação R é uma superchave de R com a propriedade adicional que removendo qualquer atributo A de K, resta ainda um conjunto de atributos K ' que não é uma superchave de R. Uma chave é uma superchave da qual não se podem extrair atributos. Por exemplo, o conjunto: (RA, Nome, Endereço) é uma superchave para estudante, porém, não é uma chave, pois se tirarmos o campo Endereço continuaremos a ter uma superchave. Já o conjunto (Nome da Revista, Volume, N o da Revista) é uma superchave e uma chave, pois qualquer um dos atributos que retirarmos, deixaremos de ter uma superchave, ou seja, (Nome da Revista, Volume) não identifica uma única tupla. Em outras palavras, uma superchave é uma chave composta, ou seja, uma chave formada por mais que um atributo. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 117 Exemplo: Tabela DEPENDENTES RG Nome Responsável Dependente 10101010 Dt. Nascimento Relação Sexo Jorge 27/12/86 Filho Masculino 10101010 Luiz 18/11/79 Filho Masculino 20202020 Fernanda 14/02/69 Cônjuge Feminino 20202020 Ângelo 10/02/95 Filho Masculino 30303030 Fernanda 01/05/90 Filho Feminino Quando uma relação possui mais que uma chave (não confundir com chave composta), como RG e CIC para empregados, cada uma destas chaves são chamadas de chaves candidatas. Uma destas chaves candidatas deve ser escolhida como chave primária. Uma chave estrangeira CE de uma tabela R1 em R2 ou vice-versa, especifica um relacionamento entre as tabelas R 1 e R 2. Tabela DEPARTAMENTO Nome Número RG Gerente Contabilidade 1 10101010 Engenharia Civil 2 30303030 Engenharia Mecânica 3 20202020 Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 118 Tabela EMPREGADO Depto. RG Nome RG João Luiz 10101010 11111111 1 NULO 3.000,00 Fernando 20202020 22222222 2 10101010 2.500,00 Ricardo 30303030 33333333 2 10101010 2.300,00 Jorge 40404040 44444444 2 20202020 4.200,00 Renato 50505050 55555555 3 20202020 1.300,00 Supervisor Salário Mapeamento do Modelo Entidade Relacionamento para o Modelo Relacional: Segue oito passos básicos: 1. Para cada entidade E no modelo ER é criada uma tabela T1 no Modelo Relacional que inclua todos os atributos simples de E; para cada atributo composto, são inseridos apenas os componentes simples de cada um; um dos atributos chaves de E deve ser escolhida como a chave primária de T1; 2. Para cada entidade fraca EF com entidade proprietária E no modelo ER, é criada uma tabela T1 no Modelo Relacional incluindo todos os atributos simples de EF; para cada atributo composto, são inseridos apenas os componentes simples de cada um; a chave primária desta relação T será composta pela chave parcial da entidade fraca EF mais a chave primária da entidade proprietária E; 3. Para cada relacionamento regular com cardinalidade 1:1 entre entidades E1 e E2 que geraram as tabelas T1 e T2 respectivamente, devemos escolher a chave primária de uma das relações (T1, T2) e inseri-la como chave estrangeira na outra relação; se um dos lados do relacionamento tiver participação total e outro parcial, então é Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 119 interessante que a chave do lado com participação parcial seja inserido como chave estrangeira no lado que tem participação total; 4. Para cada relacionamento regular com cardinalidade 1:N entre entidades E1 e E2 respectivamente e que geraram as tabelas T1 e T2 respectivamente, deve-se inserir a chave primária de T1 como chave estrangeira em T2; 5. Para cada relacionamento regular com cardinalidade N:N entre entidades E1 e E2 , cria-se uma nova tabela T1, contendo todos os atributos do relacionamento mais o atributo chave de E1 e o atributo chave de E2; a chave primária de T1 será composta pelos atributos chave de E1 e E2; 6. Para cada atributo multivalorado A1, cria-se uma tabela T1, contendo o atributo multivalorado A1, mais o atributo chave C da tabela que representa a entidade ou relacionamento que contém A1 ; a chave primária de T1 será composta por A1 mais C; se A1 for composto, então a tabela T1 deverá conter todos os atributos de A1; 7. Para cada relacionamento n-ário, n > 2, cria-se uma tabela T1, contendo todos os atributos do relacionamento; a chave primária de T1 será composta pelos atributos chaves das entidades participantes do relacionamento; 8. Converta cada especialização com m subclasses {S1 , S2 , ..., Sm} e superclasse SC, onde os atributos de SC são {c, a1 , a2 , ..., an } onde c é a chave primária de SC, em tabelas utilizando uma das seguintes opções: 9. Crie uma tabela T para SC com os atributos A(T) = {c, a1 , a2 , ..., an} e chave C(T) = c; crie uma tabela Ti para cada subclasse Si, 1 ≤ ι ≤ m, com os atributos; 10. A(Ti ) = {c} ∪ A(Si ), onde C(T) = c; 11. Crie uma tabela T i para cada subclasse S i , 1 ≤ ι ≤ m, com os atributos A(Ti ) = A(Si ) ∪ {c, a 1 , a 2 , ..., a n} e C(Ti ) = c ; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 120 12. Crie uma tabela T com os atributos A(T) = {c, a 1 , a 2 , ..., a n} ∪ Α(Σ1) ∪ ... ∪ A(Sm) ∪ {t} e C(T) = c, onde t é um atributo tipo que indica a subclasse à qual cada tupla pertence, caso isto venha a ocorrer; 13. Crie uma tabela T com atributos A(T) = {c, a1 , a2 , ..., an } ∪ A(S1) ∪ ... ∪ Α(Sm) ∪ {t1 , t2 , ..., tm} e C(T) = c; esta opção é para generalizações com “overlapping”, e cada ti , 1 ≤ ι ≤ µ, é um atributo “booleano” indicando se a tupla pertence ou não à subclasse Si; embora funcional, esta opção pode gerar uma quantidade muito grande de valores nulos. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 121 U NIDADE 20 Objetivo: Conhecer a Álgebra Relacional, Seqüencialidade de Operações, Dependência Funcional e Normalização. ATRIBUTOS DE DADOS Dependência Funcional e Normalização Dependência Funcional: é uma restrição entre dois conjuntos de atributos de uma base de dados. Suponha que o esquema de uma base de dados R possua n atributos A 1, A 2 , ..., A n; pense em R = {A1 , A2 , ... , An} como a representação universal da base de dados. Uma dependência funcional, representada por X < > Y entre dois conjuntos de atributos X e Y que são subconjuntos de R especificam uma restrição nas tuplas que podem compor uma instância relação r de R. A restrição estabelece que para qualquer par de tuplas t 1 e t 2 em r de forma que t 1 . [X] = t2. [X], é obrigado a existir t1. [Y] = t2. [Y]. Isto significa que os valores do componente Y em uma tupla em r depende de, ou é determinada pelos valores do componente X. Para X < > Y lê-se: Y é funcionalmente dependente de X, u X infere sobre Y. Para a base de dados do apêndice A exemplifica-se as seguintes dependências funcionais: RG < > {Nome, CIC, Depto., RG_Supervisor, Salário} Número_Projeto < > {Nome_Projeto, Localização} {RG_Empregado, Número_Projeto} < > Horas além de outras. A dependência 1 implica que o número de um RG define de forma única o nome do empregado e o CIC do empregado. A dependência 2 implica que o número do projeto define de forma única o nome do projeto e sua localização e a dependência 3 implica que o RG do empregado mais o número do projeto definem de forma única o número de horas que o Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 122 empregado trabalhou no projeto. A especificação das inferências deve ser elaborada pelo projetista de banco de dados em conjunto com o analista de sistemas, pois os mesmos deverão ter conhecimento da semântica da base de dados. Normalização: processo no qual são eliminados esquemas de relações (tabelas) não satisfatórios, decompondo-os, através da separação de seus atributos em esquemas de relações menos complexas, mas que satisfaçam as propriedades desejadas. Proposto inicialmente por Codd, o processo de normalização conduz um esquema de relação através de uma bateria de testes para certificar se o mesmo está na 1ª, 2ª e 3ª Formas Normais, baseadas em dependências funcionais dos atributos do esquema de relação: 1ª Forma Normal: prega que todos os atributos de uma tabela devem ser atômicos (indivisíveis), ou seja, não são permitidos atributos multivalorados, atributos compostos ou atributos multivalorados compostos. Considere: CLIENTE Código {Telefone} Endereço: (Rua, Número, Cidade) Gera a tabela resultante: Cliente Código Telefone 1 Endereço Telefone n Rua No Cidade Sendo que a mesma não está na 1ª Forma Normal, pois seus atributos não são atômicos. Para que fique na 1ª a Forma Normal temos que eliminar os atributos não atômicos, gerando as seguintes tabelas como resultado: Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 123 Cliente Código Cliente_Telefone Rua Número Código_Cliente Cidade Telefone_Cliente 2ª Forma Normal: prega o conceito da dependência funcional total. Uma dependência funcional X à Y é total se removemos um atributo A qualquer do componente X e desta forma, a dependência funcional deixa de existir. A dependência funcional X à Y é uma dependência funcional parcial se existir um atributo A qualquer do componente X que pode ser removido e a dependência funcional X < > Y não deixa de existir. Como já visto, a dependência funcional {RG_Empregado, Número_Projeto} < > Horas é uma dependência funcional total, pois se removermos o atributo RG_Empregado ou o atributo Número_Projeto, a dependência funcional deixa de existir. Uma tabela T está na 2ª Forma Normal se estiver na 1ª Forma Normal e todo atributo que não compõem a chave primária C for totalmente funcionalmente dependente da chave primária C. Se uma tabela não está na 2ª a Forma Normal a mesma pode ser normalizada gerando outras tabelas cujos atributos que não façam parte da chave primária sejam totalmente funcionalmente dependente da mesma, ficando a tabela na 2ª Forma Normal. 3ª Forma Normal: prega o conceito de dependência transitiva. Uma dependência funcional X < > Y em uma tabela T é uma dependência transitiva se existir um conjunto de atributos Z que não é um subconjunto de chaves de T e as dependências X < > Z , Z < > Y , são válidas. Considere: Empregado RG Nome N o _Departamento Nome_Depto RG_Ger_Depto onde temos a seguinte dependência transitiva: Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 124 RG < > { Nome_Depto, RG_Ger_Depto} RG < > N o _Departamento N o _Departamento < > {Nome_Depto, RG_Ger_Depto} Porém, verifique o caso da tabela abaixo: Empregado RG CIC Nome N o _Funcional Neste caso, a dependência transitiva: RG < > {Nome, N o _Funcional} RG < > CIC CIC < > {Nome, N o _Funcional} não é valida pois o atributo CIC é uma chave candidata. Uma tabela está na 3ª Forma Normal se estiver na 2ª Forma Normal e não houver dependência transitiva entre atributos não chave. A Álgebra Relacional É uma coleção de operações canônicas que são utilizadas para manipular as relações, utilizadas para selecionar tuplas de relações individuais e para combinar tuplas relacionadas de relações diferentes para especificar uma consulta em um determinado banco de dados. O resultado de cada operação é uma nova operação, a qual também pode ser manipulada pela álgebra relacional. Todos os exemplos envolvendo álgebra relacional implicam na utilização do banco de dados descrito no apêndice A. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 125 A Operação Select: é utilizada para selecionar um subconjunto de tuplas de uma relação que devem satisfazer uma condição de seleção. A forma geral de uma operação select é: s <condição de seleção> (<nome da relação>). A letra grega s é utilizada para representar a operação de seleção; <condição de seleção> é uma expressão booleana aplicada sobre os atributos da relação e <nome da relação> é o nome da relação sobre a qual será aplicada a operação select. Exemplo: consulta1 = s salário < 2.500,00 (EMPREGADO) Gera a seguinte tabela como resultado: Tabela consulta1 RG Nome RG CIC Depto. Ricardo 30303030 33333333 2 10101010 2.300,00 Renato 50505050 55555555 3 20202020 1.300,00 Supervisor Salário consulta2 = s (relação = “Filho”) .and. (sexo = “Feminino”) (DEPENDENTES) Gera a seguinte tabela como resultado: Tabela consulta2 RG Nome Responsável Dependente 30303030 Andrea Dt. Nascimento Relação Sexo 01/05/90 Filho Feminino Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 126 As operações relacionais que podem ser aplicadas na operação select são < , > , , ³ , =, ¹ , além dos operadores booleanos: and , or , not A operação select é unária, ou seja, só pode ser aplicada a uma única relação. Não é possível aplicar a operação sobre tuplas de relações distintas. A Operação Project: seleciona um conjunto determinado de colunas de uma relação. Tem a forma geral: p <lista de atributos> (<nome da relação>). A letra grega p representa a operação Project, <lista de atributos> representa a lista de atributos que o usuário deseja selecionar e <nome da relação> representa a relação sobre a qual a operação Project será aplicada. Exemplo: consulta3 = p Nome, Dt. Nascimento (DEPENDENTES) Gera a seguinte tabela como resultado: Tabela consulta3 Nome Dependente Dt. Nascimento Jorge 27/12/86 Luiz 18/11/79 Fernanda 14/02/69 Ângelo 10/02/95 Andrea 01/05/90 Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 127 Seqüencialidade de Operações: As operações Project e select podem ser utilizadas de forma combinada, permitindo que apenas determinadas colunas de determinadas tuplas possam ser selecionadas. A forma geral de uma operação sequencializada é: p <lista de atributos> ( s <condição de seleção> (<nome da relação>) ) Exemplo: consulta4 = p nome, depto., salário ( s salário < 2.500,00 (EMPREGADO) ) Produz a tabela a seguir como resultado: Tabela consulta4 Nome Depto. Salário Ricardo 2 2.300,00 Renato 3 1.300,00 A consulta4 pode ser reescrita da seguinte forma: consulta5 = s salario < 2.500,00 (EMPREGADO) Tabela consulta5 RG Nome RG CIC Depto. Ricardo 30303030 33333333 2 10101010 2.300,00 Renato 50505050 55555555 3 20202020 1.300,00 Supervisor Copyright © 2007, ESAB – Escola Superior Aberta do Brasil Salário 128 consulta6 = p nome, depto., salario (CONSULTA5) Tabela consulta6 Nome Depto. Salário Ricardo 2 2.300,00 Renato 3 1.300,00 Porém é mais elegante utilizar a forma descrita na consulta4. Conhecendo os Bancos de Dados http://www.sobresites.com/bancodedados/bancodedados.htm Antes de dar continuidades aos seus estudos é fundamental que você acesse sua SALA DE AULA e faça a Atividade 2 no “link” ATIVIDADES. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 129 U NIDADE 21 Objetivo: Conhecer as Operações Matemáticas e Cartesianas. OPERAÇÕES MATEMÁTICAS E CARTESIANAS Operações Matemáticas Considerando que as relações podem ser tratadas como conjuntos, podemos então aplicar um conjunto de operações matemáticas sobre as mesmas. Este conjunto de operações não é unitário, ou seja, podem ser aplicadas sobre mais de uma tabela, porém, existe a necessidade das tabelas possuírem tuplas exatamente do mesmo tipo. As operações são: • União ( ∪ ); • Intersecção ( ∩ ); • Diferença ( − ). Estas operações podem ser definidas da seguinte forma: • União: o resultado desta operação representada por R ∪ S é uma relação T que inclui todas as tuplas que se encontra em R e todas as tuplas que se encontra em S; • Intersecção: o resultado desta operação representada por R ∩ S é uma relação T que inclui as tuplas que se encontra em R e em S ao mesmo tempo; • Diferença: o resultado desta operação representada por R - S é uma relação T que inclui todas as tuplas que estão em R, mas não estão em S. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 130 Leve em consideração a seguinte consulta: Selecione todos os empregados que trabalham no departamento número 2 ou que supervisionam empregados que trabalham no departamento número 2. Primeiramente selecionar todos os funcionários que trabalham no departamento número 2: consulta7 = s depto = 2 (EMPREGADOS) Tabela consulta7 RG Nome RG CIC Depto. Fernando 20202020 22222222 2 10101010 2.500,00 Ricardo 30303030 33333333 2 10101010 2.300,00 Jorge 40404040 44444444 2 20202020 4.200,00 Supervisor Salário Agora selecionar os supervisores dos empregados que trabalham no departamento número 2: consulta8 = p rg_supervisor (CONSULTA7) Tabela consulta8 RG Supervisor 10101010 20202020 Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 131 Vamos projetar apenas o rg dos empregados selecionados: consulta9 = p rg (CONSULTA7) Tabela consulta9 RG 20202020 30303030 Finalmente, vamos unir as duas tabelas, obtendo o resultado final: consulta10 = consulta8 ∪ consulta9 Tabela consulta10 RG 20202020 30303030 40404040 10101010 Considere a próxima consulta: Selecione todos os empregados que desenvolvem algum projeto e que trabalham no departamento número 2: Primeiramente, selecionar todos os empregados que trabalham em um projeto: consulta11 = p rg_empregado (EMPREGADO/PROJETO) Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 132 Tabela consulta11 RG_Empregado 20202020 30303030 40404040 50505050 Agora selecionar todos os empregados que trabalham no departamento 2: consulta12 = p rg ( s depto = 2 (EMPREGADOS) ) Tabela consulta12 RG 20202020 30303030 40404040 Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 133 Obtemos então todos os empregados que trabalham no departamento 2 e que desenvolvem algum projeto: consulta13 = consulta11 ∩ consulta12 Tabela consulta13 RG 20202020 30303030 40404040 Considere a seguinte consulta: Selecione todos os usuários que não desenvolvem projetos: consulta14 = p rg_empregado (EMPREGADO/PROJETO) Tabela consulta14 RG Empregado 20202020 30303030 40404040 50505050 Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 134 consulta15 = p rg (EMPREGADOS) Tabela consulta15 RG 10101010 20202020 30303030 40404040 50505050 consulta16 = CONSULTA15 - CONSULTA14 Tabela consulta16 RG 10101010 Produto Cartesiano É uma operação binária que combina todas as tuplas de duas tabelas. Diferente da operação união, o produto cartesiano não exige que as tuplas das tabelas possuam exatamente o mesmo tipo. O produto cartesiano permite então a consulta entre tabelas relacionadas utilizando uma condição de seleção apropriada. Seu resultado é uma nova tabela formada pela combinação das tuplas das tabelas sobre as quais se aplicou a operação. O formato geral do produto cartesiano entre duas tabelas R e S é R Χ S Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 135 Considere a seguinte consulta: Encontre todos os funcionários que desenvolvem projetos em Campinas: consulta16 = EMPREGADO/PROJETO C PROJETO Tabela consulta16 RG Número Empregado Projeto 20202020 Nome Número Localização 5 Financeiro 1 5 São Paulo 20202020 5 Motor 3 10 Rio Claro 20202020 5 Prédio Central 20 Campinas 20202020 10 Financeiro 1 5 São Paulo 20202020 10 Motor 3 10 Rio Claro 20202020 10 Prédio Central 20 Campinas 30303030 5 Financeiro 1 5 São Paulo 30303030 5 Motor 3 10 Rio Claro 30303030 5 Prédio Central 20 Campinas 40404040 20 Financeiro 1 5 São Paulo 40404040 20 Motor 3 10 Rio Claro 40404040 20 Prédio Central 20 Campinas 50505050 20 Financeiro 1 5 São Paulo 50505050 20 Motor 3 10 Rio Claro Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 136 50505050 20 Prédio Central 20 Campinas Agora vamos selecionar as tuplas resultantes que estão devidamente relacionadas que são as que possuem o mesmo valor em número do projeto e número e cuja localização seja ‘Campinas': consulta17 = p rg_empregado, número ( s (número_projeto = número) .and. (localização = ‘Campinas') (CONSULTA16) ) Tabela consulta17 RG Número 40404040 20 50505050 20 A operação produto cartesiano não é muito utilizada por não oferecer um resultado otimizado. Veja o item seguinte: Operação Junção: atua de forma similar á operação produto cartesiano, porém, a tabela resultante conterá apenas as combinações das tuplas que se relacionam de acordo com uma determinada condição de junção. A forma geral da operação junção entre duas tabelas R e S é a seguinte: Operação Junção R <condição de junção> S Considere a consulta a seguir: Encontre todos os funcionários que desenvolvem projetos em Campinas: Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 137 consulta18 = EMPREGADOS/PROJETOS número_projeto = número PROJETOS Tabela consulta18 RG_Empregado Número_Projeto Nome Número Localização 20202020 5 Financeiro 1 5 São Paulo 20202020 10 Motor 3 10 Rio Claro 30303030 5 Financeiro 1 5 São Paulo 40404040 20 Prédio Central 20 Campinas 50505050 20 Prédio Central 20 Campinas consulta19 = s localização = ‘Campinas' (CONSULTA18) Tabela consulta18 RG_Empregado Número_Projeto Nome Número Localização 40404040 20 Prédio Central 20 Campinas 50505050 20 Prédio Central 20 Campinas Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 138 U NIDADE 22 Objetivo: Conhecer Estruturas de Dados dinâmicas. ÁRVORES São estruturas de dados essencialmente dinâmicas, permitindo a inserção, pesquisa e destruição de elementos. Trazem, implicitamente, a idéia de hierarquia, por isso são estruturas de dados muito utilizadas em gerenciamento de arquivos e validação de expressões. Uma árvore pode ser definida de várias formas. Talvez, a maneira mais natural é defini-las recursivamente. Assim, uma árvore é composta por um conjunto de nós. Existe um nó denominado raiz, que contém zero ou mais sub-árvores e cada sub-árvore pode ser considerada uma árvore. DESENHO ÁRVORE GENÉRICA (listas de filhos): • Estrutura do nó (com grau pré-definido e com grau indeterminado) • Nomenclatura: • Raiz - é o nó de mais alto nível da árvore (primeiro nó da árvore). • Nível - o número de nós que vai da raiz até um determinado nó. • Grau - o número de sub-árvores de um nó • Folha - nó com grau igual a zero • Altura - nível mais alto da árvore • Pai - a raiz de uma sub-árvore é pai das raízes de suas sub-árvores • Filho - os nós raízes de uma sub-arvores é filho da raiz da árvore Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 139 • Irmão - nós raízes das sub-árvores são irmãos. raiz ={c} ancestrais de j={e,c} descendentes de j={i,k} pai de j=e filhos de j={i,k} nível de j=2 altura da árvore =3 folhas={b,i,k,f,h,d} irmãos={j,f,g} Árvores Binárias: são árvores onde cada nó tem no máximo dois filhos (grau máximo 2). Com isto, obtém-se uma estrutura apropriada para busca binária. Outra área onde estas estruturas são muito utilizadas é na validação de expressões. Isto porque um operador relaciona apenas um ou dois operandos. Uma propriedade importante de árvores binárias é que possuem profundidade (altura) bastante inferior ao número de nós (comentar inserção em ordem). Aplicação: A aplicação mais importante das árvores binárias é seu uso em busca binária. A cada nó da árvore associa-se uma chave que permite a realização de uma ordenação. A Construção da árvore deve ser de tal forma que na sub-árvore à esquerda de uma dada raiz só existam nós com chaves menores que a chave da raiz. E a sub-árvore à direita só pode conter nós com chaves maiores que a da raiz. Com esta estruturação, a busca de um determinado nó na árvore torna-se trivial, através do uso da recursidade. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 140 Operações Básicas (Inclusão, Pesquisa, Alteração, Exclusão, transformação e Caminhamentos): Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 141 • Alteração: efetua-se uma pesquisa e em seguida faz-se a alteração. • Exclusão: para a remoção de um nó de uma árvore deve-se levar em consideração que seus filhos devem continuar na árvore e esta deverá continuar ordenada (menor a esquerda maior a direita). E então caímos em três possibilidades que devem ser tratadas separadamente, a fim de manter a estrutura da árvore binária. 1. Quando o nó a ser excluído não contenha filhos; 2. Quando o nó a ser excluído contenha somente um dos filhos; 3. Quando o nó a ser excluído contenha os dois filhos. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 142 Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 143 Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 144 U NIDADE 23 Objetivo: Conhecer as necessidades de infra-estrutura de segurança, estudos de risco; Como pesquisar soluções para comércio eletrônico. SEGURANÇA DE INFORMAÇÕES A segurança de informações são utilizadas como meios de comunicação (usando em universidades e por empregados em algumas empresas para compartilhar). Agora, milhões de corporações, empresas, instituições e usuários domésticos estão usando a Internet para fazer transações bancárias, comércio eletrônico, etc. Portanto, segurança hoje, é um problema potencialmente crítico. Iremos discutir segurança de redes de vários ângulos diferentes, falaremos sobre ameaças, contramedidas, ferramentas, algoritmos, protocolos e gerência de segurança, a fim de tornar os sistemas e a redes mais seguras. Primeiramente, é necessário aprender os termos utilizados na área de segurança de redes e sistemas. Muitas, senão todas, as palavras definidas (Glossário) serão utilizadas no decorrer deste capítulo. Necessidade de uma infra-estrutura de segurança Vulnerabilidades e ataques existem e crescem a cada dia, tanto em quantidade quanto em qualidade. Uma infra-estrutura de segurança não é só necessária como obrigatória, devendo existir, além de um investimento específico, um planejamento, uma gerência e uma metodologia bem definida. Salienta-se que os seres humanos são o elo mais fraco dessa corrente. Você pode ter os mais perfeitos produtos de segurança, mas eles não serão nada se você não tiver consciência que eles serão gerenciados e utilizados por pessoas, isto nos faz refletir sobre a necessidade de uma infra-estrutura de segurança e forma de como montá-la. A modelagem Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 145 de ameaça é a primeira etapa em qualquer solução de segurança. Quais são as ameaças reais contra o sistema? Se você não souber disso, como saberá quais tipos de contramedidas irá empregar? A modelagem de ameaça é algo difícil de ser feito, ela envolve pensar sobre um sistema e imaginar o vasto panorama de vulnerabilidade. Avaliação de Risco Não é suficiente apenas listar um punhado de ameaças, você precisa saber o quanto deve se preocupar com cada uma delas. Ao projetar um sistema de segurança, é vital fazer esse tipo de modelagem de ameaça e avaliação de risco. Muitos projetistas de sistemas pensam no projeto de segurança como um livro de receitas: misture contramedidas específicas – criptografia e firewalls são bons exemplos – e magicamente você estará seguro, isso nunca Inicialmente, conheceremos as vulnerabilidades e depois nossos inimigos, então conheceremos as ferramentas de defesa e as tecnologias, depois disso sim, teremos uma noção bem melhor de como devemos nos proteger e elaborar um projeto de segurança. Alguns conceitos serão definidos, são pilares de um sistema seguro, sendo que alguns estão intimamente ligados ao estudo da criptografia, arte de guardar mensagens seguras, ou transmiti-las de forma segura, garantindo a privacidade e trazendo outros benefícios à segurança, tais como: • Integridade: possibilita ao receptor de uma mensagem verificar se esta foi alterada durante o trânsito; • Autenticação: possibilita ao receptor de uma mensagem, verificar corretamente sua origem, um intruso não pode se fazer passar (personificar) o remetente desta mensagem; • Não-repúdio ou irrevogabilidade: o remetente de uma mensagem não deve ser capaz de negar que enviou a mensagem. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 146 A disponibilidade se refere ao sistema estar sempre pronto a responder requisições de usuários legítimos, isto envolve o uso de sistemas redundantes, no-breaks e mecanismos contra ataques de Denial of Service. Oportunidades e Riscos: Vulnerabilidades Oportunidades não faltam na vasta gama de serviços disponíveis hoje na Internet, começando pelo número de usuários que temos na Internet, o qual é praticamente impossível de se mensurar, e ainda pelo fato dela ser a maior compradora e vendedora do mundo. Ela também tem o potencial para ser a maior projetista, a maior desenvolvedora, a maior fabricante e a maior distribuidora. Algumas vulnerabilidades são semelhantes ao mundo não virtual (fora da Internet): pornografia, jogos de azar, falta de privacidade e assédio sexual, são apenas algumas. As ameaças específicas da Internet seriam os vírus, worms, trojans e o hacker de computador. Sem dúvida o tipo de ameaça mais comentada é o hacker de computador. Não só pelo caráter interessante do fato, mas também pela quantidade de problemas que um hacker mal intencionado (cracker) pode causar. Os pontos vulneráveis decorrem de fatores mais técnicos que dependendo do caso podem ser extremamente complexos. Os hackers conhecem estes fatores e sua complexidade, nós, que desejamos proteger nossas redes também temos que conhecer tanto quanto eles, e por isso, temos que entender as vulnerabilidades do ponto de vista técnico. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 147 Dentre as coisas terríveis que podem acontecer podemos apontar: • Suas senhas poderão ser roubadas e sua conta modificada; • Suas linhas de comunicação podem ser grampeadas e informações secretas de sua empresa poderão ser comprometidas; • Sua rede poderá ser inundada de informações e entrar em colapso; • Sua propriedade intelectual poderá se roubada; • Você poderá estar violando controles de exportação de tecnologia; • Seus funcionários poderão ser pegos transportando pornografia; • Suas finanças poderão ser alteradas; • Pode haver falsificação de dinheiro; • Alguém poderá se passar por você e efetuar transações financeiras em seu nome. Quando uma vulnerabilidade é divulgada, isto é, alguém a descobriu e a divulgou, o descobridor irá pertencer a um destes três grupos: • Hackers; • Crackers; • Fabricantes de software ou hardware. Como estar informado tecnicamente sobre as vulnerabilidades? Esta é uma pergunta muito fácil de responder: pela própria Internet. Assine listas de discussão específicas e visite sites de segurança todos os dias: BUGTRAQ (pertence à SecurityFocus) e BOS-BR (Brasileira pertence à Securenet). Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 148 Alguns sites: • http://www.securityfocus.com • http://packetstorm.securify.com • http://ciac.llnl.gov • http://www.lockabit.coppe.ufrj.br • http://www.securenet.com.br É importante verificar também continuamente os sites dos fabricantes dos softwares que sua empresa utiliza, normalmente eles possuem uma seção dedicada à segurança. Comércio Eletrônico O comércio eletrônico, a compra e venda de mercadorias e serviços através de um meio eletrônico, esta será uma das mais importantes maneiras de se fazer negócio no futuro. Nos últimos tempos, porém, o progresso tem sido mais lento devido a falta de mecanismos seguros para efetuar pagamentos eletronicamente na Internet. Mesmo com tecnologias já amadurecidas, ainda temos problemas com o fator humano que nega a confiar em tais tecnologias. As pessoas acham, às vezes erroneamente, que estão mais seguras usando o cartão de crédito numa loja onde o atendente leva seu cartão e volta minutos depois do que na Internet. Como pesquisar soluções para comércio eletrônico? Enquanto estiver analisando protocolos e tecnologias de pagamento, é essencial manter-se atualizado, recorra à própria Internet para obter as informações mais recentes. Também recomendamos que sua empresa ou organização faça parte de grupos de trabalho para padronização de tecnologias. Se a participação direta não for possível, pelo menos se mantenha a par dos novos desenvolvimentos. A maioria destes grupos possui sites e/ou grupos de discussão dos quais você pode participar. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 149 • ETF (Internet Engineering Task Force) • Comitês ANSI do NIST • W3C (World Wide Web Consortium) • CommerceNet • FSTC (Financial Services Technology Consortium) • Smart Card Forum Introdução a Banco de dados - Modelo Relacional http://www.cos.ufrj.br/~marta/BdRel.pdf Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 150 U NIDADE 24 Objetivo: Conhecendo o inimigo em Segurança de acesso e de dados O INIMIGO Conhecendo o inimigo Muitos problemas de segurança são causados por pessoas maliciosas tentando ganhar algum tipo de benefício, seja ele monetário, político, intelectual, etc. Considere a seguinte tabela que mostra alguns adversários que um profissional em segurança terá que enfrentar: Adversários Objetivos Estudante Divertir-se vasculhando E-mails, roubando senhas, etc.. Hacker Cracker Testar a segurança de sistemas, roubar informações. Homens de Negócios Descobrir planos e estratégias de Marketing do concorrente. Ex. Empregados Vingar-se por ter sido despedido. Espião Conhecer a tecnologia do inimigo. Terrorista Roubar e utilizar segredos políticos. Outro problema grave é a quantidade de informações existente na Internet hoje abordando falhas de segurança e técnicas de invasão. Muitos manuais e ferramentas estão disponíveis, distribuídas por grupos de hackers e até por organizações dedicadas a segurança. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 151 Alguns sites de grupos de hackers: • http://www.ussrback.org • http://www.destroy.net • http://www.insecure.org • http://www.hackershomepage.com • http://www.hackerslab.com • http://packetstorm.securify.com • http://www.rootshell.com • http://www.securityportal.com • http://www.technotronic.com • http://unsekurity.virtualave.net • http://www.phrack.com • http://www.bufferoverflow.org Segurança de acesso e de dados Distinguir estes dois tipos de segurança é muito importante. Temos que ter em mente que um hacker mal intencionado irá descobrir falhas ou usar de qualquer artifício para conseguir quebrar um ou o outro tipo, e ele quebrar uma das duas, conseqüentemente quebrará as duas! É necessário “trancar” bem a periferia de sua rede ou sistema, mas para fazer você tem que conhecê-la bem, saber que tipos de dados trafegam. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 152 Lembre-se que você nunca estará 100% seguro (e isso é verdade): Em aprender a pensar como um hacker em usar criptografia; Em usar senhas fortes e jamais informar uma senha ou detalhes do seu sistema; Em desconfiar de tudo (e de todos). Ferramentas de segurança: um dos itens mais importantes está às ferramentas, mas não são as únicas necessárias. Itens importantes para a segurança: • Investimento; • Plano de Segurança; • Pessoal qualificado; • Interação na organização e entre fornecedor e cliente; • Ferramentas de segurança. Ameaças: problemas mais comuns: Má configuração dos hosts: a má configuração pode ocorrer devido aos problemas em especial: Configuração default do sistema deixa muito a desejar em segurança; Instalação de um sistema sem um mínimo de preocupação com a instalação default: Daemons do UNIX, Registros do NT; Instalação e/ou habilitação de serviços de forma indiscriminada. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 153 Falhas inerentes dos sistemas: a culpa sempre é colocada sempre nos fabricantes, por que seus sistemas possuem vulnerabilidade e falhas, quando não deveriam ter. Bugs são naturais em softwares Os bugs, falhas, e vulnerabilidades sempre irão existir, então, cabe a nós, nos manter atualizados quanto ao lançamento de correções, patches, updates, etc. Deficiência na reposta dos fabricantes: é um problema causado pelo fabricante, quando este deixa de manter um controle de qualidade de seu software, e o que é pior, não alerta os usuários e nem lança correções para tais problemas. Portanto, antes de adquirir um software, verifique, além de sua funcionalidade, se existe uma área de suporte ativa que cuide das atualizações e tenha preocupação com a segurança do produto. Pobre educação em segurança: um dos primeiros problemas que devem ser atacados na implementação de um plano de segurança. Nada adianta termos os melhores profissionais na administração, os melhores produtos, se nossos funcionários não estão cientes da real necessidade de segurança, e como se deve proceder. Não que seja necessário deixar para não cometer erros que possam comprometer a segurança de todo o sistema. Script Kiddies: Eles não procuram pela maneira mais fácil possível. Fazem isto utilizando um pequeno número de portas, então eles procuram pela Internet inteira, até que conseguem máquina que seja vulnerável (cedo ou tarde isto certamente acontecerá), deixam para trás as sofisticadas. Alguns não têm a mínima idéia do que está fazendo. Uma maneira de você se proteger é executar somente os serviços que são necessários. Se você não precisa de um serviço, desligue-o. Se você precisa do serviço, verifique se você possui a última versão ou se você tem todos os patches/fixes instalados. Os servidores DNS são muito usados para construir bases de dados dos sistemas que podem ser testados/escaneados. Limite os sistemas que podem fazer a transferência de zona dos seus Servidores de DNS. É altamente recomendado atualizar para a última versão do BIND, que você pode encontrar em http://www.isc.org/bind.html. E por último, observe se os seus sistemas sofrem ataques de scanning. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 154 O script kiddie é uma ameaça a todos os sistemas, eles não têm nenhum preconceito, escaneiam qualquer sistema, em qualquer lugar do mundo, independente do valor do sistema. Cedo ou tarde seu sistema será testado/escaneado. Algoritmos e Estrutura de Dados http://www.eduardostefani.eti.br/bennett/algoritmos2/algoritmos-estrutura-dados.pdf Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 155 U NIDADE 25 Objetivo: Conhecer a Engenharia Social. ENGENHARIA SOCIAL Os Administradores de Sistemas e Analistas de Segurança têm a tarefa de garantir que a rede e os sistemas estejam disponíveis, operacionais e íntegros, utilizando as últimas ferramentas e tecnologias disponíveis para atingir esses objetivos. Infelizmente não importa quanto dinheiro em equipamentos ou programas forem investidos na segurança, sempre haverá um elemento desprezado: o elemento humano. Muitos atacantes com conhecimentos medíocres de programação podem vencer ou ultrapassar a maioria das defesas utilizando uma técnica designada como Engenharia Social. Na segurança da informação a Engenharia Social é a aquisição de alguma informação ou privilégios de acesso inapropriado por alguém do lado de fora, baseado na construção de relações de confiança inapropriadas com as pessoas de dentro de uma organização. Ou seja, é a arte de manipular pessoas a fazer ações que elas normalmente não fazem. O objetivo da Engenharia Social, como técnica de ataque à segurança, é enganar alguma pessoa para que ela diretamente forneça informações, ou facilite o acesso a essas informações. Essa técnica é baseada nas qualidades da natureza humana, como a vontade de ajudar, a tendência em confiar nas pessoas e o medo de “se meter em problemas”. O resultado de uma ação de Engenharia Social bem sucedida é o fornecimento de informações ou acesso a invasores sem deixar nenhuma suspeita do que eles estão fazendo. A Engenharia Social é um problema sério. Uma organização deve pregar uma política que possa protegê-la contra essa ameaça, sendo que essa política deve ser repassada para toda a organização. Não adianta implementar as mais modernas ferramentas de segurança se os funcionários fornecem “a chave da porta” para todos que pedirem. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 156 Existe algum método mais rápido e eficiente de se descobrir uma senha? Que tal simplesmente perguntar? Por mais extraordinário que possa parecer, o método mais simples, mais usado e talvez mais eficiente de se recolher informações é simplesmente chegar e perguntar. Você também poderia subornar, mas dependendo da situação, isto pode lhe custar muito caro, então por que não tentar enganar e obter tais informações? De fato, este método é bastante utilizado, e existem hackers que sabem usá-lo com grande destreza, como o famoso hacker Kevin Mitnick que era um expert em fazer tais “vigarices”. Esta é arte de fazer com que outras pessoas concordem com você e atendam aos seus pedidos ou desejos, mesmo que você não tenha autoridade para tal. Pode-se dizer que engenharia social é simplesmente a arte de se contar uma mentira bastante convincente. Dentro da área de segurança podemos definir engenharia social como a aquisição de informações preciosas ou privilégios de acesso por “alguém de fora”, baseado em uma relação de confiança estabelecida, inapropriadamente, com “alguém de dentro”. Profissionais utilizam este tipo de aproximação para adquirir informações confidenciais, como organogramas de organizações, números de cartões de crédito e telefone, senhas de acesso, diagrama da rede, etc. com o objetivo de avaliar as vulnerabilidades de uma organização para futuros ataques. Geralmente este tipo de aproximação envolve muito mais do que simples raciocínio rápido e uma variedade de frases na ponta da língua. Engenharia social pode envolver muito trabalho de aquisição de informação antes de uma real ação de qualquer tipo. Para se iniciar um ataque, a maior parte do trabalho está na preparação, muito mais que no próprio ataque. Dizem que o único computador totalmente seguro é aquele desligado da tomada. A arte da engenharia social concentra-se no elo mais fraco da corrente da segurança de computadores: os seres humanos. O simples fato de que se pode facilmente convencer uma pessoa a ligar o computador, torna vulnerável, até mesmo, os computadores desligados. Na medida em que a parte humana de um sistema de segurança é a mais essencial, não existe computador na face da Terra que não necessite de seres humanos. Isso significa que Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 157 essa é uma fraqueza universal, independente de plataforma, software, tipo de conexão de rede ou idade do equipamento. Qualquer pessoa com acesso a qualquer parte do sistema, física ou remota, pode ser uma falha de segurança em potencial. Qualquer informação adquirida pode ser utilizada para outro ataque de engenharia social. Isso significa que qualquer pessoa, mesmo que não seja considerada integrante da política de segurança pode servir como uma porta de entrada. O primeiro método é também o mais óbvio. Um pedido simples e direto, onde se solicita ao indivíduo alvo que se execute uma determinada tarefa. Embora este método seja o menos provável a trazer um resultado positivo, é com certeza o mais simples, onde o indivíduo sabe exatamente o que você quer que ele faça. O segundo é criar uma situação onde o indivíduo é apenas uma parte dela. Com muito mais fatores que um simples pedido, o indivíduo preocupado estará bem mais predisposto a ser persuadido. Isso não significa que as situações propostas devam ser fictícias. Quanto menos você faltar com a verdade melhor. Isso requer muito mais trabalho por parte de quem faz o ataque e com certeza envolve um recolhimento de informação e conhecimento prévio do alvo. Se a situação proposta, real ou imaginária possuir certas características, o indivíduo alvo estará mais propenso a concordar com o seu pedido. Estas características incluem: • Difusão da responsabilidade: fazer com que o alvo acredite que ele não é o único responsável por suas ações e pelas informações que ele possa divulgar. • Manter a responsabilidade: longe do alvo. • Troca de favores: permitir que o alvo acredite que esta prestando um favor a você e que você é extremamente grato. As pessoas geralmente mostram-se mais dispostas a cooperar quando acreditam que poderão obter alguma vantagem no futuro, como se você ou o chefe ficassem devendo um favor. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 158 • Dever moral: é quando o alvo coopera, pois acha que é a coisa certa a fazer. É seu dever moral. Parte disso é culpa. As pessoas procuram evitar o sentimento de culpa e farão o possível para evitar esse sentimento. • Escolha: procure escolher seu alvo levando em consideração seu envolvimento, sua experiência e tempo de trabalho junto ao sistema alvo. Alunos, estagiários, secretárias e profissionais iniciantes mostram-se sempre mais dispostos a cooperar. Isto se deve ao fato de que estes indivíduos possuem ainda pouco conhecimento e pouca experiência a respeito do sistema alvo e desejam mostrarem-se úteis. Eles querem “mostrar serviço”. Quanto menos conflito com o alvo melhor. É muito mais fácil ganhar a confiança do alvo sendo gentil. Utilizar um tom de voz calmo e ser gentil é um bom começo para que o alvo coopere. Como um ataque de engenharia social pode revelar muitas informações, como se pode tornar um sistema de computadores mais seguro? Educação e difusão da informação, explicando aos empregados e pessoas ligadas direta ou indiretamente ao sistema a importância de uma política de segurança, evitando assim o ataque de pessoas que poderão tentar manipulá-los para ganhar acesso a informações privadas. Isto já é um excelente começo para tornar segura sua rede ou sistema. O que é PhishTank? PhishTank é um centro de limpeza colaborativo para dados e informação sobre phishing no Internet. Também, PhishTank fornece um API aberto para colaboradores e investigadores para integrar dados anti-phishing em suas aplicações sem nenhum custo. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 159 U NIDADE 26 Objetivo: Conhecer as pragas virtuais. VÍRUS, WORMS E TROJANS Vírus, Worms e Trojans Batizadas genericamente de Malware, as pragas virtuais têm ganhado terreno nos últimos anos no que diz respeito aos prejuízos encarados por empresas. Como se defender com eficiência contra as pragas? Pergunta freqüente na mente de administradores, gestores de segurança e empresários, cada vez mais preocupados com as perdas que enfrentam ao ingressar nesse admirável mundo novo chamado Internet. Se houvesse apenas uma resposta para essa dúvida, de como aproveitar todos os recursos trazidos pela rede sem sofrer com os riscos, estariam todos satisfeitos. Infelizmente, a experiência mostra que lidar com ameaças virtuais exige uma série de cuidados que não se restringe ao uso de antivírus. Anualmente, os vírus causam muitos prejuízos ao redor do mundo. A Internet é o meio ideal para transmissão destas “pestes virtuais”. Na década de oitenta, transmitir um vírus tinha poucos recursos, sendo transmitido de máquina em máquina através de disquetes, o que tornava a contaminação bastante lenta. Atualmente as coisas são bem diferentes, através da Internet a contaminação é muito mais rápida e atinge facilmente nível mundial. Além disso, surgiram conceitos novos como vírus de macro, worms e trojans. Abordaremos os vírus e suas variantes no ambiente Windows. Existem vírus nos ambiente UNIX, mas a proporção é infinitamente menor. Além disso, os conceitos abordados aqui se aplicam em ambos os casos. A seguir, um pequeno esclarecimento sobre as diferenças entre os vários invasores que podem vir a nos incomodar: Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 160 Vírus: são programas espúrios inseridos em computadores contra vontade do usuário e desempenham funções indesejadas. Alguns vírus têm a capacidade de se reproduzir e infectar outros dispositivos por toda a rede. Já outros não se reproduzem, mas são distribuídos em falsos programas na rede ou em CDs vendidos em publicações. Suponha que um vírus contamine o COMMAND.COM, arquivo executável carregado pelo computador toda vez que se liga o micro. Desta forma, o programador que fez o vírus sabe que sua “criatura” sempre vai ser carregada na memória. Já se fosse um arquivo de dados como, por exemplo, MYFILE.TXT, nada aconteceria, pois o micro em princípio não executa arquivos com extensão TXT. Alguns vírus: TROJAN (Cavalos de Tróia): nome foi baseado na clássica peça da mitologia grega onde os soldados do país conseguem se infiltrar na cidade de Tróia escondidos dentro de um imenso cavalo de madeira. Os Cavalos-de-tróia são programas projetados para assumir controle de um servidor ou estação de trabalho de maneira furtiva, sem que o administrador de rede ou usuário se dê conta. Para que o invasor descubra quem possui a parte servidor do software ele faz uma varredura de endereços na Internet. Quem estiver infectado pelo cavalo-de-tróia responderá à varredura. Os Trojans são códigos maliciosos, geralmente camuflados como programas inofensivos que, uma vez instalados no computador da vítima, podem permitir que o criador da praga obtenha o controle completo sobre a máquina infectada, que passa a ser chamada de “zumbi”. Os programas para ataques Denial-of-Service (DoS) geralmente são Trojans. Alguns tipos de Trojans conhecidos, como o BO e o Netbus, permitem acesso ao computador, deixando vulneráveis arquivos do sistema e senhas gravadas no disco e na memória. Neste caso, um usuário de Internet banking infectado pela praga pode estar fornecendo sem saber o passaporte para a sua conta corrente. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 161 Para evitar a infecção por cavalos-de-tróia, muitos sites visados pelos invasores disponibilizam arquivos para download com esquemas de verificação de integridade como verificação de soma, PGP, entre outros. Vírus de Macro: Macro é uma VBA – Visual Basic Application (linguagem script desenvolvida pela Microsoft), que é interpretada pelo MS OFFICE (Word, Excel, Access, Power Point), ou seja, podemos fazer pequenos programas que nos ajudem a trabalhar no Office. Como por exemplo, criar um botão na barra de ferramentas do Word que permita abrir diretamente a calculadora do Windows. No entanto, nas mãos erradas, se torna uma arma poderosa capaz de causar muitos prejuízos. Um Vírus de Macro é um programa escrito em VBA. No momento que abrimos um documento do Word contaminado, este macro é ativado, podendo apagar documentos importantes. Worms: são trojans ou vírus que fazem cópias do seu próprio código e as enviam para outros computadores, seja por e-mail ou via programas de bate-papo, dentre outras formas de propagação pela rede. Tem se tornado cada vez mais comuns e perigosos porque o seu poder de propagação é muito grande. Do lado dos servidores, os worms mais recentes exploram vulnerabilidades dos serviços ou programas instalados no servidor para se infiltrar e fornecer acesso ao atacante. Além disso, uma vez instalados eles começam a procurar novos endereços vulneráveis para atacar. Já do lado das estações, os worms mais comuns exploram vulnerabilidades dos programas de recebimento de e-mail para se infiltrarem e se propagarem para todos os endereços cadastrados no cliente de e-mail, além de se anexarem automaticamente em todas as mensagens enviadas. Os worms são uma das pragas mais perigosas atualmente, se unem ao conceito de vírus e trojan utilizando a Internet para se propagarem automaticamente. Port Scanning: é o processo de verificação de quais serviços estão ativos em um determinado host, podendo verificar redes inteiras, apontando quais hosts estão ativos e quais são os seus serviços de rede em funcionamento. Além disso, as ferramentas mais Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 162 modernas inclusive podem informar qual é o sistema operacional do host verificado. Hosts podem ser considerados como estações, servidores ou equipamentos ligados em rede. Geralmente essa a primeira técnica utilizada por hackers para se obter informações sobre o seu alvo. Sabendo quais são os serviços disponíveis e qual o sistema operacional, eles podem buscar por vulnerabilidades nesses sistemas. Para realizar um trabalho obscuro, muitas das ferramentas de Port Scanning utilizam técnicas como Spoofing para ocultar origem da sua ação, e possuem um tipo de scanning chamado “Stealth”, que dificilmente pode ser detectado. A técnica de Port Scanning também pode ser utilizada pelos administradores de sistemas para realizar uma auditoria nos serviços ativos da rede. Dessa maneira, pode-se identificar e eliminar quaisquer serviços que estejam rodando sem necessidade, auxiliando na manutenção da segurança. O Port Scanning é muito útil, tanto para os administradores de sistemas quanto para os Hackers. Atualmente, existem ferramentas que podem identificar e reagir contra essa técnica, devendo ser utilizadas com precaução, pois os invasores podem estar utilizando endereços falsos. Assim, uma reação poderia estar sendo realizada contra o host errado. Antivírus: os vírus formam uma grande indústria de antivírus, que agem de forma semelhante. Existem dois métodos básicos usados para combater vírus. O primeiro consiste em manter nos antivírus de dados onde ficam registradas todas as assinaturas (parte do vírus que o caracteriza) de vírus conhecidos. Daí a importância de manter seu antivírus atualizado, pois a cada dia surgem centenas de novos vírus. Assim, quando scaneamos o sistema, na verdade o que estamos fazendo é comparar cada arquivo nosso com a assinatura dos vírus registrados. A segunda forma de proteção é conhecida como inoculação, que nada mais é que a criação de um banco de dados contendo as principais informações (tamanho, data de criação e data da ultima alteração) sobre os arquivos inoculados. Assim, cada vez que scaneamos o sistema o programa antivírus compara as informações do banco de dados criado com as que estão no disco. Se houver alguma diferença é emitido um alerta. Mas não é qualquer arquivo que deve ser inoculado, uma vez que arquivos de dados sempre são alterados. Os arquivos executáveis, DLLs e arquivos de Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 163 sistema são exemplos de arquivos que devem ser inoculados, pois são as principais vítimas de vírus e não mudam seu conteúdo com freqüência. Portal da Segurança http://www.jseg.net/cms/index.php?option=com_content&task=view&id=1566&Itemid= 148 Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 164 U NIDADE 27 Objetivo: Conhecer os tipos de Ataques e Medidas de Segurança. MEDIDAS DE SEGURANÇA Algumas Medidas de Segurança Nenhuma empresa está livre de ataques de vírus. Existem algumas medidas que ao menos podem diminuir o risco de contaminação. Primeiramente é muito importante que haja uma conscientização por parte dos funcionários sobre as normas de segurança, a fim de evitar problemas futuros. Nada adianta uma equipe super treinada em segurança se os funcionários insistirem em baixar arquivos de origem duvidosa na Rede externa, ou inserirem discos inseguros nos micros. Um dos pontos mais importante do processo de conscientização dos funcionários é a questão do e-mail, pois este é o principal “trampolim” dos vírus atualmente. Medidas simples podem evitar muita dor de cabeça futura: • Não abrir e-mails de pessoas desconhecidas; • Não abrir arquivos executáveis anexados a e-mails, mesmo que venham de pessoas conhecidas; • Não abrir documentos do Office contendo macros, se abrir, desabilitar os macros; • Não baixar programas de sites da Internet; • Não usar disquetes de dentro da empresa em computadores de segurança duvidosa. Apesar de tudo, o ideal é também ter uma equipe preparada para agir em caso de contaminação, e que se mantenha atualizada se tratando tratar de contaminações e de segurança do site em geral. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 165 Algumas atribuições básicas de uma equipe de segurança: • Manter o antivírus sempre atualizado; • Fazer backups periódicos; • Configurar os clientes de e-mail para não interpretarem HTML ou qualquer script; • Configurar o Office para não executar macros sem permissão; • Atualizar o Office periodicamente (cada dia que passa descobrem-se novas falhas, que podem ser exploradas). Distribute DoS O DoS tem sido usado por profissionais de segurança como ferramenta para avaliar a capacidade de sua rede. Por outro lado, do mundo todo têm trazido muitos problemas a pequenos e até grandes sites, como Yahoo redes. O poder de sobrecarga desses ataques aumenta quando eles vêm de várias máquinas para um alvo, ou seja, o envio de pacotes parte de vários pontos. DDoS – Distributed Denial-of-Services Attacks: ao longo de 1999 e 2000, diversos sites sobre segurança da informação (como o CERT, SANS e SecurityFocus) começaram a anunciar uma nova categoria de ataques de rede que acabou se tornando bastante conhecida: o ataque distribuído. Para iniciar um ataque são utilizados centenas ou até milhares de computadores desprotegidos e ligados na Internet para lançar coordenadamente o ataque. A tecnologia distribuída não é completamente nova, no entanto, vem amadurecendo e se sofisticando de tal forma que até mesmo vândalos curiosos e sem muito conhecimento técnico podem causar danos sérios. Os ataques DDoS são resultados de se conjugar dois conceitos: negação de serviço e intrusão distribuída, e podem ser definidos como ataques DoS diferentes partindo de várias Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 166 origens, disparados simultânea e coordenadamente sobre um ou mais alvos. De uma maneira simples, são ataques DoS em larga escala. Os primeiros ataques DDoS documentados surgiram em agosto de 1999 [CERT00:web], no entanto, esta categoria se firmou como a mais nova ameaça na Internet na semana de 7 a 11 de Fevereiro de 2000, quando vândalos cibernéticos deixaram inoperantes por algumas horas sites como o Yahoo, EBay, Amazon e CNN. Uma semana depois, teve-se notícia de ataques DDoS contra sites brasileiros, tais como: UOL, Globo On e IG, causando com isto uma certa apreensão generalizada. Para realização de um ataque DDoS são envolvidos os seguintes personagens: • Atacante: quem efetivamente coordena o ataque. • Master: máquina que recebe os parâmetros para o ataque e comanda os agentes. • Agente: máquina que efetivamente concretiza o ataque DoS contra uma ou mais vítimas, conforme for especificado pelo atacante. Geralmente um grande número de máquinas que foram invadidas para ser instalado o programa cliente. • Vítima: alvo do ataque; máquina que é "inundada" por um volume enorme de pacotes, ocasionando um extremo congestionamento da rede e resultando na paralisação dos serviços oferecidos por ela. • Daemon: processo que roda no agente, responsável por receber e executar os comandos enviados pelo cliente. • Cliente: aplicação que reside no master e que efetivamente controla os ataques enviando comandos aos daemons. Os ataques DDoS amplificam o poder de ação dos ataques DoS utilizando computadores comprometidos, os agentes, onde os daemons foram instalados indevidamente devido a vulnerabilidades exploradas pelos atacantes. A partir do momento que o master envia o comando de início para os agentes, o ataque à vítima se inicia em grande escala. Esse tipo de ataque mostra como a segurança de qualquer equipamento à Internet é importante, Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 167 qualquer host vulnerável pode ser utilizado como recurso para um ataque. A idéia é instalar programas para ataque DoS em diferentes hosts. Este computador central, esses Zumbis começam a enviar o máximo de pacotes ao alvo, sendo que na primeira está o cracker na última camada as máquinas às quais irão enviar diretamente os pacotes que irão causar o na vítima. Antes de existirem ferramentas que automatizassem esse ataque, era necessário usar para disparar o ataque. Usando telnet ou SSH, o hacker dispararia o comando para causar o na máquina vítima. Para isso, ele poderia usar, por exemplo, o ping do UNIX nos hosts. Vulnerabilidades do TCP/IP são a chave para o desenvolvimento de novos programas, cada vez mais poderosos nesses ataques. Uma delas é o Stream Attack, descoberta por Tim Yardley. Esta categoria de ataque funciona da seguinte maneira: na conexão, pacotes são enviados com os indicadores (flags) ACK e SYN ligados ou apenas o ACK ligado. Devido a estes flags não fazerem parte de uma primeira etapa da conexão, a máquina alvo ficará confusa e levará algum tempo para processar tais dados. Imagine então o Stream Attack partindo de várias hosts (modo distribuído), isto ocasionaria uma sobrecarga utilizando-se um menor número de hosts (Zumbis) que o DDoS “padrão”. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 168 U NIDADE 28 Objetivo: Diferenciar os Ataques, Metodologia empregada e técnicas de ataque a senhas. DoS Tipos de Ataques de DoS: Consumo de Largura de Banda: neste tipo de ataque, existem pelo menos duas possibilidades: 1. O atacante possui uma largura de banda maior que a da vítima, o que facilita a inundação. 2. O atacante agrega outros computadores para que juntos, disparem o ataque, amplificando seu efeito e consumindo a largura de banda do computador vítima. Consumo dos Recursos: a idéia é esgotar os recursos do sistema, tais como memória, CPU, quotas de disco, etc., o que pode ocasionar travamento dos processos, entupimento de discos, indisponibilização de recursos. Ataques a Servidores de Nomes de Domínios (DNS) e a Roteadores: o ataque baseado em roteamento, o atacante manipula a tabela de roteamento com a finalidade de negar serviço a quem consultá-la, explorando falhas dos protocolos de roteamento, como o Protocolo de Informações de Roteamento (RIP) e o Protocolo de Gateway de Fronteira (BGP). Com isso, o atacante pode direcionar todo tráfego para a máquina dele, ou mesmo para uma rede que não existe, o que chamamos de buraco negro. Assim como nos ataques baseados em roteamento, o ataque a DNS permite direcionar o tráfego. Porém, esses ataques, em sua maioria, consistem em armazenar endereços falsos no cache do servidor da vítima. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 169 Exemplos de Ataques DoS: Ataque de Senhas: a utilização de senhas seguras é um dos pontos fundamentais para uma estratégia efetiva de segurança [CLIFF01:web], garantindo que somente as pessoas autorizadas terão acesso a um sistema ou à rede, o que nem sempre é realidade. As senhas geralmente são criadas e implementadas pelos próprios usuários que utilizam os sistemas ou a rede. Palavras, símbolos ou datas fazem com que as senhas tenham algum significado para os usuários, permitindo que eles possam facilmente lembrá-las. Neste ponto é que existe o problema, pois muitos usuários priorizam a conveniência ao invés da segurança, escolhendo senhas relativamente simples. Enquanto isso permite que possam lembrar facilmente das senhas, também facilita o trabalho de quebra dessas senhas por hackers, e invasores em potencial estão sempre testando as redes e sistemas em busca de falhas para entrar. O modo mais notório e fácil a ser explorado é a utilização de senhas inseguras. A primeira linha de defesa, a utilização de senhas, pode se tornar um dos pontos mais falhos. Parte da responsabilidade dos administradores de sistemas é garantir que os usuários estejam cientes da necessidade de utilizar senhas seguras. Isto leva a dois objetivos a serem alcançados: primeiro, educar os usuários sobre a importância do uso de senhas seguras; e segundo, implementar medidas que garantam que as senhas escolhidas pelos usuários são efetivamente adequadas. Para alcançar o primeiro objetivo, a educação do usuário é o ponto chave. Já para alcançar o segundo objetivo, é necessário que o administrador de sistemas esteja um passo à frente, descobrindo senhas inseguras antes dos atacantes. Para fazer isso é necessária a utilização das mesmas ferramentas utilizadas pelos atacantes. Duas principais técnicas de ataque a senhas [CLIFF01:web]: Ataque de Dicionário: são utilizadas combinações de palavras, frases, letras, números, símbolos, ou qualquer outro tipo de combinação geralmente que possa ser utilizada na criação das senhas pelos usuários. Os programas responsáveis por realizar essa tarefa trabalham com diversas permutações e combinações sobre essas palavras. Quando alguma dessas combinações se referir à senha, ela é considerada como quebrada (Cracked). Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 170 Geralmente as senhas estão armazenadas criptografadas utilizando um sistema de criptografia HASH. Dessa maneira os programas utilizam o mesmo algoritmo de criptografia para comparar as combinações com as senhas armazenadas, ou seja, eles adotam a mesma configuração de criptografia das senhas, e então criptografam as palavras do dicionário e comparam com senha. Força-Bruta: enquanto as listas de palavras, ou dicionários, dão ênfase a velocidade, o segundo método de quebra de senhas se baseia simplesmente na repetição. Força-Bruta é uma forma de se descobrir senhas que compara cada combinação e permutação possível de caracteres até achar a senha. Este é um método muito poderoso para descoberta de senhas, no entanto é extremamente lento porque cada combinação consecutiva de caracteres é comparada, como por exemplo, aaa, aab, aac ..... aaA, aaB, aaC... aa0, aa1, aa2, aa3... aba, aca, ada... Outras técnicas de ataque a senhas: SMURF: é um dos mais temidos, envolvendo vítima, atacante e uma rede auxiliar. Funciona da seguinte maneira: são enviados pacotes ICMP echo a rede auxiliar, de origem falsificada como sendo o endereço da vítima e quando os pacotes chegam a rede auxiliar, eles serão multiplicados e, portanto, a vítima será inundada com quantos pacotes forem ecoados na rede. SYN FLOOD: para entendermos este ataque precisamos ver como funciona uma conexão TCP entre duas máquinas A e B, que é realizada em 3 etapas. Primeiramente, a máquina A envia um pacote SYN. A máquina B então responde com outro pacote SYN/ACK que ao chegar a máquina A, reenvia um pacote ACK e então a conexão é estabelecida. A vulnerabilidade explorada é que a maioria dos sistemas aloca uma quantidade finita de recursos para cada conexão potencial. Mesmo que um servidor seja capaz de atender muitas conexões concorrentes para uma porta específica (porta 80), o que o atacante explora é que apenas cerca de 10 conexões potenciais são tratáveis. Iniciando o ataque, o cracker envia um pacote SYN com origem falsificada (buraco negro), o que deixará a vítima procurando por Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 171 algum tempo (que varia de acordo com o sistema) a origem para enviar o pacote SYN/ACK. Sendo assim, esta possível conexão fica alocada na fila, que é bastante limitada. Detectando e evitando DDoS gera dois tipos de tráfego: tráfego de controle (entre cliente e servidor) e tráfego “flood” (entre servidor DDoS e a vítima). Para habilitar uma eficiente detecção deve-se procurar por sinais gerais (assinaturas), alguns óbvios, outros pelo volume de tráfego e que causam suspeita. Ainda não existe uma solução para bloquear um ataque DoS/DDoS. O que se pode fazer é tentar minimizar seu impacto, para fazer isso temos que primeiro identificar corretamente um ataque de DoS e depois criar soluções para “escoar” o fluxo de pacotes, seja através de um firewall na fronteira ou algum esquema de alteração de endereçamento IP ou DNS. Metodologia dos ataques: Footprinting (Coletando informações do alvo): arte de obter informações sobre um sistema alvo usando táticas “seguras”, sem perigo de detecção e, que pode dar informações sobre ele, como visitar o site da empresa em que se quer invadir e ler as secções para ver se encontra algo diferente. Antes da diversão real do Hacker começar, três passos especiais, e às vezes árduos, precisam ser executados. Primeiramente, a aquisição de alvos (footprinting), e coleta informações do alvo. Por exemplo, quando um ladrão decide roubar um banco ele não entra simplesmente no banco e começa a exigir o dinheiro (pelo menos, não os expertos). Em vez disso, eles fazem grandes esforços para obter informações sobre o banco – as rotas dos carros-fortes e horários de entrega de dinheiro, as câmeras de vídeo, o número de caixas, etc. O mesmo se aplica a invasores bem-sucedidos. Eles precisam colher uma grande quantidade de informações para executar um ataque cirúrgico e bem direcionado (um que não seja descoberto imediatamente). Como resultado, um atacante irá coletar o máximo de Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 172 informações sobre todos os aspectos de segurança de uma organização. Eles acabarão obtendo um footprint (perfil) único de sua presença na Internet. Seguindo uma metodologia estruturada, atacantes podem juntar sistematicamente informações de uma grande variedade de fontes e compilar esse footprint crítico de qualquer organização. Embora haja diferentes técnicas de footprinting, seu objetivo primário é descobrir informações relacionadas a tecnologias de Internet, intranet, acesso remoto e extranet. Métodos e Ferramentas de Segurança: as ferramentas de segurança podem ser classificadas inicialmente quanto ao seu escopo: Ferramentas de segurança de hosts São voltadas para análise, correção, implementação de novos controles em sistemas computacionais, como o crack para verificação de senhas; Ferramentas de segurança de rede; Estão direcionadas para a verificação e implementação de controles sobre o tráfego de uma rede, como os filtros de pacotes; Outra categorização é referente à função: Verificação da integridade e vulnerabilidade; Compreende programas que analisam ou controlam a situação de um ou mais sistemas, relacionando os serviços disponíveis, os erros de permissão em arquivos, mudanças em programas, acesso a serviços, etc.; Autenticação. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 173 Uma vez conhecidas as principais ameaças e técnicas utilizadas contra a segurança da Informação, podem-se descrever as principais medidas e ferramentas necessárias para eliminar essas ameaças e garantir a proteção de um ambiente computacional. Segurança Física: medidas de proteção física, como serviços de guarda, uso de no-breaks, alarmes e fechaduras, circuito interno de televisão e sistemas de escuta, são realmente uma parte da segurança da informação. As medidas de proteção física são freqüentemente citadas como “segurança computacional”, visto que têm um importante papel também na prevenção. Salienta-se as ameaças sempre presentes, mas nem sempre lembradas, como incêndios, desabamentos, relâmpagos, alagamentos, problemas na rede elétrica, acesso indevido de pessoas aos servidores ou equipamentos de rede, treinamento inadequado de funcionários, etc. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 174 U NIDADE 29 Objetivo: Conhecer Sistemas de Detecção de Intrusão, técnicas de reconhecimento de ataque e programas para Identificação de Intrusos através de Rede. SISTEMAS Instalação e Atualização A maioria dos sistemas operacionais, principalmente as distribuições Linux, vem acompanhada de muitos aplicativos que são instalados opcionalmente no processo de instalação do sistema. Temos como exemplo a distribuição Shrike RedHat Linux, que na sua versão mais atual (9) vem acompanhada de dois CDs com mais de 3000 aplicativos. Muitas vezes a instalação desses aplicativos não focaliza a segurança, mas sim a facilidade de uso. Sendo assim, torna-se necessário que vários pontos sejam observados para garantir a segurança desde a instalação do sistema, dos quais podemos destacar: • Seja minimalista: instale somente os aplicativos necessários, pois aplicativos com problemas podem facilitar o acesso de um atacante; • Devem ser desativados todos os serviços de sistema que não serão utilizados: muitas vezes o sistema inicia automaticamente diversos aplicativos que não são necessários, e que podem facilitar a vida de um atacante; • Deve-se tomar um grande cuidado com as aplicações de rede: problemas nesse tipo de aplicação podem deixar o sistema vulnerável a ataques remotos que podem ser realizados através da rede ou Internet; • Use partições diferentes para os diferentes tipos de dados: a divisão física dos dados facilita a manutenção da segurança; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 175 • Remova todas as contas de usuários não utilizadas: contas de usuários sem senha, ou com a senha original de instalação, podem ser facilmente exploradas para obter-se acesso ao sistema. Grande parte das invasões na Internet acontece devido à falhas conhecidas em aplicações de rede, as quais os administradores de sistemas não foram capazes de corrigir a tempo [CERT00]. Afirma-se facilmente pelo simples fato de que quando uma nova vulnerabilidade é descoberta, um grande número de ataques é realizado com sucesso. Por isso, é extremamente importante que os administradores de sistemas se mantenham atualizados sobre os principais problemas encontrados nos aplicativos utilizados, através dos sites dos desenvolvedores ou específicos sobre segurança da Informação. As principais empresas comerciais desenvolvedoras de software e as principais distribuições Linux possuem boletins periódicos informando sobre as últimas vulnerabilidades encontradas e suas devidas correções. Alguns sistemas chegam até a possuir o recurso de atualização automática, facilitando ainda mais o processo. O ponto-chave é que as técnicas de proteção de dados por mais sofisticadas que sejam não têm serventia nenhuma se a segurança física não for garantida. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 176 Sistemas de Detecção de Intrusão (IDS) As tecnologias de infra-estrutura, de serviços e protocolos para redes de computadores evoluem com velocidades impressionantes e tornam-se cada vez mais complexas. Podemos citar novos protocolos, o SSL (Secure Socket Layers), o IPSec (extensões de segurança para o protocolo IP) – utilizado na implementação de VPN’s. Como exemplos de novas tecnologias de interconexão e infra-estrutura, temos as redes comutadas, redes de altas velocidades etc. Estas novas tecnologias, algumas criadas com o objetivo de oferecer maior segurança nas comunicações digitais, acabam por criar dificuldades na implantação de sistemas de detecção de intrusos (IDS – Intrusion Detection System). Tais dificuldades incluem a limitação de análise de tráfego dos atuais IDS’s em redes com taxas de transmissão maior que 100 Mbps e a falta de suporte a tecnologias como ATM. Para a implementação adequada de um IDS, muitas vezes são necessárias alterações estruturais na topologia destas redes, mas, sobretudo, é necessário o completo conhecimento do ambiente em questão. Uma das soluções para os problemas apresentados acima e outros descritos ao longo deste artigo é a utilização de IDS’s baseados na monitoração individual dos sistemas, conhecidos como host-based IDS (ou IDS’s híbridos), que agregam checagens do tráfego de rede. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 177 Uma das áreas de maior expansão, pesquisa e investimento na segurança em redes de computadores é a detecção de Intrusão. Com o grande crescimento da interconexão de computadores em todo o mundo, materializado pela Internet, é verificado um conseqüente aumento nos tipos e no número de ataques a esses sistemas, gerando uma complexidade muito elevada para a capacidade dos tradicionais mecanismos de prevenção. Para maioria das aplicações atuais, desde redes corporativas simples até sistemas de e-commerce ou aplicações bancárias, é praticamente inviável a simples utilização de mecanismos que diminuam a probabilidade de eventuais ataques. Um ataque força, em casos extremos, causa interrupções totais dos serviços para que um lento e oneroso processo de auditoria e de posterior restauração manual seja feito. Isso justifica todo o investimento feito visando a criação de mecanismos que ultrapassem a barreira da simples prevenção, garantindo aos sistemas um funcionamento contínuo e correto mesmo na presença de falhas de segurança, principal objetivo dos chamados Sistemas de Detecção de Intrusão (IDS – Intrusion Detection Systems) (CAMPELO et al, 2001:25). Define-se IDS como uma ferramenta inteligente capaz de detectar tentativas de invasão em tempo real. Esses sistemas podem atuar de forma a somente alertar as tentativas de invasão, como também em forma reativa, aplicando ações necessárias contra o ataque. Ou seja, IDS é um sistema de configurações e regras que tem como objetivo gerar alertas quando detectar pacotes que possam fazer parte de um possível ataque. Existem diversos tipos de ferramentas IDS para diferentes plataformas, porém as ferramentas IDS trabalham basicamente de modo parecido, ou seja, analisando os pacotes que trafegam na rede e comparando-os com assinaturas já prontas de ataques, identificando-os de forma fácil e precisa qualquer tipo de anomalia ou ataque que possa vir a ocorrer em sua rede/computador. Uma ferramenta IDS serve basicamente para nos trazer informações sobre nossa rede, informações como: • Quantas tentativas de ataques sofreram por dia; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 178 • Qual tipo de ataque foi usado; • Qual a origem dos ataques. Enfim, a partir dele, você vai tomar conhecimento do que realmente se passa em sua rede e em casos extremos, poderá tomar as medidas cabíveis para tentar solucionar qualquer problema. Em função das técnicas com que o IDSs reconhecem um ataque, eles podem ser divididos em dois tipos: Sistemas Baseados em Regras (Rule-based systems): baseado em bibliotecas ou bases de dados que contenham assinaturas dos ataques. Quando algum tráfego coincide com um critério ou regra, ele é marcado como sendo uma tentativa de intrusão. A desvantagem é a necessidade de se manter a base de dados constantemente atualizada, e além de que essa técnica somente identifica os ataques conhecidos. Além disso, às vezes pode existir uma relação inversa entre a especificação da regra e sua taxa de acerto. Isto é, se uma regra for muito específica, ataques que sejam similares, mas não idênticos, não serão reconhecidos. Sistemas Adaptáveis (Adaptive Systems): emprega técnicas mais avançadas, incluindo inteligência artificial, para reconhecer novos ataques e não somente ataques conhecidos através de assinaturas. As principais desvantagens dos sistemas adaptáveis são o seu custo muito elevado e a dificuldade no seu gerenciamento, que requer um grande conhecimento matemático e estatístico. Além da divisão pelas técnicas de reconhecimento de ataque, os IDSs podem ser também classificados em dois tipos principais: NIDS e HIDS. NIDS (Sistemas de Detecção de Intrusão de Rede): grande parte dos sistemas comerciais de detecção de intrusão é baseada em rede. Nesse tipo de IDS os ataques são capturados e analisados através de pacotes de rede. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 179 Em um segmento de rede, o NIDS pode monitorar o tráfego afetando múltiplas estações que estão conectadas ao segmento de rede, assim protegendo essas estações. Os NIDSs também podem consistir em um conjunto de sensores ou estações espalhados por vários pontos da rede. Essas unidades monitoram o tráfego da rede, realizando análises locais do tráfego e reportando os ataques a um console central. As estações que rodam esses sensores devem estar limitadas a executar somente o sistema de IDS, para se manterem mais seguras contra ataques. Muitos desses sensores rodam num modo chamado “stealth”, de maneira que torne mais difícil para o atacante determinar as suas presenças e localizações. Vantagens do IDS baseados em rede: A implementação de um NIDS tem pouco impacto sobre a performance da rede, pois geralmente ficam em modo passivo, apenas escutando o tráfego da rede sem interferir no seu funcionamento; NIDs bem posicionados podem monitorar uma grande rede; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 180 Os IDSs baseados em rede podem ser muito seguros contra a maioria dos ataques, além de ficarem invisíveis aos atacantes. Exemplo de programas para Identificação de Intrusos através de Rede (NIDS): • SNORT: sistema capaz de analisar o tráfego da rede em tempo real, tendo base de dados para identificar os ataques usando uma linguagem flexível para determinação das regras que descrevem o tráfego que deve ser analisado ou ignorado, oferece um mecanismo de detecção modular através de plugins, tem potencialidade de gerar alertas em tempo real enviando mensagens ao syslog, alertas em arquivos ou outros meios. • NESSUS: ao contrário do SNORT que somente monitora e alerta as tentativas de invasão, identifica as vulnerabilidades dos sistemas, verificando a segurança do sistema. Seu funcionamento é baseado num conjunto de regras que definem ações a serem realizadas para identificar as vulnerabilidades, possui uma arquitetura clienteservidor, onde o servidor realiza os testes e o cliente apenas comanda as ações e recebe os resultados. Apesar de ambos serem IDS de Rede (NIDS), os sistemas não se excluem. O SNORT é capaz de identificar e alertar os ataques durante a sua execução, enquanto o NESSUS permite realizar busca de vulnerabilidades nos hosts da rede. Vantagens: • Monitoramento para múltiplas plataformas; • Detecta ataques de rede: ip spoofing, port scanning, smurf; • Pode monitorar atividades específicas em portas conhecidas; • Trabalha em tempo real: detecção e alerta; • Detecta ataques e também tentativas; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 181 • É difícil apagar rastros com um NDIS na rede; • É transparente ao hacker; • Não causa impacto no desempenho da rede. Desvantagens: • Perda de pacotes em redes saturadas (rede que possua um grande tráfego de dados); • Dificuldade compreensão de protocolos de aplicação específicos, como o SMB (Microsoft); • Não é capaz de monitorar tráfego cifrado; • Dificuldade de utilização em redes segmentadas: Taps, Hubs, Espelhamento de porta, etc. • Geralmente precisa de hardware específico. A maioria dos NIDSs não pode reconhecer se um ataque foi bem sucedido, apenas apontam que um ataque foi iniciado, apenas detectam um ataque, sendo que o administrador de sistemas deve verificar se o host apontado foi atacado. A maioria dos switchs não tem um sistema de monitoramento de portas limitando o NIDS apenas analisar uma estação. Mesmo que o switch possua o recurso de monitoramento, apenas uma porta não poderá receber todo o tráfego passando pelo equipamento. Alguns IDSs baseados em rede têm problemas em lidar com pacotes de dados fragmentados. Esses tipos de pacotes podem até tornar um NIDs instável ou mesmo travar o seu funcionamento. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 182 U NIDADE 30 Objetivo: Conhecer os Sistemas de Detecção de Instrução de Host. SISTEMAS DE DETECÇÃO DE INSTRUÇÃO DE HOST HIDS (Sistemas de Detecção de Instrução de Host): operam sobre informações coletadas em computadores individuais, podendo analisar as atividades das estações com confiança e precisão, determinando exatamente quais processos e usuários estão envolvidos em um tipo particular de ataque no sistema operacional. Além disso, ao contrário dos sistemas baseados em rede, os baseados em host (estação) podem ver as conseqüências de uma tentativa de ataque, como eles podem acessar diretamente e monitorar os arquivos e processos do sistema usualmente alvos de ataques. Alguns HIDSs suportam um gerenciamento centralizado e relatórios que podem permitir que um apenas um console possa gerenciar várias estações. Outros geram mensagens em formatos que são compatíveis com os sistemas de gerenciamento de redes. Vantagens: • Atividades específicas do sistema podem ser monitoradas detalhadamente; • Ataques físicos ao servidor (keyboard attack) podem ser detectados; • Ataques que utilizam criptografia podem ser descobertos; • Independe da topologia de rede; • Gera poucos falsos positivos; • Não precisa de hardware específico; Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 183 • Quando o IDS de host opera em nível de sistema operacional, ele pode ajudar a detectar Trojan Horses ou outros tipos de ataques que envolvam problemas de integridade nos programas; • Tem a capacidade de monitorar eventos locais de um host, podendo detectar ataques que não poderiam ser detectados por um IDS de rede. Desvantagens: • Difícil de gerenciar e configurar (exige muita customização) e é específico por hosts; • Dependente do Sistema Operacional; • Não detecta ataques de rede (smurf, scanning, etc); • Caso o servidor seja invadido, as evidências podem ser removidas; • Necessidade de espaço de armazenamento adicional; • Diminui o desempenho do host monitorado; • Como as informações utilizadas para análise do HIDS estão armazenadas no host, um atacante pode invadir o sistema e desabilitar essas funcionalidades; • IDS baseado em host consome recursos de processamento do host monitorado, influenciando na sua performance. Assim, enceramos o estudo deste módulo. Muito obrigado. Antes de dar início à sua Prova Online é fundamental que você acesse sua SALA DE AULA e faça a Atividade 3 no “link” ATIVIDADES. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 184 G LOSSÁRIO Caso haja dúvidas sobre algum termo ou sigla utilizada, consulte o link glossário em sua sala de aula, no site da ESAB. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 185 B IBLIOGRAFIA BERTALANFFY, L. V. Teoria geral dos sistemas. 3 ed. Petrópolis: Vozes, 1977. HIGA, W.; NETO , A. F.; FURLAN, J. D., Engenharia da Informação: Metodologia, Técnicas e Ferramentas. Editora Mc Graw Hill, p. 18-52, 1996. JENSEN, B. O Desafio da Simplicidade, HSM Management, p. 24-30, 1998. LAUDON, K. C., LAUDON, J.P. Sistemas de informação gerenciais. 5. ed. São Paulo: Person Brasil, 2003. LEMMANN, M., Palavras ao Vento, Revista Exame, p. 36-40, 2000. Mathias, Carlos Alberto. Disponível em: <http://www.inclusao.com.br/projeto_textos_29. htm>. Acesso em: 10/04/2008. MCLEOD JR., Raymond. Management information System: a study of computer-base information system. United States of America: Macmillian Publishing Company, 1993. NAKAGAWA, M. Introdução à controladoria: conceitos, sistemas e implementação. 2. ed. São Paulo: Atlas, 1993. OLIVEIRA, D. P. R. Sistemas de informações gerenciais: estratégias, táticas, operacionais. 2. ed. São Paulo: Atlas, 1993 POSNER, M. (Ed.). Foundations of Cognitive Science. MIT Press, 1989. REZENDE, Denis Alcides. Sistemas de informações organizacionais: Guia Prático para Projetos em Cursos de Administração, Contabilidade, Informática. 2. ed. São Paulo: Atlas, 2007. 112 p. _____; ABREU, Aline Franca. Tecnologia da informação Aplicada a Sistemas de Informação Empresariais. 5. ed. São Paulo: Atlas, 2008. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 186 STAIR, Ralph M. Princípios de Sistemas de Informação: uma abordagem gerencial. Rio de Janeiro: LTC, 1998. BARRETO, Jorge M. Introdução às Redes Neurais Artificiais. Anais V Escola Regional de Informática da SBC Regional Sul, 5 a 10 de maio, 1997. p. 41-71. CARVALHO FILHO, Edson Costa de Barros. Modelagem, Aplicações e Implementações de redes Neurais. Anais da IV Escola Regional de Informática da SBC Regional Sul, 21 a 27 de abril, 1996. p. 36-53. FREEMAN, James A.; SKAPURA, David M. Neural Networks: Algorithms, Applications and Programming Techniques. Loral Space Information Systems and Adjunct Faculty, School of Natural and Applied Sciences University of Houston at Clear Lake. GORNI, Antônio Augusto. Redes Neurais Artificiais: Uma Abordagem revolucionária em Inteligência Artificial. Revista Micro-Sistemas, edição 133, p. 14-25, edição 134, p. 14-17, Ano XII. GUPTA, Madan M.; RAO, Dandina H. Neuro-Control Systems: Um volume selecionado reeditado. IEEE Neural Networks Council, Sponsor. HAYKIN, S. Redes Neurais: Princípios e Prática. 2. ed. Bookman Companhia Editora, 2001. HECHT-NIELSEN, Robert. Neurocomputing. HNC, Inc. and University of California, San Diego. KOVÁCS, Zsolt L. Redes Neurais Artificiais. 2. ed., editora Collegium Cognitio, 1996. NISSEN, Mark. Intelligent Agents: A Technology and Business Application Analysis. Disponível em: http://haas.berkeley.edu/~heilmann/agents, 1995. RIVER, Charles. Intelligent Agents. Disponível em: http://www.opensesame.com/webpages/ corp/background.html, 1996. RUSSELL, S.; NOVIG, P. Inteligência Artificial, 1. ed., Elsevier Editora Ltda., 2004. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 187 YOSHIDA, Keila M. Redes Neurais e suas aplicações em Inteligência Artificial. Trabalho de graduação. 1996 Disponível em: http://arquivos.coinfo.cefetpb.edu.br/~candido/ed-apostila.pdf. CELES, Waldemar; CERQUEIRA, Renato; RANGEL, Jose Lucas. Estrutura de Dados. São Paulo: Campus. DROZDEK, Adam. Estrutura de dados e algorithmo C++, normal. São Paulo: Pioneira. ESAKOV, Jeffrey & WEISS, Tom. Data Strutures: An advanced Approach usibg C. GODRICH, Michael & TAMASSIA, Roberto. LAGES, G. Algoritmos e Estruturas de Dados. São Paulo: LTC, 1988. SILVA, Osmar Quirino da. Fundamentos e Aplicações. Ciência Moderna, 2007. 472 p. TENENBAUM, Aaron M., et alli. Estruturas de Dados usando C. CATELL, R. G. Objest Data Management. Addison-Wesley, 2. Ed., 1994. ELMASRI & NAVATHE. Fundamentals of Database Systems. Benjamin-Cummings. 3. ed., 2000. KIM, W. "Modern Database Systems" ACM Press, 1995. KOSHAFIAN, S. Object-oriented Database Systems. Morgan Kaufmann, 1993. TAKAI, O. K.; FERREIRA, J. E. Introdução a Banco de Dados. Disponível em: http://www.ime.usp.br/~jef/apostila.pdf. Acesso em: 30/04/2008. CARUSO, Carlos. Segurança em Informática e de Informações. 3. ed., SENAC, 2006. Disponível em: http://www.projetoderedes.com.br/apostilas/arquivos/segurancadedados. zip. Acesso em: 30/04/2008. Disponível em: http://www.malima.com.br/article_read.asp?id=18. Acesso em: 30/04/2008. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 188 Disponível em: http://www.projetoderedes.com.br/apostilas/arquivos/seguranca_de_ informacoes.zip. Acesso em: 30/04/2008. Copyright © 2007, ESAB – Escola Superior Aberta do Brasil 189