zondag, oktober 28, 2018

Hash256 (1)


Hoe te achterhalen of een gedigitaliseerd document authentiek is, dus tussentijds niet is gewijzigd? Wel, haal de tekst door een algoritme, dat aan een document een uniek controle­getal (oftewel: hash) toekent. Vergelijk dit getal met het getal dat aan het document is toegevoegd en eerder met hetzelfde algoritme is berekend. Dit laatste getal is geëncrypt en moet dus eerst m.b.v. de publieke sleutel worden gedecrypt. Zijn de getallen gelijk dan weet je vrijwel zeker dat er met het document niet is geknoeid. Dat is de gedachte.

Stel als controlegetal staan de getallen 0 t/m 31 ter beschikking. Stel dat de oorspronkelijke tekst controlegetal 0 heeft en stel dat een aanpassing van de tekst een versie oplevert met controlegetal 1, een tweede versie controlegetal 2 etc. Dat gaat dus bij 32 versies goed, tenminste als je een algoritme weet te vinden dat alle getallen gebruikt. Maar na de 32ste wijziging/versie is de kans op 0 1 op 32. Dus na nog wat wijzigingen krijg je wel een versie met hetzelfde controlegetal als het origineel. Wat niet de bedoeling is. De range moet dus groot zijn.

Om de gedachten verder te bepalen: Stel ik maak een lijstje met A krijgt van mij €532,50, B krijgt €2000 etc. van in totaal 1000 cijfers (ik zie af van tekst). Je hebt 9 mogelijkheden om een cijfer te vervangen. Dus er zijn 9000 versies van dat lijstje met maar één wijziging. Dus geknoei met 1 cijfer van de 1000 cijfers kan ik –een goed algoritme is voorondersteld- met hooguit 4 cijfers ontdekken!

Bij meer geknoei lopen de getallen snel op. Wijzig je 2 cijfers dan zijn er al 40.459.500 mogelijke versies van de lijst [ (½.10002 - ½.1000).92]. En bij 3 cijfers 121.135.743.000 [1/6(10003 -3.10002 + 2.1000).93]*. Dat kan natuurlijk niet zo doorgaan. Er moet een limiet zijn.

Hash256 -een veel gebruikt algoritme- laat de range van 0 tot 2256 lopen.
2256=(210)25.26 ~ 6.1076 met 210=1024~103. Het getal 6.1076 is natuurlijk gigantisch groot. Maar alleen als het algoritme àlle controlegetallen gebruikt (en daarna pas gaat herhalen) én het document niet te groot is, kan aan elk van de biljoenen en biljoenen mogelijke versies van het origineel een uniek controlegetal worden toegekend. Een versie is per definitie het origineel met één of meer wijzigingen.

*Het volgende probleem moest worden opgelost. Wat is de totale som van

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5


1 2 3 ……………..n ?

[Een fraaie verjaardagskraker].

rkh, 28-10-2018