Segurança em Sistemas de Agentes Móveis: Aplicação no Middleware M&M



Documentos relacionados
Modelo Cascata ou Clássico

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II

Entendendo como funciona o NAT

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

Grupo de trabalho sobre a protecção das pessoas singulares no que diz respeito ao tratamento de dados pessoais. Recomendação 1/99

Sistemas Distribuídos

Serviço a Pedido ( On Demand ) da CA - Termos e Política de Manutenção Em vigor a partir de 1 de Setembro de 2010

Utilização da rede e- U/eduroam por utilizadores Convidados. Serviço Utilizador RCTS Fevereiro de 2010

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Engenharia de Software Sistemas Distribuídos

5 Mecanismo de seleção de componentes

Suporte Técnico de Software HP

Virtualização e Consolidação de Centro de Dados O Caso da UTAD António Costa - acosta@utad.pt

SISTEMAS DISTRIBUIDOS

Introdução ao Modelos de Duas Camadas Cliente Servidor

A falha em alguns destes pontos pode resultar num excessivo e desnecessário investimento/despesa

1

O Manual do Desktop Sharing. Brad Hards Tradução: Pedro Morais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Engenharia de Software Sistemas Distribuídos

Licenciatura em Engenharia Informática Sistemas Distribuídos I 2ª chamada, 6 de Julho de º Semestre, 2004/2005

Servidores Virtuais. Um servidor à medida da sua empresa, sem investimento nem custos de manutenção.

UNIVERSIDADE FEDERAL DE PELOTAS

Política WHOIS do Nome de Domínio.eu

PHC Serviços CS. A gestão de processos de prestação de serviços

Requisitos de controlo de fornecedor externo

OFICIAL DA ORDEM MILITAR DE CRISTO MEDALHA DE EDUCAÇÃO FÍSICA E BONS SERVIÇOS. Circular n.º 029/2014 PORTAL FPT Abertura aos atletas

Escola Superior de Tecnologia de Setúbal. Projecto Final

Mobile Business. Your sales on the move.

Comunicação de Dados de Autenticação e Credenciais de Acesso para Resposta ao Inquérito

Como elaborar um Plano de Negócios de Sucesso

Escola Secundária Eça de Queiroz

Mestrado em Segurança da Informação e Direito no Ciberespaço. Segurança da informação nas organizações Modelos de analise

Universidade do Minho Licenciatura em Engenharia Informática

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Enunciados dos Trabalhos de Laboratório. Instituto Superior Técnico / Introdução. 2 Configuração de Redes

O Manual do ssc. Peter H. Grasch

Programa de Parcerias e Submissão de Propostas 2014/15

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

TIC Unidade 2 Base de Dados. Informação é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado.

Orientação a Objetos

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO

Solução de Dashboard. Monitorização e Alarmistica IT (Networking e Sistemas) ALL IN ONE SOLUTION SCALABILITY TECHNICAL SUPPORT

Portal AEPQ Manual do utilizador

O aumento da força de vendas da empresa

ISO 9000:2000 Sistemas de Gestão da Qualidade Fundamentos e Vocabulário. As Normas da família ISO As Normas da família ISO 9000

Grupo I [6,6v] Responda com os valores que se observam depois da chamada acontecer. 1 Falta na mensagem de resposta. Valor retornado na chamada

Mestrado em Segurança da Informação e Direito no Ciberespaço. Segurança da informação nas organizações Gestão da Segurança da Informação

Resolução da lista de exercícios de casos de uso

5. Métodos ágeis de desenvolvimento de software

Arquitetura dos Sistemas de Informação Distribuídos

Redes de Computadores

PHC dcontroldoc. O acesso a diversos tipos de ficheiros

MANUAL DE BOAS PRÁTICAS PARA CARTÕES BANCÁRIOS

Sistema inteligente de gestão de chaves e objectos de valor

Segurança Internet. Fernando Albuquerque. (061)

Redes de Comunicações Capítulo 6.1

Hardware & Software. SOS Digital: Tópico 2

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

Guia Rápido de Vodafone Conferencing

Firewall. Alunos: Hélio Cândido Andersson Sales

Manual do Gestor da Informação do Sistema

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Análise de Sistemas. Visão Geral: Orientação a Objetos. Prof. José Honorato Ferreira Nunes honorato.nunes@bonfim.ifbaiano.edu.br

CRM. Serviços. Bilhetica. Aplicações. Cartão do Cidadão

Segurança e Higiene no Trabalho

Aula 03-04: Modelos de Sistemas Distribuídos

3 SCS: Sistema de Componentes de Software

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento

Relatório de Progresso

Serviços de Comunicações RELATÓRIO LABORATORIAL IMPLEMENTAÇÃO DE SOLUÇÃO IP PBX

DESENVOLVIMENTO DE SISTEMAS SOFTWARE FASE 1 GRUPO 10. Vítor Martins Rui Fonseca David Barbosa Ricardo Boas 47023

Algumas Leis da Segurança

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

O aumento da força de vendas da empresa

Gestão do Risco e da Qualidade no Desenvolvimento de Software

Transcrição:

Departamento de Engenharia Informática Faculdade de Ciências e Tecnologia Universidade de Coimbra Pólo II - 3030 Coimbra Segurança em Sistemas de Agentes Móveis: Aplicação no Middleware M&M Dissertação para Obtenção do Grau de Mestre em Engenharia Informática Nuno Filipe de Sousa Santos Maio 2003

Dissertação submetida à Universidade de Coimbra Para Obtenção do Grau de Mestre em Engenharia Informática Segurança em Sistemas de Agentes Móveis: Aplicação no Middleware M&M Nuno Filipe de Sousa Santos Orientador: Doutor Luís Moura e Silva, Universidade de Coimbra Maio 2003 ISBN: 972-97548-9-6

O trabalho desenvolvido nesta tese de mestrado foi parcialmente suportado por: Fundação para a Ciência e Tecnologia - FCT, no âmbito do projecto M&M (POSI/33596/CHS1999). Bolsa de Apoio à Disertação de Mestrado (SFRH/BM/6787/2001) concedida pela FCT e pelo FSE no âmbito do III Quadro Comunitário de apoio. Unidade de investigação CISUC (Unidade R&D 326/97).

Agradecimentos São várias as pessoas sem as quais esta tese não teria sido possível ou então teria sido mais difícil de realizar. Em primeiro lugar, queria agradecer ao meu orientador, o Professor Luís Silva, pelo convite inicial para fazer o mestrado e por todo o apoio que me forneceu durante estes últimos três anos. Quero também agradecer pelas oportunidades profissionais com que me pôs em contacto, que mesmo nem sempre estando relacionadas directamente com o mestrado, contribuíram para o meu enriquecimento científico e pessoal. Ao Paulo Marques, por ter acreditado nas minhas capacidades quando eu era seu aluno e me ter oferecido a oportunidade de trabalhar no projecto M&M. Esse convite foi a génese de todo o trabalho que realizei nos últimos três anos. Para além disso tenho muitos mais motivos para lhe agradecer: pelo apoio constante que deu ao meu trabalho as suas sugestões e criticas foram essenciais; por tudo o que me ensinou não só relacionado com o trabalho mas também relacionado com tantos outros temas; pelos desafios que lança de vez em quando, autênticos vírus a consumir tempo de trabalho precioso; pelos patins; e, finalmente, pelo amigo em que se tornou. Quero também agradecer a todos os que trabalharam no laboratório durante estes anos e que me fizeram companhia nas longas horas de trabalho e, por vezes, também fora delas: o Pedro, o Ricardo, o Raul, o Paulo Santos e o Bruno Cabral. Em especial, queria agradecer ao Paulo Sacramento pelo seu talento inato para encontrar gralhas. Sem ele, esta tese teria muitos mais erros. Finalmente, queria agradecer aos meus pais, que tornaram possível a minha educação. Sem eles não teria chegado aonde cheguei.

Resumo Os agentes móveis são um paradigma de computação distribuída ainda em evolução. Um agente móvel é um programa autónomo, capaz de migrar entre os nós de uma aplicação distribuída. Durante a sua execução, o agente pode comunicar com o seu ambiente de execução e com outros agentes. Ao migrar transporta o seu estado interno e o seu código, pelo que não há necessidade de ser pré-instalado no nó de destino. Este paradigma tem suscitado bastante interesse na comunidade científica. Na altura da escrita desta tese existiam cerca de uma centena de sistemas de agentes móveis criados tanto pela comunidade académica como pela indústria [Fri03]. Na bibliografia existente sobre o paradigma são indicadas várias áreas de aplicação. Os principais exemplos são suporte para dispositivos móveis e computação desligada, recolha e análise distribuída de informação e instalação dinâmica de software. Apesar de todo este interesse, na prática têm sido poucos os casos de utilização deste paradigma. Existem várias possíveis justificações para isso. Primeiro, a opinião geral na comunidade dedicada ao estudo dos agentes móveis é que não há nada que se possa fazer com agentes móveis que também não se possa fazer com os paradigmas tradicionais, muitas vezes de uma forma mais eficiente. O argumento forte dos agentes móveis é o facto de serem um modelo mais adequado a alguns tipos de aplicações, o que pode simplificar o desenvolvimento. No entanto, não existem ferramentas e técnicas suficientemente maduras para desenvolver e utilizar aplicações com agentes móveis. Os sistemas de agentes móveis tradicionais assumem geralmente a forma de uma plataforma monolítica, obrigando a aplicação a ser desenvolvida em torno dela. Nestas condições, as vantagens oferecidas pelos agentes móveis são anuladas pela dificuldade de desenvolvimento. Uma segunda razão prende-se com a segurança em sistemas de agentes móveis. Por um lado é necessário proteger o ambiente de execução dos agentes móveis. Por outro lado, é necessário proteger os agentes móveis do ambiente de execução. No primeiro caso podem ser usadas técnicas de segurança tradicionais. No segundo caso o problema é muito mais difícil, não existindo ainda soluções adequadas. Sem um modelo de segurança adequado, os agentes

X Resumo móveis têm sido encarados como uma tecnologia insegura, o que dificulta a sua adopção. O grupo de investigação onde esta tese foi realizada desenvolveu uma infraestrutura (chamada M&M) com o objectivo de simplificar o desenvolvimento e utilização de agentes móveis. A infra-estrutura tem uma arquitectura modular e baseada em componentes. Existe um componente central, com a funcionalidade mínima para suportar a mobilidade e execução de componentes de software (agentes). É fornecida funcionalidade extra sobre a forma de componentes e de serviços para permitir a extensibilidade do sistema. Os serviços destinamse a ser usados pelos agentes ou pela aplicação, sendo possível acrescentá-los e remove-los do sistema depois do tempo de compilação. Esta infra-estrutura permite que a aplicação seja desenvolvida usando técnicas tradicionais, como programação orientada a objectos e baseada em componentes, sendo o suporte para agentes móveis acrescentado sobre a forma de mais alguns componentes. Deixa de existir uma plataforma, os agentes fazem parte da aplicação. Esta vantagem simplifica o desenvolvimento e gestão da aplicação. O trabalho desta tese consistiu em definir e implementar um modelo de segurança para a infra-estrutura M&M. Um primeiro requisito é que a funcionalidade de segurança se deve integrar com a arquitectura da infra-estrutura, isto é, deve ser implementada de uma forma modular, permitindo uma fácil utilização por parte da aplicação. Quanto a medidas de segurança foram implementadas várias técnicas adequadas para proteger os ambientes de execução contra os agentes e os agentes uns dos outros. Entre elas encontram-se as seguintes técnicas: Autenticação e autorização de agentes com base no programador e no utilizador. Protecção do acesso à API da infra-estrutura. Protecção de migrações de agentes através do uso de SSL. Protecção limitada do estado do agente, através de encriptação e assinaturas digitais. Autorização de nós, limitando quais os nós remotos com os quais se podem trocar agentes. Criação de registos de auditoria, para registar as acções dos agentes e as operações mais sensíveis realizadas na infra-estrutura. Autenticação e autorização de acessos às interfaces de gestão remotas (acessíveis por RMI). Para isto foi desenvolvida uma infra-estrutura para

XI proxies inteligentes e interceptores em RMI, que pode ser usada em casos mais gerais. A parte final do trabalho realizado nesta tese consistiu em extender o modelo de serviços suportado pela infra-estrutura, implementando suporte para reconfiguração dinâmica. O modelo inicial exige que a aplicação seja terminada para acrescentar, remover ou actualizar os serviços. No modelo desenvolvido nesta tese, é possível realizar essas operações em tempo de execução, facilitando a instalação de funcionalidade na infra-estrutura e minimizando o tempo de indisponibilidade da aplicação. Para além disso, são suportadas medidas de segurança para proteger o ambiente de execução contra o código do serviço, que poderá ser malicioso.

Conteúdo Agradecimentos Resumo VII IX 1 Introdução 1 1.1 Âmbito................................ 1 1.2 O Paradigma dos Agentes Móveis................. 1 1.2.1 Perspectiva Histórica.................... 2 1.2.2 Vantagens.......................... 4 1.2.3 Aplicações.......................... 5 1.2.4 Limitações.......................... 7 1.3 Contribuição da Tese........................ 7 1.4 Resultados Obtidos Neste Trabalho................ 8 1.5 Estrutura da Tese.......................... 9 2 Segurança em Agentes Móveis 11 2.1 Modelo de Segurança em Sistemas de Agentes Móveis...... 11 2.1.1 O Modelo Fortaleza de Informação............ 12 2.1.2 Limitações do Modelo Fortaleza de Informação em Agentes Móveis.......................... 13 2.1.3 Agentes Móveis....................... 14 2.1.3.1 Ataques do Agente à Plataforma........ 15 2.1.3.2 Ataques entre Agentes.............. 16 2.1.3.3 Ataques da Plataforma ao Agente........ 16 2.1.3.4 Ataques Externos ao Sistema.......... 17 2.2 Medidas Defensivas......................... 18 2.2.1 Protecção da Plataforma de Agentes........... 18 2.2.2 Protecção dos Agentes................... 22 2.2.3 Ambientes Abertos versus Ambientes Fechados..... 27 2.3 Segurança nos Principais Sistemas de Agentes Móveis...... 28 2.3.1 Telescript.......................... 28

XIV CONTEÚDO 2.3.2 D Agents.......................... 29 2.3.3 Aglets............................ 30 2.3.4 Ajanta............................ 31 2.3.5 JavaSeal.......................... 32 2.3.6 Jumping Beans....................... 33 2.3.7 Secure and Open Mobile Agent (SOMA)......... 34 2.3.8 Secure Mobile Agentes (SeMoA).............. 35 2.3.9 Outros sistemas....................... 35 2.4 Sumário do Capítulo........................ 36 3 Segurança em Java 37 3.1 Segurança em Java......................... 37 3.1.1 Segurança na Linguagem e no Ambiente de Execução.. 38 3.1.2 Controlo de Acesso..................... 39 3.2 Aplicação a Sistemas de Agentes Móveis............. 42 3.2.1 Vantagens.......................... 42 3.2.2 Desvantagens........................ 43 3.3 Sumário do Capítulo........................ 46 4 Descrição do Middleware M&M 47 4.1 Objectivos do Sistema M&M................... 47 4.1.1 Limitações dos Sistemas Baseados em Plataformas.... 48 4.1.2 Abordagem M&M..................... 49 4.2 Estrutura.............................. 50 4.2.1 Suporte para Execução e Mobilidade........... 51 4.2.2 Extensibilidade por Serviços................ 52 4.3 Sumário do Capítulo........................ 54 5 Modelo de Segurança do M&M 57 5.1 Ambiente Alvo Para o Sistema M&M.............. 57 5.2 Objectivos e Requisitos...................... 59 5.2.1 Modelo de Ataques..................... 59 5.2.2 Requisitos Técnicos..................... 60 5.3 Estrutura Geral.......................... 61 5.4 Sumário do Capítulo........................ 64 6 Segurança do Ambiente de Execução 65 6.1 O Componente de Segurança.................... 65 6.2 Protecção do Ambiente de Execução............... 66 6.2.1 Controlo de Acesso..................... 66 6.2.2 Registos de Auditoria.................... 67

CONTEÚDO XV 6.3 Segurança no Ciclo de Vida do Agente.............. 68 6.3.1 Entidades Associadas.................... 68 6.3.2 Criação de Agentes..................... 69 6.3.3 Transferência de agentes.................. 70 6.3.4 Execução de agentes.................... 72 6.4 Limitações.............................. 73 6.5 Sumário do Capítulo........................ 74 7 Protecção dos Agentes 77 7.1 Serviço de Criptografia para Agentes............... 77 7.2 Resumo do Capítulo........................ 80 8 Protecção das Interfaces Remotas 81 8.1 As Interfaces Remotas - Desafios de Segurança.......... 81 8.2 Proxies e Interceptores em Java RMI............... 83 8.2.1 Definição, Aplicações e Vantagens............. 83 8.2.2 Descrição do Modelo.................... 85 8.2.3 Outros Detalhes....................... 89 8.3 Autenticação e Autorização de Acessos.............. 92 8.3.1 Descrição do Modelo.................... 92 8.3.2 Segurança do Mecanismo.................. 95 8.4 Desempenho............................. 97 8.5 Resumo do Capítulo........................ 100 9 Serviços Dinâmicos e Segurança 101 9.1 Reconfiguração Dinâmica de Serviços............... 101 9.2 Descrição do Modelo........................ 103 9.2.1 Requisitos.......................... 103 9.2.2 Suporte do Java para Reconfiguração Dinâmica..... 104 9.2.3 Implementação....................... 104 9.2.4 Restrições ao Serviço e aos seus Clientes......... 112 9.3 Gestão dos Serviços......................... 113 9.3.1 Ciclo de Vida de um Serviço................ 113 9.3.2 Segurança.......................... 113 9.3.3 Configuração de Serviços.................. 116 9.3.4 Interfaces de Configuração................. 116 9.4 Resumo do Capítulo........................ 117 10 Conclusão 119 10.1 Modelo de Segurança do Sistema M&M.............. 120 10.2 Proxies e Interceptors em RMI.................. 122

XVI CONTEÚDO 10.3 Instalação Dinâmica de Serviços.................. 123 10.4 Comparação com Outros Sistemas de Agentes Móveis...... 124 Lista de Publicações 127

Lista de Tabelas 4.1 Alguns serviços disponíveis no sistema M&M........... 55 8.1 Tempos para vários tipos de invocações remotas.......... 98 10.1 Comparativo de alguns sistemas de agentes móveis com o sistema M&M.............................. 125

Lista de Figuras 1.1 Diferentes paradigmas de computação distribuída........ 2 2.1 Controlador de acessos....................... 13 2.2 Modelo de ataques a agentes móveis................ 15 3.1 Modelo de segurança no JDK 1.0.x................ 39 3.2 Modelo de segurança no JDK 1.1.x................ 40 3.3 Modelo de segurança no JDK 1.2.x................ 41 3.4 Como capturar a excepção ThreadDeath............. 44 4.1 Sistemas de Agentes Móveis centrados em plataformas..... 48 4.2 Sistemas de Agentes Móveis centrados em aplicações...... 50 4.3 Estrutura do componente Mobility................ 51 4.4 Eventos gerados por um agente................... 52 4.5 Utilização de um serviço...................... 53 4.6 Estrutura de um serviço...................... 54 4.7 Eventos de suporte a serviços.................... 54 5.1 Módulos de segurança do sistema M&M............. 62 6.1 Eventos gerados pelo componente de segurança.......... 67 6.2 Segurança na migração de um agente............... 71 7.1 Serviço de Segurança para Agentes................. 78 8.1 Um proxy inteligente numa invocação remota........... 83 8.2 Interceptores numa invocação remota................ 83 8.3 Proxies dinâmicos em Java..................... 87 8.4 Uma invocação em RMI convencional............... 87 8.5 RMI com proxies inteligentes e interceptores............ 88 8.6 Diferentes tipos de autenticação para invocações RMI....... 93 8.7 Processo de autenticação...................... 94 8.8 Uma invocação remota segura.................... 94

XX LISTA DE FIGURAS 8.9 O protocolo de autenticação de clientes remotos.......... 94 8.10 Tempos para vários tipos de invocações remotas.......... 98 9.1 Leitura de classes com serviços estáticos.............. 106 9.2 Leitura de classes com serviços dinâmicos............. 106 9.3 Eventos de gestão de serviços.................... 113

Capítulo 1 Introdução Neste capítulo é descrito o contexto e os objectivos desta tese. O conceito de agente móvel é apresentado na Secção 1.2, juntamente com uma breve discussão das potenciais vantagens, aplicações e das questões de segurança inerentes a este paradigma. A Secção 1.3 enumera as principais contribuições desta tese. A Secção 1.4 apresenta os principais resultados obtidos e a Secção 1.5 descreve a estrutura da tese. 1.1 Âmbito Esta tese de mestrado, Segurança no Sistema de Agentes Móveis M&M, foi realizada no âmbito do Mestrado em Engenharia Informática da Faculdade de Ciências e Tecnologia da Universidade de Coimbra entre Setembro de 2001 e Dezembro de 2002. A investigação na origem desta tese foi realizada no Grupo de Sistemas Confiáveis da Universidade de Coimbra, no âmbito do projecto M&M. Os objectivos deste projecto eram a implementação de um sistema de agentes móveis baseado em componentes. O trabalho deste tese consistiu na definição e implementação do suporte para segurança desse sistema. 1.2 O Paradigma dos Agentes Móveis Um agente móvel engloba dois conceitos: o de agente de software e o de mobilidade. Um agente de software pode ser definido, num sentido lato, como um programa que age de uma forma autónoma em nome de um utilizador. O utilizador define os objectivos do agente e este tenta alcançá-los activamente. Outra propriedade importante é que um agente de software existe num determinado

2 Introdução ambiente de execução, com o qual interage, actuando sobre ele e reagindo a alterações no ambiente. Um agente móvel é um agente capaz de migrar entre vários nós do sistema distribuído onde está a executar durante a sua vida. Pode migrar uma ou várias vezes, pode ter um itinerário fixo ou dinâmico, pode voltar ao nó inicial no final da sua vida ou acabar a sua execução noutro nó. Tudo isso depende dos objectivos do agente e da estratégia seguida para os atingir. A principal vantagem da mobilidade é permitir ao agente aproximar-se dos recursos de que necessita, caso eles não estejam disponíveis localmente. Isto permite interagir localmente com os recursos, em vez de ter de usar invocações remotas através da rede. 1.2.1 Perspectiva Histórica Os agentes móveis são um paradigma relativamente recente para construir aplicações distribuídas. Para melhor o entender, convém ter em consideração os paradigmas que o precederam. (a) Cliente-Servidor. (b) Execução Remota (c) Código a Pedido. (d) Agentes Móveis Figura 1.1: Diferentes paradigmas de computação distribuída Cliente-Servidor: Neste paradigma, o servidor possui os recursos e o código para os processar, sendo também responsável por fornecer o

1.2 O Paradigma dos Agentes Móveis 3 processamento (Figura 1.1(a)). Os clientes utilizam invocação remota (RPC) [TA90] para aceder ao servidor. O cliente envia pedidos ao servidor, o servidor executa-os localmente e envia as respostas ao cliente. Este é o paradigma mais antigo e mais divulgado, sendo suportado directamente por tecnologias como o SunRPC [Sun98], Java RMI [Suna] e o CORBA [Obj01]. Execução Remota 1 : Neste paradigma, proposto inicialmente por [SG90], o servidor possui os recursos e fornece o processamento, mas o código é fornecido pelo cliente (Figura 1.1(b)). O cliente, em vez de executar uma invocação remota, envia o código a ser executado ao servidor, que o executa e devolve os resultados. Este paradigma oferece uma maior flexibilidade por permitir que o código seja facilmente actualizado. Um exemplo deste paradigma são as Stored Procedures numa base de dados. Código a pedido 2 : Este paradigma é algo semelhante ao de execução remota, com a diferença de que parte do código a executar no cliente reside no servidor (Figura 1.1(c)). Quando o cliente inicia a aplicação, o servidor envia o código para a execução. Nesta situação, o servidor funciona como um repositório de código. As Java Applets a executarem sobre um browser web são um exemplo deste paradigma. Um conceito mais próximo dos agentes móveis é o de objecto móvel [VE96]. Um objecto móvel encapsula dados (o seu estado) e código, podendo ser trocado entre nós de uma aplicação distribuída. Um objecto móvel não é autónomo, estando sobre o controlo da aplicação distribuída. Os agentes móveis (Figura 1.1(d)) evoluíram a partir destes antecedentes. Tal como os objectos móveis, os agentes móveis encapsulam dados e código. No entanto, ao contrário dos objectos móveis, eles são autónomos, tendo uma thread de execução associada. Migram de acordo com as regras definidas no seu código, transportando juntamente com o estado e com o código a representação do estado de execução, de modo a poderem retomar a execução no nó de destino. Nesta situação não existe uma noção clara de cliente ou servidor. Cada nó disponibiliza determinados recursos (dados ou código) e é capaz de receber, criar, enviar e executar agentes móveis. Os primeiros sistemas de agentes móveis surgiram no início da década de 90, utilizando linguagens de script, que facilitam o transporte de código. Os exemplos mais importantes são o Telescript [Whi96], o Tacoma [JvRS95] e 1 Do inglês: Remote Evaluation (REV). 2 Do inglês: Code-on-Demand.

4 Introdução o AgentTcl [Gra96]. O aparecimento do Java [GJSB00, LY99], em meados da década de 90, renovou o interesse pelo paradigma dos agentes móveis, devido ao seu suporte para código móvel. Alguns dos exemplos mais importantes desenvolvidos em Java são o Aglets [LO98], o Voyager [Obj97] e o Grasshopper [BBCM98] que originaram na indústria, e o Mole [BHR97], o Ajanta [TKA + 02], o SOMA [BCS99] e o James [SSS + 99] que originaram na comunidade académica. 1.2.2 Vantagens São várias as vantagens apontadas aos agentes móveis por diversos autores [CHK94, RHR97, LO99, Joh98]. Conservação da largura de banda: Uma interacção entre dois nós de uma aplicação distribuída normalmente envolve várias trocas de mensagens intermédias até se obter o resultado final. Um agente móvel pode encapsular toda a interacção, sendo enviado para o nó de destino para interagir localmente. Isto poderá resultar numa redução da largura de banda consumida, especialmente quando o volume de dados a transportar é bastante grande. Redução da latência: Monitorizar ou controlar remotamente o estado de um nó implica alguma latência devido ao tempo que as mensagens demoram a ser enviadas através da rede. Os agentes móveis permitem eliminar esta latência, através do envio de um agente de monitorização e controlo para o nó alvo. Deste modo, as interacções remotas são substituídas por interacções locais, eliminando parte significativa da latência. Isto torna-se mais significativo quando é necessário controlo em tempo real em situações de elevada latência. Um exemplo extremo desta situação é a exploração espacial, devido aos elevados tempos de comunicação associados às distâncias espaciais [Pap99]. Reconfiguração dinâmica: A actualização do código de uma aplicação distribuída é normalmente um problema complexo, envolvendo a paragem e a reconfiguração manual dos nós. Se a funcionalidade que se quer actualizar estiver implementada sobre a forma de agentes móveis, basta criar novos agentes e substituir os antigos, o que pode ser feito automaticamente, com um impacto mínimo na aplicação como um todo. Deste modo podem-se adicionar novas funcionalidades ao sistema de uma forma flexível.

1.2 O Paradigma dos Agentes Móveis 5 Execução assíncrona e autónoma: Nalgumas situações, a ligação entre dois nós é de fraca qualidade, podendo ser interrompida frequentemente. Isto é comum em dispositivos móveis como telemóveis, PDAs ou computadores portáteis. Manter uma ligação permanente pode ser difícil. Um agente móvel pode ser enviado do terminal cliente para a rede, onde realiza as suas tarefas autonomamente. Durante este período a ligação pode ser interrompida. Mais tarde, quando o agente móvel terminar a sua tarefa e a ligação for restabelecida, ele pode retornar ao dispositivo com os resultados. Adaptação dinâmica: Os agentes móveis podem adaptar-se a alterações no ambiente de rede. Por exemplo, se um nó está a ser desligado ou um novo nó é introduzido na rede, os agentes podem-se adaptar através de migrações. Isto é útil para suporte de qualidade de serviço (QoS), balanceamento de carga e tolerância a falhas. Alguns autores [CHK94] têm apontado que, com a excepção da interacção em tempo real em situações de elevada latência, nenhuma destas vantagens individuais são únicas dos agentes móveis. Para qualquer uma delas é possível construir uma solução quase tão eficiente usando outros paradigmas comuns da computação distribuída, como o RPC. No entanto, esses autores argumentam que nenhuma outra tecnologia possui em simultâneo o mesmo conjunto de vantagens que os agentes móveis. Isto oferece uma vantagem relativa a nível de engenharia de software, pois os agentes móveis formam uma base de trabalho com um agrupamento único de capacidades, que pode ser usada para implementar facilmente uma vasta gama de aplicações distribuídas. 1.2.3 Aplicações As vantagens indicadas na secção anterior podem ser exploradas em diversas aplicações como comércio electrónico [CGH + 97], gestão de redes [BGP97, SeSF99], qualidade de serviço [BBC02], sistemas de detecção de intrusão [FHFH02], pesquisa e recolha distribuída de informação [BCT00] e suporte para dispositivos móveis [BCS01]. No entanto, tal como é aceite que nenhuma das vantagens dos agentes móveis é exclusiva desse paradigma, também se considera que não existe nenhuma aplicação importante que apenas seja possível de implementar ou que apenas se torne prática com o auxílio de agentes móveis. Isto reflecte-se na existência de poucas aplicações maduras onde os agentes móveis sejam usados, apesar de toda a investigação que tem sido realizada em torno deste paradigma nos últimos anos. A seguir são indicadas as áreas em que se considera [Joh98, Mil99, TAK01] que os agentes móveis têm mais potencial de aplicação.

6 Introdução Recolha distribuída de informação: Aplicações que necessitem de analisar e recolher uma grande quantidade de informação disponível remotamente são boas candidatas ao uso de agentes móveis. Geralmente, estas aplicações envolvem uma fase de processamento e filtragem da informação em bruto, da qual resulta uma quantidade de informação muito inferior. Se a interface exposta pelo servidor não oferecer funcionalidade suficiente para realizar esta primeira fase de processamento no servidor, o cliente é obrigado a transferir a informação em bruto através da rede. Com agentes móveis o cliente pode criar um agente com capacidade de filtrar a informação em bruto e enviá-lo para o servidor. Neste caso podem-se obter ganhos na largura de banda e no tempo total de execução da tarefa. Computação móvel: Durante os últimos anos os dispositivos móveis têmse tornado cada vez mais vulgares, tendo vindo a ser utilizados para um número crescente de aplicações. No entanto estes dispositivos têm limitações intrínsecas, nomeadamente recursos limitados de processamento e memória, ligação à rede cara, com baixa largura de banda e sujeita a cortes periódicos (zonas de má cobertura, por exemplo) e uma bateria reduzida. Por todas estas razões, eles não são apropriados para realizar tarefas que exijam recursos de processamento significativos ou uma interacção longa e contínua com nós remotos. Neste situação os agentes móveis podem ser úteis, através do uso de computação desligada 3. Quando tiver necessidade de realizar alguma tarefa mais longa, o dispositivo móvel pode enviar um agente para um nó na rede com mais recursos e com uma ligação mais fiável e barata. O agente executa autonomamente neste nó, até completar a tarefa. Durante este período o dispositivo móvel pode perder a ligação à rede ou ser desligado, sem interferir com as actividades do agente. Quando o agente terminar, os resultados são enviados para o dispositivo móvel. Instalação dinâmica de software: Em ambientes altamente dinâmicos é frequente haver necessidade de actualizar o software para se adaptar a alterações. Arquitecturas baseadas em agentes móveis são mais flexíveis que as baseadas em código monolítico, uma vez que permitem realizar actualizações mais facilmente. 3 Do inglês, disconnected computing.

1.3 Contribuição da Tese 7 1.2.4 Limitações Apesar de todo o esforço de investigação que tem sido dedicado aos agentes móveis nos últimos anos, continuam a existir alguns problemas em aberto que dificultam uma maior adopção deste paradigma [RHR97]. O principal problema é a segurança. Existem várias ameaças à segurança num sistema de agentes móveis. Por um lado, o ambiente de execução pode ser atacado pelos agentes. Estes podem tentar roubar informação, alterar dados ou consumir recursos excessivamente de modo a dificultar o funcionamento do computador. Isto pode ser o resultado de um agente malicioso ou simplesmente de um agente com algum erro de programação que o leva a comportar-se de uma forma incorrecta. Este problema é semelhante a alguns problemas tradicionais de segurança em sistemas operativos e sistemas distribuídos, sendo possível usar com algum sucesso as mesmas soluções aplicadas nestes casos. Outro problema de segurança muito mais difícil de resolver é o da protecção dos agentes contra o ambiente de execução. Os agentes podem ter de executar em nós em que não confiam, sendo possível que o ambiente de execução ataque o agente. Isto pode tornar impossível a implementação de algumas aplicações em que os agentes tenham de transportar segredos, como no caso de aplicações de comércio electrónico 4. Esta é uma situação nova, pois tradicionalmente tem-se assumido que o software pode confiar no ambiente de execução. Este problema será analisado em mais detalhe no capítulo 2. Outro problema associado a agentes móveis é o de controlar e localizar agentes. Isto torna-se especialmente problemático quando o tamanho da aplicação e o número de agentes aumenta. O sistema de agentes tem de suportar mecanismos fiáveis e seguros para criar, localizar e controlar agentes. 1.3 Contribuição da Tese As principais contribuições desta tese são as seguintes: Descrição do estado da arte na área da segurança em agentes móveis, identificando as dificuldades, as soluções existentes e os problemas em aberto. Definição e implementação de um modelo de segurança para o sistema de agentes móveis M&M, com base no modelo de segurança do Java 2 e do JAAS [LGK + 99]. Neste modelo, cada agente tem uma identidade definida pelo seu autor e pelo seu utilizador, sendo a autenticação feita 4 Nesta situação pode ser difícil ou impossível proteger informações como o número do cartão de crédito, os resultados de uma pesquisa anterior e os produtos desejados.

8 Introdução com base em criptografia de chave pública. Cada ambiente de execução tem a sua política de segurança, que é aplicada no controlo de acesso dos agentes. Implementação de algumas medidas de segurança para uso dos agentes, como encriptação e assinatura de partes do estado. Protecção da interface de gestão remota. Para implementar esta funcionalidade foi necessário desenvolver uma biblioteca para criação de proxies e interceptores em Java RMI. Esta biblioteca é perfeitamente geral e pode ser usada em outras situações 5 Definição e implementação de um modelo para suportar a extensão dinâmica da funcionalidade do sistema M&M através de serviços. Isto permite a reconfiguração dinâmica do M&M, incluindo a instalação, remoção e actualização de componentes em tempo de execução, tanto local como remotamente, através de invocações remotas ou de agentes móveis. Este modelo foi desenvolvido com base num outro existente previamente, que não suportava reconfiguração dinâmica. Protecção do acesso aos serviços por parte dos agentes. 1.4 Resultados Obtidos Neste Trabalho A seguir são apresentados os principais resultados do trabalho realizado ao longo deste mestrado: A infra-estrutura de segurança do sistema de agentes móveis M&M. Uma biblioteca para proxies inteligentes e interceptores em RMI (já referida na secção anterior). Três artigos publicados em conferências internacionais. Um sobre a arquitectura de segurança do M&M [MSeSG01], outro sobre a biblioteca para proxies inteligentes e interceptores em RMI [SMeS02] e finalmente um sobre a instalação dinâmica de serviços [SMeS03]. 5 Esta biblioteca foi disponibilizada no SourceForge, tendo sido realizados cerca de 200 downloads até Maio de 2003.