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 i1 • é 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