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
controlegetal (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 21 2 3
1 2 3 4
1 2 3 4 5
…
…
1 2 3 ……………..n ?
[Een fraaie
verjaardagskraker].
rkh, 28-10-2018