Princípios de um Sistema Imunológico Computacional Anil Somayaji, Steven Hofmeyr, & Stephanie Forrest Departament of Computer Science University of New Mexico Albuquerque, NM 87131 {soma, steveah, forrest}@cs.unm.edu Abstract Os sistemas imunológicos naturais provem uma rica inspiração para a segurança computacional na era da internet. Eles possuem muitas características que são desejáveis para os ambientes em que muitos computadores trabalham, como por exemplo: distribucionalidade, diversibilidade, disponibilidade, adaptabilidade, autonomia, cobertura dinâmica, detecção de anomalia, múltiplas camadas, identidade por comportamento, componentes não confiáveis e detecção imperfeita. Estes princípios sugerem uma larga variedade de arquiteturas para os sistemas imunológicos computacionais. 1 Introdução Os sistemas computacionais modernos estão cheios de vulnerabilidades. Do ponto de vista da segurança computacional tradicional, estes problemas só serão possíveis de eliminar através de um uso mais extensivo de métodos formais e melhoramentos na engenharia de software. A visão tradicional acredita em três chaves para o sucesso de um sistema seguro: 1. Políticas de segurança devem ser explicitadas e corretamente especificadas, 2. Programas devem ser corretamente implementados, e 3. Sistemas devem ser corretamente configurados. Na teoria isto funcionaria, porém, não é o que se vê na prática. Programas são adicionados e removidos e suas configurações são alteradas continuamente. Uma verificação formal de um sistema estático leva muito tempo e é difícil de ser feita. Uma verificação formal de um sistema dinâmico é impraticável. Os autores acreditam que é possível a construção de melhores sistemas de segurança computacional através da adoção de princípios de modelagem que mais se adaptassem ao ambiente imperfeito, incontrolável e aberto em que muitos computadores trabalham. Um ponto de abordagem seria um sistema imunológico natural, que resolve problemas similares, porém de uma maneira radicalmente diferente da computação tradicional. Ele é composto de muitos componentes que agem de forma imperfeita, incerta e tem uma curta duração. É autônomo e incorreto, cometendo engano algumas vezes. Mesmo com todos os seus problemas, ele consegue nos manter vivos por mais ou menos 70 anos, apesar de ser ameaçado constantemente por parasitas, bactérias e vírus potencialmente mortais. A analogia entre os problemas de segurança computacionais e o processo biológico foi reconhecida antes de 1987, quando o termo “vírus de computador” foi introduzido por Adelman [1]. A conexão entre sistemas imunológicos e segurança computacional foi introduzida em [4, 6] e elaborada em [2, 3]. Para os autores, o sucesso do sistema imunológico baseia-se em grande parte na sua organização e num entendimento de como o sistema imunológico pode ajudar-nos a projetar um robusto e prático “sistema imunológico computacional”. Tal sistema incorporaria muitos elementos dos sistemas de segurança atuais, incrementando sua atuação com uma camada de resposta adaptativa, que seria similar aos sistemas de detecção de intrusão atuais, porém mais autônoma. Partes desta camada pode ser diretamente análoga ao mecanismo presente no sistema imunológico; outras devem ser completamente diferentes das encontradas na biologia. 2 Visão geral de um Sistema Imunológico O sistema imunológico é capaz de virtualmente reconhecer qualquer célula ou molécula estrangeira e eliminá-la do corpo. Para fazer isto, ele se baseia em tarefas de reconhecimento de padrões para distinguir moléculas e células que pertencem ao próprio corpo (“self”) das demais (“nonself”). O número exato de moléculas estrangeiras que o sistema imunológico pode reconhecer é desconhecido, mas estima-se que seja maior que 1016 [5]. Estas proteínas estrangeiras precisam ser distinguidas de 105 diferentes proteínas self, então, o reconhecimento deve ser altamente específico. A arquitetura do sistema imunológico é multi-camadas, com a defesa sendo proporcionada em muitos níveis. A camada mais externa, a pele, é a primeira barreira. A segunda é fisiológica, onde as condições como o pH e a temperatura impedem que alguns tipos de microorganismos se proliferem. Uma vez que um agente patogênico entre no corpo, ele é controlado pelo sistema imunológico inato e pela resposta imunológica adaptativa. O sistema inato consiste primeiramente em circundar as células invasoras com macrófagos, que ingerem materiais e moléculas extracelulares, limpando o sistema. A resposta adaptativa (também chamada de resposta adquirida) é mais sofisticada e envolve diferentes tipos de células e moléculas. O sistema imunológico adaptativo pode ser visto como um sistema de detecção distribuído, que em como principal elemento os glóbulos brancos do sangue, chamados de linfócitos. Os linfócitos funcionam como pequenos detectores independentes que circulam através sangue e do sistema linfático. Eles podem ser vistos como detectores negativos, pois identificam as células nonself e ignora as self. A detecção ou reconhecimento dos agentes patogênicos ocorre quando são formados laços moleculares entre um patógeno e os receptores que cobrem a superfície do linfócito. Quanto mais complementar for esta ligação, maior é a afinidade. A detecção é aproximada, e conseqüentemente um linfócito se ligará com diferentes tipos de patógenos. A habilidade de detectar diversos patógenos vem de uma fabricação de linfócitos receptores altamente randomizada. Porém, nesta fabricação poderão ser gerados linfócitos que combinam com moléculas self, causando desordem no sistema imunológico, ocasionando um ataque ao próprio corpo. A desordem auto-imune raramente acontece, pois os linfócitos que circulam na corrente sanguínea são self tolerantes. Esta tolerância é adquirida num processo chamado de eliminação clonal: a maturação dos linfócitos ocorre em um órgão chamado timo, onde muitas proteínas self circulam; se eles se ligam a estas proteínas durante a maturação, eles são eliminados. A resposta imunológica adaptativa vai ficando mais específica com o tempo, pelo aprendizado e memorização dos agentes patogênicos já identificados. Se o sistema imunológico detecta um patógeno que não havia encontrado antes, ele dispara uma resposta primária. Neste momento o sistema “aprende” sobre a estrutura deste patógeno específico, guardando a informação para quando acontecer um “novo encontro”. Esta fase é conhecida como maturação da afinidade e nela, grandes volumes de novos linfócitos, que tem uma alta afinidade com o novo agente patogênico, são produzidos. Da próxima vez que o patógeno for identificado, a resposta imunológica será tão rápida que os sintomas de infecção nem serão sentidos pelo indivíduo. O sistema imunológico é único para cada ser vivo e uma das chaves desta singularidade está numa molécula chamada Major-Histocompability Complex (MHC). A molécula MHC habilita o sistema imunológico a detectar patógenos intracelulares (como por exemplo os vírus) que residem dentro da célula. Os vírus são um problema, pois o que está dentro da célula não é visível para os linfócitos, que só podem ligar-se à estruturas que estão na superfície da célula. O MHC consegue laçar fragmentos de proteínas chamadas de peptídeos (que poderiam ser vírus) de dentro da célula e transportá-los para a superfície, deixando a mostra para um linfócito que esteja passando naquele momento. Sumarizando, o sistema imunológico natural possui muitas características que são desejáveis para o ponto de vista da ciência da computação. O sistema é massivamente paralelo e seu funcionamento é realmente distribuído. Os seus componentes individuais são disponíveis e inseguros, mesmo assim o sistema, como um todo, é robusto. 3 Princípios de sua Organização A seção anterior não deixou exatamente claro de como usar o sistema imunológico como modelo para a construção de bem sucedidos sistemas de segurança. Existem muitas diferenças que são fundamentais entre a biologia e os sistemas de computadores. Desta maneira, a tarefa de criar um sistema plenamente baseado na analogia do sistema imunológico é relativamente complexa. Estudos desenvolvidos nesta área apontam para um conjunto de princípios organizacionais que servem de guia para o desenvolvimento de sistemas de segurança. Agentes distribuídos: O sistema imunológico humano, através dos linfócitos, é um bom exemplo de uma arquitetura altamente distribuída e robusta. Multicamadas: no sistema imunológico, múltiplas camadas de diferentes mecanismos são combinadas para proporcionar um alto grau de segurança. Diversidade: Fazendo sistemas diversificados, vulnerabilidades de segurança em um sistema são menos provável de serem difundidas. Disponibilidade: Nenhum componente do sistema imunológico humano é essencial, isto é, cada célula pode ser substituída. Em termos de sistemas computacionais, isto se aplicaria a processos ou agentes, portanto, software. Autonomia: O sistema imunológico não requer gerenciamento ou manutenção externa. Ele autonomamente classifica e elimina o patógeno, além de reparar a si próprio pela substituição de células Adaptabilidade: O sistema imunológico aprende detectando novos patógenos e conserva a habilidade de reconhecer patógenos já vistos através da memória imunológica. Sem camada de segurança: Inclusive uma célula do sistema imunológico que esteja infectada pode ser destruída pelos linfócitos, que por sua vez também são células. Mudança dinâmica da cobertura: O repertório de linfócitos que circulam pela corrente sanguínea é constantemente substituído por outros produzidos randomicamente. Identificação por comportamento: o comportamento é identificado pela variedade de peptídeos ou fragmentos de proteínas encontrados nos patógenos. Detecção por anomalia: O sistema imunológico possui a habilidade de detectar agentes patogênicos que ele nunca havia encontrado antes. Detecção imperfeita: Por aceitar a detecção imperfeita, o sistema imunológico aumenta a flexibilidade com a qual ele pode alocar recursos. O jogo dos números: O sistema imunológico humano replica detectores para lidar com a replicação dos agentes patogênicos. 4 Possíveis arquiteturas Algumas arquiteturas baseadas no mapeamento direto dos princípios do sistema imunológico estão descritas abaixo. Protegendo dados estáticos: Um lugar natural para começar é no nível dos vírus de computador. Self é interpretado como dados não corrompidos e nonself é interpretado por alguma mudança no self. Proteção de processos ativos em um computador: Se nós virmos cada processo ativo em um computador como uma célula, nós podemos pensar que um computador rodando muitos processos é como um organismo multicelular. Nesta implementação, a figura de um linfócito seria um processo que ajudaria o kernel e estaria habilitado a monitorar outros processos na busca de anomalias. Se um processo não estiver de acordo, o processo linfócito pode frear, suspender, matar ou reiniciar o mal comportado. Protegendo uma rede confiável de computadores: Uma outra abordagem é pensar que cada computador corresponde a um órgão em um animal. Cada processo continuaria a ser uma 5 célula, mas agora a rede seria o indivíduo. Neste modelo o sistema inato é composto dos mecanismos de segurança baseados nos hosts, combinado com um firewall, por exemplo. O sistema adaptativo poderia ser implementado como um processo linfócito assistente do kernel. Protegendo uma rede de computadores mutuamente disponíveis e confiáveis : Movendo a analogia para um nível mais acima, podemos considerar cada computador como uma célula, e a rede como o indivíduo. A imunidade inata emerge das defesas de rede tradicionais, como Kerberos e firewalls. O sistema adaptativo pode ser criado através de uma série de máquinas linfócitos que monitorariam o estado de outras máquinas na rede. Quando uma anomalia é detectada, a máquina problemática pode ser isolada, reiniciada, ou desligada. Limitações Embora os autores acreditem que a tradução da estrutura do sistema imunológico humano para os computadores possa render frutos, a solução biológica não é diretamente aplicável aos sistemas computacionais. Portanto, soluções não biológicas serão levadas em consideração quando se apresentarem mais apropriadas. A segurança computacional está fundamentada em cinco princípios: confidencialidade, integridade, disponibilidade, contabilidade e corretude. No sistema imunológico, há somente um fator realmente importante: sobreviver, que pode ser conseguido com a combinação de integridade e disponibilidade. Esta é provavelmente a mais importante limitação da analogia. 6 Conclusões Senhas difíceis, sistemas de acesso apropriados e um projeto cauteloso continuarão sendo necessários para se obter um nível de segurança satisfatório. Todas estas medidas podem ser vistas como equivalentes à pele e o sistema inato nos seres humanos. O foco deste artigo baseou-se no sistema adaptativo por se tratar de um tipo de mecanismo que não está presente nos sistemas computacionais atuais. Por esse motivo, os autores acreditam que a implementação deste recurso traria muito mais segurança aos sistemas computacionais do que os mecanismos hoje existentes. Referências [1] Fred Cohen. Computer viruses. Computer & Security, 6:22-35, 1987. [2] S. Forrest, S. Hofmeyer, A. Somayaji. Computer immunology. Communications of ACM, (submitted Dec. 1996) [3] S. Forrest, S. Hofmeyer, A. Somayaji, and T. Longstaff. A sense of self for UNIX processes. In Proceedings of the 1996 IEEE Symposium Security and Privacy. IEEE Press, 1996. [4] S. Forrest, A. S. Perelson, L. Allen, and R. Cherukuri. Self-nonself discrimination in a computer. In Proceedings of the 1994 IEEE Symposium on Research in Security and Privacy, Los Alamos, CA, 1994. IEEE Computer Society Press. [5] J. K. Inman. The Antibody combining region: Speculations on the hipótesis of general multispecificity. In G. I. Bell, A. S. Perelson, and Jr. G. H. Pimbley, editors, Theoretical Immunology, pages 243-278. M. Dekker, NY, 1978. [6] J. O. Kephard. A biologically inspired immune system for computers. In R. A. Brooks and P. Maes, editors, Artificial Life IV: Proceeding of the Fourth International Workshop on the Synthesis and Simulation of Living System, pages 130-139, Cambridge, MA, 1994. MIT Press.