• Nenhum resultado encontrado

2.4.2. Sistemas de detecção de intrusão

2.4.2.3. Vantagens de um SDI distribuído

Segundo [4], um SDI distribuído pode apresentar algumas vantagens que atendem às características desejáveis apontadas na seção anterior.

Primeiramente, em relação à tolerância a falhas e a degradação gradual de serviços, a natureza distribuída do sistema permite que parte dos seus módulos continue operando na decorrência de falhas por causas intencionais ou acidentais. Em contrapartida, um SDI monolítico possui um único ponto de operação, sendo que, ao haver falha nesse ponto, o sistema fica completamente comprometido.

Os SDIs distribuídos também são mais propícios à reconstrução dinâmica e adaptabilidade, pois pode haver a atualização ou adição individual de novos módulos mais especializados, sem a reinicialização do sistema como um todo.

3 - AGENTES DE SOFTWARE

Cada vez mais, o aumento da conectividade vem possibilitando o acesso a grandes volumes de informações eletrônicas que muitas vezes se encontram fisicamente distribuídas. Tirando proveito disso, as corporações estão ampliando seus negócios e fazendo grandes investimentos para aproximarem clientes, filiais, fornecedores e parceiros por meio das vias digitais.

Nesse cenário, é necessária a melhoria dos mecanismos de tratamento da informação para que as aplicações respondam satisfatoriamente. Sendo assim, os meios convencionais podem se tornar impróprios, promovendo a utilização de novas propostas como o processamento em paralelo e distribuído. Além disso, a complexidade para processar essas informações distribuídas exige que os processos tenham certa autonomia, mobilidade e inteligência, pois se torna inviável a operação desses sistemas apenas pela intervenção humana.

A tecnologia de agentes de software tem apoiado fortemente nesse intuito, oferecendo um novo paradigma para a solução de problemas complexos por meio de uma abordagem bastante flexível e apoiada no processamento distribuído. Além disso, o uso de agentes de software oferece vantagens em várias aplicações que necessitam de alta performance, alta disponibilidade, tolerância a falhas, adaptabilidade e escalabilidade, que é o caso dos sistemas de detecção de intrusão.

3.1 - DEFINIÇÕES

Existem várias propostas para a definição do que é um agente de software, porém não há um consenso geral devido à existência de diversos pontos de vistas dos mais variados campos da computação. Uma definição encontrada em [39] foi:

“[...] é uma entidade de software que funciona de maneira contínua e autônoma em determinado ambiente [...] possui a habilidade de conduzir as atividades de forma flexível, inteligente e sensível às mudanças nesse ambiente [...] em condições favoráveis, estaria capacitado a aprender a partir de suas experiências anteriores [...] é esperado que, ao habitar em um ambiente juntamente com outros agentes e processos, seja capaz de se comunicar com eles, e, talvez, de se deslocar de um local a outro para fazer isso [...]”.

A FIPA (Foundation for Intelligent Physical Agents) já faz uma definição mais

voltada para a implementação física do agente: “uma entidade que reside em um ambiente aonde interpreta dados por meio de sensores que refletem eventos do ambiente e executam ações que produzem efeitos no ambiente. Um agente pode ser software ou hardware puro [...]” [43].

De forma simples, um agente de software pode ser entendido como um programa autônomo que realiza tarefas continuamente e possui habilidades especiais que os diferenciam de programas comuns, por isso, é mais fácil compreender o conceito de agente de software em termos de dessas habilidades. Em uma abordagem de Inteligência Artificial, um agente ideal ainda seria capaz de adquirir o conhecimento necessário sobre seu ambiente para tomar decisões em determinadas situações.

A Tabela 3.1 resume as principais habilidades encontradas nos agentes de software segundo [40].

Tabela 3.1 - Principais habilidades dos agentes de software

Habilidade Descrição

Autonomia Controla suas próprias ações, podendo tomar decisões sem a intervenção contínua do

usuário representado.

Reatividade Reage adequadamente a ações externas no ambiente.

Pró-atividade Toma iniciativa para realizar ações que levem ao cumprimento de seus objetivos.

Continuidade Executa suas ações ininterruptamente.

Sociabilidade Comunica-se com outros indivíduos (agentes, aplicações e humanos) por meio de uma

linguagem de comunicação que o permite atuar colaborativamente ou competitivamente.

Inteligência Muda seu comportamento com base na experiência anterior. Característica também

referenciada como adaptabilidade ou aprendizagem.

Mobilidade Move-se de um ponto ao outro desde que estejam conectados por uma infra-estrutura

física de comunicação.

Vale ressaltar que não é necessária a presença de todas essas propriedades em um único agente e que alguns autores consideram a autonomia, reatividade, pró-atividade e continuidade as características mais significativas nos agentes autônomos [39].

3.2 - TIPOLOGIAS DOS AGENTES

Essa seção visa apresentar uma visão geral das principais tipologias dos agentes e descrever as características que são mais acentuadas em cada uma. Boa parte das propostas de classificação apresentadas aqui foi baseada nos trabalhos propostos em [40], [33] e [42].

A Tabela 3.2 lista de forma arbitrária os diversos tipos de agentes de software, sem se preocupar com os diversos aspectos e dimensões possíveis. Essa lista pretende apenas dar uma visão geral das terminologias encontradas, pois muitos dos termos encontrados são redundantes ou sobrescrevem duas ou mais classes de agentes.

Tabela 3.2 - Tipologias dos agentes de software Tipologia Descrição

Agentes Inteligentes Possuem um modelo interno simbólico de raciocínio que os permitem interagir,

negociar e planejar ações com outros agentes para alcançarem um determinado objetivo. Nessa tipologia são evidenciadas as características de autonomia, aprendizagem e cooperação. São denominados também como agentes cognitivos ou deliberativos.

Agentes Colaborativos

Têm, em evidência, a habilidade de cooperação com outros agentes para executarem objetivos comuns. São denominados também como agentes cooperativos.

Agentes Competitivos Ao invés de atuarem em conjunto com outros agentes por meio da colaboração, agem segundo suas próprias vontades, interagindo com outros agentes apenas por interesse em serviços concorrentes.

Agentes de Informação

Possuem o objetivo principal de localizar, manipular e ordenar as informações provenientes de várias fontes distribuídas de forma autônoma, tornando-as acessíveis para outros sistemas ou usuários.

Agentes de Interface Atuam como interfaces intermediárias mais simples e robustas para os usuários

que operam os sistemas. Trabalham por meio da delegação das ações dos usuários. Agentes

Estacionários

Não possuem qualquer habilidade de movimentação pela rede. Outras denominações encontradas foram: agentes estáticos ou situados.

Agentes Híbridos Possuem mais de uma classificação possível. Baseiam-se na hipótese de que

podem ser alcançados maiores benefícios com a utilização integrada das várias habilidades existentes.

Agentes Móveis Podem se movimentar através da rede, interagindo com máquinas e usuários,

coletando informações e retornando após alcançarem seus objetivos.

Agentes Reativos Não possuem uma forma de representação simbólica interna de raciocínio e agem

através de estímulos e respostas de acordo com o estado do seu ambiente.

Agentes Autônomos São capacitados para tomar decisões e ações importantes para a conclusão de um

objetivo sem a necessidade de intervenção humana. Podem agir independentemente em seu ambiente segundo suas próprias percepções.

Nesse trabalho será dado enfoque aos agentes autônomos e móveis por serem uma combinação indicada para os sistemas de detecção de intrusão visto que são necessários processos de monitoração e visitação contínua nos diversos servidores da rede. A forma de organização desses agentes em grupos também os caracterizará como agentes colaborativos.

3.3 - TÉCNICAS DE RESOLUÇÃO DISTRIBUÍDA DE PROBLEMAS

Atualmente, pode ser observado o amadurecimento de um novo campo dentro da Inteligência Artificial, a Inteligência Artificial Distribuída (IAD), que visa pesquisar e propor novos métodos para a resolução de problemas que têm como base as informações distribuídas. Nesse cenário, [38] afirma que a IAD assume uma metáfora baseada no

comportamento social, onde um grupo distribuído de entidades procura uma solução

colaborativa de problemas globais, ao contrário da Inteligência Artificial clássica que é baseada no comportamento individual humano.

Ainda em [38], é proposta uma divisão da Inteligência Artificial Distribuída em três abordagens, onde, em qualquer um dos casos, é utilizada a designação de agente para as

entidades que participam nas atividades de solução dos problemas:

• Resolução Distribuída de Problemas (Distributed Problem Solving - DPS): faz a decomposição de um problema complexo em módulos menores por meio de uma abordagem top-down orientada a um único objetivo específico, onde a

maior parte da solução é inserida pelo próprio projetista;

• Sistemas Multiagentes (Multi-Agent Systems - MAS): se caracterizam pela existência de diversos agentes que interagem e colaboram entre si de forma autônoma para resolverem determinados problemas;

• Inteligência Artificial Paralela (Parallel Artificial Inteligence - PAI): se interessa mais pela performance na solução de problemas por meio da aplicação

O objetivo dessa seção é mostrar as duas abordagens que mais se enquadram nos projetos de sistemas de detecção de intrusão baseados em agentes de software: a resolução distribuída de problemas (DPS) e os sistemas multiagentes (MAS). Originalmente, a proposta do framework possui uma abordagem aproximada com o MAS, principalmente

devido as ações colaborativas e autônomas dos agentes que não visam necessariamente o processamento em paralelo, porém essa arquitetura também se aproxima de um DPS nas fases de designação dos grupos de agentes especializados. À medida que mais elementos de coordenação e elementos com maior flexibilidade forem sendo inseridos no sistema, haverá maior semelhança com a arquitetura dos sistemas multiagentes.