La crittologia è la scienza delle scritture nascoste, nel suo duplice significato: da un lato comprende infatti l’ideazione di metodi sempre più sicuri per occultare il reale significato di determinati segni (crittografia), dall’altro riguarda la decifrazione di testi occultati senza conoscerne a priori il metodo usato (crittoanalisi).
Il termine deriva dal greco kriptòs (nascosto) e logos (discorso), ovvero discorso nascosto.
La crittografia (dall’unione di due parole greche: kryptós che significa “nascosto”, e graphía che significa “scrittura”) è la branca della crittologia che tratta delle “scritture nascoste”, ovvero dei metodi per rendere un messaggio “offuscato” in modo da non essere comprensibile/intelligibile a persone non autorizzate a leggerlo.
Un tale messaggio si chiama comunemente crittogramma e le tecniche usate tecniche di cifratura.
Un sistema crittografico oppure crittosistema oppure cifrario è una quadrupla
(M , C , f , ),
in cui M è l’insieme delle unità di messaggio in chiaro, C è l’insieme delle unità di messaggio cifrate, f è una funzione iniettiva di M in C, l’inversa della funzione
ottenuta da f restringendo il codominio alle immagini.
La funzione f viene detta funzione di cifratura.
La funzione viene detta funzione di decifratura.
Si dice inoltre che i parametri necessari per individuare f costituiscono la chiave di cifratura, mentre i parametri necessari per individuare costituiscono la chiave di decifratura.
Per crittoanalisi (dal greco kryptós, “nascosto”, e analýein, “scomporre”), o crittanalisi, si intende lo studio dei metodi per ottenere il significato di informazioni cifrate senza avere accesso all’informazione segreta che è di solito richiesta per effettuare l’operazione. Tipicamente si tratta di trovare una chiave segreta. La crittoanalisi è la “controparte” della cittografia, vale a dire lo studio delle tecniche per occultare un messaggio, ed assieme formano la crittologia, la scienza delle scritture nascoste.
Con crittoanalisi ci si riferisce non solo ai metodi per violare un cifrario, ma anche ad ogni tentativo di eludere la sicurezza di algoritmi crittografici e protocolli crittografici. Anche se la crittanalisi di solito esclude metodi di attacco che non sono diretti alle debolezze intrinseche al metodo da violare, come ad esempio la corruzione, la coercizione fisica, il furto, l’ingegneria sociale, questi tipi di attacco, spesso più produttivi della crittoanalisi tradizionale, ne sono comunque un’importante componente.
Anche se il fine è sempre lo stesso, i metodi e le tecniche di crittoanalisi sono drasticamente cambiate durante la storia della crittografia, adattandosi al continuo aumentare dell’efficienza della crittografia, iniziando dai metodi basati su carta e penna del passato, passando per le macchine crittografiche come l’Enigma della seconda guerra mondiale, per arrivare agli schemi basati sui computer del presente. Insieme sono cambiati anche i risultati della crittoanalisi: non è più possibile ottenere un successo illimitato nella violazione dei codici e si stila perciò una graduatoria dei risultati conseguiti dagli attacchi. A metà degli anni settanta fu introdotta una nuova classe crittografica: la crittografia asimmetrica. I metodi per violare questa classe sono ben diversi da quelli utilizzati in passato e normalmente coinvolgono la risoluzione di problemi matematici altamente complessi, come la ben nota scomposizione in numeri primi.
Leggi un brano tratto dal romanzo “Enigma” di Robert Harris, Mondadori Editore.
Si presenteranno alcuni esempi di meccanismi per la costruzione dell’insieme M delle unità di messaggio in chiaro di un cifrario.
Si supponga di avere un alfabeto ordinato Σ di ordine m.
(1) Esiste una biezione naturale tra Σ e l’insieme {0, … , m-1} e quindi tra Σ e Zm .
Si pone allora M=Zm.
(2) Si fissa un intero k>0 e si suddivide il testo da cifrare in blocchi di k lettere.
Se σ1 … σk è un blocco di k lettere, esso individua una k-pla (a1 , … , ak) appartenente a {0, … , m-1}k , che a sua volta individua il numero a1mk-1 +…+ak-1m+ak appartenente a {0, … , mk-1} e quindi un elemento di .
Si pone allora M=.
(3) Si supponga di aver fatto fatto uno dei seguenti passi:
(a) Sia =Σ e si sia stabilita una biezione tra
e Zm ,come nel punto (1)
oppure
(b) Sia l’insieme dei blocchi di lettere di lunghezza k, (dove k è un intero positivo) e si sia stabilita una biezione tra
e
, come nel punto (2).
In entrambi i casi, si ha una biezione tra e un opportuno Zr . A questo punto si fissa un intero h>0 e si suddivide il testo da cifrare in blocchi di h elementi di
.
Se λ1 … λh è un blocco di h elementi di , esso individua una h-pla ([a1]r , … ,[ah]r) appartenente a
e quindi una matrice
appartenente all’anello Mh1(Zr) delle matrici su Zr con h righe e una colonna.
Si pone allora M=Mh1(Zr).
Un crittosistema (M , C , f , f-1) si dice “di tipo Cesare” se verifica le seguenti due condizioni:
In tale crittosistema la chiave di cifratura è [b]r (o anche b, se 0≤b≤r-1).
Inoltre, f-1 è ovviamente la funzione di Zr in Zr che ad ogni elemento C associa C-[b]r , sicché la chiave di decifratura è -[b]r=[r-b]r (o anche r-b, se 0≤b≤r-1).
Un crittosistema (M , C , f , f-1) si dice affine se verifica le seguenti due condizioni:
In tale crittosistema la chiave di cifratura è la coppia ([a]r , [b]r ) (o anche la coppia (a,b), se 0≤a≤r-1 e 0≤b≤r-1).
Inoltre, f-1 è ovviamente la funzione di Zr in Zr che ad ogni elemento C associa [a]r-1 C – [a]r-1 [b]r , sicché la chiave di decifratura è la coppia ( [a]r-1 , - [a]r-1[b]r ).
Si noti che nel caso che sia [a]r=[1]r , si ritrova un cifrario di tipo Cesare.
Un crittosistema (M , C , f , f-1) si dice di Vigenere se verifica le seguenti due condizioni:
In tale crittosistema la chiave di cifratura è la k-pla ([b1]r , … , [bk]r ) (o anche la k-pla (b1 , … , bk ), se 0≤bi≤r-1).
La parola σ1 … σk corrispondente alla k-pla ([b1]r , … , [bk]r ) viene detta anche parola chiave del cifrario.
Inoltre, f-1 è ovviamente la funzione di in
che ad ogni elemento C=([c1]r , … , [ck]r ) associa ([c1]r-[b1]r , … , [ck]r-[bk]r ).
Dunque la chiave di decifratura è la k-pla (-[b1]r , … , -[bk]r )=([r-b1]r , … , [r-bk]r ) (o anche la k-pla (r-b1 , … , r-bk ) se 0≤bi≤r-1).
Si noti che nel caso che sia k=1, si ritrova un cifrario di tipo Cesare.
Esempio di cifratura con un cirafrio di Vigenere.
Si supponga che l’alfabeto Σ sia l’alfabeto italiano con l’aggiunta dello spazio ‗ , sicché si ha la seguente corrispondenza tra Σ e l’insieme {0,…,21}:
A=0, B=1, C=2, D=3, E=4, F=5, G=6, H=7, I=8, L=9, M=10, N=11, O=12, P=13, Q=14, R=15, S=16, T=17, U=18, V=19, Z=20, ‗=21
Sia dato un cifrario di Vigenere
in cui la parola chiave è SOLE, cioé la chiave di cifratura è la 4-pla ([16]22 , [12]22 , [9]22 , [4]22 ).
Si cifrerà ora il messaggio ATTACCATE‗OGGI:
Il messaggio va suddiviso in blocchi di 4 lettere: ATTA CCAT E‗OG GI‗‗
Dunque la sequenza di unità di messaggio in chiaro è
([0]22 , [17]22 , [17]22 , [0]22 ) ([2]22 , [2]22 , [0]22 , [17]22 ) ([4]22 , [21]22 , [12]22 , [6]22 ) ([6]22 , [8]22 , [21]22 , [21]22 )
Applicando la funzione f a ciascuna unità di messaggio in chiaro, si ottiene la seguente sequenza di unità di messaggio cifrate:
([16]22 , [29]22 , [26]22 , [4]22 ) ([18]22 , [14]22 , [9]22 , [21]22 ) ([20]22 , [33]22 , [21]22 , [10]22 ) ([22]22 , [20]22 , [30]22 , [25]22 )
Dunque il messaggio cifrato è SHEEUQL‗ZN‗MAZID
L.S. Hill: “Concerning certain linear transformation apparatus of cryptography”, American Math. Monthly 38 (1931), 135—154.
Un crittosistema (M , C , f , f-1) si dice “di Hill” se verifica le seguenti due condizioni:
M = C = Mh1(Zr) per qualche intero r>1
f: Mh1(Zr) → Mh1(Zr) ; esistono una matrice A appartenente a GLh(Zr) ed una matrice B appartenente a Mh1(Zr) tali che f(P)=AP+B per ogni PєMh1(Zr) .
In tale crittosistema la chiave di cifratura la coppia (A,B).
Inoltre, f-1 è ovviamente la funzione di Mh1(Zr) in Mh1(Zr) che ad ogni C associa A-1C-A-1B , sicché la chiave di decifratura è la coppia (A-1,-A-1B).
Sia A una matrice quadrata appartenente a Mh(Zr).
Allora A appartiene a GLh(Zr) se e solo se det(A) appartiene a Zr*.
In quest’ultimo caso, l’elemento di posto ij di A-1 è (-1)i+j ∙detAji∙(detA)-1.
In particolare se
è invertibile, allora, posto D=detA, si ha
1. Espansione di un numero naturale in base b e complessità computazionale delle operazioni elementari
2. Complessità dell'algoritmo delle divisioni successive
3. Struttura dell'anello degli interi modulo m, funzione di Eulero
4. Equazioni congruenziali lineari e Teorema Cinese del Resto
5. Teorema di Fermat-Eulero e Piccolo teorema di Fermat. Alcune proprietà dei gruppi ciclici finiti
6. Cifrario di Cesare. Cifrario di Vigenere. Metodo di Hill
7. Richiami sui campi finiti. Generalità sulle curve ellittiche
10. RSA. Sistema di di Massey-Omura. Sistema di El Gamal
11. Immersione dei testi in chiaro e sistemi crittografici in una curva ellittica
12. Resti quadratici e simbolo di Legendre
13. Condizioni necessarie e condizioni sufficienti per la primalità; forme di pseudoprimalità
15. Test di Solovay-Strassen e Test di Miller-Rabin
16. Test di primalità basato sulle curve ellittiche e test AKS
Brano tratto dal romanzo “Enigma” di Robert Harris , Mondadori Editore.