Mostrando postagens com marcador integridade. Mostrar todas as postagens
Mostrando postagens com marcador integridade. Mostrar todas as postagens

domingo, 9 de dezembro de 2012

Falha de EOL em verificação de hash

Quem utiliza o sistema Linux no dia a dia e costuma verificar a integridade de arquivos através de comparações com hash, seja MD5, SHA etc. em suas respectivas ferramentas para linha de comando, provavelmente já presenciou falhas em determinadas verificações.

Os sistemas operacionais não adotam a mesma convenção para os caracteres que marcam o fim-de-linha (EOL) em arquivos de texto puro. Principalmente entre os sistemas DOS/Windows e Unix/Linux.  Como o arquivo de hash é um arquivo no formato texto, está sujeito a esta diferença em sua estrutura, caso ele tenha sido criado em um sistema ou no outro.

Ao ler um arquivo de hash, criado em um sistema Windows, ou seja, com o fim-de-linha adotado no sistema Windows, em uma ferramenta de linha de comando no Linux, haverá falha na busca do arquivo principal, o qual se pretende verificar a integridade. Algo como apresentado no exemplo a seguir:

$ sha1sum -c FreeOTFE_5_21.sha1

: Arquivo ou diretório não encontrado
: FALHOU na abertura ou na leitura
sha1sum: WARNING: 1 listed file could not be read



A solução, no sistema Linux, é converter o arquivo de hash para o formato do Unix. O comando 'dos2unix' serve para isso:

$ dos2unix FreeOTFE_5_21.sha1

dos2unix: converting file FreeOTFE_5_21.sha1 to Unix format ...



Feito isso, a verificação da integridade provavelmente não terá mais esta falha na busca do arquivo principal:

$ sha1sum -c FreeOTFE_5_21.sha1

FreeOTFE_5_21.exe: SUCESSO



Claro que o erro da integridade ainda poderá ocorrer, visto que neste caso é o arquivo principal que estará corrompido. Importante salientar que esta não é a única falha que pode ocorrer na interpretação do arquivo de hash. Algumas ferramentas de geração de hash produzem arquivos de hash com informações adicionais incluídas junto com a sequência hash, ou também em posições invertidas entre a sequência e o caminho pro arquivo principal. Tudo isso pode gerar falha na busca do arquivo. Casos assim deverão ser tratados particularmente.

Leia mais sobre EOL em http://dan-scientia.blogspot.com.br/2009/07/historia-do-fim-de-linha.html

quarta-feira, 6 de janeiro de 2010

Verifique a integridade dos seus downloads

Durante um processo de cópia de qualquer arquivo no computador é possível acontecer uma falha na comunicação da origem para o destino. Muitas vezes o software que está executando o processo de cópia não percebe e retorna para o sistema o sucesso da cópia. A cópia do arquivo aparenta estar normal porém ao realizar sua execução acontece um erro.

Este tipo de problema é bastante comum de acontecer em downloads de arquivos pela Internet. Não é sempre mas pode ocorrer de um único byte vir incorreto ou inexistente no arquivo. E pode ser um transtorno se este arquivo for por exemplo uma imagem de CD ou DVD, onde o erro só vai ser percebido depois de gravá-la em uma mídia e então executar o software contido.

Para possibilitar uma verificação da cópia do arquivo e assim evitar que um usuário fique com um arquivo corrompido, muitos administradores de repositórios de softwares disponibilizam um arquivo ou uma página no site contendo o valor hash do arquivo. Desta forma o usuário pode confirmar a integridade do arquivo.

Um hash é uma sequência de bits gerada por um algoritmo de dispersão formando uma sequência de caracteres alfanuméricos, geralmente na base hexadecimal de 0 a 9 e de A a F, representando 1/2 byte cada. Basicamente a sequência hash é a transformação de uma grande quantidade de dados em uma pequena quantidade de dados.

Esta seqüencia busca identificar um arquivo unicamente. É um método para transformar dados de tal forma que o resultado seja praticamente exclusivo. Mas como a seqüencia do hash é limitada, muitas vezes não passando de 512 bits, existem colisões ocasionando sequências iguais para dados diferentes.

Não é possível a partir de um valor de hash retornar à informação original, esta transformação então é somente unidirecional.

Os algoritmos de hash mais usados para este propósito são: MD5, com 128 bits; SHA1, com 160 bits e o SHA256, com 256 bits. Os hashes MD5 são representados por uma sequência de 32 caracteres hexadecimais, os hashes SHA1 e o SHA256 são representados por sequências de 40 e 64 caracteres, respectivamente.

Quando localizar um arquivo para download em um site, procure se informar se existe disponível o valor hash do arquivo. Este valor pode vir dentro de um outro arquivo em formato texto, comumente com nomes semelhantes à checksum, md5sum, sha1sum, ou pode apenas estar incluído no conteúdo da página de download do arquivo.

Para o sistema Windows é necessário instalar o utilitário que irá verificar a integridade, por exemplo para hash MD5 existe o software chamado MD5summer (http://www.md5summer.org/). Existem outros utilitários que funcionam com os algoritmos mais comuns de hash, uma pesquisada pelo Google vai ser suficiente para encontrá-los. Já o sistema Linux costuma trazer na instalação padrão estes utilitários. A execução do comando "md5sum " retorna a sequência com o valor hash MD5 do arquivo informado. Outros comando são o sha1sum e o sha256sum, para os hashes SHA.

Basta comparar o valor retornado com o fornecido no site. Se forem idênticos então o arquivo está OK. Uma forma automática é executar o utilitário informando o arquivo que contém a sequência hash, desta forma o retorno será a resposta OK ou não.

Outro proveito destes utilitários é para o controle da integridade de suas cópias particulares. Cópias de segurança, transferências de arquivos pela rede ou a utilização de uma unidade de armazenamento externa para transportar os arquivos etc. O procedimento é gerar os valores hashes antes de realizar a cópia e ao final verificar os arquivos copiados.

A grande maioria dos repositórios de softwares para o sistema Linux adotam este controle de integridade dos arquivos.