• Nenhum resultado encontrado

Protótipo de Implementação do MASS

Um protótipo, envolvendo o esquema de segurança — MASS, foi definido e implemen- tado visando comprovar a sua flexibilidade e a viabilidade de sua utilização em aplicações distribuídas que embutem a noção de mobilidade de código. As escolhas tecnológicas neces- sárias para compor a arquitetura do protótipo, ilustrada na Figura 7.1, têm como base o uso de padrões abertos e componentes de prateleiras (Commercial Off-the-Shelf -COTS) para que os requisitos de portabilidade, escalabilidade e interoperabilidade sejam preservados. Outros padrões no contexto da Internet também foram considerados. As camadas que compõem a arquitetura do protótipo serão apresentadas, a seguir.

Sistema Operacional Plataforma de Agentes Infra- estrutura SPKI/SDSI Sistema Operacional Plataforma de Agentes MASS Infra- estrutura SPKI/SDSI

Aplicações Distribuídas Baseadas em Agentes Móveis

Rede

Sítio A Sítio B

MASS

Figura 7.1: Arquitetura do Protótipo

7.2.1 Plataforma de Agentes

Para compor a camada do ambiente computacional que suporta os agentes móveis, foi adotada a plataforma Aglets da IBM (1996)3, primeiramente por usar o Java como lingua- gem de código móvel e também por ser uma iniciativa de código aberto, permitindo assim que extensões e modificações necessárias para integração do esquema de segurança fossem possíveis. Conforme apresentado nos Capítulos 3 e 4, a linguagem Java, além de ser con- siderada um padrão de fato para a programação de aplicações distribuídas, possui diversas propriedades e mecanismos que a tornam uma boa linguagem para programação de agentes móveis4.

O Kit de Desenvolvimento de Software Aglets (ASDK), na versão 2.0.2, fornece ainda outras boas características que foram importantes para sua escolha como plataforma de agen- tes, a saber:

3Uma visão geral da plataforma Aglets e dos mecanismos de segurança suportados nesta plataforma são descritos no

Apêndice B.

4Os mecanismos que contribuem com o modelo de segurança bem como com os mecanismos de segurança suportados

• garante a mobilidade de código, de dados e de informações de estado;

• possui um ambiente computacional padrão, chamado Tahiti, que suporta criação, clo- nagem, execução e envio de agentes e oferece uma interface gráfica amigável (GUI); • permite interação entre agentes móveis através da troca de mensagens síncronas ou

assíncronas;

• possui uma API de comunicação derivada do padrão MAF;

suporta o ATP (Agent Transfer Protocol) e o Java RMI (Remote Method Invocation) como infra-estruturas de comunicação;

Um estudo detalhado da plataforma Aglets-2.0.2 foi realizado no contexto do projeto IFM, visando conhecer sua arquitetura, seu modelo de agentes, os mecanismos de segurança suportados e a JAVA Aglet API (Application Programming Interface) — J-AAPI — para melhor integrar o esquema de segurança proposto5.

7.2.2 Infra-estrutura SPKI/SDSI

A infra-estrutura SPKI/SDSI, integrante da arquitetura do protótipo, é responsável pela criação, emissão e gerenciamento dos certificados SPKI/SDSI, pela verificação das cadeias de certificados de autorização e por oferecer o suporte necessário para as federações SPKI. Uma biblioteca de códigos Java que implementa o SPKI/SDSI, chamada JSDSI2.0 (Morcos, 1998), e que provê algumas dessas funcionalidades, foi utilizada no protótipo. O JSDSI2.0 possui uma interface gráfica que permite criação de pares de chaves, gerenciamento de cer- tificados e a verificação de cadeias de certificados. Para fornecer as funcionalidades de crip- tografia, esta biblioteca usa o Cryptix326, porém, somente chaves RSA são suportadas.

A biblioteca JSDSI foi estendida para que a infra-estrutura SPKI/SDSI se tornasse mais flexível e eficiente para ser usada pelas plataformas de agentes e para agilizar a busca de certificados SPKI. Toda a habilidade de se trabalhar com objetos SPKI/SDSI no protótipo é garantida através da classeSPKIResolvere esta foi desenvolvida dentro do projeto Cadeias de Confiança.

Como os objetos SPKI/SDSI são descritos em S-expressions (Rivest, 1997), estes podem ser armazenados no formato ASCII (American Standard Code for Information Interchange), podendo estar em um arquivo texto ou até mesmo em um banco de dados relacional. A fer- ramenta presente na biblioteca JSDSI2.0 utiliza como repositório um simples arquivo texto.

5Como resultado deste estudo, um relatório técnico que descreve em profundidade a plataforma Aglets

foi redigido e encontra-se disponível na página do Grupo de Estudos de Agentes Móveis e Segurança — http://www.das.ufsc.br/AgenteSeg/relatorios.

Para facilitar o gerenciamento dos objetos SPKI/SDSI e agilizar a busca de certificados, a biblioteca parserSxxS (Mello, 2003) foi implementada no contexto do projeto Cadeias de Confiança, possibilitando que todos os objetos suportados pela biblioteca JSDSI possam ser convertidos para documentos XML (eXtensible Markup Language)7 e vice-versa, tendo como base o DTD (Document Type Definition), especificado em (Orri e Mas, 2001). Assim, a biblioteca parserSxxS permite a completa adoção de documentos XML como uma forma para armazenar objetos SDSI ao invés de S-expressions, tornando mais ágil a manipulação destes documentos (Mello, 2003).

Nas Federações SPKI/SDSI, implementadas no projeto Cadeias de Confiança, há dois tipos de repositórios de certificados: os repositórios locais, os quais situam-se juntos de cada membro da federação; e os repositórios globais, os quais situam-se juntos dos gerentes das federações. Foi com base nos documentos XML que foram implementados os repositórios de certificados do protótipo — pacote repository.locale pacote repository.global (Mello, 2003). O pacoterepository.localconsiste na implementação de uma estrutura de arquivos, que representa os documentos XML armazenados no repositório, e ainda os me- canismos para manutenção desta base de dados como a inclusão, a modificação, a remoção de arquivos, bem como a busca por alguma informação dentro destes arquivos8. Para o reposi- tório global foi utilizado o Apache Xindice9, um banco de dados que armazena documentos XML de forma nativa. O Xindice utiliza o XPath (Clark e DeRose, 1999) como lingua- gem para pesquisa de documentos (query language), assim o pacoterepository.global consiste basicamente da implementação de mecanismos que propiciem fazer consultas, in- clusões, remoções e modificações rápidas e simples na base de dados, implementada pelo Xindice.

7.2.3 Esquema de Segurança — MASS

Esta camada do protótipo é composta por: interfaces gráficas que auxiliam a configuração e inicialização do esquema de segurança; uma biblioteca de classes, chamada AgentSec, que auxilia o programador de um agente na construção de agentes móveis protegidos; objetos que estendem as funcionalidades da plataforma Aglets para suportar o esquema de segurança; objetos que implementam o protocolo de autenticação mútua entre plataformas; o esquema para geração de domínios de proteção e, o autenticador multi-hop. As próximas seções detalham a implementação do esquema de segurança e sua integração à plataforma Aglets.

As ferramentas de programação utilizadas na implementação do esquema de segurança

7O XML é um padrão da W3C (World Wide Web Consortium) cujo principal objetivo é o intercâmbio de conteúdos

digitais (Bray et al., 1998). O XML traz flexibilidade às aplicações, permitindo buscas mais eficientes e distribuição dos dados de forma mais ampla e escalável. Diversas aplicações já utilizam este padrão o que o torna um padrão de fato no contexto da Internet.

8O parser SAX — Simple API for XML (http://www.saxproject.org/), presente no J2SE 1.4, foi utilizado na implemen-

tação do repositório local.

foram: J2SE v1.4.2 SDK (plataforma Java 2)10, Eclipse 2.1 (ambiente de desenvolvimento Java)11, Xindice 1.0 (banco de dados XML nativo), iSaSiLk 3.06 toolkit 12 (implementa- ção do protocolo SSL), IAIK-JCE 3.0.3 toolkit13(implementação da API JCE do Java) e Together 6.0.2 (ferramenta para desenvolvimento de software utilizando UML).