Como o SHA512 pode fazer uma longa string em uma string curta

1

Eu estou querendo saber como esta seqüência aleatória e muito longa

€£$€@]}$€{[$£}]£[€€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]hXC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpb€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]hkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubh€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]hj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]h€£$€@]}$€{[$£}]£[€]}€486745896€$@fdhhsgpbkjhYUVYUDTYhµµµ½789ty45thhrhYUFVYU7645646f8cgI JKHVruxty dw78fg f 9w64f dfvt87t&R%EFVyubhj<<e5w>G/p9\<\]}}]@}$]$€}{$€øøål5940hgsy/)T(&¤%}]€$ygrevae48g85XC&Yi45wtgsb}]

Pode se transformar nessa string muito mais curta

bb90e8b58596c55070ee88b25ff01627ab0c227cd11d6f876af9e81a0cd12e9d8a1ebce3af5b0fd8098ac3946a590c55ebe890066db6403cb0ee324c6edf9f3d

Este dosente faz algum sentido para mim. Duas strings podem ser iguais no sha512. Etc nós temos string 1 e string 2 e sha512 hash eles são os mesmos?

    
por user3524823 26.05.2014 / 10:51

3 respostas

1

Basicamente, uma função hash (como o SHA512) usa uma entrada de tamanho variável (que pode ser mais curta, mais ou o mesmo comprimento que o hash de saída, e que pode ou não ter um tamanho máximo ditado pela maneira como a função hash funciona), e através de uma variedade de etapas usa essa entrada para alterar o estado interno da função hash em um previsível (< em> determinística ). No outro extremo, quando não há mais entrada, a (ou alguma parte do) estado interno da função hash é lida, possivelmente processada de alguma forma, e entregue como saída da função hash. Essa saída é chamada de "hash" dos dados de entrada.

Uma função hash é projetada como uma função unidirecional , também conhecida como porta-armadilha Em outras palavras, ele é projetado de tal forma que é fácil calcular a saída dada a entrada, mas deve ser inviável calcular a entrada dada a saída, mesmo nos casos em que a entrada é menor que ou a mesmo tamanho da saída.

O hash de saída é de tamanho fixo basicamente porque o tamanho do estado interno da função hash (e o resultado do pós-processamento desse estado para saída) é conhecido. O tamanho exato do hash de saída é escolhido para ser um bom ajuste para os internos da função hash e para fornecer o nível desejado de segurança. Algumas funções hash, como MD5, RIPEMD160 ou SHA-1, possuem uma saída de tamanho fixo; outras, como SHA-2 ou SHA-3, podem fornecer saídas de comprimentos diferentes dependendo das necessidades específicas do sistema usando a função hash.

É possível (e até provável) que duas entradas diferentes para uma função hash produzam o mesmo hash de saída. Para um hash com n bits de saída e para duas entradas aleatórias, isso acontecerá em média depois de tentar duas combinações n / 2 , e é garantido que aconteça quando você tentar 2 n +1 entradas diferentes: no pior (ou melhor) caso, cada uma das entradas 2 n dará uma saída única de o conjunto de 2 n saídas possíveis, portanto, se você tentar mais uma entrada, ela deverá corresponder a uma das saídas já computadas. Isso é chamado de uma colisão de hash . O objetivo de uma função hash criptográfica, como a família de hashes SHA, não é tornar essas colisões impossíveis (sem expandir o hash para o tamanho total da entrada, o que nega o ponto do hash , isso é matematicamente impossível), mas sim fazer com que ache essas entradas extremamente difíceis.

Uma função hash que permite encontrar colisões significativamente mais rápidas que 2 n / 2 a 2 n operações (dependendo do método exato de ataque Primeiramente, procure o chamado preimage e aniversário ataques se você quiser saber mais sobre isso) é geralmente considerado quebrado para aplicativos criptográficos. É por isso que o SHA-1 começou sua busca por desaprovação em navegadores da web para certificados TLS em 2014, depois de um ataque teoricamente viável ficou conhecido em 2012 e por que O antigo MD5 é considerado horrivelmente quebrado para quase todas as aplicações criptográficas.

Também é importante ter em mente que a saída de uma função hash, como SHA512, não é a cadeia hexadecimal que você mostra na sua pergunta. Isso é uma representação do hash real, que é apenas um valor binário de 64 bytes (512 bits). Poderia também ser armazenado em formato binário, na forma codificada em Base64 ou em alguma outra representação.

    
por 26.05.2014 / 13:19
1

Uma função hash é uma aplicação, ie algo que se associa a qualquer número num grande grupo chamado A, outro número tirado de um grupo diferente de números, chamado B .

Em matemática, você pode ter aplicativos

  1. quando o grupo A contém mais elementos que B;

  2. quando os dois grupos contêm o mesmo número de elementos;

  3. quando o grupo A contém muito menos elementos que B.

A função hash é o caso 1, isto é, o grupo A contém muitos, muitos mais elementos do que o grupo B.

Os elementos do grupo A são chamados de mensagens , aqueles do grupo B hashes .

Eu acho que o que o preocupa é a inferência óbvia de que assim é certo que muitas mensagens diferentes terão o mesmo hash. O que muitos pensam é que, se os hashes são como assinaturas, como é possível que duas ou mais mensagens tenham a mesma assinatura? Se o mesmo acontecesse em um banco, seria um desastre. Esta propriedade (com o mesmo hash) é chamada de colisão .

Isto não é assim, por causa de outra propriedade de um hash: é computacionalmente inviável (= extremamente difícil), dada uma mensagem com um hash, para encontrar outra mensagem com o mesmo hash.

Observe que isso não diz: é impossível definitiva , porque acabamos de ver que as colisões devem existir. A propriedade acima diz apenas que é extremamente difícil. Quão díficil? As coisas estão dispostas em bons hashes (e o SHA2 é certamente um ótimo hash) de tal forma que o computador mais poderoso existente hoje, trabalhando com o melhor código, levaria muito mais tempo do que a idade do Universo (= 12 bilhões de anos) para encontrar a colisão. Parece seguro o suficiente.

Existe outra propriedade de hashes que é muito boa e ajuda a explicar por que eles são usados com tanta frequência. Vamos tomar como exemplo uma senha. As senhas são armazenadas no PC, e não em texto aberto: os PCs armazenam as hashes das senhas, de modo que quando eu digito minha senha, o que é comparado não são duas senhas, mas dois hashes. Ok, agora vamos supor que minha senha é: MyPassword , e agora um ladrão tenta adivinhar como segue. Tome uma seqüência de 10 letras, (qualquer sequência inicial fará, vamos usar Thisisasca. Então ele muda a letra inicial (T, neste caso), até encontrar uma carta que tenha um hash o mais próximo possível do (publicamente disponível) hash da senha real.

Desta forma, um invasor pode esperar identificar minha senha uma letra por vez. Observe que isso é o que os assaltantes de banco fazem em filmes de assalto: eles identificam a senha ouvindo cliques à medida que modificam os números, um dígito de cada vez.

Bem, isso é impossível com hashes: uma propriedade importante dos hashes é que mesmo as mensagens que são quase iguais, na verdade possuem hashes completamente diferentes. Dessa forma, você não pode simplesmente adivinhá-los uma letra de cada vez, como fazem os ladrões de banco.

Na linguagem matemática, isso é chamado de um grande expoente de Lyapunov.

    
por 26.05.2014 / 14:27
0

Por definição, um hash SHA512 tem 512 bits, independentemente do tamanho dos dados originais. Para uma explicação mais detalhada, você pode ler este artigo da Wikipedia , que explica o que é uma função hash.

Como o SHA512 não é uma função de hash perfeita , é matematicamente possível, mas muito improvável que dois dados diferentes produzam o mesmo SHA512 hash como explicado na resposta desta outra question no Stack Overflow.

    
por 26.05.2014 / 11:29