Wat is Hash Collision?
Hash Collision is wanneer twee verschillende invoeren precies dezelfde hashwaarde opleveren. Stel je twee verschillende sleutels voor die op de een of andere manier hetzelfde digitale slot openen. Zeldzaam, maar als het gebeurt met een zwak algoritme, kan dat voor problemen zorgen.
“Als er één collision bestaat, is alles kapot.” Niet helemaal. Sterke algoritmen zijn zo ontworpen dat een praktische Hash Collision uiterst onwaarschijnlijk is, en moderne systemen bouwen meerdere lagen zodat één eigenaardigheid het hele systeem niet omverwerpt.
Hoe Hash Collision werkt
Beschouw een hash als een klein label voor grote data. Hier volgt een korte rondleiding van invoer naar probleem.
- Invoer: Je begint met een bericht, bestand of transactie.
- Hash: Een functie uit de familie van cryptografische hashfuncties zet die invoer om in een tekenreeks met vaste lengte.
- Botsing: Omdat uitkomsten beperkt zijn en invoer onbeperkt, kunnen twee verschillende invoeren naar dezelfde uitkomst leiden.
- Aanval: Een serieus risico ontstaat wanneer iemand doelbewust twee verschillende invoeren maakt die colliden, en daarna de ene door de andere vervangt.
- Verdediging: Goede algoritmen maken die zoektocht astronomisch duur, dus willekeurig raden kost veel tijd en geld.
Ja, dat is het idee.
Waarom Hash Collision van belang is
Waarom zou je aandacht besteden aan dit stille hoekje van wiskunde en code?
- Voordeel: Sterke weerstand houdt je datalabels uniek, wat minder ruimte laat voor sluwe trucs.
- Impact: Collisions bedreigen de integriteit van zaken zoals blockchaintechnologie, softwareupdates en bestandsverificatie.
- Relevantie: Je komt het tegen in wallets, exchanges, bewijzen en audittools die vertrouwen op gelijkheid van hashes.
Als die optie beschikbaar is, kies voor schema's die verdedigingslagen combineren zoals Double Hashing, en houd je aan veelvuldig beoordeelde algoritmen met lange uitvoer.
Belangrijkste kenmerken van Hash Collision
Wat dit fenomeen bijzonder maakt en de moeite waard om te onthouden:
- Onvermijdelijk: Met eindige uitkomsten en oneindige invoer zal volgens het duiventilprincipe een paar samenvallen.
- Moeilijk: Voor moderne hashes is het opzettelijk vinden van een collision ontworpen om rekenkundig zeer zwaar te zijn.
- Handtekeningen: Veel digitale handtekeningen ondertekenen een hash, dus weerstand tegen collisions beschermt ondertekenaars tegen verwisselingstrucs.
Hoe wordt Hash Collision berekend?
Je kunt de inspanning schatten met het verjaardagsidee. Voor een k bits hash is het aantal willekeurige pogingen dat ongeveer vijftig procent kans op een collision geeft ruwweg de wortel van twee tot de macht k, vermenigvuldigd met ongeveer 1,1774.
n_fifty_percent ≈ 1.1774 * sqrt(2^k) Voorbeeld: bij k gelijk aan 256 zijn de benodigde pogingen onvoorstelbaar groot, wat verklaart waarom brute force op zoek naar een collision geen weekendproject is.
Varianten
Verschillende varianten komen voor in onderzoek en aanvallen:
- Collision: Twee verschillende invoeren delen dezelfde hash.
- Second: Gegeven één invoer, vind een andere die dezelfde hash heeft.
- Preimage: Gegeven een hash, vind een invoer die daaraan correspondeert.
- Prefix: Bij een gekozen prefix collision ontstaan twee berichten met verschillende aanvangswaarden die eindigen met dezelfde hash.
SHA256 heeft geen publieke, praktische collision. Als iemand er een claimt, verwacht dan luidruchtige peer review en testresultaten voordat je in paniek raakt of gaat vieren.
Voorbeeld
Als een aanvaller twee verschillende transacties met dezelfde txid kan maken, kan hij een Double Spending truc proberen door de tweeling te wisselen nadat je hebt ondertekend.
Leuk weetje
MD5 collisions werden decennia geleden aangetoond, en het SHAttered project produceerde een publieke SHA1 collision met twee verschillende PDF's, wat de industrie ertoe bracht het algoritme buiten gebruik te stellen.
Samenvatting
In één zin is Hash Collision het zeldzame geval waarin twee verschillende invoeren één digitale vingerafdruk delen, en moderne cryptografie werkt hard om dat niet meer te laten zijn dan trivia.
