PplWare Mobile

MD5 – Confira a integridade dos ficheiros

                                    
                                

Este artigo tem mais de um ano


Autor: Pedro Pinto


  1. qwerty says:

    Não sabia que o Ubuntu tinha suporte a hash-checking. Interessante! Em Windows uso o programa Hash para analisar e comparar hashes de ficheiros. Está disponível em http://keir.net

    • DoContra says:

      Eheheh… curiosamente, foi em ambientes Linux que conheci primeiros os “hash checks” e, só mais tarde, em Windows. Isto faz-me lembrar os velhos tempos da Usenet em que os mais “desconfiados” usavam assinaturas PGP…

      Mas creio que para além de validarem a *origem* do download, estas chaves permitem igualmente verificar se o mesmo foi 100% conseguido. Ou seja, até se pode ter descarregado um ISO da origem fidedigna mas, se por qualquer motivo o download não foi completamente terminado, o checksum não coincidirá.

      Já me aconteceu isso ao “sacar” um ISO Linux do Darkstar e, embora o tamanho final parecesse “legal”, o checksum não coincidia. Abrindo o ISO verifiquei que havia diversos ficheiros e pastas com tamanho zero. Algo fez abortar o download mas o tamanho final do ISO descarregado era enganosamente semelhante…

    • Curioso says:

      Sugeriste um programa porreiro! Obrigado! Já cá canta!

  2. Sergio says:

    BI

    por exemplo, o numero: 12345678 5

    começando da direita para a esquerda

    5*1 + 5*8 + 5*7 + … = 209

    209 mod 11 = 0

    Este numero terá de ser divisivel por 11. Ou seja não é mais que um caracter de controlo. Para o pessoal da electronica/informatica é uma especie de checksum ou um CRC. Existem vários algoritmos deste tipo. Tudo o que é cartão utiliza um caracter no fim deste genero. Desde cartões multibanco/credito, cartoes magnéticos de tudo e mais alguma coisa etc. Os protocolos de comunicação também tem um conjunto de caracteres no final para validar se a transmissão foi ok

    Para quem não percebeu. Imaginem que uma senhora numa repartição de finanças que está a digitar o numero do BI. Se o software estiver bom feito, obrigará a introdução do ultimo digito. O Software só terá de fazer o calculo e validar se foi introduzido correctamente

    o algoritmo do BI tem uma pequena nuance que muita gente diz que é erro. São apenas uns totós que nada percebem do assunto e gostam de mandar uns bitaites. A nuance é que a divisão por 11 pode produzir numeros entre 0 e 10 inclusive. Coloca-se a questão então de como representar o 10. Optou-se por representa-lo também por 0. Assim na formula de calculo o 0 tanto pode ser um 0 ou 10. Mas, como o algoritmo é apenas um verificador de erros não fará nada mais do que para o caso do 0 fazer as duas validações

    • Saps says:

      Boas!

      Visto que sabes do assunto, sabes dizer também a que corresponde o código à frente do número do cartão de cidadão?

      Obrigado

    • Jose Simoes says:

      “Mas, como o algoritmo é apenas um verificador de erros não fará nada mais do que para o caso do 0 fazer as duas validações”

      Não é muito boa solução. Se o valor do resto não fosse crítico, retirava-se o resto e verificava-se os casos todos…Quem critica essa questão tem razão.

      Há uma solução simples: é não emitir BIs com o número divisível por 11. Não sei se usam esse método mas é a solucção posssível sem modificar muito o sistema instalado. Em minha opinião não vejo porque não usam este método.

      Mais complicado era por um X se o resto for 10 (método muito usado, X=10).

      Ou então terem estudado a lição do princípio e usarem o algoritmo de Verhoeff ou outro suficientemente poderoso.

      • Sergio says:

        colocar outro digito só vinha complicar. O Algoritmo pode ser feito ignorando o primeiro o caracter de controlo e no final fazer a validação. Ou seja entre fazer uma comparação com 0 ou 10 ou atribuir o valor X a 10 é igual computacionalmente, só que o X ou outro caracter só vinha complicar (hoje em dia não)
        Não esquecer que na altura em que foi implementado, algoritmos mais complexos não eram execuiveis para sistemas embebidos. O checksum é muito menos eficaz e, mesmo assim, por vezes não era implementado devido à carga computacional exigida (que não era mais xors ou somas)

  3. Sergio says:

    estes dias estava a implementar um algoritmo para validação de corrupção ficheiros. Ainda equacionei a implementação do MD5, mas optei por algo mais bacoco que era mais que suficiente

  4. David Costa says:

    No MacOSX existe o comando ‘md5’ que imprime no ecrã o hash de um ficheiro.

  5. Cleber P. Picolo says:

    Muito boa a explicação sobre MD5, mas gostaria de alertar que se alguém precisar de segurança nesses hashes é bom pensar em algoritmos com saída maior do que 128 bits.
    Ter uma saída de 128 bits significa que serão necessários 2^64 passos para encontrar uma mensagem m1 diferente de m2 que possua a mesma saida de hash, isso significa insegurança!
    Hoje é recomendado ter uma saída de pelo menos 256 bits. Um algoritmo que pode ajudar é o SHA-2 (256, 384, 512 bits de saída).

    • Pedro Pinto says:

      Bom Alerta!

      @Cleber, queres escrever um artigo sobre SHA ou SHA-2? Se sim, envia e-mail para mim.

      Abraço

    • Jose Simoes says:

      Há 2 coisas diferentes.

      Uma proteger um ficheiro contra um erro acidental (ou comparar ficheiro sem ter de se estar a comparar sempre tudo).

      Nesse caso o MD5 é muito seguro. Antes te cai um meteorito azul em cima da cabeça no dia dos teus anos que o MD5 falhar.

      No entanto os hashs também são usados para assinar electrónicamente documentos legais ou secretos.

      De momento não há nenhum processo conhecido publicamente que consiga falsificar uma assinatura num dado documento, mas já se sabe encontrar um documento no qual se sabe falsificar a assinatura o que é inútil pois é quase certo que esse documento falsificável não nos trás qualquer vantagem, é possível encontrar, mas não criar.

      Por isso recomendo também que se abandone o MD5, mas em questões não legais ainda é muito aceitável. Penso que é o mais usado na distribuição de software.

      E como o seguro morreu de velho o sha-2 é considerado o mais seguro, para os paranoicos não há nada como o sha-512 (que é um sha-2). Desde este ano que existe uma migração quase universal para o sha2.

      Os ainda mais paranoicos usam o sha-1, Pode não ser tão bom mas com o é mais antigo já foi mais testado

      Os ainda mais paranoicos sabem que o NSI já quebrou estes algoritmos todos.

      (NOTA: não há nenhuma prova matemática que prove que um qualquer hash não possa ser quebrado com algoritmo muito simples ainda não descoberto, e muitos matemáticos pensam que isso é impossível de provar)

      José Simões

      • Pedro Tarrinho says:

        Concordo com o que foi descrito, mas é importante que se se avise que:

        – o MD5 já não é considerado seguro e podem ver em :

        “http://en.wikipedia.org/wiki/MD5” – nas Collision vulnerabilities
        e em
        “http://www.schneier.com/blog/archives/2008/12/forging_ssl_cer.html”

        Usem no mínimo SHA1 ou então SHA256.

        O MD5 era(ou ainda é) utilizado no Flickr e como podem ver neste pdf é possível “hackar” o sistema porque o mesmo usa essa algoritmo de hash.

        “http://netifera.com/research/flickr_api_signature_forgery.pdf”

  6. S-K says:

    Excelente artigo.

    Só uma dica (para os mais paranóicos) se fizerem o download de uma iso de Linux num “mirror”, comparem sempre com o hash do site “original”.

    Utilizem sempre repositórios de confiança, que disponibilizem uma chave pública, numa página web autenticada.

    🙂

  7. Hawk says:

    Um programa muito que uso para verificar hash’s no Windows é o HashTab – http://beeblebrox.org .

    Ele cria uma aba/tab nas propriedades de quaisquer arquivos do sistema, onde você pode escolher várias opções de hash para se verificar.

  8. dethos says:

    Bom artigo, muito elucidativo.

  9. Hélder Ricardo Pereira says:

    E alguém sabe dizer como se abre e se queima em CD um programa recebido em tar.md5

Deixe um comentário

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.