Qual é a diferença entre a criptografia SHA e AES? [fechadas]

Respostas:

120

SHA não é criptografia, é uma função hash unilateral. AES (Advanced_Encryption_Standard) é um padrão de criptografia simétrico.

Referência AES

skaffman
fonte
85

SHA é uma família de "Secure Hash Algorithms" que foi desenvolvida pela National Security Agency. Atualmente, há uma competição entre dezenas de opções para quem se tornará SHA-3 , o novo algoritmo de hash para 2012+.

Você usa funções SHA para pegar um documento grande e calcular um "resumo" (também chamado de "hash") da entrada. É importante perceber que este é um processo unilateral. Você não pode fazer um resumo e recuperar o documento original.

AES , o Advanced Encryption Standard é um algoritmo de bloco simétrico. Isso significa que ele pega blocos de 16 bytes e os criptografa. É "simétrico" porque a chave permite criptografar e descriptografar.

ATUALIZAÇÃO: Keccak foi nomeado o vencedor do SHA-3 em 2 de outubro de 2012.

Jeff Moser
fonte
64

SHA e AES têm finalidades diferentes. SHA é usado para gerar um hash de dados e AES é usado para criptografar dados.

Aqui está um exemplo de quando um hash SHA é útil para você. Digamos que você queira baixar uma imagem ISO de DVD de alguma distro Linux. Este é um arquivo grande e às vezes as coisas dão errado - então você deseja validar se o que você baixou está correto. O que você faria é ir a uma fonte confiável (como o ponto de download oficial da distro) e eles normalmente têm o hash SHA para a imagem ISO disponível. Agora você pode gerar o hash SHA comparável (usando qualquer número de ferramentas abertas) para os dados baixados. Agora você pode comparar os dois hashs para ter certeza de que eles correspondem - o que validaria se a imagem que você baixou está correta. Isso é especialmente importante se você obtiver a imagem ISO de uma fonte não confiável (como um torrent) ou se estiver tendo problemas para usar a ISO e quiser verificar se a imagem está corrompida.

Como você pode ver neste caso, o SHA foi usado para validar os dados que não estavam corrompidos. Você tem todo o direito de ver os dados na ISO.

O AES, por outro lado, é usado para criptografar dados ou impedir que as pessoas vejam esses dados sabendo de algum segredo.

O AES usa uma chave compartilhada, o que significa que a mesma chave (ou uma chave relacionada) é usada para criptografar os dados da mesma forma que é usada para descriptografar os dados. Por exemplo, se eu criptografei um e-mail usando AES e o enviei a você, você e eu precisaríamos saber a chave compartilhada usada para criptografar e descriptografar o e-mail. Isso é diferente dos algoritmos que usam uma chave pública como PGP ou SSL.

Se você quiser colocá-los juntos, poderá criptografar uma mensagem usando AES e, em seguida, enviar um hash SHA1 da mensagem não criptografada para que, quando a mensagem for descriptografada, eles possam validar os dados. Este é um exemplo um tanto artificial.

Se você quiser saber mais sobre esses termos de pesquisa da Wikipedia (além de AES e SHA), você deseja incluir:

Algoritmo de chave simétrica (para AES) Função hash criptográfica (para SHA) Criptografia de chave pública (para PGP e SSL)

Robert Horvick
fonte
9

SHA é uma função hash e AES é um padrão de criptografia. Dada uma entrada, você pode usar SHA para produzir uma saída que é muito improvável de ser produzida a partir de qualquer outra entrada. Além disso, algumas informações são perdidas ao aplicar a função, portanto, mesmo se você soubesse como produzir uma entrada que produza a mesma saída, essa entrada provavelmente não seria a mesma usada inicialmente. Por outro lado, o AES destina-se a proteger da divulgação a terceiros quaisquer dados enviados entre duas partes que compartilham a mesma chave de criptografia. Isso significa que, uma vez que você conheça a chave de criptografia e a saída (e o IV ...), você pode voltar facilmente à entrada original. Observe que o SHA não requer nada além de uma entrada a ser aplicada, enquanto o AES requer pelo menos 3 thins: o que você está criptografando / descriptografando, uma chave de criptografia e o vetor de inicialização (IV).

em70
fonte
7

SHA significa Secure Hash Algorithm enquanto AES significa Advanced Encryption Standard. Portanto, SHA é um conjunto de algoritmos de hash. O AES, por outro lado, é uma cifra usada para criptografar. Algoritmos SHA (SHA-1, SHA-256 etc ...) pegarão uma entrada e produzirão um resumo (hash), normalmente usado em um processo de assinatura digital (produzir um hash de alguns bytes e assinar com uma chave privada) .

François P.
fonte
3

SHA não requer nada além de uma entrada a ser aplicada, enquanto AES requer pelo menos 3 coisas - o que você está criptografando / descriptografando, uma chave de criptografia e o vetor de inicialização.

Chen
fonte
1
[Isso foi sinalizado como uma "resposta tardia a uma pergunta antiga, fornecida por um novo usuário. Meu comentário está nesse contexto.] Isso não parece adicionar nenhuma informação sobre o que já foi fornecido em outras respostas a esta pergunta.
danfuzz
Isso esta errado. Você não precisa de um vetor de inicialização (IV) para usar AES. Alguns modos de operação para AES requerem um IV (que é totalmente diferente).
Hilder Vitor Lima Pereira