Función criptográfica Hash

Definición da función criptográfica Hash

A función hash criptográfica é un tipo de algoritmo que pode ser executado en unha peza de datos, como un ficheiro individual ou un contrasinal, para producir un valor chamado checksum.

O principal uso dunha función hash criptográfica é verificar a autenticidade dunha peza de datos. Só se pode asegurar que dous ficheiros sexan idénticos se as sumas de comprobación xeradas por cada ficheiro, utilizando a mesma función criptográfica hash, son idénticas.

Algunhas funcións de hash criptográficas de uso común inclúen MD5 e SHA-1 , aínda que tamén existen outras moitas.

Nota: as funcións de hash criptográficos adoitan ser referidas como funcións de hash por defecto, pero iso non é tecnicamente correcto. A función hash é un termo máis xenérico que adoita usarse para englobar as funcións hash criptográficas xunto con outros tipos de algoritmos como cheques de redundancia cíclica.

Funcións de Hash criptográficas: un caso de uso

Digamos que descarga a última versión do navegador Firefox . Por calquera motivo, necesitas descargalo desde un sitio que non sexa Mozilla. Non se está aloxando nun sitio que aprendeu a confiar, que quere asegurarse de que o ficheiro de instalación que acaba de descargar é o mesmo que Mozilla ofrece.

Usando unha calculadora de suma de comprobación , cómpre unha suma de comprobación usando unha función de hash criptográfica particular (digamos SHA-2) e compáreo co que se publica no sitio de Mozilla.

Se son iguais, pode estar seguro de que a descarga que ten é a que Mozilla pretendeu ter.

Ver ¿Que é un Checksum? para obter máis información sobre estas calculadoras especiais, ademais de máis exemplos sobre o uso de sumas de comprobación para asegurarse de que os ficheiros que descarga realmente son o que esperaba que fosen.

As funcións criptográficas de Hash poden ser revertidas?

As funcións hash criptográficas están deseñadas para evitar a posibilidade de revertir os checksums que volven crear nos textos orixinais.

Non obstante, aínda que son prácticamente imposibles de revertir, non significa que estean 100% garantidos para protexer os datos.

Algo chamado unha táboa de arco da vella pode usarse para descubrir rapidamente o texto simple dunha suma de comprobación. As táboas do arco da vella son basicamente dicionarios que enumeran miles, millóns ou incluso millóns destes xunto co seu correspondente valor de texto simple.

Aínda que isto non é tecnicamente inverter o algoritmo de hash criptográfico, tamén pode ser porque é tan sinxelo de facer. En realidade, dado que ningunha táboa de arco da vella pode enumerar todas as comprobacións posibles existentes, adoitan ser "útiles" para frases simples ... como contrasinais débiles.

Aquí hai unha versión simplificada dunha táboa arco da vella para mostrar como se traballaría cando se empregase a función criptográfica SHA-1:

Texto plano Comprobación SHA-1
12345 8cb2237d0679ca88db6464eac60da96345513964
contrasinal1 e38ad214943daad1d64c102faec29de4afe9da3d
ilovemydog a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

Para que estes valores se descubran utilizando a suma de comprobación, esixirían que o hacker entenda cal algoritmo hash criptográfico foi usado para xeralo.

Para unha protección adicional, algúns sitios web que almacenan contrasinais de usuario executan funcións adicionais ao algoritmo de hash criptográfico despois de xerar o valor pero antes de almacenalo.

Isto produce un novo valor que só o servidor web comprende e que non coincide exactamente coa suma de comprobación orixinal.

Por exemplo, despois de ingresar un contrasinal e xerar a suma de comprobación, pode ser separada en varias partes e reorganizada antes de que se almacene na base de datos de contrasinais ou que se poidan intercambiar determinados caracteres con outros. Cando o usuario intenta autenticarse a próxima vez que inicie sesión, a función adicional sería revertida polo servidor web e a suma de verificación orixinal xerada de novo para verificar que o contrasinal dun usuario sexa válido.

Facer isto axuda a limitar a utilidade dun hack onde se rouban todas as sumas de control.

De novo, a idea aquí é realizar unha función que se descoñece de xeito que se o hacker coñece o algoritmo hash criptográfico pero non este personalizado, entón coñecer os controis de contrasinais non é útil.

Contrasinais e Funcións Criptográficas Hash

Similar a unha táboa arco da vella é como unha base de datos garda os contrasinais do usuario. Cando se introduce o contrasinal, xérase a suma de comprobación e compárase co que está rexistrado co seu nome de usuario. A continuación obtéñense acceso se os dous son idénticos.

Dado que unha función hash criptográfica produce unha suma de comprobación non reversible, ¿isto significa que pode facer a súa contraseña tan sinxela como 12345 , no canto de 12 @ 34 $ 5 , simplemente porque as sumas de comprobación non se poden entender? Definitivamente non , e aquí está o motivo ...

Como podes ver, estas dúas contraseñas son imposibles de descifrar simplemente mirando só á suma de comprobación:

MD5 para 12345: 827ccb0eea8a706c4c34a16891f84e7b

MD5 para 12 @ 34 $ 5: a4d3cc004f487b18b2ccd4853053818b

Entón, a primeira vista pode pensar que é absolutamente bo usar calquera destes contrasinais. Isto é definitivamente certo se un atacante intentou descubrir o seu contrasinal adiviñando a suma de comprobación MD5 (que ninguén fai), pero non é certo se se executa unha forza bruta ou ataque de dicionario (que é unha táctica común).

Un ataque por forza bruta é cando se toman varias punteiras aleatorias para adiviñar unha contraseña. Neste caso, sería moi fácil de adiviñar "12345", pero é bastante difícil de calcular aleatoriamente o outro. Un ataque de dicionario é semellante porque o atacante pode probar cada palabra, número ou frase dunha lista de contrasinais comúns (e menos usadas), definitivamente sendo "12340" unha das que se intentaría.

Así, aínda que as funcións criptográficas do hash producen sumas de comprobación difíciles de adiviñar, tamén debería usar unha contrasinal complexa para todas as contas de usuario en liña e local.

Consello: vexa exemplos de contrasinais débiles e fortes se non está seguro de se o seu é considerado un contrasinal seguro.

Máis información sobre funcións de criptografía de salto

Pode parecer que as funcións hash criptográficas están relacionadas co cifrado pero as dúas funcionan de formas moi diferentes.

O cifrado é un proceso bidireccional onde algo está cifrado para converterse ilegible, pero despois descifrado para ser usado normalmente nuevamente. Podería cifrar os ficheiros almacenados para que calquera usuario que o acceda non poderá usalos ou pode utilizar a codificación de transferencia de arquivos para cifrar ficheiros que se están movendo por unha rede, como os que carga ou descarga en liña.

Como se describiu anteriormente, as funcións criptográficas do hash funcionan de forma diferente porque as sumas de comprobación non están destinadas a ser revertidas cun contrasinal de desinfección especial, como se len os ficheiros encriptados cun contrasinal de descifrado especial. O único obxectivo das funcións criptográficas de hash é comparar dúas pezas de datos, como cando se descargan ficheiros, almacenan contrasinais, puxan datos dunha base de datos, etc.

É posible que unha función hash criptográfica produza a mesma suma de comprobación para diferentes partes de datos. Cando isto ocorre, chámase colisión. É evidente que este é un gran problema tendo en conta o punto enteiro dunha función hash criptográfica é facer cheques de suma totalmente únicas para cada dato introducido nel.

As colisións por razóns poden ocorrer porque cada función criptográfica hash produce un valor de lonxitude fixo independentemente dos datos de entrada. Por exemplo, a función MDH hash criptográfica xera 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 e e10adc3949ba59abbe56e057f20f883e para tres bloques de datos totalmente diferentes.

A primeira suma de verificación é de 12345 , o segundo foi xerado a partir de máis de 700 letras e números, eo terceiro é de 123456 . As tres entradas son de lonxitude diferente, pero os resultados sempre son de só 32 caracteres desde que se usou MD5.

Como podes ver, non hai practicamente ningún límite para o número de suma de comprobación que se podería crear, dado que cada pequeno cambio na entrada suporá producir unha suma de comprobación completamente diferente. Non obstante, porque hai un límite para o número de suma de comprobación que pode producir unha función criptográfica hash, sempre hai a posibilidade de que atopes unha colisión.

É por iso que se crearon outras funcións hash criptográficas. Mentres MD5 xera un valor de 32 caracteres, o SHA-1 xera 40 caracteres e xera SHA-2 (512) 128. Canto maior sexa o número de caracteres que ten a suma de comprobación, menos probabilidade de que se produza unha colisión porque proporciona máis espazo para valores únicos.