SEG
©2002-14 P. Veríssimo, A. Bessani – All rights reserved. Reproduction only by permission. 1
Estudo de Caso:
Ataques a um
Canal Seguro
Ataques a um Canal Seguro
• Canais seguros são mecanismos fundamentais para a construção
de sistemas distribuídos seguros:
– Sem autenticação não temos hipótese de resistir a ataques…
• Entretanto, estes mecanismos podem ser atacados:
– ATAQUES A ALGORITMOS
usar algoritmos público, robustos e bem testados e verificados
– ATAQUES A MENSAGENS
ex., replay, mostram que um canal não vive só de boas cifras
– ATAQUES A CHAVES
implicam cuidado extremo com a qualidade das chaves (longas e aleatórias)
– ATAQUES À EXECUÇÃO DO PROTOCOLO
SEG
©2002-14 P. Veríssimo, A. Bessani – All rights reserved. Reproduction only by permission. 3
Ataques a Algoritmos
Três tipos, usam técnicas tanto estatísticas quanto matemáticas:
• Baseados em texto cifrado
(Ciphertext-only)
– Atacante obtém a máxima quantidade de material cifrado possível – Exemplo: texto cifrado pode seguir repetições no texto em claro
• Texto conhecido
(Known-plaintext)
– Se o atacante conhecer pares de texto em claro e seu correspondente cifrado,
pode ser mais fácil obter a chave usada
• Texto escolhido
(Chosen-plaintext)
– A obtenção da chave fica ainda mais fácil se o atacante puder escolher o texto
que será cifrado
OBSERVAÇÕES:
– Algoritmos robustos: RSA, IDEA e AES (algumas vezes através de extensões) – Esqueçam DES, excepto o TripleDES para algumas aplicações legadas
– Material criptográfico deve ser salvaguardado: use chaves temporárias (K)
cifradas com chaves de longa duração (L): <E(L,K),E(K,M)>
Ataques a Mensagens
• Repetição e reordenamento na cifra em blocos
– numa mensagem suficientemente longa, blocos diferentes podem
ser trocados, reordenados, apagados, etc., sem detecção
• Pré computação de mensagens
– Quando o conjunto de possíveis mensagens M é pequeno, pode-se
pré computar o conjunto de todos os possíveis textos cifrados
E(k,m) com uma chave pública k e montar uma tabela (E(k,m),m)
– Quando uma mensagem E(k,m) for ouvida no canal, procure na
tabela o texto em claro correspondente a m
• Modos de cifra podem prevenir esses ataques?
– Deve-se cifrar cada bloco de dados com alguma informação
SEG
©2002-14 P. Veríssimo, A. Bessani – All rights reserved. Reproduction only by permission. 5
Ataques a Chaves
• Chaves fracas
– Por exemplo, geradas a partir de passwords ingénuas
– Grupos de chaves fracas (acontece com alguns algoritmos, e.g., RSA)
• Exemplo:
– Um intruso captura mensagens cifradas e tenta adivinhar a chave
usada com ajuda de um dicionário de passwords comuns
(ataque de
dicionário)
– Ou então, testa se a mensagem foi cifrada com uma chave fraca
(aproveitando-se de propriedades do algoritmo criptográfico)
• Solução:
– Construir chaves cuidadosamente
» Usar
nonces (number used once)
,
salt
(
bits aleatórios usados para
criação de chaves
) e
geradores de números aleatórios seguros
Ataques à Execução do Protocolo
• O atacante estuda o protocolo e faz ataques activos levando este
a tomar decisões erradas como:
– Revelar uma chave secreta partilhada
– Deixar o atacante aceder um servidor sem completar sua autenticação
• Reprodução
– Intruso repete sequências de interacções (replay)
– Exemplo: intruso repete sequência de mensagens de iniciação, que pode
levar o interlocutor a falar com ele, partilhar chaves com ele, etc.
• Confusão
– Intruso envia uma mensagem inesperada em um momento escolhido com o
intuito de confundir o protocolo
• Observações:
– A resistência do protocolo depende da resistência dos algoritmos usados – Use boas práticas de engenharia para tornar o protocolo robusto
– Valide o protocolo através de alguma técnica de especificação formal – Use nonces e informações temporais (ex., timestamps) de forma a tornar
SEG
©2002-14 P. Veríssimo, A. Bessani – All rights reserved. Reproduction only by permission. 7
Estratégias de Segurança
Estratégias de Segurança
• Chaves e Passwords
• Vulnerabilidades e Ataques
• Políticas de Segurança
• Prevenir Ataques e Intrusões
• Detectar e Reagir a Intrusões
SEG
©2002-14 P. Veríssimo, A. Bessani – All rights reserved. Reproduction only by permission. 9
Chaves e Passwords
• Ataques de força bruta:
– Número de processadores necessários para quebrar uma chave de 56 bits
(tipo DES) em um mês (com 256M encryptions/second): 100
– Para chaves com 128 bits: 5x1023 processadores !
• Ataques de dicionário:
– Chaves fracas (ex., geradas a partir de passwords que usam apenas
caracteres “giros”) encolhem o espaço de busca.
– Ex., o DES vai de 1016possibilidades para 1012 se usarmos apenas letras minúsculas e dígitos
• Frase password (passphrase):
– "My dear friends, who on earth would believe this is my pass phrase?"
– Após executar a síntese criptográfica desta chave, temos um número
hexadecimal de 64 bits:
– E6C1 0A9B 894E 03AF
– Uma password muito boa! E também muito difícil de memorizar – Regra geral de robustez: uma letra na frase para cada bit da chave
Vulnerabilidades e Ataques
Relembremos:
• A medida correcta de quão potencialmente inseguro
um sistema pode ser (ou quão difícil é fazê-lo seguro)
depende:
– Do número e da severidade das faltas no sistema (
vulnerabilidades
)
– Das potenciais ameaças que este sistema está sujeito (
ataques
)
• Vulnerabilidades
e
ataques
contribuem para definir o
risco
de uma intrusão
• Encontrar o compromisso certo entre os dois é
obrigatório para um bom projecto do sistema
– Custo vs. Segurança
– Força da criptografia vs. Desempenho
SEG
©2002-14 P. Veríssimo, A. Bessani – All rights reserved. Reproduction only by permission. 11
Políticas de Segurança
Políticas de Segurança
•
Políticas tentam definir o mais precisamente possível:
– Que estados do sistema são seguros ou autorizados
» O sistema pode transitar entre estes estados
– Que estados do sistema são não autorizados ou inseguros
» O sistema não pode entrar nestes estados
» Se isso ocorre, temos uma falha de segurança
•
Políticas vs. Mecanismos:
– Políticas descrevem o que é permitido/proibído no sistema
– Mecanismos controlam como as políticas são impostas
•
Condições necessárias para um sistema seguro:
– Os programas precisam garantir que:
1. O sistema começa num estado autorizado
SEG
©2002-14 P. Veríssimo, A. Bessani – All rights reserved. Reproduction only by permission. 13
Exemplo de Política de Segurança
(objectivo é confidencialidade)
• X é um conjunto de entidades, I é uma informação
• POLÍTICA:
I é confidencial para o conjunto X e apenas X
• CONDIÇÕES e CONSEQUÊNCIAS:
– nenhum x
∈ X pode obter informação a respeito de I
– I pode ser revelado a outros
• Exemplo:
– X é o conjunto de estudantes
– I é a folha resposta do exame final
– I é confidencial para os elementos de X (a política é satisfeita) se os
estudantes não podem obter a folha resposta
Exemplo de uma Política Ambígua
•
Considere uma escola, onde os trabalhos de casa são feitos
apenas no computador
•
POLÍTICA:
– Estudantes não podem ler ou escrever ficheiros uns dos outros
•
CENÁRIO:
– Alice esquece-se de proteger o seu ficheiro com o trabalho contra leitura
– Bob copia este ficheiro
•
Quem violou a política? Alice, Bob, ou ambos?
•
Bob trapaceou –
violou a política
– A Política proíbe explicitamente a cópia de ficheiros uns dos outros
– Sistema entrou num estado não autorizado - Bob copiou ficheiros de Alice
•
Alice não protegeu os seus ficheiros –
não violou a política
– Proteger ficheiros não é requerido pela política de segurança!
SEG
©2002-14 P. Veríssimo, A. Bessani – All rights reserved. Reproduction only by permission. 15
Exemplo Real:
Políticas de Segurança em redes (4PP)
• Paranóica
– tudo é proibido
– desligar a máquina da rede (não permitir conexões)
• Prudente
– o que não é permitido é proibido
– cortar tudo por omissão, permitindo acesso caso a caso
• Permissiva
– o que não é proibido é permitido
– permitir tudo por omissão, negando caso a caso
• Promíscua
– tudo é permitido
– toda a gente acede
Mundo
Real
Uso de Protocolos Criptográficos
• Tipos de protocolos
• Modos de cifra de blocos
• Cifração dupla e tripla
• Assinar e cifrar
SEG
©2002-14 P. Veríssimo, A. Bessani – All rights reserved. Reproduction only by permission. 17
Tipos de Protocolos: self-enforcing
• Comportamento correcto é obtido somente pelo
protocolo executado entre os participantes
• Estes têm de construir confiança entre eles, a
despeito de inicialmente não se confiarem
mutuamente e de alguns poderem ser maliciosos
Alice
Bob
Self-Enforcing Protocol A lic e B o b S e lf-E n fo rcin g P ro to co l L u is a P a u lTipos de Protocolos: Trusted-Third-Party
Adjudicados
– comportamento correcto garantido a
posteriori se necessário, recorrendo a registos recolhidos pelo adjudicador durante a execução, para corrigir erros
Arbitrados
– comportamento correcto garantido por
um árbitro que segue a execução do protocolo, prevenindo a ocorrência de erros
Certificados
– comportamento correcto garantido a
SEG
©2002-14 P. Veríssimo, A. Bessani – All rights reserved. Reproduction only by permission. 19
Modos de Cifra de Blocos
• ECB - Electronic CodeBook
– cifra por blocos independentes
– Vulnerável a ataques de reordenação ou repetição (replay)
Modos de Cifra de Bloco
• CBC - Cypher Block Chaining
– O texto em claro é “XORado” com o texto cifrado do bloco anterior antes de ser cifrado – Protege de ataques de reordenação, inserção, etc.
– Mas duas mensagens iguais ainda dariam texto cifrado igual!
– Solução: Initialization Vector (IV) - uso de dados aleatórios no 1º bloco
SEG
©2002-14 P. Veríssimo, A. Bessani – All rights reserved. Reproduction only by permission. 21
Cifração dupla e tripla
ou Encrypt-Decrypt-Encrypt (EDE)
(usado no DES, mas funciona em qualquer protocolo de cifra de blocos (ex., AES, IDEA))
• Dual DES usa duas chaves K
1e K
2:– Temos agora “chaves” de 2n bits, sendo n o número de bits de uma chave – Para cifrar: C = E(K2,E(K1,P))
– Para decifrar: P = E(K2,E(K1,C))
– Frágil: Pode ser quebrado usando 2n+1cifrações (ao contrário dos 22nesperados)
• O Triple DES (ou DES-EDE ou TDEA, norma ISO/IEC 18033-3) é muito usado
no sector financeiro (definido pela norma ISO 8732) e baseia-se também em
duas chaves K
1e K
2:
– Para cifrar: C = E(K1,D(K2,E(K1,P))) – Para decifrar: P = D(K1,E(K2,D(K1,C)))
– Também é mais frágil do que aparenta com relação a ataques de texto conhecido e texto
escolhido, sendo que o comprim. virtual (“segurança”) da chave para ataques de força bruta é menor do que 2n=112, sendo ~80bits
• Com três chaves fica mais robusto:
– Para cifrar: C = E(K3,E(K2,E(K1,P))) – Para decifrar: P = D(K1,D(K2,D(K3,C)))
– Requer O(22n) cifrações e O(2n) de memória, comprim. virtual 112bits, ataque é inexequível
Assinar e Cifrar
• protocolo derivado do protocolo de assinatura com síntese
• evitar, por ordem:
SEG
©2002-14 P. Veríssimo, A. Bessani – All rights reserved. Reproduction only by permission. 23