Qual é a diferença entre SHA-3 e SHA-256?

Sou novo em criptografia, aprendi que SHA-3 (Secure Hash Algorithm 3) é o membro mais recente do a família de padrões Secure Hash Algorithm, lançada pelo NIST.

Mas eu vi recentemente SHA-256, mas não entendi o que é em comparação com SHA-3?

Comentários

  • SHA-256 é SHA-2 com saída de 256 bits. SHA-2 é o predecessor do SHA-3. Eles compartilham muito pouco além do nome.
  • Mas o nome captura a essência, se você não estiver fazendo criptografia, todos esses algoritmos são Secure Hash Algorithms. O contrato e as declarações de segurança são quase idênticos .
  • @MeirMaor Dada a existência de SHA-1 que parece ser uma afirmação ousada.
  • @Maeher, SHA1 foi criado essencialmente com os mesmos requisitos, agora sabemos que não ‘ para atendê-los. No mínimo, os requisitos de resistência à colisão. Ele também tem um tamanho de saída menor, embora SHA3 pode ter o mesmo tamanho de saída que SHA2.

Resposta

As principais diferenças entre o SHA-256 mais antigo da família SHA-2 de FIPS 180 e o SHA3-256 mais recente da família SHA-3 de FIPS 202 , são:

  • Resistência a ataques de extensão de comprimento. Com SHA-256, dado $ H (m) $ , mas não $ m $ , é fácil encontrar $ H (m \ mathbin \ | m “) $ para certos sufixos $ m” $ . Não é assim com qualquer uma das funções SHA-3.

    Isso significa, por exemplo , que $ m \ mapsto H (k \ mathbin \ | m) $ não é um código de autenticação de mensagem segura na chave $ k $ quando $ H $ é SHA-256, porque conhecer o autenticador em uma mensagem permite que você falsifique o autenticador em outra. A propriedade de extensão de comprimento movimentou parcialmente o desenvolvimento do HMAC.

    Em contraste, a construção do prefixo de chave é segura como um MAC quando $ H $ é qualquer uma das funções SHA-3 — ou qualquer uma das funções SHA-512/224 e SHA-512/256 mais recentes. Para SHA-224, que é essencialmente o truncamento de 224 bits do SHA-256 (mas com um IV diferente), o adversário tem uma chance de $ 2 ^ {- 32} $ de adivinhar os bits descartados de saída em uma única tentativa – pequena, mas não desprezível.

  • Desempenho. As funções SHA-2 – principalmente SHA-512, SHA-512/224 e SHA-512/256 – geralmente têm desempenho superior às funções SHA-3. Em parte, isso ocorreu por paranóia e por motivos políticos no processo de design do SHA-3.

    (Em resposta, um dos finalistas do SHA-3 foi lançado no muito mais rápido BLAKE2 , também amplamente usado na Internet hoje, e o vencedor do SHA-3 Keccak foi lançado no muito mais rápido KangarooTwelve . )

  • Design interno completamente diferente. SHA-2 usa o Davies –Meyer structure, uma instância da estrutura Merkle – Damgård, com uma cifra de bloco (às vezes chamada de SHACAL-2) construída a partir de uma rede ARX, como MD4; SHA-3 usa a estrutura de esponja com a permutação Keccak.

    Não há nenhuma diferença visível pelo usuário aqui, mas fez uma diferença para a confiança dos criptógrafos “nos designs após muitos DM Projetos / ARX baseados em MD4 foram quebrados no final dos anos 90 e início dos anos 2000.


História. Tem havido uma longa linha de funções hash padronizadas pelo NIST no FIPS 180, o padrão Secure Hash e mais tarde no FIPS 202¸ o padrão SHA-3: baseado em permutação e saída extensível Funções. Mais detalhes e histórico, incluindo as funções de hash MD4 e MD5 relacionadas nas quais SHA-0, SHA-1 e SHA-2 – mas não SHA-3 – foram baseados:

\ begin {equation} \ begin {array} {ccc} \ text {hash} & \ text {year} & \ text {coll. res.} & \ text {size (bits)} & \ text {design} & \ text {quebrado?} \\ \ hline \ text {MD4} & 1990 & 64 & 128 & \ text {32-bit ARX DM} & 1995 \\ \ text {SHA-0 (SHA)} & 1993 & 80 & 160 & \ text {32 -bit ARX DM} & 1998 \\ \ text {MD5} & 1993 & 64 & 128 & \ text {32-bit ARX DM} & 2004 \\ \ text {SHA-1} & 1995 & 80 & 160 & \ text {32-bit ARX DM} & 2005 \\ \ hline \ text {SHA-256 (SHA-2)} & 2002 & 128 & 256 & \ text { ARX DM de 32 bits} & \\ \ te xt {SHA-384 (SHA-2)} & 2002 & 192 & 384 & \ text {64-bit ARX DM} & \\ \ text {SHA-512 (SHA-2)} & 2002 & 256 & 512 & \ text {64-bit ARX DM} & \\ \ hline \ text {SHA-224 (SHA-2)} & 2008 & 112 & 224 & \ text {32-bit ARX DM} & \\ \ text {SHA-512/224} & 2012 & 112 & 224 & \ text {64-bit ARX DM} & \\ \ text {SHA-512/256 } & 2012 & 128 & 256 & \ text {ARX DM de 64 bits} & \\ \ hli ne \ text {SHA3-224} & 2013 & 112 & 224 & \ text {esponja Keccak de 64 bits} & \\ \ text {SHA3-256} & 2013 & 128 & 256 & \ text {esponja Keccak de 64 bits} & \\ \ text {SHA3-384} & 2013 & 192 & 384 & \ text {esponja Keccak de 64 bits} & \\ \ text {SHA3-512 } & 2013 & 256 & 512 & \ text {64-bit Keccak sponge} & \\ \ text {SHAKE128} & 2013 & {\ leq} 128 & \ text {any} & \ text {esponja Keccak de 64 bits} \\ \ text {SHAKE256} & 2013 & {\ leq} 256 & \ text {any} & \ text {esponja Keccak de 64 bits} \ end {array} \ end {equation}

  • Em 1993, o NIST publicou FIPS 180 , o padrão Secure Hash, definindo SHA-0 , originalmente denominado apenas SHA para Secure Hash Algorithm, destinado ao uso com o DSA recém-publicado. SHA-0 é uma única função hash de 160 bits voltada para a segurança de colisão de 80 bits (e agora completamente quebrada) , com base no design relativamente novo e rápido do MD4 em 1990.

  • Em 1995, o NIST retirou discretamente o FIPS 180 e o substituiu por FIPS 180-1 definindo SHA-1 , que difere de SHA-0 pela inclusão de um único rotação de bits. Como SHA-0, SHA-1 é uma única função hash de 160 bits voltada para a segurança de colisão de 80 bits (e agora completamente quebrada).

    Nenhuma explicação pública foi dada para a mudança, mas não demorou muito para que Eli Biham tivesse publicado criptoanálise diferencial e a comunidade acadêmica percebesse que os ajustes da NSA nas caixas S do DES na década de 1970, realmente melhorou a segurança (não importa que eles reduziram o tamanho da chave de 128 bits do Lúcifer para 56 bits para DES, destruindo completamente a segurança ao mesmo tempo). No mesmo ano, Dobbertin quebrou o MD4 [1] e, no ano seguinte, danificou gravemente o MD5 [2] . Não muito depois disso, em 1998, Florent Chabaud e Antoine Joux relatou um $ 2 ^ {61} $ -custo ataque de colisão em SHA-0 [3] .

  • Em 2002, o NIST publicou FIPS 180-2 , definindo SHA-2 , uma família de funções hash relacionadas com tamanhos diferentes: SHA- 256, SHA-384 e SHA-512, nomeados por seus tamanhos de saída e visando, respectivamente, resistência à colisão de 112, 128, 192 e 256 bits. O SHA -2 funções continuaram os princípios de design de MD4, MD5, SHA-0 e SHA-1, com mais rodadas e estado maior. Não muito depois disso, em 2004, a equipe de Xiaoyun Wang relatou colisões completas no MD5 e outras funções hash [4] e, em 2005, publicou um $ 2 ^ {69} $ -custo de ataque em SHA-1 [5] , substancialmente mais barato do que genérico. Como muitos dos designs baseados em MD4 foram quebrados agora, todo mundo ficou nervoso com o design, então…

  • Em 2007, o NIST lançou a competição SHA-3 para projetar um sucessor do SHA-2, caso o projeto acabasse sendo ruim. A competição ocorreria durante vários anos.

  • Enquanto isso, em 2008, o NIST atualizou o Secure Hash Standard com FIPS 180-3 , adicionando SHA-224 para a família SHA-2 e, em 2012, o NIST a atualizou novamente com FIPS 180-4 (2012) , adicionando SHA-512/224 e SHA-512/256 , funções hash de 256 bits e 384 bits mais rápidas em máquinas de 64 bits com resistência a ataques de extensão de comprimento que permitem a computação $ H (m \ mathbin \ | m “) $ dado $ H (m) $ e certos $ m” $ sem conhecendo $ m $ .

  • Em 2013, a competição SHA-3 foi concluída com Keccak como o vencedor escolhido do NIST , que publicaram em FIPS 202 . SHA-3 inclui quatro funções hash de tamanho fixo, SHA3-224, SHA3-256, SHA3-384, SHA3-512 , e duas funções hash de saída extensível SHAKE128 e SHAKE256 que atingem até um 128 bits ou 256 nível de segurança de bits se a saída for longa o suficiente.

    O design do SHA-3 é completamente diferente do SHA-2, o que dá a confiança de que os avanços criptanalíticos na linha de designs baseados em MD4 provavelmente não afetarão SHA-3, embora uma década e meia após o banho de sangue do início dos anos 2000 não tenha havido n muito progresso no SHA-2 também. Os parâmetros escolhidos para as funções SHA-3 de tamanho fixo foram acidentalmente sobredimensionados por razões políticas [6] , então funções SHA-3 como SHA3-256 são mais lento do que o necessário, e geralmente você deve apenas usar SHAKE128 ou SHAKE256.

Comentários

  • Quando você digamos ” completamente quebrado “, pelo que entendi, é possível calcular m1 , m2 tal que H ( m1 ) = H ( m2 ). No entanto, ninguém ainda conseguiu, dada uma mensagem fixa M , computar uma mensagem m (diferente de M ) tal que H ( M ) = H ( m ).
  • @MartinBonner Sim, eu ‘ estou falando sobre resistência à colisão aqui, é por isso que as duas palavras imediatamente anteriores e agora completamente quebradas são segurança de colisão. Eu ‘ não estou tratando da resistência de pré-imagem aqui porque o uso seguro de uma função hash resistente à pré-imagem mas não é muito sutil e eu ‘ estou tentando não deixar armadilhas para leitores incautos ; Eu abordo o estado de resistência ‘ s pré-imagem em outro lugar quando ‘ s especificamente perguntado.

Resposta

Diferença entre SHA256 e SHA3

A principal diferença de SHA256 e SHA3 é o design de algoritmo interno .

SHA2 (e SHA1) são construídos usando a estrutura Merkle – Damgård .

O SHA3 por outro lado é construído usando uma Função esponja e pertence à família Keccak.

O nome pode ser enganador ao pensar que SHA3 em comparação com SHA2 é apenas um ” versão ” mais recente do algoritmo. Como disse a SEJPM: ” […] Eles compartilham muito pouco além do nome.” O nome acaba de ser fornecido por NIST e significa ” Algoritmo de hash seguro “, uma família de padrões oficiais.

Embora você possa construir MAC s com SHA256 e SHA3, o SHA3 MAC é mais fácil de usar (consulte o comentário de fgrieu abaixo).

Saída

SHA256 gera um hash de 256 bits.

SHA3 permite saídas de

  • 224 bits
  • 256 bits
  • 384 bits
  • 512 bits

hash, embora as variantes SHA2 (SHA256 é uma dessas variantes) também permita esses comprimentos.

Os algoritmos SHA3 podem ser modificados para ” SHAKE ” algoritmos e permitem uma saída de comprimento arbitrário. Você pode encontrar informações adicionais em esta pergunta feita anteriormente .

Segurança

Hashes que só fazem uso da estrutura Merkle-Damgård e geram sua totalidade l (ou quase cheio) são vulneráveis a ataques de extensão de comprimento .

Os algoritmos SHAKE também são úteis para Preenchimento ideal de criptografia assimétrica .


Você pode ver uma comparação direta aqui (wikipedia) .

Comentários

  • Estritamente falando, ” Hashes que usam Merkle – Damg å A estrutura rd é vulnerável a ataques de extensão de comprimento ” está incorreta. Os contra-exemplos incluem SHA-512/256 e SHA-384, porque eles não exibem seu estado completo. Outro é o SHA-256d, definido como SHA-256d (m) = SHA-256 (SHA-256 (m)), porque oculta o estado do primeiro hash. O que se mantém é que ” Hashes que apenas fazem uso da estrutura Merkle – Damg å rd e produzir seu estado completo (ou quase completo) são vulneráveis a ataques de extensão de comprimento “. Há ‘ s outra diferença entre SHA-2 e SHA-3: o último é mais fácil de usar como um MAC.
  • O que você quer dizer com ” mais fácil de usar ” como um MAC? Mais seguro / rápido / implementação?
  • Podemos construir um MAC com um argumento de segurança de SHA-3 como $ \ text {SHA-3} (K \ | M) $ (para algum comprimento de $ K $ isso depende da variante SHA-3 e deve ser uh, eu não ‘ não sei com certeza); quando não ‘ não temos tal argumento com SHA-2 (mesmo quando a propriedade de extensão de comprimento não se aplica). Consulte a seção 5.1.12 de Funções de esponja criptográfica .

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *