maandag, december 24, 2018

AES: Hoe uit determinisme chaos wordt


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:

Anoniem zei

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

DIXI zei

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.

Anoniem zei

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

DIXI zei

" hulde voor Dixi diet dit kan !"

Enige bescheidenheid past. Ik zou het niet kunnen bedenken. Maar voor 80% kan ik het volgen.

DIXI zei

Je kunt het wachtwoord gokken. Er zijn in principe 256^16 mogelijkheden. Dat is meer dan 64 met daarachter 36 nullen.

DIXI zei

1 bit natrekken levert meer dan 2^1135 mogelijkheden op. Ga daar maar aan staan.

Anoniem zei

Het natrekken vergt dus meerdere mensenlevens. Hoeveel mensenlevens schat u ?
PJ te N

DIXI zei

Het schatten laat ik graag aan anderen over.