Departamento de Engenharia Informática
Conceitos básicos de criptografia
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
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 2012/13
Page 1
Departamento de Engenharia Informática
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 2012/13
Departamento de Engenharia Informática
Criptografia
Conceitos
•
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 2012/13
Page 2
Departamento de Engenharia Informática
Comunicação Cifrada (Modelo)
{P}K
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
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
Sistemas Distribuídos 2012/13
Page 3
Departamento de Engenharia Informática
Criptografia Simétrica
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Cifra simétrica
• Substituição
– Mono-alfabética
– Poli-alfabética
• Exemplo Mono-alfabético
– Chave – troia
– Problema?
ABCDEFGHIJLMNOPQRSTUVXZ
TROIABCDEFGHJLMNPQSUVXZ
Sistemas Distribuídos 2012/13
Page 4
Departamento de Engenharia Informática
Cifra simétrica
• Objectivo
– Confundir – operações não destrutivas que permitam
alterar o significado da mensagem em aberto misturando-o
com a chave
– Difundir – fazer com que as alterações se difundam a toda a
mensagem cifrada para não ser alvo de análise estatistica
de padrões
• Operações usuais – XOR, Shift, permutação de bits
Sistemas Distribuídos 2012/13
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
– Difundir no criptograma a
mensagem
• Exemplo: Tabelas de Vigenère
Sistemas Distribuídos 2012/13
Page 5
Departamento de Engenharia Informática
Sistemas Distribuídos 2012/13
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)
:
– ATTACKATDAWN
• O cifrador escolhe a chave e repete-a até que tenha o tamanho da
mensagem
– Vamos usar "LEMON": LEMONLEMONLE
• 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
• Chave:
– LEMONLEMONLE
• Mensagem Cifrada
– LXFOPVEFRNHR
Sistemas Distribuídos 2012/13
Page 6
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
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
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 2012/13
Page 7
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
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
DES
• Substituição, Permutação, Compressão e Expansão
Input (64)
PI
L0
Ri
Li-1
E+P
R0
KSi
KS1
L1
S-Box i
R16
Li
Ri
inverso PI
output (64)
Sistemas Distribuídos 2012/13
Page 8
 [i]
 [i]
C+P
R1
KS16
L16
K (56)
Ri-1
P-box
Departamento de Engenharia Informática
Algoritmo do DES
Chave de 56 bit
Entrada 64 bit
Permutação
Etapa 1
Etapa 2
Etapa 16
48-bit k1
48-bit k2
48-bit k16
Permutação
64 bit saída
A chave de 56 bits é usada
para criar as chaves de 48 bits
utilizadas em cada etapa
Sistemas Distribuídos 2012/13
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 2012/13
Page 9
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 2012/13
Departamento de Engenharia Informática
Técnicas Elementares de Criptografia
Simétrica
• Substituição - dificultar a descoberta da forma como a mensagem
e a chave foram utilizadas na transformação da informação.
• Permutação - difundir a informação uniformemente pelo texto
cifrado.
Sistemas Distribuídos 2012/13
Page 10
Departamento de Engenharia Informática
Exemplo de uma S-box
• Os 48 bits de cada etapa são transformados por 8
substituion boxes – S-Boxes
• Podem ser vistas como uma função com 6 bits de entrada
e 4 de saída
• A representação interna da função é na forma de uma
tabela que a partir de 4 bits de entrada escolhe com base
em dois bits (4+2) um valor de saída de 4 bits
Middle 4 bits of input
S5
Outer bits
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1100
1011
1100
1101
1110
1111
00
0010
1100
0100
0001
0111
1100
1011
0110
1000
0101
0011
1111
1101
0000
1110
1001
01
1110
1011
0010
1100
0100
0111
1101
0001
0101
0000
1111
1100
0011
1001
1000
0110
10
0100
0010
0001
1011
1100
1101
0111
1000
1111
1001
1100
0101
0110
0011
0000
1110
11
1011
1000
1100
0111
0001
1110
0010
1101
0110
1111
0000
1001
1100
0100
0101
0011
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Exemplo de cifra simétrica: TEA
• Algoritmo académico, pouco usado na prática
• Muito simples
• Razoavelmente rápido
Sistemas Distribuídos 2012/13
Page 11
Departamento de Engenharia Informática
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 2012/13
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 2012/13
Page 12
Departamento de Engenharia Informática
DES Triplo
- Com 3 chaves de 56 bits diferentes, DES triplo
consegue segurança efectiva de 112 bits (< 168 bits)
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Algoritmos de Cifra Simétrica
•
•
•
•
•
•
•
DES
Triple DES
RC4
RC5
IDEA
Blowfish
AES – Advanced Encription Standard – norma dos EUA
com chaves de 128, 196 e 256 bits
Sistemas Distribuídos 2012/13
Page 13
Departamento de Engenharia Informática
Algoritmos de Cifra Simétrica (Comp.)
•
Rijndael - Advanced Encryption Standard (AES)
•
Fonte: Computer Networks, Andrew Tanenbaum
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Criptografia Assimétrica
Sistemas Distribuídos 2012/13
Page 14
Departamento de Engenharia Informática
Aritmética Modular da Multiplicação
X*Y mod N
Y 0
1
2
3
4
5
6
7
8
9
0
0
0
0
0
0
0
0
0
0
0
1
0
1
2
3
4
5
6
7
8
9
2
0
2
4
6
8
0
2
4
6
8
3
0
3
6
9
2
5
8
1
4
7
4
0
4
8
2
6
0
4
8
2
6
5
0
5
0
5
0
5
0
5
0
5
6
0
6
2
8
4
0
6
2
8
4
7
0
7
4
1
8
5
2
9
6
3
8
0
8
6
4
2
0
8
6
4
2
9
0
9
8
7
6
5
4
3
2
1
X
N=10
O inverso
multiplicativo é a
solução da equação:
Y*Y-1 mod N = 1
Exemplo:
Y=3, Y-1=7
Para cifrar T=9:
C = 9*3 mod 10 = 7
Para decifrar C=7:
T = 7*7 mod 10 = 9
Funções injectivas
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Algoritmos de cifra assimétrica
• RSA
• DSS – baseado ElGamal
• Curvas elípticas
Sistemas Distribuídos 2012/13
Page 15
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 2012/13
Departamento de Engenharia Informática
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 2012/13
Page 16
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.
Neste caso, Z = 2*2*2*2*2*2*3, pelo que podemos escolher K p = 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 2012/13
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
Sistemas Distribuídos 2012/13
Page 17
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 2012/13
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 > 10200, em 1978, Rivest considerava que para
computadores que executassem 1 MIPS levariam 4
mil milhões de anos
• Mas houve continua evolução dos computadores e
dos métodos de cálculo…
Sistemas Distribuídos 2012/13
Page 18
Departamento de Engenharia Informática
Segurança do RSA
• 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 2012/13
Departamento de Engenharia Informática
Comparação cifra assimétrica
• As of 2003 RSA Security claims that
–
–
–
1024-bit RSA keys are equivalent in strength to 80-bit symmetric keys,
2048-bit RSA keys to 112-bit symmetric keys
3072-bit RSA keys to 128-bit symmetric keys.
• RSA claims that:
–
–
–
1024-bit keys are likely to become crackable some time between 2006 and 2010
2048-bit keys are sufficient until 2030.
key length of 3072 bits should be used if security is required beyond 2030.
• NIST key management guidelines
–
suggest that 15360-bit RSA keys are equivalent in strength to 256-bit symmetric
keys.
• elliptic curve cryptography, or ECC, appears to be secure with shorter keys
than those needed by other asymmetric key algorithms. NIST guidelines
state that ECC keys should be twice the length of equivalent strength
symmetric key algorithms. So, for example, a 224-bit ECC key would have
roughly the same strength as a 112-bit symmetric key.
Sistemas Distribuídos 2012/13
Page 19
Departamento de Engenharia Informática
Segurança do RSA (2)
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Considerações genéricas sobre
utilização de
algoritmos de criptografia
Sistemas Distribuídos 2012/13
Page 20
Departamento de Engenharia Informática
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 2012/13
Departamento de Engenharia Informática
Métodos genéricos de ataque
a funções de cifra
Em qual se encontra
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é se obter C
Como prevenir?
Sistemas Distribuídos 2012/13
Page 21
Departamento de Engenharia Informática
Cifra híbrida (ou mista)
• 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 2012/13
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?
Sistemas Distribuídos 2012/13
Page 22
Departamento de Engenharia Informática
Criptografia:
Classificação das cifras
• 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
– Contínuas (stream)
• Cifra de um bloco depende dos blocos anteriores
• Necessita mecanismo de inicialização
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Por Blocos versus Contínuas: Exemplo
Original
Cifra Por Bloco
Cifra Contínua
Fonte: Wikipedia
Sistemas Distribuídos 2012/13
Page 23
Departamento de Engenharia Informática
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 2012/13
Departamento de Engenharia Informática
Modos de cifra:
ECB vs CBC
CBC também pode
ser usado com cifra
assimétrica
Electronic Code Book
Ci = EK(Ti)
Ti = DK(Ci)
T1
T2
EK
EK
C1
C2
DK
DK
T1
T2
Cipher Block Chaining
Ci = EK(Ti ⊕ Ci-1)
Ti = DK(Ci ) ⊕ Ci-1
Tn
EK
EK
IV
Cn
DK
DK
IV
T1
T2
EK
EK
C1
C2
DK
DK
T1
T2
Se Ci se perde na
rede, consegue
decifrar Ci+1?
EK
DK
Tn-1
Tn
EK
EK
Cn-1
Cn
DK
DK
Tn-1
Tn
Tn
Sistemas Distribuídos 2012/13
Page 24
Departamento de Engenharia Informática
CBC (outra maneira de o entender)
plaintext blocks
n+3
n+2
n+1
XOR
E(K, M)
ciphertext blocks
n-3
n-2
n-1
n
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Modos de cifra:
OFB e CFB
Output Feedback (autokey)
Ci = Ti ⊕ EK(Si)
Ti = Ci ⊕ EK(Si)
Si = f(Si-1, EK(Si-1))
Ciphertext Feedback
Ci = Ti ⊕ EK(Si)
Ti = Ci ⊕ EK(Si)
Si = f(Si-1, Ci)
Sistemas Distribuídos 2012/13
Page 25
Departamento de Engenharia Informática
Modos de cifra:
Stream Cipher
Semelhança com
outro algoritmo de
Cifra?
number
generator
Se Ci se perde na
rede, conseguimos
decifrar restantes?
keystream
n+3
n+2
n+1
E(K, M)
buffer
XOR
ciphertext
stream
plaintext
stream
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
A Informação como um Bem
• Integridade da Informação
• Confidencialidade/Privacidade da informação
– Ex.: Pessoal, Médica, relação com o Governo
• Identidade – não se efectuarem acções em nome de
outro
• Anonimato – realizar acções que são autenticadas mas
em que não se deve conhecer a identidade (ex.:
votações)
• Disponibilidade dos serviços que permitem aceder a
informação
Sistemas Distribuídos 2009/10
Sistemas Distribuídos 2012/13
Page 26
Departamento de Engenharia Informática
Assinatura Digital
Autenticação e Integridade da
Informação
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Assinaturas digitais
• 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)
• As assinaturas não fazem sentido isoladas; só
junto do texto a que se referem
Sistemas Distribuídos 2012/13
Page 27
Departamento de Engenharia Informática
Assinaturas digitais
• Técnica base de Autenticação
– Assinatura de T por A
•
{T}Kprivada A
– Validação da assinatura:
• T == {assinatura}Kpública A
• Como é evidente, o sistema de cifra tem de ser de
chave assimétrica senão não havia possibilidade de
garantir que a assinatura não era forjada
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Assinatura Digital
M
signed doc
H(M)
Signing
h
E(K pri , h)
M
128 bits
{h}Kpri
Verifying
D(Kpub ,{h})
{h} Kpri
h'
M
h = h'?
H(doc)
Sistemas Distribuídos 2012/13
Page 28
h
Departamento de Engenharia Informática
Funções de Resumo ou Dispersão (Digest/Hash)
• 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)
• Esta situação é chamada uma colisão
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Funções de Hash não invertíveis
• As funções de hash não invertíveis têm como objectivo
criar um resumo único semelhante a uma impressão
digital de um conteúdo digital muito mais extenso
• As funções produzem um resumo de algumas dezenas de
bytes a partir dos dados originais
• São não invertíveis porque é computacionalmente
impossível reconstruir o conteúdo original a partir do
resumo.
• A probabilidade de colisão (dois textos diferentes
produzirem a mesma assinatura) deve ser mínima.
• Mudanças pequenas no texto devem produzir resumo
muito diferentes (valores de hash estão distribuídos
uniformemente)
Sistemas Distribuídos 2012/13
Page 29
Departamento de Engenharia Informática
Porque é que deve ser difícil encontrar
colisões?
Se não, seria fácil forjar assinaturas digitais.
Como?
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Paradoxo do Aniversário
• Quantas operações são necessárias para encontrar
uma colisão num resumo de m bits?
• Qual a probabilidade de duas pessoas na aula terem
o mesmo aniv.?
• Para n>=23, p>50%
– Numero de pares de aniversários = C(23,2) = 22 * 23 / 2
= 253 pares
• Resposta à pergunta inicial: 2m/2 (muito menos do
que 2m)
Sistemas Distribuídos 2012/13
Page 30
Departamento de Engenharia Informática
Funções Resumo (Digest)
• 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
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Protocolo de Assinatura Digital
1.
A -> B:
I, A, {D(I)} KsA
A envia para B a informação I e a respectiva assinatura constituída pelo resumo da
informação obtido pela função resumo D, cifrado com a chave privada de A.
2. B -> SAUT : A
B pede ao servidor de autenticação a chave pública de A.
3. SAUT -> B:
4. B:
5. B:
A, KpA
calcula D(I)
decifra ({D(I)} com KpA
Com a chave pública de A (KpA), B decifra a assinatura
6. B:
Compara os dois
Se for idêntica, a mensagem não foi modificada, garante a integridade e tem a certeza
que foi A que a enviou, garante a autenticação.
Sistemas Distribuídos 2012/13
Page 31
Departamento de Engenharia Informática
MACs: Assinaturas low-cost
• 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
…Como?
• Assumindo que interlocutores partilham segredo
K é possível
– Por exemplo, K pode ser chave de sessão em cifra
híbrida
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
MACs: Assinaturas low-cost
M
signed doc
H(M+K)
Signing
h
M
K
M
h
Verifying
h = h'?
K
H(M+K)
h'
Sistemas Distribuídos 2012/13
Page 32
Departamento de Engenharia Informática
MACs: Discussão
• Quem pode validar mensagens assinadas?
• Que requisitos são assegurados?
– Autenticidade dentro do grupo conhecedor de K e
Integridade
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Distribuição e gestão de chaves
Sistemas Distribuídos 2012/13
Page 33
Departamento de Engenharia Informática
Distribuição e gestão de chaves
Cifras
assimétricas
Cifras
simétricas
Há que divulgar
um valor secreto a
um conjunto
limitado de
interlocutores
legítimos
Que o devem
manter secreto
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 a
troca de
informação com
um atacante
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Exemplo com um sistema de chave assimétrica
Man-in-the-middle
Sistemas Distribuídos 2012/13
Page 34
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
• Algoritmo de chave assimétrica
• Baseia-se na dificuldade computacional de
efectuar logaritmos de grandes números.
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
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
Propriedade de aritmética modular
Sistemas Distribuídos 2012/13
Page 35
Departamento de Engenharia Informática
Man-in-the-Middle
Ataque também designado por bucket brigade
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Ataque de man-in-the-middle com chave
assimétrica
• O agente A cria um par de chaves de cifra
assimétrica
• Publica a sua chave KpA num servidor de nomes
• O atacante I consegue substituir a chave por KpI
e o endereços dos serviços pelo seu endereço
• Quando o agente B utilizar o servidor de nomes
poderá:
– Estabelecer um canal confidencial com I pensando
que é A
– Validar assinaturas de A forjadas por I
Sistemas Distribuídos 2012/13
Page 36
Departamento de Engenharia Informática
• Estes problemas só se resolvem com entidades
que garantam que as chaves utilizadas são
realmente as produzidas pelos agentes
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Autenticação
Sistemas Distribuídos 2012/13
Page 37
Departamento de Engenharia Informática
Autenticação
• A autenticação baseia-se sempre em o sistema
apresentar um desafio que o agente deve
saber responder.
• O desafio pode ser:
– 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 2012/13
Departamento de Engenharia Informática
Protocolo Simples de Autenticação
1)
2)
3)
C ->S:
S ->C:
C ->S:
“Iniciar Sessão”
D
{D}K
cs
O segredo neste caso é a chave Kcs
– poderia ser obtida por um hash da password, um segredo entre o C e o S
O protocolo tem vários problemas:
– Não é recíproco, só autentica o cliente;
– O valor de D tem de variar senão pode ser reutilizado;
– É necessário estabelecer a chave secreta entre o cliente e o servidor.
Sistemas Distribuídos 2012/13
Page 38
Departamento de Engenharia Informática
Protocolo de Needham-Schroeder – criptografia
assimétrica
1: C -> Saut:
2: Saut -> C:
C, S
{Kps, S}KsSaut
• O cliente pede ao servidor de autenticação a chave
pública do servidor S
• O servidor de autenticação envia para o cliente a chave
pública do servidor (Kps), cifrada com a sua chave
privada para garantir a autenticação da informação.
• A mensagem é decifrada utilizando a chave pública do
servidor de autenticação, conhecida de todos.
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Protocolo de Needham-Schroeder – criptografia
assimétrica
3: C -> S:
{Nc, C} Kps
• O cliente envia ao servidor uma mensagem cifrada com a chave pública do
servidor (Kps) que contém o seu identificador e um carimbo.
• Só o servidor, utilizando a sua chave privada, pode ver o conteúdo da
mensagem.
4: S -> Saut:
5: Saut -> S:
C,S
{Kpc, C} KsSaut
• As etapas 4 e 5 repetem o protocolo do lado do servidor. Este pede ao
servidor de autenticação a chave pública do cliente.
6: S -> C :
7: C -> S:
{ Nc, Ns, }Kpc
{ Ns }Kps
Sistemas Distribuídos 2012/13
Page 39
Departamento de Engenharia Informática
Protocolo de Needham-Schroeder – criptografia
assimétrica
3: C -> S:
{Nc, C} Kps
• O cliente envia ao servidor uma mensagem cifrada com a chave pública do
servidor (Kps) que contém o seu identificador e um carimbo.
• Só o servidor, utilizando a sua chave privada, pode ver o conteúdo da
mensagem.
4: S -> Saut:
5: Saut -> S:
C,S
{Kpc, C} KsSaut
• As etapas 4 e 5 repetem o protocolo do lado do servidor. Este pede ao
servidor de autenticação a chave pública do cliente.
6: S -> C :
7: C -> S:
S evita o ataque
man-in-the-middle
foi sugerido como
uma evolução por
Lowe
{ Nc, Ns, S}Kpc
{ Ns }Kps
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
• Necessidade de carimbos temporais para evitar
a reutilização das mensagens
Sistemas Distribuídos 2012/13
Page 40
Departamento de Engenharia Informática
Protocolo de Needham-Schroeder-Lowe
criptografia assimétrica
C, S
{KpS, S} K
s Saut
Saut
{ NC, C } K
PS
S,C
C
Saut {KpC, C} KSaut
S
{NC, NS, S} KPC
{NS} KPS
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Certificados de chaves públicas
• 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
• A norma X.509 é a mais utilizada para formato de
certificados
Sistemas Distribuídos 2012/13
Page 41
Departamento de Engenharia Informática
Formato do Certificado X509
Subject
Distinguished Name, Public Key
Issuer
Distinguished Name, Signature
Period of validity
Not Before Date,
Date
Administrative information
Version, Serial Number
Not After
Extended information
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Sistemas Distribuídos 2012/13
Page 42
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 2012/13
Departamento de Engenharia Informática
Certificados e Assinaturas Digitais
• Validação de assinaturas digitais
• Sensível à correcção das chaves públicas
– Têm de ser as obtidas de forma segura ->
certificados
– Têm que estar ainda em uso e não serem
revogadas – black list
Sistemas Distribuídos 2012/13
Page 43
Departamento de Engenharia Informática
Autoridades de certificação:
Sistemas ad-hoc ou hierárquicos
• Certificação ad-hoc
– Cada utilizador escolhe em quem confia como autoridade de
certificação (ex. PGP)
• Certificação hierárquica
– Existe uma hierarquia de certificação (institucional)
• Á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
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Funcionamento
PKI
1
1 – funcionamento offline
Sistemas Distribuídos 2012/13
Page 44
Departamento de Engenharia Informática
Evolução do protocolo de needham-schroder ->
kerberos
Autenticação com chave simétrica
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
• Em cifra simétrica o problema principal é a
partilha da chave
• Se o protocolo se basear em chaves apenas
conhecidas do agente e de uma autoridade de
distribuição de chaves (KDS) podemos controlar
a partilha do segredo
Sistemas Distribuídos 2012/13
Page 45
Departamento de Engenharia Informática
Distribuição de Chaves e Autenticação
Chaves
previamente
distribuídas
“fora-de-banda”
K12
K23
S2
{M}K12
Distribuição correcta de pares de
chaves secretas autentica o
emissor da mensagem!
Novo servidor: implica avisar
todos os outros servidores
K12
Chaves de longa duração usadas
sempre: mau uso!
S1
K13
K23
S3
K13
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Protocolo de Needham-Schroeder –
criptografia simétrica
C
S
C
C, S, Nc
{Nc ,S, Kcs, {Kcs, C}Ks}Kc
Saut
S
Kcs
Saut
Kc
{Kcs, C}Ks
C
{Ns}Kcs
S
{Ns-1}Kcs
Pode ser alvo de Replay Attack
se atacante descobrir KCS e enviar esta mensagem para S
Sistemas Distribuídos 2012/13
Page 46
Ks
Saut
Departamento de Engenharia Informática
Autenticação: Kerberos
Kerberos
Ticket
Autenticação Granting Service
1)
2)
Cliente
Servidor
3)
4)
Identificação
(login)
Pedido de acesso ao
servidor
1) Identifica-se
2) Ticket para o TGS
3) Pedido de acesso ao Servidor
4) Ticket para o Servidor
5) Pedido Operação
6) Resultado Operação
5)
Execução das
operações
6)
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Autenticação : Kerberos (Simplificado)
C, S, n
C
login
C
Saut
{Kc,s, n}Kc, ticketc,s
S
Saut
C
S
Kc,s
Saut
Kc
KS
Timestamps reais para evitar reutilização de tickets antigos
(implica relógios sincronizados)
ticketx,y = {x, y, T1, T2, Kx,y}Ky
ticketc,s, authc,s, pedido, Treq
acesso a S
{Treq, resposta}Kc,s
authx,y = {x, Treq}Kx,y
S
Autenticador: para evitar re-envio
de pedidos antigos
(implica relógios sincronizados)
Sistemas Distribuídos 2012/13
Page 47
Departamento de Engenharia Informática
Arquitectura Kerberos (completo)
Kerberos Key Distribution Centre
Step A
1. Request for
TGS ticket
Authentication
service A
Authentication
database
Ticketgranting
service T
2. TGS
ticket
Login
session setup
Server
session setup
Client
C
Step B
3. Request for
server ticket
4. Server ticket
DoOperation
Step C
5. Service
request
Service
function
Request encrypted with session key
Server
S
Reply encrypted with session key
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Autenticação : Kerberos (V5)
C, TGS, n
C
login
C
{Kc,tgs, n }Kc , ticketc,tgs
Saut
{Treq, resposta}Kc,s
Saut
S
Kc,s
TGS
Kc,tgs
Saut
Kc
Ks
Ktgs
TGS
ticketx,y = {x, y, T1, T2, Kx,y}Ky
ticketc,s, authc,s, pedido, Treq
acesso a S
TGS
C
ticketc,tgs, authc,tgs, S, n2
pedido de
acesso a S {Kc,s, n2 }Kc,tgs, ticketc,s
S
Porquê a separação
Saut/TGS?
S
Sistemas Distribuídos 2012/13
Page 48
authx,y = {x, Treq}Kx,y
Departamento de Engenharia Informática
Kerberos
• Escalabilidade
– Subdivisão em realms
– Cada realm possui um Saut e um TGS
– Um realm pode aceitar autenticações feitas por
outro
• Exploração
– Segurança física dos servidores e das respectivas
BDs
• Saut e TGS
– Relógios sincronizados
• Para validar tickets e authenticators
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Autorização
Sistemas Distribuídos
Sistemas Distribuídos 2012/13
Page 49
Departamento de Engenharia Informática
Controlo de direitos de acesso
• Modelo conceptual
– 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 Distribuídos 2012/13
Departamento de Engenharia Informática
Controlo dos Direitos de Acesso
• Um Monitor de Controlo de Referências valida quando uma
operação é efectuada se o agente tem direito de a executar.
– 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
• 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.
Sistemas Distribuídos 2012/13
Page 50
Departamento de Engenharia Informática
Matriz de direitos de acesso
Objectos
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
Sistemas Distribuídos 2012/13
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
• Também suportam delegação facilmente
• Capacidade análoga a uma chave do mundo real
Como lidar
• E tem limitações análogas:
com isto?
– Pode ser roubada
– Revogar acesso a alguém que tem a chave é difícil
Sistemas Distribuídos 2012/13
Page 51
Departamento de Engenharia Informática
Controlo dos Direitos de Acesso
• O Monitor de Controlo de Referência
valida se o agente tem direito de a
executar a operação.
• Duas opções:
– A informação relativa à matriz é mantida
dentro do espaço de endereçamento do
servidor que se supõe seguro - ACL
– É enviada uma capacidade de cada vez que o
cliente pretende utilizar o objecto.
Capacidade: Ticket ou Certificado de
autenticação + direitos
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Amoeba
• Sistema operativo distribuído baseado num
micro-núcleo
• Capacidades para autenticação e autorização
• As capacidades são armazenadas no espaço de
endereçamento dos utilizadores.
• Cifra para proteger os campos de direitos.
• Mecanismos para permitir revogar direitos.
Sistemas Distribuídos 2012/13
Page 52
Departamento de Engenharia Informática
Amoeba: Estrutura das capacidades
48 bits
Porto do
Servidor
24 bits
Numero do
8 bits
48 bits
Direitos
Campo de
verificação
Objecto
As capacidades são constituídas por quatro campos:
1 – Porto do servidor que gere o objecto: 48 bits
2 – Número do objecto ( só com significado para o servidor): 24 bits
3 – Direitos sobre o objecto ( 1 bit por cada operação): 8 bits
4 – Número aleatório (usado para protecção das capacidades) : 48 bits
Cifra da capacidade para garantir que não é modificada. Problema como modificar os direitos
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Canal de Comunicação Seguro
Sistemas Distribuídos 2012/13
Page 53
Departamento de Engenharia Informática
Canais de comunicação seguros:
Funcionalidade
• Privacidade
– Dos dados
• 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 2012/13
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 2012/13
Page 54
Departamento de Engenharia Informática
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 2012/13
Departamento de Engenharia Informática
Caso de estudo: TLS/SSL
(base do HTTPS)
Sistemas Distribuídos 2012/13
Page 55
Departamento de Engenharia Informática
SSL protocol stack
SSL
Handshake SSL Change SSL Alert
Cipher Spec Protocol
protocol
HTTP
Telnet
SSL Record Protocol
Transport layer (usually TCP)
Network layer (usually IP)
SSL protocols:
Other protocols:
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
TLS handshake protocol
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
Server
S end client certificate response if
requested
Certificate Verify
Change Cipher Spec
Change cipher suite and finish
handshake
Finished
Change Cipher Spec
Finished
Sistemas Distribuídos 2012/13
Page 56
Departamento de Engenharia Informática
TLS handshake: opções
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
SSL record protocol
abcdefghi
Application data
Fragment/combine
abc
Record protocol units
Compress
Compressed units
Hash
MAC
Encrypt
Encrypted
Transmit
TCP packet
Sistemas Distribuídos 2012/13
Page 57
def
ghi
Departamento de Engenharia Informática
TLS record protocol
abcdefghi
Application data
Fragment/combine
abc
Record protocol units
def
ghi
Compress
Compressed units
Hash
MAC
Encrypt
Encrypted
Transmit
TCP packet
Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
© Pearson Education 2012
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
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 2012/13
Page 58
Departamento de Engenharia Informática
Web Services - Handlers
• Handler Chain
– Sequência de handlers executados sobre pedidos e respostas
• Handler
– Extende a classe
• javax.xml.rpc.handler.Handler
– Métodos relevantes
• handleRequest(MessageContext context)
• handleResponse(MessageContext context)
• handleFault(MessageContext context)
Sistemas Distribuídos 2012/13
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 2012/13
Page 59
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 2012/13
Departamento de Engenharia Informática
Diagrama de Segurança dos Web Services
WS-Trust
WS-Authorization
WS-Privacy
Blocos da mensagem
WS-Security
Blocos básicos
XML Dig Sig
XML Enc
SAML
Sistemas Distribuídos 2012/13
Page 60
XACML
WS-SecurePolicy
WS-Federation
Liberty Alliance
WS-Secure
Conversation
Departamento de Engenharia Informática
Estrutura da Assinatura em XML- DSIG
<Signature ID?>
<SignedInfo>
<CanonicalizationMethod/>
<SignatureMethod/>
(<Reference URI?>
(<Transforms>)?
<DigestMethod>
<DigestValue>
</Reference>)+
</SignedInfo>
Cardinalidade
<SignatureValue>
“?” indica zero ou uma ocorrência,
(<KeyInfo>)?
“+” indica uma ou mais ocorrências
(<Object ID?>)*
“*” indica zero ou mais ocorrências
</Signature>
Sistemas Distribuídos 2012/13
Departamento de Engenharia Informática
Advanced Electronic Signatures (XAdES)
• O European Telecomunications Standard Institute (ETSI) tem vindo
a desenvolver a especificação de assinaturas em XML - XAdES
• A XAdES preenche os requisitos para assinaturas electrónicas
avançadas de acordo com a directiva da União Europeia, como
também requisitos para o não-repúdio e validade de longo prazo.
• Estes requisitos incluem
– Provas da validade da assinatura mesmo que o assinante ou a
entidade verificadora tentem mais tarde negar (repudiar) a validade
da assinatura.
– Pode ser usada como prova em disputas que ocorram entre o
assinante e a entidade verificadora, que poderão ocorrer vários anos
depois da data de assinatura.
Sistemas Distribuídos 2012/13
Page 61
Download

Seguranca 2013 - Instituto Superior Técnico