Sistemas Distribu´ıdos: Conceitos e Projeto
Controle de Acesso
Francisco Jos´e da Silva e Silva
Laborat´orio de Sistemas Distribu´ıdos (LSD) Departamento de Inform´atica / UFMA
http://www.lsd.ufma.br
Introdu¸c˜
ao
Uma vez estabelecido um canal seguro de comunica¸c˜ao, um cliente
pode enviar uma requisi¸c˜ao ao servidor, o que normalmente envolve
uma chamada a um m´etodo espec´ıfico de um objeto;
A requisi¸c˜ao somente deve ser atendida caso o cliente possua o direito
de realizar esta invoca¸c˜ao;
Formalmente, a verifica¸c˜ao do direito de acesso ´e chamado controle
de acesso enquanto autoriza¸c˜ao refere-se `a atribui¸c˜ao dos direitos de acesso;
O controle de acesso envolve sujeitos que solicitam requisi¸c˜oes a um
objeto;
Um monitor de referˆencias armazena o que cada sujeito tem direito
de realizar e decide se a um dado sujeito ´e permitido realizar uma dada opera¸c˜ao.
Matriz de Controle de Acessos
Uma abordagem comum para modelar os direitos de acesso de sujeitos a objetos ´e atrav´es da matriz de controle de acessos; Cada sujeito ´e representado por uma linha na matriz e cada objeto
por uma coluna. Uma entrada M[s,o] lista as opera¸c˜oes que o sujeito
s pode realizar sobre o objeto o;
A matriz de controle de acessos n˜ao ´e implementada como uma
matriz, j´a que tipicamente ela ´e esparsa. Normalmente uma das
seguintes implementa¸c˜oes ´e utilizada:
1 Lista de Controle de Acesso (ACL): cada objeto mantˆem uma lista
de direitos de acesso dos sujeitos que podem acess´a-lo;
2 Capacidades: define o que um sujeito pode realizar em um dado
objeto. O portador da capacidade possui os direitos de acesso especificados na capacidade.
ACLs e Capacidades
Dom´ınios de Prote¸c˜
ao
Tanto listas de controle de acesso quanto listas de capacidades podem se tornar muito grandes;
Uma alternativa para a redu¸c˜ao de ACLs ´e o uso de dom´ınios de
prote¸c˜ao;
Um dom´ınio de prote¸c˜ao ´e um conjunto de pares (objeto, direitos
de acesso);
Cada requisi¸c˜ao ´e emitida no contexto de um dado dom´ınio;
Existem diversas abordagens para o uso de dom´ınios de prote¸c˜ao.
Uma delas ´e construir grupos de usu´arios. Os grupos podem ser mais
flex´ıveis caso possam ser hier´arquicos;
Toda vez que um usu´ario solicita o acesso a um objeto, o monitor de
referˆencia deve verificar a que grupo o usu´ario pertence e depois
Dom´ınios de Prote¸c˜
ao
Dom´ınios de prote¸c˜ao podem ainda ser implementados como pap´eis;
Neste caso, o usu´ario se registra no sistema com um papel espec´ıfico
que ´e normalmente associado `a fun¸c˜ao que o usu´ario exerce na organiza¸c˜ao;
Agrupamento Hier´
arquico de Objetos
Uma alternativa ao uso de dom´ınios de prote¸c˜ao ´e atrav´es do
agrupamento hier´arquico de objetos baseado nas opera¸c˜oes que eles
provˆeem, possivelmente utilizando um mecanismo de heran¸ca;
Quando um sujeito realizar uma requisi¸c˜ao a um objeto, o monitor de
referˆencias verifica a qual interface a opera¸c˜ao solicitada pertence (ao inv´es de procurar pelo objeto espec´ıfico) e se o sujeito possui o direito
Gerenciamento de Autoriza¸c˜
ao
Em sistemas centralizados, o gerenciamento de direitos de acesso ´e
facilitado pelo fato de todos os direitos de um novo usu´ario serem
relativos `a m´aquina local, podendo os mesmos serem especificados
pelo administrador do sistema;
Em um sistema distribu´ıdo, os recursos est˜ao espalhados em v´arias
m´aquinas e se a mesma abordagem fosse utilizada seria necess´ario
criar uma conta para cada usu´ario em todas as m´aquinas;
Esta quest˜ao pode ser simplificada atrav´es da cria¸c˜ao de uma ´unica conta em um servidor central que deve ser consultado toda vez que
Capacidades e Certificados de Atributos
Uma outra abordagem largamente empregada em sistemas distribu´ıdos ´e o uso de capacidades;
Uma capacidade ´e uma estrutura de dados para um recurso espec´ıfico que especifica os direitos de acesso de seu portador sobre o mesmo;
Capacidade em Amoeba
Server port corresponde a um identificador do objeto servidor do
recurso que ´e independente de m´aquina;
Object identifica o objeto no dado servidor. Os 72 bits relativos ao
server port e object formam o identificador ´unico de cada objeto
Amoeba;
Rights especificam os direitos de acesso do portador;
Check ´e utilizado para tornar a capacidade inesquec´ıvel,
Tornando a Capacidade Inesquec´ıvel
Quando um objeto ´e criado, o servidor escolhe um valor aleat´orio 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˜ao
marcados como 1 e isto corresponde aos direitos do propriet´ario. Esta
capacidade ´e retornada ao cliente;
Para criar uma capacidade restrita, o cliente devolve a capacidade ao
servidor juntamente com uma m´ascara 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¸c˜ao one-way ;
O servidor ent˜ao cria a nova capacidade colocando os bits de direito
enviados pelo cliente e o resultado da fun¸c˜ao no campo
Gera¸c˜
ao de capacide restrita no Amoeba
Quando o servidor receber de volta a capacidade restrita, ele
verificar´a atrav´es do campo de direitos que se trata de uma
capacidade restrita, realizar´a um XOR do check orginal (resgatado de
suas tabelas) com o campo de direito da capacidade e aplicar´a a
fun¸c˜ao one-way no valor resultante para verificar se o resultado da
fun¸c˜ao ´e o mesmo do campo check constante da capacidade;
Caso o usu´ario tente modificar o campo de direito da capacidade
(aumentando seus direitos), ele invalidar´a a capacidade, dado que o
Certificado de Atributos
Uma generaliza¸c˜ao de capacidades s˜ao 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˜ao controlados por autoridades certificadoras de atributos.
Delega¸c˜
ao
Imagine a situa¸c˜ao: um usu´ario solicita a um servidor de impress˜ao
que um dado arquivo seja impresso `as 2 da manh˜a passando o nome
do arquivo a ser impresso;
O servidor de impress˜ao deve possuir direito de leitura sobre o arquivo;
O usu´ario deveria poder delegar temporariamente esse direito de
acesso ao arquivo;
Proxy no contexto de seguran¸ca ´e um token que permite ao portador operar com os mesmos (ou restritos) direitos e privil´egios que o sujeito que concedeu o token.
Delega¸c˜
ao: Primeira Abordagem
Alice deseja delegar direitos a Bob;
Ela constr´oi um certificado dizendo ”Bob possui direito R”, como
[A,B,R]A;
Se Bob desejar passar alguns de seus direitos `a Charlie, ele solicita ao mesmo que contate Alice solicitando um certificado apropriado; Neste caso, Alice deve conhecer todos.
Delega¸c˜
ao: Abordagem de Neuman
Outra abordagem:
Alice constr´oi um certificado contendo “o portador deste certificado
possui direito R”;
Delega¸c˜
ao: 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 ´e o conjunto C = {R,S
+ proxy},
consistindo do direito de acesso R delegado por A juntamente com a
parte p´ublica de um segredo que ´e utilizado para autenticar o
Delega¸c˜
ao: Abordagem de Neuman
Alice e Bob compartilham uma chave secreta KA,B;
Alice envia a Bob o certificado C = {R,S
+
proxy}, assinado com
sig(A,C), denotado por [R,Sproxy+ ]A. Esta mensagem n˜ao necessita
ser criptografada. Somente a parte secreta necessita de criptografia,
mostrada como KA,B(Sproxy− ) na mensagem 1;
Bob envia sua credencial ao servidor na forma do certificado assinado [R,S
+ proxy]A;
O servidor pode agora verificar que C n˜ao teve seus direitos de acesso
modificados j´a que foi assinado por Alice. No entanto, ele ainda n˜ao
sabe se Bob ´e o correto propriet´ario do certificado;
Para se assegurar disso, ele desafia Bob enviando N encriptado por Sproxy+ ;
Ao decriptar Sproxy+ (N) e retornar N, Bob prova que ele