torniamo sui cifrari a blocchi, che sono la declinazione moderna della crittografia simmetrica. Questa dimensione del blocco, come dicevamo non deve essere troppo grande (anche per questioni hardware), ma nemmeno troppo corti per non avere overhead di messaggi e suscettibili a code book attack.
Prendiamo una chiave lunga K e facciamo variare il plain text in tutti i modi possibili. Ho quindi 2^b modi possibili.

Se ripetiamo questa operazione per tutte le possibili chiavi ho 2^k tabelle, ognuna delle quali contiene una permutazione di bit che possono andare a costituire il testo.
Praticamente staimoa dnando a criptare tutti quanti i possibili pt, e righe sono 2^B. Se facessimo questa operazione concettualmente la cifratura come potrebbe essere implementata? Possiamo fissare la chiave, questa punta ad una tabella pre computata e praticamente io vado a fare un table look up e alla fine ottengo il cipher text. Non posso ovviamente fare cosi’ perche’ e’ un po’ troppo “semplice” e assolutamente poco sicuro, ma e’ interessante sicuramente ragionarci.
Quante tabelle ci sono in tutto, quante non sono indicizzate? Se sono almeno 2^K possiamo andare a usare le possibili permutazioni, se sono di piu’ no sicuramente. La grandezza di una tabella dipende da B, lenght del pt, ma una volta che abbiamo un numero di righe abbiamo un numero di tabelle diverse, ma quindi in soldoni abbiamo 2^B!

Di possibili mappature ne usiamo praticamente solo una frazione infinitesima pero’. Fissiamo la chiave a 128 bit, e vediamo che frazione di permutazioni che usiamo all’aumentare della dimensione del blocco:

il punto e’ che usiamo le cifrature effettive sono una frazione veramente molto piccola. Ma come scegliamo allora il tutto? non possiamo andare a sceglierle a mano, non puo’ funzionare, ma possiamo dire qualcosa che non vogliamo. Non vogliamo permutazioni troppo semplici! Pensiamo al cifrario di Cesare che praticamente usa 26 permutazioni semplici, questo e’ il caso peggiore.
Non vogliamo dare alcun vantaggio al nostro attaccante, vogliamo delle permutazione che non rivelino nulla del plain text. Esiste pero’ una categoria molto piu’ ampia per cui la trasformazione non deve essere esprimibile in modo lineare. Non si vuole che xP + b = y(x), se possiamo esprimere il cipher text come questa equazione, in cui ho praticamente una permutazione, allora, considerando questa trasformazione lineare affine, questo sistema si risolve nel modello CPA (chosen plaintext attack). Le trasformazioni lineari sono tante quanto le matrici P invertibili.
Non possiamo permetterci che la permutazione sia esprimibile linearmente.

Impariamo che tra tutti gli algoritmi di cifratura devo forzare la non linearita’.
Altre proprieta’ delle permutazioni: