• Nenhum resultado encontrado

Princípios de Segurança de Sistemas Operacionais

No documento Fundamentos Em Sistemas Operacionais (páginas 145-155)

Tema 4: Segurança de Sistemas Operacionais

4.2 Princípios de Segurança de Sistemas Operacionais

Um fator de imensa importância que deve ser levado em consideração nos projetos de sistemas operacionais é a questão da segurança17 que está

ligada diretamente ao gerenciamento dos sistemas de arquivos, pois é ali que estão as informações valiosas de seus usuários.

Muitas questões devem ser levadas em con- sideração na segurança de um sistema como:

A confidencialidade dos dados, que significa manter em sigilo dados secretos, e aí entra também a privacidade do usuário contra o mau uso da infor- mação sobre eles;

A integridade dos dados, em que usuários não autorizados não devem ser capazes de modificar qualquer dado sem a permissão do proprietário;

A disponibilidade do sistema, em que ninguém pode interferir no sistema para deixá-lo inoperante.

Invasores

Na categoria de invasores de sistemas com- putacionais, temos aqueles que simplesmente de- sejam ler os arquivos não autorizados e outros que querem alterar os dados alheios.

Um vírus é basicamente um pequeno progra- ma que se replica com a finalidade de causar algum dano, pode ser considerado um invasor, ou uma ferramenta de quem o escreveu.

Quantos tipos de vírus você conhece?

Um worm (verme) é um processo que usa o mecanismo de propagação para acabar com o

17 Em 1985 foi publicado um docu- mento formalmente conhecido como o padrão DoD 5200.28 do Departamento de Defesa dos Estados Unidos, mais popu- larmente conhecido como Livro Laranja (Orange Book), por causa da cor de sua capa.

desempenho do sistema. Ele distribui cópias de si mesmo esgotando os recursos do sistema, bloquean- do até seu uso pelos demais processos.

Enquanto os vermes são estruturados como programas completos e independentes, um vírus é um fragmento de código embutido em um programa legítimo.

Quantas formas de propagação você conhece? Já ouviu falar do cavalo de troia? Ele é um vírus ou um verme? Reflita sobre isso e divulgue suas conclusões no AVA para discussão.

A Segurança Java

Quando pensamos em invasão de computa- dores, imediatamente imaginamos a internet como seu principal meio. Assim, é fácil entender por que a segurança é um recurso importante da linguagem Java, já que os programas podem operar em um ambiente distribuído (como a internet).

O melhor exemplo desses programas é o uso de applets, que consiste em um programa Java que é descarregado de um servidor Web e que executa uma página web.

Se o JVM (Java Virtual Machine – Máquina vir- tual do Java) no navegador não fornecer recursos de segurança suficientes, um applet poderia executar aplicativos maliciosos no computador.

Vale a pena desativar o recurso Java de seu navegador para garantir sua segurança? Pense a respeito e divulgue suas conclusões no AVA para discussão.

Perda de Dados

Além de todos os problemas de ameaças causados por invasores, dados podem ser perdi- dos por diversos fatores como: perda acidental (incêndios, enchentes, quedas e outros), proble- mas de hardware ou software (defeitos na placa mãe, CPU, erros de programas e outros) e erros humanos (entrada incorreta de dados, execução errada do programa e outros).

A melhor solução para evitar dores de ca- beça quando o assunto é perda de dados é man- ter sempre uma cópia de segurança (backup) atu- alizada, de preferência fisicamente distante dos dados originais.

Criptografi a

O objetivo da criptografia é esconder o signi- ficado de uma informação (um processo conhecido como encriptação). Através dele as informações são codificadas para preservar seu conteúdo original, e somente quem possuir a chave dessa codificação poderá conhecer seu significado.

A criptografia pode ser dividida em dois ramos conhecidos como transposição e substituição. Na transposição, as letras da mensagem são simplesmente rearranjadas, gerando um anagrama.

Figura 57 - Exemplo de Transposição

Fonte - SINGH, Simon. O livro dos códigos – a ciência do sigilo – do antigo Egito à criptografi a

Na substituição cada caractere de uma mensagem é substituído por outro caractere. Uma das técnicas muito utilizada era o emparelhamento ao acaso das letras do alfabeto, substituindo cada letra na mensagem original por seu par.

Figura 58 - Cifra de Deslocamento de César

Fonte - SINGH, Simon. O livro dos códigos – a ciência do sigilo – do antigo Egito à criptografia

quântica. 7. ed. Rio de Janeiro: Record, 2008, p. 27.

Figura 59 - Criptografi a Simétrica

Fonte-http://penseresponda.fi les.wordpress.com/2009/04/imagem11.

jpg?w=450&h=161. Acesso em: 17 de dez. de 2010. Criptografi a com Chave Simétrica

O ciframento de uma mensagem baseia-se em dois componentes: um algoritmo e uma chave. Um algoritmo é uma transformação matemática, ele converte uma mensagem clara em uma mensagem cifrada e vice-versa.

Quando temos a mesma chave para o cifra- mento e o deciframento, o processo da criptografia é conhecido como Simétrica.

Criptografi a com Chave Assimétrica

Também conhecida como criptografia de chave pública, é uma estratégia de criptografia que combina um par de chaves, uma chave privada e uma chave pública.

A chave pública pode ser distribuída livremente para qualquer correspondente até mesmo por e-mail ou outras formas, já a chave privada deve ser conhecida apenas pelo seu dono.

Em um algoritmo de criptografia assimétrica, um código cifrado com a chave pública pode somente ser decifrado pela sua correspondente chave privada.

Figura 60 - Criptografi a Assimétrica

Fonte - http://penseresponda.fi les.wordpress.com/2009/04/imagem2.jpg?w=450&h=153. Acesso

em: 17 de dez. de 2010

A grande vantagem deste sistema é permitir que qualquer um possa enviar uma mensagem secreta, apenas utilizando a chave pública de quem irá recebê-la. Como a chave pública está amplamente disponível, não há necessidade do envio de chaves como é feito no modelo simétrico.

Uma chave de dois dígitos permite 100 com- binações. Uma chave com seis dígitos, 1 milhão de combinações. Imagine uma chave de 256 bits.

Assinatura Digital

Uma assinatura digital torna possível assinar mensagens eletrônicas e qualquer outro documen- to digital de modo a garantir sua autenticidade e evitar seu repúdio por quem a enviou.

Como foi visto, uma chave pública é usada para cifrar uma mensagem que só pode ser deci- frada por uma única chave privada. Mas o processo pode ser invertido, de modo que a chave privada seja usada para cifrar e a chave pública para decifrar.

Sendo feito desta forma, não garantiria ne- nhuma segurança à mensagem, já que qualquer chave pública poderia decifrar a mensagem cifrada pela chave privada, mas garantiria sua autenticida- de, pois se puder decifrar a mensagem usando uma chave pública, ela só poderia ter sido cifrada com a chave privada correspondente.

O valor resultante, chamado de bloco de as- sinatura, é anexado ao documento e enviado ao receptor. Para usar esse esquema, o receptor deve conhecer a chave pública do emissor.

Autenticação de Usuário

Normalmente para se ter acesso ao sistema operacional o usuário deve passar por um proces- so de autenticação, cuja maneira mais amplamente utilizada atualmente é pedir que o usuário digite um nome e uma senha.

A implementação mais simples de um siste- ma de autenticação de usuário é manter uma lista central de pares (nome de entrada, senha). O nome de entrada digitado é localizado na lista e a senha digitada comparada. Se coincidirem, o acesso será permitido, do contrário será rejeitado.

Ataques Genéricos de Segurança

A partir do conhecimento do funcionamento, rotinas e estruturas do sistema operacional é possí- vel identificar algumas vulnerabilidades do sistema. Veja algumas estratégias utilizadas em ataque de sistemas:

• Requisitar páginas de memória e espaço em disco para leitura. Muitos sistemas não apagam nada antes de alocar esses espaços novamente e eles podem conter informações importantes escritas pelos antigos proprietários e essas informações permanecem lá até seu espaço ocupado ser utilizado novamente.

• Tentar chamadas ao sistema inválidas ou chamadas ao sistema válidas com parâ- metros inválidos, ou até mesmo chama- das ao sistema válidas com parâmetros válidos, mas fora dos limites, como no- mes de arquivos com milhares de carac- teres. Muitos sistemas podem ser confun- didos com facilidade.

• Iniciar o acesso ao sistema e, então, no meio desse processo, pressionar Delete ou Break. Em alguns sistemas é possível interromper o processo de verificação de senha e o acesso concedido.

• Tentar modificar estruturas do sistema operacional que ficam no espaço do usuário (se houver). Em alguns sistemas, para abrir um arquivo o programa constrói uma grande estrutura de dados contendo

o nome do arquivo e muitos outros pa- râmetros e passa para o sistema. Alterar esses campos pode arruinar a segurança.

Mecanismos de Proteção

Em alguns sistemas, a proteção é implemen- tada por um programa chamado monitor de referên- cia. Cada vez que se tenta um acesso a um recurso potencialmente protegido, o sistema pede primeiro ao monitor de referência para verificar sua validade.

Domínios de Proteção

Uma forma de entender melhor como é feita uma proteção de domínio é analisarmos como os sistemas operacionais baseados no UNIX (como o Linux) tratam os privilégios de seus processos.

No UNIX, um processo é definido pelo seu UID (Id do usuário) e GID (Id do grupo). Dada qual- quer combinação entre eles é possível criar uma lista completa de todos os objetos representados pelos arquivos especiais que podem ser acessados e seus privilégios18 (leitura, escrita ou execução).

18 O UNIX utiliza 3 bits para defi nir os argumentos de permissão de arquivo rwx. r=read (leitura), w=write (escrita) e x=execute (execução).

Figura 61 - Exemplo de Listagem de diretório no Unix

Fonte - SILBERSCHATZ, Abraham; GAGNE, Greg; GALVIN, Peter. Sistemas operacionais com java

Lista de Controle de Acesso (ACL)

A lista de controle de acesso (ACL – Access Control List) consiste em uma lista associada a cada arquivo, onde são definidos quais os usuários e os tipos de acesso permitidos. Assim, quando um usuário tenta acessar um arquivo, o sistema operacional verifica se a lista de controle autoriza a sua operação.

A maioria dos sistemas operacionais suporta o conceito de grupo, onde cada processo tem um identificador do usuário (UID) e um identificador de grupo (GID19). Assim, as entradas da ACL podem

receber as duas identificações, ficando mais fácil agrupar permissões a um grupo de usuários específicos.

INDICAÇÃO DE LEITURA COMPLEMENTAR

Para saber mais sobre Princípios de Segurança de Sistemas Operacionais leia o Capítulo 9 (p. 439-499) do livro de:

TANENBAUM, Andrew S. Sistemas operacionais mo- dernos. 2. ed. Rio deJaneiro: Prentice Hall Brasil, 2007. Tanenbaum apresenta os principais tipos de quebra de segurança existentes, dando exemplos em siste- mas operacionais específicos e mostrando algumas soluções para evitá-las.

Para saber mais sobre Princípios de Segurança de Sistemas Operacionais leia o Capítulo 19 (p. 418-434) do livro de:

19 Conforme visto acima.

SILBERSCHATZ, Abraham; GAGNE, Greg; GALVIN, Peter. Sistemas operacionais com java - conceitos e aplica- ções.Tradução da 6. ed. Rio de Janeiro: Campus, 2005. Em Sistemas Operacionais com Java, a segurança é apresentada com suas possibilidades aplicáveis apresentando exemplos em sistema operacional específico (Windows) e na linguagem Java.

PARA REFLETIR

Mesmo com as mais sofisticadas implementações de segurança adotadas, de nada adiantaria se o usuário deixasse sua senha escrita sobre a mesa; se a sala do servidor for de fácil acesso a qualquer um. Acredita, então, que é possível um responsável pela segurança de um sistema desconsiderar o elemento humano? Pense a respeito.

4.3 Cases Windows

No documento Fundamentos Em Sistemas Operacionais (páginas 145-155)

Documentos relacionados