Tornar al Blog

MD5, SHA-1 i SHA-256: com escollir un hash

UtilX Publicat el 27/8/2026 Actualitzat el 27/8/2026 11 min lectura

Arbre de decisió per a integritat, contrasenyes i signatures

Un hash resumeix un fitxer o un missatge en una cadena curta, però el terme no resol sol cap pregunta de seguretat. MD5, SHA-1 i SHA-256 tenen històries i propietats diferents. Una coincidència pot detectar un canvi en una descàrrega si el valor esperat ve d'un editor fiable. No demostra qui va publicar el fitxer, no protegeix una base de dades de contrasenyes ni converteix una descàrrega sense signatura en autèntica. Abans de triar algoritme cal separar aquests usos.

El problema

Una funció hash criptogràfica rep bytes de qualsevol mida i retorna un resum de mida fixa. És determinista: els mateixos bytes donen el mateix resultat. També està dissenyada perquè canviar bytes alteri el resultat de manera difícil de predir. Això la fa útil per comprovar integritat, identificar artefactes de compilació i construir signatures. No vol dir que tots els algoritmes resisteixin igual un adversari que actua expressament.

MD5 produeix 128 bits i SHA-1 en produeix 160. RFC 6151 i RFC 6194 documenten atacs de col·lisió i desaconsellen els dos algoritmes quan la resistència a col·lisions és rellevant. Una col·lisió és que dues entrades diferents es puguin construir amb el mateix hash. SHA-256 forma part de SHA-2, definida per FIPS 180-4, i és l'opció habitual d'aquestes tres per a una comprovació d'integritat nova. No autentica per això l'origen ni resol l'emmagatzematge de contrasenyes.

La primera pregunta no és quin text hexadecimal sembla més fort, sinó quina decisió sustentarà. Detectar corrupció accidental, desar un verificador de contrasenya, demostrar que un editor va aprovar una versió i signar un registre són problemes diferents. Cada cas travessa un límit de confiança propi i sol requerir una construcció diferent al voltant del hash.

Exemple pràctic

Suposa que un projecte publica `tool-4.2.zip` i el seu SHA-256 a la pàgina HTTPS oficial de versions. Després de descarregar-lo, calcula SHA-256 sobre els bytes baixats i compara tots els caràcters amb el valor d'aquella pàgina fiable. Si difereixen, atura't: el fitxer pot estar incomplet, modificat o ser una altra versió. Si coincideixen, els bytes locals coincideixen amb els que representa la referència publicada.

La conclusió té una condició essencial. Si un atacant pot substituir alhora el ZIP i el checksum de la pàgina, la coincidència continuarà existint. La comparació no prova la identitat de l'editor; prova igualtat amb la referència que has obtingut. Un checksum copiat d'un mirall desconegut, d'un missatge sense signatura o d'un resultat de cerca no té autoritat independent. Obtingues metadades per un canal controlat per l'editor i comprova'n la identitat per separat.

Amb contrasenyes, la situació és diferent. Un servei no ha de desar un MD5, SHA-1 o SHA-256 directe de la contrasenya. Els hashes generals ràpids permeten provar moltes claus candidates després d'una filtració. L'emmagatzematge necessita un esquema específic amb sal i cost adaptable de càlcul o memòria, triat i configurat pel servei. Comparar una descàrrega no és guardar contrasenyes.

Procediment

Per comprovar una descàrrega, identifica primer el nom exacte, la versió i l'editor. Baixa-la des de la ubicació oficial de la versió quan sigui possible. Recupera el checksum en una altra ubicació fiable o en un manifest signat si l'editor l'ofereix. Conserva junts el nom del fitxer i el hash per no comparar per error el ZIP 4.2 amb el checksum de 4.1.

Calcula SHA-256 sobre el fitxer original baixat, no sobre una carpeta extreta ni un document que una altra aplicació hagi obert i tornat a desar. Copia el resum hexadecimal complet. La comparació ha de rebutjar una diferència; no ha de retallar, normalitzar ni modificar bytes silenciosament. Si no coincideix, elimina o posa en quarantena la descàrrega i torna-la a obtenir. No modifiquis el valor esperat per fer que surti correcte.

Quan calgui evidència més forta de l'origen, segueix les instruccions de verificació de signatures de l'editor. Una signatura digital relaciona les dades de la versió amb una clau privada; es valida amb la clau pública associada i una decisió de confiança sobre aquesta clau. Comprova l'empremta de la clau o el certificat per un canal fiable, valida la signatura sobre les metadades correctes i revisa revocacions o canvis de clau. La signatura també depèn d'una distribució i política de claus correctes.

Explicació tècnica

La resistència a col·lisions pregunta si un atacant pot trobar dues entrades diferents amb el mateix hash. La resistència a preimatge pregunta si, donat un hash, pot trobar una entrada que el produeixi. La resistència a segona preimatge pregunta si, donada una entrada, en pot trobar una altra de diferent amb el mateix resultat. Són propietats relacionades, no substituïbles. Un protocol ha d'explicar quina necessita, no fer servir la mida del resum com una nota universal.

Les col·lisions pràctiques conegudes fan que MD5 i SHA-1 no siguin apropiats per a usos nous sensibles a col·lisions, com certificats, artefactes signats o fluxos documentals. Un sistema antic encara els pot mostrar per compatibilitat o com a identificadors no de seguretat; que hi apareguin no és una recomanació. Per a una convenció d'integritat nova, SHA-256 és preferible, encara que un protocol concret pugui requerir un altre algoritme o format normalitzat.

El hash no inclou data, nom d'editor ni promesa que el fitxer sigui segur d'executar. Un programa maliciós pot tenir un SHA-256 perfecte si l'atacant també aporta la referència. Igualment, una signatura vàlida diu que una clau concreta va signar unes dades; no substitueix comprovar que la clau és de l'editor esperat ni valorar si el programari encaixa en el teu entorn.

Errors freqüents

Un error corrent és considerar MD5 o SHA-1 acceptables perquè una eina encara els ofereix. Que hi siguin manté interoperabilitat, no seguretat. Un altre és emprar SHA-256 directament per a contrasenyes perquè és més nou que MD5. La velocitat que ajuda a resumir un fitxer gran també facilita endevinar contrasenyes fora de línia. Els esquemes de contrasenyes afegeixen sal i cost deliberat, configurat segons l'amenaça i el maquinari.

També és un error comparar només un prefix, acceptar canvis de majúscules o espais sense entendre el format, o calcular el hash d'una representació de text en comptes del fitxer binari. Això pot crear coincidències enganyoses o amagar diferències. Utilitza el format que documenta l'editor, conserva el valor complet i repeteix el càlcul després de tornar a baixar el fitxer.

No publiquis un checksum al costat d'una descàrrega anomenant-lo signatura. Només ajuda contra corrupció accidental si la seva referència ja és fiable. Si l'origen importa, publica signatures verificables, instruccions clares de distribució de claus i passos de versió. No importis claus des de comentaris, incidències o missatges enganxats sense comprovar-les independentment.

Consideracions

Fer hash pot exposar informació d'entrades amb poca entropia. Si un valor surt d'un conjunt petit i previsible, algú pot calcular candidats i comparar resultats. No tractis un hash com si anonimitzés noms, correus, identificadors curts o contrasenyes. Les sals, els controls d'accés i la minimització de dades són controls diferents per riscos diferents.

La integritat també exigeix disciplina operativa. En l'automatització de versions anota l'algoritme, hash complet, artefacte, versió, URL d'origen i data. Genera el checksum a partir de la sortida reproduïble de compilació quan sigui viable i protegeix el canal de publicació. En un simulacre, prova un artefacte modificat expressament per confirmar que la diferència atura el flux. Això redueix errors accidentals sense afirmar que un hash sol autentiqui programari.

En usar un generador local, tracta només material que tinguis dret a processar. Per a fitxers sensibles, prefereix una ordre local verificada del sistema operatiu o el circuit intern aprovat. Una eina de navegador pot demostrar un càlcul, però no acredita la procedència de l'entrada, la fiabilitat de la referència copiada ni la política de seguretat del receptor.

Limitacions

Aquesta guia és una comparació conceptual. No substitueix el procediment de verificació d'un proveïdor, una revisió criptogràfica ni una resposta a incidents. No certifica cap versió, clau, lloc web, gestor de contrasenyes o implementació hash. Els estàndards i atacs canvien; en sistemes d'impacte alt consulta la guia actual de l'editor i els requisits del protocol aplicable.

Tampoc no proporciona una clau privada, una contrasenya útil ni instruccions per esquivar verificacions. Si apareix una diferència de checksum en programari necessari per treballar, conserva l'evidència que requereixi la teva organització, contacta amb l'editor oficial i usa una font coneguda com a bona. No distribueixis l'artefacte sospitós només perquè altres persones el comparin.

Llista de comprovació

Tria SHA-256, no MD5 ni SHA-1, per a un checksum general nou. Compara el resum complet dels bytes exactes amb una referència obtinguda per un canal fiable de l'editor. Una coincidència és igualtat amb aquella referència, no prova d'identitat. Utilitza signatures i claus verificades quan importi l'origen. Per a contrasenyes fes servir un esquema adaptatiu amb sal, mai MD5, SHA-1 o SHA-256 sols. Desa junts algoritme, artefacte, versió, origen i resultat, i atura el procés davant qualsevol diferència.