Sistemas Distribuı́dos: Conceitos e Projeto Controle de Acesso Francisco José da Silva e Silva Laboratório de Sistemas Distribuı́dos (LSD) Departamento de Informática / UFMA http://www.lsd.ufma.br 4 de julho de 2013 Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 1 / 22 Introdução Uma vez estabelecido um canal seguro de comunicação, um cliente pode enviar uma requisição ao servidor, o que normalmente envolve uma chamada a um método especı́fico de um objeto; A requisição somente deve ser atendida caso o cliente possua o direito de realizar esta invocação; Formalmente, a verificação do direito de acesso é chamado controle de acesso enquanto autorização refere-se à atribuição dos direitos de acesso; O controle de acesso envolve sujeitos que solicitam requisições a um objeto; Um monitor de referências armazena o que cada sujeito tem direito de realizar e decide se a um dado sujeito é permitido realizar uma dada operação. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 2 / 22 Modelo Geral para Controle de Acesso a Objetos Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 3 / 22 Matriz de Controle de Acessos Uma abordagem comum para modelar os direitos de acesso de sujeitos a objetos é através da matriz de controle de acessos; Cada sujeito é representado por uma linha na matriz e cada objeto por uma coluna. Uma entrada M[s, o] lista as operações que o sujeito s pode realizar sobre o objeto o; A matriz de controle de acessos não é implementada como uma matriz, já que tipicamente ela é esparsa. Normalmente uma das seguintes implementações é utilizada: 1 2 Lista de Controle de Acesso (ACL): cada objeto mantêm uma lista de direitos de acesso dos sujeitos que podem acessá-lo; Capacidades: define o que um sujeito pode realizar em um dado objeto. O portador da capacidade possui os direitos de acesso especificados na capacidade. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 4 / 22 ACLs e Capacidades Figura: (a):ACL (b):Capacidades Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 5 / 22 Domı́nios de Proteção Tanto listas de controle de acesso quanto listas de capacidades podem se tornar muito grandes; Uma alternativa para a redução de ACLs é o uso de domı́nios de proteção; Um domı́nio de proteção é um conjunto de pares (objeto, direitos de acesso); Cada requisição é emitida no contexto de um dado domı́nio; Existem diversas abordagens para o uso de domı́nios de proteção. Uma delas é construir grupos de usuários. Os grupos podem ser mais flexı́veis caso possam ser hierárquicos; Toda vez que um usuário solicita o acesso a um objeto, o monitor de referência deve verificar a que grupo o usuário pertence e depois verificar a ACL deste grupo. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 6 / 22 Domı́nios de Proteção Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 7 / 22 Domı́nios de Proteção Domı́nios de proteção podem ainda ser implementados como papéis; Neste caso, o usuário se registra no sistema com um papel especı́fico que é normalmente associado à função que o usuário exerce na organização; Deve ser possı́vel a um usuário trocar de papel caso seja necessário. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 8 / 22 Agrupamento Hierárquico de Objetos Uma alternativa ao uso de domı́nios de proteção é através do agrupamento hierárquico de objetos baseado nas operações que eles provêem, possivelmente utilizando um mecanismo de herança; Quando um sujeito realizar uma requisição a um objeto, o monitor de referências verifica a qual interface a operação solicitada pertence (ao invés de procurar pelo objeto especı́fico) e se o sujeito possui o direito de realizar uma chamada a uma operação desta interface. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 9 / 22 Gerenciamento de Autorização Em sistemas centralizados, o gerenciamento de direitos de acesso é facilitado pelo fato de todos os direitos de um novo usuário serem relativos à máquina local, podendo os mesmos serem especificados pelo administrador do sistema; Em um sistema distribuı́do, os recursos estão espalhados em várias máquinas e se a mesma abordagem fosse utilizada seria necessário criar uma conta para cada usuário em todas as máquinas; Esta questão pode ser simplificada através da criação de uma única conta em um servidor central que deve ser consultado toda vez que um usuário acessa recursos ou máquinas. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 10 / 22 Capacidades e Certificados de Atributos Uma outra abordagem largamente empregada em sistemas distribuı́dos é o uso de capacidades; Uma capacidade é uma estrutura de dados para um recurso especı́fico que especifica os direitos de acesso de seu portador sobre o mesmo; Existem diferentes implementações de capacidades. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 11 / 22 Capacidade em Amoeba Server port corresponde a um identificador do objeto servidor do recurso que é independente de máquina; Object identifica o objeto no dado servidor. Os 72 bits relativos ao server port e object formam o identificador único de cada objeto Amoeba; Rights especificam os direitos de acesso do portador; Check é utilizado para tornar a capacidade inesquecı́vel, como explicado a seguir. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 12 / 22 Tornando a Capacidade Inesquecı́vel Quando um objeto é criado, o servidor escolhe um valor aleatório denominado check e o armazena tanto na capacidade quanto em suas tabelas internas; Em uma nova capacidade, todos os bits dos direitos de acesso estão marcados como 1 e isto corresponde aos direitos do proprietário. Esta capacidade é retornada ao cliente; Para criar uma capacidade restrita, o cliente devolve a capacidade ao servidor juntamente com uma máscara de bits contendo os novos direitos; O servidor recupera o check de suas tabelas, realiza um XOR do mesmo com os novos direitos e executa uma função one-way ; O servidor então cria a nova capacidade colocando os bits de direito enviados pelo cliente e o resultado da função no campo check, retornando-a ao cliente. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 13 / 22 Geração de capacide restrita no Amoeba Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 14 / 22 Geração de capacide restrita no Amoeba Quando o servidor receber de volta a capacidade restrita, ele verificará através do campo de direitos que se trata de uma capacidade restrita, realizará um XOR do check orginal (resgatado de suas tabelas) com o campo de direito da capacidade e aplicará a função one-way no valor resultante para verificar se o resultado da função é o mesmo do campo check constante da capacidade; Caso o usuário tente modificar o campo de direito da capacidade (aumentando seus direitos), ele invalidará a capacidade, dado que o resultado não casará. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 15 / 22 Certificado de Atributos Uma generalização de capacidades são os certificados de atributos que listam pares (atributo, valor) para uma dada entidade; Eles podem ser utilizados para controlar os direitos que o portador possui sobre o recurso identificado; Assim como acontece com outros certificados, certificados de atributos são controlados por autoridades certificadoras de atributos. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 16 / 22 Delegação Imagine a situação: um usuário solicita a um servidor de impressão que um dado arquivo seja impresso às 2 da manhã passando o nome do arquivo a ser impresso; O servidor de impressão deve possuir direito de leitura sobre o arquivo; O usuário deveria poder delegar temporariamente esse direito de acesso ao arquivo; Proxy no contexto de segurança é um token que permite ao portador operar com os mesmos (ou restritos) direitos e privilégios que o sujeito que concedeu o token. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 17 / 22 Delegação: Primeira Abordagem Alice deseja delegar direitos a Bob; Ela constrói um certificado dizendo ”Bob possui direito R”, como [A, B, R]A ; Se Bob desejar passar alguns de seus direitos à Charlie, ele solicita ao mesmo que contate Alice solicitando um certificado apropriado; Neste caso, Alice deve conhecer todos. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 18 / 22 Delegação: Abordagem de Neuman Outra abordagem: Alice constrói um certificado contendo “o portador deste certificado possui direito R”; Neste caso, deve-se proteger o certificado de cópia ilegal. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 19 / 22 Delegação: Abordagem de Neuman O proxy possui duas partes: um certificado e uma parte secreta; Seja A o processo que criou o proxy; + A primeira parte do certificado é o conjunto C = {R, Sproxy }, consistindo do direito de acesso R delegado por A juntamente com a parte pública de um segredo que é utilizado para autenticar o portador do certificado, de acordo com o protocolo a seguir. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 20 / 22 Delegação: Abordagem de Neuman Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 21 / 22 Delegação: Abordagem de Neuman Alice e Bob compartilham uma chave secreta KA,B ; + Alice envia a Bob o certificado C = {R, Sproxy }, assinado com + sig (A, C ), denotado por [R, Sproxy ]A . Esta mensagem não necessita ser criptografada. Somente a parte secreta necessita de criptografia, − ) na mensagem 1; mostrada como KA,B (Sproxy Bob envia sua credencial ao servidor na forma do certificado assinado + ]A ; [R, Sproxy O servidor pode agora verificar que C não teve seus direitos de acesso modificados já que foi assinado por Alice. No entanto, ele ainda não sabe se Bob é o correto proprietário do certificado; Para se assegurar disso, ele desafia Bob enviando N encriptado por + ; Sproxy + (N) e retornar N, Bob prova que ele Ao decriptar Sproxy conhece o segredo e é o legı́timo portador do certificado. Francisco Silva (UFMA/LSD) SD: Princı́pios e Algoritmos 4 de julho de 2013 22 / 22