Este Q & A https://security.stackexchange.com/questions/33123/hotp-with-as-hmac-hashing-algoritme-a-hash-from-the-sha-2-family

diz que a segurança do HMAC-SHA1 não depende da resistência a colisões? Eles estão dizendo especificamente em relação ao HOTP ou para HMAC-SHA1 para qualquer uso?

Se HMAC-SHA1 é usado para verificar a integridade de um documento e você pode encontrar uma colisão, você pode fazer alterações no documento, certo?

http://tools.ietf.org/html/rfc2104#section-6

Até mesmo o RFC diz que resistência a colisões é relevante

A segurança do mecanismo de autenticação de mensagem apresentado aqui depende das propriedades criptográficas da função hash H: a resistência à descoberta de colisão (limitada ao caso em que o valor inicial é secreto e aleatório, e onde a saída da função não está explicitamente disponível para o invasor), e a propriedade de autenticação de mensagem da função de compressão de H quando aplicada a blocos únicos

O que estou perdendo aqui?

Comentários

  • Parece haver uma confusão na questão: HMAC-SHA1 não é usado para assinar um documento (pelo menos, não normalmente; e assumi-lo era, a suposição padrão do HMAC de que sua entrada de chave é secreta não pode ' se manter desde o dia O procedimento de verificação de assinatura é público). Acho essa resposta muito boa.
  • @fgrieu – Acho que cometi um erro na terminologia – quando escrevi assinatura, deveria ter realmente escrito gerando um resumo de autenticação de mensagem para proteger a integridade. Em caso de colisões, você pode alterar a mensagem e preservar o mesmo MAC, então é um problema, certo?
  • Devemos fechar isso como uma duplicata de O HMAC-MD5 é considerado seguro para autenticar dados criptografados? ? Embora esta pergunta seja sobre SHA1, não MD5, a resposta é quase a mesma.
  • Eu ' tenho certeza se tenho um ataque de pré-imagem contra SHA -1 isso explode.

Resposta

Na primeira seção desta resposta, assumirei que por meio de melhor hardware ou / e melhorias de algoritmo, tornou-se rotineiramente viável exibir uma colisão para SHA-1 por um método semelhante ao de Xiaoyun Wang, Yiqun Lisa Yin e Hongbo Yu ” s ataque ou ataque de Marc Stevens “. Isso foi alcançado publicamente no início de 2017, e tinha sido claramente viável (o esforço representa meras horas de esforço de hash gasto na mineração de bitcoin ; mas o hardware usado para isso não pode ” ser redefinido para o ataque a SHA-1).

Ao contrário do que é considerado na pergunta, isso não permitiria que um invasor não soubesse a chave HMAC-SHA-1 para fazer uma alteração não detectada em um documento; Isso inclui se o invasor for capaz de preparar o documento que deseja alterar posteriormente.

Uma explicação é que os ataques de colisão em SHA-1 que estamos considerando requerem conhecimento do estado de a variável de encadeamento SHA-1, e o invasor do HMAC que não conhece a chave é privado desse conhecimento pela entrada da chave em ambas as extremidades da iteração de rodadas em que a mensagem está no HMAC. Uma quebra muito mais profunda da função de arredondamento do SHA-1 seria necessária para quebrar o HMAC. Não por coincidência, M. Bellare “s Novas provas para NMAC e HMAC: segurança sem resistência à colisão mostra que a segurança do HMAC se mantém assumindo apenas propriedades mais fracas em sua função circular do que o necessário para a resistência à colisão do hash correspondente.

O que seria possível é para um atacante conhecendo a chave HMAC para preparar um documento que ele / ela deseja alterar posteriormente, que pode ser alterado sem alterar o MAC. Mas, como o invasor está segurando a chave HMAC, isso não é considerado uma interrupção do HMAC.


Um comentário pergunta quando o SHA-1 não deve ser usado?

É aconselhável eliminar rapidamente o SHA-1 em aplicativos que exigem resistência à colisão (como uma imagem: afaste-se rapidamente, ao sair um edifício cujo alarme de incêndio toca quando não há fumaça). Isso inclui hash para verificação de integridade ou assinatura digital de documentos preparados por terceiros, mesmo em parte (ou seja, a maioria dos documentos). Se continuar a usar o SHA-1 traz grandes benefícios operacionais, pode-se abrir uma exceção com segurança inserindo algo imprevisível para os adversários antes de qualquer parte da mensagem que um adversário possa influenciar.Por exemplo, ao impor um número de série de certificado imprevisível no momento da solicitação de um certificado, uma autoridade de certificação ainda pode emitir certificados com segurança usando SHA-1 para sua assinatura interna.

Conforme explicado na primeira seção deste resposta, desde que a chave do HMAC-SHA-1 seja considerada secreta, não há indicação de que o HMAC-SHA-1 seja inseguro porque usa SHA-1. Se a chave for considerada pública, ou se seu vazamento for considerado uma possibilidade operacional onde ainda se deseja resistência à colisão para o HMAC, incluindo para mensagem preparada após a divulgação da chave, aplicam-se as precauções discutidas no parágrafo anterior.

Comentários

  • Então, quando SHA1 não deve ser usado? ou seja, a descoberta do problema em SHA1 impede seu uso onde?
  • É ' geralmente aconselhado a se afastar (" caminhar ", não " executar ") de SHA-1. Dito isso, a construção específica do HMAC-SHA1 ainda é considerada segura para uso (assumindo uma chave secreta) devido à prova de segurança do HMAC que não depende da resistência à colisão do PRF subjacente. Em caso de dúvida, vá para SHA-2.
  • @StephenTouset – sim, entendi. No entanto, existe algum uso do SHA-1 do qual você deveria fugir em vez de se afastar ou ir embora.
  • Não, caso contrário, esse seria o conselho. A resistência à colisão SHA-1 ' s está quebrada apenas em um sentido teórico agora. Nenhuma colisão conhecida ainda foi encontrada, embora o melhor ataque atual esteja no limite da viabilidade.

Resposta

Quando as pessoas dizem que HMAC-MD5 ou HMAC-SHA1 ainda são seguros, isso significa que eles ainda estão seguros como PRF e MAC.

A suposição principal aqui é que a chave é desconhecida para o invasor.

$$ \ mathrm {HMAC} = \ mathrm {hash} (k_2 | \ mathrm {hash} (k_1 | m)) $$

  • Potencial ataque 1: Encontre uma colisão universal, que é válida para muitas chaves:

    Usando HMAC a mensagem não é hash diretamente, mas tem $ k_1 $ como prefixo. Isso significa que o invasor não ” t saber o estado interno do hash quando a mensagem começa. Encontrar uma mensagem que colide para a maioria das opções é $ k_1 $ é extremamente difícil 1 .

  • Ataque potencial 2: Recupere a chave

    Para que isso funcione, a função hash precisa de interrupções muito maiores do que meras colisões. É semelhante a um primeiro ataque de pré-imagem, uma propriedade que ainda está forte para MD5 e SHA1.

Por outro lado, se você usou uma chave conhecida pelo invasor e o invasor tem a capacidade de encontrar colisões no hash subjacente (para IVs arbitrários), em colisões de HMAC. Portanto, se precisar de segurança em um cenário sem chave, use um hash resistente à colisão, como SHA2 e considere não usar HMAC.


1 Suspeito que não possível (para tamanhos de mensagens realistas) mesmo para invasores sem limites computacionais, mas provar isso é difícil.

Comentários

  • Então, quando SHA1 não deve ser usado? ou seja, a descoberta do problema no SHA1 impede que seja usado onde?
  • @ user93353 Como eu disse, a segurança do HMAC-SHA1 depende da chave desconhecida. Se não houver chave ou se ela for conhecida pelo invasor , as colisões no SHA1 se tornam uma ameaça. Mas o SHA1 raramente, ou nunca, deve ser usado em novos designs, uma vez que existem alternativas melhores disponíveis.
  • Se a chave for conhecida pelo invasor, até mesmo o SHA2 irá ser um problema, certo?
  • @ user93353 Depende do que você deseja alcançar. Claro, nenhum hash sem chave é um MAC.
  • @CodesInChaos – você diz que HMAC-SHA1 é um problema apenas se a chave for conhecida. Mas se a chave for conhecido, isso será um problema para qualquer operação HMAC-hash, certo?

Deixe uma resposta

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