Elke taal heeft bepaalde kenmerken. Sommige letters komen
meer voor dan andere letters. Bepaalde combinaties van tekens komen niet voor,
weinig voor of juist vaak voor. Kortom, elke taal heeft zo zijn eigen
statistische wetmatigheden.
Een goed geëncrypte tekst (cipher text) daarentegen laat
chaos zien. De eerste letter ‘a’ van de oorspronkelijk tekst is bijv. vervangen
door ‘Z’ en de tweede letter ‘a’ door ‘%’. Voor de substitutie staan 256
karakters ter beschikking. In ieder geval: de confusion (Shannon) moet maximaal zijn.
In de symmetrische
cryptografie gebruik je één-en-de-zelfde sleutel om te encrypten en te
decrypten (en dus ook hetzelfde wachtwoord). Het volgende laat zien hoe dat op byte-niveau gaat:
origineel
01011100
92
sleutel 00101011 43
geheim 01110111 135
sleutel
00101011
43
origineel 01011100 92
Bij de bit-presentatie wordt 2 keer XOR* gebruikt. Bij de ASCII-waarden wordt voor encryptie opgeteld en voor decryptie
afgetrokken**.
Bij AES (Advanced Encryption Standard) bestaat de sleutel
(blockcipher) uit 16 bytes. Het proces gaat als volgt: de sleutel wordt
berekend, de eerst volgende 16 bytes van de (geheime) tekst worden versleuteld
resp. ontsleuteld, er wordt een nieuwe sleutel gegenereerd, de volgende 16
bytes….. En zo schuiven we door de originele tekst of de geheime tekst.
De input voor de sleutel is:
1.
Het (geheime) wachtwoord (hooguit 16 bytes).
2.
De tijd in secondes en millisecondes, gemeten
vanaf 1 jan. 1970 en een random getal. Het betekent wel, dat als je een tekst 2
keer encrypt de resultaten zeer verschillend zijn. Deze data (nonce) zijn niet
geheim. Ze staan leesbaar bovenaan in het document met de geheime tekst. Bij
het ontcijferen worden deze data eerst ingelezen.
3.
Het bloknummer***. Het eerste ‘blok’ –een stukje
tekst van 16 bytes- heeft nummer 0, het tweede 1 etc. Zelfs een verschil van 1
bit levert al (ceteris paribus) een heel andere sleutel op! Dat geldt trouwens ook
voor de kleinste verandering in het wachtwoord. Daarmee is aan de eis van diffusion (Shannon) voldaan.
Per aangemaakte sleutel gebeurt veel: er wordt geroteerd, geschoven en
gemixt, er wordt gesubstitueerd (m.b.v. de look-up table van S-box) en er wordt
veel gewerkt met XOR. Een volledig deterministisch
proces dus. Maar kun je dan ook terugredeneren en bij het wachtwoord uitkomen? Praktisch
onmogelijk, alleen al vanwege de vele XOR’s (ik kom op 1136 per sleutel). Wat gaat er bijv. aan een 1
vooraf? 1 XOR 0 of 0 XOR 1? En wat gaat er dan weer vooraf aan die nullen en
énen?
*XOR=eXclusief or. Alleen
0 òf 1 en 1 òf 0 leveren 1 op.
**Levert optelling 300 op
dan 256 ervan aftrekken en de rest nemen. 300 mod 256= 44 en bijv. -5 mod 256=
251 (-5= -1.256 + 251).
***Voor data (nonce) en
bloknummers zijn 2x8 bytes gereserveerd. Dit totaal wordt het counterblock
genoemd.
rkh, 24-12-2018
8 opmerkingen:
Dat uit orde chaos kan ontstaan, verbaast mij eigenlijk niet. Het omgekeerde, als uit chaos orde zou ontstaan, zou mij wel hogelijks verbazen. Toch is het dat laatste waar wij volgens materialistische gelovigen ons universum aan te danken hebben. Voorwaar een groot geloof !
PJ te N
Het mag je dan niet verbazen. Maar probeer maar eens een algoritme (een volledig transparant en deterministisch proces) te bedenken, dat (pseudo) at random getallen ophoest.
Het gaat niet om twee toestanden (orde, chaos), maar om een proces dat chaos oplevert.
Het proces is gedetermineerd, omdat encryptie en decryptie dezelfde sleutel moeten genereren.
Het feit dat het mij niet verbaast dat uit orde chaos kan ontstaan, laat onverlet mijn grote en diepe bewondering voor degenen die een algoritme kunnen opstellen dat dit procesmatig tot stand brengt. Derhalve: hulde voor Dixi diet dit kan !
Klopt het dat het opstellen van een algoritme dat het omgekeerde proces bewerkstelligt, nog niet is gelukt, of wellicht niet mogelijk is ?
PJ te N
" hulde voor Dixi diet dit kan !"
Enige bescheidenheid past. Ik zou het niet kunnen bedenken. Maar voor 80% kan ik het volgen.
Je kunt het wachtwoord gokken. Er zijn in principe 256^16 mogelijkheden. Dat is meer dan 64 met daarachter 36 nullen.
1 bit natrekken levert meer dan 2^1135 mogelijkheden op. Ga daar maar aan staan.
Het natrekken vergt dus meerdere mensenlevens. Hoeveel mensenlevens schat u ?
PJ te N
Het schatten laat ik graag aan anderen over.
Een reactie posten