crittosistemi affini = Sistemi in cui la chiave è una coppia di interi e la funzione è
<aside> 👉 f(x) = ax+b mod 26
</aside>
In questo cifrario la chiave è una coppia di interi
* **k=(a,b)***
e la funzione di cifratura è del tipo ek(x)=ax+b mod 26
Queste funzioni sono dette funzioni affini, da cui il nome del cifrario. Vediamo sotto quali condizioni una funzione di questo tipo va bene per la cifratura. Come abbiamo giá detto, una funzione di cifratura deve essere iniettiva. Se infatti non fosse iniettiva allora Bob non potrebbe decifrare il messaggio in modo univoco. Pertanto la chiave (a ,b) deve essere scelta in modo che la funzione risulti iniettiva. Supponiamo di scegliere come chiave la coppia a = 2 e b = 0 e che il messaggio cifrato sia y = 0; allora la funzione di cifratura è
$$ e_k(x)=2x $$
e quindi per decifrare il messaggio l'equazione da risolvere è
$$ 2x=0\text{ mod }26 $$
Le soluzioni sono x = 0 e x = 13, quindi due messaggi in chiaro distinti corrispondono allo stesso messaggio cifrato, di conseguenza la scelta a = 2 non è ammissibile perché vogliamo che la congruenza
$$ ax=0\text{ mod }26 $$
abbia un’unica soluzione per x.
Perchè questo sia vero, a deve essere numero primo con 26.
Il numero di possibili chiavi per il cifrario affine è dato dal numero di coppie (a,b). Poiché b puó assumere 26 possibili valori ci resta da determinare il numero di possibili valori per a cioé il numero di valori tra 0 e 25 primi con 26. Dopo qualche calcolo si ottiene che il numero di possibili chiavi per il cifrario è di 26x12
Rompere cifrari storici è facile oggi ma non lo era prima quindi si iniziò a fare analisi di frequenza per poter decifrare i messaggi
nel XVI secolo venne ideato il quadrato di vigenere che rese impossibile l’analisi di frequenza, era necessario estendere il lavoro di analisi di frequenza affinchè si potesse decifrare il messaggio poichè era necessario indovinare pian piano la lunghezza della chiave.
Il metodo si può considerare una generalizzazione del cifrario di Cesare; invece di spostare sempre dello stesso numero di posti la lettera da cifrare, questa viene spostata di un numero di posti variabile, determinato in base ad una parola chiave, da concordarsi tra mittente e destinatario, e da scriversi sotto il messaggio, carattere per carattere; la parola chiave è detta anche verme, per il motivo che, essendo in genere molto più corta del messaggio, deve essere ripetuta molte volte sotto questo, come nel seguente esempio:
Testo chiaro - ARRIVANOIRINFORZI Verme - VERMEVERMEVERMEVE Testo cifrato - VVIUZVRFUVDRWAVUM
Viene ideato il Metodo Kasiski che non si basa piu solo sulla frequenza di lettere ma sulla frequenza di coppie di lettere.
Quando una stessa porzione di chiave è usata per cifrare una ripetizione contenuta nel testo da cifrare, essa genera una ripetizione corrispondente nel testo cifrato. Questo equivale a dire che l'intervallo fra due gruppi di lettere cifrate uguali è un multiplo della lunghezza della chiave. L'analisi di questi intervalli può quindi fornire la lunghezza della chiave, cioè il numero di alfabeti usati per cifrare. È però necessario individuare e scartare le eventuali ripetizioni che siano semplicemente dovute al caso e non alla ripetizione della chiave (di solito, gruppi di lettere non più lunghi di due o tre caratteri). In sintesi si deve:
- Individuare i gruppi di lettere ripetuti ed elencarli indicando le posizioni in cui le loro lettere iniziali si trovano nel crittogramma
- Calcolare gli intervalli fra le ripetizioni eseguendo la differenza fra i due numeri
- Scomporre questi intervalli in tutti i loro sottomultipli
- Individuare i fattori maggiormente ricorrenti, dando più peso a quelli relativi ai gruppi di lettere più lunghi, i quali più difficilmente saranno casuali.
sempre nel XVI Secolo Cardano inventa il crittogramma Autoclave
nel 1854 nasce invece Playfair che è il primo crittogramma polialfabetico
Nel 1929 viene ideato il cifrario di Lester Hill, che è il primo cifrario noto come OTP ovvero viene utilizzata una stringa monouso per decifrare un testo tramite XOR.
In cryptography the one-time pad(OTP) is an encryption technique that cannot be cracked but requires the use of a single-use pre-shared key that is not smaller than the message being sent. In this technique, a plaintext is paired with a random secret key (also referred to as a one-time pad). Then, each bit or character of the plaintext is encrypted by combining it with the corresponding bit or character from the pad using modular addition.