Uma função hash mapeia dados de qualquer tamanho para um valor de tamanho fixo. A mesma entrada produz sempre a mesma saída. Altere um único bit e a saída muda completamente. Esta propriedade torna os hashes úteis para verificações de integridade. Descarregue um ficheiro e compare o seu hash com o valor publicado. Se coincidirem, o ficheiro chegou intacto. Caso contrário, algo o alterou.
As funções hash são unidirecionais. Não é possível retroceder de um hash para os dados originais. Isto torna-as úteis para o armazenamento de senhas. Os sistemas armazenam o hash de uma palavra-passe, não a palavra-passe em si. Quando faz login, o sistema calcula o hash do que introduziu e compara-o com o hash armazenado. Se a base de dados vazar, o atacante obtém os hashes, não as palavras-passe. As palavras-passe fracas ainda podem ser quebradas com tabelas rainbow ou força bruta, e é por isso que o uso de salt é importante. Um salt é um dado aleatório adicionado a cada palavra-passe antes do cálculo do hash, de modo a que palavras-passe idênticas produzam hashes diferentes. SHA-256 e SHA-3 são hashes criptográficos comuns. MD5 e SHA-1 são vulneráveis e não devem ser utilizados para segurança. As funções hash são também a base das blockchains, das assinaturas digitais e da desduplicação de ficheiros.
Propriedades da função hash
- Determinístico — mesma entrada, mesma saída
- Rápido — computacionalmente ágil
- Resistente à pré-imagem — não pode ser revertido
- Resistente a colisões — difícil encontrar duas entradas com o mesmo hash.
Um hash é uma impressão digital, não uma encriptação. Comprova a integridade dos dados. Não oculta informação.
Comments
No comments yet. Be the first to share a thought.
Leave a comment