Seguranca 201011 v3

Transcrição

Seguranca 201011 v3
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Criptografia
Conceitos básicos de criptografia
• A base da criptografia é conseguir que um grupo de pessoas
transmita informação entre elas que seja ininteligível para
todas as outras
• Uma solução: ter um dialecto próprio
– não é escalável, nem seguro.
• Melhor solução:
–
–
–
–
algoritmo que cifra a informação que é conhecido
e uma chave que parametriza o algoritmo,
Algoritmo público, chave é segredo
Análogo às fechaduras físicas...
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Criptografia
Conceitos
Criptografia – Segurança Total vs Prática
• As funções de cifra são consideradas totalmente seguras
se:
– independentemente do tempo e do poder computacional envolvido,
a chave não puder ser descoberta.
• Normalmente são praticamente seguras
– o valor da informação não justifica o investimento computacional
(em máquinas especiais)
– temporalmente limitada a sua validade e muito inferior ao tempo
necessário para decifrá-la com a tecnologia existente.
Sistemas Distribuídos 2010/11
•
Algoritmo de cifra
– Função injectivas
– Parametrizadas por uma chave
• Algoritmo de decifra
– As cifras são reversíveis apenas por quem possuir o algoritmo
inverso
– Parametrizado por chave inversa
• Nomenclatura
M {M}K1 : cifra da mensagem M com a chave K1
é gerado um criptograma
Sistemas Distribuídos 2010/11
1
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Comunicação Cifrada (Modelo)
Criptografia: Aspectos operacionais
•
Cifras simétricas
– Normalmente usam técnicas de substituição e difusão
– São normalmente muito mais rápidas que as assimétricas
•
Cifras assimétricas
– Normalmente usam operações matemáticas
– A sua segurança baseia-se na complexidade de certas operações
matemáticas
• Logaritmo modular
– Y = aX mod b;
Dados a, b e Y, calcular X
• Factorização de grandes números
– Y = ab, a e b primos;
Dado Y, calcular a ou b
{P}K
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Cifra simétrica
• Substituição
Criptografia Simétrica
– Mono-alfabética
– Poli-alfabética
• Exemplo Mono-alfabético
– Chave – troia
ABCDEFGHIJLMNOPQRSTUVXZ
TROIABCDEFGHJLMNPQSUVXZ
– Problema?
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
2
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Cifra Simétrica
• Poli-alfabético
– Procura que as distribuições sejam
combinadas de forma a que não
existam caracteres que sejam mais
frequentes
• Exemplo: Tabelas de Vigenère
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Exemplo de Cifra com a Tabela de Vigenère
•
Vamos, supor que se pretende cifrar uma mensagem em claro (plaintext) :
•
O cifrador escolhe a chave e repete-a até que tenha o tamanho da mensagem
•
A primeira letra da mensagem, A, é cifrada usando o alfabeto na linha L, que
é a primeira letra da chave. Na tabela de Vigenère corresponde à linha L e à
coluna A.
Da mesma forma para a segunda letra da mensagem: a linha E e a coluna T
resulta X.
A restante mensagem é cifrada da mesma forma
Mensagem:
– ATTACKATDAWN
– Vamos usar "LEMON": LEMONLEMONLE
•
•
•
– ATTACKATDAWN
•
Chave:
•
Mensagem Cifrada
– LEMONLEMONLE
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
One-time pads
• Substituição poli-alfabética
• Chave de grande dimensão não repetida
• O emissor usa a parte da chave que necessita para cifrar a
mensagem e o receptor usa a mesma parte da chave
estando ambos sincronizados sobre que parte já utilizaram
• Totalmente seguro, mas... como distribuir a chave?
– Uma aproximação a one-time pads nos computadores são
geradores de números aleatórios
– Que funcionam a partir de chave (limitada) distribuída inicialmente
– LXFOPVEFRNHR
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
3
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Exemplo de cifra simétrica: TEA
• Algoritmo académico, pouco usado na prática
• Muito simples
• Razoavelmente rápido
Exemplo de cifra simétrica: TEA
void encrypt(unsigned long k[], unsigned long text[]) {
unsigned long y = text[0], z = text[1];
unsigned long delta = 0x9e3779b9, sum = 0; int n;
for (n= 0; n < 32; n++) {
sum += delta;
y += ((z << 4) + k[0]) ^ (z+sum) ^ ((z >> 5) + k[1]);
z += ((y << 4) + k[2]) ^ (y+sum) ^ ((y >> 5) + k[3]);
}
text[0] = y; text[1] = z;
32 etapas.
}
Técnicas base:
1
2
3
4
5
6
7
shift de bits, XOR, soma,
dependentes da chave k
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Exemplo de cifra simétrica: TEA
void decrypt(unsigned long k[], unsigned long text[]) {
unsigned long y = text[0], z = text[1];
unsigned long delta = 0x9e3779b9, sum = delta << 5; int n;
for (n= 0; n < 32; n++) {
z -= ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
y -= ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
sum -= delta;
}
text[0] = y; text[1] = z;
}
Sistemas Distribuídos 2010/11
Data Encription Standard - DES
•
•
1970 - O National Bureau of Standards (NBS) dos EUA reconheceu a
necessidade de um algoritmo padrão para cifra na sociedade civil
1972 – O NBS abriu um concurso para uma novo algoritmo que devia ter
várias características, entre elas:
–
–
–
–
–
•
•
•
Alto nível de segurança
Completamente especificado e fácil de perceber
O algoritmo devia ser público, a sua segurança não vinha de ser secreto
Adaptável a diversas utilizações
Fácil de realizar em dispositivos electrónico
1974 - Os primeiros resultados foram desencorajadores e houve um segundo
concurso
Desta vez foi considerada aceitável a proposta do algoritmo de cifra Lucifer
desenvolvido pela IBM
1976 – depois de análise pelo DoD em particular pela NSA foi aceite como
standard nos EUA
Sistemas Distribuídos 2010/11
4
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Data Encription Standard - DES
•
•
•
•
Blocos de 64 bits
Aplica funções de permutação e substituição a cada bloco
16 etapas e duas permutações totais
Chave de 56 bits, desdobrada em chaves de 48 bits para
cada etapa
• Pode ser realizado em software ou em hardware
DES
• Substituição, Permutação, Compressão e Expansão
Input (64)
L0
Ri
Li-1
PI
E+P
R0
KSi
KS1
L1
 [i]
 [i]
C+P
R1
KS16
L16
K (56)
Ri-1
S-Box i
R16
Li
Ri
P-box
inverso PI
output (64)
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Chave do DES
• Só há registos de quebra por teste sistemático da chave
• Desde a sua publicação que a chave de 56 bits é
considerada insuficiente, permitindo que o sistema seja
alvo de ataques sistemáticos.
• Com o rápido aumento do desempenho das máquinas, esta
questão torna-se cada vez mais preocupante.
• [Kaufman95] considera que as chaves deveriam crescer 1
bit cada dois anos.
• Se admitirmos que 56 bits era adequado em 79, este valor
deveria ser 64 em 93 e 128 em 2121.
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Chave do DES
• Em 2006 um computador dedicado designado de
COPACOBANA construído por $10,000 quebrou o DES
com ataques de força bruta em 8,7 dias
• Em 2009 conseguia-se o mesmo em apenas 6 dias.
Sistemas Distribuídos 2010/11
5
Departamento de Engenharia Informática
Departamento de Engenharia Informática
DES Triplo
Algoritmos de Cifra Simétrica
•
•
•
•
•
•
•
- Com 3 chaves de 56 bits diferentes, DES triplo
consegue segurança efectiva de 112 bits (< 168 bits)
Sistemas Distribuídos 2010/11
DES
Triple DES
RC4
RC5
IDEA
Blowfish
AES – Advanced Encription Standard – norma futura dos
EUA com chaves de 128, 196 e 256 bits
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Algoritmos de cifra assimétrica
Criptografia Assimétrica
Sistemas Distribuídos 2010/11
•
•
•
•
Diffie Hellman
RSA
DSS – baseado ElGamal
Curvas elípticas
Sistemas Distribuídos 2010/11
6
Departamento de Engenharia Informática
Departamento de Engenharia Informática
RSA - Rivest Shamir Adleman
• Algoritmo de cifra de chave pública mais
divulgado
• Patente expirou recentemente
• Enquanto era válida, os autores permitiram aos
browsers utilizar o algoritmo sem pagar desde que
reconhecessem a sua empresa (VeriSign) como
autoridade para gerar certificados
Sistemas Distribuídos 2010/11
Fundamento do RSA
•
•
•
•
P,Q números primos da ordem de 10100
N = P*Q
Z = (P-1)*(Q-1)
Kp e Ks são coprimos com Z tais que Kp*Ks = 1 mod Z
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Exemplo do cálculo das Chaves
1- Escolhem-se dois números primos P e Q e calcula-se N e Z,
– Vamos supor P = 13, Q = 17:
– N = P * Q = 13 x 17 = 221
– Z = (P - 1)*(Q - 1) = 12 x 16 = 192
2 - A chave Kp é um número co-primo com Z.
Departamento de Engenharia Informática
Chaves
• São trocados N e Kp que constituem a chave
pública
• N e Ks são a chave privada
Neste caso, Z = 2*2*2*2*2*2*3, pelo que podemos escolher Kp = 5
3 - Para calcular Ks é necessário resolver a equação Kp* Ks = 1 mod Z,
– Ks *5= 1 mod 192
– Ks * 5 = 1, 193, 385, …
– Ks = 385:5 = 77
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
7
Departamento de Engenharia Informática
Cifra/Decifra em RSA
• Cifra por blocos de dimensão k, em que 2k < N
– No nosso exemplo, k=7
• Para cifrar mensagem em claro M:
{M}Kp = MKp mod N
• Para decifrar mensagem cifrada C:
{C}Ks = CKs mod N
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Segurança do RSA
Departamento de Engenharia Informática
Quebrar a chave privada sabendo
a chave pública?
• Se atacante sabe Kp e N, como consegue descobrir
a chave privada?
– Para saber Ks é preciso saber Z
• (ver slides de geração de chaves)
– Para saber Z é preciso saber os dois números primos P e
Q tal que PxQ=N
• Este problema é considerado demasiado difícil
• Se N > 10100, demora cerca de um milhão de anos
com melhores algoritmos actuais
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Segurança do RSA (2)
• Actualmente, chaves são normalmente de 1024-2048 bits
• Recomendação é de 2048 bits, pelo menos
– Chaves de 256 bits quebradas em poucas horas com PC
– Em 1999, chave de 512 bits foi quebrada por sistema distribuído de
centenas de computadores
– Alguns peritos acreditam que 1024 bits será quebrável a curtoprazo
– Computador quântico (se algum dia vier a existir) quebra chave
RSA facilmente (tempo polinomial)
• Usando Algoritmo de Shor
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
8
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Criptografia – Segurança Total vs Prática
Considerações genéricas sobre utilização de
algoritmos de criptografia
• As funções de cifra são consideradas totalmente seguras
se:
– independentemente do tempo e do poder computacional envolvido,
a chave não puder ser descoberta.
• Normalmente são praticamente seguras
– o valor da informação não justifica o investimento computacional
(em máquinas especiais)
– temporalmente limitada a sua validade e muito inferior ao tempo
necessário para decifrá-la com a tecnologia existente.
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Métodos genéricos de ataque
a funções de cifra Em qual se encontra
Departamento de Engenharia Informática
Cifra híbrida (ou mista)
cifra assimétrica?
• Dependem de em que situação o atacante está
a) Só tem acesso a mensagens cifradas
b) Tem acesso a amostras de um texto em claro e cifrado
c) A partir de qualquer texto original, pode gerar o cifrado
• Nos dois últimos, ataque exaustivo (brute-force) é
sempre possível
– Atacante itera todas as chaves possíveis até que cifra do texto
original resulte no cifrado
Como prevenir?
• Em c), caso a mensagem cifrada seja pequena, é também
possível o chosen plaintext attack
– Quando mensagem cifrada C é pequena, itera-se todas as
mensagens M até seSistemas
obterDistribuídos
C
Como prevenir?
2010/11
• Os algoritmos de cifra assimétrica são
computacionalmente mais complexos que cifra simétrica
– 100 a 1000 vezes mais lentos
• Mas a distribuição da chave pública é mais prática que a
chave secreta
• Como conseguir o melhor dos dois mundos?
• Cifras híbridas
– Gera-se chave secreta, chamada chave de sessão
– Usa-se cifra assimétrica para trocar apenas uma chave secreta
– Usa-se cifra simétrica e a chave secreta para os restantes dados
Sistemas Distribuídos 2010/11
9
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Criptografia:
Classificação das cifras
Por Blocos versus Contínuas: Exemplo
• Segundo o modelo de operação
– Por blocos (todas as que vimos até agora excepto One-time Pad)
• Facilita a análise
P
EK
C
DK
P
Original
Cifra Por Bloco
Cifra Contínua
– Contínuas (stream)
• Cifra de um bloco depende dos blocos anteriores
• Necessita mecanismo de inicialização
Fonte: Wikipedia
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Modos de cifra:
ECB vs CBC
Modos de cifra
• Inicialmente apresentados para o DES
– ECB (Electronic Code Book)
– CBC (Cipher Block Chaining)
– Stream Cipher
• Podem ser usados por outras cifras por blocos
Sistemas Distribuídos 2010/11
Electronic Code Book
Ci = EK(Ti)
Ti = DK(Ci)
T1
T2
EK
EK
C1
C2
DK
DK
T1
T2
Cipher Block Chaining
Se Ci se perde na
Ci = EK(Ti ⊕ Ci-1)
rede, consegue
Ti = DK(Ci ) ⊕ Ci-1
decifrar C ?
i+1
Tn
EK
EK
IV
Cn
DK
CBC também pode
ser usado com cifra
assimétrica
DK
IV
T1
T2
EK
EK
C1
C2
DK
DK
T1
T2
EK
DK
Tn-1
Tn
EK
EK
Cn-1
Cn
DK
DK
Tn-1
Tn
Tn
Sistemas Distribuídos 2010/11
10
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Modos de cifra:
Stream Cipher
CBC (outra maneira de o entender)
plaintext blocks
n+3
n+2
n+1
Semelhança com
outro algoritmo de
Cifra?
XOR
E(K, M)
ciphertext blocks
n-3
n-2
n-1
n
number
generator
keystream
n+3 n+2
n+1
E(K, M)
Se Ci se perde na
rede, conseguimos
decifrar restantes?
buffer
XOR
ciphertext
stream
plaintext
stream
Stream Cipher não pode ser usado com cifra assimétrica. Porquê?
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Representação de dados binários em texto
• Codificação de base 64
• Usa um sub-conjunto de 64 caracteres do ASCII
que são os caracteres mais "universais", ou seja,
caracteres que são iguais em practicamente todos
os códigos: A-Z, a-z, 0-9, +, /
• Caracter ‘=‘ usado no final para identificar
quantidade de padding requerido
• Aumenta tamanho do conteúdo. Qual o overhead?
Assinatura Digital
Autenticação e Integridade da Informação
Sistemas Distribuídos 2010/11
11
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Assinaturas digitais
Assinatura Digital
M
• Identificar inequivocamente o autor de um texto
(autenticidade)
• Impedir alterações do texto (integridade)
• Impedir que o autor repudie o conteúdo a
posteriori (não-repudiação)
Signing
h
{h} Kpri
Verifying
• Função H que recebe um texto (possivelmente
longo) e devolve uma sequência de bits de
comprimento fixo (e.g., 160 bits)
• Propriedades:
– Eficiente – dado P é fácil calcular H(P)
– Não-invertível – dado H(P) é difícil determinar P’ tal
que H(P’) = H(P)
– Difícil encontrar P1, P2 tais que H(P1) = H(P2)
M
D(Kpub ,{h})
h'
H(doc)
h
M
h = h'?
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Funções de Resumo ou Dispersão (Digest/Hash)
{h} Kpri
E(K pri, h)
128 bits
• As assinaturas não fazem sentido isoladas; só
junto do texto a que se referem
Sistemas Distribuídos 2010/11
signed doc
H(M)
Departamento de Engenharia Informática
Porque é que deve ser difícil encontrar
colisões?
Se não, seria fácil forjar assinaturas digitais.
Como?
• Esta situação é chamada uma colisão
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
12
Departamento de Engenharia Informática
Funções Resumo (Digest)
•
MACs: Assinaturas low-cost
A função MD5 [Rivest92].
– A informação é processada em blocos de 512 bits (16 palavras de 32 bits)
e o valor do resumo é uma palavra de 128 bits.
– Em cada etapa é calculado um novo valor de resumo baseado no valor
anterior e no bloco seguinte de 512 bits da mensagem.
•
•
A função SHA-1 é a norma dos EUA. Resumo de 160 bits
A mais recente função SHA-2 produz um resumo de 256 a 516 bits
Message
MD5 Digest
I need a raise of $10,000.
9i5nud5r2a9idskjs2tbuop2ildax
I need a raise of $100,000.
8m4ikijuelaidsfg8asyfnasdfgll
I need a raise of $1,000,000.
4M9i2t8c7h4361712t1h4e1d1otg7
…Como?
• Assumindo que interlocutores partilham segredo
K é possível
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
MACs: Assinaturas low-cost
Departamento de Engenharia Informática
MACs: Discussão
signed doc
H(M+K)
Signing
• Funções de hash muito mais rápidas que as
funções de cifra
• Interessante ter método de assinatura digital que
não implicasse cifra
– Por exemplo, K pode ser chave de sessão em cifra
híbrida
Sistemas Distribuídos 2010/11
M
Departamento de Engenharia Informática
• Quem pode validar mensagens assinadas?
• Que requisitos são assegurados?
h
M
K
– Autenticidade e Integridade apenas
M
h
Verifying
h = h'?
K
H(M+K)
Sistemas Distribuídos 2010/11
h'
Sistemas Distribuídos 2010/11
13
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Distribuição e gestão de chaves
Distribuição e gestão de chaves
• Distribuição das chaves é problema de difícil resolução
• Cifras simétricas
– Há que divulgar um valor secreto a universos limitados de
interlocutores legítimos
• Que o devem manter secreto
• Cifras assimétricas
– Há que garantir que a chave privada apenas é conhecida pela
entidade a que pertence
– Há que garantir que a chave pública é verdadeira e que não foi
modificada para induzir um agente a trocar informação com um
atacante
• Ataque “man in the middle”
• Autoridades de certificação
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Diffie-Hellman
• O objectivo deste protocolo é criar uma chave
simétrica a partir da troca de valores em claro
entre os dois interlocutores
• O algoritmo baseia-se na dificuldade
computacional de efectuar logaritmos de grandes
números.
Diffie-Hellman
1.
A e B escolhem números primos de 512 bits n e g e trocam-nos
abertamente na rede.
2.
Cada um escolhe agora aleatoriamente um número de 512 bits e
mantém-no secreto (designemo-los por x e y). Calculam
respectivamente:
1. TA = gx mod n
2. TB = gy mod n
3.
TA e TB são trocados entre os dois interlocutores.
4.
A calcula TBx mod n e B calcula TAy mod n.
5.
Estes valores são a chave secreta a utilizar pelos interlocutores. Os
valores são idênticos, porque:
TBx mod n = (gy)x mod n = gx.y mod n = (gx)y mod n = TAy mod n
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
Propriedade de aritmética modular
14
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Man-in-the-Middle
Certificados de chaves públicas
•
Validação de assinaturas digitais
– Sensível à correcção das chaves públicas respectivas
• Têm de ser as correctas
• Têm que estar ainda em uso
•
Certificados de chaves públicas
– Documento que associa uma chave pública a:
• Um dono (nome, e-mail, etc.)
• Datas (de emissão, de validade)
• Outra informação
– assinado por uma autoridade de certificação
• Institucional ou não
•
Sistemas Distribuídos 2010/11
A norma X.509 é a mais utilizada para formato de certificados
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Formato do Certificado X509
Departamento de Engenharia Informática
Autoridades de certificação:
Sistemas ad-hoc ou hierárquicos
Subject
Distinguished Name, Public Key
• Certificação ad-hoc
Issuer
Distinguished Name, Signature
• Certificação hierárquica
– Cada utilizador escolhe em quem confia como autoridade de
certificação (ex. PGP)
– Existe uma hierarquia de certificação (institucional)
Not Before Date,
Date
Period of validity
Administrative information
Not After
Version, Serial Number
• Árvore de Certification Authorities (CAs)
– Cada CA emite certificados assinados com a sua chave pública
• Que é distribuída em certificados assinados pela CA acima na
hierarquia
• A chave pública da raiz é bem conhecida (configurada manualmente,
e.g., os browsers reconhecem a VeriSign)
– Funções de uma CA
• Emissão e distribuição de certificados
• Gestão e distribuição de listas de certificados revogados
Extended information
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
15
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Public Key Infrastructure (PKI)
• Infra-estrutura de apoio ao sistema de Chavespúblicas
– Criação segura de pares de chaves assimétricas
– Criação e distribuição de certificados de chavespúblicas
– Definição e uso das cadeias de certificação
– Actualização, publicação e consulta da lista de
certificados revogados
– Revogação de certificados: qual o compromisso?
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Controlo de direitos de acesso
• Modelo conceptual
Autorização
– Os objectos são protegidos por um monitor de controlo de
referências
– Cada agente, antes de poder efectuar um acção sobre um objecto,
tem que pedir autorização ao monitor
– O monitor verifica se o agente está ou não autorizado através de
uma matriz de direitos acesso
Sistemas
Sistemas
Distribuídos
Distribuídos
2010/11
16
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Matriz de direitos de acesso
Controlo dos Direitos de Acesso
•
– Os objectos só podem ser acedidos através do monitor de controlo de
referências;
– Os objectos têm de ser univocamente identificados e o identificador não
pode ser reutilizado sem precauções adicionais.
– Num sistema multiprogramado a informação relativa à matriz é mantida
dentro do espaço de isolamento do núcleo.
– Esta situação é, obviamente, diferente numa rede
•
Objectos
Um Monitor de Controlo de Referências valida quando uma
operação é efectuada se o agente tem direito de a executar.
Os ataques a esta política visam essencialmente subverter o
isolamento entre os agentes mais que procurar alterar a matriz ou
eliminar o controlo do monitor de controlo de referências.
•
Agentes
O1
O2
O3
O4
A1
R
RW
RX
---
A2
RX
---
RW
R
Decomposição da tabela
– Listas de controlo de acesso (Access Control Lists, ACLs)
• Guardadas junto de cada objecto
– Capacidades (capabilities)
• Guardadas junto de cada agente
•
A autenticação dos agentes é fulcral
– Para determinar a parcela da ACL que lhe é aplicável
– Para distribuir as capacidades correctas
Departamento de Engenharia Informática
Departamento de Engenharia Informática
ACLs vs Capacidades
• Capacidades permitem descentralizar autorização
– Servidor analisa a capacidade enviada no pedido para
determinar se cliente tem direito ao que pede
– Não é necessário contactar nenhuma entidade
centralizada que armazena ACLs
Autenticação
• Também suportam delegação facilmente
• Capacidade análoga a uma chave do mundo real
• E tem limitações análogas:
Como lidar
com isto?
– Pode ser roubada
– Revogar acesso a alguém que tem a chave é difícil
Sistemas Distribuídos 2010/11
17
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Autenticação em sistemas distribuídos:
Aproximações
Autenticação
• A autenticação baseia-se sempre em o sistema
apresentar um desafio que o agente deve saber
responder.
• O desafio pode ser:
• Uso do mecanismo local de autenticação
– Autenticação por cada ligação TCP/IP
• telnet, ftp, http
• Envio em claro de pares (nome, senha)
– Fornecer um informação que deve ser secreta,
• Senha
– Apresentar um identificador físico
• Cartão, Chave física
– Fornecer informação biométrica
• Impressões digitais, estrutura da íris
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Protocolo Simples de Autenticação
Departamento de Engenharia Informática
Protocolo de Needham-Schroeder – criptografia
simétrica
C
1)
2)
3)
C ->S:
S ->C:
C ->S:
“Iniciar Sessão”
D
{D}
Kcs
O segredo neste caso é a chave Kcs
O protocolo tem vários problemas:
– Não é recíproco, só autentica o cliente;
C, S, Nc
{Nc ,S, Kcs, {Kcs, C}Ks}Kc
Saut
Saut
S
Kcs
Saut
Kc
Ks
{Kcs, C}Ks
C
{Ns}Kcs
S
– O valor de D tem de variar senão pode ser reutilizado;
– É necessário estabelecer a chave secreta entre o cliente e o servidor.
S
C
{Ns-1}Kcs
Pode ser alvo de Replay Attack
Sistemas Distribuídos 2010/11
se atacante descobrir KCS e enviar esta mensagem para S
Sistemas Distribuídos 2010/11
18
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Autenticação : Kerberos (Simplificado)
Arquitectura Kerberos (completo)
Kerberos Key Distribution Centre
C, S, n
C
login
C
{Kc,s, n}Kc, ticketc,s
Saut
S
Saut
Step A
1. Request for
TGS ticket
C
S
Kc,s
Saut
Kc
KS
acesso a S
ticketx,y = {x, y, T1, T2, Kx,y}Ky
Client
C
Login
session setup
Server
session setup
DoOperation
authx,y = {x, Treq}Kx,y
S
{Treq, resposta}Kc,s
Authentication
database
Step B
3. Request for
server ticket
4. Server ticket
Step C
5. Service
request
Request encrypted with session key
Departamento de Engenharia Informática
Autenticação : Kerberos (V5)
C, TGS, n
C
{Kc,tgs, n }Kc , ticketc,tgs
Saut
ticketc,tgs, authc,tgs, S, n2
pedido de
acesso a S
Kerberos
S
TGS
Saut
C
S
Kc,s
TGS
Kc,tgs
Saut
Kc
Ks
Ktgs
{Kc,s, n2 }Kc,tgs, ticketc,s TGS
{Treq, resposta}Kc,s
• Escalabilidade
– Subdivisão em realms
– Cada realm possui um Saut e um TGS
– Um realm pode aceitar autenticações feitas por outro
• Exploração
ticketx,y = {x, y, T1, T2, Kx,y}Ky
ticketc,s, authc,s, pedido, Treq
acesso a S
Server
S
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
C
Service
function
Reply encrypted with session key
Autenticador: para evitar re-envio
de pedidos antigos
(implica relógios sincronizados)
Sistemas Distribuídos 2010/11
login
Ticketgranting
service T
2. TGS
ticket
Timestamps reais para evitar reutilização de tickets antigos
(implica relógios sincronizados)
ticketc,s, authc,s, pedido, Treq
Authentication
service A
Porquê a separação
Saut/TGS?
S
Sistemas Distribuídos 2010/11
authx,y = {x, Treq}Kx,y
– Segurança física dos servidores e das respectivas BDs
• Saut e TGS
– Relógios sincronizados
• Para validar tickets e authenticators
Sistemas Distribuídos 2010/11
19
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Canais de comunicação seguros:
Funcionalidade
•
Privacidade
– Dos dados
Canal de Comunicação Seguro
• Cifra dos dados enviados
– Dos fluxos de informação
•
Integridade
– Das mensagens
• Adição de valores de controlo não forjáveis
– Dos fluxos de mensagens
• Contextos de cifra e/ou controlo
•
Autenticidade
– Dos interlocutores
• Cifra de valores pré-combinados e frescos
– Com uma chave secreta partilhada por emissor e receptor
– Com a chave privada do emissor
•
•
Não Repudiação
Autorização
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Argumento “extremo-a-extremo”
(End-to-end principle)
• As funcionalidades dos protocolos de
comunicação devem ser implementadas pelos
extremos do canal de comunicação (sempre que
possível), pois…
– Ao implementar nos níveis mais baixos, obrigam todos
os canais a pagar o seu custo, mesmo que não queiram
– Evitam redundâncias, quando as funcionalidades têm de
ser repetidas extremo-a-extremo
• Princípio de desenho do IP
Sistemas Distribuídos 2010/11
Nível de Protocolo
• Nível de protocolo onde realizar o canal seguro
– Ligação de dados
• Podia ser eficientemente implementado no hardware do controlador
de rede.
• Não evita o ataque aos comutadores
– Rede
• ex.: IPsec – para Virtual Private Networks
• Não vai até ao nível do transporte
– Interfaces de Transporte
• Sockets - ex.: SSL
– Aplicação :
• ex.: HTTPS, SSH, PGP, PEM, SET, Handlers dos Web Services
Sistemas Distribuídos 2010/11
20
Departamento de Engenharia Informática
Departamento de Engenharia Informática
Web Services - Handlers
Exemplo: Canal seguro e os RPC
•
Se a cifra para garantir o canal seguro for efectuada antes dos stubs
perde-se a sua capacidade de tratar a heterogeneidade
– Uma grande vantagem dos sistemas de RPC é tratar a heterogeneidade
automaticamente nas funções de adaptação - stub
•
A cifra tem de ser feita depois
– Mas convém que seja dentro do mecanismo de RPC para garantir
segurança de extremo a extremo,
•
•
O RPC pode ser baseado num canal SSL mas há limitações
importantes
Se a mensagem SOAP tiver intermediários estes têm de receber parte
da informação mas não necessitam de a receber toda em aberto.
– Necessidade de cifrar apenas partes da mensagem.
•
Nos Web Services os handlers foram pensados para permitir
implementar as funções de segurança na sequência certa
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Exemplo handler de segurança
public boolean handleRequest(MessageContext context) {
System.out.println(this + ">\n\t handleRequest(MessageContext=" + context
+ ")");
try {
SOAPMessageContext smc = (SOAPMessageContext) context;
SOAPMessage msg = smc.getMessage();
SOAPPart sp = msg.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
SOAPBody sb = se.getBody();
SOAPHeader sh = se.getHeader();
if (sh == null) {sh = se.addHeader();
}
// cipher message with symmetric key
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
msg.writeTo(byteOut);
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, KeyManager.getSecretKey());
byte[] cipheredMessage = cipher.doFinal(byteOut.toByteArray());
Sistemas Distribuídos 2010/11
•
Handler Chain
•
Handler
– Sequência de handlers executados sobre pedidos e respostas
– Extende a classe
• javax.xml.rpc.handler.Handler
– Métodos relevantes
• handleRequest(MessageContext context)
• handleResponse(MessageContext context)
• handleFault(MessageContext context)
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
Exemplo handler de segurança
// encode in base64
BASE64Encoder encoder = new BASE64Encoder();
String encodedMessage = encoder.encode(cipheredMessage);
// remove clear text
sb.detachNode();
sh.detachNode();
// reinitialize SOAP components
sb = se.addBody();
sh = se.addHeader();
// store message
SOAPBodyElement element =
sb.addBodyElement(se.createName("CipherBody"));
element.addTextNode(encodedMessage);
} catch (Exception e) { System.out.println(this + ">\n\t
Exception caught in handleRequest:\n" + e);
return false;
}
return true;
}
Sistemas Distribuídos 2010/11
21
Departamento de Engenharia Informática
Departamento de Engenharia Informática
SSL protocol stack
Caso de estudo: TLS/SSL
(base do HTTPS)
SSL
Handshake SSL Change SSL Alert
protocol Cipher Spec Protocol
HTTP
Telnet
SSL Record Protocol
Transport layer (usually TCP)
Network layer (usually IP)
SSL protocols:
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
TLS handshake protocol
Other protocols:
Sistemas Distribuídos 2010/11
Departamento de Engenharia Informática
TLS handshake: opções
Establish protocol version, session ID,
cipher suite, compression method,
exchange random values
ClientHello
ServerHello
Certificate
Optionally send server certificate and
Certificate Request
request client certificate
ServerHelloDone
Client
Certificate
Certificate Verify
Server
S end client certificate response if
requested
Change Cipher Spec
Finished
Change cipher suite and finish
handshake
Change Cipher Spec
Finished
Sistemas Distribuídos 2010/11
Sistemas Distribuídos 2010/11
22

Documentos relacionados

Seguranca 2013 - Instituto Superior Técnico

Seguranca 2013 - Instituto Superior Técnico cifrar a mensagem e o receptor usa a mesma parte da chave estando ambos sincronizados sobre que parte já utilizaram • Totalmente seguro, mas... como distribuir a chave? – Uma aproximação a one-time...

Leia mais