A Crise das Funções de Hash

Transcrição

A Crise das Funções de Hash
A Crise das Funções de Hash
Paulo S. L. M. Barreto
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
1
Sumário
• Famílias tradicionais de resumos criptográficos (funções de hash).
• Histórico de problemas e a crise recente.
• Perspectivas de correção e dificuldades de
substituição.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
2
Resumos criptográficos
• Um resumo criptográfico (ou função de hash) é
uma função H: {0, 1}* → {0, 1}n satisfazendo as
seguintes propriedades:
– [Resistência a primeira inversão:] Dado um resumo R,
é inviável encontrar uma mensagem M tal que R =
H(M) ⇒ esforço 2n.
– [Resistência a segunda inversão:] Dado um resumo R e
uma mensagem M1 tal que R = H(M1), é inviável
encontrar uma mensagem M2 ≠ M1 tal que R = H(M2)
⇒ esforço 2n.
– [Resistência a colisões:] É inviável encontrar duas
mensagens distintas M1 e M2 tais que H(M1) = H(M2)
⇒ esforço 2n/2.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
3
Importância
• Assinaturas digitais em documentos
eletrônicos
(“mensagens”)
não
são
realizadas diretamente sobre o conteúdo dos
documentos, mas sobre seus resumos
criptográficos.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
4
Importância
• Motivo: algoritmos de assinatura são muito
mais lentos que funções de hash.
• Aplicá-los sobre cadeias < 100B é razoável,
mas sobre dados de e.g. 600MB está fora de
cogitação.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
5
Importância
• As três propriedades essenciais de resumos
criptográficos significam a inviabilidade de
fraudes.
• Exemplo (resistência a segunda inversão): dado
um documento eletrônico M1 cuja assinatura
digital foi aplicada ao resumo R = H(M1), se fosse
viável calcular outro documento M2 ≠ M1 com o
mesmo resumo, H(M2) = R, a mesma assinatura
legitimamente gerada para M1 seria ilegitimamente
válida para M2.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
6
Funções “Fortes”?
• “Nobody knows how to design a strong
hash function from scratch” (Rijmen &
Barreto 2005).
• Certas construções tradicionais de funções
de hash garantem algumas propriedades de
segurança.
• Infelizmente, muitas instâncias dessas
construções possuem problemas fatais por
abuso das premissas de segurança.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
7
Construção Merkle-Damgård
• Particionamento da mensagem em blocos de
tamanho fixo e acúmulo iterativo dos blocos sobre
um estado de n bits (função de compressão f ).
• “If there exists a computationally collision-free
function f from k bits to n bits where k > n, then
there exists a computationally collision-free
function H mapping messages of arbitrary
polynomial lengths to n-bit strings.” (Damgård
1989).
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
8
Construção Merkle-Damgård
• Complementação e particionamento em t
blocos de b bits: m’ ≡ m1 || ... || mt–1 || mt’,
onde |mi| = |mt’| = b, mt’ ≡ mt || 1 || 0* || |m|.
mensagem original: |m| bits
m1
m2
...
mt–1
b bits
mt
1 0 ... 0 |m|
padding
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
9
Construção Merkle-Damgård
• Função de compressão
f: {0, 1}k → {0, 1}n
com k = n + b.
IV
m1
f
H1
m2
f
...
Ht–1
...
...
mt
f
• Define-se H(m) ≡ Ht.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
Ht
≡ H(m)
10
Funções de Compressão
• Tradicionalmente, modos de operações para
cifras de bloco dedicadas.
• Construção mais comum: Davies-Meyer.
mi
Hi–1
Copyright © 2005 Paulo Barreto
Hi ≡ f(Hi–1 || mi)
E
LARC/PCS/EPUSP
11
Cifra Dedicada
ESHA–1
(1 passo de 80)
Source: Rijmen 2005
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
12
Famílias de Funções de Hash
• Família MD:
– Desenvolvida por Ronald Rivest.
– Operações simples sobre words de 32 bits: ¢, ¿, À,
ª, ©, ⊕, ∧, ∨, ¬.
– MD2, MD4 e MD5.
– Completamente quebrada.
• Família SHA:
– Desenvolvida pela NSA.
– SHA-0, SHA-1: projeto inspirado em MD4.
– SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512).
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
13
Família MD
• Vulnerabilidades na função de compressão
de MD4 encontradas em pouco tempo.
–
–
–
–
den Boer & Bosselaers (1993)
Merkle
Vaudenay
Dobbertin (1995)
• A análise de Dobbertin leva a um algoritmo
eficiente para produzir colisões de MD4.
• Colisões realísticas são possíveis!
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
14
Família MD
********************
********************
CONTRACT
CONTRACT
At the price of $176,495 Alf Blowfish
At the price of $276,495 Alf Blowfish
sells his house to Ann Bonidea…
sells his house to Ann Bonidea…
fMD4(IV ||
"*********************_C
ONTRACT__At_the_price_of_
$176,495_Alf_Blow") = h
fMD4(IV ||
"*********************_C
ONTRACT__At_the_price_of_
$276,495_Alf_Blow") = h
ÂÂ
LARC/PCS/EPUSP
Â
Â
ÂÂ
Copyright © 2005 Paulo Barreto
15
Família MD
• Dobbertin descreve uma extensão parcial do
ataque ao MD5 (1996), mas SHA-0/SHA-1
estão fora de alcance.
• Wang et al. (1998): algoritmo eficiente para
encontrar colisões de MD4 e MD5!
• Problema: escrito em
.
• Colisões de MD4 podem ser calculadas com
papel e lápis. MD5 sucumbe a um laptop.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
16
Família MD
• Ataques ao MD5 são práticos: como demonstração
de princípio, certificados digitais de mercado já
foram forjados (Lenstra & Wang 2005) com
código disponível na Internet!
• Contudo, continua não só em uso efetivo, mas
reconhecido em várias normas!
MD5 =
Copyright © 2005 Paulo Barreto
!
LARC/PCS/EPUSP
17
Família SHA
• SHA-0/SHA-1: n = 160 ⇒ esforço esperado
para obter colisões ≈ 280.
• Critérios de projeto não divulgados além da
inspiração no MD4.
• Vulnerabilidade anunciada pelo NIST/NSA
mas não revelada (1993).
• Chabaud & Joux (1998): criptoanálise
diferencial de SHA-0 (ataque acadêmico).
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
18
Família SHA
• SHA-0
– Biham & Chen (2004)
– Joux et al. (2004) ⇒ 250
– Wang et al. (2004) ⇒ 240
• SHA-1
– Biham and Chen (2004)
– Rijmen and Oswald (2004)
– Wang et al. (2005) ⇒ 263
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
19
Análise
• As cifras de bloco subjacentes às funções de hash
da família MD e SHA-0/SHA-1 são notoriamente
fracas:
– difusão lenta.
– baixa não-linearidade.
– escalonamento (alimentação) de mensagem simples
demais (NESSIE 2003).
• Ineficiências decorrentes: grande número de
passos (até 80).
• SHA-1 será aposentado pelo NIST até 2010.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
20
Família SHA-2
• Essencialmente duas funções distintas
(SHA-256 e SHA-512), com parâmetros
alternativos para tamanhos de hash
adicionais (SHA-224 e SHA-384; talvez
SHA-160).
• Estrutura geral similar às funções SHA-0/
SHA-1. Diferenças em detalhes parecem ter
impacto relevante na segurança (e.g. difusão
mais rápida), mas ainda sub-avaliado.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
21
Outras Funções de Hash
• Família RIPEMD:
– RIPEMD, RIPEMD-128, RIPEMD-160.
– Projeto europeu (RIPE).
– RIPEMD original quebrada (Dobbertin; Wang
et al.), atualizações OK(?).
• HAVAL:
– Comprimento variável (128, 160, 192, 224,
256), número de estágios variável (3–5).
– Quase todas as combinações quebradas.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
22
Outras Funções de Hash
• SMASH:
– Estrutura radicalmente nova.
– Proposta no FSE’2005, quebrada em menos de
1 mês.
• DHA-256:
– Remendo sugerido para a estrutura SHA.
– Proposta no NIST HFW’2005, quebrada na
mesma semana.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
23
Outras Funções de Hash
• WHIRLPOOL:
– Hash de 512 bits.
– Não utiliza a função de compressão Davies-Meyer, mas
Miyaguchi-Preneel.
– Não utiliza uma cifra interna do tipo SHA, mas uma
cifra da família do AES.
– Escalonamento de mensagens não-linear.
– Adotada no portfolio NESSIE.
– Acolhida na norma ISO/IEC 10118-3.
– Disponível prontamente no kernel do Linux.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
24
Dificuldades de Atualização
• Que critérios serão usados para selecionar
funções de hash alternativas?
– Remendar as falhas
identificadas?
Copyright © 2005 Paulo Barreto
– Adotar uma estrutura
completamente diferente?
LARC/PCS/EPUSP
25
Dificuldades de Migração
• Havendo consenso em algum substituto
para as funções quebradas, como atualizar a
enorme base legada?
– Certificados digitais podem ser revogado$ e
reemitido$.
– Hardware criptográfico é mai$$$ problemático.
– Interoperabilidade de layouts (160 bits?).
• Contudo, o risco de fraude é elevado
(considerar e.g. movimento diário do SPB).
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
26
Perspectivas
• NIST provavelmente manterá o SHA-256
(ou uma função derivada, SHA-160) como
substituto recomendado do SHA-1.
• Eventualmente alguma função de outra
família poderá ser adotada como reserva.
• Migração lenta e penosa, mas necessária
(principalmente do MD5!): risco envolvido
afeta toda a infra-estrutura de certificação
digital em existência.
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
27
Perguntas?
Copyright © 2005 Paulo Barreto
LARC/PCS/EPUSP
28

Documentos relacionados