• Nenhum resultado encontrado

3.3 Agentes Móveis

3.3.3 Desvantagens dos Agentes Móveis

Conforme apresentado nas seções anteriores, os agentes móveis podem facilitar a pro- gramação de diferentes tipos de aplicações distribuídas. Entretanto, este paradigma também adiciona problemas e limitações que precisam ser consideradas quando aplicações baseadas em agentes móveis pretendem ser desenvolvidas. Algumas desvantagens da utilização de agentes móveis incluem a necessidade de serviços extras nas máquinas onde esses códigos irão se executar, assim como as preocupações com a segurança, com a robustez e com a interoperabilidade. O uso de agentes móveis requer que cada sítio cooperante forneça faci- lidades para executá-los. Além disso, os agentes móveis devem ser flexíveis o bastante para executarem suas tarefas sobre diferentes tipos de ambientes de execução, como por exemplo, PDAs, Handhelds e telefones celulares, de forma que a execução desses agentes não deve ser afetada por características particulares a estes ambientes.

A segurança é considerada a maior preocupação no projeto de sistemas baseados em agentes móveis. As plataformas de agentes são expostas a riscos de penetração do sistema

causados por agentes maliciosos (similar a vírus e cavalos de tróia). Agentes podem roubar ou destruir dados sensíveis e interromper o funcionamento normal dos sítios que hospedam as plataformas de agentes. Similarmente, os agentes móveis também precisam ser protegidos de plataformas maliciosas. Um agente pode carregar em seu estado informações sensíveis sobre o usuário que este representa, por exemplo, número do cartão de crédito, preferên- cias pessoais para uma busca inteligente, dinheiro eletrônico, etc. Estes dados não podem ser revelados a plataformas visitadas e a outros agentes, além disso não deve ser permitido modificá-los arbitrariamente. Diversas questões de segurança têm sido estudadas pela comu- nidade de sistemas distribuídos já há algum tempo, entretanto, os mecanismos e as tecnolo- gias desenvolvidas devem ser adaptados levando em conta a mobilidade de código (Vigna, 1998b). Há algumas preocupações de segurança que são específicas de sistemas baseados em agentes móveis, são elas: a proteção das plataformas contra os agentes maliciosos, a proteção dos agentes contra outros agentes e a proteção dos agentes contra as plataformas maliciosos. A problemática da segurança é tratada em detalhes nos próximos capítulos.

Quando os sistemas baseados em agentes móveis são maiores e mais complexos, o pro- blema do gerenciamento dos agentes se torna mais pronunciado. Nesses sistemas são ne- cessários mecanismos de nomeação e localização em larga escala. Os programadores de aplicações necessitam de primitivas confiáveis de controle de agentes para iniciar, parar e emitir comandos específicos para esses agentes. A própria plataforma de agentes deve in- corporar mecanismos robustos e tolerantes a falhas para permitir que as aplicações operem sobre redes não-confiáveis (Karnik, 1998).

Um grande número de plataformas de agentes móveis tem sido recentemente implemen- tadas comprovando o grande interesse pelo paradigma de agentes móveis. Porém, esta vari- edade põe em risco a interoperabilidade entre os sistemas de agentes móveis e o crescimento de aplicações de larga escala baseadas em agentes móveis. Interoperabilidade entre sistemas de diferentes fabricantes é um requisito fundamental para atender totalmente as necessida- des do mercado aberto de serviços que a Internet está se constituindo. A única forma de promover a interoperabilidade e a diversidade de sistemas é padronizando alguns aspectos da tecnologia de agentes móveis (OMG, 2000; Bellavista et al., 1999).

Atualmente, a entidade de padronização mais importante na área de agentes móveis é a OMG (Object Management Group) com a sua especificação MAF (Mobile Agent Facility) (OMG, 2000). A especificação MAF não trata da interoperabilidade de linguagens, mas sim da interoperabilidade entre sistemas de agentes escritos na mesma linguagem, porém de fabricantes diferentes. Este padrão abrange importantes aspectos da tecnologia de agen- tes móveis, tais como: gerenciamento de agentes, mobilidade, nomeação, localização, bem como abrange também os requisitos necessários para a segurança dos sistemas de agentes. Há algumas questões não abordadas pelo MAF, ou por estarem fora do seu escopo ou porque não estão amadurecidas o suficiente, como por exemplo, a comunicação entre os agentes e a autenticação de agentes móveis com múltiplos-saltos (multi-hop).

Outra organização, que busca a padronização de agentes para encontrar a interopera- bilidade em sistemas distribuídos, é a FIPA (Foundation for Intelligent Physical Agents). O trabalho da FIPA está focado principalmente na interoperablidade de agentes inteligen- tes através da padronização da linguagem de comunicação usada entre agentes cooperantes. Além do framework genérico de comunicação, a FIPA também especifica protocolos de ne- gociação e de ontologia para suportar interoperabilidade em áreas de aplicação específica, tais como: assistentes de viagens, entretenimento multimídia, manufatura e fornecedores de serviços de rede (Magedanz, 1999).

A semelhança dos esforços de padronização da OMG e da FIPA está na busca pela inte- roperabilidade dinâmica entre sistemas de software estáticos, como os sistemas de agentes móveis e os agentes inteligentes. Já a maior diferença entre agentes móveis, agentes inteli- gentes e as especificações da OMG e da FIPA é que um agente móvel geralmente usa uma linguagem de programação de baixo nível, enquanto um agente inteligente tem, tipicamente, uma linguagem de comunicação que incorpora um ato de fala e uma linguagem de conteúdo, baseada em lógica de predicados.

O valor da mobilidade precisa ser cuidadosamente analisado no desenvolvimento de apli- cações, pois esta característica é útil em algumas aplicações, mas não em todas. Muitas vezes, um sistema híbrido baseado em agentes móveis e estacionários provê um melhor desempenho e é mais seguro e robusto do que um sistema baseado totalmente em agentes móveis (Kotz et al., 2002).

3.4

Conclusões do Capítulo

Os paradigmas de sistemas distribuídos tradicionais são estáticos em relação à estrutura do código de seus componentes e do local onde estes são executados. O paradigma abordado neste capítulo tem por característica a mobilidade dos componentes do sistema. Um agente móvel é livre para viajar entre vários sítios em uma rede de computadores.

Este capítulo teve por objetivo esclarecer os conceitos que envolvem o paradigma de agentes móveis, tendo como base a terminologia de códigos móveis apresentada por Picco (1998) e o modelo conceitual comum de agentes móveis definido pela OMG na especificação MAF (OMG, 2000). As vantagens e desvantagens deste paradigma para o desenvolvimento de aplicações para ambientes abertos, distribuídos e heterogêneos, como a Internet, também foram apresentadas.

A mobilidade dos agentes em busca dos recursos necessários pode reduzir a comuni- cação na rede e assim reduzir os requisitos de largura de banda e latência (Tripathi et al., 2001). Agentes podem ser usados em sistemas distribuídos, por exemplo, para: busca, fil- tragem e coleta de informações; para tarefas de administração dos sistemas; e para comércio eletrônico.

Dentre as desvantagens apresentadas, a que mais tem prejudicado o desenvolvimento de aplicações baseadas em agentes móveis é a preocupação com a segurança. É esta desvanta- gem o objeto de estudo desta tese.

Capítulo 4

Segurança de Sistemas Baseados em

Agentes Móveis

4.1

Introdução

Inúmeros modelos existem para descrever sistemas de agentes (Fuggetta et al., 1998; FIPA, 2000; OMG, 2000), entretanto, para discutir questões de segurança é suficiente o uso de uma estrutura simplificada, consistindo de apenas dois componentes principais (Jansen e Karygiannis, 1999): o agente e a plataforma de agentes (ou sistema de agentes1).

Sistemas baseados em agentes móveis proporcionam um ambiente distribuído em que aplicações pertencentes a usuários distintos, e portanto, com níveis de confiabilidade distin- tos, podem ser executados concorrentemente. Além disso, as plataformas que abrigam os agentes podem estar localizadas em diferentes redes com políticas de segurança, vulnerabi- lidades e outras características diferentes (Picco, 1998).

Farmer et al. (1996a) utilizam o exemplo de agentes de viagem para extrair alguns princípios importantes que uma arquitetura de segurança para agentes móveis deve procurar cumprir. Neste exemplo, um agente móvel é programado por uma agência de viagens para visitar sítios que executam aplicações de companhias aéreas, de locadoras de automóveis ou de cadeias de hotéis, procurando por um plano de viagem que atenda os requisitos solicitados por um cliente.

O cliente dispara um agente para o servidor da Companhia Aérea 1 para que este pesquise na base de dados de vôos da companhia. Com os resultados armazenados em seu ambiente, o agente então migra para o servidor da Companhia Aérea 2 para também pesquisar em sua base de dados de vôos. A partir dos sítios das companhias, o agente pode visitar sítios de hotéis onde este poderá ter direito a um desconto especial, por viajar na companhia aérea

conveniada com o correspondente hotel. O agente compara os vôos e as informações de tarifa, decide sobre o plano de viagem (com base nos requisitos definidos pelo cliente), migra para os sítios da companhia aérea e do hotel escolhidos e faz suas reservas.

O cliente acredita que as informações de tarifas concedidas pelas companhias aéreas e hotéis sejam verdadeiras, já que estas desejam conquistar o cliente e fechar negócios. Entre- tanto, a relação entre as companhias aéreas é competitiva. Essa relação ilustra um princípio crucial: “em muitas aplicações de agentes móveis não se deve esperar que todos os par- ticipantes confiem uns nos outros”(Farmer et al., 1996a). Há inúmeros ataques que estes podem praticar. Por exemplo, o servidor da segunda companhia aérea visitada pode corrom- per a informação de vôo da primeira companhia (aumentando a tarifa), já que esta encontra- se armazenada no ambiente do agente. Ou este pode analisar e manipular as instruções do processo de decisão do plano de viagem em seu benefício. Diante desta possibilidade tem- se que: “decisões cruciais de um agente devem ser tomadas em plataformas neutras, considerados confiáveis pelo emissor” (Farmer et al., 1996a).

Ainda neste cenário, outro ataque possível seria a primeira companhia aérea aumentar o número de reservas (de 2 para 100) a serem requeridas, visando enganar a segunda plata- forma quando esta oferece o melhor preço. O agente irá então reservar 100 lugares da tarifa barata da segunda empresa. Com isso, usuários legítimos terão que comprar seus bilhetes na primeira companhia, já que a segunda companhia acredita que o seu vôo está lotado. Anali- sando este ataque, observa-se que: “um agente móvel pode se tornar malicioso em virtude do seu estado estar corrompido” (Farmer et al., 1996a)

Analisando o exemplo dos Agentes de Viagem, pode-se concluir que a preocupação cen- tral dos sistemas que suportam agentes móveis é como estabelecer a confiança e como limitar os riscos para os sítios que hospedam as plataformas de agentes e para os agentes móveis.

O objetivo deste capítulo é analisar a problemática da segurança, considerando as ame- aças de segurança que este paradigma introduz ao sistema, e apresentar uma visão geral do esquema de segurança proposto nesta tese que visa contornar a maioria dessas ameaças. Nos próximos dois capítulos, o esquema de segurança proposto será detalhado e comparado com os trabalhos relacionados apresentados na literatura.