Issuu on Google+

Redes Neurais Aplicadas para Autoprote¸c˜ ao de Sistemas Distribu´ıdos Izaquiel Lopes de Bessas


˜ DE CURSO PROJETO DE CONCLUSAO

Data de Dep´osito: 25/11/2010 Assinatura:

Redes Neurais Aplicadas para Autoprote¸ c˜ ao de Sistemas Distribu´ıdos

Izaquiel Lopes de Bessas

Michel Pires da Silva

Monografia apresentada ao Instituto Superior de Educa¸c˜ao do UNIFOR/MG, como requisito parcial para obten¸c˜ao do t´ıtulo de Bacharel em Ciˆencia da Computa¸c˜ao, sob a orienta¸c˜ao do Profo . Ms. Michel Pires da Silva

Centro Universit´ario de Formiga - UNIFOR/MG 15/12/2010


Aos meus pais, a minha namorada, e ao meio acadˆemico


Agradecimentos

Agrade¸co primeiramente aos meus pais por terem me proporcionado condi¸c˜oes de estudar, atrav´es do trabalho e da educa¸ca˜o, al´em do apoio e compreens˜ao depositados. A minha namorada Tamara, pelo ap´oio incondicional e pelo tempo que se dedicou me ajudando quando precisei. Aos meus irm˜aos que estiveram presentes todo o tempo, facilitando e diminuindo a tens˜ao das tarefas. Ao professor orientador, Michel Pires da Silva pelo compartilhamento do conhecimento e devo¸c˜ao para com o meio cient´ıfico, e ter me motivado a continuar, sempre buscando por melhores resultados. Ao professor Luciano Jos´e Senger, pela grande ajuda com a rede neural artificial usada no projeto, a ART-2a. Aos meus amigos do meio acadˆemico que compartilharam seus conhecimentos e momentos bons ou ruins tornando o ambiente de aprendizado um lugar mais agrad´avel.


‘Existe uma for¸ca maior que a nuclear, a for¸ca de vontade’ Albert Einstein


Sum´ ario

Lista de Figuras

iii

Lista de Tabelas

v

Lista de Algoritmos

vii

1 Introdu¸c˜ ao

1

1.1

Considera¸c˜oes Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.2

Objetivos do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

1.3

Estrutura da Monografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

2 Computa¸c˜ ao Autˆ onoma 2.1

2.2

5

Computa¸ca˜o Autˆonoma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.1.1

Autogerenciamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.1.2

Autoconfigura¸c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

2.1.3

Auto-otimiza¸ca˜o

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

2.1.4

Autocura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

2.1.5

Autoprote¸ca˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

2.1.6

Considera¸co˜es sobre a Arquitetura

. . . . . . . . . . . . . . . . . . . . .

9

2.1.7

As rela¸co˜es dos elementos autˆonomos . . . . . . . . . . . . . . . . . . . .

10

2.1.8

Benef´ıcios da Computa¸ca˜o Autˆonoma . . . . . . . . . . . . . . . . . . . .

11

2.1.9

Quest˜oes do sistema como um todo . . . . . . . . . . . . . . . . . . . . .

11

Considera¸c˜oes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

3 Redes Neurais Artificiais 3.1

13

Redes Neurais ART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

3.1.1

Arquitetura das Redes Neurais ART . . . . . . . . . . . . . . . . . . . .

15

3.1.2

Aprendizado das Redes Neurais ART . . . . . . . . . . . . . . . . . . . .

17

3.1.3

Rede Neural ART-2A . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

i


3.2

Considera¸c˜oes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4 Aplica¸c˜ ao da ART-2A na Autoprote¸c˜ ao 4.1 Considera¸c˜oes iniciais . . . . . . . . . . . 4.2 Gerador de Processos . . . . . . . . . . . 4.2.1 Estrutura dos arquivos de entrada 4.3 Autoprote¸c˜ao . . . . . . . . . . . . . . . 4.3.1 Treinamento da Rede . . . . . . . 4.3.2 Classifica¸ca˜o de processos . . . . 4.3.3 Estrutura dos arquivos de entrada 4.4 Considera¸c˜oes Finais . . . . . . . . . . .

. . e . . . e .

. . . . . . . . sa´ıda . . . . . . . . . . . . sa´ıda . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

20 23 23 24 25 26 26 27 28 29

5 Estado da Arte 31 5.1 Estado da Arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.2 Considera¸c˜oes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6 Resultados 6.1 Realiza¸ca˜o dos Testes . . . . . . . . . 6.2 Apresenta¸c˜ao dos Resultados . . . . . 6.2.1 Verifica¸ca˜o de Falsos Positivo 6.2.2 Verifica¸ca˜o de Falsos Negativo 6.3 Desempenho computacional . . . . . 6.4 Considera¸c˜oes Finais . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

35 35 36 36 37 38 40

7 Conclus˜ oes 41 7.1 Considera¸c˜oes finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.2 Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 A Arquivos de Entrada, Sa´ıda e Log

43

ii


Lista de Figuras

3.1

Estrutura da rede ART-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

5.1

Total Cost of Ownership (Custo Total das Propriedades) . . . . . . . . . . . . .

32

6.1

Teste para verificar a quantidade de falsos positivos, tendo como entrada um arquivo com 1.000, outro com 5.000 e outro com 10.000 padr˜oes com processos intrusos em uma RNA com 10.000 processos treinados . . . . . . . . . . . . . . . Teste para verificar a quantidade de falsos positivos, tendo como entrada um arquivo com 1.000, outro com 5.000 e outro com 10.000 padr˜oes com processos intrusos em uma RNA com 100.000 processos treinados . . . . . . . . . . . . . . Teste para verificar a quantidade de falsos negativos, tendo como entrada um arquivo com 5.000 e outro com 10.000 padr˜oes com processos n˜ao intrusos em uma RNA com 10.000 processos representados em sua base de conhecimento . . Teste para verificar a quantidade de falsos negativos, tendo como entrada um arquivo com 5.000 e outro com 10.000 padr˜oes com processos n˜ao intrusos em uma RNA com 100.000 processos representados em sua base de conhecimento . .

6.2

6.3

6.4

iii

37

37

38

39


iv


Lista de Tabelas

2.1

Os quatro aspectos da computa¸ca˜o autˆonoma, na computa¸c˜ao corrente e na computa¸c˜ao autˆonoma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

4.1

Exemplo de uma solicita¸ca˜o de suspens˜ao para um processo suspeito . . . . . . .

24

6.1

Processos usados pelo gerador como ponto de partida, normalizados unidade de cada caracter´ıstica . . . . . . . . . . . . . . . . . . . . . . Tempo de Treinamento para 10.000 entradas, com rho = 0,995 . . . . Tempo de Treinamento para 100.000 entradas, com rho = 0,995 . . .

36 39 39

6.2 6.3 A.1 A.2 A.3 A.4

a` menor . . . . . . . . . . . . . . . . . .

Exemplo de um arquivo de log, gerado ap´os o treinamento da rede . . . . . . . . Exemplo do arquivo process.sim . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplo do arquivo variancia.sim . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplo de um arquivo monitor.sim o qual teve trˆes simula¸c˜oes para cada padr˜ao de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.5 Exemplo do arquivo config.sim . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.6 Exemplo do arquivo config.spl . . . . . . . . . . . . . . . . . . . . . . . . . . . .

v

47 48 48 49 50 50


vi


List of Algoritmos

1

Treinamento da ART-2a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

vii

20


viii


Resumo

BESSAS, I. L. Redes Neurais Aplicadas para a autoprote¸c˜ ao de Sistemas Distribu´ıdos. Monografia (Gradua¸c˜ao) — Centro Universit´ ario de Formiga – UNIFOR/MG – Formiga, 2010.

Atualmente a comunidade cient´ıfica e algumas corpora¸co˜es, tem sentido a necessidade de ampliar seu poder computacional, aumentando a capacidade de processamento, disponibilidade da informa¸c˜ao e armazenamento. Afim de suprir tais necessidades, a´reas tais como, sistemas distribu´ıdos, vem sofrendo atualiza¸co˜es conceituais constantes, aproximando-se cada vez mais da computa¸c˜ao pervasiva, contudo, essas caracter´ısticas vem ao custo de uma alta dificuldade de gest˜ao, cuja m˜ao-de-obra cara e escassa ´e um dos atuais problemas e impasse para maiores progressos na ind´ ustria de tecnologia da informa¸ca˜o. Isso tende a piorar a medida que as aplica¸c˜oes aumentam a comunica¸ca˜o e vai se inserindo mais elementos de softwares e hardwares heterogˆeneos nesse contexto, aumentando ainda mais a complexidade desses ambientes. Com o intuito de solucionar os problemas gerenciais e administrativos de tais sistemas, foi proposta a computa¸c˜ao autˆonoma, cuja principal fun¸ca˜o seria tratar de eventos de baixo n´ıvel de forma autom´atica. Dentre esses eventos, este trabalho optou pela elabora¸c˜ao da autoprote¸c˜ao, limitando-se a esta propriedade, sendo que para tanto, somou-se aos sistemas distribu´ıdos, os esfor¸cos de outra grande ´area da computa¸ca˜o, a inteligˆencia artificial, cujas redes neurais artificiais foram escolhidas para realizarem a autoprote¸c˜ao. Para tanto, implementou-se a ART-2A, a qual demonstrou bom desempenho computacional e de classifica¸c˜ao, gerando durante a fase de valida¸c˜ao e testes um baixo n´ umero de falsos negativos e positivos. Contudo, mesmo com o bom resultado obtido nesse trabalho, ainda n˜ao se pode dizer que a autoprote¸c˜ao est´a pronta para ser inserida em um ambiente de produ¸c˜ao, sendo ainda necess´arios mais trabalhos e estudos sobre o tema, para se ter um maior grau de confian¸ca.

Palavras-chave: Computa¸c˜ao Autˆonoma, Redes Neurais Artificiais, ART, ART-2a ix


Cap´ıtulo

1 Introdu¸c˜ ao

1.1

Considera¸c˜ oes Iniciais

A computa¸ca˜o autˆonoma ´e uma ´area emergente, a qual visa capacitar sistemas a gerenciar suas tarefas de maneira inteligente, dinˆamica e autom´atica. Essa a´rea surgiu ao observar-se a atual complexidade dos ambientes de grades computacionais, sendo dif´ıcil encontrar profissionais capacitados a lidar com tais ambientes, cuja instala¸c˜ao, manuten¸ca˜o, corre¸ca˜o e gerenciamento ´e uma tarefa dispendiosa. Um outro fator motivador da computa¸ca˜o autˆonoma ´e que, segundo estudos realizados pela IBM, a cada um d´olar investido em infra-estrutura, investe-se mais dez para mantˆe-la. Aliando-se ent˜ao o custo a` dificuldade de gest˜ao tem-se um dos principais motivos da proposta da computa¸c˜ao autˆonoma ?. Esta por sua vez, divide-se em quatro aspectos b´asicos, sendo esses a autoconfigura¸ca˜o, autocura, auto-otimiza¸ca˜o e a autoprote¸c˜ao, sendo que esses comunicam entre si fornecendo informa¸co˜es a` um outro elemento autˆonomo, chamado de autogest˜ao, o qual gerencia a comunica¸ca˜o e auxilia nas decis˜oes dos outros quatro, no entanto esse u ´ltimo pode ser apenas um resultado da comunica¸ca˜o dos outros ? ?. As grades computacionais, uma das grandes a´reas de pesquisa da computa¸c˜ao autˆonoma, trabalham muitas das vezes sobre arquitetura orientadas a` servi¸cos, logo, manter a qualidade desses servi¸cos ´e algo essencial em tais ambientes. No entanto gerir esses, ´e ainda uma tarefa dispendiosa, principalmente por se tratar de ambientes cujas decis˜oes podem depender do estado e do contexto, serem heterogˆeneos, tanto em software quanto em hardware e sofrerem mudan¸cas de estado, requisitos e contexto muito r´apidas ? ?. Com o crescimento da demanda por servi¸cos nesses sistemas, al´em do aumento da comunica¸ca˜o de softwares e hardwares, essas caracter´ısticas tem se tornado ainda mais complexas, sendo que muitas das vezes, a tomada de decis˜ao em um determinado software ´e deixada para o tempo de execu¸c˜ao justamente por ser muito dif´ıcil de predize-la. Deste modo, tem-se caminhado cada 1


vez mais para um novo n´ıvel de complexidade administrativa, temendo-se em chegar aos limites da capacidade de gerenciamento do ser humano. Foi ent˜ao proposta a computa¸c˜ao autˆonoma, o que segundo ?, ´e o u ´nico caminho vi´avel para solucionar esse problema. A computa¸c˜ao autˆonoma vem ent˜ao com o objetivo de automatizar fun¸co˜es gerenciais de baixo n´ıvel em um ambiente de dif´ıcil administra¸ca˜o. Esta por sua vez, divide-se em aspectos, ou propriedades b´asicas, das quais escolheu-se para se trabalhar nesse projeto, a autoprote¸ca˜o. A autoprote¸c˜ao visa identificar, detectar e proteger o sistema contra invas˜oes e outras formas de amea¸ca. Assim sendo, ao se verificar qualquer varia¸c˜ao comportamental fora dos padr˜oes, deve-se impedir que esta continue, j´a que pode ser um processo malicioso operando no sistema, colocando-o em risco. No entanto prover tal prote¸ca˜o de modo autom´atico, assim como os demais aspectos da computa¸c˜ao autˆonoma, ´e ainda um desafio sem solu¸ca˜o evidente, principalmente ao se observar as caracter´ısticas que cercam essas aplica¸ca˜o. Tais caracter´ısticas implicam na invers˜ao do que normalmente ´e feito nos sistemas convencionais, sendo que esses se baseiam em restri¸c˜oes para tomar uma decis˜ao particular e de modo isolado, enquanto a computa¸c˜ao autˆonoma trata de problemas com comportamentos emergentes, objetivos, requisitos e escolhas que podem depender do estado e do contexto que se encontram ? ? ?. A computa¸c˜ao autˆonoma difere-se tamb´em dos sistemas adaptativos, que apesar de trabalharem em ambientes semelhantes, esses trabalham de modo isolado, enquanto que na computa¸c˜ao autˆonoma, h´a uma constante comunica¸ca˜o entre seus elementos ?. Uma vez definido que se trabalharia com a autoprote¸ca˜o e tendo em vista as atuais dificuldades e problemas para se prover tal caracter´ıstica, optou-se por estudar uma rede neural artificial n˜ao-supervisionada que solucionasse de modo vi´avel esses problemas. Para isso escolheu-se a ART-2A, cujas caracter´ısticas de desempenho computacional, trabalhar com problemas de classifica¸ca˜o e ampliar o conhecimento anteriormente aprendido sem a necessidade de submete-la a um novo treinamento com todos os processos j´a treinados anteriormente, al´em de ser n˜aosupervisionada, suprem algumas das necessidades vistas para se prover a autoprote¸c˜ao. Com isso atendemos necessidades como, classificar processos anteriormente desconhecidos rotulandoos em intrusos, ou n˜ao intrusos a partir do hist´orico de tra¸cos de execu¸c˜ao e se adaptar a`s diversas mudan¸cas do ambiente, tudo isso de forma autom´atica.

1.2

Objetivos do Trabalho

Os objetivos deste trabalho s˜ao, a verifica¸c˜ao do qu˜ao eficaz ´e a RNA ART-2A, em seu trabalho de classifica¸c˜ao, de modo a verificar a viabilidade de se prover a autoprote¸c˜ao a partir da utiliza¸c˜ao desta t´ecnica. Verificar as propriedades da computa¸ca˜o autˆonoma e mais especificamente da autoprote¸c˜ao, propondo uma arquitetura que possibilite a comunica¸c˜ao dos elementos autˆonomos, al´em de determinar um modo de se prover a autoprote¸c˜ao, sem desprezar a comunica¸ca˜o e intera¸c˜ao com os outros elementos da computa¸ca˜o autˆonoma, sem desconsiderar a seguran¸ca entre esses elementos e sem descartar as t´ecnicas de seguran¸ca j´a difundidas, apoiando-as de modo autˆonomo. Outro fator importante, ´e a verifica¸c˜ao do desempenho com2


putacional da aplica¸ca˜o, uma vez que as tomadas de decis˜oes precisam ser r´apidas o suficiente para n˜ao prejudicar o funcionamento do sistema.

1.3

Estrutura da Monografia

Agora ser˜ao apresentados os pr´oximos cap´ıtulos deste trabalho, detalhando o que ser´a abordado em cada um deles de um modo sucinto. O cap´ıtulo 2 detalha a fundamenta¸ca˜o te´orica sobre a computa¸ca˜o autˆonoma, abordando suas propriedades b´asicas, arquitetura, os desafios de engenharia encontrados, o ciclo de vida de um elemento autˆonomo e suas rela¸co˜es, os benef´ıcios da computa¸ca˜o autˆonoma, bem como sua teoria de forma geral. J´a o cap´ıtulo 3, aborda as redes neurais artificiais, mostrando os diferentes aspectos dessas e o seu funcionamento geral, ser´a mostrado tamb´em, com mais detalhes, as redes neurais da fam´ılia ART, bem como sua arquitetura, modo de aprendizado e por fim a ART-2A. O cap´ıtulo 4 descreve o trabalho realizado, detalhando o seu funcionamento, bem como, arquitetura utilizada e a estrutura de seus arquivos de entrada e sa´ıda. O cap´ıtulo 5 aborda o estado da arte, demonstrando alguns trabalhos relacionados a ´area, suas contribui¸co˜es e em quais pontos foram u ´teis na elabora¸c˜ao deste. No cap´ıtulo 6 apresenta-se os resultados obtidos, sendo detalhados tamb´em a forma como foram realizados os testes para se chegar a tal. O cap´ıtulo 7 encerra o trabalho com as conclus˜oes, contribui¸co˜es e uma se¸ca˜o sobre trabalhos futuros.

3


4


Cap´ıtulo

2 Computa¸c˜ ao Autˆ onoma

Em meados de outubro de 2001, a IBM lan¸cou um manifesto alertando sobre o iminente obst´aculo para o progresso da ind´ ustria de Tecnologia da Informa¸ca˜o (TI). Tal obst´aculo foi apresentado como uma crise de software, sendo que nesse citou-se aplica¸co˜es que executam no ambiente de sistemas distribu´ıdos com o peso de dezenas de milhares de linhas de c´odigos, sendo que, instalar, manter, ajustar e configurar tais aplica¸co˜es ´e uma tarefa hoje, j´a muito dispendiosa, exigindo profissionais altamente qualificados, sendo esses uma m˜ao-de-obra escassa. Al´em disso, segundo ? a demanda por profissionais para atender tais aplica¸co˜es tende a crescer drasticamente, sendo que faltar´a ainda mais dessa m˜ao-de-obra. Outra situa¸c˜ao que merece aten¸ca˜o, ´e o fato de que gerenciar tais sistemas vem se tornando cada vez mais pr´oximo do limite da capacidade de gest˜ao do ser humano ? ?. Nesse mesmo manifesto, foi destacado que a dificuldade de gerir esses sistemas vai muito al´em da administra¸ca˜o de ambientes de software individual. Tendo a necessidade de integrar diversos ambientes, os quais, na maior parte das vezes s˜ao heterogˆeneos, introduz um n´ıvel de complexidade novo ao problema. Mas mesmo diante de tais problemas, ou da possibilidade de se chegar ao limite da capacidade de gest˜ao do ser humano, a marcha em dire¸ca˜o a maior interconectividade e integra¸ca˜o corre sem se esmorecer. Caminha-se assim cada vez mais para a dire¸ca˜o da computa¸c˜ao pervasiva, onde trilh˜oes de dispositivos de inform´atica estariam conectados a internet, no entanto tal ambiente pode facilmente tornar-se um pesadelo, principalmente a quem o administra ? ?. Novas linguagens de programa¸c˜ao tem surgido, fazendo crescer o tamanho e a complexidade dos sistemas projetados pelos engenheiros de software, no entanto, ´e pouco prov´avel que somente tais inova¸c˜oes em rela¸ca˜o as linguagens de programa¸ca˜o acabe com essa crise. Tais inova¸co˜es tem proporcionado aos engenheiros de software, fabricar sistemas cada vez mais integrados e ligados a outros, no entanto tal comunica¸c˜ao nem sempre pode ser prevista, o que faz com que 5


os engenheiros deixem tais quest˜oes para serem resolvidas em tempo de execu¸c˜ao, tornando a administra¸ca˜o de tais ambientes ainda mais dif´ıcil de ser realizada. Os sistemas que executam em tal ambiente, vem se tornando grandes e complexos demais at´e mesmo para os integradores mais aptos do mercado, n˜ao havendo tempo h´abil o suficiente para respostas decisivas em um fluxo de mudan¸cas muito r´apidas em rela¸c˜ao a demandas, que podem tornar-se conflitantes ? ?. At´e ent˜ao, o meio mais vi´avel proposto para atender e solucionar tais quest˜oes foi a Computa¸c˜ao Autˆonoma, sendo que este termo, foi deliberadamente escolhido fazendo-se uma conota¸ca˜o com o sistema nervoso autˆonomo humano, a qual ´e detalhada nas se¸co˜es seguintes.

2.1

Computa¸c˜ ao Autˆ onoma

A Computa¸c˜ao Autˆonoma foi anunciada em mar¸co de 2001 pelo presidente da IBM, vicepresidente sˆenior de pesquisa, Paul Horn, durante um discurso para a Academia Nacional de Engenharia da Universidade de Harvard. Nesse discurso foi apresentada a id´eia da Computa¸ca˜o Autˆonoma, fez-se uma conota¸ca˜o biol´ogica com o sistema nervoso autˆonomo humano, exemplificando com o fato de que o sistema nervoso humano controla de forma autom´atica nossa temperatura corporal, a frequˆencia dos batimentos card´ıacos, e outras mais fun¸co˜es de baixo n´ıvel, no entanto vitais para nosso organismo, sem que seja necess´ario que o c´erebro consciente ocupe-se com isso, livrando-o para cuidar de fun¸co˜es e pensamentos de mais alto n´ıvel, ou mais elaborados. Pode-se dizer que a computa¸c˜ao espelha-se no universo em torno do ser humano, indo desde mol´eculas microsc´opicas at´e a economia mundial, sendo que na computa¸ca˜o, vai-se desde equipamentos individuais `a comunica¸ca˜o estabelecida em toda a internet ?. Assim como ocorre na biologia, quando uma nova c´elula ´e criada, ela se integra e interage automaticamente com as outras, se adaptando e se ajustando de acordo com o necess´ario, a computa¸c˜ao autˆonoma prop˜oem que o sistema seja capaz de se auto-instalar, reconfigurar-se de acordo com o necess´ario e executar um teste de regress˜ao para verificar se est´a tudo em ordem, tudo isso de forma autom´atica, com a m´ınima interven¸c˜ao humana poss´ıvel ?. A IBM cita quatro propriedades b´asicas para se prover a computa¸c˜ao autˆonoma, comumente conhecidas como propriedades ‘self ’. S˜ao essas, a autocura, autoprote¸ca˜o, auto-otimiza¸ca˜o e autoconfigura¸ca˜o, o quadro 2.1 segue com uma breve explica¸c˜ao sobre estas sub-´areas da computa¸c˜ao autˆonoma, comparando-as com as t´ecnicas atuais.

2.1.1

Autogerenciamento

A essˆencia dos sistemas de computa¸ca˜o autˆonoma ´e a autogest˜ao, sendo esta a representante da inten¸c˜ao de livrar os administradores de tais sistemas dos detalhes de opera¸c˜oes de baixo n´ıvel, oferecendo um sistema capaz de executar em desempenho m´aximo, ou seja, 24 horas por dia, 7 dias por semana. A autogest˜ao, se encarrega de manter e ajustar o funcionamento do sistema em face a mudan¸cas de comportamentos emergentes, cargas de trabalho, demandas, condi¸co˜es de falhas 6


Comparativo da Computa¸c˜ ao Autˆ onoma com a Computa¸c˜ ao Atual Conceito Computa¸c˜ao Corrente Computa¸c˜ao Autˆonoma Autoconfigura¸c˜ao Centro de dados corporativos possuem muitos fornecedores e plataformas. Instala¸ca˜o, configura¸ca˜o e integra¸c˜ao de sistemas consome muito tempo e ´e propenso a falhas A configura¸ca˜o autom´atica de componentes e sistemas segue a pol´ıtica de alto n´ıvel. Sendo que o restante do sistema se ajusta automaticamente. Autoprote¸ca˜o Detec¸c˜ao, prote¸ca˜o e recupera¸c˜ao de ataques ´e feita de forma manual O sistema defende-se automaticamente de ataques ou falhas em cascata, prevenindo o sistema de falhas, antecipando-as com avisos Autocura Determinar um diagn´ostico e fazer seus reparos podem levar semanas O sistema identifica o erro automaticamente e encaminha-o para uma equipe de programadores respons´avel pela corre¸ca˜o, a qual se isenta de testes por j´a ter o conhecimento do problema Auto-otimiza¸ca˜o Centenas de sistemas cujas configura¸co˜es s˜ao feitas manualmente, parˆametros de ajustes n˜ao-lineares, onde o n´ umero destes aumenta a cada nova vers˜ao Componentes e sistemas voltados a buscar continuamente oportunidades para melhorar o seu pr´oprio desempenho. Tabela 2.1: Os quatro aspectos da computa¸c˜ao autˆonoma, na computa¸c˜ao corrente e na computa¸c˜ao autˆonoma

de softwares ou hardwares, sendo inocentes ou maliciosas. Podendo ainda, verificar o seu pr´oprio uso, certificando-se por exemplo, se seus componentes est˜ao atualizados e no caso de n˜ao estarem e haver uma atualiza¸c˜ao de peso, o sistema ir´a se atualizar, configurar-se de acordo com o necess´ario e executar um teste de regress˜ao para verificar se o seu estado atual est´a funcionando bem ?. Como j´a fora citado anteriormente, existem quatro propriedades fundamentais para a com7


puta¸c˜ao autˆonoma, tais propriedades trabalham separadamente, no entanto, comunicando entre si o tempo todo e sendo integradas pela autogest˜ao. Ao estabelecer tal ciclo, tem-se automaticamente a computa¸ca˜o autˆonoma.

2.1.2

Autoconfigura¸ c˜ ao

A instala¸c˜ao, integra¸ca˜o e a configura¸ca˜o de sistemas grandes e complexos consome muito tempo e ´e propensa a erros, fazer com que dois sistemas diferentes se comuniquem ou implantar um e-commerce importante pode levar meses, mesmo tendo uma equipe de especialistas para tal. Na autoconfigura¸ca˜o, ao se introduzir um novo componente de software ou de hardware ao sistema, este se encarrega de se registrar no sistema (Plug and Play), assim como registrar suas capacidades para que outros componentes possam us´a-lo, ou se adaptarem de forma adequada ao sistema, de forma semelhante a uma c´elula nova, que se introduz no organismo sem a necessidade de um grande esfor¸co consciente, adaptando-se e interagindo com as demais ? ? ?.

2.1.3

Auto-otimiza¸ c˜ ao

Middlewars, ou mesmo sistemas de banco de dados complexos, podem vir a ter centenas de parˆametros ajust´aveis que devem ser definidos corretamente para que o sistema funcione como se espera, mas h´a poucas pessoas capazes de ajust´a-los de forma que o sistema funcione sem erros. Tais sistemas por vezes s˜ao integrados com outros, em sua maioria t˜ao complexos quanto os primeiros. Deste modo, ajustar tais sistemas para melhorar seu desempenho, al´em de dispendioso pode ter efeitos colaterais nada agrad´aveis por um simples descuido ?. Na auto-otimiza¸ca˜o o sistema buscar´a continuamente melhorar seu desempenho sempre que observada uma oportunidade para tal. O sistema se automonitora a procura de oportunidades para aumentar o desempenho e diminuir o custo de seus processos ? ? ?.

2.1.4

Autocura

A IBM, assim como outras fornecedoras de TI, tˆem grandes departamentos dedicados a identificar, rastrear e determinar a causa raiz de falhas em sistemas computacionais complexos. Mas por vezes, alguns problemas podem levar semanas de dedica¸ca˜o por parte de equipes de programadores e clientes para se diagnosticar um problema e corrigi-lo, outras vezes, este problema pode simplesmente deixar de ocorrer, sem que se tenha ao menos o identificado, ou que se tenha dado um diagn´ostico satisfat´orio ?. Na tolerˆancia a erros, este ´e mascarado ao usu´ario final e o t´ecnico deve analisar, estudar e encontrar a falha, corrigindo-a posteriormente, j´a na autocura ser´a realizada uma busca para se determinar a origem do problema, tentando localizar e corrigir os erros ou falhas de software ou hardware, por meio de um sistema de testes regressivos. Uma vez que se tenha conhecimento sobre o funcionamento do sistema, um componente poder´a identificar o problema 8


de algum m´odulo por meio da an´alise de arquivos de log, juntamente com log de monitores adicionais. No caso de n˜ao se conseguir realizar uma corre¸ca˜o, seja por falta de informa¸c˜oes sobre o funcionamento da aplica¸ca˜o, ou por outro motivo cujo sistema n˜ao conseguiu identificar, ´e feito um alerta para um programador humano e o mesmo ´e enviado para a autoprote¸ca˜o, a qual analisa e tenta proteger o sistema desse problema ? ? ?.

2.1.5

Autoprote¸ c˜ ao

Apesar da existˆencia de firewalls e ferramentas de detec¸ca˜o de intrus˜oes, cabe ainda ao ser humano decidir como proteger os sistemas contra ataques e falhas, a computa¸ca˜o autˆonoma sugere tratar esses eventos de forma autom´atica, para tal, ´e dedicada uma de suas propriedades a esta fun¸ca˜o. A autoprote¸ca˜o ´e a propriedade que se encarrega de defender o sistema de intrusos, ataques e falhas proveniente de c´odigo malicioso ou erro, neste segundo caso, cabe a autoprote¸ca˜o proteger o sistemas dos erros que n˜ao forem tratados na autocura. J´a no caso de c´odigos maliciosos, ou intrus˜oes ao sistema, capazes de ferir a credibilidade e integridade das informa¸c˜oes neste depositadas, cabe a autoprote¸c˜ao o bloqueio, ou exclus˜ao de tais processos ? ? ?. A autoprote¸c˜ao prop˜oem ent˜ao n˜ao a exclus˜ao das t´ecnicas de seguran¸ca j´a difundidas, mas apoi´alas, al´em tamb´em de monitorar os processos em execu¸ca˜o, suprindo a necessidade de interven¸c˜ao humana.

2.1.6

Considera¸ c˜ oes sobre a Arquitetura

A arquitetura da computa¸ca˜o autˆonoma tem por objetivo prover solu¸ca˜o automatizada as suas sub-´areas. Diferentemente dos sistemas adaptativos que apesar de proverem solu¸co˜es automatizadas em ambientes cujas mudan¸cas de regras acontecem dinamicamente em virtude da execu¸c˜ao corrente assim como na computa¸ca˜o autˆonoma, o sistema adaptativo trata suas tarefas de modo isolado. Enquanto que na computa¸ca˜o autˆonoma as tarefas comunicam-se entre si, provendo solu¸ca˜o autom´atica em mais de uma tarefa ?. Uma outra caracter´ıstica da computa¸c˜ao autˆonoma ´e que ela trata de problemas com comportamentos emergentes, objetivos, requisitos e escolhas que podem depender de estados e contextos, os quais n˜ao s˜ao conhecidos antecipadamente. Ao contr´ario dos sistemas tradicionais, os quais se baseiam em restri¸co˜es para prover solu¸co˜es particulares e de forma isolada. O sistema autˆonomo, constitui-se de cole¸co˜es de elementos individuais e interativos, os quais cont´em recursos para prestar servi¸cos e suporte uns aos outros. Os elementos autˆonomos ir˜ao gerir automaticamente o seu comportamento interno e suas rela¸c˜oes com outros elementos, tamb´em autˆonomos, se dar´a conforme pol´ıticas estabelecidas pelos seres humanos, ou outros elementos j´a em funcionamento ?. A arquitetura proposta se d´a de modo que os elementos gerenci´aveis, por meio de suas comunica¸co˜es, alimentem o sistema de gerenciamento principal, a autogest˜ao. Deste modo s˜ao enviadas solicita¸c˜oes, que s˜ao analisadas, escalonadas e executadas se necess´ario. Assim sendo, 9


cada elemento autˆonomo torna-se respons´avel pela sua pr´opria gest˜ao, gerenciando seu pr´oprio estado, comportamento interno e suas intera¸co˜es com o ambiente externo, que consiste em grande parte, enviar e receber sinais e mensagens de outros elementos integrados ao ambiente ? ?. Na tarefa de monitoramento ´e realizado a coleta, agrega¸c˜ao, correlacionamento e filtragem de dados sobre recursos gerenciados. Informa¸c˜oes de topologia, eventos, m´etricas, entre outros, s˜ao chamados de dados coletados. J´a os recursos gerenci´aveis envolvem, banco de dados, servidores, unidades de armazenamento, aplica¸c˜oes, servi¸cos, servidores de aplica¸c˜oes, etc. ?. J´a na tarefa de an´alise e decis˜ao, tem-se o objetivo de assegurar a convergˆencia de valores limiares de parˆametros, tais como o desempenho, a disponibilidade e a seguran¸ca, por meio das informa¸c˜oes colhidas no monitoramento, analisando e verificado se haver´a a necessidade de fazer altera¸co˜es. Caso haja alguma mudan¸ca na tarefa de an´alise e decis˜ao, o controle e execu¸c˜ao escalona e executa tais mudan¸cas ?. Contudo, apesar de se ter uma proposta para a arquitetura, ainda existem desafios de engenharia para a computa¸ca˜o autˆonoma em todos os seus aspectos. O ciclo de vida de um elemento individual autˆonomo ou de uma rela¸ca˜o entre os elementos autˆonomos revela alguns desses desafios. Esse ciclo de vida come¸ca com a concep¸c˜ao e implementa¸c˜ao do elemento, sendo seguido da verifica¸ca˜o e testes, depois, instala¸ca˜o, configura¸ca˜o, otimiza¸c˜ao, atualiza¸c˜ao, acompanhamento, determina¸ca˜o de problemas ou falhas, recupera¸ca˜o, e por fim, desinstala¸ca˜o ou substitui¸ca˜o, sendo que para cada fase do ciclo de vida h´a um problema e um desafio em especial. Outros obst´aculos surgem no contexto do sistema como um todo e ainda mais se manifestam na rela¸ca˜o entre humanos e o sistema ?.

2.1.7

As rela¸ co ˜es dos elementos autˆ onomos

Em sua forma mais elaborada, a rela¸c˜ao entre os elementos autˆonomos tamb´em ter´a o seu ciclo de vida. Cada fase desse ciclo gera um conjunto de desafios de engenharia e normas de padroniza¸ca˜o. A seguir s˜ao listadas essas normas e por consequˆencia os desafios. • Especifica¸c˜ ao: Um elemento autˆonomo deve ter associado a ele um conjunto de elementos de sa´ıda e entrada que este exija, tudo de forma padronizada, para facilitar a compreens˜ao por parte de outros elementos autˆonomos. Normalmente ser´a registrado um servi¸co que fornece uma descri¸ca˜o de suas capacidades e detalhes sobre seus diret´orios, fazendo com que outros elementos possam por meio desse protocolo se comunicarem com ele. Assim deve-se se estabelecer, ou seja, se especificar uma sintaxe e uma semˆantica padr˜ao para que se comunique com o elemento autˆonomo. • Localiza¸c˜ ao: Um elemento autˆonomo deve ser capaz de localizar servi¸cos de entrada que ele precisa, por sua vez, outros elementos que exigem servi¸cos de que se necessita de sua sa´ıda, devem serem capazes de localizar esse elemento. • Negocia¸c˜ ao: Uma vez que um elemento autˆonomo, encontre outro elemento capaz de 10


fornecer-lhe as informa¸co˜es que este precisa, come¸ca-se ent˜ao a negocia¸ca˜o1 para se obter esse servi¸co. • Disposi¸c˜ ao: Depois de dois elementos chegarem a um acordo, deve-se disponibilizar seus recursos internos. Isso pode ser t˜ao simples quanto verificar em um log, que um elemento em particular poder´a solicitar um servi¸co no futuro, ou pode-se se estabelecer rela¸c˜oes complementares com outros elementos, que tornam-se sub-contratados. • Opera¸c˜ ao: Ap´os a firma¸c˜ao do acordo por ambas as partes, os elementos podem monitorar se este acordo est´a sendo honrado, sendo que caso n˜ao esteja, tente-se estabelecer um novo acordo com outro fornecedor, ou com o mesmo. • Rescis˜ ao: No caso de n˜ao cumprimento ou no caso do fim do curso do acordo firmado, as partes concordam em rescindir o acordo afim de disponibilizar seus recursos internos a outros interessados. No entanto, tal negocia¸ca˜o n˜ao necessariamente precisa ser descartada por completo, pode-se deixar suas informa¸c˜oes armazenadas em arquivos, ou banco de dados (BD) com a finalidade de realizar otimiza¸co˜es ou predi¸c˜oes comportamentais num futuro ?.

2.1.8

Benef´ıcios da Computa¸c˜ ao Autˆ onoma

Segundo pesquisas levantadas pela IBM, o custo para capacitar o pessoal necess´ario para se gerenciar esses ambientes, aproxima-se do custo dos equipamentos e estima-se que este custo ir´a aumentar, ou at´e dobrar em aproximadamente cinco anos. Esse custo ´e um dos principais motivadores da computa¸ca˜o autˆonoma, o qual ao aplic´a-la poder´a ser reduzidos substancialmente, em consequˆencia da redu¸ca˜o da complexidade de gest˜ao e de manuten¸ca˜o ?.

2.1.9

Quest˜ oes do sistema como um todo

Outra quest˜ao importante ´e o n´ıvel de seguran¸ca, privacidade e confian¸ca do sistema, al´em do surgimento de novos tipos de servi¸cos para atender as necessidades de outros elementos autˆonomos. Os elementos autˆonomos precisar˜ao estabelecer e cumprir pol´ıticas de seguran¸ca, assim como ´e feito hoje pelos administradores humanos, isso precisar´a ser feito de forma compreens´ıvel e sem falhas ?. A infraestrutura de sistemas autˆonomos devem deixar elementos autonˆomicos se identificarem, verificar a identifica¸ca˜o de outros elementos com os quais se ter´a uma rela¸c˜ao, verificar se a mensagem foi alterada em trˆansito, e garantir que as partes n˜ao autorizadas n˜ao tiveram acesso `as mensagens. Al´em disso, os sistemas autˆonomos devem ser robustos contra as v´arias formas de ataques. Evitar esses problemas podem exigir uma nova sub-´area da seguran¸ca da informa¸c˜ao, que visa impedir a fraude e a persuas˜ao fraudulenta de elementos autˆonomos ?. 1

Para melhor compreender, o termo negocia¸c˜ao est´a sendo usado amplamente, ou seja, qualquer processo em que um acordo seja alcan¸cado ´e considerado aqui como uma negocia¸c˜ao.

11


2.2

Considera¸c˜ oes Finais

O sucesso da computa¸c˜ao autˆonoma vai depender do grau em que se pode identificar os princ´ıpios universais que abrangem os v´arios n´ıveis de sistemas autˆonomos que podem existir. Definir modelos abstratos adequados para a compreens˜ao, al´em de controlar e projetar o comportamento emergente em sistemas autˆonomos ´e ainda um desafio no centro da computa¸c˜ao autˆonoma. Assim, como a compreens˜ao do comportamento local ao global ´e uma condi¸ca˜o ´ necess´aria para a proje¸ca˜o de sistemas autonˆomicos, no entanto, n˜ao ´e a condi¸ca˜o suficiente. E preciso saber, ou melhor, descobrir como explorar a rela¸ca˜o inversa, como definir um conjunto de regras de comportamento e de intera¸c˜oes que se incorporadas a elementos individuais autˆonomos, vai induzir a um comportamento global desejado. Tal invers˜ao ´e altamente n˜ao trivial, pois a n˜ao-linearidade do comportamento emergente dificulta bastante tal solu¸c˜ao ?. Ainda n˜ao se tˆem conhecimento de uma arquitetura, ou modelo capaz de suprir todos requisitos da computa¸c˜ao autˆonoma, o que se tˆem at´e ent˜ao s˜ao modelos que atendem a algumas das exigˆencias da computa¸ca˜o autˆonoma, mas que n˜ao comportam como se deseja em outras situa¸co˜es. Esse ´e um desafio ainda em especula¸c˜ao por pesquisadores, j´a que at´e o momento, os trabalhos mais relevantes da a´rea n˜ao conseguiram atender de forma satisfat´oria os requisitos da computa¸ca˜o autˆonoma ? ?.

12


Cap´ıtulo

3 Redes Neurais Artificiais

O final da d´ecada de 80 marcou o ressurgimento das redes neurais artificiais (RNA’s), tamb´em conhecidas como conexionismo, ou sistemas de processamento paralelamente distribu´ıdo ?. Esse tipo de sistema ´e uma forma de computa¸ca˜o n˜ao algor´ıtmica, em que, num certo n´ıvel, relembra a estrutura do c´erebro humano, devido a sua capacidade de emular estruturas neurais biol´ogicas (?, apud Braga et.al. 1998) (?, apud de P. Braga et. al. 2000, Fausett 1994). Tais sistemas s˜ao compostos de unidades de processamento simples, chamadas de neurˆonios, n´os, c´elulas ou unidades, que calculam fun¸c˜oes matem´aticas, normalmente n˜ao lineares ??. Tais neurˆonios s˜ao dispostos em uma ou mais camadas, s˜ao interligados por conex˜oes geralmente unidimensionais, as quais apresentam pesos associados utilizados para armazenar o conhecimento representado pela rede e para ponderar as entradas recebidas pelos neurˆonios ??. O conhecimento armazenado refere-se a informa¸c˜ao armazenada ou a modelos utilizados para interpretar, predizer e responder adequadamente ao problema considerado. O aprendizado consiste na aquisi¸ca˜o e na habilidade de utilizar tal conhecimento (?, apud Witten and Frank 1999). Algoritmos computacionais ao implementarem tais t´ecnicas de aprendizado de m´aquina tem como objetivo, encontrar e descrever padr˜oes a partir de dados obtidos do ambiente. Nas redes neurais o aprendizado pode ser realizado de diferentes maneiras, seguindo paradigmas espec´ıficos. Exemplos de tais paradigmas s˜ao, simb´olico, estat´ıstico, baseado em instˆancias, conexionista e evolutivo. A tarefa de aprendizado desses paradigmas consiste em escolher ou adaptar os parˆametros de representa¸ca˜o do modelo. Independentemente deste, os algoritmos de treinamento tem a tarefa principal de aprender um modelo a partir do ambiente e manter esse modelo consistente de modo a atingir os objetivos de sua aplica¸ca˜o ?. Logo, o aprendizado de m´aquina, consiste na utiliza¸c˜ao e desenvolvimento de t´ecnicas computacionais capazes de extrair conhecimentos a partir de amostras de dados (?, apud Mitchel 1997). Hoje existem diversos m´etodos para se realizar o treinamento de uma RNA, os quais podem 13


ser agrupados basicamente em dois m´etodos principais, sendo estes, aprendizado supervisionado, e n˜ao-supervisionado (?, apud Braga et. al. 1998). H´a tamb´em outros m´etodos bastante conhecidos, desses destacam-se o aprendizado por refor¸co e aprendizado por competi¸c˜ao, onde o primeiro ´e um caso especial de aprendizado supervisionado e o segundo ´e um caso especial de aprendizado n˜ao-supervisionado ?. No aprendizado supervisionado se fornece a RNA um par de dados, o qual indica a entrada e a sa´ıda desejada, tendo como objetivo apenas ajustar os pesos da rede de modo que se possa mapear a entrada e a sa´ıda que foram fornecidas. A cada padr˜ao de entrada que se submete a rede, compara a sa´ıda calculada com a desejada, ajustando-se os pesos da conex˜ao para minimizar o erro (?, apud Braga et. al. 1998). No aprendizado n˜ao-supervisionado apenas os padr˜oes de entrada s˜ao fornecidos a rede. A partir do momento em que a rede estabelece uma harmonia com as regularidades estat´ısticas da entrada, desenvolve-se nela uma habilidade de formar representa¸c˜oes internas. Essas representa¸co˜es codificam as caracter´ısticas dos dados de entrada e criam novas classes, ou grupos, automaticamente. Este tipo de aprendizado s´o se torna poss´ıvel caso haja redundˆancia nos dados fornecidos a rede, uma vez que n˜ao haja tal, torna-se imposs´ıvel encontrar quaisquer padr˜oes ou caracter´ısticas nestes dados (?, apud Braga et. al. 1998). Existem v´arias aplica¸co˜es nas quais se necessita de que a rede seja treinada sem que o usu´ario interfira, sendo que essas tem potencial aplica¸ca˜o em problemas de reconhecimento de padr˜oes e classifica¸ca˜o de dados. Neste caso, se fornece a rede apenas o conjunto de padr˜oes de entrada, de modo que as redes definam seus parˆametros por si pr´oprias, sem aux´ılio externo. Esta ´e a id´eia dos modelos auto-organizativos, os quais fazem uso do paradigma de aprendizado n˜aosupervisionado. Tais redes partem do princ´ıpio da descoberta de caracter´ısticas redundantes, ou padr˜oes significativos na entrada das informa¸co˜es, utilizando para tal, um conjunto de regras locais para ajuste de seus pesos ? ?. Segundo (?, apud Braga et. al. 1998), um dos princ´ıpios da utiliza¸c˜ao de modelos autoorganizativos para problemas de reconhecimento de padr˜oes ´e o de que padr˜oes que compartilham caracter´ısticas comuns uns aos outros podem ser categoricamente agrupados. Cada grupo de padr˜oes representaria uma e apenas uma classe (muito embora uma mesma classe possa vir a ser representada por mais de um grupo). Esse agrupamento ´e realizado sem interven¸ca˜o externa, atrav´es da identifica¸ca˜o de caracter´ısticas redundantes nos dados de entrada.

3.1

Redes Neurais ART

Segundo (?, apud Silva 2003), as redes neurais artificiais baseadas em modelos ART (Teoria da Ressonˆancia Adaptativa) s˜ao sistemas que auto-organizam padr˜oes de entrada em classes de reconhecimento, mantendo equil´ıbrio entre as propriedades de plasticidade e de estabilidade. A plasticidade define a capacidade da rede na cria¸ca˜o de novas classes de reconhecimento e a estabilidade define a capacidade da rede em agrupar padr˜oes similares na mesma classe de reconhecimento. Uma outra propriedade importante nas redes neurais artificiais ´e a generali14


za¸ca˜o, pois essa permite a classifica¸ca˜o de dados de entrada anteriormente desconhecidos ?. Ao se treinar uma rede com um determinado conjunto de padr˜oes espera-se que esta produza sa´ıdas coerentes para quaisquer entradas posteriores. No entanto, o conhecimento da rede n˜ao ´e totalmente fixo e pode modificar-se a medida que o tempo passa e novos padr˜oes representando o estado atual da aplica¸c˜ao v˜ao sendo apresentados a rede. Para aplica¸co˜es nas quais o conhecimento ´e dinˆamico, o desempenho de certas redes neurais pode decair gradativamente, a medida que o conhecimento evolui. O controle de tal discrimina¸ca˜o do conhecimento ´e responsabilidade da plasticidade, que deve prover a rede capacidade de adaptar-se indefinidamente aos novos padr˜oes de entrada (?, apud Carpenter and Grossberg 1998). Uma abordagem para solucionar esse problema seria treinar a rede novamente submetendo desta vez os novos padr˜oes de entrada, ou trein´a-la novamente com os padr˜oes de entrada iniciais juntamente com os atuais (?, apud de P. Braga et. al. 2000). No entanto esta abordagem poderia ocasionar a perda de informa¸c˜oes anteriormente aprendidas. Al´em disso, em determinadas situa¸c˜oes esse procedimento ´e invi´avel, principalmente quando os padr˜oes de entrada iniciais n˜ao se encontram mais dispon´ıveis, ou h´a restri¸co˜es quanto ao tempo de resposta da rede. Logo, o aprendizado deve ser, n˜ao somente pl´astico, mas tamb´em est´avel. Para ser est´avel a rede deve ser capaz de adquirir novos conhecimentos sem perder o conhecimento anteriormente armazenado. Tal conflito ´e conhecido como dilema estabilidade/plasticidade. Para solucionar esse problema, busca-se a defini¸ca˜o de uma arquitetura de RNA incremental, de modo que n˜ao se fa¸ca necess´ario recome¸car o treinamento da rede quando chegar um novo padr˜ao de entrada e conserve o conhecimento anteriormente obtido, estendendo-o ?. A arquitetura ART foi desenvolvida visando solucionar esse dilema ?. Embora hoje existam vers˜oes de aprendizado supervisionado, a arquitetura das redes ART ´e do tipo n˜aosupervisionado. Al´em disso, o aprendizado nas redes ART n˜ao termina, j´a que esta pode adaptar-se a dados de entrada, criando novas unidades de processamento para aprender padr˜oes quando isso se fizer necess´ario. Uma outra caracter´ıstica das redes ART ´e que elas s˜ao projetadas de modo que o usu´ario tenha controle sobre a similaridade de padr˜oes agrupados em uma mesma unidade de sa´ıda. Esse controle define o quanto a rede ser´a sens´ıvel ao avaliar os padr˜oes de entrada, gerando mais, ou menos, categorias, dependendo do controle atribu´ıdo a sua similaridade ?.

3.1.1

Arquitetura das Redes Neurais ART

A arquitetura das redes neurais ART consiste basicamente em dois subsistemas, sendo estes o de aten¸ca˜o e o de orienta¸ca˜o. Esses sistemas, assim como a estrutura da RNA ART-2, s˜ao apresentados na figura 3.1, esses procedimentos s˜ao de grande importˆancia para o aprendizado da rede, j´a que suas intera¸co˜es proveem a esta o que se conhece por mem´oria de longo prazo. Os subsistemas, assim como seus procedimentos s˜ao descritos a seguir, de modo a facilitar o entendimento da rede. O subsistema de aten¸ca˜o ´e composto de trˆes camadas, sendo a camada de pr´e-processamento 15


Figura 3.1: Estrutura da rede ART-2 ?

das entradas (F0 ), a de representa¸ca˜o das entradas (F1 ) e a de representa¸c˜ao de classes (F2 ). F0 e F1 tem como sua principal fun¸ca˜o o processamento inicial do vetor de entradas. Este pode ser tanto simples quanto envolver uma s´erie de opera¸co˜es. Essas opera¸c˜oes podem ser de normaliza¸ca˜o e filtragem de ru´ıdos, dependendo da arquitetura da rede, que tamb´em controla a quantidade de unidades de processamento dessas camadas ?. A rede ART-1 permite o agrupamento de padr˜oes codificados atrav´es de vetores bin´arios, al´em de permitir tamb´em que o usu´ario controle diretamente, a similaridade entre esses padr˜oes. Essa rede tem o processo de aprendizado r´apido, de modo que os pesos alcan¸cam o seu equil´ıbrio a cada apresenta¸ca˜o dos padr˜oes. A arquitetura da ART-1 ´e composta pelas camadas F1 e F2 (camada de sa´ıda) e uma unidade de reset, respons´avel pelo controle da similaridade entre os padr˜oes que s˜ao aprendidos por um mesmo neurˆonio. Nessa rede n˜ao se faz necess´ario a camada F0, uma vez que os padr˜oes de entrada apresentados na rede s˜ao bin´arios, dispensando assim o pr´e-processamento inicial. J´a na arquitetura da RNA ART-2 as camadas F0 e F1 est˜ao presentes e se diferenciam de sua vers˜ao anterior para que possam acomodar os padr˜oes 16


representados por valores cont´ınuos. Nessa vers˜ao, F0 e F1 possuem fun¸co˜es de normaliza¸ca˜o e supress˜ao de ru´ıdos. A camada F0 tem quatro unidades de processamento (U, V, W e X ) e a F1 tem seis (W, X, U, V, P e Q). H´a uma unidade suplementar de processamento localizada entre as unidades W e X. Esta recebe o sinal de W, calcula a norma do vetor w e envia seu sinal para X. H´a tamb´em outras unidades de processamento suplementar entre P e Q, V e U ?. Em F2, as entradas s˜ao agrupadas em classes, ou categorias, nas quais o n´ umero de neurˆonios ´e diretamente proporcional ao n´ umero de padr˜oes j´a identificados com as entradas anteriores. A quantidade de unidades de processamento s˜ao relacionadas com a quantidade de prot´otipos criados para representar os dados de entrada. Essas unidades de processamento s˜ao criadas de forma dinˆamica, podendo ser criadas a medida que se necessite ?. F1 se liga a camada F2 por meio de dois conjuntos direcionados. F1 envia para F2 sinais de ativa¸ca˜o por meio de pesos bottom-up, onde esses se conectam aos neurˆonios da camada F2, sendo que o i-´esimo peso bottom-up que se liga ao j-´esimo neurˆonio da camada F2 ´e chamado de bij. Tais conex˜oes s˜ao chamadas de pesos feed-forward. Em resposta a F1, F2 envia sinais top-down, chamados de tij, ou conex˜oes feedback ?. O subsistema de orienta¸c˜ao ´e formado pelo reset, que ´e um mecanismo que controla o n´ıvel de similaridade do que ´e agrupado em cada neurˆonio de sa´ıda. Este desempenha um importante papel na rede, j´a que ´e o respons´avel pela dinˆamica de movimenta¸ca˜o dos dados na rede durante o processo de aprendizado ?.

3.1.2

Aprendizado das Redes Neurais ART

Ao receber um padr˜ao de entrada, este ´e pr´e-processado na camada F0 da rede, que ap´os o pr´e-processamento o envia a camada F1. Ao receber o padr˜ao tratado em F0, F1 calcula sua ativa¸ca˜o para cada neurˆonio da camada F2. O neurˆonio J com maior atividade em F2 torna-se um candidato para codificar o padr˜ao de entrada, logo ´e percept´ıvel que o aprendizado nas redes neurais ART ´e competitivo. Tendo ent˜ao um candidato a codificar um padr˜ao de entrada, os demais neurˆonios tornam-se inativos. A camada de entrada ent˜ao combina a informa¸c˜ao de entrada e o neurˆonio candidato a codific´a-la. Este neurˆonio ent˜ao torna-se vencedor aprendendo o padr˜ao de entrada. No entanto isso depende da similaridade entre o vetor de entrada e o de pesos tij. A decis˜ao sobre o quanto similar ´e preciso ser o vetor de entrada com o de pesos fica a cargo do reset, que faz a compara¸ca˜o proveniente dos sinais da camada F1. No caso da similaridade ser menor que um dado limiar, o neurˆonio candidato torna-se inibido e se escolhe um novo candidato. Este processo ´e repetido at´e que se encontre algu´em que possa representar o padr˜ao passado, ou seja, que tenha a similaridade acima do limiar, ou at´e que se teste todos os neurˆonios da camada e todos tornem-se inibidos ?. O reset ´e calculado de acordo com a similaridade entre o vetor de entrada e o de pesos do neurˆonio candidato. Onde a similaridade ´e controlada pelo parˆametro de vigilˆancia, representado pela letra grega ρ. No caso do neurˆonio candidato ser capaz de representar o vetor de 17


entrada este vence a competi¸c˜ao. Neste caso combina-se os dois vetores, produzindo um novo vetor de pesos.

3.1.3

Rede Neural ART-2A

A rede neural ART-2A reproduz eficientemente o comportamento essencial da rede ART-2, permitindo classifica¸c˜ao de padr˜oes representados por vetores com valores bin´arios ou cont´ınuos (?, apud Carpenter el. al. 1991). No entanto, essa vers˜ao da rede reproduz a dinˆamica do aprendizado r´apido e implementa um m´etodo eficiente para realizar o aprendizado lento, permitindo uma classifica¸ca˜o de padr˜oes mais r´apida ?. Al´em de que essa vers˜ao opera, computacionalmente, de duas a trˆes vezes mais r´apido que a anterior, a ART-2 (?, apud Frank et. al. 1998 and Peper et. al. 1993). Na rede ART-2A as v´arias unidades de processamento presentes na camada F1 da rede ART-2 s˜ao substitu´ıdas por um pequeno conjunto de normaliza¸co˜es e filtragem dos dados. Sua condi¸ca˜o de parada pode ser o t´ermino de um n´ umero de ciclos de treinamento1 ou a verifica¸c˜ao da estabilidade dos pesos na rede ?. A ART-2A trabalha apenas com valores de entrada positivos. Inicialmente o padr˜ao de entrada I ´e normalizado `a unidade euclidiana utilizando o operador ℵ. Essa normaliza¸ca˜o faz com que os vetores de entrada se reduzam para a mesma magnitude preservando seu aˆngulo. Com isso a rede define a busca pela similaridade entre o padr˜ao e os prot´otipos2 por meio desses aˆngulos. ´ sugerido nesse pr´e-processamento um m´etodo adicional para supress˜ao de ru´ıdos E (?, apud Carpenter et. al. 1991). No entanto tal m´etodo s´o faz sentido se os componentes do vetor de entrada, importantes para a classifica¸ca˜o realizada pela rede, forem codificados em valores elevados (i.e., que ultrapassam o limiar θ) (?, apud Frank et. al. 1998). O valor deste umero m´aximo de neurˆonios limiar deve estar contido no intervalo 0 ≤ θ ≤ √1n , onde n ´e o n´ (categorias) da camada F2. Um outro detalhe ´e que deve-se marcar como zero os componentes do vetor de entrada que n˜ao excedam tal limiar, de modo a se trabalhar somente com entradas positivas ?. O parˆametro α define o n´ıvel m´aximo de profundidade de busca por um neurˆonio candidato. Desse modo, quando ocorrer de α = 0, s˜ao verificados todos os neurˆonios da camada F2 antes de se escolher um neurˆonio comprometido como vencedor. α deve estar contido no intervalo de 0 ≤ α ≤ √1m , onde m ´e o tamanho do vetor de entradas. Logo, a ressonˆancia e a adapta¸ca˜o ocorrem quando o candidato J ´e um neurˆonio que ainda n˜ao foi aprovado para representar um outro padr˜ao, ou se a ativa¸ca˜o do neurˆonio candidato Tj for menor ou igual ao parˆametro de vigilˆancia ρ ?. J´a o parˆametro β ´e quem define a taxa de aprendizado da rede. Este deve se conter no intervalo 0 ≤ β ≤ 1. Sendo que quando β = 0, a rede opera de modo classificat´orio. Nesse 1

Um ciclo de treinamento corresponde ` a apresenta¸c˜ao de um conjunto de padr˜oes a rede. Frequentemente, o treinamento corresponde ` a apresenta¸c˜ ao c´ıclica de um conjunto de padr˜oes, at´e que os valores dos pesos n˜ ao apresentem uma altera¸c˜ ao significativa ao final do ciclo. 2 Pesos dos neurˆ onios da camada de representa¸c˜ao F2.

18


modo, a rede devolver´a um neurˆonio J vencedor, no entanto, n˜ao aprender´a o novo padr˜ao. Esse modo de opera¸ca˜o ´e interessante quando busca-se a classifica¸ca˜o de um conjunto de entradas sem que se fa¸ca a atualiza¸c˜ao da rede. J´a quando β = 1, a rede opera no modo de aprendizado r´apido. Nesse modo os vetores de pesos do neurˆonio J s˜ao substitu´ıdos sem que se fa¸ca a adapta¸ca˜o deste. Os valores de entradas que estejam contidos no intervalo de 0 ≤ β ≤ 1 fazem com que a rede opere no modo de aprendizado lento, adaptando os pesos gradativamente aos padr˜oes de entrada. Logo, quanto mais pr´oximo de zero forem estes, mais suave ser´a o aprendizado e quanto mais pr´oximo de um, mais agressivo este ser´a. O parˆametro β pode variar durante a apresenta¸ca˜o de um padr˜ao, dependendo do n´ umero de ciclos de treinamento. Contudo deve-se tomar cuidado para que este n˜ao seja usado na forma β ∼ = 1, j´a que quando se ´e desse modo, o prot´otipo tende a desviar dos padr˜oes inv´es de convergir para uma m´edia dos padr˜oes agrupados na classe ?. Por u ´ltimo tem-se o parˆametro ρ, sendo este quem define o n´ umero de classes que ser˜ao p criadas na rede. O valor deste forma uma fronteira de decis˜ao circular de raio igual a 2(1 − ρ) em torno do vetor de prot´otipos de cada classe (?, apud He et. al. 2003). Onde se agrupa todos os padr˜oes de entrada numa mesma classe quando ρ = 0 e cria-se uma classe para cada padr˜ao de entrada distinto apresentado a rede quando ρ = 1. O algoritmo que implementa o aprendizado da rede neural artificial ART-2A ´e descrito a seguir:

19


Algoritmo 1 Treinamento da ART-2a 1: marque a vari´ avel reset como verdadeiro 2: α ← (Recupere o Valor de α) . Controla a profundidade da busca 3: β ← (Recupere o Valor de β) . Controla a taxa de aprendizado 4: ρ ← (Recupere o Valor de ρ) . Controla o grau de similaridade 5: θ ← (Recupere o Valor de θ) . Supress˜ao de ru´ıdos 6: while condi¸ ca˜o de parada for falsa do 7: for para cada padr˜ao de entrada do 8: execute o pr´e-processamento no vetor de entrada I 0 (camada F0 ) 9: I ← ℵ(F0 (ℵ(I0 ))) 10: onde ℵ e F0 descrevem as seguintes opera¸co˜es: 11: ℵ(x ) ≡ x ||x|| 12: F0 (x) ← { x se x > θ, 0 caso contr´ario 13: calcule os sinais para as unidades da camada F2 P 14: Tj ← I wij se j ´e um neurˆonio comprometido, ou α j I j caso contr´ario 15: while reset do 16: encontre um neurˆonio candidato J de forma que yJ ≥ yj , para aprender a entrada corrente (i.e., o neurˆonio na camada F2 , n˜ao inibido, com a maior ativa¸ca˜o) 17: testar a condi¸ca˜o de reset: 18: if yj > ρ then 19: reset ← falso 20: else 21: neurˆonio candidato J ´e inibido: 22: Yj ← -1 23: reset ← verdadeiro 24: end if 25: end while 26: aprender o padr˜ao, modificando os pesos do neurˆonio vencedor: 27: w novo ← I se j ´e um neurˆonio n˜ao comprometido ou ℵ(βℵΨ + (1 - β)zvelho caso j Ji contr´ario, sendo que Ψi ≡ I i se w velho > 0, ou 0 caso contr´ario Ji 28: marque o neurˆonio como comprometido 29: end for 30: end while

3.2

Considera¸c˜ oes Finais

Uma vez visto que a ART-2A ´e uma rede neural artificial cuja uma de suas principais caracter´ısticas ´e seu alto desempenho computacional, trabalhando de modo competitivo n˜aosupervisionado e que foi projetada para resolver o dilema da estabilidade/plasticidade podendo se adicionar novas informa¸c˜oes a sua base de modo a realizar o aprendizado incremental, e que 20


ela trabalha com problemas de classifica¸ca˜o, esta pode vir a ser uma boa alternativa para se trabalhar a Autoprote¸ca˜o, uma vez que atende alguns de seus requisitos, tais como a velocidade, a possibilidade de se expandir o conhecimento armazenado e o fato de n˜ao ser necess´ario a interven¸ca˜o humana.

21


22


Cap´ıtulo

4 Aplica¸c˜ ao da ART-2A na Autoprote¸c˜ ao

Neste cap´ıtulo ser˜ao descritos o funcionamento das aplica¸co˜es desenvolvidas e como estas se comunicam, sendo que ap´os algumas considera¸co˜es iniciais, tem-se uma descri¸ca˜o sobre o gerador de processos, assim como a estrutura e a sintaxe de seus arquivos de entrada e sa´ıda. Tamb´em explica-se nesse cap´ıtulo como funciona o aplicativo de autoprote¸ca˜o desenvolvido, tanto em sua fase de treinamento, quanto em seu trabalho de classifica¸c˜ao, seguindo com a estrutura e sintaxe de seus arquivos e por fim, as considera¸co˜es finais

4.1

Considera¸c˜ oes iniciais

A autoprote¸ca˜o ´e uma das propriedades da computa¸ca˜o autˆonoma que visa proteger o sistema de ataques ou de erros em cascata que n˜ao puderam ser tratados com a autocura. Para tanto, deve-se haver um monitoramento r´ıgido do sistema, al´em de um conhecimento consider´avel sobre as aplica¸c˜oes que ali executam, o que pode modificar-se constantemente. Afim de prover tais recursos foi implementado nesse trabalho a rede neural artificial ART-2A, cujas caracter´ısticas de generaliza¸ca˜o do conhecimento e capacidade de expandir o que j´a foi aprendido anteriormente sem a necessidade de um novo treinamento, tudo isso de forma n˜aosupervisionada, atende os requisitos de conhecer as aplica¸co˜es, adaptar-se a` mudan¸cas de ambiente e autonomia, outra caracter´ıstica dessa rede ´e o alto desempenho computacional, o que provˆe respostas r´apidas `a um ambiente de muitas mudan¸cas. Foram desenvolvidos nesse trabalho dois aplicativos, sendo um desses o gerador de processos, que provˆe o conjunto de dados de entrada a` rede, que foi o outro aplicativo desenvolvido e o respons´avel pela autoprote¸ca˜o. A arquitetura adotada nesse trabalho foi a utiliza¸ca˜o de arquivos de logs para realizar a comunica¸ca˜o entre as aplica¸co˜es, podendo ser estendido `a toda a computa¸ca˜o autˆonoma, uma 23


vez que a sa´ıda de uma propriedade ou aplica¸ca˜o, pode ser a entrada de outra. Neste projeto, o gerador de processos usa dois arquivos de entrada, um contendo a m´edia das caracter´ısticas de um processo em um dado intervalo e outro com suas poss´ıveis varia¸co˜es. A partir da´ı ´e gerado um novo arquivo contendo as deriva¸c˜oes obtidas com os dois arquivos de entrada, o novo arquivo gerado ´e o dataset de entrada para a autoprote¸ca˜o, a qual ao receber esse arquivo treina a rede neural artificial. Essa por sua vez gera um arquivo de log que ´e sua base de conhecimento, uma nova execu¸ca˜o da ART-2A faz com que ela leia o arquivo de log e feche seu treinamento, trabalhando ent˜ao apenas de modo classificat´orio. A partir desse ponto as novas entradas na rede n˜ao ser˜ao aprendidas, mas somente, classificadas em poss´ıveis de serem representadas pelos padr˜oes j´a aprendidos, ou n˜ao. No segundo caso, o processo ´e considerado um processo malicioso e ´e enviada uma mensagem de bloqueio do processo, passando-se seu identificador (ID) e o estado atual de suas demais caracter´ısticas, conforme pode ser visto na tabela 4.1. Solicita¸c˜ ao de Suspend: 8.0 Suspend: 2.0 Suspend: 4.0

suspens˜ ao 32.0 14.0 42.0 37.0 6.0 8.0

para 3.0 9.0 4.0

processos suspeitos 12.0 3.0 - line: 7 43.0 25.0 - line: 11 14.0 3.0 - line: 13

Tabela 4.1: Exemplo de uma solicita¸ca˜o de suspens˜ao para um processo suspeito Nas pr´oximas se¸co˜es ser˜ao detalhados o desenvolvimento e utiliza¸ca˜o dos aplicativos, al´em da estrutura dos arquivos de entrada e sa´ıda.

4.2

Gerador de Processos

O gerador de processos ´e o respons´avel por gerar a entrada da rede neural artificial, foram implementadas duas vers˜oes do gerador, a primeiro faz uso de dois arquivos de entrada, os quais detalham as caracter´ısticas dos processos a serem gerados, sendo que em um desses arquivos est´a a m´edia das caracter´ısticas do processo observada em um dado instante de tempo, no outro arquivo est´a a varia¸c˜ao dessas caracter´ısticas. A partir desses dois arquivos, ao se executar o aplicativo, ´e solicitado quantos processos ser˜ao gerados para cada entrada. Nesse ponto ao se passar a quantidade desejada, gera-se um novo arquivo, contendo os valores derivados. Esse novo arquivo ´e a entrada utilizada para o treinamento e valida¸c˜ao da autoprote¸ca˜o. A segunda vers˜ao desenvolvida faz uso de, al´em dos dois arquivos j´a citados, um arquivo de configura¸ca˜o, o qual mant´em o gerador funcionando ou encerra-o, al´em de determinar de quanto em quanto tempo ele se atualiza e tamb´em de quanto em quanto tempo ´e gerado um novo processo. Esse segundo modelo, n˜ao foi utilizado para a realiza¸ca˜o do treinamento ou testes, j´a que o arquivo de entrada da rede ´e sobrescrito a cada execu¸ca˜o, perdendo desse modo as informa¸co˜es que mais tarde seriam utilizadas para a valida¸c˜ao da rede. A gera¸c˜ao dos processos ´e realizada a partir de uma distribui¸c˜ao de Poisson, sendo que ao se introduzir uma nova entrada no gerador, ´e criado aleatoriamente a varia¸ca˜o desse valor, 24


obedecendo uma faixa pr´e-estabelecida que nada mais ´e que o limite do valor de variˆancia do processo. A partir da obten¸c˜ao desse novo valor, este ´e somado ou subtra´ıdo ao valor mediano das caracter´ısticas do processo correspondente. Desse modo, verifica-se qual a probabilidade de ocorrˆencia daquele novo valor por meio da distribui¸ca˜o de Poisson, sendo que uma vez que se haja uma chance maior que 10% de ocorrˆencia, considera-se que o novo valor ´e aceit´avel e que h´a boas condi¸c˜oes de ocorrˆencia. A distribui¸c˜ao de Poisson ´e dada pela f´ormula P(x ) = (λx .e −λ ) / x ! onde x ´e o n´ umero de ocorrˆencia do evento, λ ´e a taxa de amostragem desse evento, ou seja, a m´edia de ocorrˆencia em um dado intervalo de tempo, e e ´e a constante natural (e ≈ 2,71828), tal c´alculo ´e utilizado para verificar a probabilidade de ocorrˆencia de um n´ umero x de eventos em uma taxa anteriormente observada, sendo que a ocorrˆencia de um n˜ao influencie na ocorrˆencia de outro, ou seja, s˜ao independentes e aparentemente aleat´orios. Esse processo ´e realizado para todas as caracter´ısticas de todos os processos submetidos ao gerador.

4.2.1

Estrutura dos arquivos de entrada e sa´ıda

Existem como j´a descrito anteriormente, dois arquivos de entrada para a gera¸c˜ao dos processos, um arquivo de configura¸ca˜o, o qual ´e usado apenas por uma vers˜ao do gerador e por fim o arquivo de sa´ıda, o qual cont´em os novos valores para os processos. Os arquivos que armazenam as informa¸c˜oes sobre as caracter´ısticas dos processos e suas varia¸co˜es s˜ao respectivamente process.sim e variancia.sim, cuja extens˜ao ‘.sim’ 1 foi adotada como padr˜ao pelo gerador. O resultado gerado ´e chamado de monitor.sim e possui a mesma estrutura dos dois anteriores. Exemplos desses arquivos podem ser vistos no apˆendice A. A estrutura definida para tais arquivos ´e uma matriz, onde cada linha ´e um processo e cada coluna, a qual ´e separada por tabula¸co˜es, ´e uma caracter´ıstica do processo. A ordem dessas caracter´ısticas tamb´em ´e importante, sendo que segue-se do seguinte modo: ID (Identificador), MIPS (Milhares de Instru¸co˜es Por Segundo), mem´oria, swap e a leitura e escrita em disco. Essas caracter´ısticas sofrem uma certa diferen¸ca de um arquivo para outro. Enquanto que para o arquivo de entrada variancia.sim todos os n´ umeros devem ser inteiros, no arquivo process.sim, o MIPS, a leitura e a escrita em disco podem possuir casas decimais, no entanto, o ID, a mem´oria e a swap, s˜ao obrigatoriamente valores inteiros. O arquivo config.sim possui uma estrutura diferente dos demais, nele se trabalham trˆes vari´aveis, sendo essas: timeWaiting, running e updateTime as quais s˜ao respectivamente respons´aveis pelo intervalo de tempo para gera¸ca˜o de novos valores, execu¸ca˜o e encerramento do aplicativo e por fim, de quanto em quanto tempo, checa-se se o config.sim sofreu alguma altera¸c˜ao e caso tenha sofrido altera-se as vari´aveis modificadas. As vari´aveis que controlam o tempo s˜ao dadas em ms (milisegundos), j´a a vari´avel running ´e uma vari´avel booleana, a qual aceita apenas os valores true (para manter o aplicativo em execu¸ca˜o) e false (para encerr´a-lo). A sintaxe desse arquivo ´e definida como, vari´avel seguida do sinal de igualdade (=), que ´e 1

Apesar da extens˜ ao adotada pelo gerador de processos, seus arquivos possuem uma estrutura simples, que pode ser lida por qualquer aplicativo habilitado a ler arquivos simples, no entanto para a cria¸c˜ao desse tipo de arquivo, deve-se usar um editor que crie arquivos puros, sem nenhum tipo de informa¸c˜oes ocultas que possam vir a atrapalhar o gerador (por exemplo: nano).

25


seguido pelo valor correspondente a vari´avel, que por fim ´e seguido por um ponto-e-v´ırgula (;), o qual foi adotado como um sinal delimitador. Para a realiza¸ca˜o de coment´arios utiliza-se o #, usando-se um para cada linha de coment´ario. Essas vari´aveis devem estar dispostas uma em cada linha, sendo que a ordem para dispˆo-las ´e arbitr´aria. ´ importante que todos esses arquivos estejam um diret´orio acima do diret´orio onde se E encontra o aplicativo.

4.3

Autoprote¸c˜ ao

O aplicativo que provˆe a autoprote¸c˜ao faz uso de dois arquivos de entrada, tanto em sua fase de aprendizado quanto em seu trabalho de classifica¸ca˜o. Na primeira fase faz-se a leitura do arquivo de configura¸ca˜o, o qual indica o diret´orio do conjunto de dados para se realizar o treinamento. J´a no trabalho de classifica¸c˜ao faz-se uso de um arquivo de log, o qual indica onde buscar o arquivo que cont´em os processos a serem classificados. Tanto o arquivo de configura¸c˜ao, quanto o arquivo de log devem ficar um diret´orio acima do aplicativo, j´a o conjunto de dados e o arquivo de entrada que cont´em os processos a serem classificados em intrusos ou n˜ao intrusos podem estar em qualquer diret´orio, desde que este esteja devidamente indicado nos arquivos de configura¸ca˜o e de log. Deste modo, atende-se o requisito de especifica¸ca˜o de um elemento autˆonomo, o qual define que cada um desses elementos devem ter associados a eles um conjunto de arquivos de entrada e sa´ıda. Atende-se tamb´em o requisito que diz a respeito de padroniza¸c˜ao, uma vez que tanto os arquivos de entrada, quanto os de sa´ıda possuem uma sintaxe padr˜ao, a qual ser´a apresentada na se¸ca˜o 4.3.3. Uma outra exigˆencia atendida ´e a de que um elemento autˆonomo deve ser capaz de localizar os servi¸cos de entrada de que ele necessite, isso faz-se poss´ıvel j´a que os elementos de que ele precisa est˜ao um n´ıvel acima do diret´orio do aplicativo e a partir desses, pode-se localizar outros mais necess´arios. As demais exigˆencias descritas como negocia¸c˜ao, disposi¸ca˜o, opera¸c˜ao e rescis˜ao n˜ao est˜ao implementadas de acordo com o que ´e proposto j´a que n˜ao h´a outro elemento autˆonomo para se negociar, sendo que as negocia¸co˜es aqui realizadas s˜ao feitas atrav´es de um acordo com o gerador e partindo-se do princ´ıpio que o gerador n˜ao ´e um dos elementos autˆonomos propostos, diz-se que essas caracter´ısticas n˜ao foram implementas, apesar de se ter condi¸co˜es de negocia¸ca˜o, disposi¸ca˜o, opera¸ca˜o e rescis˜ao entre a autoprote¸ca˜o e o gerador de processos bastante similares.

4.3.1

Treinamento da Rede

O treinamento da rede ocorre uma vez que se execute o aplicativo e o mesmo n˜ao consiga localizar nenhum arquivo de log no diret´orio acima, faz-se ent˜ao a escolha pelo arquivo de configura¸ca˜o, o qual possui em sua estrutura um total de seis vari´aveis, sendo essas, Input File, Rho (ρ), Beta (β), Theta (θ), Alpha (α) e Epochs, as quais definem respectivamente, o diret´orio aonde se encontra o conjunto de dados para a realiza¸c˜ao do treinamento da rede, o valor da vari´avel de controle de similaridade para agrupamentos de padr˜oes em um mesmo grupo, a taxa de aprendizagem da rede, o valor da supress˜ao de ru´ıdos, o n´ıvel de profundidade da busca pelo 26


neurˆonio ideal e por fim, o n´ umero de ´epocas de treinamento. Uma vez que se tenha lido o arquivo de configura¸ca˜o e ajustado os valores das vari´aveis da rede com as que ele cont´em, faz-se ent˜ao a busca pelo conjunto de dados indicado na vari´avel Input File. Ao ler tal arquivo d´a-se in´ıcio ao treinamento da rede. Obtˆem-se ent˜ao o primeiro padr˜ao apresentado pelo dataset e marca-o como sendo o vetor de fontes, ap´os feito isso, ajusta-se as ativa¸c˜oes para seus valores ´ ent˜ao padr˜oes, em seguida a camada F1 ´e atualizada e envia-se sinais para a camada F2. E iniciada a busca pelo neurˆonio vencedor, sendo que uma vez que se tenha escolhido um neurˆonio para representar um padr˜ao e esse n˜ao foi capaz de tal, ele ´e marcado como inibido e faz-se uma nova busca pelo neurˆonio ideal. Esse ciclo continua at´e que se encontre algum neurˆonio capaz de representar o padr˜ao apresentado, ou que todos os neurˆonios estejam inibidos, sendo que nesse caso, considera-se que n˜ao foi poss´ıvel representar o padr˜ao apresentado. Esses passos s˜ao repetidos para todos os padr˜oes dispostos no arquivo de entrada. O Algoritmo 1, apresentado na se¸ca˜o 3.1.3, detalha como ´e realizado o treinamento da rede neural artificial ART-2A.

4.3.2

Classifica¸ c˜ ao de processos

A classifica¸c˜ao de processos ´e iniciada assim que verifica-se a existˆencia do arquivo de log no diret´orio acima da aplica¸c˜ao. Uma vez que se tenha localizado tal arquivo, come¸ca-se ent˜ao a lˆe-lo afim de reconstruir a rede que o originou. S˜ao buscados nesse arquivo os valores das vari´aveis, Input File, Rho (ρ), Beta (β), Theta (θ), Alpha (α), Epochs e Neurons Created, as quais j´a foram explicadas na se¸ca˜o 4.3.1 de Treinamento da Rede, a exce¸ca˜o da vari´avel Neurons Created. Essa ´e usada para que se saiba quantos grupos foram necess´arios para se realizar a categoriza¸ca˜o dos padr˜oes. Ap´os os ajustes dessas vari´aveis, come¸ca-se uma busca pelas categorias (clusters) e seus conte´ udos, que s˜ao respectivamente: a quantidade de padr˜oes representados pelo cluster, o tamanho, o valor de ativa¸ca˜o, se o cluster est´a inibido, se ele foi escolhido para representar o u ´ltimo padr˜ao, os valores dos pesos do vetor w, os valores dos pesos do vetor de centroids e por fim, os padr˜oes que est˜ao representados nesse cluster. Tendo realizado a leitura e os ajustes de todas as vari´aveis de um cluster, passa-se para o pr´oximo cluster at´e que se leia e ajuste todos os clusters e seus devidos conte´ udos, de modo que ao final desse processo, se obter´a a rede que originou o log em quest˜ao. Depois de se ter reconstru´ıdo a RNA no estado em que esta liberou o log, come¸ca-se ent˜ao a buscar por novos padr˜oes e a classific´a-los, a partir da´ı, ajusta-se o valor de β para 0, de modo que a rede n˜ao aprenda novos padr˜oes, trabalhando-se em modo de classifica¸c˜ao somente. Busca-se pelo arquivo de entrada, o qual ter´a seus processos classificados em confi´aveis ou n˜ao confi´aveis. Uma vez tendo localizado o arquivo de entrada e recuperado os padr˜oes que nele est˜ao dispostos, esses s˜ao submetidos `a rede, a qual ir´a classifica-los. Uma classifica¸ca˜o negativa, ou seja, um padr˜ao imposs´ıvel de ser representado pela rede, por quais quer motivo, emite um sinal de suspens˜ao2 , o qual solicita que determinado processo seja interrompido para n˜ao causar danos ao sistema. Tal decis˜ao parte do princ´ıpio que se o processo analisado foge do padr˜ao de 2

O sinal de suspens˜ ao emitido pelo aplicativo ´e idˆentico ao mostrado em 4.1.

27


processos apresentados a rede em sua fase de treinamento, esse pode ser um processo malicioso e deve ser impedido de continuar operando.

4.3.3

Estrutura dos arquivos de entrada e sa´ıda

A autoprote¸c˜ao deve considerar trˆes arquivos, sendo esses, config.spl, log.spl 3 e monitor.sim, os quais correspondem respectivamente, ao arquivo de configura¸ca˜o da rede, o qual ir´a conduzila no momento do treinamento, o arquivo de log, o qual ´e gerado pela rede neural artificial ap´os o treinamento dos padr˜oes de entrada a` ela apresentados e por fim, o arquivo de entrada da rede, o qual cont´em o dataset de treinamento, monitor.sim cuja sua estrutura j´a foi discutida anteriormente em uma ´area dedicada na sub-se¸ca˜o 4.2.1 da se’¸c˜ao 4.2. Exemplos desses arquivos podem ser vistos no apˆendice A. A estrutura do arquivo de configura¸c˜ao segue com seis vari´aveis, as quais tˆem seus valores delimitados por um ponto-e-v´ırgula (;) e separados de seus nome por um sinal de dois pontos (:), seguindo-se a sintaxe de vari´avel seguida de dois pontos (:) que ´e seguido pelo valor da vari´ avel, que por sua vez ´e seguido de ponto-e-v´ırgula que ´e o delimitador padr˜ao. As vari´aveis devem estar dispostas uma em cada linha e para adicionar algum coment´ario usa-se o #, considerandose que tudo o que vem ap´os ele e esteja na mesma linha ´e coment´ario e portanto ignorado pelo aplicativo. As vari´aveis ρ, β, α e θ aceitam somente valores num´ericos com casas decimais, j´a a vari´avel Epochs aceita somente n´ umeros inteiros e por fim a vari´avel Input File aceita qualquer valor de texto, desde que n˜ao haja espa¸co entre os dois pontos que separam a vari´avel de seu valor. Essa regra tanto ´e v´alida para o arquivo de configura¸ca˜o, quanto para o arquivo de log, no entanto o arquivo de log cont´em al´em desses, outros elementos, sendo esses, o n´ umero de neurˆonios criados e o n´ umero de neurˆonios admitidos, ambos aceitando apenas n´ umeros inteiros e por fim os grupos (clusters), os quais possuem suas pr´oprias var´aveis, como j´a fora descrito anteriormente. A estrutura do arquivo de log segue exatamente as mesmas condi¸co˜es da estrutura do arquivo de configura¸ca˜o, no entanto, h´a uma estrutura exclusiva aos clusters. Essa estrutura segue as seguintes exigˆencias: vari´avel Cluster, a qual armazena o n´ umero do grupo, ou sua identifica¸c˜ao, Patterns que define quantos padr˜oes s˜ao representados por aquele grupo, Size, valor da ativa¸ca˜o, atrav´es da vari´avel Activation, se o grupo est´a inibido ou n˜ao inibido, atrav´es do valor da vari´avel Inhibited, se foi escolhido para representar o u ´ltimo padr˜ao submetido a rede pela Committed, os pesos do vetor w os quais est˜ao dispostos um em cada linha ap´os a vari´avel Weights, o vetor de Centroid e por fim a lista de processos que est˜ao sendo representados por aquela classe. Os valores de Centroid e a lista de padr˜oes possuem os valores dos vetores separados por tabula¸co˜es e quando se faz necess´ario, ou seja, quando precisa-se representar mais de um padr˜ao, estes ficam dispostos um em cada linha. Uma observa¸ca˜o importante ´e que no arquivo de log s´o se ´e permitido fazer coment´ario antes 3

Apesar do uso da extens˜ ao .spl, a qual significa self-protection log, os arquivos usados s˜ao texto simples, n˜ ao sendo usado at´e o momento nenhum tipo de criptografia, a qual ser´a implementada em projetos futuros

28


da primeira vari´avel e deve-se fazer uso do #.

4.4

Considera¸c˜ oes Finais

Trabalhando-se desse modo, se consegue suprir as necessidades de comunica¸ca˜o dos elementos autˆonomos, uma vez que a entrada esteja em conformidade com a sintaxe reconhecida, qualquer elemento pode enviar uma solicita¸ca˜o e receber uma resposta, utilizando-a para verifica¸ca˜o do comprimento da tarefa, ou para outras tarefas de seu interesse. A partir dessa arquitetura obt´em-se ent˜ao uma grande capacidade de expans˜ao para as aplica¸co˜es envolvidas, uma vez que estas s˜ao independentes em seus processos internos, comunicando-se a partir de arquivos de entrada, que podem e por vezes s˜ao, sa´ıdas de outros elementos, possibilitando-se uma integra¸ca˜o sem muitos problemas. A seguir, no cap´ıtulo 5, aborda-se o estado atual da arte, apresentando alguns trabalhos relacionados, os quais serviram de fundamenta¸ca˜o te´orica e base para elabora¸ca˜o deste trabalho.

29


30


Cap´ıtulo

5 Estado da Arte

Nos u ´ltimos anos, v´arios trabalhos relacionados a computa¸ca˜o autˆonoma vˆem sendo desenvolvidos, demonstrando a importˆancia da ´area para a ciˆencia da computa¸c˜ao e ´areas afins. Nesse cap´ıtulo s˜ao demonstrados alguns destes e suas aplica¸co˜es, os quais serviram para a elabora¸ca˜o e fundamenta¸ca˜o te´orica, por se relacionarem com algum dos aspectos tratados nesse trabalho.

5.1

Estado da Arte

? demonstraram em seu trabalho que o tempo de execu¸c˜ao de aplica¸co˜es paralelas pode ser estimado a partir de execu¸co˜es repetidas. Tal conclus˜ao indica que o hist´orico de uma aplica¸c˜ao pode ser empregado para melhorar futuras decis˜oes de escalonamento. Nesse mesmo estudo, foi verificado que aproximadamente dois ter¸cos das aplica¸co˜es paralelas, em ambientes de produ¸c˜ao, s˜ao executadas m´ ultiplas vezes. Posteriormente, ? observaram que execu¸co˜es repetidas de uma mesma aplica¸c˜ao tendem a apresentar padr˜oes similares de consumo de recursos e comportamento. Logo, informa¸co˜es relacionadas ao comportamento destas aplica¸co˜es podem ser obtidas por meio de hist´orico de execu¸c˜ao. Mais tarde, trabalhos sobre a computa¸c˜ao autˆonoma come¸caram a ser desenvolvidos. Uma das a´reas de aplica¸c˜ao destes foi o gerenciamento do consumo de energia em grandes centros de computa¸c˜ao. A Figura 5.1, ilustra os custos que comp˜oem o TCO (Total Cost of Ownership) de um hack t´ıpico de um data center ?. Como pode ser observado pelos dados detalhados nessa figura, tais gastos representam um investimento significativo, sendo que do custo total, 20% ´e voltado ao consumo direto de energia, o que motivou alguns trabalhos direcionados a ´area. Tais trabalhos exploram sistemas capazes de se adaptarem n˜ao s´o em termos de desempenho, mas tamb´em no controle do consumo de energia de processadores. Um exemplo pode ser observado 31


Figura 5.1: Total Cost of Ownership (Custo Total das Propriedades) ?

no trabalho de (?, apud Kandasamy et. al. 2004). ? prop˜oem uma s´ıntese gen´etica de rede neural artificial n˜ao supervisionada, na qual usou-se a ART-2 para realizar a classifica¸ca˜o de imagens ASTER para o mapeamento e uso da terra em uma a´rea de floresta tropical. Os resultados de exatid˜ao da classifica¸ca˜o realizada pela rede neural variaram de 58,647% a` 68,726%, dependendo do conjunto de entradas utilizado. O desempenho obtido nesse trabalho n˜ao foi bom o suficiente devido ao fato de que o conjunto de imagens que fora utilizado, em algumas classes tem´aticas, possu´ıa imagens muito semelhantes, devido principalmente a ´epoca do ano em que a regi˜ao fora fotografada pelo sat´elite, prejudicando a diferencia¸ca˜o destas pela RNA. (?, apud Senger 2005) prop˜oem dois modelos de extra¸c˜ao de caracter´ısticas de aplica¸co˜es paralelas. O primeiro considera uma arquitetura de redes neurais da fam´ılia ART (?, apud Senger, 2005, Carpenter and Grossberg, 1989) para a caracteriza¸ca˜o autom´atica de estados de utiliza¸ca˜o de recursos de processos. Conceitos de aprendizado baseados em instˆancias s˜ao empregados para construir o segundo modelo. O diferencial desse trabalho foi a aquisi¸c˜ao incremental de conhecimento, de forma que o modelo e o conhecimento obtido podem ser atualizados na medida que novas informa¸co˜es s˜ao apresentadas. Outros trabalhos voltados para o controle do consumo de energia foram propostos mais tarde, tendo estes um tratamento mais abrangente, cuidando tamb´em do consumo relacionado a outros recursos, como mem´oria, dispositivos de entrada e sa´ıda e rede ?. Um outro tipo de ambiente cuja a computa¸c˜ao autˆonoma tem ganhado espa¸co ´e o das grades computacionais, dividindo os esfor¸cos de pesquisa em duas grandes a´reas. A mais difundida destas ´e o gerenciamento dinˆamico de recursos ?. Pelo fato das grades computacionais serem constru´ıdas geralmente sobre arquiteturas orientadas a servi¸cos, o compromisso com a QoS (Qualidade de Servi¸co), n˜ao s´o na aloca¸ca˜o inicial, mas durante toda a utiliza¸ca˜o, ´e uma forma de garantir a eficiˆencia e a efic´acia da sele¸c˜ao de recursos. Desse modo, a computa¸ca˜o autˆonoma ´e aplicada de forma a garantir tal compromisso, diante do dinamismo e complexidade de tais ambientes. A segunda ´area ´e a administra¸c˜ao de sistemas (?, apud Zenmyo et. al. 2006, Brodie 32


et. al. 2005). Essa visa introduzir autonomia administrativa para aplica¸co˜es que executem em tais ambientes. No caso de haver problemas, estes s˜ao reportados em logs de opera¸co˜es, tornando-se poss´ıvel que se determine um conjunto de a¸co˜es e respostas para que se derive um conjunto de pol´ıticas. Tais logs se tornariam guias para que o sistema sobrevivesse de forma autˆonoma. Uma outra ´area na qual pode-se encontrar trabalhos relacionados `a computa¸c˜ao autˆonoma ´e na computa¸ca˜o ub´ıqua. Essa a´rea, assim como nas grades computacionais, s˜ao encontradas caracter´ısticas como o dinamismo e a complexidade, em um modelo possivelmente heterogˆeneo, em que diversos dispositivos comunicam entre si em prol da cria¸c˜ao de um ambiente inteligente. Desse modo a dificuldade de instala¸c˜ao e manuten¸ca˜o de aplica¸c˜oes, conduz `a necessidade de sistemas auto-gerenci´aveis. Um trabalho que trata desta a´rea pode ser encontrado em ?. Um outro projeto na a´rea de grades computacionais ´e o trabalho de ?, que investiga formas de autogerenciar suportes para distribui¸ca˜o de dados, tolerˆancia a falhas, seguran¸ca e escalonamento de processos. Esse estudo ´e feito utilizando-se um de seus projetos, chamado de MidHPC (Middleware for High Performance Computing). Tal trabalho emprega conceitos sobre sistemas dinˆamicos e t´ecnicas inteligentes para modelar e predizer o comportamento de processos com o intuito de otimizar opera¸c˜oes de escalonamento em ambientes de grade computacional. A aplica¸c˜ao da predi¸ca˜o em opera¸co˜es de comunica¸c˜ao foram utilizadas para parametrizar uma nova pol´ıtica de escalonamento visando minimizar custos de comunica¸c˜ao e processamento. Segundo ? seu trabalho obteve resultados significativos quanto ao escalonamento de recursos a partir do conhecimento pr´evio dos padr˜oes de uso destes. Para a predi¸ca˜o de processos foram consideradas trˆes principais fontes de obten¸ca˜o de conhecimento: a descri¸ca˜o de requisitos computacionais, tra¸cos de execu¸c˜ao (o qual cont´em detalhes de opera¸c˜oes executadas por processos) de todas as aplica¸co˜es previamente executas sobre o ambiente; e tra¸cos de execu¸c˜ao espec´ıficos de cada aplica¸ca˜o, obtidos por meio de monitora¸ca˜o. De acordo com ?, tra¸cos de execu¸c˜ao tem demonstrado grande potencial para a descoberta de informa¸co˜es relevantes e contribu´ıdo, significativamente, na tomada de decis˜oes.

5.2

Considera¸c˜ oes Finais

Observado que aproximadamente dois ter¸cos das aplica¸c˜oes paralelas, em ambientes de produ¸ca˜o, s˜ao executadas m´ ultiplas vezes e que pode-se identificar tendˆencias, ou padr˜oes nas caracter´ıstica de processos atrav´es dos tra¸cos de execu¸co˜es, os quais j´a foram utilizados para melhorar o escalonamento de processos, onde os mesmos atrav´es de um hist´orico podem demonstrar uma tendˆencia de consumo de recursos, pode-se atrav´es de tal identificar se um determinado processo est´a consumindo mais, ou menos recursos que o que ´e consumido normalmente. Por meio dessa an´alise h´a a possibilidade de identificar ataques, os quais ao modificarem os tra¸cos de execu¸c˜ao ser˜ao classificados como suspeitos. Um poss´ıvel modo de se fazer essas an´alises ´e atrav´es de uma rede neural artificial que trabalhe com problemas de classifica¸ca˜o, que seja n˜ao-supervisionada e consiga expandir seu conhecimento, sem perder o conhecimento anterior33


mente aprendido e sem precisar submeter os padr˜oes antigos novamente ao treinamento. Assim sendo, foi escolhida para esse trabalho a RNA ART-2A, a qual ao atender tais caracter´ısticas, poder´a nos prover a autoprote¸c˜ao proposta. Outra aspecto importante, ´e que ser´a usado como base e fonte de comunica¸ca˜o arquivos de logs, possibilitando que as demais propriedades da computa¸c˜ao autˆonoma se comuniquem com esta. O pr´oximo cap´ıtulo segue com a apresenta¸ca˜o dos resultados obtidos neste trabalho.

34


Cap´ıtulo

6 Resultados

Para a realiza¸ca˜o dos testes foram gerados cinco novos conjuntos de dados, os quais foram submetidos `a rede para valid´a-la. Desses arquivos, dois foram gerados nas mesmas condi¸co˜es em que se gerou os arquivos que treinaram a rede, enquanto os outros trˆes sofreram eleva¸co˜es em suas caracter´ısticas de mem´oria e leitura de disco para validar a detec¸c˜ao de arquivos intrusos.

6.1

Realiza¸c˜ ao dos Testes

Tendo dois treinamentos, um com 10.000 padr˜oes representados e outro com 100.000, gerouse alguns novos conjuntos de dados afim de verificar a eficiˆencia da RNA na tarefa de classifica¸ca˜o. Primeiramente submeteu-se a RNA trˆes arquivos contendo padr˜oes com eleva¸c˜oes em suas caracter´ısticas de mem´oria e leitura de disco, tendo com estes testes a finalidade de verificar a quantidade de falsos positivos que a RNA gera. Posteriormente submeteu-se a ART-2A os dois conjuntos de dados que n˜ao possuem processos com eleva¸co˜es intencionais, portanto, estes arquivos n˜ao possuem processos a se considerar intrusos. Desse modo esse teste verifica a quantidade de falsos negativos. Os conjuntos de dados gerados afim de testar a efic´acia da rede possuem quantidades consider´aveis de padr˜oes, sendo que os trˆes arquivos com processos considerados intrusos tem o primeiro 1.000, o segundo 5.000 e o terceiro 10.000 padr˜oes. Os dois conjuntos de dados n˜ao intrusos possuem um deles 5.000 e o outro 10.000 processos. Cada um desses arquivos foram submetidos a RNA com 10.000 e depois com 100.000 processos representados em sua base. Os resultados para estes testes podem ser vistos na pr´oxima se¸ca˜o. Uma observa¸ca˜o importante ´e que os valores das caracter´ısticas dos processos utilizados para o treinamento das redes foram extra´ıdos da tese de ?, os quais foram normalizados a` menor 35


unidade de cada caracter´ıstica para serem trabalhados na distribui¸ca˜o de Poisson no gerador de processos. A normaliza¸c˜ao de tais valores pode ser vista na Tabela 6.1.

ID 1 2 3 4 5 6 7 8 9 10

MIPS 14,9876 15,1269 15,1637 2,47578 4,13703 2 13,8993 13,8993 4,62046 4,62046

Processos Normalizadas Mem´oria Swap Leitura em Disco 32 8 20,9123 32 8 20,8986 32 8 20,6055 8 4 4,88219 8 4 2,80822 2 4 2 8 4 3,95068 8 4 3,95068 16 4 2,80822 16 4 2,80822

Escrita em Disco 19,995 19,567 19,869 4,9552 2 2,1522 4,6985 4,6985 2 2

Tabela 6.1: Processos usados pelo gerador como ponto de partida, normalizados `a menor unidade de cada caracter´ıstica

6.2

Apresenta¸c˜ ao dos Resultados

Agora ser˜ao descritos os resultados obtidos a partir da valida¸ca˜o da tarefa de classifica¸c˜ao da rede. Nesse sentido ser˜ao apresentados os gr´aficos e seus respectivos detalhes para melhor compreens˜ao.

6.2.1

Verifica¸ c˜ ao de Falsos Positivo

Para se verificar o qu˜ao eficiente a RNA ´e em sua tarefa de classifica¸c˜ao, submeteu-se a esta trˆes arquivos contendo processos com caracter´ısticas intrusivas. Para esses testes tem-se os seguintes gr´aficos 6.1 e 6.4, os quais apresentam respectivamente, o desempenho da RNA com base de conhecimento de 10.000 e 100.000 padr˜oes. Pode-se verificar que para uma menor amostra de processos durante a fase de treinamento, obteve-se um melhor n´ umero de falsos positivo, o que indica uma maior efic´acia na detec¸ca˜o de processos que n˜ao estavam presentes no momento do treinamento. Em 6.1, consegui-se identificar 939 processos intrusos, dos 1.000 que foram apresentados, tendo-se um aproveitamento de 93,90%. J´a para a rede com 100.000 padr˜oes representados em sua base, o desempenho cai para 91,80%, detectando-se 918 dos 1.000 submetidos, como pode ser visto em 6.4. Como pode ser observado tamb´em, o desempenho da rede foi de 93,68% para os 5.000 intrusos apresentados a` rede com 10.000 padr˜oes e 90,04% para esses mesmos sendo apresentados `a rede de 100.000. J´a para a apresenta¸ca˜o dos 10.000 processos intrusos, obteve-se um desempenho de 93,72% para a rede com base de 10.000 e 90,47% para a rede com 100.000 padr˜oes representados em sua base. 36


Figura 6.1: Teste para verificar a quantidade de falsos positivos, tendo como entrada um arquivo com 1.000, outro com 5.000 e outro com 10.000 padr˜oes com processos intrusos em uma RNA com 10.000 processos treinados

Figura 6.2: Teste para verificar a quantidade de falsos positivos, tendo como entrada um arquivo com 1.000, outro com 5.000 e outro com 10.000 padr˜oes com processos intrusos em uma RNA com 100.000 processos treinados

6.2.2

Verifica¸ c˜ ao de Falsos Negativo

Com o intuito de se verificar a quantidade de falsos negativos, ou seja, quantos processos n˜ao intrusos a rede consideraria intruso, impedindo o funcionamento de uma aplica¸ca˜o legal, 37


foram realizados outros dois testes com conjuntos de dados elaborados para essa finalidade. Para isso foi submetido a` rede, um conjunto de dados contendo 5.000 processos n˜ao intrusos e outro contendo 10.000 processos tamb´em n˜ao intrusos. Os resultados destes testes podem ser vistos em ?? e em ??.

Figura 6.3: Teste para verificar a quantidade de falsos negativos, tendo como entrada um arquivo com 5.000 e outro com 10.000 padr˜oes com processos n˜ao intrusos em uma RNA com 10.000 processos representados em sua base de conhecimento

Neste caso, obteve-se um alto desempenho por parte da classifica¸ca˜o de processos, tendo um n´ umero baixo de falso negativo em ambos os testes. Sendo que para ?? obteve-se um desempenho de 98,82% e para ?? um desempenho de 99,98% para a entrada de 5.000 processos. J´a para a entrada com 10.000 processos, obteve-se um desempenho de 98,70% na rede com 10.000 padr˜oes e 99,99% para a de 100.000, desse modo houveram apenas 130 no primeiro e 1 falso negativo no segundo teste. Tal pode ser vistos no gr´afico ?? e ??, os quais apresentam respectivamente os resultados obtidos para a rede com base de conhecimento de 10.000 padr˜oes e 100.000 padr˜oes.

6.3

Desempenho computacional

Durante o treinamento da rede, foi observado um bom desempenho computacional por parte da ART-2A, sendo que para se treinar 10.000 padr˜oes, gastou-se um tempo de aproximadamente 2 segundos e para o aprendizado de 100.000 padr˜oes gastou-se 2 minutos e 5 segundos, como pode ser observado nos arquivos de log 6.2 e 6.3 que a RNA gera durante seu treinamento. Tem-se ent˜ao um desempenho computacional muito bom, no entanto, esse desempenho pode variar de acordo com a quantidade de processos apresentados a` rede, de acordo com a 38


Figura 6.4: Teste para verificar a quantidade de falsos negativos, tendo como entrada um arquivo com 5.000 e outro com 10.000 padr˜oes com processos n˜ao intrusos em uma RNA com 100.000 processos representados em sua base de conhecimento

Sun Sun Sun Sun Sun Sun Sun

Nov Nov Nov Nov Nov Nov Nov

Sa´ıdas apresentadas durante o treinamento da rede 21 17:32:02 BRST 2010 - Iniciando o Aplicativo .... .... .... 21 17:32:02 BRST 2010 - Leu arquivo de Configura¸c˜ao 21 17:32:02 BRST 2010 - Atualizou os valores das vari´aveis de controle 21 17:32:08 BRST 2010 - Leu arquivo de entrada da rede 21 17:32:08 BRST 2010 - Convers˜ao do arquivo de entrada para matriz 21 17:32:09 BRST 2010 - Iniciou o treinamento da rede 21 17:32:30 BRST 2010 - Terminou o treinamento da rede

Tabela 6.2: Tempo de Treinamento para 10.000 entradas, com rho = 0,995

Sun Sun Sun Sun Sun Sun Sun

Nov Nov Nov Nov Nov Nov Nov

Sa´ıdas apresentadas durante o treinamento da rede 21 23:15:51 BRST 2010 - Iniciando o Aplicativo .... .... .... 21 23:15:51 BRST 2010 - Leu arquivo de Configura¸c˜ao 21 23:15:51 BRST 2010 - Atualizou os valores das vari´aveis de controle 21 23:37:35 BRST 2010 - Leu arquivo de entrada da rede 21 23:37:36 BRST 2010 - Convers˜ao do arquivo de entrada para matriz 21 23:37:36 BRST 2010 - Iniciou o treinamento da rede 21 23:39:41 BRST 2010 - Terminou o treinamento da rede

Tabela 6.3: Tempo de Treinamento para 100.000 entradas, com rho = 0,995 similaridade entre os padr˜oes apresentados, al´em de depender tamb´em do valor da vari´avel ρ, a qual controla o n´ıvel de similaridade entre os padr˜oes representados em cada classe. Foi observado tamb´em que a vari´avel ρ desempenha um papel muito influente no desempenho da 39


rede, tanto computacional, quanto no desempenho de classifica¸ca˜o. Testes foram feitos com valores diferentes do valor usado neste trabalho, o qual ´e 0,995. Ao usar ρ com o valor 1,00, a RNA sofreu uma grande perca de desempenho computacional, onde um treinamento que levava 2 minutos aproximadamente, passou a levar horas. Com esse valor o n´ umero de falsos negativos sobe consideravelmente, j´a que para que o processo seja representado ele necessariamente precisa ser igual aos processos representados na base de conhecimento. Testes com valores muito baixos para ρ mostraram um grande ganho computacional, no entanto, ao custo de uma eleva¸c˜ao na quantidade de falsos positivos.

6.4

Considera¸c˜ oes Finais

A partir da descri¸c˜ao dos testes realizados e do detalhamento de seus resultados nos gr´aficos apresentados nesse cap´ıtulo, pode-se concluir que a rede neural artificial ART-2A, implementada e submetida a v´arios teses, a partir de dois treinamentos e v´arias amostras de dados diferentes, demonstra ser eficiente para a classifica¸c˜ao de processos, al´em tamb´em de oferecer um alto desempenho computacional, conforme descrito na se¸ca˜o 6.3. A rede foi submetida a trˆes testes cada, afim de mensurar seu desempenho na detec¸c˜ao de processos iguais e semelhantes aos presentes em sua base. Nestes testes obteve-se um desempenho maior que 98%, o que ´e um desempenho consider´avel. Tamb´em foram submetidos trˆes teses que validariam a capacidade da rede em detectar processos intrusos, ou seja, que n˜ao estiveram presentes, ou que s˜ao pouco semelhantes aos processos presentes em seu treinamento. Nesse caso teve-se tamb´em um o´timo desempenho, sendo que os resultados mostraram um desempenho maior que 90% em todos os casos. Para fins de compara¸c˜ao de desempenho, conseguiu-se com este trabalho um ganho de mais de 20% de aproveitamento na classifica¸ca˜o da RNA ART2A comparando-o com os resultados demonstrados no trabalho de ?, o qual conseguiu em seu melhor resultado apenas 68,726% de exatid˜ao na classifica¸ca˜o. Estima-se que os poucos falsos positivos gerados nesses testes, deriva-se de processos que tiveram uma varia¸c˜ao muito pr´oxima dos padr˜oes treinados. Tal fato, permite que se constate que a rede neural artificial ART-2A ´e muito eficiente na classifica¸c˜ao de processos, no entanto, processos muito semelhantes podem ser encarados de forma errada pela rede, o que pode vir a inviabiliza-la para a autoprote¸c˜ao, pelo menos como u ´nico artif´ıcio na detec¸ca˜o desses processos. Por outro lado, seu alto desempenho computacional e sua valida¸ca˜o correta em mais de 90% dos casos, faz que ela seja uma op¸ca˜o, j´a que sua estrutura permite dentre outras, que o usu´ario controle o n´ıvel de similaridade entre os padr˜oes, permite o aprendizado incremental e ´e n˜aosupervisionada. A seguir s˜ao realizadas as conclus˜oes deste trabalha, com suas considera¸co˜es finais e uma rela¸ca˜o de trabalhos futuros.

40


Cap´ıtulo

7 Conclus˜ oes

7.1

Considera¸c˜ oes finais

A partir da implementa¸ca˜o da ART-2A e de sua valida¸c˜ao, tendo como base v´arios testes, pode-se verificar que a rede possui um alto desempenho computacional e realiza um bom trabalho de classifica¸ca˜o, sendo que isso pode ser ajustado de acordo com o valor da vari´avel de controle ρ, que ´e a respons´avel pela similaridade entre os padr˜oes que s˜ao classificados em um mesmo grupo. Um outro fator muito importante ´e a condi¸ca˜o oferecida pela estrutura da ART2A do aprendizado incremental, dispensando a necessidade de se realizar um novo treinamento com os novos padr˜oes, ou outra t´ecnica n˜ao trivial. Uma vez que processos muito semelhantes aos que estiveram presentes no treinamento podem n˜ao ser detectados pela rede, faz com que ainda seja cedo para se transferir a responsabilidade de seguran¸ca da informa¸c˜ao a` um computador autˆonomo, apesar do alto desempenho que se obteve neste. Outra caracter´ıstica deste trabalho que merece destaque ´e que a arquitetura adotada para o desenvolvimento da autoprote¸ca˜o, oferece suporte para o crescimento e expans˜ao dessa aplica¸ca˜o, oferecendo um meio pr´atico e f´acil de comunicar-se com outros elementos, ao se fazer uso de arquivos bem estruturados e definidos, al´em de se ter conseguido atender alguns pr´erequisitos de um elemento autˆonomo para a computa¸c˜ao autˆonoma, tais como a especifica¸ca˜o e a localiza¸c˜ao. As demais exigˆencias n˜ao puderam ser validadas pelo fato de n˜ao se ter um outro elemento autˆonomo para se estabelecer uma negocia¸c˜ao, apesar de serem feitas com o gerador de processos. Deste modo, refor¸ca-se a complexidade do desafio de se construir a computa¸ca˜o autˆonoma, a qual o desenvolvimento de uma de suas caracter´ısticas j´a ´e algo dispendioso e ainda n˜ao trabalhado por completo. Sendo que neste trabalho foi desenvolvido apenas uma parte da 41


autoprote¸c˜ao, a qual n˜ao est´a ainda apta a trabalhar como proposto pela computa¸ca˜o autˆonoma, j´a que necessita-se ainda de mais estudos para completa-la e principalmente de um outro elemento autˆonomo para a comunica¸c˜ao.

7.2

Trabalhos futuros

Como trabalhos futuros, pretende-se criar novos elementos autˆonomos para a conversa¸ca˜o e negocia¸c˜ao, desenvolver uma forma da autoprote¸c˜ao apoiar as ferramentas de detec¸c˜ao de ataques e firewalls j´a existentes. Pretende-se tamb´em realizar a investiga¸c˜ao de uma forma para reduzir os falsos positivos e negativos da rede, como se fosse uma camada extra de filtragem, verificando o que for liberado pela rede, afim de prover maior seguran¸ca e confiabilidade. Posteriormente pretende-se instrumentar o kernel do Linux e habilitar a autoprote¸c˜ao a trabalhar em um ambiente real, para tal pode ser desenvolvido um Middleware que trabalhara entre o kernel e a autoprote¸ca˜o, buscando informa¸c˜oes dos processos em execu¸c˜ao e listando-os para a rede. Por fim, cria-se o esquema de criptografia em todos os arquivos de entrada e sa´ıda que os elementos autˆonomos usam para se comunicarem.

42


Apˆ endice

A Arquivos de Entrada, Sa´ıda e Log

Arquivo log.spl # Art2a Teoria da Ressonˆancia Adaptativa # Art2a Resultado do Treinamento # ————————————————————— Arquivo de Entrada:/Users/usuario/Desktop/Cenario Distribuido/dataset/train/monitor10.sim; # ————————————————————— Alpha: 0.0; Beta: 0.3; Theta: 0.0; Rho: 0.995; # ————————————————————— Epocas: 1; Neuronios Admitidos: 10; Neuronios Criados: 6; # ————————————————————— Continua na pr´oxima p´agina 43


Arquivo log.spl Cluster: 1; Patterns: 3; Size: 0.0; Ativacao: 0.7643425388991747; Inibido: false; Committed: true; Weights: 0.022107884414269093 0.3095103817997673 0.707452301256611 0.17686307531415274 0.4421576882853819 0.4200498038711128 Centroid: 0.0 0.0 0.0 0.0 0.0 0.0 Padroes: 1.0 14.0 32.0 8.0 20.0 19.0 2.0 15.0 32.0 8.0 20.0 19.0 3.0 15.0 32.0 8.0 20.0 19.0 # ————————————————————— Cluster: 2; Patterns: 1; Size: 0.0; Ativacao: 0.9097640605412286; Inibido: false; Committed: true; Weights: 0.3481553119113957 0.17407765595569785 0.6963106238227914 0.3481553119113957 0.3481553119113957 Continua na pr´oxima p´agina

44


Arquivo log.spl 0.3481553119113957 Centroid: 0.0 0.0 0.0 0.0 0.0 0.0 Padroes: 4.0 2.0 8.0 4.0 4.0 4.0 # ————————————————————— Cluster: 3; Patterns: 1; Size: 0.0; Ativacao: 0.964526236316783; Inibido: false; Committed: true; Weights: 0.4402254531628119 0.35218036253024954 0.7043607250604991 0.35218036253024954 0.17609018126512477 0.17609018126512477 Centroid: 0.0 0.0 0.0 0.0 0.0 0.0 Padroes: 5.0 4.0 8.0 4.0 2.0 2.0 # ————————————————————— Cluster: 4; Patterns: 1; Size: 0.0; Ativacao: 0.7556481715980349; Inibido: false; Committed: true; Continua na pr´oxima p´agina

45


Arquivo log.spl Weights: 0.7276068751089989 0.24253562503633297 0.24253562503633297 0.48507125007266594 0.24253562503633297 0.24253562503633297 Centroid: 0.0 0.0 0.0 0.0 0.0 0.0 Padroes: 6.0 2.0 2.0 4.0 2.0 2.0 # ————————————————————— Cluster: 5; Patterns: 2; Size: 0.0; Ativacao: 0.782905199255342; Inibido: false; Committed: true; Weights: 0.3894904188522601 0.7233393492970545 0.44513190725972585 0.22256595362986292 0.1669244652223972 0.22256595362986292 Centroid: 0.0 0.0 0.0 0.0 0.0 0.0 Padroes: 7.0 13.0 8.0 4.0 3.0 4.0 8.0 13.0 8.0 4.0 3.0 4.0 # ————————————————————— Continua na pr´oxima p´agina

46


Arquivo log.spl Cluster: 6; Patterns: 2; Size: 0.0; Ativacao: 0.9990081623100663; Inibido: false; Committed: true; Weights: 0.46352358236214425 0.2060104810498419 0.8240419241993676 0.2060104810498419 0.10300524052492095 0.10300524052492095 Centroid: 0.0 0.0 0.0 0.0 0.0 0.0 Padroes: 9.0 4.0 16.0 4.0 2.0 2.0 10.0 4.0 16.0 4.0 2.0 2.0 # ————————————————————— Tabela A.1: Exemplo de um arquivo de log, gerado ap´os o treinamento da rede

47


ID 1 2 3 4 5 6 7 8 9 10

MIPS 14,9876 15,1269 15,1637 2,47578 4,13703 2 13,8993 13,8993 4,62046 4,62046

Arquivo process.sim Mem´oria Swap Leitura em Disco 32 8 20,9123 32 8 20,8986 32 8 20,6055 8 4 4,88219 8 4 2,80822 2 4 2 8 4 3,95068 8 4 3,95068 16 4 2,80822 16 4 2,80822

Escrita em Disco 19,995 19,567 19,869 4,9552 2 2,1522 4,6985 4,6985 2 2

Tabela A.2: Exemplo do arquivo process.sim

ID 1 2 3 4 5 6 7 8 9 10

MIPS 14 15 15 2 4 2 13 13 4 4

Arquivo variancia.sim Mem´oria Swap Leitura em Disco 32 8 20 32 8 20 32 8 20 8 4 4 8 4 2 2 4 2 8 4 3 8 4 3 16 4 2 16 4 2

Escrita em Disco 19 19 19 4 2 2 4 4 2 2

Tabela A.3: Exemplo do arquivo variancia.sim

48


ID 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10

MIPS 46.0 56.0 53.0 20.0 21.0 21.0 61.0 46.0 27.0 21.0 42.0 56.0 57.0 22.0 25.0 22.0 57.0 66.0 21.0 21.0 60.0 44.0 60.0 20.0 22.0 21.0 54.0 56.0 25.0 22.0

Arquivo monitor.sim Mem´oria Swap Leitura em Disco 50 14 44.0 39 19 78.0 22 19 47.0 14 7 14.0 14 4 14.0 2 8 2.0 14 4 14.0 14 5 14.0 18 6 14.0 20 6 14.0 35 14 56.0 64 19 79.0 68 14 45.0 14 6 14.0 14 7 14.0 4 4 5.0 14 6 14.0 14 6 14.0 33 9 14.0 38 4 14.0 41 19 80.0 28 14 53.0 38 14 53.0 19 5 14.0 19 4 14.0 2 8 3.0 19 9 14.0 19 8 14.0 34 7 14.0 34 5 14.0

Escrita em Disco 46.0 22.0 54.0 12.0 4.0 4.0 12.0 12.0 3.0 5.0 21.0 31.0 25.0 12.0 2.0 4.0 12.0 12.0 5.0 6.0 53.0 41.0 40.0 12.0 3.0 3.0 12.0 12.0 6.0 4.0

Tabela A.4: Exemplo de um arquivo monitor.sim o qual teve trˆes simula¸c˜oes para cada padr˜ao de entrada

49


Arquivo config.sim # Use o timeWaiting para definir de quanto em quanto tempo, ser˜ao atualizados os valores dos processos (criados novos processos), o valor ´e considerado em milisegundos # Use o parˆametro running para manter o programa em execu¸c˜ao ou encerra-lo # Use o parˆametro updateTime para definir de quanto em quanto tempo ser˜ao checados os valores desse arquivo (config.sim) timeWaiting=200; # ms (1000ms = 1s) running=false; updateTime=1000; # ms (1000ms = 1s) # A sintaxe deste arquivo ´e a seguinte: vari´avel=valor; Tabela A.5: Exemplo do arquivo config.sim

Arquivo config.spl # Arquivo de configura¸c˜ao da RNA ART-2A # Use ”#”para fazer coment´arios Arquivo de Entrada:<url>; # Caminho do arquivo de entradas da rede Rho: 0.995; # Parˆametro de vigilˆancia Beta: 0.30; # Parˆametro de aprendizado Theta: 0.0; # Parˆametro de supress˜ao de ru´ıdos Alpha: 0.0; # Parˆametro que define a profundidade de busca pelo neurˆonio ideal Epocas: 1; # Quantidade de ´epocas de treinamento # A sintaxe deste arquivo ´e a seguinte: vari´avel: valor; # Fim do arquivo Tabela A.6: Exemplo do arquivo config.spl

50


Redes Neurais Aplicadas para Autoproteção de Sistemas Distribuídos