Operating Systems Protection Mechanisms Flashcards

1
Q

Objetos vs Sujeitos

A

Objetos → memória, dispositivos de I/O (discos, redes, impressoras, monitores), ficheiros, bibliotecas dinâmicas,
entre outros.
Sujeitos → Utilizam os objetos, são constituídos pelos: processos, utilizadores, entre outros.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

dois mecanismos de proteção

A
  1. Separação → impedir o acesso arbitrário de sujeitos a objetos;
  2. Mediação → controlar o acesso de sujeitos a objetos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Separação - o que consiste?

A

Existe uma cooperação entre o sistema operativo e o hardware para garantir a separação.
De forma a impedir o acesso arbitrário é preciso separar os objetos dos sujeitos! Para isto, os processadores funcionam
em dois modos:
1. Modo núcleo (kernel mode) → é o modo no qual corre o núcleo do SO. Tem acesso a todos os objetos ou
recursos do sistema, ou seja, pode executar todas as instruções do processador sem restrições.
2. Modo utilizador (user mode) → Neste modo, o software não pode aceder arbitrariamente a objetos ou
recursos do sistema. O acesso aos recursos é controlado pelo SO. Quando o processador está em modo de
utilizador, este ignora ou lança uma exceção se instruções privilegiadas forem chamadas (in/out, sti/cli, hlt).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Para que servem System Calls?

A

No entanto, programas a correr em modo de utilizador precisam de comunicar com recursos privilegiados (escrever
monitor, ler do teclado e rato). Para isso o software utiliza System Calls, que consiste em chamar um procedimento do
núcleo que executa a funcionalidade pretendida.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Para que servem as Interrupção de Software e porque precisamos delas?

A

Surgem duas dificuldades:
1. O código do núcleo corre num modo diferente e mais privilegiado, logo uma chamada ao sistema tem de
forçar o processador a mudar de modo;
2. A memoria usada pelo núcleo é invisível para o processo em causa, logo sob o ponto de vista do processo que
faz a chamada ao sistema não existem endereços de procedimentos do núcleo para onde ele possa executar um
salto.
A solução:
Interrupção de Software → Força o processador a mudar para o modo núcleo e a executar uma rotina de tratamento
de interrupção.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Proteção de memória (faz parte de que mecanismo?)

A

proteção.

Algumas ideias chaves:

a. Acessos à memória não podem ser realizados através de system calls devido a problemas de performance
b. Como é que um processo em user mode não altera a memoria de outros processos?
c. Processo pode alterar o código e assim alterar o comportamento do kernel ou de outro processo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Vários tipos de separação?

A
  1. Separação física → Diferentes processos usam dispositivos distintos. (impressoras para diferentes níveis de
    segurança, bases de dados separadas de acordo com as sua tabelas)
  2. Separação temporal → Processo com requisitos de segurança diferente são executados em intervalos de tempo
    diferentes.
  3. Separação lógica → Os processos correm sob a ilusão de que estão sozinhos na máquina
  4. Separação criptográfica → A informação é cifrada de modo a ficar inacessível a quem não tem permissão para
    ler.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Explicar Segmentação

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Explicar Segmentação

A

A memória (ou espaço de endereçamento) de um programa é dividida em partes lógicas denominadas por segmentos.
Isto permite que os segmentos sejam guardados em qualquer ponto da memória física e sejam realocados para outras
áreas (até mesmo em disco).

Sendo os tipos de segmentos:

  1. Segmentos de código ou texto → que contem o código binário;
  2. Segmento de dados → contém variáveis e estruturas de dados globais;
  3. Segmento de pilha → contém a pilha/stack, que inclui variáveis locais, parâmetros e funções
  4. Segmento de heap → contém a heap, ou seja, memória reservada dinamicamente pelo programa.

Qualquer espaço de memória pode ser considerado abstratamente como uma tabela.
Em que cada posição (byte) é acedida através de um endereço.
Endereço → dois componentes (nome do segmento e o deslocamento)
Exemplo: endereço [dados:546] diz respeito à 547º posição de memória do segmento de dados.
Este formato permite que os segmentos sejam colocados em qualquer posição da memória RAM.
O nome do segmento é uma abstração que implica a tradução para um endereço de memória física (que é um número)
sempre que o segmento esteja aí colocado.

A abstração do endereço composto exige uma tabela em memória física que guarde informação sobre onde está cada
segmento em cada momento:
a. O seu inico em memória;
b. A sua localização em memória secundária.
Existe então, a Tabela de Tradução de Segmentos (translation table) que é gerida pelo SO e pela unidade de gestão
de memória (MMU). Que garante:
a. Permite que um processo aceda a um segmento apenas se esse segmento estiver na sua tabela.
b. Mantem informações dos access rights (rwx) para o segmento
c. Cada acesso a memória tem de passar pelo SO/MMu para que os access rights sejam confirmados.
d. Pode existir diversos segmentos com diferentes access rights

Isto garante que um processo:
1. Não pode aceder (ler,escrever,executar) à memória de outros processos ou SO;
2. Só pode aceder a um segmento de memória no modo indicado na tabela de tradução de segmentos, que é
controlada pelo SO.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Problemas Segmentação

A

A segmentação apresenta as seguintes dificuldades:
a. Sempre que há um acesso à memória é preciso verificar se este ultrapassa o fim do segmento, o que constitui
uma operação relativamente ineficiente dado o tamanho do segmento ser variável.
b. A heterogeneidade dos tamanhos dos segmentos causa fragmentação da memória.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Paginação o que é?

A

Cada parte do programa é denominada por página e todas as páginas têm o mesmo tamanho. (valor típico 4KB).
Os endereços de têm o seguinte formato [página,deslocamento].
As páginas não têm unidade lógica
Resolve os problemas da segmentação da seguinte forma:
a. A verificação do fim de página é trivial, porque todas as páginas têm o mesmo tamanho e este é uma potência
de 2. Logo a verificação faz se com um simples e-lógico.
b. As páginas são homogéneas, a memória física pode ser dividida num conjunto de molduras de página (page
frames)
A tradução entre endereços compostos e endereços de memória física é feita pela MMU com recurso à tabela de
tradução de páginas mantidas pelo SO. Existe uma tabela por cada processo, que contem informação sobre como a
página pode acedida (r,w,x).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Segmentação + Paginação

A
  1. Um programa (binário ou assembly) usa endereços lógicos compostos por um seletor de segmento e um
    deslocamento.
  2. Quando existe um acesso a memória, os endereços lógicos são convertidos pela MMU para endereços
    lineares, que são endereços da memória virtual dividida em páginas de 4 KB
  3. Os endereços lineares são convertidos pela MMU para endereços físicos, ou seja, endereços da RAM. O
    que gera uma exceção denominada por page fault, caso a página esteja em memória secundária, estando a
    rotina de tratamento da exceção correspondente encarregada de carregar a página em memória física.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

CPL (current privilegie level) e tables

A

Os seletores de segmentos contêm 2 bits para indicar o CPL (current privilegie level) do CPU, apenas são usadas:
0 → kernel mode
3 → User mode

A informação sobre os segmentos é guardada em duas tabelas:

  1. GDT (Global descriptor table) → para o sistema todo
  2. LDT (Local descriptor table) → Para cada processo
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Controlo de acesso

A

Objetos são acedidos por sujeitos (users, groups, processos)
Depois da separação ainda precisamos de garantir que apenas as ações autorizadas são realizadas nos objetos, para
isso surgiu o access control.
Access control está preocupado com a validação dos access rights dos sujeitos quando realizam operações nos
recursos do sistema.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Monitor de referência

A

Componente abstrato.
Com os seguintes cores:
1. O acesso dos sujeitos aos objetos é mediado pelo monitor. Que aplica a política de controlo de acessos.
2. As decisões são baseadas nas bases de dados de controlo de acesso. Esta base de dados contém informação
sobre sujeitos, objetos e permissões de acesso.
3. Dados sobre as decisões tomadas são guardados para auditoria futura.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

atributos monitor de ferencia

A
  1. Completude → tem de ser impossível de contornar, ou seja, um sujeito nunca pode conseguir aceder a um
    objeto sem passar pelo monitor
  2. Isolamento → tem de ser incorruptível
  3. Verificabilidade → tem de ser possível provar a correção da sua concretização
17
Q

Como criar o controlo de acessos:

A
  1. ACLs (lista de controlo de acessos)
    A cada objeto está associada uma lista de controlo de acessos. A listas contem pares (sujeitos, permissões), embora o
    sujeito possa ser um grupo.
  2. Capacidades
    Cada sujeito têm um passe (token) que indica a que objetos pode aceder e como. O passe contém uma lista de pares
    (objeto, permissões). As capacidades são protegidas criptograficamente.
  3. Matriz de controlo de acessos
    O SO tem uma matriz na qual as linhas representam os sujeitos, as colunas representam os objetos e as células contêm
    as permissões.
18
Q

Exemplo (Unix access control model)

A

Utilizador têm um username associado a uma conta.
Cada utilizador tem um user id (UID) e pertence a um ou mais grupos. Cada grupo tem um grupo id (GID).
UID 0 – root
No início unix, GID = 100 (group users)
Hoje, initial GID = UID
Cada objeto tem:
a. Dono UID e GID
b. Permissões acesso (rwx) para owner, group, world

Objetos são acedidos por programas.
O effective UID (EUID) e o effective GID (EGID) são comprados com as permissões do objeto.
Tipicamente EUID = real UID e EGID = real GID, no entanto existe:
Setuid, setgid, que permitem acesso a recursos que o utilizador normalmente não tem acesso.

19
Q

Algumas soluções para mitigar o escalonamento de privilégios:

A

a. Executar as operações que precisam de privilégios no início do programa e depois mudar o EUID para UID
real.
b. Dividir o programa em vários processos, executando com privilégios elevados só os que deles precisarem
c. Criar um ambiente de execução virtual usando chroot(), que permite impor ao programa cesso apenas a
ficheiros da raiz da árvore de pastas indicada.

20
Q

MAC/DAC

A

Controlo de acesso discricionário → os mecanismos de controlo de acesso permitem aos utilizadores especificar e
controlar o acesso aos objetos por parte dos outros utilizadores; (configurado pelo utilizador)
Controlo de acesso mandatório → o monitor de referência força uma política de controlo de acesso sobre todos os
objetos, política essa definida por um administrador.

21
Q

POSIX (Portable Operating System Interface)

A

com a noção de capacidades que
permitiam essa definição de privilégios mais finos.
Cada processo passa a ter associadas 3 máscaras (bitmaps):
1. Capacidades efetivas (E) → Quando um processo tenta fazer uma operação privilegiada, o SO, em vez de
verificar o EUID é = 0 verifica se esta marcara tem o bit correspondente à capacidade necessária para fazer a
operação posto a 1;
2. Capacidades permitidas (P) → indica as capacidades que o processo pode usar; tipicamente P=E, mas o
processo pode escolher retirar de E algumas capacidades; o processo tem permissão para pôr a 1 em E todas as
capacidades que estejam a 1 em P, mas não a que estão a 0 em P;
3. Capacidades herdadas (I) → capacidades que são passadas aos processos criadas por este (fork)