2
Políticas, Modelos e Mecanismos de
Segurança
 O papel do controle de acesso
 Matriz de controle de acesso
 Resultados fundamentais
 Políticas de segurança
 Modelos de segurança
 Mecanismos e implementação
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
1
Matriz de controle de acesso (1)
 Sumário
• Introdução
• Modelo de matriz de controle de acesso – (MCA)
– Controle de acesso pela avaliação de expressões booleanas
– Controle de acesso baseado na história
• Transições do estado de proteção
– Comandos
– Comandos condicionais
• Direitos especiais
– Princípio da atenuação de privilégio
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
2
Matriz de controle de acesso (2)
 Introdução (1)
• Modelo conceitual abstrato introduzido por LAMPSON (1974) que especifica os
direitos que cada sujeito possui para cada objeto num sistema
Uma coluna para
Sujeito/
cada objeto
Arquivo_1
Arquivo_2
Arquivo_3
Processo_1
Objeto
João
read, write

write

Pedro

execute, read
write

suspend
Marcos

read
read

read



Filipe
Asacesso
célulasé da
matriz especificam
• A função básica de um sistema de controle de
assegurar
que apenas as
as
operações – os direitos de acesso –
operações autorizadas na matriz possam ser executadas
Uma linha para
que cada sujeito tem para cada objeto
– A matriz
é
um
modelo
conceitual
do
banco
de dados de autorização usado pelo
cada sujeito
monitor de referência
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
3
Matriz de controle de acesso (3)
 Introdução (2)
• A MCA é tradicionalmente usada para descrever o estado de proteção de um
sistema de controle de acesso
– O estado de um sistema é a coleção dos valores correntes de todas as posições de
memória, de toda a memória secundária e de todos os registradores e outros
componentes de um sistema
– O subconjunto do estado que lida com a proteção é denominado de estado de
proteção do sistema
– Seja P o conjunto de todos os estados possíveis e Q  P o conjunto exato dos estados
autorizados para o sistema, i. e., o conjunto de estados seguros
 Sempre que está em Q, o sistema está seguro
 Quando o estado corrente está em P  Q, o sistema não está seguro
– Cabe a uma política de segurança caracterizar os estados de Q
– Cabe a um mecanismo (C)
de2005
segurança
Gustavo Mottaprevenir que o sistema entre 4num
estado em P - Q
©2002-2004 Matt Bishop
Matriz de controle de acesso (4)
 Introdução (3)
• O modelo da MCA é o mais preciso para descrever um estado de proteção
– A descrição dos seus elementos formam uma especificação contra a qual o estado
corrente de um sistema pode ser comparado
 Diferentes linguagens e representações da matriz são empregadas para descrever as
características dos estados permitidos
– Transições de estado modificam os elementos da matriz
 Espera-se que o resultado da transformação de um estado autorizado por uma operação
também autorizada nesse estado seja um estado autorizado
» Por indução, o sistema estará sempre num estado autorizado
 Apenas as transições que podem alterar as ações a que um sujeito está autorizado a realizar
num sistema é que são relevantes
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
5
Matriz de controle de acesso (5)
 Modelo MCA (1)
• Descrição
objetos (entidades protegidas)
sujeitos
o1 … om s1 … sn
 Sujeitos S = { s1,…,sn }
s1
s2
 Objetos O = { o1,…,om }  S
…
 Entradas a[si, oj]  R
sn
 Direitos R = { r1,…,rk }
 a[si, oj] = { rx, …, ry } indica que
o sujeito si tem direitos rx, …, ry
(C) 2005 Gustavo Mottasobre o objeto oj
6
©2002-2004 Matt Bishop
Matriz de controle de acesso (6)
 Modelo MCA (2)
• Exemplo 1 – uso tradicional
 Processos p, q
O direito de proprietário –own– é diferenciado
dos outros porque tem privilégios especiais: a
capacidade de adicionar e remover direitos de
um objeto possuído, por exemplo, o processo p
pode alterar o conteúdo de a[x, f], onde x é um
sujeito qualquer
 Arquivos f, g
 Direitos r, w, x, a, o
f
g
p
q
p
rwo
r
rwxo
w
q
a
ro
r
rwxo
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
7
Matriz de controle de acesso (7)
 Modelo MCA (3)
• Exemplo 2 – direitos acesso num programa
O modelo MCA é abstrato o
significado de uma MCA específica
deve sempre ser considerado na
perspectiva de uma implementação
ou sistema particular
 Procedimento inc_ctr, dec_ctr, manage
 Variável counter
 Direitos +, –, call
counter
inc_ctr
+
dec_ctr
–
manage
inc_ctr
dec_ctr
manage
call
call
call
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
8
Matriz de controle de acesso (8)
 Modelo MCA - avaliação de expressões booleanas (1)
• Direitos determinados pela avaliação de uma expressão booleana, baseada em
dados do contexto do acesso
• MCA para controlar o acesso a campos de um banco de dados (MILLER &
BALDWIN, 1990)
– Sujeitos possuem atributos
– Verbos definem modos de acesso (insert, delete, update, ...)
– Regras são associadas a pares de objeto-verbo
– Quando um sujeito tenta acessar um objeto de um determinado modo
 A regra associada ao par objeto-verbo para esse sujeito é avaliada
» Caso o resultado seja verdadeiro – o acesso é concedido
(C) 2005 Gustavo Motta
» Caso o resultado seja falso – o acesso é negado
©2002-2004 Matt Bishop
9
Matriz de controle de acesso (9)
 Modelo MCA - avaliação de expressões booleanas (2)
• Exemplo – casa inteligente (1)
– Sujeitos: Ana e Tiago
 Atributos: Ana tem o papel criança e Tiago tem o papel adulto
– Verbos: assistir – valor default 0 (negado)
– Objeto: TV
 Regras:
» assistir: ‘adulto’ in sujeito.papel or
(‘criança’ in sujeito.papel and
relogio.hora >= 16 and relogio.hora <= 20)
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
10
Matriz de controle de acesso (10)
 Modelo MCA - avaliação de expressões booleanas (3)
• Exemplo – casa inteligente (2)
às 18:00h, a condição temporal
está satisfeita; a MCA é:
TV
assistir
…
…
TV
…
… ana …
… ana …
…
às 21:00h, a condição temporal
não está satisfeita; a MCA é:
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
11
Matriz de controle de acesso (11)
 Transições do estado de proteção (1)
• O estado de proteção de um sistema se modifica à medida que os processos
executam operações
– Seja X0 = (S0, O0, A0) o estado inicial do sistema
– O conjunto das transições de estado é representado pelas operações 1, 2, ...
– Estados sucessivos são representados por X1, X2, ..., para os quais, a notação
X i |  i 1 X i 1
significa que a transição de estado i+1 leva o sistema do estado Xi para Xi + 1
– Quando um sistema inicia num estado X qualquer e, após uma série de transições,
chaga a Y, então escreve-se
X | Y
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
12
Matriz de controle de acesso (12)
 Transições do estado de proteção (2)
• Seqüências de transições de estado são representadas por comandos únicos,
denominados procedimentos de transformação – que modificam a MCA, onde
X i | ci 1 ( pi 1,1 ,...,pi 1,m ) X i1
• é a i-ésima transição provocada pelo comando ck, com parâmetros formais
pk,1,..., pk,m, denotando sujeitos, objetos e entradas que afetam os procedimentos
de transformação
• HARRISON et al. (1976) definiram 6 comandos primitivos para alterar a MCA
– 1. criar um sujeito s
4. deletar r de a[s, o]
– 2. criar um objeto o
5. destruir o sujeito s
– 3. entrar com r em a[s, o]
6. destruir o objeto o
• Usados para construir comandos
maisGustavo
elaborados
(C) 2005
Motta
©2002-2004 Matt Bishop
13
Matriz de controle de acesso (13)
 Transições do estado de proteção (3)
• Especificação dos comandos primitivos (1)
 Lembrar que S  O
 O estado de proteção antes da execução de um comando é (S, O, A) e após a execução é
(S, O, A )
– 1. Comando primitivo: create subject s
Pré-condição: s  S
Pós-condição: S = S  { s }, O = O  { s }, ( y  O )[a [s, y] = ],
( x  S )[a [x, s] = ], ( x  S) ( y  O)[a [x, y] = a[x, y]]
Observação: este comando primitivo cria um sujeito s. Note que s não deve existir
como um sujeito ou objeto antes da execução do comando. A operação não adiciona
nenhum direito, apenas define uma nova linha e uma nova coluna à matriz
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
14
Matriz de controle de acesso (14)
 Transições do estado de proteção (4)
• Especificação dos comandos primitivos (2)
– 2. Comando primitivo: create object o
Pré-condição: o  O
Pós-condição: S = S, O = O  { o }, ( x  S )[a [x, o] = ],
( x  S) ( y  O)[a [x, y] = a[x, y]]
Observação: este comando primitivo cria um objeto o. Note que o não deve existir
como um objeto antes da execução do comando. A operação não adiciona nenhum direito,
apenas define uma nova coluna à matriz
– 3. Comando primitivo: enter r into a[s, o]
Pré-condição: s  S, o  O
Pós-condição: S = S, O = O, a [s, o] = a[s, o]  { r },
( x  S ) ( y  O )[(x, y)  (s, o)  a [x, y] = a[x, y]]
Observação: este comando primitivo adiciona o direito r para a célula a[s, o]. Note que
o direito r já pode estar em a[s, o]. O efeito disso dependerá de instanciações específicas
do modelo
(C) 2005 Gustavo Motta
15
©2002-2004 Matt Bishop
Matriz de controle de acesso (15)
 Transições do estado de proteção (5)
• Especificação dos comandos primitivos (3)
– 4. Comando primitivo: delete r from a[s, o]
Pré-condição: s  S, o  O
Pós-condição: S = S, O = O, a [s, o] = a[s, o]  { r },
( x  S ) ( y  O )[(x, y)  (s, o)  a [x, y] = a[x, y]]
Observação: este comando primitivo exclui o direito r da célula a[s, o]. Note que o
direito r não precisa estar em a[s, o] e, nesse caso, o efeito da execução do comando é nulo
– 5. Comando primitivo: destroy subject s
Pré-condição: s  S
Pós-condição: S = S  { s }, O = O  { s }, ( y  O )[a [s, y] = ],
( x  S )[a [x, s] = ], ( x  S ) ( y  O )[a [x, y] = a[x, y]]
Observação: este comando primitivo exclui um sujeito s. A coluna e a linha para s na
matriz também são excluídas
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
16
Matriz de controle de acesso (16)
 Transições do estado de proteção (6)
• Especificação dos comandos primitivos (4)
– 6. Comando primitivo: destroy object o
Pré-condição: o  O
Pós-condição: S = S, O = O  { o }, ( x  S )[a [x, o] = ],
( x  S ) ( y  O )[a [x, y] = a[x, y]]
Observação: este comando primitivo exclui um objeto o. A coluna para o na matriz
também é excluída
• Exemplo (1): UNIX – processo p cria um arquivo f com direitos de r e w
– command create-file(p, f)
create object f;
enter own into a[p, f]
enter r into a[p, f]
enter w into a[p, f]
end
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
17
Matriz de controle de acesso (17)
 Transições do estado de proteção (7)
• Exemplo (2): UNIX – processo p cria processo filho q
– command cria-processo-filho(p, q)
create subject q;
enter own into a[p, q]
enter r into a[p, q]
enter w into a[p, q]
enter r into a[q, p]
enter w into a[q, p]
end
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
Habilita processos pai e
filho a trocarem sinais
18
Matriz de controle de acesso (18)
 Transições do estado de proteção (8)
• Comandos primitivos não podem ser usados diretamente
– Uso interno no núcleo de segurança
– A MCA somente pode ser alterada através de comandos definidos para tal pelo núcleo
• Entretanto, um comando pode invocar um único comando primitivo – tal comando é
denominado de comando mono-operacional
• Exemplo (3): comando mono-operacional para adicionar p ao conjunto de
proprietários de f
– command torna-proprietário(p, f)
enter own into a[p, f]
end
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
19
Matriz de controle de acesso (19)
 Transições do estado de proteção (9)
• Comandos condicionais (1)
– A execução de comandos primitivos pode requerer a satisfação de certas
condições
– Exemplo (1): um processo p só pode dar o direito do processo q ler um arquivo f
se p for o proprietário de f
 command concede-direito-leitura-1(p, f, q)
if own in a[p, f] then
enter r into a[q, f]
end
– Comando com uma condição são chamados de monocondicionais
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
20
Matriz de controle de acesso (20)
 Transições do estado de proteção (10)
• Comandos condicionais (2)
– Múltiplas condições podem ser combinadas com o operador and
– Exemplo (2): um processo p só pode dar o direito do processo q ler um arquivo f
se p possuir os diretos r e c sobre f
 command concede-direito-leitura-2(p, f, q)
if r in a[p, f] and c in a[p, f] then
enter r into a[q, f]
end
– Todas as condições devem ser combinadas com o operador and – o operador or não deve
ser usado, por ser desnecessário
– A negação de uma condição também não é permitida – i. e., não é permitido testar a
ausência de direitos
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
21
Matriz de controle de acesso (21)
 Direitos especiais (1)
• Direito de cópia – (grant right)
– Permite que um proprietário conceda direitos sobre um objeto para outros
sujeitos
 Em geral, é um flag (copy flag) associado a outros direitos, sendo aplicável apenas a
tais direitos
» r é um direito de leitura que não pode ser copiado
» rc é um direito de leitura que pode ser copiado
– Aumenta os direitos existentes sobre um objeto
– Exemplo: no Windows NT, o copy flag corresponde a ao direito de modificar
– Exemplo: Nos SGBDs relacionais, corresponde ao grant option
– Questões
 Quando um direito qualquer é copiado, o direito de cópia o acompanha?
(C) 2005 Gustavo Motta
» Depende de modelo e de sua instanciação
©2002-2004 Matt Bishop
22
Matriz de controle de acesso (22)
 Direitos especiais (2)
• Direito de proprietário – (own right)
– Permite que um proprietário adicione ou remova privilégios para si mesmo
 Conseqüentemente, pode adicionar ou remover privilégios para outros
 Depende de implementação
» Não pode conceder direitos para grupos ou usuários específicos
» Não pode repassar o direito de cópia para grupos ou usuários específicos
– O proprietário é, em geral, o criador do objeto
– Exemplo: em sistemas UNIX, o proprietário pode usar o comando chown(1) para
modificar as permissões de outros sujeitos sobre um objeto. Em algumas versões,
o proprietário pode repassar o own right para outros sujeitos, em outras versões,
isto não é possível
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
23
Matriz de controle de acesso (22)
 Princípio da atenuação de privilégio
• Um sujeito não pode conceder direitos que ele não possui para terceiros
– Restringe a adição de direitos num sistema
– Em geral, isto é ignorado para o proprietário
 Por que?
– Exemplo: a usuária Ana possui o arquivo /home/ana/agenda, mas não tem
direito de leitura sobre ele. Ela pode executar o seguinte comando para permitir
que qualquer um leia o arquivo, independente de Ana ter este direito ou não
chmod go+r /home/ana/agenda
Um outro usuário não poderá
fazer
isto Motta
– modificar a permissão
(C) 2005
Gustavo
©2002-2004 Matt Bishop
24
Referências (1)

ANDERSON, J. Computer security technology planning study, volume II, Technical
report ESD-TR-73–51, Electronic Systems Division, Air Force Systems Command,
Hanscom Field, Bedford, MA 01730 (Outubro 1972).

LAMPSON, B. Protection. ACM operating sys. reviews, v. 8, n. 1, p. 18-24, 1974.

MILLER, D. e BALDWIN, R. Access control by boolean expression evaluation. In:
15TH ANNUAL COMPUTER SECURITY APPLICATIONS CONFERENCE, 1990.
Proceedings... p. 131-139.

HARRISON, M.; RUZZZO, W. e ULLMAN, J. Protection in operating systems.
Communications of the ACM, v. 19, n. 8, p. 461-471, 1976.
(C) 2005 Gustavo Motta
©2002-2004 Matt Bishop
25
Download

Matriz de controle de acesso