05-02-2017, 23:55 door Anoniem (Goeroehoedjes! ;-): Als n het (even) aantal bits van een bestand is, dan is het aantal mogelijkheden met een exacte 50/50 verdeling:
n! / ((n/2)!)²
Geniaal!
05-02-2017, 23:55 door Anoniem (Goeroehoedjes! ;-): Bij 252 bits kom ik dan op 3,63385716E74 mogelijkheden met een exacte 50/50 verdeling
op een totaal aantal mogelijkheden van 7,23700558E75, en dat is nog steeds 5,02 % kans op een exacte 50/50 verdeling.
Je hebt het (ook in je bijdrage van vanmiddag) over "kans", maar dat vind ik wat verwarrend. Immers ik ben
op zoek naar alle combinaties van evenveel nullen als enen in een reeks bits van een gegeven (even) lengte; daar komt geen toeval bij kijken.
Waar ik uiteindelijk benieuwd naar ben, is of het zin heeft om bij een "brute force" aanval (in elk geval op met een one-time-pad of stream cipher, maar evt. ook bij block cipher, versleutelde data) niet te beginnen met 0, 1, 2, 3 etc. maar eerst met alle bitpatronen met een zelfde aantal enen en nullen, daarna ietsje meer nullen dan enen en vice versa etc. (zie het voorbeeld in mijn vorige bijdrage, en verderop in deze bijdrage).
06-02-2017, 20:38 door Anoniem: Met andere woorden: als je weet dat een perfecte random number generator (per bit heb je 50% kans op een 0 of een 1, maar tegelijkertijd heeft bij een oneindig lange sleutel de helft van de bits de waarde 0) als sleutel is gebruikt, lijkt het zinvol om bij een "brute force" aanval te beginnen met sleutels met exact evenveel enen als nullen erin.
Ik moet tot de conclusie komen, dat bij een oneindig lange sleutel niet de helft van de bits de waarde 0 heeft.
Althans: niet exact de helft...
In dat geval heeft de random number generator een bias (ervan uitgaande dat oneindig een even getal is, anders heb je gelijk :-).
06-02-2017, 20:38 door Anoniem: We zien immers in de tabel dat naar mate een bestand groter is, het procentueel steeds minder vaak voorkomt dat het aantal enen en nullen precies gelijk is.
Procentueel wel, maar absoluut niet.
Als een bitreeks 2 bits langer wordt kan hiermee een getal worden gerepresenteerd dat exact 4 keer zo groot is. Het aantal combinaties van exact evenveel nullen als enen neemt echter met
iets minder dan een factor 4 toe. Maar toenemen doet het!
06-02-2017, 20:38 door Anoniem: Dat grote bestanden steeds meer een 50/50 verhouding (lijken te) krijgen,
komt vooral omdat kleine afwijkingen procentueel maar weinig uitmaken in verhouding tot zo'n groot bestand.
Voorbeeld:
Je encryptiealgoritme levert 100 bits om een bestand van 100 bit mee te encrypten (m.b.v. XOR)
De geleverde encryptiebits bestaan bijv. uit 51 enen en 49 nullen. (51% enen, 49% nullen) Het verschil is 2%
Maar stel nu eens dat je een bestand van bijv. 100.000 bits hebt.
Het encryptiealgoritme levert nu 100.000 bits, bijv. 50.001 enen en 49.999 nullen. ( = 50,001% enen, en 49,999% nullen)
Wat blijkt?
De absolute afwijking (2) is hetzelfde, maar het procentuele verschil (2 op 100.000) is nu nog maar 0,002%
Ik denk dat het beter was geweest als ik niet over percentages was begonnen, want je hebt gelijk dat die erg klein worden in dit soort situaties.
Met jouw voorbeeld (100.000) bits en mijn aanname, dat de kans dat de random number generator evenveel enen als nullen genereert,
toeneemt naarmate de (XOR) sleutel langer wordt (en maximaal, namelijk 1, is bij een oneindig lange sleutel - anders zou er sprake zijn van bias) lijkt het dus verstandig om een brute force aanval als volgt uit te voeren:
1) probeer eerst alle bitcombinaties van 50.000 nullen en 50.000 enen
2) probeer daarna alle bitcombinaties van 49.999 nullen en 50.001 enen
3) probeer daarna alle bitcombinaties van 49.999 enen en 50.001 nullen
4) probeer daarna alle bitcombinaties van 49.998 nullen en 50.002 enen
etc. (de keuze voor de volgorde van 2 en 3 is natuurlijk arbitrair).
Om het anders te stellen:
A) van een goede random number generator is de kans 50% dat elke gegenereerde random bit een 0 of een 1 is.
B) hoewel er natuurlijk
geen sprake is van een bijstuurmechanisme en/of geheugen ("het vorige bit was 0 dus moet ik nu een 1 genereren" - dat zou 010101 etc. opleveren)
moet (m.i.) bij grotere aantallen bits de verhouding tussen het aantal random gegenereerde nullen en enen steeds dichter bij 1:1 komen.
Als B niet klopt is er sprake van een bias en kan A ook niet kloppen!
Vergelijkbaar: hoe vaker je een perfecte dobbelsteen gooit, hoe dichter de gemiddelde worpwaarde bij 3,5 zal komen. Toch?