Sistemas Operativos

I.P.T

Trabalho Prático nº 1    "Segurança e Protecção"

19/12/2002


Realizado por:


  1. Protecção
  2. Dominios de Protecção
  3. Estruturas do Dominio
  4. Matriz de Acesso
  5. Implementação da Matriz de Acesso
  6. Segurança
  7. Ameaças á Segurança
  8. Autenticação
  9. Encriptação
  10. Ameaças ao Sistema
  11. Monitoração de Ameaça
  12. Classificação da Segurança
  13. Protecção Vs Segurança
  14. Bibliografia


1. Protecção:

Os varios processos num sistema operativo devem ser protegidos de outras "actividades". Nesse sentido, existem varios mecanismos que podem ser usados para assegurar que os ficheiros, segmentos de memoria, CPU e outros recursos possam ser operados apenas pelos processos que tenham a devida autorização do sistema operativo.
A protecção refere-se ao mecanismo para controlar o acesso a programas, processos ou a utilizadores para recursos definidos por um computador.
Quanto mais sofisticado os sistemas computacionais vão ficando,maior é a necessidade de proteger a integridade das aplicações .
A protecção foi originamente concebida como um suporte para sistemas operativos de multiprogramação, para que utilizadores não confiaveis, possam então partilhar seguramente um nome de espaço logico comum, como uma directoria de ficheiros ou partilha de nome de espaço fisico comum , como a memoria.por exemplo.
Um importante principio que deveremos ter em conta, é a separação entre o que é politica e o que é mecanismo , pois mecanismo determina como alguma coisa é feita e politica decide o que será então feito.


2. Dominios de protecção :

Um sistema computacional é uma colecção de processos e objectos. Ao falar de objectos , falamos de hardware ( Cpu, memória, discos, etc ... ) e software ( ficheiros, programas,semáforos, etc ... ) e objectos são essencialmente tipos de dados abstractos (TDA).
Cada objecto tem um unico nome que diferencia este dos outros objectos do sistema, e cada um destes pode ser acedido apenas atraves de operações bem definidas. Os objectos são essencialmente tipos de informações abstractas que devem ter acesso a objectos e operações autorizadas, devendo tambem ter acesso aos recursos que precisa entãopara terminar a sua tarefa, que se denomina PNC ( "Principio da Necessidade de Conhecer" )


3. Estruturas do Dominio :

Para entendermos tudo isto , introduzimos o conceito de dominio de protecção. Um processo opera dentro de um dominio, que especifica os recursos que o processo poderá aceder. Cada dominio define um conjunto de objectos e tipos de operações que devem ser invocadas em cada objecto. A abilidade para executar uma operação num objecto é um "direito de acesso". Cada dominio define os objectos acessiveis e operações autorizadas ( direito de acesso ). Um Dominio de protecção D é um conjunto de pares ordenados < obj1 , acess1 > , com :

- obj1 - objecto com direito de acesso
- acesso1 - conjunto de operações autorizadas

A associação entre um processo e um dominio pode ser tanto estatica como dinamica. Se for estática , a associação é fixa durante o seu tempo de vida e adere ao principio PNC que requere um mecanismo para modificar o conteudo do dominio. Se a associação for dinamica, um processo pode mudar o dominio e requere
um mecanismo de comutação de dominio.

Devemos tambem permitir que um dominio seja mudado. Se não pudermos mudar o conteudo de um dominio, poderemos prover o mesmo efeito criando um novo dominio com o conteudo mudado, e mudando para o novo dominio,quando quisermos mudar o conteudo do mesmo.Um dominio poderá ser realizado em diferentes maneiras, estas são :

- Cada utilizador será um dominio

A identidade do usuário define o dominio, a mudança do dominio ocorre quando existe mudança de usuario

- Cada processo será um dominio

A identidade do processo define do ominio, a mudança ocorre quando um processo envia uma mensagem a outro processo

- Cada procedimento será um dominio

O ambito do procedimento define o dominio, a mudança ocorre em uma invocação.

Considerando o modelo "monitor - modo de utilizador" como modelo de execução em um sistema operativo. Quando um processo é executado no modo monitor, este pode executar previlegiadas instruções e ganhar então controlo completo do sistema computacional. Por outro lado, se o processo é executado no modo de utilizador, este pode invocar apenas instruções que são não previlegiadas. Estes dois modos ( executados no dominio do utilizador ) protegem um sistema operativo de processos do utilizador. Num sistema operativo multiprogramado, dois dominios de protecção são insuficientes, desde que,um utilizador queira tambem ser protegido de outro utilizador. Um esquema mais elaborado então será necessário, por exemplo, em dois sistemas operativos poderemos verificar estes conceitos implementados :

- UNIX

- Em que um directorio define para cada arquivo uma lista de acesso simples(3 entradas)

- Quando se abre um arquivo, se obtem a capacidade que indica a entrada em tabela de arquivos

- Na entrada se copia desde adirectoria, ás permissões de acesso

- Em cada acesso se verifica que se tem as permissões

- MULTICS

Utiliza uma estrutura de anel em que cada anel corresponde a um unico dominio. Cada anel exterior é um subconjunto do dominio de um anel interior, em que uma chamada ao sistema permite mudar de nivel ( comutação do dominio ) , mas no entanto este sistema não é flexivel nem eficiente.


4. Matriz de acesso

Um modelo de protecção pode ser visto abstratamente como um matriz, sendo as linhas dominios e as colunas objectos, e cada entrada na matriz contem um conjunto de direitos de acesso. Este mecanismo assegura-nos uma protecção sem impor uma politica particular de protecção ao sistema ou aos seus usuários.
A matriz de acesso dá-nos um mecanismo apropriado para definir e implementar um controlo extricto para associações estaticas e dinamicas entre processos e dominios.Quando se muda um processo de um dominio para outro, estamos executando uma operação em um objecto e similarmente quanto mudamos o conteudo de uma matriz de acesso , estamos executando uma operação em um objecto.
Podemos controlar estas mudanças incluindo a matriz de acesso como um objecto. Ao permitir mudanças no conteudo,nas entradas da matriz de acesso precisamos de três operações : copy,owner e control.
Um sistema deverá seleccionar um destes três direitos de copia, ou mesmo os tres identificando-os com direitos separados : copy, transfer, e limited copy.
O direito de cópia permite um processo de copiar determinados direitos de uma entrada em uma coluna para outra entrada na mesma coluna . O direito de proprietário controla essas operações. O direito de copia e de proprietário permite-nos mudar as entradas em uma coluna. o direito de controlo é aplicavel apenas a objectos de dominio. Enquanto isso o direito de copia e proprietário dá-nos um mecanismo para limitar a propagação de direitos de acesso. O mais importante nisto tudo é a implementação e controlo de protecções dinamicas, podendo novos objectos e novos dominios serem criados dinamicamente e incluir-se no modelo de matriz de acesso.


5. Implementação da matriz de acesso

Normalmente a matriz de acesso é dispersa ( spare ) , não resultando eficiencia numa implementação da tabela completa, sendo os seus metodos de implementação, os seguintes :

 

 

Conjunto de entrada do tipo :

<Di,Oj,Rk>

Se o dominio Di tenta aceder ao objecto Oj mediante operação M , permite-se que :

Existe na tabela de entrada <Di,Oj,Rk> e M pertence a Rk

Desvantagens : Tabela é muito grande para ser mantida na memoria, Não permite agrupar objectos ou dominios

 

 

Cada coluna da matriz implementa uma lista de acesso (LA) para cada objecto.

As entradas vazias descartam-se : L.A para objectos e Oj contem pares ordenados do tipo < Dj, Rk >

Pode-se extender usando conjunto de direitos de acesso por defeito Ra

Se o dominio Dj tenta aceder ao objecto Oj mediante operação M,se permite que

Existe em LA de Oj entrada <Dj,Rk> e M pertence a Rk ou M pertence Ra.

 

Cada fila da matriz implementa lista de capacidades (LC) para cada dominio

Uma capacidade é um objecto que contem os direitos de acesso a um objecto

Uma capacidade se representa usualmente como um ponteiro ou direcção.

Uma capacidade geralmente não é acessivel pelo processo que se executa no dominio ( é um objecto protejido )

 

Compromisso entre LC e LA

Cada objecto possui uma lista unica de padrões de bits : Fechaduras (locks)

Cada dominio possui uma lista unica de padrões de bits : chaves ( Keys )

Um processo no dominio pode aceder a um objecto que tem uma chave que abra alguma fechadura do objecto

Lista as chaves do dominio que se deve proteger



6. Segurança

A ISO (International Organization for Standardization) define segurança como a tentativa de minimizar a vulnerabilidade de valores e recursos. Vulnerabilidade é qualquer falta de segurança a partir da qual alguém pode tirar proveito para violar o sistema ou a informação que contém.


7. Ameaças á segurança

As ameaças à segurança de um sistema podem ser classificadas como intencionais, acidentais, activas e passivas:

Os sistemas que existem numa rede estão sujeitos a vários tipos específicos de ataques. Esses tipos incluem:


8. Autenticação

Um dos maiores problemas nos sistemas operativos é o problema da autenticação, poderemos nos perguntar como é que sabemos se um determinado utilizador é o verdadeiro utilizador do sistema, então essa pergunta responde-se com a autenticação, que é baseada em alguns items :

Password - adequada quando não existe comunicação

Autenticação biométrica - muito segura , mas limitado e custosa

Autenticação baseada em token - Segura , mas custosa

Autenticação criptografica - o mais usado em sistemas distribuidos

 


9. Encriptação

Para manter segura um dado tipo de informação, precisamos de mecanismos para proteger a informação de um usuário que é transmitida através da rede.
A encriptação é o mais comum método para proteger a informação transmitida sobre links não fidedignos. O mecanismo é este :

1. A informação é encriptada ( codificada ) da sua forma inicial ( texto limpo ) para uma forma interna ( "texto cifra " ) . Este texto interno mesmo que legivel, não faz o minimo sentido.

2 - O "texto cifra" pode ser armazennado num ficheiro de leitura ou transmitido sobre canais não protegidos

3 - Para fazer sentido o "texto cifra" , o receptor precisa desencriptar este para um texto limpo


10. Ameaças ao sistema

É possivel criar uma situação onde os recursos do sistema operativos e ficheiros do utilizador são alterados. Os dois metodos mais comuns para conseguir tal abuso são os worms e virus

Worms

Durante o final de tarde do dia 2 de Novembro de 1988, um programa auto-replicante chamado WORM, foi lançado para a Internet. Durante a noite, este programa mandou cópias suas de máquina em máquina, fazendo com que as máquinas que infectou trabalhassem sob grandes cargas de workload, recusando serviços aos seus utilizadores. Embora o programa só infectasse dois tipos de computadores (sistemas Sun-3 da e sistemas VAX da , ambos a correr variantes do 4.0 BSD UNIX da Universidade de Berkeley , espalhou-se rápidamente, tal como a confusão, e algumas vezes pânico dos administradores dos sistemas infectados. Embora alguns administradores de sistemas tivessem a percepção de que isto poderia teoricamente acontecer, - os security holes explorados pelo WORM eram bem conhecidos - o que estava a acontecer era uma grande surpresa para a grande maioria deles.
O WORM não destruiu nenhum ficheiro, não roubou informação (outra que não passwords), não interceptou mail privado. Só implementou software destrutivo. Ele destruiu severamente as transmissões sobre a rede. Vários sites, incluindo partes do MIT, NASA’s Ames Research Center e Goddard Space Flight Center, The Jet Propulsion Laboratory, e o U.S. Army Ballistic Research Laboratory desligaram-se da Internet para evitar uma nova contaminação. Ainda por cima, a Defense Communications Agency ordenou que as ligações entre a MILNET e a ARPANET fossem interrompidas e mantidas desligadas durante 24 horas. Irónicamente, isto foi talvez a pior coisa a fazer, visto que as primeiras tentativas para combater o WORM foram distribuídas pela rede.
Este incidente foi talvez o maior problema de segurança em redes alguma vez divulgado.

Virus

Uma outra forma de ataque a um computador são os virus, tal como os worms, os virus foram criados para se expandirem sobre outros programas, podendo modifica-los, destrui-los ou causar até crashes no sistema e mal funcionamento de programa.Enquanto que um worm é um estruturado e completo programa, um virus é um fragmento de codigo num programa
Virus são um problema de maior para os usuários de computadores, especialmente usuários de sistemas de micro-computador.


11. Monitoração de ameaça

O sistema de segurança pode ser melhorado com duas técnicas de administração, uma delas é a monitoração de ameaça. O sistema checa por amostras suspeitas de actividade em uma tentativa para detectar uma violação de segurança. Um exemplo disto é o sistema "time-sharing" em que o sistema conta o nº incorrecto de passwords dados pelo utilizador ao tentar entrar no sistema, e se mais que um dado nº de tentativas incorrectas deverá sinalizar uma tentativa de alguem tentar adivinhar a password. Outro exemplo comum é um "audit log", que é uma simples gravação do tempo, usuário, e tipo de acessos a um objecto. Depois da segurança ter sido violada, o "audit log" pode ser usado para determinar como e quando o problema ocorreu e verificar a quantidade de prejuizo que foi feito. Esta informação poderá ser util, tanto para tentar recuperar da violação, e possivelmente para melhorar o sistema de segurança do sistema.


12. Classificação da segurança

O U.S Department of Defense Trusted Computer System Evaluation Criteria especifica quatro divisões de segurança nos sistemas :

É o nivel mais alto de segurança, permite a criação de uma lista de controlo de acesso, que dá-nos os usuários ou grupos que não têm garantido acesso a um dado objecto

 

Esta divisão de protecção tem todas as propriedades da classe C, mais etiquetas sensitivas de ataque para cada objecto

 

Esta divisão de segurança tem dois niveis incorpopora algumas formas de controlo para permitir que os usuarios protejam informação privada , tendo um controlo de acesso a nivel individual, algumas versões de UNIX são certificadas neste nivel

É o nivel de protecção minima, e é usado para sistemas, tais como MS-DOS e Windows 3.1, que falham os requisitos das outras classes.


13. Protecção Vs Segurança

A protecção baseia-se no controle de acesso de processos aos objectos ou recursos de um sistema e a segurança abrange mais coisas , tais como controle de acesso não autorizado ao sistema, alteração ou modificação de informação e privacidade de informação , etc.


14. Bibliografia

- "Computer Security Basics"
Deborah Russel and G.T. Gangemi Sr.
O’Reilly & Associates, Inc.
 Julho 1992


- " Operating System Concepts"

Silbershatz Galvin
Addison Wesley
 1998