Às vezes, os downloads de sites têm uma soma de verificação MD5, permitindo que as pessoas confirmem a integridade do arquivo. Ouvi dizer que isso permite que não apenas os arquivos corrompidos sejam identificados instantaneamente antes que causem um problema, mas também que quaisquer alterações maliciosas sejam facilmente detectadas.
Sigo a lógica no que diz respeito à corrupção de arquivos, mas se alguém intencionalmente enviar um arquivo malicioso , poderá gerar uma soma de verificação MD5 correspondente e publicá-la no site de download junto com o arquivo alterado. Isso enganaria qualquer pessoa que baixasse o arquivo a pensar que ele era inalterado.
Como as somas de verificação MD5 podem oferecer proteção contra arquivos deliberadamente alterados, se não há como saber se a própria soma de verificação foi comprometida?
Respostas:
Bem, você ouviu errado, então. As somas de verificação MD5 (ou SHA ou qualquer outra coisa) são fornecidas ( ao lado dos links de downloads, especificamente ) apenas para verificar um download correto. A única coisa que eles pretendem garantir é que você tenha o mesmo arquivo que o servidor. Nada mais nada menos. Se o servidor estiver comprometido, você é SOL. É realmente tão simples assim.
fonte
A solução usada por alguns sistemas de gerenciamento de pacotes como o dpkg é assinar o hash : use o hash como entrada para um dos algoritmos de assinatura de chave pública. Veja http://www.pgpi.org/doc/pgpintro/#p12
Se você tiver a chave pública do signatário, poderá verificar a assinatura, o que prova que o hash não foi modificado. Isso deixa você com o problema de obter a chave pública correta com antecedência, embora se alguém mexer com a distribuição de chaves, também precisará mexer em tudo que você pode verificar, caso contrário, você perceberá que algo estranho está acontecendo.
fonte
Sua suposição está correta. Há uma exceção, porém. Se o servidor que estiver fornecendo o arquivo e a página em que o hash estiver, não for gerenciado pela mesma entidade. Nesse caso, o desenvolvedor de software pode querer dizer "ei, pessoas baixam isso desse local, mas só acreditam se hash = xxxx". (Isso pode ser útil para CDNs como exemplo). Eu acho que essa foi a razão pela qual alguém fez isso em primeiro lugar. Do que outros, apenas pensaram em como seria legal mostrar o hash. Nem mesmo pensando em como é útil, nem o arquivo e o hash estão no mesmo local.
Dito isto, vale a pena o que é. Não assuma demais segurança, como já foi dito por outros. Se e somente se você puder confiar totalmente no hash original, o arquivo será bom. Caso contrário, um invasor com motivação e conhecimento suficientes poderá violar o arquivo e o hash, mesmo que estejam em servidores diferentes e gerenciados por entidades diferentes.
fonte
Às vezes, as somas de verificação são fornecidas com segurança, mas o download não é. Como o MD5 está quebrado , as somas de verificação MD5 de segurança fornecidas são mais fracas que as somas de verificação mais seguras, mas antes que o MD5 fosse quebrado, um MD5 fornecido com segurança (por exemplo, assinado com PGP ou GPG ou Gatekeeper ou buscado por HTTPS) que correspondia ao MD5 de o download foi uma forte evidência de que o download recebido foi o que o servidor estava disponibilizando.
Escrevo sobre a lamentável falta de somas de verificação seguras há anos, aqui .
Os usuários não devem baixar executáveis não confiáveis em redes não confiáveis e executá-los, devido ao risco de ataques MITM. Veja, por exemplo, "Inseguranças em sistemas de atualização automática", de P. Ruissen, R. Vloothuis.
Adendo de 2014: Não, NÃO está errado "que as somas de verificação postadas nas páginas da Web sejam usadas para detectar modificações maliciosas", porque essa é uma função que eles podem desempenhar. Eles ajudam a proteger contra corrupção acidental e, se veiculados por HTTPS ou com uma assinatura verificada (ou melhor ainda, ambos), ajudam a proteger contra corrupção maliciosa! Eu obtive somas de verificação por HTTPS e verifiquei que eles correspondiam a downloads HTTP muitas vezes.
Atualmente, os binários são frequentemente distribuídos com hashes assinados e verificados automaticamente, mas mesmo isso não é perfeitamente seguro .
Trecho do link acima: "O aplicativo KeRanger foi assinado com um certificado válido de desenvolvimento de aplicativos para Mac; portanto, foi possível ignorar a proteção do Gatekeeper da Apple". ... "Desde então, a Apple revogou o certificado abusado e atualizou a assinatura do antivírus XProtect, e o Transmission Project removeu os instaladores mal-intencionados de seu site. A Palo Alto Networks também atualizou a filtragem de URL e a Prevenção de Ameaças para impedir o KeRanger de impactar os sistemas. Análise Técnica
Os dois instaladores de transmissão infectados pelo KeRanger foram assinados com um certificado legítimo emitido pela Apple. O desenvolvedor listado este certificado é uma empresa turca com o ID Z7276PX673, que era diferente do ID do desenvolvedor usado para assinar versões anteriores do instalador da Transmission. Nas informações de assinatura de código, descobrimos que esses instaladores foram gerados e assinados na manhã de 4 de março. "
Adendos de 2016:
@Cornstalks: Re. seu comentário abaixo: Errado. Como observado atualmente no artigo da Wikipedia sobre ataque de colisão ao qual você vincula, "Em 2007, um ataque de colisão com prefixo escolhido foi encontrado contra o MD5" e "o invasor pode escolher dois documentos arbitrariamente diferentes e, em seguida, acrescentar valores calculados diferentes que resultam em todo documentos com um valor de hash igual ". Portanto, mesmo que o MD5 seja fornecido com segurança e um invasor não possa modificá-lo, um invasor ainda PODE usar um ataque de colisão de prefixo escolhido com um prefixo escolhido contendo malware, o que significa que o MD5 NÃO é seguro para fins de criptografia. É por isso que o US-CERT disse que o MD5 "deve ser considerado criptograficamente quebrado e inadequado para uso posterior".
Mais algumas coisas: o CRC32 é uma soma de verificação. MD5, SHA etc. são mais do que somas de verificação; eles pretendem ser hashes seguros. Isso significa que eles devem ser muito resistentes a ataques de colisão. Diferentemente de uma soma de verificação, um hash seguro com comunicação segura protege contra um ataque MITM (Man-in-the-Middle) onde o MITM está entre o servidor e o usuário. Não protege contra um ataque em que o próprio servidor está comprometido. Para se proteger, as pessoas geralmente confiam em algo como PGP, GPG, Gatekeeper etc.
fonte
Esse é o motivo exato pelo qual as somas de verificação publicadas geralmente exibem um aviso dizendo "Isso não pode proteger contra modificações maliciosas do arquivo". Portanto, a resposta curta é "eles não podem fornecer proteção alguma contra um arquivo deliberadamente alterado" (embora, se a página for entregue por HTTPS, o próprio HTTPS proteja contra modificações; se o arquivo não for entregue por HTTPS, mas a soma de verificação é, então isso pode ajudar alguns, mas não é um caso comum). Quem disse a você que as somas de verificação postadas nas páginas da web são usadas para detectar modificações maliciosas estava errado, porque esse não é um papel que elas possam desempenhar; tudo o que eles fazem é ajudar a proteger contra corrupção acidental e corrupção maliciosa preguiçosa (se alguém não se incomodar em interceptar a página, fornecendo a soma de verificação).
Se você deseja se proteger contra modificações deliberadas, é necessário impedir que as pessoas mexam com a soma de verificação ou impossibilitar a geração de uma soma de verificação válida para qualquer outra pessoa. O primeiro pode envolver a apresentação pessoalmente ou similar (para que a soma de verificação em si seja confiável); o último vai para algoritmos de assinatura digital (onde você precisa obter sua chave pública com segurança para o downloader; no TLS, isso é feito confiando diretamente nas autoridades de certificação e solicitando a verificação de todos os outros; também pode ser feito através de uma rede de confiança , mas o ponto é que algo precisa ser transferido com segurança em algum momento e apenas postar algo no seu site não é suficiente).
fonte
Isso é realmente um problema. A exibição de somas de verificação no mesmo site que o arquivo para download é insegura. Uma pessoa que pode alterar o arquivo também pode alterar a soma de verificação. A soma de verificação deve ser mostrada através de um sistema separado completo, mas isso não é viável, porque como informar ao usuário de uma maneira segura onde a soma de verificação pode ser encontrada.
Uma solução possível é o uso de arquivos assinados.
(BTW: MD5 é inseguro em qualquer lugar e não deve mais ser usado.)
fonte
Você está totalmente correto. O objetivo, então, seria tornar seu "se" errado - se sabemos que um hash criptográfico seguro de um arquivo não está comprometido, sabemos que o arquivo também não está comprometido.
Por exemplo, se você postar um hash de um arquivo em seu site e vincular a uma cópia do arquivo em um servidor espelho de terceiros - prática comum na distribuição de software livre à moda antiga - seus usuários poderão ser protegidos contra alguns tipos de ataques. Se o servidor espelho for mal-intencionado ou comprometido, mas seu site estiver correto, o espelho não poderá subverter o arquivo.
Se seu site usa HTTPS ou você assina o hash
gpg
, seu arquivo também pode ser protegido (principalmente) contra invasores de rede, como pontos de acesso Wi-Fi maliciosos, nós de saída Tor desonestos ou NSA.fonte
Você não pode modificar a soma de verificação MD5 sem também modificar o arquivo. Se você baixar o arquivo, faça o download do hash e, em seguida, o cálculo do arquivo não corresponde ao que é fornecido, o hash ou o arquivo está errado ou incompleto.
Se você deseja "vincular" o arquivo a algo externo, como autor, máquina etc., ele precisa ser assinado , usando um processo do tipo PKI com certificados. O autor do arquivo, etc., pode assinar o arquivo com sua chave privada e você pode verificar assinaturas com a chave pública, que deve estar disponível ao público, assinada por uma autoridade de certificação em que você e o autor confiam, e disponível para download, de preferência a partir de Várias localidades.
A modificação do arquivo tornaria a assinatura inválida; portanto, isso também pode ser usado para verificar a integridade do arquivo.
fonte
Hashes indicam se a sua versão do arquivo (o "download") difere da versão do servidor. Eles não oferecem garantia para a autenticidade do arquivo.
Assinaturas digitais (criptografia assimétrica + função hash) podem ser usadas para verificar se o arquivo não foi modificado por alguém que não possui a chave privada correspondente.
O criador do arquivo faz o hash do arquivo e criptografa o hash usando sua chave privada (secreta). Dessa forma, qualquer pessoa com a chave pública (não secreta) correspondente pode verificar se o hash corresponde ao arquivo, mas enquanto o conteúdo do arquivo pode ser modificado, ninguém pode substituir o hash correspondente por outro que corresponda ao arquivo (após a descriptografia do hash usando a chave pública) - a menos que eles consigam forçar brutalmente a chave privada ou obter acesso a ela de alguma forma.
O que impede o Sr. "A.Hacker" de simplesmente modificar o arquivo e assiná-lo com sua própria chave privada?
Para validar o arquivo, você precisa comparar seu hash com o obtido por descriptografar a assinatura digital associada. Se você acha que o arquivo é de "IMAwesome", descriptografa o hash usando a chave dele e o hash não corresponde ao arquivo, pois o hash foi criptografado usando a chave do A.Hacker.
Portanto, as assinaturas digitais permitem detectar alterações acidentais e maliciosas.
Mas como obtemos a chave pública do IMAwesome em primeiro lugar? Como podemos garantir que, quando obtivemos a chave, ela não era realmente a chave do A.Hacker sendo atendida por um servidor comprometido ou por um ataque man-in-the-middle? É aqui que entram as cadeias de certificados e os certificados raiz confiáveis, nenhum dos quais são soluções perfeitamente seguras [1] para o problema, e ambas provavelmente devem ser bem explicadas na Wikipedia e em outras questões sobre SO.
[1] Após a inspeção, os certificados raiz fornecidos com o Microsoft OS no meu PC de trabalho incluem um certificado do governo dos EUA. Qualquer pessoa com acesso à chave privada correspondente tosse NSA tosse pode, portanto, servir de conteúdo para o meu navegador web que passa o "existe um cadeado na barra de endereço" cheque. Quantas pessoas realmente se incomodam em clicar no cadeado e ver quem está usando o par de chaves para "proteger" a conexão?
fonte
Esta é realmente uma boa pergunta. Em geral, sua avaliação da manipulação do MD5 é imediata. Mas acredito que o valor das somas de verificação MD5 nos downloads é superficial, na melhor das hipóteses. Talvez depois de baixar um arquivo, você possa verificar o MD5 que possui em um site, mas eu costumo ver o armazenamento MD5 lado a lado como um "recibo" ou algo que é bom de ter, mas não confiável. Como tal, geralmente nunca me importei com as somas de verificação MD5 dos arquivos baixados, mas posso falar da minha experiência na criação de processos MD5 ad-hoc baseados em servidor.
Basicamente, o que eu fiz quando um cliente deseja varrer um sistema de arquivos para as somas de verificação MD5 é gerá-los em arquivos CSV que mapeiam o nome do arquivo, o caminho, o MD5 - e outras informações diversas - em um formato de dados estruturado que eu ingeri em um banco de dados para comparação e armazenamento.
Portanto, usando o seu exemplo, enquanto uma soma de verificação MD5 pode ficar ao lado de um arquivo em seu próprio arquivo de texto, a soma de verificação MD5 do registro de autoridade seria armazenada em um sistema de banco de dados não conectado. Portanto, se alguém de alguma forma invadisse um compartilhamento de arquivos para manipular dados, esse invasor não teria acesso aos registros de autoridade MD5 ou ao histórico conectado.
Recentemente, descobri um bom software de arquivamento de bibliotecas chamado ACE Audit manager, que basicamente é um aplicativo Java projetado para sentar e assistir a mudanças no sistema de arquivos. Ele registra as alterações via MD5. E opera com uma filosofia semelhante ao meu processo ad-hoc - armazene as somas de verificação em um banco de dados -, mas é preciso um passo adiante, mas a criação de uma soma de verificação MD5 das somas de verificação MD5, conhecida como hash tree ou Merkle tree .
Então, digamos que você tenha 5 arquivos em uma coleção. Esses 5 arquivos no gerenciador de auditoria do ACE receberiam outro - vamos chamar de "pai" - soma de verificação que é um hash gerado a partir das 5 somas de verificação MD5 de cada arquivo. Portanto, se alguém adulterasse apenas um arquivo, o hash do arquivo mudaria e o hash de toda a coleção "pai".
Em geral, a maneira como você precisa observar as somas de verificação MD5 e os hashes de integridade relacionados é que, a menos que não estejam conectados a algum armazenamento não direto para os próprios hashes MD5, eles podem estar corrompidos. E o seu valor como uma ferramenta de integridade de dados a longo prazo é equivalente a um bloqueio barato que é "gratuito" em uma nova peça de bagagem; se você é sério em trancar sua bagagem, receberá uma fechadura que não pode ser aberta em 5 segundos com um clipe de papel.
fonte
Rapidez
Muitas vezes, as pessoas acham muito mais rápido (a) fazer o download de um arquivo grande de uma rede de entrega de conteúdo (CDN) "não confiável" não confiável, site espelho, pares de torrents etc. e também baixar o arquivo curto de soma de verificação correspondente (geralmente SHA256; software antigo MD5) freqüentemente usado de algumas fontes confiáveis. Eles acham insuportavelmente lento baixar (b) o arquivo grande inteiro diretamente de uma fonte confiável.
validação
Frequentemente, essa pessoa descobre que tudo valida - as fontes (confiáveis e não confiáveis) concordam com a mesma soma de verificação e executam shasum (ou md5sum) com qualquer um desses arquivos curtos de soma de verificação (não importa qual, quando todos são idênticos ) indica que o arquivo grande possui uma soma de verificação correspondente.
modificação
Você está certo que, quando Mallory altera maliciosamente um arquivo grande em algum site de download, seria fácil para Mallory também maliciosamente a soma de verificação desse arquivo no mesmo site de download, para que o shasum (ou md5sum) seja executado nesse arquivo de soma de verificação maliciosa parece validar o arquivo grande. Mas esse arquivo de soma de verificação não é o (único) arquivo que o downloader deve usar para validação.
Quando o downloader compara o arquivo de soma de verificação mal-intencionado com os arquivos de soma de verificação baixados de fontes confiáveis, se a soma de verificação original passar por uma única vez, o downloader verá que tudo não é validado e saberá que algo deu errado.
Como o cpast disse anteriormente, se uma boa soma de verificação criptográfica for transmitida por uma conexão confiável, ela poderá fornecer segurança (que é derivada da conexão confiável).
Como o supercat disse anteriormente, os arquivos de soma de verificação de um site não ajudam as pessoas que baixam arquivos grandes do mesmo site e da mesma maneira que baixam os arquivos de soma de verificação - ajudam as pessoas que desejam baixar arquivos de outro site.
As somas de verificação criptográficas são uma parte importante das assinaturas práticas de chave pública (conforme implementadas no GnuPG e em outros softwares compatíveis com o OpenPGP). As assinaturas de chave pública têm algumas vantagens sobre as somas de verificação.
fonte
Bem, você não ouviu totalmente errado . Na verdade, a assinatura digital é usada para detectar alterações maliciosas. Por algumas razões importantes, o hash é uma parte fundamental da assinatura digital, pois apenas o hash é realmente assinado , e não o arquivo original inteiro.
Dito isto, se a fonte não fornecer a assinatura do hash e uma maneira confiável de verificá-lo , então você está certo, não há proteção contra arquivos deliberadamente alterados , mas o hash ainda é útil como soma de verificação contra acidentes acidentais. corrupção .
Aqui está um exemplo do mundo real que pode esclarecer tudo. A seguinte passagem é particularmente significativa sobre o assunto:
fonte