I.P.T
Trabalho Prático nº 1 "Segurança e Protecção"
19/12/2002
Realizado por:
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
É 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.
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