O MD5 (Message-Digest algorithm 5) é uma função de dispersão criptográfica de 128 bits unidirecional desenvolvido pela RSA Data Security, muito utilizado por softwares com protocolo ponto-a-ponto na verificação de integridade de arquivos e logins.
Como o MD5 faz apenas uma passagem sobre os dados, se dois prefixos com o mesmo hash forem construídos, um sufixo comum pode ser adicionado a ambos para tornar uma colisão mais provável. Deste modo é possível que duas strings diferentes produzam o mesmo hash. O que não garante que a partir de uma senha codificada em hash específica consiga-se a senha original, mas permite uma possibilidade de descobrir algumas senhas a partir da comparação de um conjunto grande de hash de senhas através do método de comparação de dicionários.
Salting: Para aumentar a segurança em alguns sistemas, usa-se a tática de adicionar um texto fixo no texto original a ser codificado. Deste modo se o sal for "wiki" e a senha for "1234", a pseudo-senha poderá ser "wiki1234" e assim mesmo que alguém tenha o MD5 de 1234 por ser uma senha comum ele não terá de wiki1234. Porém caso o "sal" seja simples como no exemplo e houver o MD5 de "wiki1234" é possível descobrir o sal e deste modo descodificar as senhas mais comuns. Por este motivo geralmente o "sal" é algo complexo.
Fazem parte da família SHA: SHA-0; SHA-1; SHA-2; SHA-3.
SHA-1
Projetado pela Agencia Nacional de Segurança (NSA) dos Estados Unidos é outro padrão publicado pela NIST. Produz um valor de dispersão de 160 bits (20 bytes) conhecido como resumo da mensagem. Um valor de dispersão SHA-1 é normalmente tratado como um número hexadecimal de 40 dígitos. Publicada em 1995, SHA-1 é muito similar à SHA-0, mas altera a especificação de dispersão do SHA original para corrigir as fraquezas alegadas. No entanto, a NSA não forneceu nenhuma explicação mais aprofundada nem identificou exatamente qual era a falha que foi corrigida. O SHA-1 faz parte de várias aplicações e protocolos de segurança amplamente utilizados, incluindo TLS e SSL. O hashing de SHA-1 também é utilizado em sistemas de controle de revisão distribuídos como Git, para identificar revisões, assim como detectar corrupção ou adulteração de dados.
SHA-2 foi publicada em 2001 pelo NIST como um padrão federal dos Estados Unidos (FIPS). A família SHA-2 de algoritmos está patenteada sob uma licença livre de royalties. Apesar de ataques bem sucedidos sobre o SHA-2 nunca terem sido relatados, ele é algoritmicamente similar ao SHA-1. A família SHA-2 é composta por seis funções hash com resumos (valores de hash) que são de 224, 256, 384 ou 512 bits: SHA224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA512/256.
GABARITO B
A) O Secure Hash Algorithm 1(SHA-1) processa dados de entrada em blocos de 256 e gera 128 bits, sendo um modo de enviar uma mensagem criptografada.
- ERRADO: Blocos de 512 bits; Sumário de 160 bits (20 bytes);
B) O Message Digest algorithm 5 (MD5) tem pontos fracos que elevam a capacidade de encontrar colisões, ou então diferentes mensagens com o mesmo hash, devendo ser substituído sempre que possível e evitado em novos projetos.
C) O Message Digest algorithm 5 (MD5) é uma função hash de 256 bits.
- ERRADO: Sumário de 128 bits.
D) O Salt é uma informação extra que, ao ser inserida na chave de geração do hash, permite que o resultado da função de resumo criptográfico possa retornar à informação inicial.
- ERRADO: Um das características da função hash é ser unidirecional. Ou seja, teoricamente, não é possível obter a mensagem clara a partir do resumo criptográfico (hash) gerado.
E) Essas funções, que têm diversas aplicações, são especialmente úteis na extração de evidências coletadas em um crime digital, a fim de garantir a cadeia de custódia.
- ERRADO: Conforme afirmou Filipe Barros, as funções hash são úteis na preservação.