Una funció hash criptogràfica és un algoritme que es pot executar en dades com un fitxer individual o una contrasenya per produir un valor anomenat suma de comprovació.
L'ús principal d'una funció hash criptogràfica és verificar l'autenticitat d'una part de dades. Només es pot considerar que dos fitxers són idèntics si les sumes de verificació generades per cada fitxer, utilitzant la mateixa funció hash criptogràfica, són idèntiques.
Algunes funcions d'hash criptogràfiques habitualment utilitzades inclouen MD5 i SHA-1, encara que també existeixen moltes altres.
Les funcions hash criptogràfiques sovint es denominen "funcions hash", però això no és tècnicament correcte. Una funció hash és un terme genèric que engloba les funcions hash criptogràfiques juntament amb altres tipus d'algorismes com ara comprovacions de redundància cíclica.
Funcions criptogràfiques d'Hash: un cas d'ús
Digueu que descarregueu la darrera versió del navegador Firefox. Per alguna raó, heu de descarregar-lo des d'un lloc diferent de Mozilla. Com que no es troba allotjat en un lloc on heu après a confiar, us agradaria assegurar-vos que el fitxer d'instal·lació que heu descarregat és exactament el mateix que el que ofereix Mozilla.
Mitjançant una calculadora de suma de comprovació, calcular una suma de verificació utilitzant una funció hash criptogràfica particular, com ara SHA-2, i comparar-la amb la que es publica al lloc de Mozilla. Si són iguals, podeu estar raonablement segur que la baixada que tingueu és la que Mozilla volia tenir.
Pot invertir les funcions de xifrat criptogràfic?
Les funcions hash criptogràfiques estan dissenyades per evitar la possibilitat d'invertir les sumes de verificació que creen de nou en els textos originals. Tanmateix, tot i que són pràcticament impossibles d'invertir, no estan garantits al 100 per cent per protegir dades.
Els hackers poden utilitzar una taula d'arc de Sant Martí per esbrinar el text pla d'una suma de comprovació.
Les taules arc de Sant Martí són diccionaris que enumeren milers, milions o fins i tot milers de milions de sumes al costat del seu corresponent valor de text pla.
Si bé això no és tècnicament invertit en l'algoritme hash criptogràfic, també podria ser, ja que és tan senzill de fer. En realitat, atès que cap taula de l'arc de Sant Martí pot enumerar totes les comprovacions possibles existents, solen ser útils per a frases simples com contrasenyes febles.
Aquí hi ha una versió simplificada d'una taula de l'arc de Sant Martí per mostrar com funcionaria una de les funcions SHA-1 de la funció hash criptogràfica:
Text simple | SHA-1 Checksum |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
contrasenya1 | e38ad214943daad1d64c102faec29de4afe9da3d |
estimo el meu gos | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Un hacker ha de saber quin algoritme hash criptogràfic es va utilitzar per generar les sumes de verificació per esbrinar els valors.
Per obtenir una protecció addicional, alguns llocs web que emmagatzemen les contrasenyes de l'usuari realitzen funcions addicionals en l'algorisme de hash criptogràfic després de generar el valor, però abans d'emmagatzemar-lo. Aquest procés produeix un nou valor que només el servidor web entén i que no coincideix amb la suma de verificació original.
Per exemple, després d'introduir una contrasenya i generar la suma de comprovació, es pot separar en diverses parts i reorganitzar-la abans que s'emmagatzemi a la base de dades de la contrasenya, o bé es puguin canviar alguns caràcters amb els altres. Quan intenteu autenticar la propera vegada que l'usuari signi, el servidor web inverteix aquesta funció addicional, i la suma de verificació original es genera de nou per verificar que la contrasenya d'un usuari sigui vàlida.
Fer aquests passos limita la utilitat d'un pirateig on es roben totes les sumes de verificació. La idea és realitzar una funció que es desconeix, de manera que si el pirata informàtic coneix l'algoritme hash criptogràfic, però no el personalitzat, llavors conèixer les comprovacions de la contrasenya és poc útil.
Contrasenyes i funcions de xifrat criptogràfics
Una base de dades guarda les contrasenyes d'usuari d'una manera similar a la de l'arc de Sant Martí. Quan s'introdueix la vostra contrasenya, la suma de comprovació es genera i es compara amb la que es registra amb el vostre nom d'usuari. A continuació, se us dóna accés si els dos són idèntics.
Tenint en compte que una funció hash criptogràfica produeix una suma de verificació no reversible, és segur que la vostra contrasenya sigui tan simple com 12345, en lloc de 12@34$5, simplement perquè les sumes de verificació no es poden entendre? No, i aquí és per què.
Aquestes dues contrasenyes són, alhora, impossibles de desxifrar amb només mirar les sumes de comprovació:
MD5 per 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 per 12 @ 34 $ 5: a4d3cc004f487b18b2ccd4853053818b
A primera vista, podeu pensar que està bé utilitzar qualsevol d'aquestes contrasenyes. Això és cert si un atacant va intentar esbrinar la vostra contrasenya endevinar la suma de verificació MD5, que no ho fa, però no és cert si es realitza una força bruta o un atac de diccionari, que és una tàctica comuna.
Un atac de força bruta es produeix quan es prenen múltiples apuntades aleatòries per endevinar una contrasenya. En aquest cas, seria fàcil d'endevinar 12345, però és bastant difícil d'esbrinar a l'atzar l'altre. Un atac de diccionari és similar perquè l'atacant pot provar cada paraula, número o frase d'una llista de contrasenyes comunes (i no tan comunes) i12345 és una d'aquestes contrasenyes comunes.
Encara que les funcions hash criptogràfiques produeixin sumes de comprovació difícils o impossibles d'admetre, encara hauria d'utilitzar una contrasenya complexa per a tots els comptes d'usuari en línia i locals.
Més informació sobre funcions de xifrat criptogràfics
Pot semblar que les funcions hash criptogràfiques estan relacionades amb el xifratge, però les dues funcionen de maneres diferents.
El xifratge és un procés bidireccional on alguna cosa es xifra per convertir-se en il·legible i després es desxifra perquè es torni a utilitzar normalment de nou. Podeu xifrar els fitxers que hàgiu emmagatzemat perquè qualsevol que accedeixi a ells no pugui utilitzar-los, o podeu utilitzar el xifratge de transferència de fitxers per xifrar els fitxers que es mouen per sobre d'una xarxa, com ara els que creeu o baixeu en línia.
Les funcions hash criptogràfiques funcionen de manera diferent ja que les sumes de verificació no estan destinades a invertir amb una contrasenya especial d'esgotament. L'únic propòsit de les funcions hash criptogràfiques és comparar dues peces de dades, com ara descarregar fitxers, emmagatzemar contrasenyes i treure dades d'una base de dades.
És possible que una funció hash criptogràfica produeixi la mateixa suma de verificació per a diferents dades. Quan això succeeix, se l'anomena una col·lisió, que és un gran problema tenint en compte que tot el punt d'una funció hash criptogràfica és fer comprovacions úniques per a cada entrada de dades.
Les col.lisions poden ocórrer perquè cada funció hash criptogràfica produeix un valor de longitud fixa independentment de les dades d'entrada. Per exemple, la funció criptogràfica hash MD5 genera 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 i e10adc3949ba59abbe56e057f20f883e per a tres blocs de dades totalment diferents.
La primera suma de comprovació és de 12345. El segon es va generar a partir de més de 700 lletres i números, i el tercer és de 123456.
Les tres entrades són de diferents longituds, però els resultats són sempre de només 32 caràcters, ja que es va utilitzar la suma de comprovació MD5.
No hi ha cap límit a la quantitat de sumes de control que es podrien crear perquè cada petit canvi de l'entrada suposadament produirà una suma de verificació completament diferent. Com que hi ha un límit a la quantitat de sumes de verificació que pot produir una funció hash criptogràfica, sempre hi ha la possibilitat que trobeu una col·lisió.
És per això que s'han creat altres funcions hash criptogràfiques. Tot i que MD5 genera un valor de 32 caràcters, SHA-1 genera 40 caràcters i SHA-2 (512) genera 128. Com més gran és el nombre de caràcters que la suma de verificació té, menys possibilitats tindran una col·lisió.