Até agora, discutimos dois tipos de criptografia: simétrica e assimétrica. Nesta próxima aula, vamos apresentar um tipo especial de função amplamente utilizado em computação, especialmente em segurança: hashing.
Hashing, ou função hash, é uma operação que mapeia dados arbitrários em um resultado de tamanho fixo, chamado de valor hash ou checksum. O tamanho do resultado é especificado em bits e é incluído no nome da função de hash. Ao inserir qualquer quantidade de dados em uma função hash, o resultado é sempre do mesmo tamanho. No entanto, é crucial que o resultado seja exclusivo para cada entrada, garantindo que duas entradas diferentes nunca produzam o mesmo resultado.
As funções hash têm inúmeras aplicações na computação, sendo usadas para identificar dados exclusivamente. Você pode ter ouvido o termo "tabela hash" no contexto de engenharia de software, referindo-se a uma estrutura de dados que utiliza hashes para acelerar pesquisas de dados. Além disso, as funções hash são empregadas para identificar conjuntos de dados duplicados em bancos de dados, acelerar pesquisas em tabelas e remover dados duplicados para economizar espaço.
Existem várias propriedades das funções hash, dependendo da aplicação. No entanto, nosso foco será principalmente nas funções hash criptográficas, usadas em autenticação, integridade de mensagens, impressões digitais, detecção de corrupção de dados e assinaturas digitais.
Diferentemente da criptografia, as funções hash criptográficas devem ser unidirecionais. Você pode inserir um texto simples na função hash e obter um resultado ininteligível, mas não pode recuperar o texto simples a partir do valor hash. Além disso, essas funções devem ser determinísticas, rápidas, eficientes, e não devem permitir colisões de hash, onde duas entradas diferentes geram o mesmo resultado.
Vamos ilustrar isso com um exemplo básico, usando uma função hash imaginária. Suponhamos que a cadeia de dados "Hello World" gere o hash E49A00FF. Modificando ligeiramente a entrada para "hello world" (tudo minúsculo), obtemos um hash totalmente diferente, FF1832AE. Um exemplo real é o comando md5sum.
Espero que o conceito de função hash faça sentido para você agora. Na próxima seção, exploraremos alguns exemplos de algoritmos hash e discutiremos os desafios e ataques às funções hash.
0 Comentários