Pergunta

Ao escrever um novo aplicativo média em 2009, o que é a função de digerir mais razoável para uso, em termos de segurança e desempenho? (E como eu posso determinar isso no futuro, quando as condições mudam?)

Quando semelhante < a href = "https://stackoverflow.com/questions/184089/what-is-the-strongest-hashing-algorithm-commonly-available-today"> perguntas foram perguntou SHA1 anteriormente, as respostas incluíram, SHA2, SHA-256, SHA-512, MD5, bcrypt e Blowfish.

Eu percebo que, em grande medida, qualquer um deles poderia trabalhar, se usado com inteligência, mas eu prefiro não rolar um dado e escolher um aleatoriamente. Obrigado.

Foi útil?

Solução

Eu seguiria NIST / FIPS diretrizes :

15 março de 2006: A família SHA-2 de funções hash (isto é, SHA-224, SHA-256, SHA-384 e SHA-512) pode ser usado por agências federais para todos aplicações utilizando Secure Hash algoritmos. As agências federais devem parar de usar SHA-1 para a televisão digital assinaturas, tempo digital de estamparia e outras aplicações que requerem resistência colisão, logo que prático, e deve usar o SHA-2 família de funções hash para estes aplicações depois de 2010. Depois de 2010, As agências federais podem usar SHA-1 única para as seguintes aplicações: autenticação de mensagens com base em hash Códigos (HMACs); chave derivação funções (KDFs); e número aleatório geradores (RNGs). Independentemente do uso, NIST incentiva aplicação e protocolo designers para usar o SHA-2 família de funções hash para todos os novos aplicações e protocolos.

Outras dicas

Você diz "função digerir"; presumivelmente, isso significa que você quer usá-lo para calcular resumos de mensagens de "longas" (e não apenas hashing "mensagens "curtas"" como senhas). Isso significa bcrypt e escolhas semelhantes estão fora; eles são projetados para ser lento para inibir ataques de força bruta em bancos de dados de senha. MD5 é completamente quebrado, e SHA-0 e SHA-1 são muito debilitado para ser boas escolhas. Blowfish é uma cifra de fluxo (embora você pode executá-lo em um modo que produz sumários), por isso não é como uma boa escolha também.

Isso deixa várias famílias de funções hash, incluindo SHA-2, HAVAL, RIPEMD, WHIRLPOOL, e outros. Destes, a família SHA-2 é o mais exaustivamente cryptanalyzed, e por isso seria a minha recomendação para o uso geral. Gostaria de recomendar ou SHA2-256 ou SHA2-512 para aplicações típicas, já que esses dois tamanhos são os mais comuns e susceptível de ser suportados no futuro por SHA-3.

É realmente depende do que você precisa para isso.

Se você está na necessidade de segurança real, onde a capacidade de encontrar uma colisão facilmente poderia comprometer seu sistema, eu usaria algo como SHA-256 ou SHA-512 como eles vêm fortemente recomendado por várias agências.

Se você está na necessidade de algo que é rápido, e pode ser usado para identificar alguma coisa, mas não há requisitos de segurança reais (isto é, um invasor não ser capaz de fazer qualquer coisa desagradável se eles encontraram uma colisão) então eu iria usar algo como MD5.

MD4, MD5 e SHA-1 foram mostrados para ser mais facilmente quebráveis, no sentido de encontrar uma colisão através de um método de ataque de aniversário, do que o esperado. RIPEMD-160 é bem visto, mas a apenas 160 bits de um ataque de aniversário precisa de apenas 2 ^ 80 operações, por isso não vai durar para sempre. Whirlpool tem excelentes características e aparece o mais forte do monte, embora ele não tem o mesmo apoio como SHA-256 ou SHA-512 faz - no sentido de que se houvesse um problema com SHA-256 ou SHA-512 você' d ser mais propensos a descobrir mais sobre ele através de canais apropriados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top