Notas de Aula - MAC 5755 - Sistemas Operacionais Distribuídos
Aula 21 - 7/11/2003
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
-
não-repudiação, geração de provas (non-repudiation)
-
Criptografia e Assinaturas Digitais
-
texto original -> criptografador/encriptador -> texto
codificado/criptografado/encriptado ->
decriptografador/desencriptador
-> texto original
-
Criptografia Simétrica
-
criptografação e decriptografaçã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 (criado por Ronald L. Rivest, Adi Shamir e Leonard Adleman em
1977)
-
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
- atualmente está sendo substituído por
algoritmos mais seguros e eficientes
-
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
- java.security
contém uma série de classes e interfaces para controle de
acesso descritas neste
relatório técnico.
-
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