Comentários
- Hash da mesma entrada novamente e compare o hash.
- SHA256 é um hash criptográfico, não criptografia … E sim, o ponto é especificamente ser unilateral. Sugiro que você aprenda o básico desses termos, por exemplo, até mesmo da Wikipedia. Então você pode fazer perguntas mais específicas …
- Possível duplicata de Por que as funções hash são unilaterais? Se eu conheço o algoritmo, por que posso ' t calcular a entrada dele?
Resposta
Primeiro, há uma diferença entre hashing e criptografia . SHA256 é uma função de hashing, não uma função de criptografia.
Em segundo lugar, como SHA256 não é uma função de criptografia, não pode ser descriptografado. O que você quer dizer é provavelmente inverter. Nesse caso, SHA256 não pode ser revertido porque é “sa função unilateral . Invertê-lo causaria uma ataque preimage , que anula seu objetivo de design.
Em terceiro lugar, a verificação SHA256 funciona computando-o novamente e comparando o resultado com o resultado em mãos. Se ambos os resultados corresponderem, a verificação foi bem-sucedida. A base teórica é que é difícil encontrar outra entrada que forneça o mesmo resultado hash. A violação disso cria um ataque de segunda pré-imagem , que anula seu objetivo de design.
Finalmente, assinaturas digitais não são simplesmente combinações de hash e chave . Mas uma função hash pode melhorar sua segurança.
Resposta
SHA256 não é uma função de criptografia, mas uma função hash . A diferença fundamental é que, embora a criptografia seja uma função bidirecional (dada a chave), o hash é apenas uma função unilateral: com alguns dados você pode calcular o hash, dado o hash é difícil (e matematicamente impossível) ter os dados de volta .
Eu disse que é matematicamente impossível encontrar os dados do hash porque normalmente uma função hash tem um pequeno codomínio (por exemplo, 256 bits para SHA256), mas um grande domínio (você pode fazer hash de qualquer string), então haverá colisões: strings diferentes com o mesmo hash.
Por esta razão, se sua senha for salva em um formato hash, então existem senhas infinitas (mas podem ser muito longas) que desbloqueia sua conta.
A boa notícia é que as colisões são raras quando você usa funções de hash criptográfico , então sua conta ainda está segura.
Respondendo à primeira parte da sua pergunta, a verificação de dados é fácil: se Alice enviar a Bob um arquivo com a soma de verificação de hash, Bob poderá calcular facilmente o hash de t arquivo que ele recebeu e compare-o com o hash recebido de Alice. Isso geralmente é suficiente para descobrir se houve algum erro durante a transmissão (então o arquivo está corrompido), mas não é suficiente se a transmissão foi alterada por algum invasor que também alterou o hash. Então, Alice e Bob precisam de um canal seguro para transmitir o hash (por exemplo, uma página https com um certificado válido) ou eles precisam assinar o hash de alguma forma.
Então, passamos para a resposta à sua segunda pergunta: Alice pode assinar o hash usando sua chave privada antes de enviá-lo para Bob, desta forma um invasor não pode adulterá-lo sem invalidar a assinatura.
Agora você pode perguntar por que Alice assina apenas com sua chave RSA (ou similar) o hash e não toda a mensagem, isso ocorre porque computar RSA é mais lento do que computar um hash (então ela precisa fazer a coisa lenta apenas em uma pequena string: o hash). Isso era verdade especialmente quando o PGP foi criado e os computadores eram mais lentos.