Funció Hash criptogràfica

Definició de funcions Hash criptogràfiques

Una funció hash criptogràfica és un tipus d'algoritme que es pot executar en una part de 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. Es pot assegurar que dos fitxers són idèntics només 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 existeixen moltes altres.

Nota: les funcions hash criptogràfiques sovint només es denominen funcions hash per a resum, però això no és tècnicament correcte. Una funció hash és un terme més genèric que s'utilitza generalment per incloure 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

Suposem que descarregueu la versió més recent del navegador Firefox . Per qualsevol motiu, heu de descarregar-lo des d'un lloc diferent de Mozilla. En no estar allotjat en un lloc on heu après a confiar, us agradaria assegurar-vos que el fitxer d'instal·lació que heu descarregat és el mateix que Mozilla ofereix.

Mitjançant una calculadora de suma de comprovació , calcular una suma de verificació utilitzant una funció de criptografia hash particular (diguem 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.

Vegeu Què és un informe? per obtenir més informació sobre aquestes calculadores especials, a més d'obtenir més exemples sobre l'ús de sumes de verificació per assegurar-vos que els fitxers que descarregue realment són el que esperàveu que siguin.

Pot invertir les funcions de xifrat criptogràfic?

Les funcions hash criptogràfiques estan dissenyades per evitar la possibilitat d'invertir les sumes de comprovació que tornen a crear en els textos originals.

Tanmateix, tot i que són pràcticament impossibles d'invertir, no significa que estiguin garantits al 100% per protegir dades.

Alguna cosa anomenada taula de l'arc de Sant Martí es pot utilitzar per esbrinar ràpidament el text pla d'una suma de comprovació. Les taules de l'arc de Sant Martí són bàsicament diccionaris que enumeren milers, milions o fins i tot milers d'milions al costat del seu valor de text pla corresponent.

Tot i que això no és tècnicament invertit en l'algoritme d'hash criptogràfic, també podria ser perquè és tan senzill de fer. En realitat, ja que cap taula de l'arc de Sant Martí pot enumerar totes les comprovacions possibles existents, generalment només són "útils" per a frases senzilles ... 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

Perquè aquests valors es calculen utilitzant la suma de comprovació, es requereix que el pirata informàtic entengui quin algoritme hash criptogràfic s'ha utilitzat per generar-los.

Per obtenir una protecció addicional, alguns llocs web que emmagatzemen les contrasenyes de l'usuari realitzen funcions addicionals a l'algoritme hash criptogràfic després de generar el valor, però abans d'emmagatzemar-lo.

Això produeix un nou valor que només el servidor web entén i que no coincideix exactament 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 es puguin canviar alguns caràcters amb els altres. Quan l'usuari intenteu autenticar la propera vegada que inicieu la sessió, aquesta funció addicional la revertirà el servidor web i la generació de comprovació original generada de nou, per verificar que la contrasenya d'un usuari sigui vàlida.

Fer això ajuda a limitar la utilitat d'un pirateig on es roben totes les sumes de verificació.

Una vegada més, la idea aquí és realitzar una funció que es desconeix perquè si el pirata informàtic coneix l'algoritme hash criptogràfic, però no aquesta personalitzada, llavors conèixer les comprovacions de la contrasenya és poc útil.

Contrasenyes i funcions de xifrat criptogràfics

Similar a una taula d'arc de Sant Martí és com una base de dades estalvia contrasenyes d'usuari. 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, vol dir que podeu fer que la vostra contrasenya sigui tan simple com 12345 , en comptes de 12 @ 34 $ 5 , simplement perquè no es poden comprendre les sumes de verificació? Definitivament no , i aquí és per què ...

Com podeu veure, aquestes dues contrasenyes són, alhora, impossibles de desxifrar només observant només la suma de comprovació:

MD5 per 12345: 827ccb0eea8a706c4c34a16891f84e7b

MD5 per 12 @ 34 $ 5: a4d3cc004f487b18b2ccd4853053818b

Així que, a primera vista, podeu pensar que és absolutament bé utilitzar qualsevol d'aquestes contrasenyes. Això és definitivament cert si un atacant intentava esbrinar la vostra contrasenya endevinar la suma de verificació MD5 (que ningú 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 és quan es prenen múltiples copets aleatoris per endevinar una contrasenya. En aquest cas, seria molt 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 totes les paraules, números o frases d'una llista de les contrasenyes comunes (i menys utilitzades), definitivament "12350" com una que es provaria.

Així, tot i que les funcions hash criptogràfiques produeixen sumes de comprovació difícils d'endevinar, cal seguir utilitzant una contrasenya complexa per a tots els vostres comptes d'usuari en línia i locals.

Consell: vegeu Exemples de contrasenyes febles i fortes si no esteu segur de si el vostre compte es considera una contrasenya segura.

Més informació sobre funcions de xifrat criptogràfics

Pot semblar que les funcions hash criptogràfiques estan relacionades amb el xifrat, però els dos funcionen de maneres molt diferents.

El xifratge és un procés bidireccional on alguna cosa es xifra per convertir-se en il·legible, però després es desxifra perquè es torni a utilitzar normalment de nou. Podeu xifrar els fitxers que heu emmagatzemat perquè qualsevol que els accedeixi no podreu utilitzar-los, o podeu utilitzar el xifratge de transferència de fitxers per xifrar els fitxers que es mouen per una xarxa, com ara els que carregueu o baixeu en línia.

Igual que el descrit anteriorment, les funcions hash criptogràfiques funcionen de manera diferent ja que les sumes de verificació no estan destinades a ser invertides amb una contrasenya especial de desactivació, com ara com es llegeixen els fitxers xifrats amb una contrasenya de desxifrat especial. L'únic propòsit de les funcions hash criptogràfiques és comparar dues dades, com ara descarregar fitxers, emmagatzemar contrasenyes, treure dades d'una base de dades, etc.

És possible que una funció hash criptogràfica produeixi la mateixa suma de verificació per a diferents dades. Quan això passa, es diu una col.lisió. És evident que aquest és un gran problema tenint en compte que tot el punt d'una funció hash criptogràfica consisteix a realitzar sumes de comprovació úniques per a totes les dades introduïdes.

Els motius pels quals es poden produir col·lisions són degut a que 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 verificació és de 12345 , la segona es va generar a partir de més de 700 lletres i números, i la tercera és de 123456 . Les tres entrades tenen diferents longituds, però els resultats són sempre de només 32 caràcters, ja que es va utilitzar MD5.

Com podeu veure, no hi ha pràcticament cap límit a la quantitat de sumes de comprovació que es podrien crear, ja que cada petit canvi en l'entrada suposadament produirà una suma de verificació completament diferent. Tanmateix, perquè hi ha un límit a la quantitat de suma de comprovació que pot produir una funció de criptogràfica hash, 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ó perquè proporciona més espai per valors únics.