Escolar Documentos
Profissional Documentos
Cultura Documentos
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 1 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 2
Acesso generalizado sem restries de localizao Caractersticas essenciais dos sistemas distribudos
utilizadores fixos ou mveis modelos, metodologias e tcnicas de concepo e
desenvolvimento.
Partilha dos recursos distribudos
factores que influenciam a funcionalidade, simplicidade,
impressores, ficheiros, ...
desempenho, fiabilidade, segurana e resistncia a falhas.
Distribuio da carga
melhoria do desempenho Implementar um sistema distribudo funcional no
trivial, com recurso a tecnologias standard de
Lidar com falhas
comunicao: invocao remota usando RMI, SOAP,
melhoria da disponibilidade
REST.
Flexibilidade e adaptabilidade
Decomposio de um sistema complexo num conjunto de sistemas mais
simples
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 3 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 4
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 5 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 6
1
Sistemas Distribudos na Engenharia Informtica Aulas prticas
Engenheiro Informtico
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 7 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 8
Software: Exame final. O exame final sem consulta e pode incluir questes
Sistema Java 6.0 para Linux e Windows. sobre os trabalhos (mas no sobre programao).
...
Documentao:
Cpia dos transparentes de apoio s aulas tericas Frequncia. Teste prtico e trabalho prtico.
Cpia dos transparentes de apoio s aulas prticas O teste prtico sem consulta e incide sobre a matria das aulas prticas e do
Cdigo de exemplos e exerccios trabalho prtico.
O trabalho prtico ter duas partes, havendo pelo menos uma opo em cada
Informaes e bibliografia on-line: uma.
http://asc.di.fct.unl.pt/sd1
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
A avaliao ser obtida pela avaliao do trabalho efectuado, relatrio e pode incluir
a nota do teste prtico maior ou igual a 8,0 valores, e
uma discusso sobre o mesmo com todos os elementos do grupo.
a nota final da frequncia tem que ser maior ou igual a 9,0 valores, e
A seleco de quais os grupos que estaro sujeitos a discusso dos trabalhos prticos a nota do exame final terico tem que ser maior ou igual a 9,0 valores, e
ter em considerao, entre outros, os seguintes critrios: a nota final tem que ser maior ou igual a 9,5 valores.
discrepncia entre a nota do teste prtico e a nota do trabalho prtico;
discrepncia entre as notas dos vrios elementos do grupo;
nota elevada na avaliao do trabalho prtico. NOTA: qualquer problema com prazos (ou outros) deve ser
colocado ao docente ATEMPADAMENTE!
Os alunos que, sem justificao, falhem prazos, tm uma penalizao de 1 valor por
dia de atraso. Se, sem justificao, no comparecerem ao teste ou discusso, no
tm frequncia.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 11 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 12
2
Planeamento (tentativo) Resumo (datas sujeitas a confirmao)
T (Qua) T (Sex) P (Sex)
13 Set Apresentao Introduo -- Trabalho semanal:
20 Set Modelos Modelos Reviso (java.net) 3 h aulas tericas
27 Set Comunicao Comunicao Passar dados 2 h aulas prticas
4 Out RMI/RPC RMI RMI 2-4 h estudo
11 Out RMI RMI RMI TRAB 3-5 h trabalho prtico
18 Out WS WS WS TRAB 22 Out - fase 0
Aulas prticas a partir da prxima semana
25 Out RESt Segurana RESt TRAB
22 No Nomes Ficheiros Ficheiros TRAB 25 Nov - fase 2 27Nov - teste Teste prtico a 27 de Novembro
29 No F -- 1 dez Ficheiros duvidas TRAB Horrio preferencial de atendimento:
6 Dez F -- 8 dez Ficheiros -- 8 Dez - final Quintas 10h-11h
avaliao
13 Dez Ficheiros revises avaliao trabalhos
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 14
3
Nota prvia
Captulo 1
Introduo
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 1 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 2
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 3 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 4
1
Exemplo: servios em ambientes de computao Exemplo: computao ubqua
mvel
Exploso no nmero de dispositivos existentes
Dispositivos associados a utilizadores
Computadores, telemveis, etc. RF-ids ??
Dispositivos associados a objectos, animais
Dispositivos embebidos
RF-ids
Ns de redes de sensores
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 7 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 8
Sistemas de controlo de processos industriais em fbricas (linhas Acesso generalizado sem restries de localizao
de montagem, gesto de stocks, facturao, ...) Acessibilidade ubqua (suporte para utilizadores fixos, mveis)
Dispositivos ou mquinas especiais controlados atravs de Partilha dos recursos distribudos pelos diferentes utilizadores
conjuntos de computadores embutidos (por exemplo: um avio Exemplos: impressores, ficheiros
ou um carro, equipamento duma fbrica)
Tolerncia a falhas
Flexibilidade e adaptabilidade
Decomposio de um sistema complexo num conjunto de sistemas mais
simples
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
Melhor desempenho
paralelismo real
Maior disponibilidade
se uma mquina falha, as outras podem continuar
Extensibilidade
crescimento incremental
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 11 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 12
2
Caractersticas fundamentais dos SD Implicaes
Componentes do sistema executam de forma concorrente Nenhum componente tem uma viso exacta instantnea do estado
paralelismo real global de todo o sistema
Necessidade de coordenao entre os vrios componentes
Os componentes tm uma viso parcial do estado global do sistema
Falhas independentes dos componentes e das comunicaes Os componentes do sistemas esto distribudos e s podem cooperar
Impossvel determinar se existe uma falha dum componente ou do atravs da troca de mensagens, as quais levam um tempo no nulo a
sistema de comunicaes propagarem-se
Necessidade de lidar com as falhas
Na presena de falhas, o estado global pode tornar-se incoerente,
Ausncia de relgio global existem limites para a preciso da i.e., as vises parciais do estado global podem tornar-se
sincronizao dos relgios locais incoerentes
Impossvel usar relgios locais para ordenar globalmente todos os Por exemplo, rplicas de um objecto podem ficar incoerentes
eventos (os mesmos eventos podem ser vistos por ordens diferentes
por diferentes componentes)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 14
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 16
Sistema middleware
Sistemas operativos
Interface homognea
Interfaces heterognea Servios mais complexos (invocao
Servios bsicos remota: RMI, Web-services, Corba;
comunicao em grupo: Horus, etc)
Verdadeira interoperabilidade requer
idnticos interface e protocolos
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 17 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 18
3
Abertura Transparncia
A abertura de um sistema determina o modo como pode ser A transparncia (da distribuio) a propriedade relativa a esconder
acedido, estendido e re-implementado ao utilizador e ao programador das aplicaes a separao fsica dos
elementos que compem um sistema distribudo
Sistemas abertos
Interfaces e modelo conhecidos (incluindo protocolos de Simplicidade e flexibilidade so objectivos
comunicao)
Em certas circunstncias, a transparncia indesejvel
Evoluo controlada por organismos de normalizao independentes
ou consrcios industriais Implementao complexa e desempenho baixo
Permite a interoperao de componentes com diferentes Pode levar a inflexibilidade
implementaes
A transparncia pode manifestar-se em diversos nveis e de vrias
Sistemas proprietrios formas
Podem ser modificados pelo seu dono Vantagens e desvantagens de
cada aproximao?
Outras questes
Middleware suportando vrias linguagens vs. Middleware integrado
com uma s linguagem de programao
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 19 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 20
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 21 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 22
Segurana Escala
Necessidade de proteger os recursos e informao gerida num A escala de um sistema distribudo o mbito que o mesmo
sistema distribudo abrange assim como o nmero de componentes.
Recursos tm valor para os seus utilizadores
A escala de um sistema tem vrias facetas:
Segurana tem trs componentes:
recursos usados e utilizadores servidos
Confidencialidade: indivduos no autorizados no podem obter
mbito geogrfico (rede local, pas, mundo, ...)
informao (aceder ao recurso)
Integridade: dados no podem ser alterados ou corrompidos mbito administrativo (uma organizao, inter-organizaes)
Disponibilidade: acesso aos dados deve manter-se disponvel Um sistema de pequena escala um sistema confinado a uma
Aspectos envolvidos: organizao pequena / mdia, com poucos utilizadores e poucos
Autenticao dos utilizadores componentes.
Autenticao das plataformas de hardware/software
Comunicao segura Um sistema de grande escala um sistema com muitos recursos ou
Preveno de falhas/ataques de negao de servio (denial of utilizadores, ou cobrindo uma rea geogrfica significativa, ou
service attacks) envolvendo muitas organizaes.
Segurana na presena de cdigo mvel
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 23 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 24
4
Exemplo da prpria internet Sistema escalvel
Os protocolos e servios bsicos da internet tm respondido ao seu Um sistema capaz de escalar (escalvel) um sistema que
crescimento continua eficaz quando h um aumento significativo do nmero
de recursos ou utilizadores
i.e., em que no necessrio alterar a implementao dos
componentes e da forma de interaco dos mesmos
Data Computadores Servidores Web Num sistema escalvel, as seguintes propriedades devem ser
verdadeiras:
Dez. 1979 188 0
Os recursos envolvidos devem aumentar linearmente com a dimenso
Jul. 1989 130.000 0 do sistema
Jul. 1999 56.218.000 5.560.866 O aumento na dimenso dos dados, dos recursos ou utilizadores no
deve levar a uma diminuio significativa do desempenho a reduo
Jul. 2006 439.286.364 88.166.395
no deve ser superior a O(log n)
Dez. 2009 ~690.000.000 ~234.000.000 Possvel aproximao: recurso a estruturas hierrquicas (ex.: DNS)
fonte: http://www.zakon.org/
robert/internet/timeline
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 25 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 26
Para reduzir o nmero de pedidos tratados por cada componente Os componentes de um sistema podem falhar, i.e., comportar-se
Diviso de um componente em partes e sua distribuio de forma no prevista e no de acordo com a especificao devido
Replicao e caching (problema da consistncia entre rplicas e a erros (por exemplo a presena de rudo num canal de
caches) comunicao ou um erro de software) ou avarias (mecanismo que
que entra em mau funcionamento)
Para reduzir dependncias entre componentes
Meios de comunicao assncronos
Para simplificar o sistema Num sistema distribudo, as falhas so geralmente parciais (num
Uniformidade de acesso aos recursos e dos mecanismos de componente do sistema) e independentes
cooperao, sincronizao, etc. Um componente em falha pode induzir uma mudana de estado
Meios de designao universais (independentes da localizao e dos incorrecta noutro componente, levando eventualmente o sistema a
recursos) falhas, i.e., a ter um comportamento no de acordo com a sua
especificao.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 27 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 28
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 29 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 30
5
Para saber mais
6
Nota prvia
Captulo 2
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 1 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 2
Processo: programa a executar num computador Modelos arquitecturais usados para descrever os sistemas em
Objecto: quaisquer dados manipulados por um processo (ex.: termos de componentes e suas relaes
ficheiro, base de dados, objecto) Camadas de software
Cliente-servidor, peer-to-peer, variantes
Servio: conjunto de operaes disponibilizadas a Modelos fundamentais usados para descrever propriedades
processos remotos parciais, comuns a todas as arquitecturas
Necessrio definir o interface e o protocolo de acesso ao Modelo de interaco
servio Modelo de falhas
Um servio pode ser fornecido por qualquer arquitectura Modelo de segurana
discutida neste captulo
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 3 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 4
Camadas de software
N computadores interligados
Alguns dos problemas no desenvolvimento de sistemas distribudos:
Utilizao diversificada
Diversidade de ambientes Aplicao distribuda
Sistema middleware
Sistema de operao
Plataforma
1
Arquitectura do sistema Cliente/Servidor
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 7 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 8
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
Interaco mais complexa (do que num sistema cliente/servidor) Cliente/servidor replicado
leva a implementaes mais complexas Existem vrios servidores idnticos (i.e. capazes de responder aos
Operaes de pesquisa so complexas mesmo pedidos)
Vantagens
No existe ponto nico de falha Permite distribuir a carga, melhorando o desempenho (potencialmente)
No existe um ponto de falha nico
Melhor potencial de escalabilidade Problemas
Manter estado do servidor coerente em todas as rplicas
Maior nmero de computadores envolvidos pode colocar questes
Recuperar da falha parcial de um servidor
relativas a Service
Heterogeneidade
Segurana Server
Client
Server
2
Variantes do modelo cliente/servidor: servidor Variantes do modelo cliente/servidor: cliente
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 14
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 16
Client zone B
server
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 17 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 18
3
Variantes do modelo peer-to-peer Variantes do modelo peer-to-peer
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 21 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 22
4
BitTorrent BitTorrent
client client
tracker tracker
client
client
seeder seeder
client client
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 25 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 26
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 27 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 28
Pesquisa:
ON contacta o seu SN
SNs propagam pedidos entre si
Transferncia de ficheiros:
Directamente entre ONs
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 29 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 30
5
Modelo de interaco Modelo de interaco (1)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 31 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 32
Message bus
Objectos partilhados
Propriedades
Parceiros devem conhecer formato das mensagens (dados)
Parceiros devem saber processar mensagens (operaes)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 35 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 36
6
Contedo da interaco: cdigo mvel Coordenao
a) client request results in the downloading of applet code
Sistemas sncronos
Baseiam-se em limites definidos quanto s latncias:
Client Web
server Tempo de execuo de cada aco
Applet code
Tempo para transferncia das mensagens
b) client interacts with the applet Podem assumir nas interaces que os interlocutores se encontram no
tempo
Web
Client Applet server Sistemas assncronos
No assumem limites de tempo para as aces ou para a
A execuo do cdigo no cliente pode: comunicao
Melhorar o desempenho Nas interaces podemos querer que o sistema continue em
Ser usado para implementar funcionalidade adicional funcionamento at que a comunicao se conclua
Transparncia na interaco com o webserver
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 37 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 38
Num sistema distribudo, tanto os processos (e computadores) Uma falha por omisso d-se quando um processo ou um canal de
como os canais de comunicao podem falhar comunicao falha a execuo de uma aco que devia executar
Exemplo: uma mensagem que devia chegar no chegou, processo falha
No possvel conceber componentes sem falhas, apenas se pode
(crash)
diminuir a probabilidade de as mesmas ocorrerem
Uma falha temporal d-se quando um evento que se devia produzir num
O modelo de falhas consiste na definio rigorosa de quais determinado perodo de tempo ocorreu mais tarde
os erros ou avarias, assim como das falhas que podem ter
lugar nas diferentes componentes. O modelo de falhas abrange Uma falha arbitrria ou bizantina d-se quando se produziu algo no
ainda a indicao rigorosa do comportamento global do previsto
Exemplo: chegou uma mensagem corrompida, um atacante produziu uma
sistema na presena dos diferentes tipos de falhas.
mensagem no esperada.
Para lidar com estas falhas necessrio garantir que elas no levam a que
outros componentes passem a estados incorrectos
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 39 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 40
Permanentes: mantm-se enquanto no forem reparadas (ex: Availability disponibilidade. Mede a fraco de tempo em que um
computador avaria) servio est a operar correctamente, isto , de acordo com a sua
Mais fceis de detectar especificao.
Mais difceis de reparar Para um sistema ser altamente disponvel (highly available) deve
combinar um reduzido nmero de falhas com um curto perodo de
Temporrias: ocorrem durante um intervalo de tempo limitado, recuperao das falhas (durante o qual no est disponvel).
geralmente por influncia externa
Mais difceis de reproduzir, detectar Reliability - fiabilidade. Mede o tempo desde um instante inicial at
Mais fceis de reparar primeira falha, i.e., o tempo que um sistema funciona
correctamente sem falhas.
Erros transientes: ocorrem instantaneamente, ficam reparados Um sistema que falha com grande frequncia e recupere rapidamente
imediatamente aps terem ocorrido (ex.: perda de mensagem) tem baixa fiabilidade, mas alta disponibilidade.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 41 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 42
7
Classificao dos sistemas quanto disponibilidade Mais definies
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 43 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 44
As falhas temporais so difceis ou impossveis de mascarar. Fault tolerance - tolerncia a falhas. Propriedade de um sistema
Normalmente apenas os sistemas de tempo real se preocupam com distribudo que lhe permite recuperar da existncia de falhas sem
este tipo de falha. introduzir comportamentos incorrectos.
Um sistema deste tipo pode mascarar as falhas e continuar a operar,
Mas o desempenho do sistema pode ser inadequado ou parar e voltar a operar mais tarde, de forma coerente, aps
reparao da falha.
Classe de falhas Afecta Descrio
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 45 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 46
Para compensar os problemas levantados pelas falhas usam-se tcnicas A informao gerida por um sistema distribudo tem valor para os
para as mascarar. Desta forma possvel confinar os seus efeitos sobre o utilizadores
sistema.
Muitas vezes recorrendo a redundancia O modelo de segurana consiste em definir quais as ameaas das
quais um sistema se consegue defender
As falhas de omisso podem ser mascaradas por replicao ou repetio
Exemplo: se uma mensagem no chegou dentro de um certo perodo o que
se detecta por um timeout ento pode-se emiti-la novamente. Outra hiptese
duplicar o canal, enviar mais do que uma cpia em paralelo e filtrar as
A segurana de um sistema distribudo pode ser obtida:
mensagens duplicadas.
Protegendo os processos e os canais usados para a interaco entre
As falhas arbitrrias podem ser difceis de mascarar. Pode-se tentar processos;
transform-las em falhas por omisso Protegendo os objectos (dados) geridos pelos processos contra
Exemplo: um CRC numa mensagem permite transformar uma falha bizantina acessos no autorizados.
do canal numa falha por omisso
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 47 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 48
8
Definio Principais, objectos, controlo de acesso e
canais
Access rights
Num sistema existem entidades que do ponto de vista da Object
segurana tm identidade prpria, direitos e deveres essas invocation
entidades podem ser utilizadores, processos, etc. Utiliza-se o termo
principal para as designar. Client
result Server
Em Ingls, no contexto legal, um principal algum que est a ser
julgado pelos seus actos.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 49 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 50
The enemy
m
Processo P Secure channel Processo Q
Processp m Processq
Communication channel
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 51 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 52
Outras . . .
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 53 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 54
9
Nota prvia
Captulo 3 - Comunicao em
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 1 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 2
Sistemas de Middleware
comunicao
middleware Protocols
Data representation
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 3 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 4
Modelos de comunicao simples: Os sistemas de operao suportam a comunicao de dados entre os diferentes
Comunicao por streams (fluxos) computadores envolvidos num sistema distribudo
1 ou N destinatrios; Interfaces geralmente de baixo nvel
Uni-direccional ou bi-direccional. Exemplo: Protocolo mais popular - TPC/IP
Oferece os seguintes protocolos de comunicao base:
Comunicao por mensagens.
TCP streams
1 ou N destinatrios; Dados transmitidos como fluxo contnuo.
Fiabilidade no envio de mensagens ou no; Dados chegam de forma fivel a menos que o stream seja quebrado.
Diferentes garantias de ordenao na propagao das mensagens. UDP datagrama
Comunicao por mensagens.
Mensagens podem-se perder, duplicar e chegar fora de ordem.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 5 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 6
1
Exemplo: protocolos tipo pedido/resposta Heterogeneidade na representao dos dados
(wait) execute
Reply Problema: num sistema distribudo, como garantir que dois processos a
message sendReply funcionar em diferentes arquitecturas, sistemas ou linguagens
(continuation)
conseguem trocar dados?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 7 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 8
Diferentes sistemas representam os tipos primitivos de formas diferentes Utilizao de formato intermdio independente (network standard representation)
Inteiros armazenados por ordem diferente em memria Emissor converte da representao nativa para a representao da rede
Diferentes representaes para nmeros reais O receptor converte da representao da rede para a representao standard
Caracteres com diferentes codificaes Utilizao do formato do emissor (receiver makes it right)
Simples transmisso dos valores armazenados pode levar a resultados Emissor envia usando a sua representao interna e indicando qual ela
Receptor, ao receber, faz a converso para a sua representao
errados
Utilizao do formato do receptor (sender makes it right)
MSB LSB
contedo da palavra
big-endian .. 0 0 0 1 .. =1
Propriedades:
n n+1 n+2 n+3
Desempenho ?
rep. intermdia tem pior desempenho - exige duas transformaes
LSB MSB
contedo da palavra Complexidade (nmero de transformaes a definir) ?
little-endian = 1 x 256 x 256 x 256=16777216 rep. intermdia exige apenas que em cada plataforma se saiba converter de/para formato
.. 0 0 0 1 ..
intermdio
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
Aplicaes manipulam estruturas de dados complexas Muitos dos protocolos de rede usam a codificao dos dados atravs de
Ex.: representadas por grafos de objectos cdigos ASCII (SMTP, FTP, ). Esta tambm a opo quando se usa
XML.
Mensagens so sequncias de bytes
Alguns sistemas fornecem suporte para codificar tipos complexos e
O que necessrio fazer para propagar estrutura de dados complexa? (hierarquias de) objectos de forma automtica. Exemplos: RPC, Corba,
necessrio convert-la numa sequncia de bytes RMI.
Por exemplo, para um objecto necessrio: Estas alternativas sero estudadas em detalhe no prximo captulo
Converter as variveis internas, incluindo outros objectos
Necessrio lidar com ciclos nas referncias
Marshalling processo de codificar do formato interno para o formato rede Marshalling = arrange in proper order
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 11 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 12
2
Exemplo: CDR - CORBA Common Data Representation Exemplo: CDR - CORBA Common Data Representation
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 14
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 16
P Q
write m read
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 17 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 18
3
Direco de interaco Sincronizao
Comunicao sncrona:
o emissor fica bloqueado at:
o receptor receber os dados comunicao sncrona unidireccional
receber a resposta do receptor comunicao pedido / resposta ou cliente /
servidor
o receptor fica bloqueado at ser possvel consumir dados
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 19 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 20
Persistncia Fiabilidade
Comunicao voltil: mensagens apenas so encaminhadas se o receptor Comunicao fivel: o sistema garante a entrega das mensagens em
existir e estiver a executar, caso contrrio so destrudas. caso de falha temporria. Como implementar?
Exemplo: ???
Comunicao no-fivel: em caso de falha, as mensagens podem-se
perder
No se aplica a sistemas de comunicao baseados em streams
Comunicao persistente: mensagens so guardadas pelo sistema de
comunicao at serem consumidas pelos destinatrios, que podem no
estar a executar. Mensagens so guardadas num receptculo
independente do receptor mailbox, canal, porta persistente, etc.
Exemplo: ???
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 21 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 22
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 23 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 24
4
Comunicao sncrona unidireccional Comunicao sncrona unidireccional
Concorrncia:
Limita a concorrncia, porque o emissor se bloqueia at o receptor receber a
emissor receptor mensagem enviada.
send ( ) Sincronizao:
Aps o envio o emissor sabe que o receptor acabou de receber a mensagem;
Aps a recepo, o receptor sabe que o emissor esteve bloqueado at esse momento.
receive ( )
tempo
Ordenao:
processo bloqueado Em geral, garante a ordem das mensagens do mesmo emissor.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 25 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 26
Modelo de falhas:
Em caso de sucesso o emissor sabe que o receptor recebeu a mensagem, tratou-a e
O emissor fica bloqueado espera da resposta do receptor
respondeu. Em caso de insucesso no sabe exactamente o que se passou:
Problema de rede ou do receptor?
Problema antes ou depois de processar o pedido?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 27 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 28
Concorrncia:
Emissor nunca se bloqueia. Receptor pode bloquear-se na recepo de
emissor receptor
mensagens.
tempo Ordenao:
Geralmente garante a ordem das mensagens do mesmo emissor.
bloqueado
receive ( ) Modelo de falhas:
a executar Emissor no tem garantia que mensagem foi armazenada. Se for
armazenada, em geral, o sistema garante que a mensagem guardada at o
receptor a consumir.
No existem garantias que algum receptor a consuma.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 29 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 30
5
Message-Oriented Middleware (MOM) ou Message- Interaco emissor / receptor
Queuing systems
Os processos comunicam pela troca de mensagens usando um Primitivas:
emissor
subsistema intermdio que assegura a persistncia atravs de filas de a executar Put adiciona uma mensagem a uma
mensagens (queues) queue
Comunicao assncrona Get bloqueia at que a queue no
Suporta transferncia de mensagens que duram vrios minutos esteja vazia e remove a primeira
mensagem
Poll verificar se existem mensagens
na queue
Uma mensagem sempre endereada por um processo para uma queue Notify Instalar um handler para ser
e s pode ser consumida da queue por um outro processo / aplicao notificado se uma mensagem chegar
(uma queue pode, no entanto, ser partilhada por vrios processos /
aplicaes)
O emissor apenas tem garantias que a mensagem foi entregue na queue
receptor
a executar
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 31 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 32
process
process
Application host
Application host Message router
Message
process
6
Nota prvia
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 1 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 2
Um grupo um conjunto dinmico de communication end-points (portas, Comunicao ponto a ponto (ou unicast) [1x1] envio de uma
processos, servidores, etc.) que tratado pelo sistema como uma entidade nica mensagem de um nico emissor para um nico receptor
do ponto vista da comunicao
Operao multicast: envio de uma mensagem para todos os elementos do grupo,
usualmente de forma que a filiao (membership) do grupo transparente para o
emissor Formas de comunicao multi-ponto
Comunicao multicast ou em grupo [1xN] envio de uma mensagem de
um emissor para um grupo de receptores
Pode exigir que o emissor pertena ao grupo ou no
Forma de identificar o grupo
m
m
g1 g2
Comunicao broadcast ou por difuso [1xAll] envio de uma mensagem de
m
m
um emissor para todos as mquinas do sistema
p
Comunicao funcional ou anycasting [1x1 among N] envio de uma
m g4 mensagem de um emissor para um de um grupo de receptores
g3
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 3 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 4
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 5 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 6
1
Entrega das mensagens Caracterizao do multicast: fiabilidade
Diz-se que sistema de comunicao entrega Multicast no fivel (unreliable multicast) em caso de falha, no
uma mensagem quando a mensagem existem garantias sobre a entrega das mensagem aos vrios elementos
entregue aplicao do grupo
Aplicao e.g. IP multicast
Network
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 7 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 8
Multicast fivel (reliable multicast) - uma mensagem para o grupo Multicast fivel (reliable multicast) - uma mensagem para o grupo
enviada por um processo correcto (que no falhe) dever ser entregue enviada por um processo correcto (que no falhe) dever ser entregue
Agreement: Se um membro correcto entrega uma mensagem todos os Agreement: Se um membro correcto entrega uma mensagem todos os
membros correctos tambm a entregam membros correctos tambm a entregam
Ou ento ningum entrega Ou ento ningum entrega
Membros que falham podem ter entregue a mensagem ou no Membros que falham podem ter entregue a mensagem ou no
Implementao simples (e errada): o emissor emite para cada um dos Implementao simples (e errada): o emissor emite para cada um dos
elementos do grupo com base em acks+retransmisses elementos do grupo com base em acks+retransmisses
Porqu errada? Exemplo: Em caso de falha do emissor, necessrio que os elementos do grupo
propaguem as mensagens recebidas para os elementos que ainda no as
receberam
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
Sem ordem as mensagens podem ser entregues por diferentes ordens Ordem causal se m1 pode causar m2, m1 deve ser entregue sempre
em diferentes processos antes de m2
Se duas mensagens forem emitidas pelo mesmo processo, considera-se que
Ordem FIFO as mensagens de um processo so entregues pela ordem o envio da primeira mensagem pode causar o envio da segunda
de emisso em todos os processos Neste caso, a recepo da primeira deve acontecer antes da recepo da segunda
Se duas mensagens forem emitidas em processos diferentes, a primeira
Ordem total as mensagens m1, m2 so entregues por ordem total, se mensagem pode causar a segunda se for recebida antes do envio da
forem entregues pela mesma ordem em todos os processos segunda (ou transitivamente incluindo outras mensagens)
pi, receive(m1,pi) < receive(m2,pi) ou Se uma mensagem no pode causar a outra, qualquer ordem de entrega respeita
pi, receive(m1,pi) > receive(m2,pi) a ordem causal
NOTA: a ordem de entrega das mensagens de um mesmo emissor pode ser
diferente da ordem de emisso
Um sistema de multicast fivel no qual as mensagens so entregues por
ordem total chama-se sistema de multicast atmico NOTA: a noo de causalidade estende-se a qualquer tipo de comunicao
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 11 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 12
2
Ordens: exemplo Ordens: exemplo
p3 p1 p2 p4 p3 p1 p2 p4
m3
m1 m1
m2 m4
m2
m5
Def: uma vista (view) o conjunto de elementos de um grupo num dado Fiabilidade
momento. Multicast fivel
Nos sistemas de comunicao em grupo fiveis, a mudana de vista Multicast no-fivel
efectuada atravs do envio de uma mensagem multicast
Ordenao das mensagen
Sincronia virtual (virtual synchrony) um sistema de multicast fivel Sem ordem
implementa sincronia virtual se: Ordem FIFO
as mudanas de vista so entregues em todos os processos pela mesma Ordem total
ordem Ordem casual
o conjunto de mensagens entregues entre a entrega de cada duas vistas
consecutivas idntico para todos os processos que observam as duas vistas Relativamente s vistas
Sincronia virtual
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 16
3
Nota prvia
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 1 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 2
Invocao remota de procedimentos/objectos possvel estruturar uma aplicao distribuda usando como base as
Modelo interaces atravs da troca de mensagens entre processos. Os
Definio de interfaces problemas so:
Mtodos de passagem de parmetros (representao de dados) complicado e cheio de detalhes no relevantes
Mecanismos de ligao (binding) os programas ficam estruturados em funo dos protocolos (trocas de
Semntica na presena de falhas mensagens)
os servidores ficam estruturados em funo da lista de mensagens que
Concorrncia no servidor
sabem processar
Exemplos
Muitas linhas de cdigo so repetitivas, no contm nenhum significado
aplicacional especfico e referem-se ao processamento das comunicaes:
criao de communication end points e sua associao aos processos
criao, preenchimento e interpretao das mensagens
seleco do cdigo a executar consoante o tipo da mensagem recebida
gesto de temporizadores/tratamento das falhas
Segurana?
Num programa definido numa linguagem imperativa, definem-se Procedimento que invoca
Procedimento invocado
funes/procedimentos para executar uma dada operao
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 5 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 6
1
Invocao de procedimentos remotos (RPCs) Invocao de procedimentos remotos (cont.)
cliente Servidor
Propriedades
Chamada de procedimento
Extenso natural do paradigma imperativo/procedimental a um ambiente
remoto: envio de distribudo
parmetros
res = serverFunc( p1) Chamada sncrona de funes modelo de comunicao ?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 7 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 8
Cliente Servidor
cliente Servidor
a executar
res = serverFunc( p1 ) resType serverFunc( T1 p1 ) {
...
return result
}
res = serverFunc( p1)
tempo
res_type serverFunc( p1)
{
cliente bloqueado ...
(1) Invocao:
...
return result
no cliente,
}
deve existir uma funo,
com o mesmo nome, responsvel por
enviar o pedido ao servidor, codificando
a operao numa mensagem enviada
atravs dum protocolo de comunicao
de base (ex.: TCP)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 11 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 12
2
RPCs: como implementar? Como esconder os detalhes? RPCs: como implementar
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 14
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 16
RPCs: como implementar? Como esconder os detalhes? RPCs: como implementar? Como
Stub esconder
do clienteos
oudetalhes?
proxy do
(4) Recepo do pedido:
servidor
Cliente Servidor
no cliente, a mensagem de resposta do Cliente Servidor
res = serverFunc( p1) servidor deve ser
res_type descodificada
serverFunc( e o{
T1 p1) res = serverFunc( p1) (1) Invocao:
res_type serverFunc( T1 p1) {
programa do utilizador
... deve voltar a no cliente, deve ... existir uma funo,
executar com oreturn resultda operao
resultado com o mesmo return
nome, result
responsvel por
} enviar }o pedido ao servidor, codificando
a operao numa mensagem enviada
res_type serverFunc( T1 p1) s = new ServerSocket res_type serverFunc( T1 p1) atravss =
dumnewprotocolo de comunicao
ServerSocket
s = new Socket( host, port) forever s = new Socket( host, port) de base (ex.: TCP)
forever
s.send( msg( serverFunc,[p1])) Socket c = s.accept(); s.send( msg( serverFunc,[p1])) Socket c = s.accept();
s.receive( msg( result)) c.receive( msg( op, params)) s.receive( msg( result)) c.receive( msg( op, params))
s.close if( op = serverFunc) s.close (4) Recepo
if( op =do pedido:
serverFunc)
return result res = serverFunc( params[0]); return result no cliente, res
a mensagem
= serverFunc(de params[0]);
resposta do
else if( op = ...) servidor deve
else if(seropdescodificada
= ...) eo
... programa do ... utilizador deve voltar a
c.send( msg(res)) executar c.send( msg(res)) da operao
com o resultado
c.close Na prtica, sucessivas c.close
invocaes podem partilhar
o mesmo socket
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 17 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 18
3
RPCs: como implementar? Como esconder os detalhes? Automatizao do processo Stub/skeleton compilers
Stub ou skeleton do servidor
Cliente Servidor Nos sistemas de RPC/RMI pode existir uma ferramenta (stub compiler)
(2)=Recepo
res dop1)
serverFunc( pedido: res_type serverFunc( T1 p1) {
que gera automaticamente o cdigo que trata da parte de comunicao
no servidor, deve existir um processo ... Este cdigo gerado com base na interface do servidor
que aguarda a recepo de pedidos. return result
Para cada mensagem recebida, deve } Stub do cliente inclui funes do cliente com o mesmo nome que efectuam a
descodificar o pedido e invocar a comunicao com o servidor para efectuar a invocao remota
res_type
operaoserverFunc(
respectivaT1 p1) s = new ServerSocket Skeleton do servidor inclui cdigo de comunicao para esperar invocaes e
s = new Socket( host, port) forever execut-las, devolvendo o resultado
s.send( msg( serverFunc,[p1])) Socket c = s.accept();
(3)s.receive(
Envio da resposta:
msg( result)) c.receive( msg( op, params)) Stubs/skeletons incluem cdigo para codificar os parmetros e resultado
no servidor,
s.close quando a execuo do if( op = serverFunc)
return result
procedimento termina, o resultado (ou res = serverFunc( params[0]);
Nos sistemas mais modernos, por vezes, existem stubs genricos que podem
apenas a informao de fim) deve ser else if( op = ...)
... ser usados com todos os tipos (e.g. Java)
codificado e enviado para o cliente Algumas linguagens/sistemas incluem suporte para invocao remota, pelo
c.send( msg(res))
c.close que as comunicaes so tratadas pelo runtime de suporte (e.g. .NET
remoting)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 19 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 20
Aspectos a considerar num sistema de RPC/RMI RPC/RMI Interface Definition Languages (IDL)
Linguagem de definio de interfaces (IDL - [Network] Interface IDLs so linguagens que permitem definir interfaces de servidores/objectos
Definition Language) remotos, especificando:
Tipos e constantes
Modelo de passagem de parmetros, resultados e excepes Interface do servio - assinatura das funes/procedimentos
Formato de transmisso dos dados
Forma de localizao do servidor/objecto remoto (binding) Os IDLs so usados apenas para definir as interfaces, no o cdigo das operaes
Por vezes, esta distino difcil de fazer porque os IDLs esto integrados
Modelos de falhas e protocolos de interaco entre o cliente e o servidor com a linguagem
Em certos sistemas (e.g. .NET remoting), a interface pode no ser definida
Arquitectura do cliente e do servidor (multiprogramao) e outros autonomamente
aspectos de desempenho
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 21 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 22
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 23 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 24
4
Interfaces definidas em Java
Exemplo de uma interface remota em CORBA IDL Interface remota em Java RMI standard
import java.rmi.*;
Interfaces remotas
public interface IContaBancaria
Podem-se definir tipos extends Remote { estendem Remote
auxiliares
public void depositar ( float quantia )
throws RemoteException;
Podem-se definir tipos
public void levantar ( float quantia)
para erros throws SaldoDescoberto, RemoteException;
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 25 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 26
Servidor Cliente
...
Naming.rebind("/ContaBancaria", myAcc );
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 27 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 28
Interface definida em C# para .NET Remoting Interface definida em C# para .NET Remoting
Interface definida em C#
using System; comum using System;
namespace IRemoting namespace IRemoting public class ContaBancaria:
{ { System.MarshalByRefObject,
public interface IContaBancaria public interface IContaBancaria IContaBancaria
{ { {
double SaldoActual { get; } Permite definir atributos acessveis double SaldoActual { get; } // implementao . . .
por operaes associadas (get/set) }
void Depositar( float quantia ); void Depositar( float quantia );
void Levantar( float quantia ); void Levantar( float quantia ); Um objecto remotamente acessvel
} } deve estender MarshalByRefObject
} }
No .NET Remoting no
necessrio definir a interface
como remota esta pode ser
inferida a partir da definio do
servidor
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 29 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 30
5
WSDL IDL para web services WSDL - exemplo
<message name="SayHelloRequest">
Especificao WSDL bastante verbosa normalmente criada a partir de <part name="firstName" type="xsd:string"/>
</message>
interface ou cdigo do servidor <message name="SayHelloResponse">
Ex. JAX-WS tem ferramentas para criar especificao a partir de interfaces Java <part name="greeting" type="xsd:string"/>
</message>
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 33 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 34
6
Mtodos de passagem de parmetros Mtodos de passagem de parmetros (cont.)
Independentemente dos tipos dos parmetros, os mesmos podem ser: Aproximao comum nos sistemas de RPC/RMI:
parmetros de entrada ( in ) : cpia no pedido Passagem por valor para tipos bsicos, arrays, estruturas e objectos no
parmetros de sada/resultado ( out ): cpia na resposta remotos
parmetros de entrada/sada ( in/out ): cpia no pedido e na resposta Apontadores/referncias para arrays, objectos, etc. so seguidas
Estado dos objectos copiado (ex: Java RMI)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 37 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 38
str l r str l r
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 39 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 40
LocalObj
SD1 RemObj SD1 RemObj
LocalObj LocalObj
str l r str l r
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 41 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 42
7
Aproximaes codificao dos dados Extensible markup language (XML)
Utilizao de formato intermdio independente (network standard representation) XML permite descrever estruturas de Possivel aproximao usando xml para Person:
Emissor converte da representao nativa para a representao da rede dados complexas
Tags usadas para descrever a estrutura <person id="123456789">
O receptor converte da representao da rede para a representao standard
dos dados
<name>Smith</name>
Utilizao do formato do emissor (receiver makes it right) Permite associar pares atributo/valor com
a estrutura lgica
<place>London</place>
Emissor envia usando a sua representao interna e indicando qual ela <year>1934</year>
Receptor, ao receber, faz a converso para a sua representao XML extensvel </person >
Novas tags definidas quando necessrio
Utilizao do formato do receptor (sender makes it right)
Num documento XML toda a informao
Possivel aproximao usando xml para invocar
textual um metodo:
Podem-se codificar valores binrios, por
<methodCall>
Propriedades: exemplo, em base64
<methodName>inc</methodName>
Desempenho ? No contexto dos sistemas de RPC/RMI, o <params>
rep. intermdia tem pior desempenho - exige duas transformaes XML pode ser usado para: <param>
Complexidade (nmero de transformaes a definir) ? Codificar parmetros em sistemas de RPC <value><i4>41</i4></value>
rep. intermdia exige apenas que em cada plataforma se saiba converter de/para formato Codificar invocaes (SOAP)
</param>
intermdio Etc.
</params>
</methodCall>
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 43 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 44
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 45 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 46
CDR - CORBA Common Data Representation CDR - CORBA Common Data Representation
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 47 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 48
8
CORBA CDR wire message Java serialization (simplificado)
index in notes
on representation Serialized values Explanation
sequence of bytes 4 bytes struct Person {
5 length of string Person 8-byte version number class name, version number
03 string name;
47 "Smit" Smith string place; int year
java.lang.String java.lang.String number, type and name of
3 name
811 "h___" long year; place instance variables
1215 6 length of string }; 1934 5 Smith 6 London values of instance variables
1619 "Lond" London
20-23 "on__" {Smith, London,
1934 1934}
2427 unsigned long public class Person Assume-se que o processo de deserialization no tem
implements Serializable informao sobre os objectos serializados
{ Forma serializada inclui informao dos tipos
Dados com dimenso varivel so alinhados preenchendo com 0s posies no private String name;
usadas Serializao grava estado de um grafo de objectos
private String place; A cada objecto atribudo um handle. Permite escrever
No enviada informao sobre os tipos. Como funciona? private int year; apenas uma vez cada objecto, mesmo quando existem vrias
Assume-se que o emissor e o receptor sabem os tipos que esperam ... referncia para o mesmo no grafo de objectos.
So geradas funes para fazer o marshalling e o unmarshalling
}
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 49 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 50
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 51 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 52
Nos sistemas de RMI , em geral, possvel passar (referncias para) objectos remotos Nos sistemas de RMI , em geral, possvel passar (referncias para) objectos remotos
em parmetro (ou como resultado de uma operao) em parmetro (ou como resultado de uma operao)
Porqu time+object unique id?
Em Java RMI pode-se enviar uma referncia para um objecto remoto: Em Java RMI pode-se enviar uma referncia para representao
Com esta um objecto remoto:
seria fcil
Referncias nicas no tempo e no
Passando como parmetro/resultado uma referncia remota neste caso, uma cpia da Passando comoque
parmetro/resultado mudar
uma a localizao
referncia remota do objecto?
neste caso, uma cpia da
espao,
para garantir o acesso a
referncia remota enviada referncia remota enviada
um objecto que foi apagado d um No. Para tal, a referncia remota
Passando como parmetro/resultado o objecto remoto neste caso, uma referncia para o Passando como parmetro/resultado o no deve
objecto incluir
remoto directamente
neste caso, umaareferncia para o
erro e no resulta no acesso a outro
objecto remoto enviada (e no o prprio objecto) passagem por referncia localizao do objecto.
objecto objecto remoto enviada (e no o prprio objecto) passagem por referncia
Em CORBA e outros sistemas semelhantes, os objectos remotos so referenciados Em CORBA e outros sistemas semelhantes, os objectos remotos so referenciados
atravs de referncias para objectos (nicas no tempo e no espao) como por atravs de referncias para objectos (nicas no tempo e no espao) como por
exemplo a seguinte (no CORBA): exemplo a seguinte (no CORBA):
interface of interface of
Internet address port number time object unique id Internet address port number time object unique id
remote object remote object
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 53 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 54
9
Ligao do cliente ao servidor (binding) Como obter referncia para o servidor?
client server
Servidor de nomes regista associao entre nome e referncia remota
Ex.: Java RMI, Corba, *RPC
reply
Servidor de nomes e directrio regista informao sobre servidores
Para poder invocar o servidor, o cliente tem de obter uma referncia para o
Ex. Universal Directory and Discovery Service UDDI (web services)
servidor
Alm de permitir obter servidor dado o nome, permite procurar servidor
Nos sistemas de RPC, referncia corresponde ao communication end-point do servidor
pelos seus atributos
endereo IP + porta + ... (nmero nico da interface)
Nos sistemas de RMI, referncia remota corresponde geralmente a um proxy com o
mesmo interface do servidor (que internamente inclui informao de localizao do
servidor) Cliente procura servidor usando multicast/broadcast
Como obter essa 1 referncia? Alguns sistemas de objectos distribudos usavam esta aproximao
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 55 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 56
10
Como obter referncia para o servidor? Por configurao directa
Por configurao directa (p.e. URL) No cdigo do cliente, para obter uma referncia para o servidor indica-se
Ex.: Web services, .NET remoting explicitamente a sua localizao
.NET remoting
Servidor de nomes regista associao entre nome e referncia remota ChannelServices.RegisterChannel(new TcpChannel());
HelloServer obj = (HelloServer)Activator.GetObject(
Ex.: Java RMI, Corba, *RPC
typeof(Examples.HelloServer),
"tcp://localhost:8085/SayHello");
Web services
Servidor de nomes e directrio regista informao sobre servidores
Ex. Universal Directory and Discovery Service UDDI (web services) NetServerImplWSService service = new NetServerImplWSService(
Alm de permitir obter servidor dado o nome, permite procurar servidor new java.net.URL(http://host/xpto));
pelos seus atributos Ao criar o cdigo da referncia remota a partir da descrio do servio, a
mesma pode incluir a localizao do servio (<service>)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 3 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 4
Problemas quando se usa um servidor de nomes? Soluo pragmtica dos RPC e Java RMI
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 5 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 6
1
Modelo de falhas e semntica da invocao remota (RPC/RMI
ou qualquer interaco do tipo pedido/resposta)
cliente
Servido
temp r
o Chamada de
procedimento
remoto: envio de
parmetros
res = serverFunc( p1)
res_type serverFunc
cliente ( p1)
a bloqueado {
executar ...
...
res = serverFunc( p1) return result
Retorno do
procedimento
}
remoto: envio dos
resultados
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 7 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 8
Anomalias possveis durante uma invocao remota Transporte connection-less vs. connection-oriented
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
Hiptese: o cliente usa o protocolo TCP para contactar o servidor e Hiptese: o cliente usa o protocolo UDP para contactar o servidor e
enquanto no receber resposta a um pedido, ou no decidir abandonar enquanto no receber resposta a um pedido, ou no decidir abandonar
um pedido, no avana com outro pedido um pedido, no avana com outro pedido
Situao semelhante quando se usa protocolo HTTP
2) O cliente fez o pedido e no recebeu resposta nenhuma at um certo 2) O cliente fez o pedido e no recebeu resposta nenhuma at um certo
timeout, ou recebeu uma notificao de que a conexo foi quebrada timeout
Que se passou ? No se sabe se a operao foi executada ou no. Que se passou ? No se sabe se a operao foi executada ou no.
Motivo? Falha na ligao (pedido ou resposta) ou crash no servidor? Motivo? Falha do pedido, da resposta ou crash no servidor?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 11 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 12
2
Introduo de retransmisso Em caso de anomalia, aps retransmisso, o que se
passou?
Nas situaes em que o cliente no recebe resposta poder-se-ia Caso o cliente no receba resposta ao seu pedido aps uma ou mais
introduzir um mecanismo de retransmisso do pedido: retransmisses, e deseje abandonar, pode ter acontecido que:
A anomalia ocorreu antes de executar a operao em todas as retransmisses
No caso connection-oriented, se a conexo se quebrou, criando uma nova
conexo A anomalia ocorreu aps a execuo da operao em uma ou mais retransmisses
No caso connection-less, reenviando a mensagem Sabe-se que: a operao foi executada zero, uma ou mais vezes.
Caso o cliente receba resposta ao seu pedido aps uma ou mais retransmisses,
pode ter acontecido que:
Quantas vezes se retransmite? Na tentativa anterior, a anomalia ocorreu antes de executar a operao
Na tentativa anterior, a anomalia ocorreu aps a execuo da operao
Consequncias da retransmisso?
Sabe-se que: a operao foi executada uma vez ou mais vezes.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 14
Problema: como evitar que o mesmo pedido seja executado mais do que Problema: quando que o servidor pode remover a informao sobre
uma vez no servidor? resultados de pedidos antigos?
O cliente numera com um nmero de sequncia nico cada pedido que O servidor pode remover informao quando souber que j no vai ser
faz. Retransmite enquanto no receber resposta at um nmero limite de necessria:
vezes. Cliente pode informar o servidor que recebeu o resultado (ack)
Cliente pode iniciar um novo pedido (equivalente a j ter recebido resultado
O servidor quando recebe um pedido novo, executa a operao e guarda do anterior)
a resposta (cache).
Caso no inicie um novo pedido e o ack da resposta se perder, o servidor
Caso receba uma retransmisso devolve o resultado previamente pode anular a informao ao fim de um tempo alargado.
calculado (cached) pois a resposta deve ter-se perdido.
Problemas?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 16
Os sistemas de RPC / RMI necessitam de utilizar nmeros nicos no May be (talvez): mtodo pode ter sido executado uma vez ou nenhuma
reutilizveis ou nmeros de sequncia (inconfundveis num certo perodo) vez
para diversos efeitos usa-se quando no se esperam resultados; no tem garantias. O interesse
Nmeros nicos de servio / interfaces (verses) muito limitado.
Nmeros nicos de objectos (identificadores)
Nmeros nicos de invocaes
Nmeros nicos de incarnao dos clientes e servidores se necessrio Protocolo?
Implementado por protocolo de envio simples de mensagem (sem resposta
nem retransmisses)
Ideias para a gerao de nmeros nicos:
Concatenar identificador nico num dado contexto com um contador
Exemplo: Identificador nico num contexto de uma mquina:
pid + tempo
Exemplo: Identificador nico num contexto de um sistema distribudo:
IP (+tempo --- quando IP pode variar ou se quer garantir unicidade aps
recuperao de falha da mquina)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 17 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 18
3
Semntica da invocao remota (cont.) Semntica da invocao remota (cont.)
At least once (uma ou mais vezes ou pelo menos uma vez): At most once (zero ou uma vez ou no mximo uma vez):
1. se cliente recebeu a resposta, o procedimento foi executado uma ou 1. Se cliente recebeu a resposta, o procedimento foi executado uma s vez
mais vezes 2. Se o cliente no recebeu a resposta, o procedimento foi executado zero
2. se o cliente no recebeu a resposta, o procedimento foi executado zero ou ou uma vez
mais vezes
Protocolo ?
Protocolo ? Protocolo sem re-emisses ou protocolo com re-emisses e filtragem de
Implementado por protocolo com re-emisses e sem filtragem de duplicados duplicados memorizando o pedido assim que o 1 recebido
ou com filtragem memorizando o pedido s aps a sua execuo
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 19 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 20
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 21 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 22
Uma operao idempotente se a sua execuo repetida no altera o efeito Uma operao idempotente se a sua execuo repetida no altera o efeito
produzido (deixando o servidor no mesmo estado ou num estado produzido (deixando o servidor no mesmo estado ou num estado
aplicacionalmente aceitvel como equivalente e produzindo o mesmo resultado). aplicacionalmente aceitvel como equivalente e produzindo o mesmo resultado).
As operaes idempotentes podem ser usadas com base na semntica at least As operaes idempotentes podem ser invocadas usando uma semntica at least
once once sem consequncias
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 23 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 24
4
Que protocolos se usam? Semnticas geralmente adoptadas
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 25 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 26
Organizao interna
Sequencial vs. concorrente
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 27 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 28
Motivao: num sistema pode haver um nmero muito elevado de objectos Quando necessrio activar um servidor (objecto remoto), pode-se criar:
remotos cujo estado se quer que persista durante tempo ilimitado, mas que no Um servidor para atender todos os clientes
esto em uso durante grande parte do tempo Aproximao mais comum
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 29 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 30
5
Organizao dos servidores: threads Utilizao de threads num servidor
Client makes
Servidor sequencial: o servidor executa os pedidos de forma sequencial, requests to server
um de cada vez
Modelo simples e claro
Receipt & Input-output
Para alguns tipos de servios, esta aproximao pode ter um queuing
desempenho inadequado
Exemplos: servidores de bases de dados, de ficheiros, etc. Porqu? T1
Exemplo: servios que chamam outros servios em ambos os sentidos (AB Requests
e B A). Porqu? N threads
Client
Server
A ter em ateno:
Em geral, quando a execuo de uma operao remota pode ser longa Possveis problemas de concorrncia: necessidade de sincronizar execuo
interessante introduzir concorrncia no servidor. Porqu? dos vrios threads.
Distributed deadlock: quando um servidor A chama outro servidor B e o servidor B chama
o servidor A
Como que os threads se organizam e se relacionam com os pedidos?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 31 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 32
workers workers
Thread-per-request: cada invocao executada por um thread Thread-per-request: cada invocao executada
Quais os problemas depor um threadentre os threads
concorrncia
nos vrios modelos?
Thread-per-connection: as invocaes de uma conexo so executadas todas Thread-per-connection: as invocaes de uma conexo so executadas todas
pelo mesmo thread pelo mesmo thread Nos modelos thread-per-request e thread-per-
connection podem existir vrios threads a aceder aos
Thread-per-object: as invocaes para um objecto so executadas todas pelo Thread-per-object: as invocaes
mesmos para um objecto so executadas todas pelo
dados.
mesmo thread mesmo thread
No modelo thread-per-object pode existir um
problema de deadlock distribudo se a execuo de
um mtodo puder levar invocao local de um
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 33
mtodo noutroMaterial
objectode suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 34
Nos sistemas que usam mltiplos threads comum: Tipo de invocao em RMI
Existir um thread responsvel por distribuir as invocaes e existir um Invocao esttica operao a invocar definida em tempo de compilao
conjunto de threads responsveis por executar as invocaes, sendo Ex: server.someOp( param1, param2 )
reutilizados em sucessivas invocaes Invocao dinmica operao a invocar pode ser definida em tempo de
Pools de threads execuo
Em cada momento, o sistema mantm informao sobre os threads que no Ex. server.invoke( objId, someOpId, params )
esto a processar nenhuma operao, os quais se encontram a dormir
Quando uma nova invocao recebida, a informao sobre a mesma passada
para um thread da pool, o qual fica responsvel por processar o pedido Outros modelos de RPC/RMI
No fim de processar o pedido, o thread volta pool RPCs/RMI assncronos neste caso, o servidor envia um ACK quando recebe
o pedido; o cliente prossegue assim que recebe o ACK. O Cliente pode, mais
tarde, aceder ao resultado (assincronamente)
E.g. Java Future: Future<ResultType> res = server.execOpAsync( someParams);
if( res.isDone() ) result = res.get();
RPCs/RMIs one-way neste caso, o cliente prossegue imediatamente a
seguir a enviar o pedido, no esperando por resposta
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 35 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 36
6
! Apresentao de Java RMI
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 37 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 38
Ao assumir-se uma nica linguagem, portvel entre diferentes plataformas, Caractersticas particularmente relevantes do Java no contexto da
possvel explorar algumas vantagens impossveis noutros contextos, invocao remota:
nomeadamente:
Heterogeneidade:
Uma plataforma de distribuio homognea mesmo quando as mquinas e sistemas
Neutralidade em relao a diferentes arquitecturas hardware: o cdigo
so heterogneos
interpretado (byte Codes), atravs de JVMs (Java Virtual Machines). Todos
Um modelo de objectos nico e global
Um nico sistema de tipos (locais e remotos)
os tipos de dados so definidos rigorosamente.
Objectos em parmetro, passados de forma polimrfica
Acesso a servidores (eventualmente desconhecidos):
Carrega dinamicamente cdigo se necessrio Ligao dinmica do cdigo das classes: o cdigo s carregado
Baseia-se na segurana do sistema Java quando necessrio e tal operao realizada dinamicamente. A JVM que
carrega dinamicamente as classes, conhece a noo de interface e realiza
controlo de tipos em tempo de carregamento. O carregamento de cdigo
pode fazer-se remotamente atravs de URLs.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 39 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 40
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 41 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 42
7
Tipos dos argumentos e do valor de retorno Carregamento de classes
Os argumentos e o valor de retorno podem ser de qualquer tipo desde que seja RMI carrega o cdigo das classes se o mesmo no estiver disponvel
derivado de Serializable ou Externalizable (or RemoteObject, como o
UnicastRemoteObject) Isto aplica-se s classes do objecto remoto, do stub, do esqueleto, dos
parmetros e do valor de retorno dos mtodos
Os objectos do tipo Serializable e Externalizable so copiados atravs da
serializao de objectos O carregamento faz-se remotamente se necessrio
os stubs (referncias remotas) so serializveis Os URLs das classes ficam anotados nas referncias remotas para se poderem
d o efeito da passagem de um objecto por valor (duplicao do objecto) localizar as mesmas
Os objectos do tipo RemoteObject passados em parmetro so substitudos por As classes a carregar so sujeitas ao controlo do gestor de segurana instalado
stubs
o stub tem embebida a referncia remota (a serializao especial)
d o efeito da passagem por referncia
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 43 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 44
Activatable UnicastRemoteObject
import java.rmi.*
Task - define uma task arbitrria para ser executada remotamente
import java.rmi.server.*
public interface Task extends Serializable { public class ComputeServer extends UnicastRemoteObject implements Compute {
Object run () ; public ComputeServer () throws RemoteException { /* initializations*/ }
}
public Object runTask (Task t) throws RemoteException {
return t.run () ;
Compute - define o servio do servidor de computao }
public static void main (String [] args) {
// SecurityManager installation
import java.rmi.*; try {
ComputeServer cs = new ComputeServer () ;
public interface Compute extends Remote {
Naming.rebind ( ComputeServer, cs );
Object runTask ( Task t ) throws RemoteException;
} catch (Exception e) {
} System.out.println (Cant compute + e.getMessage() );
e.printStackTrace ();
}
}
}
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 47 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 48
8
Notas sobre a interface Compute O que o cliente tem que fazer
Imprime o resultado
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 49 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 50
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 51 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 52
// print results
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 53 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 54
9
Segurana do carregamento do cdigo Carregamento de cdigo no cliente
Os objectos anotam o seu codebase, o que permite obter o cdigo das classes
remotamente sem configurao adicional.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 55 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 56
Como permitir actualizao das polticas sem ter de criar um novo cliente e no
sobrecarrgando o servidor?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 57 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 58
public interface ExpenseServer extends Remote public interface ExpPolicy extends Serializable
{
ExpPolicy getExpPolicy ( ) throws RemoteException;
{
void checkEntry ( ExpenseEntry entry )
void submit ( ExpenseList report ) throws InvalidExpenseException ;
throws RemoteException, InvalidReportException ; }
}
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 59 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 60
10
Notas sobre a soluo ExpPolicy e ExpenseReport
ExpenseEntry entry;
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 61 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 62
11
Nota prvia
cliente/servidor na internet
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 1 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 2
Web services REST A Web service is a software system designed to support interoperable
machine-to-machine interaction over a network. It has an interface
Invocao remotas assncronas
described in a machine-processable format (specifically WSDL). Other
Ajax systems interact with the Web service in a manner prescribed by its
GWT description using SOAP messages, typically conveyed using HTTP with an
XML serialization in conjunction with other Web-related standards.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 3 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 4
Garantir inter-operabilidade
Usar protocolos web (HTTP e HTTPS) para transporte
Tambm se pode usar SMTP !!! Applications
Usar URLs e URIs como referncias para servios remotos
Directory service
Security
Choreography
Tratar problemas de heterogeneidade dos dados usando XML para
representar os dados
Web Services
Service descriptions (in WSDL)
SOAP
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 5 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 6
1
Componentes bsicos UDDI
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 7 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 8
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
body
body
body element
body element
body element
body element
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 11 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 12
2
SOAP: interaces WSDL IDL para web services
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 14
Operation - definio abstracta das aces suportadas pelo servio public SimpleWSServer() {
Port Type - conjunto abstracto das operaes suportadas por um ou mais }
infos = new HashMap<String, MyInfo>();
endpoints
Binding - uma especificao concreta do protocolo e formato de dados public void addInfo( String name, int age) {
infos.put( name, new MyInfo( name, age));
usados por um port type. }
Port - um endpoint concreto que combina um endereo e um binding
public MyInfo getInfo( String name) throws InfoNotFoundException {
particulares.
if( infos.containsKey( name))
Servio - um conjunto de endpoints/ports relacionados. return infos.get( name);
else
throw new InfoNotFoundException();
}
}
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 16
3
Cdigo gerado: SimpleWSServer.wsdl Cdigo gerado: MyServer.wsdl
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions targetNamespace="http://aulaWS/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http:// tipos xmlns:tns="http://aulaWS/"
<xs:schema version="1.0" targetNamespace="http://aulaWS/"
aulaWS/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> xmlns:xs="http://www.w3.org/2001/XMLSchema">
<types> Tipos usados nas mensagens so
<xs:element name="InfoNotFoundException" type="tns:InfoNotFoundException"/>
<xsd:schema> ... definidos em XML Schema
<xsd:import namespace="http://aulaWS/" schemaLocation="SimpleWSServer_schema1.xsd"/> <xs:element name="getInfo" type="tns:getInfo"/>
</xsd:schema> <xs:element name="getInfoResponse" type="tns:getInfoResponse"/>
</types> portType
<xs:complexType name="getInfo">
<message name="getInfo">
<part name="parameters" element="tns:getInfo"/> Define os servios do Web Service <xs:sequence>
</message> <xs:element name="arg0" type="xs:string" minOccurs="0"/>
<message name="getInfoResponse">
Mensagens permitem assinatura dos </xs:sequence>
servios
<part name="parameters" element="tns:getInfoResponse"/> </xs:complexType>
</message> <xs:complexType name="getInfoResponse">
<message name="InfoNotFoundException"> <xs:sequence>
<part name="fault" element="tns:InfoNotFoundException"/>
<xs:element name="return" type="tns:myInfo" minOccurs="0"/>
</message>
...
</xs:sequence>
<portType name="SimpleWSServer"> </xs:complexType>
<operation name="getInfo"> <xs:complexType name="myInfo"/>
<input message="tns:getInfo"/> <xs:complexType name="InfoNotFoundException">
<output message="tns:getInfoResponse"/> <xs:sequence>
<fault name="InfoNotFoundException" message="tns:InfoNotFoundException"/> <xs:element name="message" type="xs:string" minOccurs="0"/>
</operation>
</xs:sequence>
...
</portType>
</xs:complexType>
</definitions> </xs:schema>
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 19 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 20
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 23 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 24
4
Tipos XML Schema Clientes
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 25 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 26
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 27 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 28
Uma soluo consiste em utilizar os wizards disponveis nos ambientes de WS-Reliability: especificao que permite introduzir fiabilidade nas
desenvolvimento de software invocaes remotas (com as diferentes semnticas)
WS-ReliableMessaging
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 29 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 30
5
WS-Coordination Web Services: resumo
flight booking
a
flight booking
b
Tem ganho popularidade na indstria porque apresenta uma soluo
Travel Agent
Client
Service
para integrar diferentes aplicaes
hire car booking
a
RMI apenas Java
Corba/IIOP suporte mais complexo
hire car booking
b
hotel booking
a
hotel booking
b
Permite:
Utilizao de standards
HTTP, XML
Reutilizao de servios (arquitecturas orientadas para os servios)
WS-Coordination
Modificao parcial/evoluo independente dos servios
WSDL
Disponibilidade, assincronismo
WS-Eventing
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 31 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 32
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 33 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 34
Desempenho:
Complexidade do XML
Difcil fazer caching: noo de operao + estado
Complexidade
Necessrio utilizao de ferramentas de suporte
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 35 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 36
6
REST: Representational State Transfer
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 37 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 38
Protocolo cliente/servidor stateless: cada pedido contm toda a Usa HTTP GET, POST, etc., mas
informao necessria para ser processado objectivo: tornar o sistema Usa dados bem-tipados (usando schemas XML)
simples.
Um exemplo (de Roger L. Costello)
Recursos no sistema tudo so recursos, identificados por um URI/URL. Uma empresa pretende disponibilizar web services REST para permitir aos
Recursos tipicamente armazenados num formato estruturado que suporta seus clientes:
hiper-ligaes (e.g. XML) Obter uma lista de peas
Obter informao detalhada sobre uma pea
Interface uniforme: todos os recursos so acedidos por um conjunto de Submeter uma ordem de compra
operaes bem-definidas. Em HTTP: POST, GET, PUT, DELETE (equiv.
criar, ler, actualizar, remover).
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 39 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 40
Tornar uma lista de peas disponvel como um recurso Tornar uma lista de peas disponvel como um recurso
http://www.parts-depot.com/parts http://www.parts-depot.com/parts?query=hammer
Ou http://www.parts-depot.com/parts Ou http://www.parts-depot.com/parts/hammer
Enviar um pedido HTTP GET para o recurso devolve Enviar um pedido HTTP GET para o recurso devolve
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 41 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 42
7
Exemplo (cont.) Exemplo (cont.)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 43 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 44
Nos sistemas de RPCs a nfase nas operaes que podem ser (baseado em documento REST na wikipedia)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 45 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 46
Tem ganho popularidade Definido em JAX-RS (JSR 311) aprovado em Outubro de 2008
Muitos servios web disponibilizados segundo este modelo (Ou usar JAX-WS)
Grandes vantagens: simplicidade e desempenho
Suporte lingustico baseado na utilizao de anotaes
Permite definir que um dado URL leva execuo dum dado mtodo
Permite definir o modo de codificao da resposta (xml ou json)
Servios disponibilizados num modelo REST nem sempre aderem XML usando mecanismo standard de codificao de cobjectos java em XML
fornecido pelo JAXB
completamente aos princpios REST JSON mecanismo leve de codificao de tipos (RFC 4627)
Difcil disponibilizar nmero elevado de mtodos {
"firstName": "John",
Exemplo: "lastName": "Smith",
http://api.flickr.com/services/rest/?method=flickr.photos.search&. . . . "address": {
"streetAddress": "21 2nd Street",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 47 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 48
8
REST: suporte Java (exemplo) Web services e REST: arquitectura de suporte
@Path("/customerservice/")
@ProduceMime("application/xml")
public class CustomerService {
@GET
public Customers getCustomers() { ...... }
@GET
@Path("/customers/{id}")
@Produces("application/json")
public Customer getCustomer(@PathParam("id") String id) {...... }
@PUT
@Path("/customers/{id}")
@Consumes("application/xml")
public Response updateCustomer(@PathParam("id") Long id, Customer customer) { ...... }
@POST
@Path("/customers")
public Response addCustomer(Customer customer) { ...... }
@DELETE
@Path("/customers/{id}/")
public Response deleteCustomer(@PathParam("id") String id) { ...... }
@Path("/orders/{orderId}/")
public Order getOrder(@PathParam("orderId") String orderId) { ...... }
}
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 49 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 50
REST:
Mais simples
Mais eficiente
Complicado implementar servios complexos
Web services
Mais complexo
Grande suporte da indstria
Pode ser mais fcil para servios mais complexos
E.g.:
http://www.oreillynet.com/pub/wlg/3005
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 51 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 52
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 53 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 54
9
Ajax (cont.) GWT: Google Web Toolkit
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 55 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 56
Exemplo: Java com mtodo assncrono (callback) Exemplo: Java com mtodo assncrono (callback)
public interface MyService extends RemoteService { Chamada assincrona (getShapes retorna logo; mais tarde a resposta entregue chamando
Shape[] getShapes(String databaseName) throws ShapeException . . . ; // bloqueante onSuccess() ou onFailure() ) :
}
public interface MyServiceAsync { service.getShapes(dbName, new AsyncCallback() {
void getShapes(String databaseName, AsyncCallback callback) . . . ; // no bloqueante public void onSuccess(Object result) {
} Shape[] shapes = (Shape[]) result;
controller.processShapes(shapes);
}
public class MyServiceImpl extends RemoteServiceServlet implements MyService {
Shape[] getShapes(String databaseName) throws ShapeException . . . { public void onFailure(Throwable caught) {
try {
} throw caught;
} } catch (IncompatibleRemoteServiceException e) {
public class MyServiceAsyncImpl extends RemoteServiceServlet implements MyServiceAsync { // this client is not compatible with the server; cleanup and refresh the browser
} catch (InvocationException e) {
Shape[] getShapes(String databaseName, AsyncCallback callback) . . . {
// the call didn't complete cleanly
} catch (ShapeException e) {
} // one of the 'throws' from the original method
} } catch (Throwable e) {
// last resort -- a very unexpected exception
}
}
} );
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 57 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 58
REST: http://en.wikipedia.org/wiki/Representational_State_Transfer
GWT: http://code.google.com/webtoolkit/
10
Sistemas Distribudos
LEI (1 ciclo) 2010/2011
Captulo 5
cliente/servidor na internet
Nota prvia
1
Organizao do captulo
Web Services
Definio W3C:
2
Web services: motivao
Garantir inter-operabilidade
Usar protocolos web (HTTP e HTTPS) para transporte
Tambm se pode usar SMTP !!!
Usar URLs e URIs como referncias para servios remotos
Tratar problemas de heterogeneidade dos dados usando XML para
representar os dados
Applications
Directory service
Security
Choreography
Web Services
Service descriptions (in WSDL)
SOAP
3
Componentes bsicos
WSDL: linguagem de
especificao de servios
UDDI
4
Estruturas de dados UDDI
businessEntity
businessServices
human readable
businessServices
information
businessServices
bindingTemplate
about the publisher
human readable
bindingTemplate
information
URL
about a
bindingTemplate
tModel
family of services
information
tModel
about the
URL
interfaces
serviceinterfaces
service
tModel
key
URL
key
service descriptions
key
SOAP
5
SOAP: mensagens
envelope
header
header element
header element
body
body element
body element
SOAP: mensagens
<?xml version='1.0' encoding='UTF-8'?>
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://
No SOAP toda a informao est includa no envelope da mensagem
schemas.xmlsoap.org/soap/envelope/' xmlns:soapenc='http://
schemas.xmlsoap.org/soap/encoding/' soap:encodingStyle='http://
O envelope inclui elementos de cabealho e de corpo
schemas.xmlsoap.org/soap/encoding/'>
<soap:Body>
<n:sayHello xmlns:n='urn:examples:helloservice'>
<firstName xsi:type='xsd:string'>World</firstName>
</n:sayHello>
</soap:Body>
</soap:Envelope>
envelope
header
header element
header element
body
body element
body element
6
SOAP: interaces
7
WSDL: elementos
public SimpleWSServer() {
infos = new HashMap<String, MyInfo>();
}
8
WSDL a partir do Java JAX-WS
Anota-se uma classe usando: WebService e
WebMethod
import javax.jws.*;
import java.util.*;
@WebService()
public class SimpleWSServer {
private Map<String, MyInfo> infos;
public SimpleWSServer() {
infos = new HashMap<String, MyInfo>();
}
@WebMethod()
public void addInfo( String name, int age) {
infos.put( name, new MyInfo( name, age));
}
@WebMethod()
public MyInfo getInfo( String name) throws InfoNotFoundException {
if( infos.containsKey( name))
return infos.get( name);
else
throw new InfoNotFoundException();
}
} Para gerar WSDL e skeleton:
wsgen -cp . aulaWS.SimpleWSServer -wsdl -servicename MyServer
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 17
9
Cdigo gerado: SimpleWSServer.wsdl
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions targetNamespace="http://aulaWS/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://
aulaWS/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<types>
<xsd:schema>
<xsd:import namespace="http://aulaWS/" schemaLocation="SimpleWSServer_schema1.xsd"/>
</xsd:schema>
</types> portType
<message name="getInfo">
<part name="parameters" element="tns:getInfo"/> Define os servios do Web Service
</message>
<message name="getInfoResponse">
Mensagens permitem assinatura dos
servios
<part name="parameters" element="tns:getInfoResponse"/>
</message>
<message name="InfoNotFoundException">
<part name="fault" element="tns:InfoNotFoundException"/>
</message>
...
<portType name="SimpleWSServer">
<operation name="getInfo">
<input message="tns:getInfo"/>
<output message="tns:getInfoResponse"/>
<fault name="InfoNotFoundException" message="tns:InfoNotFoundException"/>
</operation>
...
</portType>
</definitions>
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 19
10
Cdigo gerado: SimpleWSServer.wsdl
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions targetNamespace="http://aulaWS/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://
aulaWS/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<types>
<xsd:schema>
<xsd:import namespace="http://aulaWS/" schemaLocation="SimpleWSServer_schema1.xsd"/>
</xsd:schema>
</types> message
<message name="getInfo">
<part name="parameters" element="tns:getInfo"/> As mensagens podem ser de input,
</message> output ou assinalar erros
<message name="getInfoResponse">
<part name="parameters" element="tns:getInfoResponse"/>
</message>
<message name="InfoNotFoundException">
<part name="fault" element="tns:InfoNotFoundException"/>
</message>
...
<portType name="SimpleWSServer">
<operation name="getInfo">
<input message="tns:getInfo"/>
<output message="tns:getInfoResponse"/>
<fault name="InfoNotFoundException" message="tns:InfoNotFoundException"/>
</operation>
...
</portType>
</definitions>
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 21
11
Cdigo gerado: MyServer.wsdl
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions targetNamespace="http://localhost/WS/" name="MyServer" ... xmlns:tns="http://localhost/WS/" ... >
<import namespace="http://aulaWS/" location="SimpleWSServer.wsdl"/>
<binding name="SimpleWSServerPortBinding" type="ns1:SimpleWSServer" xmlns:ns1="http://aulaWS/">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="getInfo">
<soap:operation soapAction=""/> port
<input>
<soap:body use="literal"/> Define o endereo de rede onde o
</input>
<output>
web service disponibilizado
<soap:body use="literal"/>
</output>
<fault name="InfoNotFoundException">
<soap:fault name="InfoNotFoundException" use="literal"/>
</fault>
</operation>
...
</binding>
<service name="MyServer">
<port name="SimpleWSServerPort" binding="tns:SimpleWSServerPortBinding">
<soap:address location=http://webserver/WS/MyServer"/>
</port>
</service>
</definitions>
12
Tipos XML Schema
Clientes
13
Cliente em Java JAX-WS
package client;
import client.ws.*;
System.out.println(port.getInfo(Z Maria") );
}
}
import javax.xml.ws.WebServiceRef;
14
Criar servidor/cliente usando Java
WS-*
15
WS-Coordination
flight booking a
flight booking b
Travel Agent
Client
Service
hire car booking a
hire car booking b
hotel booking a
hotel booking b
Permite:
Utilizao de standards
HTTP, XML
Reutilizao de servios (arquitecturas orientadas para os servios)
WS-Coordination
Modificao parcial/evoluo independente dos servios
WSDL
Disponibilidade, assincronismo
WS-Eventing
16
Web services: utilizaes possveis
17
Web services: dentro de uma organizao
Desempenho:
Complexidade do XML
Difcil fazer caching: noo de operao + estado
Complexidade
Necessrio utilizao de ferramentas de suporte
18
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 37
19
REST: princpios de desenho
20
Exemplo
<?xml version="1.0"?>
<p:Parts xmlns:p="http://www.parts-depot.com"
xmlns:xlink="http://www.w3.org/1999/xlink">
<Part id="00345" xlink:href="http://www.parts-depot.com/parts/00345"/>
<Part id="00346" xlink:href="http://www.parts-depot.com/parts/00346"/>
<Part id="00348" xlink:href="http://www.parts-depot.com/parts/00348"/>
</p:Parts>
Exemplo (cont.)
<?xml version="1.0"?>
<p:Parts xmlns:p="http://www.parts-depot.com"
xmlns:xlink="http://www.w3.org/1999/xlink">
<Part id="00345" xlink:href="http://www.parts-depot.com/parts/00345"/>
</p:Parts>
21
Exemplo (cont.)
<?xml version="1.0"?>
<p:Part xmlns:p="http://www.parts-depot.com"
xmlns:xlink="http://www.w3.org/1999/xlink">
<Part-ID>00345</Part-ID>
<Name>Widget-A</Name>
<Description>This part is used within the frap assembly</Description>
<Specification xlink:href="http://www.parts-depot.com/parts/00345/
specification"/>
<UnitCost currency="USD">0.10</UnitCost>
<Quantity>10</Quantity>
</p:Part>
Exemplo (cont.)
<?xml version="1.0"?>
<p:Order xmlns:p="http://www.parts-depot.com"
xmlns:xlink="http://www.w3.org/1999/xlink">
<Part-ID>00345</Part-ID>
<UnitCost currency="USD">0.10</UnitCost>
<Quantity>10</Quantity>
</p:Part>
22
REST vs. RPCs
RPCs: REST:
getUser() http://example.com/users/{user}
addUser() (GET, POST, DELTETE, PUT)
removeUser()
updateUser()
listUsers() http://example.com/users/
findUser() http://example.com/findUserForm
23
REST: notas soltas
24
REST: suporte Java (exemplo)
@Path("/customerservice/")
@ProduceMime("application/xml")
public class CustomerService {
@GET
public Customers getCustomers() { ...... }
@GET
@Path("/customers/{id}")
@Produces("application/json")
public Customer getCustomer(@PathParam("id") String id) {...... }
@PUT
@Path("/customers/{id}")
@Consumes("application/xml")
public Response updateCustomer(@PathParam("id") Long id, Customer customer) { ...... }
@POST
@Path("/customers")
public Response addCustomer(Customer customer) { ...... }
@DELETE
@Path("/customers/{id}/")
public Response deleteCustomer(@PathParam("id") String id) { ...... }
@Path("/orders/{orderId}/")
public Order getOrder(@PathParam("orderId") String orderId) { ...... }
}
25
Web services ou REST?
REST:
Mais simples
Mais eficiente
Complicado implementar servios complexos
Web services
Mais complexo
Grande suporte da indstria
Pode ser mais fcil para servios mais complexos
E.g.:
http://www.oreillynet.com/pub/wlg/3005
26
AJAX: Asynchronous JavaScript with XML
Ideias chave:
Apresentao baseada em standards: XHTML e CSS;
Apresentao e interao dinmica usando o Document Object Model;
Troca e manipulao de dados usando XML e XSLT;
Obteno assncrona de dados usando XMLHttpRequest;
Utilizao de JavaScript na implementao destes princpios.
Web:
Utilizador clica em links ou preenche formulrios (forms)
Servidor obtm dados dum form e computa nova pgina
Browser apresenta nova pgina completa
Ajax:
Aco do utilizador desencadeia modificao de partes da pgina
apresentada
E.g. Gmail, Google Maps, etc.
27
Ajax (cont.)
Baseado em Javascript
Javascript uma linguagem de scripting suportada pela generalidade dos
browsers
Algumas caractersticas:
No Java !!!
No tipada
Sem threads
Suporte para eventos. Porqu?
XMLHttpRequest permite efectuar pedido HTTP, de forma assncrona
Desenvolvimento
Usando frameworks Ajax
E.g. Prototype, Dojo, Script.aculo.us, GoogleWeb Toolkit (GWT)
Desenvolvimento em Java
O compilador do toolkit transforma o cliente Java em Javascript
28
Exemplo: Java com mtodo assncrono (callback)
Chamada assincrona (getShapes retorna logo; mais tarde a resposta entregue chamando
onSuccess() ou onFailure() ) :
29
Para saber mais
REST: http://en.wikipedia.org/wiki/Representational_State_Transfer
GWT: http://code.google.com/webtoolkit/
30
Nota prvia
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 1 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 2
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 3 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 4
Mecanismo: uma porta com fechadura e chave para proteger uma casa Num sistema existem entidades que do ponto de vista da segurana tm
identidade prpria, direitos e deveres - essas entidades podem ser
A casa fica protegida com este mecanismo? utilizadores, processos, etc. e designam-se pelo termo principal
Poltica: a porta deve estar sempre fechada com a chave A segurana do sistema distribudo passa por:
autenticar os principais (autenticao)
Como garantir/verificar que a poltica cumprida? verificar os seus direitos de acesso aos objectos (controlo de acessos)
utilizar canais seguros para impedir o acesso, alterao ou destruio
A casa j fica protegida com esta poltica? indevida de informao, ou seja, proteger a privacidade
E as janelas?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 5 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 6
1
Elementos do modelo de segurana Um sistema centralizado clssico
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 11 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 12
2
Problemas do cdigo mvel Java Security Manager
O cdigo obtido remotamente pode conter operaes que comprometam As operaes criticas na biblioteca Java verificam permisses:
a segurana de um sistema SecurityManager security = System.getSecurityManager();
if (security != null) { security.checkXXX(argument, . . . ); }
Como se pode minimizar o risco (exemplo Java VM):
Verificar que o cdigo apenas contm operaes legtimas A politica de segurana pode ser configurada ao gosto:
Manter o cdigo obtido remotamente separado do cdigo local System.getProperties().put( "java.security.policy", my.policy");
System.setSecurityManager( new SecurityManager() );
Associar permisses ao cdigo obtido remotamente. As permisses dadas
podem depender da origem do cdigo, o que pode ser verificado atravs da
assinatura do mesmo Ficheiro my.policy tem algo como:
Quando se executa uma operao que acede a um recurso do sistema (exemplo: grant codeBase "file:/home/user2/" { !
sockets, ficheiros, etc.), so verificadas as permisses (de todas as classes do permission java.io.FilePermission "/tmp/abc", "read"; };!
stack)
Possvel porque todas estas operaes so implementadas pelo biblioteca do
sistema
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 14
Mtodos de ataque
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 16
Canais no seguros:
Indiscrio obteno de mensagens sem autorizao (Eavesdropping)
Mascarar-se ou pretender ser outro (Masquerading)
Reemisso de antigas mensagens (Message replaying)
Alterao indevida do contedo das mensagens (Message tampering)
Supresso de mensagens (Message supression)
Repudiar (negar) as mensagens enviadas pelo prprio
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 17 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 18
3
Eavesdropping (exemplo): cpia dos pacotes que Masquerading (exemplo): mascarar o emissor
transitam na rede
Packet sniffing: IP Spoofing:
broadcast media Permite a gerao de pacotes directamente da aplicao mas em que o
modo promiscuous da placa ethernet (NIC) permite copiar todos os pacotes endereo origem falso (est spoofed)
permite a leitura de todos os dados no cifrados (exemplo: passwords) o receptor no pode detectar que o pacote est spoofed
exemplo: Trudy sniffs Bobs packets e.g.: Trudy mascara-se como Bob
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 19 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 20
B
SYN
SYN
Nota: cifrar e no encriptar
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 21 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 22
4
Sistemas Distribudos
LEI (1 ciclo) 2010/2011
Captulo 6
Nota prvia
1
Organizao do captulo
Apresentao do problema
Diferenas essenciais entre os sistemas centralizados e os sistemas distribudos
Canais seguros e seus requisitos
Criptografia simtrica
Utilizao da criptografia simtrica na comunicao e autenticao
Criptografia assimtrica
Utilizao da criptografia assimtrica na comunicao e autenticao
Assinaturas digitais
Aplicaes seguras mais comuns: SSL, PGP, ...
Da necessidade da segurana
2
Exemplo
Mecanismo: uma porta com fechadura e chave para proteger uma casa
E as janelas?
Modelo de segurana
3
Elementos do modelo de segurana
4
Num sistema distribudo
Processo
do SD
?
5
Assumir o pior
As redes so inseguras
6
Problemas do cdigo mvel
7
Mtodos de ataque
8
Comunicao num sistema sem segurana
Canais no seguros:
Indiscrio obteno de mensagens sem autorizao (Eavesdropping)
Mascarar-se ou pretender ser outro (Masquerading)
Reemisso de antigas mensagens (Message replaying)
Alterao indevida do contedo das mensagens (Message tampering)
Supresso de mensagens (Message supression)
Repudiar (negar) as mensagens enviadas pelo prprio
9
Eavesdropping (exemplo): cpia dos pacotes que
transitam na rede
Packet sniffing:
broadcast media
modo promiscuous da placa ethernet (NIC) permite copiar todos os pacotes
permite a leitura de todos os dados no cifrados (exemplo: passwords)
exemplo: Trudy sniffs Bobs packets
Alice Trudy
IP Spoofing:
Permite a gerao de pacotes directamente da aplicao mas em que o
endereo origem falso (est spoofed)
o receptor no pode detectar que o pacote est spoofed
e.g.: Trudy mascara-se como Bob
Alice Trudy
Bob
10
Impedimento de prestao de servio (exemplo)
A C
SYN
SYN
SYN SYN SYN
B
SYN
SYN
11
Canais seguros Criptografia
Pode acontecer que k=j ou que estejam relacionadas Trudy no consegue passar por Alice ou Bob
No consegue obter M (mesmo em parte)
Qualquer alterao no passa despercebida
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 3 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 4
Normalmente baseiam-se em cifras de substituio O algoritmo criptogrfico ser tanto melhor quanto mais difcil for obter o
Uma cifra de substituio substitui um smbolo por outro texto original a partir do texto cifrado, sem se conhecer a chave. A
eficcia de um ataque depende de dois factores:
Cdigo de Csar uma cifra de substituio para texto, considerando
Algoritmo de cifra
A=0,B=1,etc.
Cardinalidade do domnio da chave, isto , nmero de bits da chave
E(n,x) = (x+n) mod 26
D(n,x) = (x-n) mod 26 Mtodos de ataque:
Ex.: para n = 3, tm-se as seguintes substituies Fora bruta - baseia-se na explorao sistemtica de todas as
ABCDEFGHIJKLMNOPQRSTUVWXYZ
chaves possveis
DEFGHIJKLMNOPQRSTUVWXYZABC
E(3,SISTEMAS DISTRIBUIDOS)=VLVWHPDV GLVWULEXLGRV Criptoanlise - baseia-se em explorar os mtodos matemticos
utilizados em criptografia para descobrir como decifrar os dados (ou
Usado por Jlio Csar para cifrar mensagens militares diminuir o nmero de possibilidades)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 5 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 6
1
Fora bruta exemplo Criptoanlise exemplo
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
A anlise anterior pressupe que h uma distribuio perfeita da O algoritmo criptogrfico usado deve produzir contedo com grande
probabilidade de se ter seleccionado uma dada chave em todo o universo entropia e sem qualquer relao com a mensagem original
possvel. Na prtica tais geradores perfeitos de chaves no existem e o
atacante pode, conhecendo alguma das fraquezas do gerador de chaves, ir No possvel provar matematicamente que um algoritmo criptogrfico
analisar um espao de pesquisa muito mais reduzido. no tem falhas capazes de o tornar frgil perante ataques
criptoanalticos.
espectvel que a chave seja descoberta antes da ltima tentativa (pode S se consegue provar exactamente o contrrio, atravs de exemplos.
ser na 1). Em mdia ser a meio das tentativas.
A segurana de um mtodo pois baseada em o mesmo ser pblico e
Por outro lado, certas chaves so inadequadas e so facilmente quebradas ser sujeito critica e anlise por muitos especialistas.
conhecendo o algoritmo usado por isso no podem ser usadas. A segurana deve ser resultado do segredo das chaves e no do segredo do
algoritmo criptogrfico
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 11 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 12
2
A linguagem criptogrfica (exemplo: canal cifrado)
Criptograma
Mensagem em claro
K (ciphertext) K Mensagem em claro
(plaintext)
{M}K {{M}K}K= M
M
Figure 7.3 goes here
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 14
Parceiros devem partilhar chave secreta DES - Data Encryption Standard - chaves com 56 bits. Histria atribulada. Est a
cair em desuso pois a chave demasiado pequena para a potncia de clculo
Mensagem cifrada e decifrada com a mesma chave actual.
E(k,M) = X
D(k,X) = M
Triple DES (ou TDEA) - DES reforado - chave com 112 ou 168 bits (3x56).
Que garantias d? (confidencialidade, autenticao?) Aplica trs vezes o algoritmo DES
Sistemas Kjh34r#36S Sistemas AES - Advanced Encryption Standard - Nova norma U.S.A. Definida por concurso
E(k,M) D(k,M)
distribudos dlm0u2dlo1 distribudos pblico, ganho por uma equipa belga. Admite chaves de 128, 192 ou 256 bits.
chave: k chave: k
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 16
Permutao final
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 17 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 18
3
Criptografia assimtrica Criptografia assimtrica
Cada entidade tem duas chaves Cada entidade tem duas chaves
Chave privada (Kpriv) conhecida apenas pelo seu dono Chave privada (Kpriv) conhecida apenas pelo seu dono
Chave pblica (Kpub) pode ser conhecida por todos Chave pblica (Kpub) pode ser conhecida por todos
A partir de Kpub impossvel derivar Kpriv A partir de Kpub impossvel derivar Kpriv
Mensagem cifrada com uma chave e decifrada com a outra: Mensagem cifrada com uma chave e decifrada com a outra
chave: k1 chave: k2
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 19 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 20
Algoritmo RSA (Rivest, Shamir e Adelman) Algoritmos de criptografia assimtrica mais comuns
RSA Challenge (640 bits quebrado)
http://www.rsa.com/rsalabs/node.asp?id=2093
Para gerar as chaves Exemplo simples: RSA algoritmo mais usado. Chave recomendada: 1024bits (ou mais).
Escolhem-se dois nmeros primos grandes , P=5 Baseado em nmeros primos
P e Q (P e Q > 10100) Q=11 Patente RSA expirou em 2000
N = P*Q, Z=(P-1) *(Q-1) N=55
Escolhe-se d, que pode ser qualquer nmero Z=40
menor que N que seja primo em relao a Z
Calcula-se e, que um nmero tal que e.d-1 d=3
divisvel por Z Algoritmos de curva elptica mtodo para gerar pares de chaves
e=7
A chave privada p.e. (N,e); a chave pblica pblica/privada baseado nas propriedades das curvas elpticas
(N,d) Y2 = X3 + aX + b
E(2)= 27 mod 55
Pode-se usar chaves de dimenso menor (~90bits).
A funo de cifra = 18
No est dependente da factorizao de nmeros
E((e,N), M) = Me mod N = c D(18)=183 mod 55
=2
A funo de decifra
D((d,N), c) = cd mod N = M
NOTA: Segurana do mtodo depende
da dificuldade de factorizar N em P e Q
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 21 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 22
Um algoritmo de cifra aplicado bloco a bloco pode revelar-se frgil j que Uma tcnica possvel para melhorar o mtodo usar cifra por blocos
cada bloco cifrado de forma independente pode revelar padres repetidos encadeados (CBC - cipher block chaining)
que facilitem o ataque por mtodos cripto-analticos. Durante o processo de cifra, antes de cifrar um bloco, faz-se XOR com o
Exemplo com uma imagem no comprimida: resultado da cifra anterior
Ao decifrar, aps decifrar um bloco faz-se XOR com o bloco anterior cifrado
No incio usa-se um vector de inicializao (por exemplo uma timestamp da
dimenso de um bloco) para iniciar o processo. Desta forma, o mesmo texto,
cifrado com a mesma chave, mas com vectores iniciais distintos, conduz a
resultados distintos.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 23 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 24
4
Cifra por blocos encadeados Cifra de streams
plaintext plaintext plaintext Um algoritmo de cifra por blocos apenas pode cifrar bloco a bloco
vector de Quando se pretende cifrar dados de dimenso inferior a um bloco necessrio
incializao preparar um bloco que contenha os dados a enviar (padding) e cifr-lo
Alternativamente pode-se obfuscar a mensagem a transmitir (mesmo bit a bit)
usando um stream (keystream) criado a partir de um gerador de nmeros
E(K,M1) E(K,M2) E(K,M3) aleatrios (fazendo XOR)
ciphertext
plaintext
vector de stream
stream
incializao
A cifra/decifra de uma mensagem com uma chave errada, pode, apesar disso,
conduzir a um padro de bits que pode ter significado (errado) para o receptor
Problema?
Este facto pode ser usado para levar o receptor a executar disparates o que
pode ser uma fonte de insegurana
Pode ser usado para ataques de impedimento de prestao de servio tentando
saturar o receptor a processar dados aleatrios.
Soluo?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 27 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 28
Propriedades:
M = n f 1. Calcular H(M) fcil (computacionalmente)
2. Dado H(M) computacionalmente impossvel calcular M
f = F ( n, M ) ; Funo especial F como um CRC por exemplo 3. Dado M computacionalmente impossvel descobrir M2 tal que H(M) = H(M2)
Nmero de sequncia:
As funes de sntese com estas propriedades dizem-se Secure one-way hash
functions ou funes de disperso unidireccionais seguras.
M a mensagem que cifrada e transmitida. O receptor recebe M cifrada e Porqu unidireccional e seguro?
decifra o primeiro bloco. Comea logo por controlar se o mesmo contem um
nmero de sequncia vlido. Se no contiver, ignora o resto da mensagem; Para que que serve?
seno considera-a mas volta a controlar o valor de f no fim. Usado para garantir integridade dos dados
...
(os CRC no foram pensados em proteger contra ataques)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 29 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 30
5
Funes seguras de sntese Controlo de integridade e autenticidade
com funes de sntese seguras
Funo segura de sntese MD5 possvel usar as funes de sntese para controlar a integridade num
Calcula snteses de 128 bits num processo em 4 fases canal de dados no seguro (sem cifrar). O mtodo consiste em usar
Uma das funes seguras de sntese computacionalmente mais eficientes MACs (Message Authentication Codes) que so como assinaturas,
Conhecidos ataques que permitem gerar colises. computacionalmente fceis de calcular, baseadas em chaves secretas.
O mtodo funciona assim (exemplo):
A funo SHA-1 tambm muito usada. 1. A e B estabelecem uma chave secreta K s conhecida por ambos. K pode
Norma USA. Conhecida publicamente
ser trocada aquando da autenticao, por exemplo.
Conhecidos ataques que permitem diminuir o espao de pesquisa para uma 2. Para A enviar a mensagem M a B:
coliso para O(263 ) (em vez de (280 ) ) Calcula h = H(M+K)
Est-se a migrar para SHA-2 Envia M,h
Produz uma sntese de 160 bits 3. Ao receber M,h, B calcula h=H(M+K) e verifica integridade da mensagem
se h=h
Porque que garante autenticao e integridade?
S A conhece K, logo s A consegue gerar H(M+K) autentica emissor de M e
garante que a mensagem no foi modificada
Pretende-se garantir:
Autenticidade, integridade, no repudio
Key size/hash size Extrapolated PRB optimized
1 - envia M,A,{M}KA (bits) speed (kbytes/s)
(kbytes/sec.)
Problemas: ter de conhecer KA para verificar as garantias; A e B tm de
confiar um no outro TEA 128 700 -
DES 56 350 7746
2 - envia M,A,{M}KApriv
Qualquer um verifica com KApub. Grande overhead Triple-DES 112 120 2842
IDEA 128 700 4469
3 - envia M,A,{H(M)} KApriv
Qualquer um verifica sem grande overhead RSA 512 7 -
RSA 2048 1 -
MD5 128 1740 62425
SHA 160 750 25162
Ano: 1999
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 33 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 34
Os algoritmos utilizados pelos mtodos baseados em criptografia assimtrica so Se as chaves pblicas e privadas apenas forem usadas para a autenticao e
100 a 1000 vezes mais pesados que os baseados em criptografia simtrica. Por troca de uma chave simtrica de sesso com o outro parceiro, ento:
esta razo, os dois mtodos so utilizados em conjunto. Como? 1) as chaves pblicas esto sempre expostas, mas
2) as chaves privadas s so usadas para decifrar as mensagens iniciais devendo ser
As chaves pblicas so utilizadas para autenticao e para passar uma chave de apagadas da memria imediatamente a seguir
sesso para utilizao posterior de criptografia simtrica entre os dois principais. 3) a chave de sesso tem a validade dessa sesso e nunca mais reutilizada
Exemplo:
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 35 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 36
6
Autenticao Autenticao
Objectivo: Bob quer que a Alice lhe demonstre a sua identidade Objectivo: Bob quer que a Alice lhe demonstre a sua identidade
Protocolo 1: Alice diz simplesmente I am Alice Protocolo 1: Alice diz simplesmente I am Alice
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 37 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 38
Protocolo 2: Alice diz I am Alice e envia o seu endereo IP Protocolo 2: Alice diz I am Alice e envia o seu endereo IP
para o provar. para o provar.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 39 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 40
Protocolo 3: Alice diz I am Alice e envia tambm uma Protocolo 3: Alice diz I am Alice e envia tambm uma
password conhecida de Bob password conhecida de Bob
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 41 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 42
7
Variante da terceira tentativa Variante da terceira tentativa
Protocolo 3: Alice diz I am Alice e envia tambm a sua Protocolo 3: Alice diz I am Alice e envia tambm a sua
password cifrada com uma chave comum a ambos password cifrada com uma chave comum a ambos
I am Alice I am Alice
(password (password
cifrada) cifrada)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 43 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 44
8
Canais seguros
Principal A Principal B
The image cannot be The image cannot be
displayed. Your computer displayed. Your computer
may not have enough may not have enough
memory to open the image, memory to open the image,
Process p
or the image may have been
corrupted. Restart your Secure channel Process q
or the image may have
been corrupted. Restart
computer, and then open your computer, and then
the file again. If the red x open the file again. If the
still appears, you may have red x still appears, you may
have to delete the image
Criptografia
1
Cifrar/decifrar
Criptograma
Mensagem em claro
K (ciphertext) K Mensagem em claro
(plaintext)
{M}K {{M}K}K= M
M
Figure 7.3 goes here
2
Criptografia clssica ex.: cdigo de Csar
Eficcia da criptografia
O algoritmo criptogrfico ser tanto melhor quanto mais difcil for obter o
texto original a partir do texto cifrado, sem se conhecer a chave. A
eficcia de um ataque depende de dois factores:
Algoritmo de cifra
Cardinalidade do domnio da chave, isto , nmero de bits da chave
Mtodos de ataque:
Fora bruta - baseia-se na explorao sistemtica de todas as
chaves possveis
Criptoanlise - baseia-se em explorar os mtodos matemticos
utilizados em criptografia para descobrir como decifrar os dados (ou
diminuir o nmero de possibilidades)
3
Fora bruta exemplo
Criptoanlise exemplo
Anlise dedefrequncia:
Anlise ideia
frequncia: ideia aplicada
ao cdigo de Csar:
aplicada ao cdigo de Csar:
sabe-se que X substitudo sempre
sabe-sepor que
Y X substitudo sempre
por Ysabe-se a frequncia do
sabe-seaparecimento dos diferentes
a frequncia do
smbolos no texto
aparecimento dos diferentes
smbolos no texto
Como fazer?
O smbolo mais frequente no texto
cifrado deve corresponder a um dos
smbolos mais frequentes no texto
original
4
Eficcia da criptografia
Uma chave de 128 bits tem cerca de 3,4 x 10^38 combinaes (10 levantado a
38). Com o poder computacional indicado, seriam necessrios 10^13 anos para
completar o ataque
Curiosidade: estima-se que a idade do universo de cerca de 10^10 anos.
5
A teoria e a prtica
6
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13
7
Criptografia simtrica
chave: k chave: k
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15
DES - Data Encryption Standard - chaves com 56 bits. Histria atribulada. Est a
cair em desuso pois a chave demasiado pequena para a potncia de clculo
actual.
Triple DES (ou TDEA) - DES reforado - chave com 112 ou 168 bits (3x56).
Aplica trs vezes o algoritmo DES
IDEA - International Data Encryption Algorithm - chave com 128 bits. Mtodo
desenvolvido na Europa. Aps vrios anos de utilizao e divulgao pblica no
se conhecem ataques com xito.
Baseado em lgebra de grupos: XOR, adies e multiplicaes
AES - Advanced Encryption Standard - Nova norma U.S.A. Definida por concurso
pblico, ganho por uma equipa belga. Admite chaves de 128, 192 ou 256 bits.
8
DES - Data Encryption Standard
Funcionamento do DES
Operao do DES
Permutao inicial
16 rounds idnticos de
aplicao de uma funo,
cada um dos quais usa 48
bits diferentes da chave
Permutao final
9
Criptografia assimtrica
E(Kpub,M) = X; D(Kpriv,X) = M
Garante o qu? (confidencialidade, autenticao?)
E(Kpriv,M) = X; D(Kpub,X) = M
Garante o qu? (confidencialidade, autenticao?)
chave: k1 chave: k2
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 19
Criptografia assimtrica
E(Kpub,M) = X; D(Kpriv,X) = M
Garante confidencialidade
Conhecendo Kpub e X deve ser computacionalmente impossvel obter M sem
saber Kpriv. S receptor conhece Kpriv.
E(Kpriv,M) = X; D(Kpub,X) = M
Garante autenticao do emissor
A partir de Kpub deve ser computacionalmente impossvel obter Kpriv. S quem
possui Kpriv pode gerar X.
10
Algoritmo RSA (Rivest, Shamir e Adelman)
RSA Challenge (640 bits quebrado)
http://www.rsa.com/rsalabs/node.asp?id=2093
Para gerar as chaves Exemplo simples:
Escolhem-se dois nmeros primos grandes , P=5
P e Q (P e Q > 10100) Q=11
N = P*Q, Z=(P-1) *(Q-1) N=55
Escolhe-se d, que pode ser qualquer nmero Z=40
menor que N que seja primo em relao a Z
Calcula-se e, que um nmero tal que e.d-1 d=3
divisvel por Z e=7
A chave privada p.e. (N,e); a chave pblica
(N,d)
E(2)= 27 mod 55
A funo de cifra = 18
E((e,N), M) = Me mod N = c D(18)=183 mod 55
=2
A funo de decifra
D((d,N), c) = cd mod N = M
NOTA: Segurana do mtodo depende
da dificuldade de factorizar N em P e Q
11
Cifra bloco a bloco
Uma tcnica possvel para melhorar o mtodo usar cifra por blocos
encadeados (CBC - cipher block chaining)
Durante o processo de cifra, antes de cifrar um bloco, faz-se XOR com o
resultado da cifra anterior
Ao decifrar, aps decifrar um bloco faz-se XOR com o bloco anterior cifrado
No incio usa-se um vector de inicializao (por exemplo uma timestamp da
dimenso de um bloco) para iniciar o processo. Desta forma, o mesmo texto,
cifrado com a mesma chave, mas com vectores iniciais distintos, conduz a
resultados distintos.
12
Cifra por blocos encadeados
plaintext plaintext plaintext
vector de
incializao
vector de
incializao
Cifra de streams
keystream
number
E(K, M)
buffer
generator
n+3
n+2
n+1
XOR
ciphertext
plaintext
stream
stream
13
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 27
A cifra/decifra de uma mensagem com uma chave errada, pode, apesar disso,
conduzir a um padro de bits que pode ter significado (errado) para o receptor
Problema?
Este facto pode ser usado para levar o receptor a executar disparates o que
pode ser uma fonte de insegurana
Pode ser usado para ataques de impedimento de prestao de servio tentando
saturar o receptor a processar dados aleatrios.
Soluo?
14
Exemplo
Mensagem M:
M = n f
Propriedades:
1. Calcular H(M) fcil (computacionalmente)
2. Dado H(M) computacionalmente impossvel calcular M
3. Dado M computacionalmente impossvel descobrir M2 tal que H(M) = H(M2)
15
Funes seguras de sntese
16
Assinaturas digitais
Pretende-se garantir:
Autenticidade, integridade, no repudio
1 - envia M,A,{M}KA
Problemas: ter de conhecer KA para verificar as garantias; A e B tm de
confiar um no outro
2 - envia M,A,{M}KApriv
Qualquer um verifica com KApub. Grande overhead
Ano: 1999
17
Utilizao conjunta dos mtodos
Exemplo:
{Ks}KBpub, {M}Ks
A B
18
Autenticao
Autenticao
19
Segunda tentativa
Trudy faz IP
spoofing
Segunda tentativa
Trudy faz IP
spoofing
20
Terceira tentativa
Trudy faz
replaying
Terceira tentativa
Trudy faz
replaying
21
Variante da terceira tentativa
I am Alice
(password
cifrada)
Trudy faz
replaying
I am Alice
(password
cifrada)
Trudy faz
replaying
22
Mtodo desafio / resposta
23
Variante da terceira tentativa Mtodo desafio / resposta
Trudy faz
replaying
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 1 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 2
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 3 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 4
Distribuio de chaves de sesso atravs de um KDC Distribuio de chaves de sesso atravs de um KDC
segunda tentativa segunda tentativa
Problema: Problema:
KDC
Como que Bob Bob KDC
Pode Trudy obter o
1) Eu sou a Alice e quero pode ter a certeza 1) Eu sou a Alice e quero contedo da
falar com o Bob que est a falar com falar com o Bob mensagem?
Alice? No, porque apenas
Por Alice ter sido Bob conhece Kb. Mas
2) { {A, Ks}Kb, Ks }Ka capaz de obter 2) { {A, Ks}Kb, Ks }Ka Trudy pode gravar a
{A,Ks}Kb. S Alice mensagem e mais
conhece Ka tarde tentar
incomodar Bob.
Alice Bob Alice Bob
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 5 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 6
1
Protocolo de Needham-Schroeder O protocolo NS com chaves simtricas
(terceira tentativa)
Este protocolo permite a dois principais A e B (Alice e Bob) estabelecerem um 1) A -> KDC: A, B, Na
canal seguro entre si e autenticarem-se mutuamente. A solicita uma chave para comunicar com B, sendo Na um nmero aleatrio gerado
por A para garantir a unicidade da transaco (Na deve ser nico. Porqu?).
4) B -> A: {Na-1}Ks
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 7 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 8
2) KDC -> A: { Na, B, Ks, { Ks, A }Kb }Ka 2) KDC -> A: { Na, B, Ks, { Ks, A }Kb }Ka
O KDC devolve Na, a chave e um ticket ({ Ks, A }Kb), tudo cifrado com a chave de A.
O KDC devolve Na, a chave e um ticket ({ Ks, A }Kb), tudo cifrado com a chave de A.
A recepo do Na nico cifrado com Ka garante que A comunicou com o KDC s o
O que garante a A ter falado com o KDC ? KDC conhece Ka, logo s KDC pode gerar a mensagem indicada.
3) A -> B: {Ks, A}Kb, {Na}Ks 3) A -> B: {Ks, A}Kb, {Na}Ks
A solicita comunicar com B, enviando-lhe o ticket A solicita comunicar com B, enviando-lhe o ticket
O que garante a B estar a falar com A ?
4) B -> A: {Na-1}Ks
4) B -> A: {Na-1}Ks
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
2) KDC -> A: { Na, B, Ks, { Ks, A }Kb }Ka 2) KDC -> A: { Na, B, Ks, { Ks, A }Kb }Ka
O KDC devolve Na, a chave e um ticket ({ Ks, A }Kb), tudo cifrado com a chave de A. O KDC devolve Na, a chave e um ticket ({ Ks, A }Kb), tudo cifrado com a chave de A.
A recepo do Na nico cifrado com Ka garante que A comunicou com o KDC s o A recepo do Na nico cifrado com Ka garante que A comunicou com o KDC s o
KDC conhece Ka, logo s KDC pode gerar a mensagem indicada. KDC conhece Ka, logo s KDC pode gerar a mensagem indicada.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 11 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 12
2
Um possvel ataque e respectiva soluo Autenticao via chave pblica
A mensagem 3) pode ser replayed mais tarde. Isso, em princpio, no tem Problema: como que a Alice se autentica utilizando chaves assimtricas?
problema mas se por acaso Ks for um dia comprometida, ento Trudy pode
conseguir autenticar-se perante Bob como se fosse Alice. A soluo consiste em soluo: usa desafio/resposta, e criptografia assimtrica
acrescentar uma timestamp ao ticket que deve ser testada por Bob aps ter
recebido a mensagem 3). Tal exige que os relgios de A, B e do KDC estejam 1 tentativa:
sincronizados a menos de um valor considerado suficiente para tornar impossvel
a quebra da chave Ks em tempo til.
O protocolo fica:
1) A -> KDC: A, B, Na
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 14
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 16
3
Centro de distribuio de chaves pblicas Vantagens face criptografia simtrica
PKC = Public Key Center So possveis ataques O Public Key Center (PKC) apenas conhece aquilo que pblico, isto , as
por interposio? chaves pblicas dos principais. Tal um progresso notvel pois o papel da
trusted computing base foi drasticamente reduzido.
PKC
Qual a chave pblica
de B ?
Qual a chave pblica Para que tudo funcione bem apenas necessrio assegurar que o PKC tem as
de A ? chaves pblicas verdadeiras e que os principais tm a certeza que esto a falar
com o verdadeiro PKC e no com um impostor.
KBpub KApub
necessrio ter absoluta segurana de que se est a dialogar com uma fonte
A -> B: { A, Na }KBpub fidedigna que nos est a entregar a verdadeira chave pblica que pretendemos
A B Se se conhece a chave pblica dessa fonte fidedigna, uma forma de obter esta
confiana essa fonte cifrar a sua resposta com a sua chave secreta
B -> A: { Na, Nb, Ks } KApub
A -> B: { Nb } Ks
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 19 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 20
Nos protocolos anteriores, um intruso que se consiga fazer passar pelo PKC, Objectivo: desenvolver um mecanismo digital que substitua as assinaturas
consegue levar A e B a usarem chaves conhecidas efectuadas num documento em papel
So necessrias chaves pblicascertificadas (ou assinadas) Quais as propriedades?
Mtodos de distribuio de chaves: Um sistema de assinaturas digitais deve ter as seguintes propriedades:
Certificate Granting Authority entidades cujas chaves pblicas so bem Autenticao: o receptor deve poder verificar que a assinatura autentica
conhecidas e que assinam as chaves / certificados que entregam. Este mtodo est Integridade: a assinatura deve garantir que a mensagem assinada no foi alterada,
hoje em dia normalizado de forma oficial. nem durante o trajecto, nem pelo receptor, mesmo que tenha passado em claro
Web of trust - mtodo informal por transitividade da relao de confiana, tambm No repudiamento: o emissor no poder negar que de facto enviou a mensagem
suportado na assinatura das informaes trocadas entre principais. Este mtodo assinada
tem sido vulgarizado pelo programa PGP para troca de correio electrnico.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 21 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 22
H(M+K) h
Bob envia uma mensagem com
Assinatura
uma assinatura digital:
M M, H(M+K)
K
H(M+K) recebido =
Verificao
H(M+K) computado ? h = h'?
H(M+K) h'
K
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 23 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 24
4
Assinatura digital soluo com chaves simtricas Assinatura digital com chaves assimtricas:
(MACs) primeira tentativa
Assinatura digital da mensagem M efectuada por Bob: h=H(M+K) Assinatura digital da mensagem M efectuada por Bob: {M}KBpriv
Mensagem a enviar: M,h
H(M): funo de sntese segura
Propriedades:
Verificao ao receber M, h, calcula H(M+K) = h
Autenticao, integridade garantidos porque apenas B consegue criar H(M+K) e
ningum consegue alterar M para M de forma que H(M+K)=H(M+K)
O no repdio limitado pois a verificao exige conhecer K, e conhecendo K pode-se
falsificar a assinatura Propriedades:
Autenticao verificada decifrando M = {{M}KBpriv}KBpub
Integridade e no repudiamento garantidos porque ningum consegue alterar/criar
{M}KBpriv sem conhecer KBpriv
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 25 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 26
Utilizao de assinaturas digitais com chaves pblicas Assinatura digital: soluo com chaves pblicas
M signed doc Bob envia uma mensagem Assinatura digital da mensagem M efectuada por Bob: {H(M)}KBpriv
com uma assinatura digital: Mensagem a enviar: M,{H(M)}KBpriv
H(M) h E(Kpri , h) {h}Kpri
Assinatura H(M): funo de sntese segura
M,{H(M)}KBpriv
128 bits M
Propriedades:
Verificao ao receber M,{H(M)}KBpriv : H(M) = {{H(M)}KBpriv}KBpub
Autenticao, integridade e no repudiamento garantidos porque apenas B consegue
criar {H(M)}KBpriv e ningum consegue alterar M para M de forma que H(M)=H(M)
{h}Kpri
Dimenso da assinatura pequena e constante
D(Kpub ,{h}) h' Apenas assinatura cifrada mensagem at pode passar em claro
Qualquer um pode verificar a assinatura
Verificao M
h = h'?
Alice verifica a autenticidade e
h
a integridade da mensagem: H(doc)
H(M) = {H(M)}KBpriv}KBpub ?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 27 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 28
1. Certificate type
: Public key
2. Name Bobs Bank
3. Public key
: KBpub
4. Certifying authority
: Fred The Bankers Federation
5. Signature
: {Digest(field 2 + field 3)}KFpriv
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 29 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 30
5
Exemplo Autoridades de certificao
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 31 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 32
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 33 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 34
Alice e Bob pretendem trocar entre si um senha ou chave de sesso (Ks) sem que Um protocolo de distribuio de chaves de sesso diz-se que garante segurana
esta passe na rede (nota: autenticao no objectivo) futura perfeita se no envolve segredos de longa durao que, uma vez
Se as chaves privadas forem comprometidas no futuro, os dados desta sesso comprometidos no futuro, permitiriam conhecer uma sesso do passado.
continuam seguros
Nos algoritmos NS (e similares), se uma chave secreta/privada for comprometida
Sejam dois nmeros aleatrios (grandes) m e n que so parmetros pblicos do possvel obter as chaves secretas negociadas com base nessa chave para uso
algoritmo ( melhor n ser primo e m ser tal que (m-1)/2 primo): nas comunicaes
1) A gera um nmero secreto Xa e calcula: Ya = m^Xa mod n Trudy pode ficar a conhecer o contedo das mensagens trocadas para todas as
2) B gera um nmero secreto Xb e calcula: Yb = m^Xb mod n sesses que tenha gravado
3) A e B trocam entre si Ya e Yb (valores pblicos passados em claro) Os segredos so de longa durao
4) A calcula Ka = Yb^Xa mod n
5) B calcula Kb = Ya^Xb mod n No algoritmo Diffie-Hellman, se a Alice e o Bob usarem valores aleatrios de Xa e
Xb, que no voltem a ser usados, a chave nica e foi obtida sem recurso a
segredos de longa durao
Comprova-se que Ks = Ka = Kb e que computacionalmente impossvel calcular Sabendo m, n, Ya e Yb no possvel obter Ks
Xa ou Xb a partir de Ya ou Yb, isto , est-se a usar uma funo sem inverso Xa, Xb, e logo Ks, so segredos apenas enquanto dura a sesso: depois podem
(one-way function). (devem) ser descartados
E.g. m = 5; n = 23;
Xa = 3; Ya= 10; Xb =4; Yb = 4
Ka = 4^3 mod 23 = 18 Kb = 10^4 mod 23 = 18
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 35 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 36
6
Casos de estudo
Kerberos
SSL
PGP
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 37 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 38
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 39 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 40
O que garante a A estar a falar com AS? O que garante a A estar a falar com AS?
A recepo de {n1...}Ka garante a A que est a falar com AS (pois s AS conhece
O que garante ao AS estar a falar com A? tambm Ka) e que no existe replaying (n1 um nonce)
O que garante ao AS estar a falar com A?
Nada, mas apenas A pode usar informao recebida para as fases seguintes do
protocolo por ser o nico a conhecer Ka
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 41 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 42
7
O protocolo Kerberos verso 5.0 (cont.) O protocolo Kerberos verso 5.0 (cont.)
Obteno de ticket para aceder a servio Obteno de ticket para aceder a servio
A -> TGS: {A, TGS, t1, t2, Ks}Ktgs, {A, t3}Ks, B, n2 A -> TGS: {A, TGS, t1, t2, Ks}Ktgs, {A, t3}Ks, B, n2
Cliente pede a TGS ticket para aceder ao servidor B Cliente pede a TGS ticket para aceder ao servidor B
TGS -> A: {B, n2, Kab}Ks, {A, B, t1, t2, Kab}Kb TGS -> A: {B, n2, Kab}Ks, {A, B, t1, t2, Kab}Kb
TGS devolve chave (Kab) e um ticket para A aceder ao servio B TGS devolve chave (Kab) e um ticket para A aceder ao servio B
O que garante a A estar a falar com TGS? O que garante a A estar a falar com TGS?
A recepo de {n2...}Ks garante a A que est a falar com TGS (pois s TGS
O que garante a TGS estar a falar com A? consegue obter Ks) e que no existe replaying (n2 um nonce)
O que garante a TGS estar a falar com A?
Autenticador {A, t3}Ks autentica A perante TGS por demonstrar que A conhece
Ks. Time-stamp (t3) impede replaying desta mensagem.
NOTA: Ka apenas usada na autenticao. A partir desse momento, o ticket
enviado pelo AS permite ao cliente comunicar de forma segura e autenticar-se no
TGS
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 43 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 44
O protocolo Kerberos verso 5.0 (cont.) O protocolo Kerberos verso 5.0 (cont.)
O que garante a A estar a falar com B? Como se evita o replaying? O que garante a A estar a falar com B? Como se evita o replaying?
Apenas B pode produzir {n3}Kab, porque apenas B consegue obter Kab a partir
O que garante a B estar a falar com A? Como se evita o replaying? do ticket. Replaying evitado por n3 ser um nonce.
O que garante a B estar a falar com A? Como se evita o replaying?
Apenas A conhece Kab, logo s A pode produzir {A,t3}Kab. t3 um timestamp
usado para evitar replaying.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 45 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 46
Notas sobre o protocolo Kerberos v. 5.0 Vantagens da variante Kerberos sobre o protocolo
Needham-Schroeder simples
Os valores de t1, t1, t2, t2, t3, t3 so estampilhas temporais geradas a partir do O AS conhece as senhas / chaves / passwords de todos os clientes mas estas s
relgio (que se pressupem estar fracamente sincronizados) so usadas para autenticar inicialmente os clientes
Permite aplicar tempo limite a tickets, revogando autorizaes dadas A senha / chave / password do cliente (que usa workstations avulso) s est na
Permite proteco contra replaying de mensagens antigas (ou utilizao indevida de memria das mesmas durante alguns milisegundos
tickets encontrados em memria)
Os tickets tm uma durao limitada (tanto com o TGS como com os servidores)
Validade dos tickets geralmente de algumas horas
Clientes devem obter novos tickets quando termina a validade dos tickets obtidos. Permite interromper o servio a clientes a quem tenha sido cancelado o registo
O TGS apenas tem de conhecer os servidores e emitir chaves de sesso (repare-
Clientes devem obter um ticket para cada servidor que queiram contactar. se que os clientes so muito mais numerosos que os servidores)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 47 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 48
8
SSL - Secure Socket Layer O protocolo SSL
Trata-se de um protocolo proposto e desenvolvido pela Netscape, do tipo sesso, O protocolo SSL funciona por cima do Autenticao do servidor:
isto sobre o nvel transporte, que permite estabelecer canais seguros e nvel de transporte e permite fornecer O cliente (browser) inclui as chaves
autenticar clientes e servidores. Hoje em dia trata-se de uma norma IETF. segurana a qualquer aplicao pblicas de vrias CAs
baseada em TCP O cliente solicita ao servidor um
certificado do servidor emitido por uma
usado entre browsers e servidores CA em que ele confie.
WWW (https). O cliente verifica o certificado do
Canal seguro servidor com a chave pblica da CA
Conexo TCP Funcionalidades de segurana:
autenticao do servidor Autenticao do cliente:
cifra e integridade dos dados Processa-se de forma semelhante
autenticao do cliente (opcional)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 49 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 50
Certificado CLIP
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 51 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 52
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 53 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 54
9
Protocolos SSL
SSL
Handshake
SSL Change
SSL Alert
HTTP
Telnet
protocol
Cipher Spec
Protocol
SSL Record Protocol
SSL protocols:
Other protocols:
SSL Handshake protocol + SSL CCS + SSL AP: estabelecem e mantm um canal
seguro entre um cliente e um servidor
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 55 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 56
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 57 * Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 58
Encrypted
Transmit
TCP packet
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 59 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 60
10
Funcionamento do PGP (exemplo com SHA1 e IDEA) Funcionamento do PGP O que garante que s o
receptor (B) pode ler a
Envio da mensagem M de A para B assinada e cifrada: mensagem?
1.Produz assinatura A mensagem cifrada com Ks,
digital de M, com chave Ks 4. Cifra Ks com chave Ks
RSA RSA
privada do emissor: pblica do receptor: logo s quem conhea Ks pode
{SHA1(M)}KApriv {Ks}KBpub decifrar a mensagem.
SHA1 RSA SHA1 RSA
Compresso Compresso Ks cifrada com KBpub, logo
s B pode obter Ks, porque s
5. Resultado de 3+4 so B conhece KBpriv
M
(a) (b) (c) concatenados e codificados M
(a) (b) (c)
em ASCII 7 bits usando o O que garante ao receptor (B)
IDEA Base 64 mtodo base64. O resultado IDEA Base 64
que foi o emissor (A) que
enviado atravs de correio
2. Comprime M+{SHA1(M)}KApriv 3. Gera Ks e cifra electrnico. enviou a mensagem?
resultado de 2 com Ks
( a ) M, { SHA1(M) } KApriv
(algoritmo IDEA)
( a ) M, { SHA1(M) } KApriv Apenas o emissor pode
( b ) { M, { SHA1(M) } KApriv } Ks ( b ) { M, { SHA1(M) } KApriv } Ks produzir a assinatura digital da
mensagem, porque apenas A
( c ) { M, { SHA1(M) } KApriv } Ks , { Ks } KBpub ( c ) { M, { SHA1(M) } KApriv } Ks , { Ks } KBpub
conhece KApriv
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 61 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 62
1. Produz assinatura da mensagem M. Seja M a mensagem a enviar, H a funo O programa PGP vulgarizou um mtodo de distribuio de chaves dito Web of
de hash seguro, e KApriv a chave privada de A, a assinatura gerada {H(M)} Trust que consiste em cada pessoa adquirir as chaves pblicos dos interlocutores
KApriv. atravs de outras pessoas em quem tem confiana, ou atravs de servidores
pblicos.
2. A concatenao da mensagem M com a assinatura comprimida PGP fornece um mtodo de assinatura de chaves para que cada principal possa
assinar as chaves que envia a quem confia nele (que j conhece a sua chave ou
3. Uma chave secreta Ks ento gerada e o resultado de 2) cifrado com a chave chaves pblicas).
Ks. Para fazer bootstrap da Web of trust utilizam-se mtodos administrativos que
ultrapassam o mbito da problemtica criptogrfica, nomeadamente relacionados com
4. Ks cifrada com a chave pblica do receptor, KBpub. a forma como as chaves so depositadas no servidor de chaves pblicas.
Cada utilizador pode ter vrias chaves privadas (private key ring) e dispe de um
5. O resultado de 4) e 5) so concatenados e codificados em ASCII 7 bits pelo
directrio de chaves pblicas de terceiros (public key ring) classificadas por grau
mtodo base 64. de confiana da fonte que forneceu a chave.
6. O resultado de 5) pode ser enviado atravs de correio electrnico. As chaves podem ter 512 (utilizao casual), 1024 (utilizao comercial) ou 2048 bits
(utilizao segura).
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 63 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 64
4) {M}Ks
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 65 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 66
11
Ideia base Ideia base
A B
{Ks}KBpub, {M}Ks
CertB
Resumo Resumo
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 69 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 70
Bibliografia adicional:
James F. Kurose and Keith W. Ross, "Computer Networking - A Top-Down Approach Featuring the
Internet, Addison Wesley Longman, Inc., Second Edition, 2003 captulo 7.
Tanenbaum and Maarten van Steen Distributed Systems Principles and Paradigms, Prentice-
Hall, 2002 captulo 8.
W. Stallings, Cryptography and Network Security Principles and Practice, Second Edition 1999
Este livro integralmente dedicado a este tpico.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 71 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 72
12
Variante da terceira tentativa
I am Alice
(password
cifrada)
Trudy faz
replaying
1
Problemas e possveis solues
Uma Soluo:
usar uma chave diferente em cada sesso
usar um centro de distribuio dessas chaves no qual Alice e Bob confiam e
com o qual j partilham chaves
Problema:
Problemas?
KDC Como que o Bob
pode ter a certeza
que est a falar com
1) Eu sou a Alice e quero
falar com o Bob a Alice?
2) {Ks}Ka, {Ks}Kb
Alice Bob
3) {M}Ks {Ks}Kb
2
Distribuio de chaves de sesso atravs de um KDC
segunda tentativa
Problema:
KDC
Como que Bob Bob
1) Eu sou a Alice e quero pode ter a certeza
falar com o Bob que est a falar com
Alice?
Por Alice ter sido
2) { {A, Ks}Kb, Ks }Ka capaz de obter
{A,Ks}Kb. S Alice
conhece Ka
Alice Bob
Problema:
KDC
Pode Trudy obter o
1) Eu sou a Alice e quero contedo da
falar com o Bob mensagem?
No, porque apenas
Bob conhece Kb. Mas
2) { {A, Ks}Kb, Ks }Ka Trudy pode gravar a
mensagem e mais
tarde tentar
incomodar Bob.
Alice Bob
3
Protocolo de Needham-Schroeder
4) B -> A: {Na-1}Ks
4
O protocolo NS com chaves simtricas
1) A -> KDC: A, B, Na
A solicita uma chave para comunicar com B, sendo Na um nmero aleatrio gerado
por A para garantir a unicidade da transaco (Na deve ser nico).
4) B -> A: {Na-1}Ks
1) A -> KDC: A, B, Na
A solicita uma chave para comunicar com B, sendo Na um nmero aleatrio gerado
por A para garantir a unicidade da transaco (Na deve ser nico).
4) B -> A: {Na-1}Ks
5
O protocolo NS com chaves simtricas
1) A -> KDC: A, B, Na
A solicita uma chave para comunicar com B, sendo Na um nmero aleatrio gerado
por A para garantir a unicidade da transaco (Na deve ser nico).
4) B -> A: {Na-1}Ks
O que garante a A estar a falar com B ?
1) A -> KDC: A, B, Na
A solicita uma chave para comunicar com B, sendo Na um nmero aleatrio gerado
por A para garantir a unicidade da transaco (Na deve ser nico).
4) B -> A: {Na-1}Ks
B prova ser B por ser capaz de decifrar {Na}Ks, o que pressupe ter sido capaz de
decifrar {Ks, A}Kb
Porque no pode B enviar {Na}Ks ?
6
Um possvel ataque e respectiva soluo
O protocolo fica:
1) A -> KDC: A, B, Na
4) B -> A: {Na-1}Ks
1 tentativa:
KApriv(R)
KApub( KApriv(R) ) == R
7
Protocolo de Needham-Schroeder com chaves
pblicas
Pressupondo que A e B conhecem as chaves pblicas um do outro, podem
estabelecer um canal seguro e autenticarem-se mutuamente atravs de:
1. A -> B: { A, Na }KBpub
2. B -> A: { Na, Nb, Ks } KApub
3. A -> B: { Nb } Ks
8
Como distribuir as chaves pblicas?
9
Centro de distribuio de chaves pblicas
A -> B: { A, Na }KBpub
A B
O Public Key Center (PKC) apenas conhece aquilo que pblico, isto , as
chaves pblicas dos principais. Tal um progresso notvel pois o papel da
trusted computing base foi drasticamente reduzido.
Para que tudo funcione bem apenas necessrio assegurar que o PKC tem as
chaves pblicas verdadeiras e que os principais tm a certeza que esto a falar
com o verdadeiro PKC e no com um impostor.
necessrio ter absoluta segurana de que se est a dialogar com uma fonte
fidedigna que nos est a entregar a verdadeira chave pblica que pretendemos
Se se conhece a chave pblica dessa fonte fidedigna, uma forma de obter esta
confiana essa fonte cifrar a sua resposta com a sua chave secreta
10
Distribuio das chaves pblicas
Nos protocolos anteriores, um intruso que se consiga fazer passar pelo PKC,
consegue levar A e B a usarem chaves conhecidas
So necessrias chaves pblicascertificadas (ou assinadas)
Assinaturas digitais
11
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 23
H(M+K) h
Bob envia uma mensagem com
Assinatura
uma assinatura digital:
M M, H(M+K)
K
H(M+K) recebido =
Verificao
H(M+K) computado ? h = h'?
H(M+K) h'
K
12
Assinatura digital soluo com chaves simtricas
(MACs)
Assinatura digital da mensagem M efectuada por Bob: h=H(M+K)
Mensagem a enviar: M,h
H(M): funo de sntese segura
Propriedades:
Verificao ao receber M, h, calcula H(M+K) = h
Autenticao, integridade garantidos porque apenas B consegue criar H(M+K) e
ningum consegue alterar M para M de forma que H(M+K)=H(M+K)
O no repdio limitado pois a verificao exige conhecer K, e conhecendo K pode-se
falsificar a assinatura
Propriedades:
Autenticao verificada decifrando M = {{M}KBpriv}KBpub
Integridade e no repudiamento garantidos porque ningum consegue alterar/criar
{M}KBpriv sem conhecer KBpriv
13
Utilizao de assinaturas digitais com chaves pblicas
{h}Kpri h'
D(Kpub ,{h})
Verificao M
h = h'?
Alice verifica a autenticidade e
h
a integridade da mensagem: H(doc)
H(M) = {H(M)}KBpriv}KBpub ?
Propriedades:
Verificao ao receber M,{H(M)}KBpriv : H(M) = {{H(M)}KBpriv}KBpub
Autenticao, integridade e no repudiamento garantidos porque apenas B consegue
criar {H(M)}KBpriv e ningum consegue alterar M para M de forma que H(M)=H(M)
14
Certificados de chaves pblicas
1. Certificate type
: Public key
2. Name Bobs Bank
3. Public key: KBpub
4. Certifying authority
: Fred The Bankers Federation
5. Signature
: {Digest(field 2 + field 3)}KFpriv
Exemplo
15
Exemplo
Autoridades de certificao
16
Certificados X.509
17
Algoritmo de Diffie-Hellman
Alice e Bob pretendem trocar entre si um senha ou chave de sesso (Ks) sem que
esta passe na rede (nota: autenticao no objectivo)
Se as chaves privadas forem comprometidas no futuro, os dados desta sesso
continuam seguros
18
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 37
Casos de estudo
Kerberos
SSL
PGP
19
O sistema Kerberos
Servidor Kerberos
Servio de autenticao
Permite autenticar um cliente no sistema
Servio de autenticao conhece chave secreta (simtrica) de todos os
utilizadores e do TGS
Servio de tickets para servidores (TGS ticket granting service)
Permite obter um ticket para aceder a um servio
Servio de tickets conhece chaves secretas (simtricas) de todos os servidores
O sistema Kerberos
Authentication
Step A database Ticket-
Authen- granting
1. Request for tication
service A service T
TGS ticket
2. TGS
ticket
Step B
3. Request for
server ticket
Login 4. Server ticket Step C
session setup 5. Service
Server request
Client session setup Service Server
C Request encrypted with session key function
S
DoOperation
Reply encrypted with session key
20
O protocolo Kerberos verso 5.0
Autenticao no sistema
A -> AS: A, TGS, n1
Cliente (A) pede para fazer login no sistema
AS -> A: { Ks, n1}Ka, {A,TGS, t1, t2, Ks}Ktgs
Servio de autenticao devolve ticket, vlido de t1 at t2, e chave que permite
falar com TGS
Autenticao no sistema
A -> AS: A, TGS, n1
Cliente (A) pede para fazer login no sistema
AS -> A: { Ks, n1}Ka, {A,TGS, t1, t2, Ks}Ktgs
Servio de autenticao devolve ticket, vlido de t1 at t2, e chave que permite
falar com TGS
21
O protocolo Kerberos verso 5.0 (cont.)
22
O protocolo Kerberos verso 5.0 (cont.)
Acesso ao servio
A -> B: {A, t3}Kab, {A, B, t1, t2, Kab}Kb, n3
Cliente pede para se autenticar com o servidor
B -> A: {n3}Kab
Cliente verifica autenticidade do servidor. A partir deste momento, cliente e
servidor podem usar Kab para comunicarem de forma segura.
Acesso ao servio
A -> B: {A, t3}Kab, {A, B, t1, t2, Kab}Kb, n3
Cliente pede para se autenticar com o servidor
B -> A: {n3}Kab
Cliente verifica autenticidade do servidor. A partir deste momento, cliente e
servidor podem usar Kab para comunicarem de forma segura.
23
Notas sobre o protocolo Kerberos v. 5.0
Os valores de t1, t1, t2, t2, t3, t3 so estampilhas temporais geradas a partir do
relgio (que se pressupem estar fracamente sincronizados)
Permite aplicar tempo limite a tickets, revogando autorizaes dadas
Permite proteco contra replaying de mensagens antigas (ou utilizao indevida de
tickets encontrados em memria)
Clientes devem obter novos tickets quando termina a validade dos tickets obtidos.
Clientes devem obter um ticket para cada servidor que queiram contactar.
24
SSL - Secure Socket Layer
Canal seguro
Conexo TCP
Cliente Servidor
O protocolo SSL
25
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 51
Certificado CLIP
26
Certificado CLIP
Certificado Moodle@FCT
27
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 55
Protocolos SSL
SSL
Handshake
SSL Change
SSL Alert
HTTP
Telnet
protocol
Cipher Spec
Protocol
SSL Record Protocol
SSL protocols:
Other protocols:
SSL Handshake protocol + SSL CCS + SSL AP: estabelecem e mantm um canal
seguro entre um cliente e um servidor
28
SSL handshake protocol
Transport handshake
Certificate
Certificate Request Optionally send server certificate and
request client certificate
ServerHelloDone
SSL permite usar diferentes Cipher Suites. Durante o handshake o cliente indica quais tem
disponveis e o servidor selecciona um.
Autenticao do servidor: servidor envia certificado e cliente envia premaster secret cifrado
com a chave pblica do servidor
Premaster secret usado para gerar as chaves de cifra (uma para cada sentido) e a chave a usar
no MAC
Autenticao do cliente: cliente envia certificado e cliente envia assinatura de parte das
mensagens trocadas
29
SSL record protocol
Fragment/combine
Compress
Compressed units
Hash
MAC
Encrypt
Encrypted
Transmit
TCP packet
30
Funcionamento do PGP (exemplo com SHA1 e IDEA)
5. Resultado de 3+4 so
M
(a) (b) (c) concatenados e codificados
em ASCII 7 bits usando o
IDEA Base 64 mtodo base64. O resultado
enviado atravs de correio
2. Comprime M+{SHA1(M)}KApriv 3. Gera Ks e cifra electrnico.
resultado de 2 com Ks
( a ) M, { SHA1(M) } KApriv
(algoritmo IDEA)
( b ) { M, { SHA1(M) } KApriv } Ks
31
Funcionamento do PGP
Cada utilizador pode ter vrias chaves privadas (private key ring) e dispe de um
directrio de chaves pblicas de terceiros (public key ring) classificadas por grau
de confiana da fonte que forneceu a chave.
As chaves podem ter 512 (utilizao casual), 1024 (utilizao comercial) ou 2048 bits
(utilizao segura).
32
Resumo
Ideia base
Algoritmo Needham-
KDC Schroeder
1) Eu sou a Alice e quero
falar com o Bob
A, B, Na
4) {M}Ks
33
Ideia base
CertB
{Ks}KBpub, {M}Ks
A B
Ideia base
CertB
A B
{Ks}KBpub, {M}Ks
S est a autenticar B
34
Resumo
Resumo
35
Resumo
Bibliografia base
G. Coulouris, J. Dollimore and T. Kindberg, Distributed Systems - Concepts
and Design, Addison-Wesley, 4th Edition, 2005
Captulo 7
Bibliografia adicional:
James F. Kurose and Keith W. Ross, "Computer Networking - A Top-Down Approach Featuring the
Internet, Addison Wesley Longman, Inc., Second Edition, 2003 captulo 7.
Tanenbaum and Maarten van Steen Distributed Systems Principles and Paradigms, Prentice-
Hall, 2002 captulo 8.
W. Stallings, Cryptography and Network Security Principles and Practice, Second Edition 1999
Este livro integralmente dedicado a este tpico.
36
Nota prvia
Captulo 7
Introduo aos sistemas de designao,
de descoberta e de localizao de servios
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 1 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 2
Introduo problemtica da designao de objectos distribudos Num sistema distribudo os nomes so imprescindveis para designar computadores,
servios, utilizadores, objectos remotos, ficheiros e recursos em geral, Os diferentes
Nomes e estruturao do espao de nomes
componentes do sistema, assim como os utilizadores, s podem partilhar recursos se os
Servidores de designao poderem designar.
Um servio de nomes permite obter dados (atributos) sobre um entidade dado o seu nome.
Exemplo: nome dos ficheiros nos sistemas de ficheiros
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 3 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 4
Nomes so sequncias de smbolos (geralmente codificados como sequncias de Designar - aco de apontar, indicar, mostrar, escolher
bytes, bits) que designam entidades. Identificar - tornar idntico, o que faz com que uma coisa seja idntica a outra, o que
permite saber se duas coisas so distintas ou no
Um nome tem de ser interpretado para se chegar (aos dados da) entidade. Este
processo de interpretao diz-se resolver ou interpretar o nome (to resolve). Um nome permite designar uma entidade
Num dado contexto, uma entidade pode ser designada por mais do que um nome.
A associao entre um nome e uma entidade designa-se por ligao (binding).
Em geral, os nomes esto ligados a atributos da entidade e no directamente Um identificador permite identificar uma entidade
entidade (ex: ????). Num dado contexto, uma entidade tem um e um s identificador.
Dois identificadores distintos identificam duas entidades diferentes. Se duas entidades
tiverem o mesmo identificador, ento so a mesma entidade.
A interpretao de um nome deve ser feita num contexto pois o mesmo nome em
contextos diferentes pode designar objectos diferentes (exemplo?). Um identificador nico permite identificar uma entidade de forma permanente
Se UID1=UID2, ento Ent1=Ent2 para todo o sempre
Os nomes tomam vrias formas conforme o nvel do sistema em que so Se UID1UID2, ento Ent1 Ent2 para todo o sempre
interpretados.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 5 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 6
1
Nomes, identificadores e endereos na prtica Hierarquias de designao
Utiliza-se o termo identificador nico sistema (UID) para designar sequncias de Nomes internos ou identificadores do sistema
smbolos, geralmente sem significado mnemnico, que permitem identificar (exemplos: UIDs, File handles, ...)
entidades de forma (quase) permanente, ao nvel interno do sistema distribudo.
Exemplos?
AF.65.8F.89.1B.23.FF.45.A5.89.8B (uid de um objecto remoto) Endereos
Utiliza-se o termo endereo para designar formas especiais de designao
(exemplo: 193.136.122.23)
transitria, voltil ou temporria das entidades, geralmente associadas
localizao das mesmas. Exemplo?
10.0.0.12 Para se manipularem os objectos assim designados, os nomes so traduzidos de
Um endereo um nome que d acesso imediato a uma entidade. um espao de designao noutro. Exemplos?
abertura de um ficheiro em tempo de execuo, determinao do
endereo IP associado a um nome DNS, acesso a um objecto remoto, etc.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 7 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 8
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
Todos os nomes so contextuais pelo que duas entidades computacionais s Nomes globais:
podem partilhar um nome se partilharem directa ou indirectamente um contexto
nfs://phoenix.students.di.fct.unl.pt/home/joe
comum de interpretao de nomes. Caso contrrio no se entenderiam.
http://www.google.com/
Um sistema distribudo necessita de um contexto comum a todas as entidades smb://fatdata.berkley.edu/students/johnDeere
computacionais, para que essas entidades possam interagir. Os nomes relativos a rmi://bigserver.di.fct.unl.pt/computeService
esse contexto global dizem-se nomes globais, por oposio a nomes relativos a
193.136.122.1
outros contextos mais limitados que se dizem nomes contextuais.
Os nomes globais so independentes do contexto e podem passar-se livremente Nomes contextuais:
entre as diferentes entidades computacionais. 10.200.0.2
/home/joe
C:\database\students
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 11 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 12
2
Organizao do espao de nomes Generalizao a vrios espaos
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 14
Contexto ou directrio lista de Um servio de designao ou servio de nomes um servio que permite obter
nomes e ligaes a folhas ou a outros um conjunto de atributos de uma entidade dado o seu nome. A resoluo do
directrios nome realizada a partir de um contexto de interpretao do nome.
Folhas atributos da entidade Cada um desses nomes pode designar utilizadores, servidores, servios, objectos
designada pelo nome ou a sua remotos, ficheiros, etc.
representao directa
Um servio de nomes geralmente implementa uma base de dados (distribuda)
Mounts ligaes entre espaos que associa nomes aos atributos das entidades que estes designam.
distintos
Existem duas operaes importantes:
Links simblicos, redireces ou Lookup: dado um nome devolve os atributos associados ao mesmo
aliases uma folha que contm um Bind: que associa um nome a um conjunto de atributos
nome (a ser resolvido)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 16
No concreto Na prtica
O servio de nomes pode ser um servio isolado e especfico ou estar integrado Existe um ou mais servios de nomes puros, ao mais alto nvel: as
noutro servio. Exemplos? entidades nomeadas tm uma taxa de criao, supresso e de mudana
O DNS um servio de nomes puro pois no desempenha nenhum outro papel. de atributos relativamente lenta. Exemplo?
Os servidores de ficheiros integram igualmente um servio de nomes dos ficheiros.
Servios de nomes para domnios, utilizadores, servios, mquinas, etc.
Num servio de nomes puro, as entidades existem independentemente do servio No que toca s entidades cujas taxas de criao, supresso ou de
de nomes. O servio de nomes permite obter atributos que permitem depois mudana de estado so mais elevadas, opta-se geralmente por integrar o
aceder ao objecto. servio de designao dessas entidades com o prprio servio de gesto
Nos servios de nomes integrados, a designao e a gesto das entidades esto das mesmas. Exemplo?
intimamente integradas. Geralmente, o servio de nomes usado internamente Servio de gesto de ficheiros integra a gesto dos nomes dos mesmos.
para aceder s entidades geridas pelo servio.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 17 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 18
3
Resoluo iterativa do nome pelo cliente Resoluo recursiva do nome pelos servidores
Non-recursive Recursive
server-controlled server-controlled
Cliente apresenta nome ao servidor local de nomes Cliente apresenta nome ao servidor local de nomes
Se servidor conhece o nome, devolve atributos Se servidor conhece o nome, devolve atributos
Se servidor no conhece o nome, indica outro servidor onde tentar resolver o nome Se servidor no conhece o nome, o prprio servidor resolve o nome iterativamente ou
recursivamente
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 19 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 20
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 21 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 22
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 23 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 24
4
DNS:
Coerncia entre rplicas e das caches Exemplo do DNS Sistema que mantm base de dados
distribuda com informao de
mquinas na internet.
Muitos servios de nomes no asseguram coerncia total, isto , permitem que os Protocolo de acesso ao sistema.
clientes observem incoerncias momentneas. O sistema s assegura que as Note: Name server names are a.root-servers.net
in italics, and the corresponding (root)
incoerncias no se vo manter e que todas as rplicas tendem para um estado domains are in parentheses.
coerente. Arrows denote name server entries uk
ns1.nic.uk purdue.edu
(uk)
Propriedades geralmente assumidas: yahoo.com
ns.purdue.edu
os clientes suportam algum grau de incoerncia. (purdue.edu)
co.uk
os valores registados no servio evoluem lentamente. ac.uk ns0.ja.net
(ac.uk)
* .purdue.edu
So frequentes as seguintes solues:
Replicao do tipo primrio/secundrios com propagao assncrona das actualizaes ic.ac.uk
do primrio para o secundrio; qmw.ac.uk
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 25 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 26
Os atributos no DNS - resource records do DNS Registos DNS (DNS Resource Records)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 27 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 28
Base de dados particionada por mltiplos servidores Domnios genricos: com, edu, org, mil, etc.
Organizao hierrquica dos servidores
Conjunto de servidores replicam informao da raiz da rvore Domnios nacionais: pt, uk, etc.
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also Los Angeles)
d U Maryland College Park, MD
g US DoD Vienna, VA k RIPE London (also Amsterdam, Frankfurt)
h ARL Aberdeen, MD i Autonomica, Stockholm (plus 3 other
j Verisign, ( 11 locations)
locations)
m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto, CA
(and 17 other locations)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 29 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 30
5
Arquitectura DNS DNS: que futuro ?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 33 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 34
Um conjunto de atributos pode funcionar como apontador de uma entidade de Servios de nomes
uma forma mais potente que os nomes clssicos Nomes mais simples
Por exemplo, uma pessoa quando se dirige a uma agncia de um banco pode dizer
que deseja falar com o responsvel pela agncia, ou com o caixa. Servios de directrio
Estes apontadores so abreviaturas de a pessoa cujo atributo funo tem o valor Atributos mais poderosos
gerente ou caixa .
Necessrio definir atributos
Um mecanismo de designao baseado em atributos pode facilmente ser usado Mais simples obter servios redundantes
para designar conjuntos de entidades. Mais simples para integrao de um computador num ambiente novo
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 35 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 36
6
Servios de descoberta e mobilidade Descoberta de servios em Jini Diversos servios de
Acede ao servio usando lookup disponveis, com
Procura servio de vrios scopes
objecto recebido do servio descoberta enviando
Num ambiente com mobilidade ou em que a associao entre objectos se faz de
de descoberta (encapsula multicast
forma espontnea, os utilizadores tendem a no conhecerem previamente o admin
protocolo de comunicao). Printing
nome dos recursos.
1. finance service
Client lookup service?
Um servio de descoberta um servio de directrio que regista servios
disponveis numa rede.
admin
Exemplos? Lookup Client
service
Um servio de descoberta pode ser usado: Network 2. Here I am: .....
por um porttil para encontrar uma impressora, ou um projector de slides. 4. Use printing
service admin, finance
por um frigorifico para encontrar o sistema de alarme para comunicar que est sem
corrente h mais de 10 minutos.
finance 3. Request Lookup
Nos servios de descoberta uma pesquisa est geralmente sujeita a um contexto Corporate Printing service
printing
ou mbito, por exemplo, uma rede local, uma dada sala, uma localizao infoservice service
geogrfica, ...
Procura servio enviando RMI
Servios registam-se para servio de descoberta.
com um ou mais
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 37
servios de lookup Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 38
Com servidor de directrio. Como descobrir servidor? Os servios registados nos servidores de descoberta tendem a ser
Utilizao de multicast volteis. Como lidar com esta volatilidade?
E.g. no comum: Bluetooth: well-known frequency-hopping sequence:
dispositivos e clientes percorrem as frequncias disponveis com diferentes Arquitectura com servidor:
velocidade Utilizao de leases: servidores devem renovar o seu registo periodicamente.
Sem servidor de directrio Arquitectura sem servidor:
Alternativa 1: Cliente envia multicast com pergunta. Servidores respondem Sem anncios peridicos, no necessrio fazer nada
directamente caso correspondam descrio. Com anncios peridicos, aps um dado perodo, considera-se que um
Alternativa 2: Servidores enviam multicast peridico com a sua descrio. servio que no se anunciou deixou de estar disponvel
Clientes guardam informao para responder s perguntas locais.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 39 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 40
... Alice Flintstone (person)... Pat King (person)James Healey (person)Janet Papworth (person) ...
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 41 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 42
7
X.500 Directory Service Exemplo de uma DIB Entry
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 43 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 44
Existe um sistema de tipos de entries que utiliza herana e extensvel. O tipo de Nome do atributo Abreviatura Sintaxe do valor
uma entry define, atravs de ASN.1, os seus atributos obrigatrios e opcionais. O
commonName cn string
conjunto dos tipos da DIB constitui o esquema da DIB.
countryName c ISO3166 code
A DIB est organizada hierarquicamente. Cada entry identificada por um
Distinguished Name (DN) que um identificador global. Um DN um conjunto de localityName l string
atributos que permite identificar a entry, localizando-a na rvore.
organizationName o string
Cada entry pode tambm ser designada por um RDN, isto , Relative
organizationalUnitName ou string
Distinguished Name, isto , um conjunto de atributos que permite distinguir a
entry das suas irms na rvore. postalAddress special
postalCode string
userPassword string
telephoneNumber special
surname sn string
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 45 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 46
Ou=Operations Ou=Marketing
Cn=John Deere
Cn=Manager
DN = /C=US/o=COMPAQ/Ou=Marketing/Cn=John Deere
8
Modelo organizacional Arquitectura
Existem domnios de gesto da informao so os Directory Management Conjunto de servidores (DSA) acessveis
Domains ( DMDs ) pelos User Agents (UA)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 49 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 50
Read, Compare (verifica o valor de um atributo de uma entry), List, Search, Add, A nica implementao disponvel de forma alargada e com uma utilizao
Remove, Modify (atributes), Modify RDN (como move), generalizada da norma X.500 como directrio interno das organizaes.
Utilizaes tpicas: O protocolo de acesso uma verso simplificada do protocolo de acesso entre o
pginas brancas das instituies DUA e o DSA chamado LDAP ou Light-weighted Directory Access Protocol.
DNS para hosts e e-mail
servidores de chaves pblicas O LDAP apenas usa uma representao textual dos atributos e dos valores e no
bases de dados bibliogrficas ASN.1 nem as regras de codificao associadas como est previsto nas normas X.
listas de servios, etc. 500 completas.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 51 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 52
9
Sistemas Distribudos
LEI (1 ciclo) 2010/2011
Captulo 7
Introduo aos sistemas de designao,
de descoberta e de localizao de servios
Nota prvia
1
Organizao do captulo
Servidores de designao
Servios de descoberta
Um servio de nomes permite obter dados (atributos) sobre um entidade dado o seu nome.
Exemplo: nome dos ficheiros nos sistemas de ficheiros
2
O que so nomes ?
Um nome tem de ser interpretado para se chegar (aos dados da) entidade. Este
processo de interpretao diz-se resolver ou interpretar o nome (to resolve).
A interpretao de um nome deve ser feita num contexto pois o mesmo nome em
contextos diferentes pode designar objectos diferentes (exemplo?).
Nomes e identificadores
3
Nomes, identificadores e endereos na prtica
Hierarquias de designao
Endereos
(exemplo: 193.136.122.23)
4
URLs, URNs, URIs Vantagens dos URNs?
Vantagens dos URLs?
Um URL (Uniform Resouce Locator) um nome que indica a localizao de um
objecto
scheme:scheme-specific-location
Ex: http://asc.di.fct.unl.pt/sd1
Um URL basicamente um endereo
Gerao de UIDs
5
Nomes globais versus nomes contextuais
Exemplos
Nomes globais:
nfs://phoenix.students.di.fct.unl.pt/home/joe
http://www.google.com/
smb://fatdata.berkley.edu/students/johnDeere
rmi://bigserver.di.fct.unl.pt/computeService
193.136.122.1
Nomes contextuais:
10.200.0.2
/home/joe
C:\database\students
6
Organizao do espao de nomes
/sd1/aulas-teoricas/cap6.pdf
7
Conceitos importantes
8
No concreto
Na prtica
9
Resoluo iterativa do nome pelo cliente
Caractersticas?
NS2 Servidor processa cada pedido
rapidamente.
2 Resoluo comea em servidores
Name
1 NS1 servers diferente.
Client
3
NS3
NS2 NS2
2 2
4 3
1 1
NS1 NS1
client client
4 3 5
NS3 NS3
Non-recursive Recursive
server-controlled server-controlled
10
Resoluo recursiva do nome pelos servidores
NS2 NS2
2 2
4 3
1 1
NS1 NS1
client client
4 3 5
NS3 NS3
Non-recursive Recursive
server-controlled Caractersticas? server-controlled
NS2
1 1 NS5
1
client NS3
NS1
1
1
NS6
2 NS4
11
Resoluo por multicasting
NS2
1 1 NS5
1
client NS3
NS1
1
1
NS6
2 NS4
Caractersticas?
Cliente envia mensagem multicast aos servidores
Apenas deem
possvel nomes
ambientes que suportam
O servidor de nomes que conhece multicast
o nome, devolve
. os atributos
Todos os servidores de nomes vem todos os
pedidos.
Problema?
Manter coerncia entre as rplicas e a informao oficial.
12
Coerncia entre rplicas e das caches
DNS:
Exemplo do DNS Sistema que mantm base de dados
distribuda com informao de
mquinas na internet.
Protocolo de acesso ao sistema.
Note: Name server names are a.root-servers.net
in italics, and the corresponding (root)
domains are in parentheses.
Arrows denote name server entries uk
ns1.nic.uk purdue.edu
(uk) yahoo.com
ns.purdue.edu
(purdue.edu)
co.uk
ac.uk ns0.ja.net
(ac.uk)
* .purdue.edu
ic.ac.uk
qmw.ac.uk
13
Os atributos no DNS - resource records do DNS
Type=A Type=CNAME
O nome um hostname O nome um alias para o
O valor um endereo nome cannico (o nome real)
IP do host O valor o nome
cannico
Type=NS
O nome um domnio (e.g. Type=MX
foo.com) O valor o nome de um
O valor o hostname de mail server do domnio e
um servidor do domnio a respectiva prioridade
14
Arquitectura DNS
Domnios de topo
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also Los Angeles)
d U Maryland College Park, MD
g US DoD Vienna, VA k RIPE London (also Amsterdam, Frankfurt)
h ARL Aberdeen, MD i Autonomica, Stockholm (plus 3 other
j Verisign, ( 11 locations)
locations)
m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto, CA
(and 17 other locations)
15
Arquitectura DNS
16
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 33
17
Designao atravs de atributos
Servios de nomes
Nomes mais simples
Servios de directrio
Atributos mais poderosos
Necessrio definir atributos
Mais simples obter servios redundantes
Mais simples para integrao de um computador num ambiente novo
18
Servios de descoberta e mobilidade
Exemplos?
admin
Lookup Client
service
Network 2. Here I am: .....
4. Use printing
service admin, finance
19
Servios de descoberta: arquitecturas possveis
Servios de descoberta
20
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 41
... Alice Flintstone (person)... Pat King (person)James Healey (person)Janet Papworth (person) ...
21
X.500 Directory Service
... Alice Flintstone (person)... Pat King (person)James Healey (person)Janet Papworth (person)...
info
Alice Flintstone, Departmental Staff, Department of Computer Science,
University of Gormenghast, GB
commonName uid
Alice.L.Flintstone alf
Alice.Flintstone
Alice Flintstone mail
A. Flintstone
alf@dcs.gormenghast.ac.uk
surname Alice.Flintstone@dcs.gormenghast.ac.uk
Flintstone roomNumber
telephoneNumber Z42
+44 986 33 4604 userClass
Research Fellow
22
Tipos dos atributos
Cada entry pode tambm ser designada por um RDN, isto , Relative
Distinguished Name, isto , um conjunto de atributos que permite distinguir a
entry das suas irms na rvore.
organizationName o string
organizationalUnitName ou string
postalAddress special
postalCode string
userPassword string
telephoneNumber special
surname sn string
23
Exemplo
root
C=US C=PT
Ou=Operations Ou=Marketing
Cn=John Deere
Cn=Manager
DN = /C=US/o=COMPAQ/Ou=Marketing/Cn=John Deere
Modelos de segurana
24
Modelo organizacional
Arquitectura
25
Operadores, utilizaes e estado
Read, Compare (verifica o valor de um atributo de uma entry), List, Search, Add,
Remove, Modify (atributes), Modify RDN (como move),
Utilizaes tpicas:
pginas brancas das instituies
DNS para hosts e e-mail
servidores de chaves pblicas
bases de dados bibliogrficas
listas de servios, etc.
Alguns problemas:
definio de um conceito de nome legvel (e usvel)
estrutura mundial da DIT e uniformizao dos tipos usados
algoritmos de pesquisa e navegao genricos
O LDAP apenas usa uma representao textual dos atributos e dos valores e no
ASN.1 nem as regras de codificao associadas como est previsto nas normas X.
500 completas.
26
Para saber mais
27
Nota prvia
Captulo 8
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 1 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 2
Um sistema de gesto de ficheiros distribudos fornece um servio de Integrao: como integrar no sistema de ficheiro local?
acesso a ficheiros semelhante ao de um sistema de ficheiros normal, mas
estendido a um conjunto de mquinas ligadas em rede. Normalmente Designao: como designar os ficheiros remotos?
permite: Externamente: ao nvel das aplicaes
Internamente: no sistema
Partilha de ficheiros por vrios utilizadores
Modelo de acesso: dois extremos: acesso completamente remoto ou
acesso completamente local (usando cache).
Melhor qualidade de servio do que a disponvel localmente
Maior dimenso do espao disponvel
Partilha de ficheiros: problemas relacionados com o controlo da concorrncia
Melhor tolerncia a falhas
e modelo de consistncia fornecido
Desempenho semelhante ou superior
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 3 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 4
Soluo tpica: sub-rvore do sistema de ficheiros export ... vmunix usr nfs
Remote Remote
Problema: Como providenciar acesso aos ficheiros? people
mount
students x staff
mount
users
O cliente pode montar uma directoria remota (caso tenha permisses) numa
directoria local (ex.: /usr/students no cliente monta a rvore /export/people no
Server 1)
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 5 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 6
1
Integrao no sistema local (cont.) Arquitectura
file system
UNIX NFS NFS UNIX
file file
Other
client server
system system
NFS
protocol
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 7 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 8
Tipos dos nomes dos ficheiros: Nomes globais. Podem ser passados entre mquinas mas implicam a introduo
de uma super-raiz do file system.
Nomes simblicos Uma forma popular : //servername/ficheiro
(exemplo: /x/y/p/q ) Exemplo: //asc.di.fct.unl.pt/home/foobar
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 9 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 10
Para que os clientes e os servidores possam memorizar UFIDs (ou file possvel definir identificadores de baixo nvel cuja posse garante o direito de
handles) sem que os mesmos possam dar origem a ambiguidades, estes realizar operaes sobre um objecto. Tratam-se de identificadores que podem ser
copiados, mas que no podem ser forjados. Este tipo de identificadores tm as
devem ser: vantagens de uma capacidade (e os defeitos tambm).
nicos no tempo
nicos no espao Exemplo:
Que propriedades tem um NFS file handle ? Os dois campos direita tm de ser cifrados ou assinados para no serem
[ file system number, file i-node, i-node generation number ], alterveis.
endereo IP do servidor, porta do servidor
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 11 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 12
2
Caractersticas do mtodo Servidores stateless vs. Servidores stateful
Desvantagens
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 13 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 14
setattr(fh, attr) -> attr Sets the attributes (mode, user id, group id, size, access time and
modify time of a file). Setting the size to 0 truncates the file.
read(fh, offset, count) -> attr, data Returns up to count bytes of data from a file starting at offset.
Also returns the latest attributes of the file.
write(fh, offset, count, data) -> attr Writes count bytes of data to a file starting at offset. Returns the
attributes of the file after the write has taken place.
fh, newfh so identificadores de ficheiros
opacos
Continua ...
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 15 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 16
getattr(fh) -> attr Returns file attributes of file fh. (Similar to the UNIX stat system
call.)
setattr(fh, attr) -> attr Sets the attributes (mode, user id, group id, size, access time and
modify time of a file). Setting the size to 0 truncates the file.
read(fh, offset, count) -> attr, data Returns up to count bytes of data from a file starting at offset.
Also returns the latest attributes of the file.
write(fh, offset, count, data) -> attr Writes count bytes of data to a file starting at offset. Returns the
attributes of the file after the write has taken place.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 17 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 18
3
Servidores stateless vs. Servidores stateful Operaes idempotentes
Propriedades stateless possvel desenhar um interface com (quase todas as) operaes idempotentes
Mascara mais facilmente as falhas dos servidores e de comunicaes. e.g. NFS
Para algumas operaes fcil: ex.: read, write, etc. Como?
Porqu?
Para outras operaes no possvel (ex.: rename, mkdir, rmdir). Porqu?
No h limite terico para o nmero de utilizadores simultneos. Porqu? Para estas operaes, comum o servidor manter uma pequena cache das ltimas
No existe necessidade de propagar operaes OPEN / CLOSE. Porqu? operaes deste tipo, implementando uma semntica at-most-once simplificada.
Propriedades stateful
Operaes podem ser mais simples e mais simples ter semntica
A utilizao de operaes idempotentes simplifica o protocolo e a implementao
equivalente dos sistemas centralizados. Porqu?
do servidor. Porqu?
Permitem implementar locks mais facilmente. Porqu? Estado mantido pelo servidor nulo (ou mnimo)
Protocolo RPC pode implementar semntica at-least-once. Porque que mais
simples?
Tendem a permitir uma poltica de caching tambm mais eficaz (como
veremos a seguir)
Se tudo estiver a funcionar bem, um crash do servidor seguido da sua
recuperao, uma interrupo momentnea da rede, ou a perca de alguns
pacotes, so falhas que so mascaradas facilmente pelo conjunto do sistema
Como?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 19 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 20
Cache no (SO do) servidor levanta alguns problemas na presena de falhas. Quase todos os sistemas de ficheiros distribudos mantm um cache que pode ter
Quais? diferentes caractersticas
Eficincia?
Depende da fraco de operaes que podem ser servidas
pelos valores guardados na cache.
Caching fich. inteiros > caching blocos > sem caching
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 21 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 22
Quase todos os sistemas de ficheiros distribudos mantm um cache que pode ter Nos sistemas de ficheiros centralizados, a semntica dos acessos concorrentes
diferentes caractersticas definida por:
Uma poltica por omisso
Modelo caching por blocos. Guarda blocos de ficheiros (geralmentes da dimenso E um mecanismo de locks
do bloco dos discos e com dimenso idntica usada na transferncia entre o
No sistema Unix (e Linux ), a poltica por omisso do tipo serializao das
cliente e o servidor).
operaes sobre cada ficheiro: uma leitura l sempre o resultado da ltima
Modelo Caching de Ficheiros inteiros. Guarda ficheiros completos na cache escrita.
sempre que necessrio aceder a um ficheiro, este transferido para a mquina do Existe ainda um sistema de locks que permite garantir acessos sem conflitos
cliente. Nota: caching efectuado normalmente em disco. (write / write ou read / write ) por dois processos distintos.
Exemplo de system call para manipular locks no sistema Unix:
Modelo Servio Remoto ou sem Cache. Cada vez que necessrio aceder a um result = flock(filedes, offset, range, locktype)
ficheiro, o cliente invoca o servidor.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 23 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 24
4
Acessos concorrentes distribudos Controlo de concorrncia pessimista com servidores
stateless
Quando o sistema de gesto de ficheiros distribudo o problema do acesso A semntica tradicional centralizada consiste em uma leitura ver sempre o
partilhado e do controlo da concorrncia mais difcil de resolver. Porqu? resultado da ltima escrita (serializao dos acessos).
Os mtodos usados para lidar com este aspecto podem agrupar-se em mtodos A semntica dum esquema de gesto das caches depende do que se faz nas
pessimistas ou mtodos optimistas. operaes de leitura e escrita:
Associado s escritas est a propagao das modificaes para o servidor (e sua
Os mtodos pessimistas tentam esconder que existem vrias cpias e procuram visualizao por outros clientes).
emular o melhor possvel a semntica do sistema centralizado a distribuio Associada s leituras est a verificao da coerncia da cache em relao ao servidor.
mais transparente.
Estes sistemas poderiam descrever-se como sistemas com equivalncia a uma s
cpia (one copy serializability).
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 25 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 26
Os sistemas Unix usam sempre caching de ficheiros locais, em memria central. A O valor de t calculado de forma dinmica e varia entre 3 e 30 segundos para
poltica convencional satisfazer os pedidos de leitura da cache se possvel e usar ficheiros (o valor menor quanto mais frequentemente o ficheiro escrito) e
read-ahead e delayed-write (30 segundos no mximo) dos ficheiros locais. entre 30 e 60 segundos para directrios (estratgia idntica).
O mdulo cliente do NFS coloca tambm na cache local os blocos que l do Se T - Tc < t, o segundo teste no realizado, caso contrrio executado um
servidor e utiliza um sistema de timestamps para controlar a respectiva validade.
getattr request ao servidor e os valores de Tc e Tw so actualizados.
H duas timestamps associadas a cada bloco na cache:
Se Tw-server Tw-client todos os blocos do ficheiro so retirados da cache pois o
Tc - ltima hora a que esta entrada na cache foi validada (hora local)
ficheiro foi modificado.
Tw-client - estampilha horria da ltima vez que o ficheiro foi escrito (hora do servidor
tal como est registada actualmente no cliente) Para optimizar, os valores de Tw so aplicados a todos os blocos do mesmo ficheiro e
os atributos do ficheiro so piggybacked sempre que possvel com todas as respostas
No momento T, considera-se vlida uma entrada na cache sse: T-Tc< t Caso do servidor (ver a definio das operaes NFS)
contrrio, necessrio verificar se o ficheiro no foi alterado no servidor, i.e., se Qual o problema de manter apenas um Tw para cada ficheiro?
Tw-server = Tw-client
Se t grande pode resultar incoerncia, se t pequeno pode resultar ineficincia. Os blocos modificados por uma escrita no cliente so marcados como dirty e
enviados assincronamente para o servidor ou logo que um sync ocorre no cliente.
Porque que (quase) todas as operaes NFS Como se comporta esta aproximao
retornam atributos do ficheiro? com um sistema de bases de dados?
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 27 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 28
Gesto da cache com servidores stateless NFS: Gesto da cache com servidores stateless
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 29 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 30
5
Gesto da cache com servidores stateful Gesto de cache no sistema CIFS: Opportunistic locks
Aproximao controlada pelo servidor: o servidor (stateful) anota cada cliente de Neste esquema, introduzido no sistema CIFS (sucessor do SMB), existem vrios
um ficheiro e o modo de acesso e gere um sistema de notificaes de alteraes, tipos de locks:
assim como mecanismos baseados em tokens e locks para ajudar os clientes a Opportunistic locks (oplocks) exclusivos que permitem ao cliente ter acesso exclusivo
melhorarem o seu desempenho. ao ficheiro e fazer caching arbitrrio do mesmo. Um oplock pode ser retirado ao
cliente pelo servidor.
Oplocks partilhados que permitem aos clientes ter acesso ao ficheiro em leitura e fazer
Quando existe um sistema de locks distribudos, o cliente que possui um lock caching arbitrrio do mesmo. Um oplock pode ser retirado ao cliente pelo servidor.
sobre um ficheiro pode usar esse conhecimento para melhorar a gesto da sua Mandatory locks que permitem acessos exclusivos e caching e que no podem ser
cache. retirados pelo servidor
Se o cliente possui um lock de leitura partilhada, ????
Se o cliente possui um lock de leitura partilhada, o ficheiro no pode ser escrito por
outros e portanto enquanto o lock for vlido no ser modificado os testes de
validade do ficheiro cached so inteis. Os clientes fazem ou no caching dos ficheiros conforme o tipo de lock que tm.
Se no tm nenhum podem sempre aceder ao ficheiro mas sem fazer caching do
Se o cliente possui um lock de escrita exclusiva, ???? mesmo.
Se o cliente possui um lock de escrita exclusiva, o ficheiro no pode ser escrito por
outros e basta fazer escritas peridicas para minorar problemas em caso de crash.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 31 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 32
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 33 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 34
Optimizao: Quando um ficheiro aberto para leitura/escrita tenta-se prolongar Introduzido no AFS e usado tambm no Coda.
a concorrncia, assumindo que o cliente de leitura at primeira escrita
nessa altura troca-se de oplock. Neste sistema os clientes fazem caching de ficheiros inteiros (replica),
sendo o ficheiro a unidade de transferncia entre o cliente e o servidor.
Se um cliente perde um oplock, deixa de fazer caching desse ficheiro. Quando um cliente obtm um cpia do ficheiro, o servidor promete
informar o cliente de qualquer modificao efectuada ao ficheiro a esta
promessa chama-se uma callback promise.
Desde que o cliente tenha uma callback promise vlida, assume que a
sua cpia do ficheiro est actualizada. Neste caso, um ficheiro aberto
no cliente sem nenhuma comunicao com o servidor.
Quando um programa no cliente fecha um ficheiro que acabou de
modificar, o cliente AFS/Coda envia as modificaes para o servidor.
Nessa altura, o servidor notifica todos os clientes com callback promises
vlidas.
Um cliente, ao receber a notificao, anula a sua callback promise e, se
o ficheiro estiver aberto, obtm uma nova cpia do ficheiro.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 35 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 36
6
Funcionamento usando callback promise Soluo Callback promise
User process UNIX kernel Venus Net Vice
open(FileName,
mode)
If FileName refers to a
file in shared file space, Com este esquema todos as escritas feitas no cliente so temporrias at ao
Check list of files in
pass the request to
Venus.
local cache. If not fecho do ficheiro. Desta forma, a nica semntica que pode ser implementada
present or there is no
valid callback promise, uma semntica dita semntica de sesso. Com esta semntica, uma leitura l o
send a request for the
file to the Vice server resultado das escritas feitas depois do ltimo close do ficheiro.
that is custodian of the
Transfer a copy of the
Quando um cliente inicializado, ele tem de revalidar as calback promises que
volume containing the
file. file and a callback
promise to the
workstation. Log the tem. Porqu?
Place the copy of the callback promise.
file in the local file Pode ter perdido os calbacks feitas pelo servidor enquanto o cliente esteve
Open the local file and system, enter its local
return the file name in the local cache desligado.
descriptor to the list and return the local
application. name to UNIX.
read(FileDescriptor, Perform a normal
Buffer, length) UNIX read operation
on the local copy.
write(FileDescriptor, Perform a normal
Buffer, length) UNIX write operation
on the local copy.
close(FileDescriptor) Close the local copy
and notify Venus that
the file has been closed. If the local copy has
been changed, send a
copy to the Vice server Replace the file
that is the custodian of contents and send a
the file. callback to all other
clients holding callback
promises on the file.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 37 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 38
Vice
Venus
User
program UNIX kernel
UNIX kernel
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 39 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 40
Aproximao optimista
Workstation Permite a operao mesmo com particionamento da rede e durante perodos de
desconexo
Local
disk
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 41 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 42
7
Replicao no sistema Coda: leitura Replicao no sistema Coda: leitura
Um cliente obtm uma cpia de um [1,1,1] [1,1,1] [1,1,1] Um cliente obtm uma cpia de um [1,1,1] [1,1,1] [1,1,1]
ficheiro a partir de um elemento do ficheiro a partir de um elemento do
AVSG, verificando com todos qual o AVSG, verificando com todos qual o
que tem a verso mais actual que tem a verso mais actual
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 43 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 44
Quando o ficheiro fechado, o [1,1,1] [1,1,1] [1,1,1] Quando o ficheiro fechado, o [2,1,1] [1,2,1] [1,1,1]
cliente escreve a nova verso em cliente escreve a nova verso em
todos os servidores do AVSG todos os servidores do AVSG
[2,1,1]
[1,1,1]
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 45 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 46
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 47 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 48
8
Deteco da inconsistncia: escrita Tratamento de conflitos
Se quando se envia uma escrita, o [2,2,1] [2,2,1] [1,1,1] Resoluo manual (inicial)
vector-verso da verso modificado Quando existem modificaes concorrentes a um ficheiro, os ficheiros so marcados
for inferior ao da rplica actual como em conflito e o acesso impedido at o conflito ser resolvido por um utilizador
porque existiu uma modificao
Resoluo automtica
concorrente (conflito)
[1,1,1] Podem-se definir programas que, em caso de conflito, so executados para gerar o
estado final do ficheiro a partir das diferentes verses
Modificaes concorrentes em directorias so resolvidas automaticamente
[1,1,1]
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 49 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 50
A coerncia da cache mantida pelo mecanismo de callback promise Clientes replicam subconjunto de ficheiros completos: rplica secundria (ou
cache) mantida por replicao antecipada (pre-fetching)
Um cliente invalida uma callback promise se o conjunto AVSG aumenta (i.e., se Utilizadores especificam ficheiros crticos para replicao
um servidor passa a estar acessvel). Porqu? ltimos ficheiros utilizados tambm ficam na cache (caching tradicional)
Porque que para suportar desconexo replicar o ficheiro completo uma boa
Cada servidor mantm, alm do vector verso para cada ficheiro, um vector
soluo?
verso para um volume. Um cliente invalida uma callback promise se, ao
contactar os servidores, verifica que eles tm diferentes vectores verso de Durante a desconexo
volume. Porqu? Registo das operaes efectuadas
Qual o interesse deste vector-verso?
Na reconexo
Reintegrao das modificaes efectuadas, re-executando lista de operaes
executadas e detectando/resolvendo eventuais conflitos
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 51 Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 52
9
Sistemas Distribudos
LEI (1 ciclo) 2010/2011
Captulo 8
Nota prvia
1
Sistemas de ficheiros distribudos
2
Integrao no sistema local
Remote Remote
people students x staff users
mount mount
O cliente pode montar uma directoria remota (caso tenha permisses) numa
directoria local (ex.: /usr/students no cliente monta a rvore /export/people no
Server 1)
3
Integrao no sistema local (cont.)
Arquitectura
Application Application
program program
UNIX
system calls
UNIX kernel
UNIX kernel Virtual file system Virtual file system
Local Remote
file system
client server
system system
NFS
protocol
4
Designao dos ficheiros
Nomes simblicos
(exemplo: /x/y/p/q )
Nomes globais. Podem ser passados entre mquinas mas implicam a introduo
de uma super-raiz do file system.
Uma forma popular : //servername/ficheiro
Exemplo: //asc.di.fct.unl.pt/home/foobar
Ligaes (mounts)
Um mesmo nome em duas mquinas pode referir o mesmo ou diferentes ficheiros
Nomes diferentes em duas mquinas podem referir o mesmo ficheiro
5
Caractersticas dos nomes internos
Capacidades e UFIDS
Exemplo:
6
Caractersticas do mtodo
Vantagens
Desvantagens
7
Servidores stateless
create(dirfh, name, attr) -> Creates a new file name in directory dirfh with attributes attr and
newfh, attr returns the new file handle and attributes.
getattr(fh) -> attr Returns file attributes of file fh. (Similar to the UNIX stat system
call.)
setattr(fh, attr) -> attr Sets the attributes (mode, user id, group id, size, access time and
modify time of a file). Setting the size to 0 truncates the file.
read(fh, offset, count) -> attr, data Returns up to count bytes of data from a file starting at offset.
Also returns the latest attributes of the file.
write(fh, offset, count, data) -> attr Writes count bytes of data to a file starting at offset. Returns the
attributes of the file after the write has taken place.
fh, newfh so identificadores de ficheiros
opacos
Continua ...
8
Exemplo: operaes NFS
lookup(dirfh, name) -> fh, attr Returns file handle and attributes for the file name in the directory
dirfh.
create(dirfh, name, attr) -> Creates a new file name in directory dirfh with attributes attr and
newfh, attr returns the new file handle and attributes.
getattr(fh) -> attr Returns file attributes of file fh. (Similar to the UNIX stat system
call.)
setattr(fh, attr) -> attr Sets the attributes (mode, user id, group id, size, access time and
modify time of a file). Setting the size to 0 truncates the file.
read(fh, offset, count) -> attr, data Returns up to count bytes of data from a file starting at offset.
Also returns the latest attributes of the file.
write(fh, offset, count, data) -> attr Writes count bytes of data to a file starting at offset. Returns the
attributes of the file after the write has taken place.
Servidores stateful
9
Servidores stateless vs. Servidores stateful
Propriedades stateless
Mascara mais facilmente as falhas dos servidores e de comunicaes.
Porqu?
No h limite terico para o nmero de utilizadores simultneos. Porqu?
No existe necessidade de propagar operaes OPEN / CLOSE. Porqu?
Propriedades stateful
Operaes podem ser mais simples e mais simples ter semntica
equivalente dos sistemas centralizados. Porqu?
Permitem implementar locks mais facilmente. Porqu?
Operaes idempotentes
10
Falhas: no to simples como parece...
Solues possveis?
Exemplo NFS:
Verso 2: o write apenas retornava aps a escrita ser efectuada em disco (cache
write-through). Porqu? Quais os problemas?
Verso 3: o write escreve na cache do file-system (como qualquer write local). A
operao commit permite garantir que as escritas efectuadas foram escritas em disco
(normalmente executado aquando do close).
Quase todos os sistemas de ficheiros distribudos mantm um cache que pode ter
diferentes caractersticas
Modelo Servio Remoto ou sem Cache. Cada vez que necessrio aceder a um
ficheiro, o cliente invoca o servidor.
Eficincia?
Depende da fraco de operaes que podem ser servidas
pelos valores guardados na cache.
Caching fich. inteiros > caching blocos > sem caching
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 22
11
Modelos de Caching : informao replicada
Quase todos os sistemas de ficheiros distribudos mantm um cache que pode ter
diferentes caractersticas
Modelo Servio Remoto ou sem Cache. Cada vez que necessrio aceder a um
ficheiro, o cliente invoca o servidor.
Coerncia?
Depende do modo como verificada a validade da cache
Sem caching > caching blocos > caching fich. inteiros
Existe ainda um sistema de locks que permite garantir acessos sem conflitos
(write / write ou read / write ) por dois processos distintos.
Exemplo de system call para manipular locks no sistema Unix:
result = flock(filedes, offset, range, locktype)
12
Acessos concorrentes distribudos
Os mtodos usados para lidar com este aspecto podem agrupar-se em mtodos
pessimistas ou mtodos optimistas.
A semntica dum esquema de gesto das caches depende do que se faz nas
operaes de leitura e escrita:
Associado s escritas est a propagao das modificaes para o servidor (e sua
visualizao por outros clientes).
Associada s leituras est a verificao da coerncia da cache em relao ao servidor.
13
Modelo da cache do NFS
14
Gesto da cache com servidores stateless
NFS
Escrita: delayed-write, read-ahead
Leitura: testa periodicamente
15
Gesto da cache com servidores stateful
Os clientes fazem ou no caching dos ficheiros conforme o tipo de lock que tm.
Se no tm nenhum podem sempre aceder ao ficheiro mas sem fazer caching do
mesmo.
16
Ilustrao
(1) access F1
(3) access F1
(4) revoke lock from F1
17
Gesto dos oplocks (cont.)
Callback promise
18
Funcionamento usando callback promise
User process UNIX kernel Venus Net Vice
open(FileName, If FileName refers to a
mode) file in shared file space,
pass the request to Check list of files in
local cache. If not
Venus. present or there is no
valid callback promise,
send a request for the
file to the Vice server
that is custodian of the
volume containing the Transfer a copy of the
file. file and a callback
promise to the
workstation. Log the
Place the copy of the callback promise.
file in the local file
Open the local file and system, enter its local
return the file name in the local cache
descriptor to the list and return the local
application. name to UNIX.
read(FileDescriptor, Perform a normal
Buffer, length) UNIX read operation
on the local copy.
write(FileDescriptor, Perform a normal
Buffer, length) UNIX write operation
on the local copy.
close(FileDescriptor) Close the local copy
and notify Venus that
the file has been closed. If the local copy has
been changed, send a
copy to the Vice server Replace the file
that is the custodian of contents and send a
the file. callback to all other
clients holding callback
promises on the file.
Material de suporte s aulas de SD/LEI (1 ciclo) Copyright DI FCT/ UNL - 37
19
Coda
Workstations Servers
User Venus
program
Vice
UNIX kernel
UNIX kernel
Vice
Venus
User
program UNIX kernel
UNIX kernel
20
Funcionamento dos system calls
Workstation
User
Venus
program
UNIX file Non-local file
system calls operations
UNIX kernel
UNIX file system
Local
disk
Aproximao optimista
Permite a operao mesmo com particionamento da rede e durante perodos de
desconexo
21
Replicao no sistema Coda: leitura
[1,1,1] [1,1,1]
22
Replicao no sistema Coda: escrita
[1,1,1]
[1,1,1]
[2,1,1]
23
Replicao no sistema Coda: escrita
Seoovector-verso
Se vector-versodos
dosvrios
vrios [2,2,1] [2,2,1] [1,1,1]
servidoresdiferente
servidores diferente
Dadosdois
Dados doisvectores-verso,
vectores-verso,v1
v1eev2:
v2:
Se v2 > v1, ?v2 uma verso mais actual
Se v2 || v1, ?existiram escritas
[2,2,1] [2,2,1] [1,1,1]
concorrentes
24
Deteco da inconsistncia: escrita
[1,1,1]
Tratamento de conflitos
Resoluo automtica
Podem-se definir programas que, em caso de conflito, so executados para gerar o
estado final do ficheiro a partir das diferentes verses
Modificaes concorrentes em directorias so resolvidas automaticamente
25
Coerncia da cache
Cada servidor mantm, alm do vector verso para cada ficheiro, um vector
verso para um volume. Um cliente invalida uma callback promise se, ao
contactar os servidores, verifica que eles tm diferentes vectores verso de
volume. Porqu?
Qual o interesse deste vector-verso?
Suporte desconexo
Durante a desconexo
Registo das operaes efectuadas
Na reconexo
Reintegrao das modificaes efectuadas, re-executando lista de operaes
executadas e detectando/resolvendo eventuais conflitos
26
Para saber mais
27