19 minuto(s) de leitura

Aula VII

Por que sistemas distribuídos usam resolução de nomes?

Porque oferecem:

  • Compartilhamento de recursos
  • Identificação única de entidades
  • Referência de localidades

O que é resolução de nomes?

Processo de identificação de uma entidade através de seu nome.

Geralmente realizada através da consulta a um servidor de nomes.

O que são nomes?

Descrevem entidades: computadores, usuários, impressoras…

Referenciam endereços: endereço é um tipo especial de nome que se refere a um ponto de acesso de uma entidade.

Identificador: referência única de uma entidade.

Fornecem transparência de localização:

  • um ponto de acesso pode ser modificado, mas seu nome mantido para o sistema.
  • o servidor de nomes deve manter a referência atual dos pontos de acesso.

O que são Names Spaces

Forma como os nomes estão organizados (grafos).

image

Explique a organização hierárquica

Existem 3 níveis.

Nível global

Nós de mais alto nível (nó raiz e seus filhos diretos).
Estrutura normalmente estável (modifica-se muito pouco).
Descrevem organizações ou grupos de organizações.

Nível administrativo

Abaixo do nível global.
Alteram-se com pouca frequência.
Referenciam grupos de entidades de uma mesma organização ou unidade administrativa (exemplo: departamentos de uma organização).

Nível gerencial

Alteram-se com maior frequência.
Representam entidades, como hosts ou sistemas de arquivos.

DNS

Domain Name System - serviço de nomes da Internet.

image

Resolução de nomes

Resolução iterativa

O nome é resolvido através de diversas iterações de consulta, partindo do nível global ao nível gerencial.

Ex:

image

ftp:// -> name space -> porta aplicação.
ftp.cs.vu.nl -> DNS host (IP).
/pub/globe/index.txt -> caminho FS.

Servidores de nomes

As implementações mais difundidas são:

  • DNS (Domain Name System): instituído pela RFC 1034, é o serviço de nomes padrão para a Internet.
  • LDAP (Lightweight Directory Access Protocol): implementação aberta inspirada no modelo de serviço de diretórios X.500 DAP para uso na Internet.
  • NDS (Novell Directory Services): implementação do serviço de diretórios da Novell, baseada no X.500 DAP.
  • Active Directory: implementação padrão do LDAP pela Microsoft.

X.500 DAP ( Directory Access Protocol)

Padrão da ISO/ITU que define um modelo independente de plataforma para o serviço de diretórios.

Diretório: banco de dados com informações sobre objetos e entidades, baseadas em atributos e organizadas em forma de árvore.

  • DIB (Directory Information Base)
    Banco de dados com os registros do serviço de diretório.

  • DIT (Directory Information Tree)
    Define a organização hierárquica dos objetos

  • Objetos
    Descritos pelas entradas no diretório e possuem atributos

Hierarquia X.500

Diferentes classes para objetos, para cada nível

(Root)
DC Domain Component
C Country
L Locality
O Organization
OU Organizational Unit
CN Common Name

Regras de acesso (ACL – access control lists)
São definidas entre objetos, através de seus atributos

O que é LDAP?

Lightweight Directory Access Protocol.

Desenvolvido inicialmente para ser cliente do X.500.

O X.500 impunha uma implementação complexa de protocolo, para operar sobre a pilha ISO/OSI.

O LDAP foi adaptado para operar sobre a pilha TCP/IP e tornou-se um padrão de fato para a Internet.

Sua versão 3 é descrita pela RFC 2251

Exemplo de entrada LDAP

image

Exemplo de hierarquia LDAP

image

O que é LDIF?

LDAP Data Interchange Format (RFC 2849).

Formato de intercâmbio de informações para o LDAP.

Descreve o diretório e suas entradas em formato texto.

Sintaxe:

image

Exemplo LDIF com 2 entradas

image

Aula VIII

O que é transação distribuída?

É uma sequência bem definida de operações e eventos que podem fazer uso de diversos recursos compartilhados.

  • Protege o acesso simultâneo a recursos compartilhados entre processos concorrentes.

  • Permite o processo acessar e modificar múltiplos itens de dados como uma operação atômica

  • Se um processo desistir no meio da transação tudo deve ser reestabelecido ao ponto inicial antes da transação.

Como funciona o modelo de transações?

Abstraído do mundo dos negócios.

Qualquer processos pode anunciar o início de uma transação.

O processo que iniciou a transação pode:

  • Solicitar que todos se comprometam com o trabalho (commit).

  • Situação revetida caso um processo discorde (rollback).

Quais são as primitivas de transações

image

Escopo da transação:

  • BEGIN_TRANSACTION e END_TRANSACTION
  • Operações entre elas formam o corpo da transação

Todas as operações do corpo da transação devem ser executadas, ou nenhuma deve ser executada

Explique rapidamente as propriedades de transações

“tudo ou nada” -> principal propriedade, que possui quatro qualidades (ACID).

  • Atômica: transações são indivisíveis.
  • Consistente: o sistema deve ser mantido em estado consistente.
  • Isolada: uma transação não pode interferir em outra transação.
  • Durável: os efeitos de uma transação são permanentes.

Classificação de transações

Flat Transactions

Uma série de operações que satisfazem as propriedades ACID.

Sua limitação é não permitir que resultados parcias sejam “commited” ou mesmo “abortados”.

Transações aninhadas

Podem ser aninhadas através da definição de sub-transações (mais altas podem criar foks novos para os filhos rodarem).

Quando uma transação inicia-se:

  • recebe uma cópia privada de todos os dados de todo o sistema para manipular como quiser.

  • Se a transação é abortad seu universo privado é descartado
  • Se ela chega ao commit seu universo privado sobrescreve o do pai.

Transações distribuídas

Vista como uma transação flat e indivisível que opera dados distribuídos.

Principal problema é definir algoritmos separados para manipular o controle de acesso aos dados e realizar (commit) a transação.

image

Explique a implementação de transações

Espaço privado

Quando um processo inicia uma transação, recebe um espaço privado de trabalho.

  • Se prever o acesso a diversos arquivos, copiar tudo para seu espaço privado pode ser impossível ou pouco aconselhável.
  • Se o processo apenas fará leitura em um arquivo (sem alterá-lo), não precisará de uma cópia privada.
  • Se necessitar escrever em um arquivo, o processo pode manter em sua área privada apenas o mapeamento (índice) dos blocos do arquivo.
  • Dessa forma, fará a leitura dos blocos e, se alterar algum deles, somente estes serão alterados no disco.

Writeahead log

Alterações a serem realizadas em um arquivo são anotadas em um registro histórico.

Somente depois de confirmada a gravação do log que a alteração pode ser realizada no arquivo.

Ex:

image

  • Todas as alterações sofridas em estruturas de dados (ou outros recursos) do sistema são armazenadas no registro histórico.

  • Se uma transação tiver que ser abortada antes de seu fim, todas as alterações registradas (efetuadas por suas operações) podem ser desfeitas e o estado inicial das estruturas (e recursos) restabelecido (rollback)

Controle de concorrência

Trata dos requisitos de consistência e isolação.

Consistência

Permitir que diversas transações executem simultaneamente acessos a uma coleção de itens de dados, mantendo-os em estado consistente.

Execução sequencial das transações sobre o conjunto de dados.

Escalonador (scheduler)

Responsável pelo controle da concorrência.

Determina qual transação tem permissão para passar operações de leitura ou escrita ao gerenciador de dados (data manager) a cada momento.

Isolação e Consistência

Podem ser garantidas pelas operações individuais de leitura e escrita realizadas pelo gerenciador.

Gerenciador de transações (transaction manager)

Responsável por garantir a atomicidade das transações

Processa as primitivas das transações, transformando-as em chamadas ao escalonador.

image

Pode ser utilizado para acessar diversos escalonadores em um ambiente distribuído.

image

Serialização

Impõe uma ordem de execução, isolando transações da execução simultânea e garantindo a execução sequencial de transações (só inicia se outra encerrar).

Duas abordagens p/ solução

Pessimista é mais utilizada e admite que problemas de concorrência irão ocorrer

Utiliza o bloqueio dos recursos (locking) como forma preventiva de evitá-los.

Ex:

image

Bloqueio em duas fases

Two-phases locking

  • Quando um processo necessita de um recurso solicita o bloqueio do mesmo.

  • Quando prevê não mais utilizá-lo, realiza sua liberação.

Sendo assim, o algoritmo prevê duas fases distintas:

  • growing phase: fase onde ocorre o bloqueio de recursos pelo processo.

  • shrinking phase: fase na qual os recursos são liberados pelo processo.

image

image

Gerenciamento de transações em EJB

Controle de transações resumi-se à demarcação de transações (quando será iniciada e concluída).

Várias formas de demarcar transações (cliente - comuns, servlets, beans - ou servidor - no container, declarações no DD, ou no bean, APIs como JTA, JDBC ou JMS).

Estailo de demarcação

BMT (Bean-Managed Transactions)

Total controle sobre o início e o fim das transações.

Nas outras modalidades é necessário ter todo o bean dentro (ou fora) de uma transação.

CMT (Container-Managed Transactions)

Maior simplicidade.

Mais seguro: evita a introdução de código que pode provocar deadlock e outros problemas similares.

Tunnig de transações sem alterar uma linha de código.

Demarcadas pelo cliente

Vantagem: controle em relação a falhas de rede.

Desvantagem: transação muito longa - ineficiente.

CMT – Container Managed Transactions

Controle de transações totalmente gerenciado pelo container.

Não permite o uso de métodos commit() e rollback() de java.sql.Connection ou javax.jms.Session dentro do código.

Única forma de controlar transações em Entity Beans.

Políticas transacionais - atributos

Os vetores suportados são:

NotSupported

  • Indica que o método não suporta transações.

Supports

  • Indica que o método suporta transações.

Required

  • Indica que o escopo de uma transação é requerido pelo método.

RequiresNew

  • Indica que o método requer uma nova transação.

Mandatory

  • Indica que o método só pode ser chamado no escopo de uma transação do cliente.

Never

  • Indica que o método nunca pode estar dentro de uma transação.

Serviço de transações

Servidores J2EE oferecem serviço de transações distribuídas CORBA: Object Transaction Service (OTS).

– Pode ser obtido através do serviço de nomes (via JNDI ou COS Naming).

Clientes também podem obter o serviço de transações do recurso que estão utilizando (se houver).

– Bancos de dados (através de JDBC). – Sistemas de messaging (através de JMS).

Para ter acesso a esses serviços, existem APIs.

– JDBC ou JMS, para serviços do recurso utilizado. – JTS ou JTA, para acesso ao OTS (distribuído).

Beans também podem realizar controle declarativo.

JTS e JTA

JTS - Java Transaction Service
é um mapeamento java-CORBA da especificação Object Transaction Service.

  • Usado por fabricantes de containers.

JTA - Java Transaction API
é uma especificação de interfaces para o sistema de transações.

  • Suporte por parte do container é obrigatório.

Tipos de Beans

Transientes (session beans)

  • Fornecem suporte à sessões de clientes, durante transações com servidores de aplicação Java EE.

Mensagens (message-driven beans)

  • Realizam a comunicação via troca de mensagens entre cada parte que compõe o sistema distribuído

Persistentes (entity beans)

  • Representam os dados armazenados (persistidos) em servidores de bancos de dados

Session Beans

Encapsulam a lógica do negócio.

O session bean realiza o trabalho para o cliente, escondendo a complexidade de executar as tarefas de negócio no lado servidor

Tipos de session beans

Stateful Session Beans

  • As variáveis de instância representam uma única sessão do cliente
  • São transientes, ou seja, são descartados quando a sessão terminar

Stateless Session Beans

  • O estado (valores de instância) não é retido depois de uma chamada.
  • Estado descartado assim que o método termina

Singleton Session Beans

  • São instanciados um por aplicação e existem enquanto ela executar.
  • Podem ser compartilhados entre diversas sessões de clientes.

Message-drive Beans

Um message-driven bean é um EJB que permite aplicações Java EE processarem mensagens assíncronas.

  • Geralmente atua como um JMS message listener (Como um event listener, mas recebe mensagens no lugar de eventos).

  • Podem também processar outros tipos de mensagens, além de JMS.

  • Diferem-se dos session beans pois não são acessados via interfaces.

  • Operam transações de múltiplos clientes e não retêm estados (stateless).

Aula IX

Requisitos de dependabilidade em SD

Disponibilidade: mede quanto o SD está pronto para ser usado imediatamente, probabilidade de um SD estar opertante.

Confiabilidade: mede quanto tempo um SD pode operar continuamente, sem a ocorrência de falha.

Segurança: capacidade de um SD nçao gerar algo catastrófico quando falhar na operação.

Manutenabilidade: facilidade de se reparar um SD ao apresentar falha. Boa manutenabilidade implica em maior disponibilidade.

Exemplo disponibilidade VS confiabilidade

Se um sistema parar por um milissegundo a cada hora -> disponibilidade será alta e confiabilidade baixa.

Se um sistema nunca falha, mas fica desligado por duas semanas todo mês de agosto -> sua confiabilidade será alta e disponibilidade de apenas 96%.

Defeito VS Erro VS falha

Defeito: consequência de um estado de erro do SD (não cumpre promessa).

Erro: constitui parte do estadp de um SD originado por uma falha.

Falha: trata-se da causa que originou o erro.

Tipos de falhas

Transientes: falhas que ocorrem apenas uma vez e então desaparecem.

Intermitentes: não definem um padrão exato de ocorrência e são imprevisíveis.

Permanentes: não podem ser consertadas e normalmente implicam em danos irreparáveis em componentes.

Modelos de falhas

Falha por quebra (crash): abrupta, normalmente associadas ao hardware e nada pode ser feito senão reiniciada.

Falha por omissão: quando um servidor falha ao responder uma requisição.

  • Omissão da requisição: o servidor nem chega a receber a solicitação do cliente (perdida).

  • Omissão da resposta: a resposta já foi perdida ou nem ter sido encaminhada à rede (servidor acha que enviou).

Falha de sincronismo: resposta em ritmo alterado pelo servidor (responder cedo ou tarde demais).

Falha na resposta: resposta errado do servidor, pode ser por valor incorreto ou falha de transição de estados (reação inesperada).

Falha arbitrária: servidor produz resposta que nunca deveria ser produzida, geralmente gerado por código malicioso e pode ser confundida com outras falhas.

Redundância e resiliência de processos

Redundância de informação: uso de informação extra para recuperar erros em dados (código Hamming).

Redundância de ocorrência: ação pode ser repetida durante a execução de uma transação, caso necessário (TCP).

Redundância física (hardware ou software): adição de equipamento ou processos extras que permitem o sistema suportar o mau funcionamento de algum componente individual.

Agrupamento de processos

Processos idênticos são agrupados e podem receber mensagems multicast (grupos dinâmicos), garantindo organização e replicação.

Podem ser dinâmicos e um processo pode participar de mais de um grupo.

Estrutura de um grupo

  • Grupo plano: processos têm papéis iguais e decisões são tomadas coletivamente.

  • Grupo hierárquico: um dos processos é considerado coordenador e fará um papel diferente dos outros.

Comente o contexto dos protocolos TCP e UDP, usados em comunicações inter ou intragrupos de processos? Por quê?

TCP: garante confiabilidade na comunicação entre processos para garantir a ordem de entrega, adequado para comunicações intergrupos onde processos podem estar geograficamente distribuídos e necessita retransmitir pacotes perdidos e controlar o congestionamento.

UDP: adequado para comunicações com baixa latência, alta eficiência, a perda de pacotes é tolerada (confiabilidade baixa) e são usadas em comunicações intragrupo em redes locais ou quando se trata de enviar mensagens para muitos processos de forma rápida com menos overhead.

image

Controle de grupo

Modelo centralizado: servidor de grupos administra os grupos (ponto único de falha do SD) e a replicação é baseada em um principal (primary-based - estruturação hierárquica - coordenador representa a comunicação com outros processos).

Modelo distribuído: todos os processos do grupo mantém informações sobre ele (pedidos devem ser enviados a todos e é ‘k fault tolerant’) e possui replicação de escrita.

comunicação confiável

Permite enviar/tratar falhas por quebra, omissão, sincronismo ou arbitrária.

Comunicação ponto-a-ponto com TCP, protocolo de transporte confiável e mascara falhas (retransmite falhas perdidas).

Problemas com TCP: a conexão pode se encerrar abruptamente

SRM

Scalable Reliable Multicasting

Só são comunicadas as mensagens faltantes, o que já reduz a demanda de tráfego na rede e evita que mais de um membro do grupo reclame a mesma mensagem.

image

Estratégia hierárquica

O coordenador de cada subgrupo é responsável por comunicar eventuais mensagens não recebidas pelos membros do grupo.

image

Comunicação multicast

Multicast atômico

Todos devem receber a mensagem.

Sincronismo virtual

  • A camada de comunicação do SD deve segurar a mensagem até que todas as suas parceiras notifiquem o recebimento.

  • A partir daí, todas as entidades podem passar a mensagem para a camada superior (aplicação).

image

Ordenação de mensagens multicast

4 abordagens.

  • Multicast desordenado confiável: garante-se que as mensagens cheguem, mas não garante a ordem.

  • Multicast ordenado em filas (FIFO) confiável: a camada de comunicação é obrigada a entregar as mensagens na mesma ordem que forem enviadas.

  • Multicast ordenado por causalidade e confiável: a entrega das mensagens mantém a relação de causalidade entre as diferentes operações do sistema.

  • Multicast totalmente ordenado: independentemente da estratégia utilizada para encaminhamento, exige que as mensagens sejam entregues a todos os membros na mesma ordem.

Commit distribuído

Um problema para commit em SD é garantir que uma operação seja realizada por cada membro do grupo, ou nenhum deles.

A solução é eleger um coordenador que ordena que os processos realizem, ou não, as operações em questão.

Commit em duas fases

Garante que uma operação seja realizada por cada membro do grupo, ou nenhum deles. Deve eleger um coordenador que ordena que os processos realizem ou não.

Ocorre através de 2 fases.

A primeira é a fase de votação onde o coordenador envia uma mensagem ‘VOTE_REQUEST’ para os participantes. Os participantes podem responder ‘VOTE_COMMIT’ se estiverem preparado para fazer o commit local ou ‘VOTE_ABORT’ caso contrário.

A segunda é a fase de decisão onde o coordenador obtém os vaores e responde a todos ‘GLOBAL_COMMIT’ se todos votarem a favor ou ‘GLOBAT_ABORT’ se apenas um votar em abortar.

Os participantes aguardam a resposta, se for ‘GLOBAL_COMMIT’, executam o commit local da transação e se for ‘GLOBAT_ABORT’, a transação local é abortada.

image

Aula 10

Conceitos básicos

Segurança em Sistemas Distribuídos

  • Relacionada à dependabilidade (tolerância a falhas) que o sistema pode oferecer.

Parâmetros adicionais relacionados à informação

  • Confidência: a informação deve ser acessível apenas a quem for autorizado.
  • Integridade: as alterações na informação mantida por um sistema só podem ser realizadas das maneiras previstas e autorizadas.

Ameaças à informação

Interceptação

  • Acesso não autorizado à informação.
  • Cópia ilegal da informação.

Interrupção

  • Quando a informação torna-se inacessível.
  • Pode ser gerada pela indisponibilidade de um serviço (ex.: DOS – Denial of Service) ou pela destruição dos dados.

Modificação

  • Troca não autorizada dos dados ou alteração em serviços fora das especificações originais.
  • Em redes de comunicação, a informação pode ser primeiramente interceptada e depois modificada.

Fabricação

  • Criação de dados ou de atividades que não deveriam existir

Mecanismos

Encriptação (cifragem)

  • Produção de cifra a partir dos dados

    Para confidência: mensagens indecifráveis por terceiros
    Para integridade: assinaturas digitais para conferência

Autenticação

  • Verifica a identificação solicitada ao usuário (ou aplicação)
  • Normalmente apoiada por conferência de senhas

Autorização

  • Estabelece as formas de interação com o sistema

    Regras de acesso (permissões)
    Diferentes usuários podem ter diferentes perfis

Auditoria

  • Avaliação dos efeitos dos mecanismos de proteção de um sistema

    São verificados registros históricos (arquivos de log, por exemplo), que descrevem as atividades de usuários no sistema

Foco de controle

image

Criptografia

É a arte e a ciência de esconder o objeto de uma comunicação de uma audiência não pretendida.

Permitem decifrar:

Chave simétrica:

+ Criptografia bidirecional.
+ Melhor desempenho.
- Como enviar a chave?

C = Eke(P)
P = Dkd(C)
Ke = Kd = Ks

Ex: DES, 3DES, AES, Blowfish.

Chave assimétrica:

Par de chaves único.
Publicar com certificado.

Confidência: Ke+ (Kd-)
Integridade: Kd+ (Ke-)

+ Impossível obter o par, a partir de uma.
+ Publicação de uma das chaves.
- Criptografia unidirecional.
- Pior desempenho.

Ke != Kd

Ex: RSA, ElGamal, Diffie-Hellman

Não permitem decifrar:

Hashs criptográficos.
“caminho único”.
Hashs - digetores.

Ex: MD3, MD5, SHA.

Formas de ataque

image

Intruso passivo

  • Apenas intercepta e obtém a mensagem.
  • A encriptação deve garantir que a mensagem não possa ser facilmente decifrada pelo intruso.

Intruso ativo (alteração)

  • Obtém a mensagem e a altera.
  • Isso é mais difícil, pois deve interceptar, decifrar e novamente cifrar a mensagem e, para isso, possuir a chave K.

Intruso ativo (fabricação)

  • Tenta criar mensagem falsa.
  • Só conseguirá fazê-lo se possuir a chave K.

Chaves de encriptação e algoritmos

Pode-se afirmar que a qualidade de um algoritmo criptográfico depende muito da chave utilizada

  • Os algoritmos criptográficos são conhecidos e têm código aberto.

Classificação de algoritmos pela chave

  • Chave simétrica.
  • Chave assimétrica (ou pública).

Classificação dos algoritmos quanto à decifragem

  • Permitem a recuperação da mensagem original.
  • Não permitem: são ditos “de caminho único” (one-way functions), ou digestores de mensagens.

Algortimos de chave simétrica

Uma mesma chave é utilizada para cifrar e decifrar

Algoritmos conhecidos

  • Data Encryption Standard (DES).
  • Triple Data Encryption Standard (3DES).
  • Advanced Encryption Standard (AES).
  • International Data Encryption Algorithm (IDEA).

Algoritmos de chave assimétrica

Também conhecidos como de chave pública

Par de chaves compatíveis: não existe outra chave que possa ser usada no lugar da original

  • Chave privada: mantida em segredo pelo criador do par.
  • Chave pública: distribuída publicamente.

Toda mensagem cifrada através da chave pública só pode ser decifrado com a chave privada.

P = DKd(EKe(P)).  
Kd: chave privada.  
Ke: chave pública.  

Algoritmos conhecidos

  • RSA
  • Diffie-Hellman
  • Elgamal

Comparação de algoritmos

Chave simétrica

  • Vantagem: simples e de baixo custo computacional.
  • Desvantagens: como enviar a chave única?

Chave assimétrica

  • Vantagem: chaves públicas podem ser distribuídas livremente.
  • Desvantagem: altamente custoso para processamento.

Algoritmos de hashing criptográfico

Conhecidos como digestores

  • “Digerem” a mensagem e geram um índice hash com ela.

São algoritmos de caminho único

  • É computacionalmente impossível recuperar a mensagem.

Funcionamento

  • Dada uma mensagem m, de qualquer tamanho, obtém-se o código h, de tamanho fixo para qualquer tamanho de m, através de uma função H.

h = H(m)

Algoritmos conhecidos

  • MD5
  • SHA

Autenticação

Permite reconhecer a integridade de uma mensagem ou um usuário (aplicação, host, etc.)

  • Dada uma mensagem, pode-se produzir uma cifra que é conferida pelo destinatário.

Também utilizada na criação de chaves de sessão

  • Tais chaves são utilizadas para a cifragem de mensagens durante o estabelecimento de um canal seguro.
  • Normalmente são descartadas no encerramento do canal.

Três Modelos

  • Troca de chaves secretas.
  • Uso de um centro de distribuição de chaves.
  • Uso de criptografia com chave pública.

Assinaturas digitais

Assinatura digital é um conteúdo cifrado, transmitido junto com a mensagem para sua conferência

  • Capaz de garantir autenticidade (integridade).

Uma forma consiste no uso de chaves assimétricas

  • Chave privada é utilizada para cifrar, e a pública para decifrar uma mensagem (modelo usado no PGP).
  • Só a chave pública parceira pode decifrar o conteúdo.

P = DKd(EKe(P))
Kd: chave pública
Ke: chave privada

Assinaturas digitais com chave pública

Sequência

  • Alice encaminha uma mensagem m para Bob e, paralelamente, uma versão assinada digitalmente.
  • A versão assinada envolve a cifragem de m através da chave privada de Alice e com a chave pública de Bob.
  • Bob, ao recebê-la, poderá decifrá-la, primeiramente com sua chave privada, e em seguida, com a chave pública de Alice.
  • O resultado então, pode ser comparado com a mensagem originalmente enviada.

image

Assinaturas digitais com hashing criptográfico

Dois problemas com a abordagem anterior

  • O tamanho da “assinatura” é muito grande.
  • O algoritmo utilizado (chave pública) é mais lento.

Aplicação de hashing criptográfico

  • Alice encaminha a mensagem m para Bob.
  • Paralelamente, processa o cálculo do código hash, através de um message digester.
  • O código é cifrado com a chave privada de Alice, e encaminhado a Bob.
  • Bob recebe a mensagem m e aplica a mesma função hash, gerando um código.
  • Tal código pode então ser comparado ao enviado por Alice, depois que Bob decifrar a assinatura, usando a chave pública de Alice.

image

Controle de acesso

Normalmente realizado através de regras explícitas

  • Descrevem permissões para usuários, ou grupos de usuários (subjects), para acessos a recursos do sistema (objects).

Monitor de referência

  • Provê o acesso/proteção do recurso (objeto), deliberando sobre as regras do controle de acesso.

image

Controle de acesso – operação

Visa fornecer, ou não, a autorização de acesso a um recurso a determinado usuário (ou entidade)

  • Cliente emite requisição de acesso r, que representa um sujeito s, ao servidor que centraliza o controle de acesso.
  • O servidor consulta em sua lista de controle de acesso (ACL – Access Control List) os dados da requisição e do sujeito.
  • Se existir regra que permita o acesso, então é autorizado.

image

Controle de acesso - tickets

A liberação do acesso pode ser realizada através de tickets

  • Um ticket de acesso assinado digitalmente é fornecido ao cliente, que apresentará ao objeto de destino.
  • O objeto pode então confirmar a validade daquela autorização com o servidor e atender, ou não, o pedido do cliente.

Tal estratégia reduz bastante a demanda pelo servidor para validação do acesso

image

Deixe um comentário