Sistema Operacional Haiku Adão Rafael Xavier1, Alexandre Amador1, Alexandre Peter1, Fausto Levandoski1 1 Universidade do Vale do Rios dos Sinos (UNISINOS) Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 – 93.022-000 – São Leopoldo– RS – Brasil {rafaxavier, alexandre.amador, alexpeterpan, farole}@gmail.com Abstract.This article aims to show a little brief overview of Open Source Operation System Haiku and one aspect the security of information that show it. Resumo. Este artigo tem por objetivo apresentar uma visão geral do sistema operacional Open Source Haiku e um aspecto de segurança da informação que apresenta. Palavras-chave: BeOs, Haiku, segurança, sistemas operacionais. 1. Introdução Neste artigo apresentaremos um estudo sobre o sistema operacional Haiku, com uma breve história e suas principais características, bem como seu maior objetivo ligado as questões de segurança de um sistema operacional no que tange seu sistema de arquivo e chamada de sistemas. Este estudo irá abranger práticas sobre o Haiku em um estudo de caso. Em seu desenvolvimento, serão abordados alguns itens como: visão geral que dará uma abrangência rápida sobre a história e o futuro deste SO (Haiku), características e as funcionalidades, aspectos de segurança, sistema de arquivos, chamada de sistemas e um estudo de caso que contará com uma parte prática que mostrará as funcionalidades e vulnerabilidades deste sistema. A apresentação prática será ilustrada neste artigo em forma de fotos. 2. Visão Geral Ao contrário do que muitos pensam o BeOS não foi baseado em Unix, mas sim foi escrito do zero. Ele visava ser um sistema operacional extremamente rápido, e econômico, pois através do uso de vários processadores baratos iria se alcançar o desempenho de um mais caro, por isso ele foi desenvolvido para ser Multi Threading, e realmente conseguiu. Enquanto o Sistemas Windows mais atuais conseguem um desempenho de processamento 70% melhor usando 2 processadores, o BeOS conseguia 99%. O desenvolvimento do BeOS foi descontinuado em 2001, ano em que a Be Incorporated foi adquirida pela Palm Incorporated. Com a descontinuidade do BeOS surgiu a necessidade de se desenvolver um sistema operacional capaz de suportar as aplicações existentes e de dar apoio a comunidade de usuários. Nasce então o OpenBeOS que por questões de propriedade intelectual o foi alterado para Haiku. O nome "Haiku" que significa mensagens poéticas japonesas que tenha 5, 7 e 5 sílabas respectivamente, comentando sobre a natureza ou as estações, já para o sistemas operacional "Haiku" surgiu para as mensagens de erros pelo navegador e outros programas, associando ao nome do sistema operacional. O Haiku é desenvolvido pela Haiku Incorporated, empresa de sem fins lucrativos, fundada em 2003. O sistema operacional recebe apoio para desenvolvimento além de sua equipe do projeto do GSoC (Google Summer of Code). A base do sistema operacional Haiku foi desenvolvida em C++ e tem uma API (Application Programming Interface ou Interface de Programação de Aplicações) orientada a objetos. Atualmente Haiku se encontra na versão Alpha 2. Figura 1: Ambiente do desktop do Haiku Fonte: haiku-sistemas-operacionais – ricardoz 3. Característica e Funcionalidades O Haiku foi e continua sendo projetado para ser um ambiente de trabalho de fácil utilização, eficaz e leve, no qual suas especificações técnicas, mínimas exigidas, confirmam isso. O Haiku exige um computador Pentium III com 256MB de memória RAM e HD com 2 GB de espaço de armazenamento, ou seja, não chega nem no mínimo utilizado hoje no mercado. Contudo, ele funciona apenas em sistemas x86-32 bits da Intel, AMD ou compatíveis. Apesar da modesta configuração mínima exigida pelo sistema, o mesmo foi desenvolvido para gerenciar processadores multitarefa de forma muito eficaz. O sistema possui diversos aplicativos e jogos instalados em seu sistema, além de possuir o navegador Bom Echo, desenvolvido pela Mozila, que apresenta a mesma estrutura do Firefox e complementa com diversos recursos multimídias que usamos diariamente. A quantidade de ferramentas para edição de áudio e vídeo enriquece as características do sistema, pois somando a quantidade que hoje possuem o Windows e o Linux não chega o que está disponível para Haiku. Como o Haiku foi desenvolvido em base do BeOS e para adequar ao seu projeto Haiku literalmente teve uma reestrutura quase que total, onde hoje seu kernel é híbrido sendo assim parte de seu kernel é microkernel e a outra parte é monolítica. Na construção do Microkernel Mr. Joche Liedtke (cientista alemão) explicava que o microkernel minimiza a parte obrigatória do Sistema Operacional, fornecendo um micronúcleo de mecanismos que aumentam a flexibilidade da aplicação, ou seja, se for parado o servidor de comunicação de rede o sistema operacional não para como um todo, somente este serviço. Por sua vez a parte do kernel do Haiku que é monolítica, ela se comporta de um único bloco de kernel, onde houver a parada desse bloco o sistema para como um todo. Segue abaixo as características apontadas: Multitarefa com "multi-threading" pervasivo - Haiku suporta múltiplas CPUs e múltiplas cores. Baixa latência para serviços de kernel e de mídia. O Haiku é o que podemos chamar de um SO "soft-realtime" (um sistema assim garante tempos médios muito baixos para as tarefas de baixo nível. Um "hardrealtime" garante um tempo máximo - que pode ser alto ou não - para tarefas de baixo nível); Sistema de arquivos de 64 bits, "multi-threaded", orientado a objetos e com recursos similares a uma base de dados; Interface com usuário simples e intuitiva; "Orientado ao usuário". Basicamente a resposta ao usuário é mais importante que qualquer outra coisa no SO. Por exemplo: não existe o conceito da ampulheta e similares no Haiku. O sistema nunca está ocupado demais pra responder ao usuário. 3.1 Aspectos de Segurança Analisar aspectos de segurança no sistema Haiku é algo delicado ainda, pois a implementação de segurança ainda se faz necessária em praticamente todos os pontos do sistema olhando sob o ponto de vista de rede. Mas sendo um sistema operacional de usuário único com estrutura UNIX-like, o Haiku ainda não é um risco de segurança. Sua principal utilização é mesmo nos desktops, e praticamente não existem servidores fazendo uso dele. A pequena base de usuários e a compatibilidade com o POSIX implicam na inexistência de vírus para ele. A única coisa que pode chegar perto de ser um malware no Haiku seria um script mal intencionado do BASH, ou uma bomba lógica. Não há tela de login protegendo o usuário antes de o desktop abrir, e isso pode ser considerado um risco. Nada que a biblioteca Real Multi User não resolva, ou o software Lock Workstation desenvolvido por terceiros. Primeiro escolhemos realizar testes com a organização de grupos e permissões dos arquivos no sistema de arquivos BFS (ou BeFS no Linux), assim como criação de outros grupos e outros usuários no sistema. Alguns podem estranhar o fato de um sistema operacional UNIX-like não ter acesso multiusuário. Esse é mais um detalhe que separa o Haiku do OS X, do Solaris e do Linux. A estrutura de pastas até pode lembrar o Linux e o OS X, o prompt do BASH pode estar lá, mas no fundo o Haiku é um sistema operacional para um único usuário. O dono dos arquivos sempre será "Usuário", e o grupo será "root". As coisas funcionam assim porque os desenvolvedores queriam usar a estrutura UNIX-like, mas não viam a necessidade de incluir acesso multiusuário nos tempos do BeOS. 3.2 Sistema de arquivos Haiku O sistema de arquivos nativo do Haiku é o BFS (Be File System), que conta com journaling e são totalmente 64 bits. Assim como o EXT3 e o XFS, ele diferencia maiúsculas e minúsculas e pode ser usado em dispositivos de armazenamento de mídia. E o que é mais importante, o BFS tem suporte a atributos estendidos de arquivo (metadados), além de capacidades de indexação e consulta. Sob muitos aspectos, o BFS age como um banco de dados relacional. O BFS consegue lidar com arquivos de até dois exabytes. Há suporte ao BFS no kernel do Linux, com o nome BeFS (para evitar a confusão com o UnixWare Boot File System, que tem a mesma abreviação). Outras características sobre o sistema de arquivos BFS: Tamanho Máximo de arquivo 260 GB Número máximo de arquivos Ilimitado Tamanho máximo do nome de arquivo 255 bytes Tamanho máximo de 2 EB Algumas curiosidades sobre a evolução e o suporte do BFS em outros sistemas. Além do original BFS usado BeOS em 1996, existem várias implementações para Linux. No início de 1999, Makoto Kato desenvolveu um Be File System Driver para Linux; porém, o driver nunca alcançou um estado de completo, de modo estável em 2001, Will Dyson desenvolveu sua própria versão do Linux BFS driver. Como parte da tentativa OpenBeOS (agora Haiku) para recriar o sistema operacional BeOS em 2002, Axel Dörfler e outros poucos desenvolvedores criam e lançam um chamado BFS reimplementado OpenBFS. Em janeiro de 2004, Robert Szeleney anunciou que tinha desenvolvido um fork deste sistema de arquivos OpenBFS para uso no SkyOS sistema operacional. A implementação OpenBFS regular também foi portado para Syllable e está incluído desde a versão 0.6.5. 3.3 System Calls Haiku Outra característica do Sistema Operacional Haiku está no número reduzido de syscalls quando comparado a sistemas operacionais com mais características de segurança. Syscall é a capacidade de código do aplicativo ser executado em separado do código crítico do núcleo do sistema. Aplicações comuns são executadas em modo usuário o que significa que elas não podem manipular diretamente os dados de estruturas vitais do sistema. Isso torna o sistema operacional muito mais estável evitando que a falha em uma aplicação interfira no restante do sistema. Como o Haiku foi desenvolvido em base do BeOS e para adequar ao seu projeto Haiku literalmente teve uma reestrutura quase que total, onde hoje seu kernel é híbrido sendo assim parte de seu kernel é microkernel e a outra parte é monolítica. Kernel híbrido combina velocidade, a simplicidade de um kernel monolítico com a modularidade e execução segura de um microkernel. Na construção do Microkernel Mr. Joche Liedtke (cientista alemão) explicava que o microkernel minimiza a parte obrigatória do Sistema Operacional, fornecendo um micronúcleo de mecanismos que aumentam a flexibilidade da aplicação, ou seja, se for parado o servidor de comunicação de rede o sistema operacional não para como um todo, somente este serviço. Por sua vez a parte do kernel do Haiku que é monolítica, ela se comporta de um único bloco de kernel, onde houver a parada desse bloco o sistema para como um todo. Nos sistemas POSIX e similares, as chamadas de sistema mais usadas são close, execve, fork, wait, kill, open, read, write e ioctl. Os sistemas operacionais atuais tem centenas de chamadas de sistema. Por exemplo, o Linux tem quase 300 chamadas de sistema diferentes. O FreeBSD tem praticamente o mesmo número, enquanto o Haiku praticamente 78 system call, o que proporciona um kernel menor e com código ainda bem enxuto. 6. Estudo de caso Como foi abordado no capitulo anterior, o Haiku implementa uma quantidade inferior de syscalls quando comparado com outros sistemas operacionais com mais features de segurança. Para a apresentação do estudo de caso utilizaremos o comando strace. Este é um aplicativo presente em diversos sistemas operacionais. O comando é bastante útil para se verificar quais chamadas de sistema são utilizadas. O estudo de caso consiste em comparar o número de chamadas de sistemas disparadas o uso do comando cat para ler um arquivo texto no Haiku e em um Sistema Operacional Linux – Ubuntu. Figura 2: Haiku Figura 3: Linux Como pode ser percebido número de chamadas de sistemas no Linux foi muito maior quando comparado ao número no Haiku. 5. Conclusão O sistema Operacional Haiku cumpre o que promete no quesito desempenho e velocidade de respostas ao usuário, porém ainda precisa evoluir muito na parte de gerencia de contas de usuários, criação de ferramentas nativas para segurança do sistema operacional. Existe a necessidade iminente da criação de uma versão para instalação que independa de virtualizacão, pois somente assim poderá ser testada toda a potencialidade e funções do sistema operacional HAIKU. 6. Referências Jaeger, Trent. (2008) “Operating System Security”. Morgan & Claypool Publishers. Estados Unidos. Coloja, Razvan T. (2010) “Haiku Could Change (http://www.razvancoloja.com/2010/haiku-could-change-the-world) entre 1 a 28 de abril de 2011). The World”. (Consultado David, Marcio F. (2007) “Haiku, o BeOS Open Source”. (www.hardware.com.br/dicas/haiku.html) (Consultado entre 1 a 28 de abril de 2011). Wiki (2010) “Haiku: FutureHaikuFeatures” (http://dev.haikuos.org/wiki/FutureHaikuFeatures) (Consultado entre 1 a 28 de abril de 2011). Forum thread started by jrash (2008) “Haiku Kernel Architecture Questions” (http://www.haiku-os.org/community/forum/haiku_kernel_architecture_questions) (Consultado entre 1 a 28 de abril de 2011). Haiku, Inc (2011) “Haiku” (http://www.haiku-inc.org/about.html) (Consultado entre 1 a 28 de abril de 2011). Free Software Foundation, Inc. (2010) “GNU Hurd/ microkernel” (http://www.gnu.org/s/hurd/microkernel.html) (Consultado entre 1 a 28 de abril de 2011). Yager, Tom. (1999) “Friendly BeOs targets developers”. Infoworld Magazine. August, pp 35. Morrey, Brad (1997) “BeOs shows promisse as an alternative to MacOs”. Infoword Magazine. November, pp 112.