O que é hash criptográfico? [um guia para iniciantes]

Publicados: 2019-08-07
Índice
  • O que é um hash criptográfico?

  • Hash criptográfico explicado

  • Propriedades da função de hash criptográfico

  • Algoritmos de hash comuns

  • Hashing em criptomoedas

  • Funções de hash no armazenamento de senha

  • Embrulhar

  • Provavelmente, no tempo em que você e seus amigos criaram um código para passar mensagens uns aos outros que ninguém mais conseguia entender. No mínimo você conhecia pessoas assim.

    Alguns caras assim levaram o jogo a sério e o transformaram em uma carreira.

    Outros se tornaram mágicos - os chamados mentalistas. Com a ajuda de códigos, eles usam seus “poderes mentais” para adivinhar cartas, números, etc.

    Esse jogo infantil simples tornou-se o que é conhecido como criptografia, hashing e todas as outras funções, que produzem código aparentemente ilegível a partir de uma determinada entrada.

    Hoje vamos mergulhar no mundo mágico da codificação para ver o que é um hash criptográfico , seu funcionamento interno e suas aplicações.

    Então, sem mais delongas, vamos começar.

    O que é um hash criptográfico?

    A função hash criptográfica é um tipo de função hash usada para fins de segurança . Possui várias propriedades que o distinguem do não criptográfico. Vamos decompô-lo passo a passo.

    O que é um Hash?

    Hashing é o método usado para compactar dados.

    Ainda assim, não é a compressão típica que todo mundo conhece, como um arquivo .zip ou .rar.

    O hash cria um código para os dados usando um algoritmo de hash . O código representa uma sequência de caracteres, que atuam como uma “impressão digital” desse arquivo.

    Todos nós sabemos que as impressões digitais são pequenas, mas contêm uma grande quantidade de dados. Você sabe, coisas como nossos nomes, rostos, endereços e outras informações confidenciais. O hash é semelhante - ele pega um pedaço de dados de tamanho arbitrário e o transforma em uma sequência relativamente pequena de caracteres.

    Não importa o tamanho da entrada, você sempre obtém uma saída de comprimento fixo ao fazer o hash.

    Exemplos de função hash

    Então, aqui está um exemplo de como isso acontece. Para esta demonstração, usaremos o algoritmo Secure Hashing de 256 bits , conhecido como SHA-256. É um dos algoritmos de hash mais comuns e, como se constatou, também é usado pelo Bitcoin .

    Mensagem Hash da mensagem
    Oi 3639EFCD08ABB273B1619E82E78C29A7DF02C1051B1820E99FC395DCAA3326B8
    Bem-vindo ao TechJury B7FFC27E0A6F559E1F63A927B6132A42124CC790F9EFD0FCFF4C3B653AA0DF4B
    (O conteúdo de todo este artigo) 9247D0E6C7A2A45976DCC3D2393A52658B6DDFC846d8AF5743400EA12FB9DE74

    Veja, embora as mensagens tenham comprimentos diferentes, todas elas recebem um hash de 64 caracteres. Isso também é conhecido como valor hash ou resumo .

    Você obterá o mesmo resultado de comprimento fixo se hash um livro ou até mesmo o conteúdo de uma biblioteca inteira. Você também pode fazer isso com outros tipos de dados - vídeos, fotos, etc.

    O que é ótimo sobre os hashes é que você obterá um valor de hash totalmente diferente, mesmo se fizer as menores alterações . É conhecido como efeito avalanche .

    Então, se sua namorada / namorado apagar todas as fotos que você tem do seu ex, por exemplo, o hash da pasta vai mudar. Dessa forma, você saberá que algo está errado sem verificar cada imagem.

    Vamos ver mais um exemplo de como uma função hash é útil na prática. Para o próximo exemplo, fiz hash de nosso “ O que é uma VPN? ”Artigo, e tem a seguinte aparência:

    Depois, apaguei uma palavra do artigo e fiz um hash novamente. Aqui está o resultado:

    A remoção de uma única palavra mudou completamente os valores de hash . Isso é especialmente útil se você deseja verificar se alguma alteração foi feita em um arquivo.

    É ainda mais útil quando você está lidando com grandes quantidades de informações. Por exemplo, um blockchain de criptomoeda que armazena milhares de transações diariamente.

    Agora, vamos mergulhar mais fundo e ver o que o hash criptográfico realmente significa.

    Hash criptográfico explicado

    Quando você precisa de segurança e privacidade, o hash criptográfico entra em ação. A desvantagem do hash criptográfico é que ele geralmente é mais lento do que os outros tipos de hashes . Se você precisa fazer hash rapidamente e não precisa de segurança de alto nível - hash não criptográfico é melhor. Por exemplo - se você estiver criando um índice de alguns dados não confidenciais.

    A principal diferença entre hashing criptográfico e não criptográfico é que o último é extremamente difícil de quebrar. Observe que não é impossível. Ainda assim, o hash criptográfico torna o cracking de um hash quase impossível.

    Para que uma função hash seja um hash criptográfico, ela deve ter várias propriedades.

    Propriedades da função de hash criptográfico

    Se você quiser usar hashing para fins criptográficos, há vários requisitos que a função hash deve atender para ser considerada segura.

    Propriedade # 1 - Velocidade

    Se você gosta de palavras bonitas - as funções de hash criptográficas devem ser computacionalmente eficientes. Isso significa que a função de hashing deve ser capaz de produzir um hash em uma fração de segundo .

    Fonte

    Propriedade nº 2 - o Efeito Avalanche

    O efeito avalanche significa que mesmo uma pequena alteração na mensagem resultará em uma grande alteração no valor do hash .

    Mensagem Hash da mensagem
    Bem-vindo ao TechJury B7FFC27E0A6F559E1F63A927B6132A42124CC790F9EFD0FCFF4C3B653AA0DF4B
    Bem-vindo ao Techjury 66251AE6324F670BF988465E49B9CEAA2F8C4E72E1D61336D3794301116C092B

    Usar um “j” minúsculo na segunda mensagem altera totalmente o código hash .

    Este é um exemplo simples de função hash , mas você entendeu. É muito prático e pode mostrar rapidamente se algum dado foi alterado.

    Propriedade nº 3 - a função de hash criptográfico deve ser determinística

    Isso significa que não importa quantas vezes você use uma função hash para a mesma entrada , você sempre obterá a mesma saída . Isso é óbvio, pois se você obtiver hashes aleatórios para a mesma mensagem, todo o processo não terá sentido.

    Propriedade nº 4 - Resistência pré-imagem (função unidirecional)

    Isso significa que é realmente difícil obter a entrada por meio da saída.

    Em palavras simples, você não pode reverter a função hash criptográfica para obter os dados. Ainda assim, isso não significa que seja impossível ver a mensagem.

    Aqui está o acordo.

    Existem dois métodos para localizar a mensagem em hash.

    1. Para comparar o hash a uma lista existente de hashes, como esta: Dehash.me. Normalmente, os cibercriminosos têm seus próprios bancos de dados de mensagens traduzidas (eliminadas).
    2. Para executar um ataque de força bruta.

    Para quebrar um hash com força bruta, você precisa escolher uma mensagem, fazer o hash e compará-la com o hash que você tem. Melhor cenário - você consegue desde a primeira tentativa. Ainda assim, as chances de isso acontecer são extremamente pequenas.

    Pior cenário - você o encontrou na última tentativa. Isso significa que você precisa fazer o hash de todas as mensagens possíveis e compará-las com a que você tem. O número é diferente, dependendo do algoritmo de hash .

    Por exemplo, vamos usar SHA-256. Nesse caso, você teria que encontrar 2 256 -1 valores de hash primeiro. É seguro dizer que não pode ser feito em várias vidas e deixar por isso mesmo.

    Agora.

    A propriedade de resistência à pré-imagem do hash criptográfico desempenha um papel significativo no debate entre hash e criptografia .

    Veja - você pode descriptografar uma mensagem criptografada, mas não pode fazer o mesmo para um hash criptográfico .

    Você pode pensar no hash como um smoothie. Você não pode extrair a mensagem de um hash da mesma forma que não pode extrair a banana e o leite de um smoothie.

    A criptografia, por outro lado, é mais como um cofre. Ele protege seus objetos de valor, mas sempre há uma chave que o abre.

    Propriedade # 5 - Resistência à colisão

    Isso significa que duas mensagens diferentes não devem ser capazes de produzir o mesmo valor de hash . Do ponto de vista matemático, isso é impossível de qualquer maneira.

    Você já sabe que os valores de hash têm um comprimento fixo. Isso significa que existem combinações de saída limitadas . As entradas, por outro lado, são um número infinito . Portanto, em teoria, há uma chance de que duas mensagens diferentes possam produzir os mesmos hashes .

    Ainda assim, a função hash na criptografia torna as chances de uma colisão de hash praticamente desprezíveis.

    Olhar.

    Todas essas propriedades garantem a segurança e a usabilidade de um hash criptográfico . Portanto, é hora de conhecer as diferentes funções hash criptográficas.

    Algoritmos de hash comuns

    Existem diferentes classes (famílias) de algoritmos de hash. A principal diferença entre eles é o valor hash que cada um produz e suas propriedades de segurança.

    Aqui estão os mais comumente usados:

    Algoritmo Message Digest (MD)

    MD5 era a função de hash escolhida por muitas empresas, mas foi quebrado em 2004. Um algoritmo de hash é considerado quebrado quando houve uma colisão bem-sucedida ou um ataque de pré-imagem contra ele. Ainda assim, muitos sites continuam a usar a função de hashing MD5 para verificação de arquivos.

    Por exemplo, ao baixar um arquivo, você pode comparar seu hash com o do site para ter certeza de que ninguém o adulterou.

    A família MD consiste em MD2, MD3, MD4, MD5 (todos eles estão corrompidos) e MD6 (que não é tão popular).

    Aqui está o exemplo de função hash de MD5.

    Mensagem Hash MD5
    Techjury FECE553512085FF6B5E213C8EFF9F30D

    MD5 produz um valor hash de 128 bits com comprimento de 32 caracteres.

    Por causa de suas falhas, o algoritmo Message Digest não é mais considerado uma função hash criptográfica .

    Algoritmo de Hashing Seguro (SHA)

    A maior família de funções hash criptográficas consiste em quatro classes:

    • SHA-0
    • SHA-1
    • SHA-2
    • SHA-3

    O SHA-0 tinha muitas falhas e não se tornou amplamente utilizado. O SHA-1 tentou consertá-los, mas quebrou em 2005.

    O SHA-2 e suas subclasses são comumente usados ​​hoje até que o SHA-3 se prove uma função ainda mais segura.

    A família SHA-2 consiste em quatro membros - SHA-224, SHA-256, SHA-384 e SHA-512, que diferem no número de bits de seus valores de hash . Até agora, não houve um ataque bem-sucedido ao algoritmo de hash criptográfico SHA-2 .

    Aqui estão alguns exemplos de funções hash usando a classe SHA-2.

    Mensagem Techjury
    SHA-256 FF3E4985DAFF59392EAE60DEC66EC823CAF9575B81903729053A999B9B2C708E
    SHA-384 77653BC173A561E3378373F64E447FB3AEDC691F387BB599656E6AB63B9C5D34

    523C298C59C94802A478F8C3F36E9CDF

    SHA-512 C975F1074E969FAEA76C15084881F7694DE4D542F9E4DF934AFA52470952A362

    25F7ED63D023AB05746DDAFDFED96D57A7AF5344EB91589A09952D102DD3AB04

    RACE Integrity Primitives Evaluation Message Digest (RIPEMD)

    Inicialmente, o RIPEMD foi criado para um projeto da União Europeia denominado RIPE. Existem cinco funções hash na família RIPEMD.

    • RIPEMD
    • RIPEMD-128
    • RIPEMD-160
    • RIPEMD-256
    • RIPEMD-320

    Em 2004, houve uma colisão na função hash RIPEMD original . É por isso que não está mais em uso. Atualmente, RIPEMD-160 é o mais comum. Veja como fica:

    Mensagem Resumo RIPEMD-160
    Techjury ca25dc64fb00c8becb21eddf50805fbc106eed00

    Hidromassagem

    Este nome de função de hash criptográfico não tem nada a ver com o fabricante dos eletrodomésticos. A galáxia Whirlpool inspirou o nome do algoritmo.

    O que é interessante sobre o algoritmo de hashing Whirlpool é que um de seus criadores é Vincent Rijmen, o co-criador do AES, Advanced Encryption Standard .

    Whirlpool é uma função hash de 512 bits e seu resumo representa uma string com 128 caracteres.

    Este é um exemplo da função hash criptográfica .

    Mensagem Whirlpool hash
    Techjury 2E9A775FA4450549FCB6F6CDC4761865715D46FF8003E93CC614EF7C9E3D42A93

    D5A663B4E48674C5155417D686D81ABDBC12FB32A1B650C5E44F24E80156E7D

    Esses são os algoritmos de hash mais comuns hoje.

    Então, agora que você conhece os fundamentos do hashing, vamos ver suas aplicações na vida real.

    Hashing em criptomoedas

    Já explicamos o que é Bitcoin e como funciona o blockchain , então vamos continuar com o hash.

    A função de hash criptográfico é essencial para criptomoedas, pois garante um dos recursos mais importantes do blockchain - a imutabilidade .

    Como os blockchains de criptomoedas lidam com um grande número de transações, eles usam hashing. Essa é uma abordagem muito mais prática e segura do que manter todos os registros de todas as transações no razão.

    No caso do Bitcoin, os mineiros executam uma série de funções SHA-256 para criar o hash de um bloco. Em seguida, o último recebe um carimbo de data / hora. Uma vez que os nós alcançam o consenso, o bloco é adicionado ao blockchain. O bloco não só tem seu próprio hash , mas também contém o hash do anterior , encadeando todos eles juntos.

    Por causa do efeito de avalanche, quaisquer tentativas de adulteração de um bloco não são possíveis. Caso alguém tente alterar uma transação em um bloco, deverá alterar também todas as consecutivas. Tal operação exigiria tanto poder de computação e tempo, que é praticamente impossível .

    Isso torna o hash um recurso crucial na segurança do blockchain.

    Agora.

    Diferentes criptomoedas usam diferentes algoritmos de hash em seu blockchain.

    Bitcoin, por exemplo, usa SHA-256 para sua prova de trabalho. Ainda assim, o Bitcoin usa dois algoritmos de hash para gerar um endereço público (chave) - SHA-256 e RIPEMD-160. Isso foi feito por Satoshi Nakamoto para fornecer melhor proteção para as chaves públicas e diminuir as chances de uma colisão.

    O Ethereum, por outro lado, usa o algoritmo hash Keccak-256 , que é a base do SHA-3.

    No momento em que este artigo foi escrito, não houve um ataque bem-sucedido a nenhum desses algoritmos.

    Mesmo que você não esteja no mercado de criptomoedas, você ainda faz uso das funções de hash todos os dias.

    Como assim?

    Funções de hash no armazenamento de senha

    Existem quatro técnicas principais que as empresas usam para armazenar nossas senhas - em texto simples, com criptografia e com uma função hash . O último método é uma combinação de duas ou mais dessas técnicas.

    Vamos ver quais são as diferenças.

    Armazenamento de senhas em texto simples - um grande problema

    Armazenar senhas em texto simples é, bem ... exatamente o que parece.

    Assim:

    Nome de usuário: John Smith

    Senha: johnsmith93

    O banco de dados da empresa contém as mesmas informações - usuário: John Smith, senha: johnsmith93.

    Isso deve ser evitado se as empresas valorizam a privacidade de seus clientes. (Felizmente, alguém do Facebook vai ler isso.)

    A desvantagem desse método é óbvia - se os cibercriminosos se infiltrarem no banco de dados da empresa, eles poderão ver todos os nomes de usuário e senhas.

    Armazenamento de senhas usando criptografia

    A criptografia é a melhor maneira de proteger as senhas. Ele transforma sua senha em uma sequência ilegível de números e letras.

    Funciona assim:

    Nome de usuário: John Smith

    Senha: johnsmith93

    Quando a empresa usa criptografia para proteger sua senha, a entrada do banco de dados fica assim:

    Nome de usuário: John Smith

    Senha: I8Zdy1QBthsk2ie1HHsl + 66bf20fDDcdCtXURqa07iQ =

    Se um cibercriminoso obtiver essa senha, ela será inútil - eles não poderão usá-la para invadir a conta. Ainda assim, ele pode, teoricamente, ser descriptografado.

    No caso de um agente malicioso obter sua senha criptografada, ele pode descriptografá-la usando várias ferramentas. Ainda assim, leva mais tempo e requer maiores habilidades de computação do que apenas obter uma senha em texto simples.

    Felizmente, existem algoritmos de criptografia que são poderosos o suficiente para ser um método seguro de proteção de senhas.

    Armazenamento de senhas por meio de um algoritmo de hash

    Hash e criptografia são freqüentemente confundidos com a mesma coisa e usados ​​de forma intercambiável. No entanto, há uma diferença crucial entre eles.

    A função hash, como a criptografia, também transforma sua senha em uma sequência ilegível de números e letras. A diferença crucial é que funciona apenas de uma maneira . Ao contrário da descriptografia, você não pode reverter o processo de hashing.Com isso dito, se um cibercriminoso obtiver o hash de sua senha, geralmente ele não poderá fazer nada com ela.

    Existem muitas funções hash disponíveis, mas vamos usar SHA-256 para nosso exemplo.

    Nome de usuário: John Smith

    Senha (hash): e7c95991f28e529b4d3b37611e5f3b6a6a43600ce148af0c42d3d38c06365af5

    Agora.

    Embora o hash não possa ser revertido para o texto original, existem grandes listas de mensagens e seus hashes. Infelizmente, atores mal-intencionados ainda podem hackear sua senha se obtiverem seu valor de hash. Felizmente, se você usar uma senha forte, as chances de isso acontecer são incrivelmente pequenas. Usaremos um exemplo diferente neste caso.

    Exemplos de funções hash no armazenamento de senhas

    Digamos que sua senha seja 123456. (Nunca use essa, crie uma senha forte .)

    Aqui está seu hash se usarmos o algoritmo de hash SHA-256 :

    8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

    Infelizmente, esse hash é configurado em uma lista de mensagens degradadas.

    O problema é ainda maior porque muitas pessoas usam a mesma senha. Portanto, se um banco de dados for hackeado e os cibercriminosos encontrarem o hash de uma senha, eles poderão usá-la para todos os usuários que usarem a mesma senha. Sem falar que muitas pessoas usam a mesma senha para contas diferentes, o que vai tirá-las da frigideira e colocá-las no fogo.

    Ainda assim, você pode fazer várias coisas para evitar que isso aconteça.

    Em primeiro lugar, use uma senha forte e crie senhas diferentes para contas diferentes.

    A outra coisa que você pode fazer é adicionar “ sal ” ao hash. Um hash com sal adiciona valor à sua senha e produz um hash de senha diferente para cada entrada.

    Por exemplo, cada usuário que usa a senha 123456 e “sal” receberá um hash diferente.

    Cada exemplo é um hash salgado de 123456.

    $ 2y $ 10 $ pIxpMnhlQmt1t.EUYK1G / eHkb7Roo / XhPybKyFZSAqk / 50BW10a8.

    $ 2y $ 10 $ sCLqOpeA4R.St / 8IaUWF9.m01MM4YbY.qTwbCY3.K5z.cd5lwxL6W

    Então, qual é a melhor maneira de uma empresa proteger sua senha?

    É uma combinação de todas as técnicas mencionadas acima - como o Dropbox faz, por exemplo.

    Fonte: Dropbox

    Então é assim que você lida com o hashing todos os dias, mesmo sem perceber.

    Embrulhar

    Para resumir - o hashing tem muitos benefícios.

    Você pode fazer o hash de qualquer tipo de dado - seja para indexação ou para verificação de alterações. Isso torna o hashing útil para contratos, downloads, armazenamento de senha, etc.

    As criptomoedas também evoluem. Não apenas os que temos agora, mas novos jogadores estão se preparando para se juntar à diversão. Até o Facebook vai lançar Libra , então vamos usar o hash ainda mais.

    Talvez o Facebook abra caminho para que outras grandes empresas lançem suas próprias criptomoedas - e por que não novos mecanismos de hash? Só o tempo irá dizer.

    Vejo você na próxima vez!

    Perguntas frequentes

    O que é um valor de hash?

    Você pode pensar no valor de hash como a impressão digital de qualquer informação - um arquivo, uma pasta, um bloco de transações, etc. Depois de aplicar uma função de hash a qualquer dado, o último recebe um valor de hash.

    Consiste em uma sequência de caracteres de comprimento fixo - como este:

    Em formação Valor de hash
    Olá D44426ACA8AE0A69CDBC4021C64FA5AD68CA32FE
    O que é criptografia?

    A criptografia é o método que protege os dados usando códigos (como hash e criptografia).

    Os desenvolvedores aplicam criptografia sempre que houver necessidade de maior segurança e privacidade. Ele transforma o texto simples (ou outros dados) em uma string ilegível de caracteres aleatórios. Isso garante a segurança da informação de olhos curiosos.

    O que é uma função hash?

    A função hash é a operação que transforma dados de tamanho aleatório em uma sequência de caracteres de comprimento fixo correspondente, também conhecida como valor hash .

    Existem duas classes de funções hash - função hash criptográfica e não criptográfica . O último é usado em criptomoedas e armazenamento de senha e fornece segurança aprimorada.