Notas de Aula - MAC 5755 - Sistemas Operacionais Distribuídos
Aula 22 - 7/11/2001
Segurança
-
Segurança envolve vários aspectos:
-
criptografia
-
autenticação (de usuários e objetos)
-
controle de acesso
-
isolamento (estilo Java sandbox e Janus sandbox para C++)
-
auditoria
-
geração de provas (non-repudiation)
-
Criptografia e Assinaturas Digitais
-
texto original -> criptografador -> texto codificado/criptografado -> descriptografador
-> texto original
-
Criptografia Simétrica
-
criptografação e descriptografação usam a mesma
chave (chave privada)
-
portanto chave tem que ser secreta e compartilhada entre as partes envolvidas
na comunicação
-
Algoritmo mais famoso: DES (1977) - Data Encryption Standard
-
O livro da Galli contém uma descrição do DES para
os curiosos
-
Assinatura digital com chave privada
-
remetente gera resumo da mensagem (e.g., usando uma função
de hash ou checksum)
-
codifica o resumo (e.g. com 128 bits de comprimento) e envia no final da
mensagem
-
destinatário recebe mensagem, calcula resumo usando mesma função
-
decodifica o resumo que veio no final da mensagem e verifica se ele bate
com o recém-calculado
-
Dificuldade: distribuição de chaves de forma segura
-
Criptografia Assimétrica
-
Envolve duas chaves: chave pública e chave privada
-
Se uma informação foi codificada com a chave pública,
só quem tem a chave privada consegue decodificá-la. Aplicação:
mandar uma mensagem que só uma pessoa consegue ler
-
Se uma informação foi codificada com a chave privada, qualquer
um pode decodificá-la com a chave pública. Aplicação:
ter certeza sobre quem é o autor da mensagem (quem tem a chave privada).
-
RSA é um dos algoritmos de criptografia assimétrica mais
famosos
-
era patenteado o que trazia problemas para software aberto; mas em 2000, foi
liberado para domínio público
-
Assinatura digital com chave pública
-
funciona de forma equivalente
-
Vantagem: distribuição das chaves é muito mais simples
uma vez que todos podem ter acesso aas chaves públicas e que as
chaves privadas não são distribuídas
-
Recentemente, o governo dos EUA adotou um novo algoritmo após um
concurso aberto mundialmente:
-
AES - Advanced
Encryption Standard
-
Autenticação
-
Como reconhecer um usuário?
-
por algo que só ele sabe (e.g., senha)
-
por algo que só ele tem (e.g., uma chave)
-
por algo que usuário é (e.g. reconhecimento facial, de retina,
de impressão digital)
-
Problemas de autenticação em sistemas distribuídos:
-
escuta na linha: alguém pode roubar nossos meios de autenticação
-
gerenciamento de senhas: queremos usar várias máquinas, onde
guardamos o banco de dados de senhas? distribuímos (fica mais fácil
de roubar)? centralizamos (como saber se o nó central é ele
mesmo)?
-
replay: um intruso pode gravar uma conversa mesmo que ele não
a entenda e depois tocá-la novamente para fingir que é outra
pessoa
-
confiança: o servidor deve confiar no cliente? o cliente deve confiar
no servidor? um servidor deve confiar no outro?
-
Certificados
-
certificados X.509 contém:
-
número da versão do X.509
-
número do certificado
-
identificador do algoritmos de assinatura digital
-
identificação da autoridade de certificação
-
período de validade
-
sujeito (usuário ou objeto que é autenticado por este certificado)
-
chave pública
-
assinatura digital do certificado usando a chave privada da autoridade
de certificação
-
Exemplo de uso de Listas de Certificados: Galli Fig. 11.6, pag. 272.
-
Kerberos v.5 (1994)
-
Um dos sistemas de autenticação mais amplamente usados em
sistemas dstribuídos
-
Baseado em um banco de dados centralizado (e replicado) de user ids
e senhas
-
Controle de Acesso
-
baixo nível: Firewalls
-
filtra pacotes e conexões de acordo com origem e destino
-
alto nível:
-
permissões de acesso (e.g. sistema de arquivos do UNIX)
-
listas de controle de acesso (e.g., sistema de arquivos AFS)
-
(capacidades ou tickets) capabilities or tickets (e.g., Amoeba)
-
No Amoeba, para criar um objeto, o cliente manda um RPC para o servidor
e recebe de volta uma capability para acessar esse objeto
-
a partir daí, o cliente precisa apresentar a capability para
acessar o objeto
-
formato da capacidade no Amoeba 5.2:
-
48 bits com o server port (endereço do servidor e sua porta)
-
24 bits com a identificação do objeto
-
8 bits com os direitos de acesso
-
48 bits de verificação
-
SSL - Secure Socket Layer
-
CORBA
-
A especificação CORBASec dos serviços de segurança
de CORBA é a mais completa que existe
-
Mas por enquanto, existem poucas implementações e elas não
inter-operam
-
Oferece serviços para autenticação, controle de acesso,
criptografia
-
Suporte para auditoria: logs dizendo quem fez o que quando no sistema
-
Além disso, é o primeiro padrão a oferecer um serviço
de Geração de Provas (Non-repudiation)
-
O serviço pode ser utilizado para:
-
oferecer uma prova da origem de certos dados para o destinatário
dos dados.
-
oferecer ao remetente uma prova de recebimento dos dados pelo destinatário
-
desta forma, é possível evitar que destinatários ou
remetentes neguem as suas ações
-
Exemplo: compra de produtos via Internet.
-
Muito bom para comércio eletrônico.
Referências
-
Galli, capítulo 11; Tanenbaum, seção 7.2.1 (Amoeba)
e (não dado em aula) seção 10.6 (segurança
no sistema DCE); OMG's CORBA Security
Services page
Próxima Aula
Aula Anterior
Página de MAC 5755
Página do Fabio
Página do DCC