Sei sulla pagina 1di 13

CRITTOGRAFIA ASIMMETRICA 3

- SCAMBIO DI CHIAVE, Key Exchange Mechanism, KEM


Diffie-Hellman, logaritmo discreto.

- CIFRATURA ASIMMETRICA, Public Key Encryption, PKE


RSA, fattorizzazione di interi;
El Gamal, logaritmo discreto;
Curve ellittiche (non trattate).

- FIRMA DIGITALE, Digital Signature, DS


RSA;
El Gamal;
DSA, logaritmo discreto, versione di El Gamal leggermente cambiata perché standardizzata dal
NIST.

CRITTOSISTEMI ASIMMETRICI 3.1


1- DIFFIE-HELLMAN, 1976
Nel loro celebre lavoro “New directions in crytography” pubblicato nel 1976 sulla rivista IEEE,
introdussero il paradigma della crittografia asimmetrica come soluzione per scambio di chiavi,
cifratura e autenticazione, firma digitale.
In termini pratici invece, introdussero una procedura per lo scambio di chiavi basato
sull’algoritmo discreto:
1. Alice sceglie un numero primo 𝑝 per cui sia difficile calcolare il logaritmo discreto
(𝑚𝑜𝑑 𝑝) e una radice primitiva 𝛼 (𝑚𝑜𝑑 𝑝).
2. Alice pubblica 𝑝 ed 𝛼.
3. Alice sceglie a caso un esponente 𝑥 segreto, con 1 ≤ 𝑥 ≤ 𝑝 − 2, ed invia sul canale
pubblico 𝛼 𝑥 (𝑚𝑜𝑑 𝑝) a Bob. Eve per ricavarsi 𝑥 deve risolvere il logaritmo discreto.
4. Bob sceglie a caso un esponente 𝑦 segreto, con 1 ≤ 𝑦 ≤ 𝑝 − 2, ed invia 𝛼 𝑦 (𝑚𝑜𝑑 𝑝) ad
Alice. Per lo stesso motivo del punto 3 Eve non riesce a ricavarsi 𝑦.
5. Alice calcola (𝛼 𝑦 )𝑥 = 𝛼 𝑥𝑦
6. Bob calcola (𝛼 𝑥 )𝑦 = 𝛼 𝑥𝑦
𝑥, 𝑦 ≤ (𝑝 − 2) (𝑚𝑜𝑑 𝑝) è dovuto al fatto che, se 𝑥, 𝑦 = (𝑝 − 1) si ricomincia, per cui se
pubblico 𝛼 𝑥,𝑦=(𝑝−1) ricado in una condizione facile, 𝛼 (𝑝−1) ≡ 1, per cui Eve riesce a
ricavarsi 𝑥. Però, essendo 𝑝 talmente grande, 100 cifre decimali, se metto < o ≤, la
probabilità che 𝑥, 𝑦 = (𝑝 − 1) = 1 è talmente piccola che praticamente non succede mai.
Il protocollo di Shamir-Massey-Omura deriva da quello di Diffie-Hellman.

1
❖ PROBLEMA COMPUTAZIONALE
Sia 𝑝 un primo ed 𝛼 una radice primitiva (𝑚𝑜𝑑 𝑝). Dati 𝛼 𝑥 (𝑚𝑜𝑑 𝑝) e 𝛼 𝑦 (𝑚𝑜𝑑 𝑝), si
riesce a trovare 𝛼 𝑥𝑦 ?
- Se Eve fosse in grado di calcolare il logaritmo violerebbe subito il sistema, calcola 𝑥, 𝑦
e ricava 𝛼 𝑥𝑦 .
- Eve potrebbe non aver bisogno di calcolare 𝑥 o 𝑦 per recuperare il messaggio. Non è
noto se ci sia un metodo più facile che calcolarsi il logaritmo discreto, sicuramente non
più difficile.

❖ ATTACCO Man In The Middle, MITM


Si applica ogni qualvolta due interlocutori legittimi sono messi in comunicazione tramite
una rete che non garantisce l’identità.
Esempio storico, 1990
Incontro di scacchi tra Garry Kasparov e Deep Blue, intelligenza artificiale proposta da
IBM.
Una qualunque persona che non ha mai giocato a scacchi potrebbe vincere con uno dei due
o pareggiare?
Si, basta avviare le partite contemporaneamente, l’unica accortezza, avere le pedine bianche
da una parte e le nere dall’altra, quest’ultime iniziano a muovere per prime.
Si attende la mossa dell’avversario con le pedine nere e si riporta la mossa nell’altra partita.
In questo modo, tramite me, ho messo a duello i due, per cui, o vinco una delle due o
pareggio entrambe.

All’algoritmo
Alice e Bob credono di interloquire tra loro
questo perché Eve ha corrotto il protocollo senza
rompere la sicurezza matematica del logaritmo
discreto ma semplicemente infilandosi nel
mezzo è riuscita a concordare un segreto con
Alice ed un altro con Bob. A questo punto, Alice
e Bob hanno condiviso con Eve entrambi i loro
segreti. Segreti che poi vengono usati per
cifrare-decifrare con cifrario simmetrico dati
sensibili, perché il meccanismo di Diffie-
Hellman serve ad instaurare la chiave di
sessione. In questo caso le chiavi di sessione sono 2, una tra Alice e Eve, l’altra tra Eve e
Bob. L’unico modo per contrastare questo attacco è autenticando i messaggi tramite firma
digitale.

2
2- RSA, Ronal Rivest, Adi Shamir e Leonard Adleman, 1977
Metodo di cifratura asimmetrica basato sul problema matematico della fattorizzazione di
grandi numeri interi, utilizzato anche per scambiare chiavi di sessione, basta invertire il
protocollo di cifratura.

❖ FASE 1: GENERAZIONE COPPIE CHIAVI, PRIVATE → PUBBLICHE


Scelte le chiavi segrete, si ricavano le corrispondenti pubbliche.
Procedura
1- Bob sceglie due numeri primi grandi e distinti, 𝑝 e 𝑞.
Li moltiplica per formare un semi-primo 𝒏 = 𝒑𝒒, detto modulo perché l’aritmetica
utilizzata è quella modulare.
2- Bob sceglie un intero 𝒆, esponente di cifratura o encryption, tale che
𝑀𝐶𝐷(𝑒, (𝑝 − 1)(𝑞 − 1)) = 1.
3- Conoscendo 𝑝 e 𝑞, Bob può calcolare 𝜑(𝑛) = (𝑝 − 1)(𝑞 − 1) da cui ricava 𝒅,
esponente di decifratura o decryption, tale per cui 𝑑𝑒 ≡ 1 (𝑚𝑜𝑑 𝜑(𝑛)).
→ le chiavi di Bob: pubbliche {𝑛, 𝑒}, private {𝑝, 𝑞, 𝑑}.

❖ FASE 2: CIFRATURA
La chiave pubblica è usata per cifrare.
Procedura
1- Alice scrive il messaggio segreto come un numero 𝑚. Se 𝑚 > 𝑛, Alice spezza il
messaggio in blocchi di lunghezza < 𝑛, per il momento supponiamo 𝑚 < 𝑛.
2- Alice cifra 𝑚, calcolando: 𝑐 ≡ 𝑚𝑒 (𝑚𝑜𝑑 𝑛).
3- Alice invia 𝑐 a Bob.

❖ FASE 3: DECIFRATURA
La chiave privata, corrispondente a quella pubblica, viene usata per decifrare.
Procedura
1- Bob decifra 𝑐, calcolando 𝑚 ≡ 𝑐 𝑑 (𝑚𝑜𝑑 𝑛).

Perché il meccanismo funziona?


Per il Teorema di Eulero, se 𝑀𝐶𝐷(𝑎, 𝑛) = 1 → 𝑎𝜑(𝑛) ≡ 1 (𝑚𝑜𝑑 𝑛).
Nel caso in esame, 𝜑(𝑛) = 𝜑(𝑝𝑞) = (𝑝 − 1)(𝑞 − 1).
Dal momento che 𝑝 e 𝑞 sono grandi, probabilmente 𝑚 non contiene nessuno di essi come
fattori, e 𝑀𝐶𝐷(𝑚, 𝑛) ≡ 1.
Poiché 𝑑𝑒 ≡ 1 (𝑚𝑜𝑑 𝜑(𝑛)) → 𝑑𝑒 = 1 + 𝑘𝜑(𝑛) con 𝑘 intero.
𝑘
Ne segue che, 𝑐 𝑑 ≡ (𝑚𝑒 )𝑑 ≡ 𝑚1+𝑘𝜑(𝑛) ≡ 𝑚(𝑚𝜑(𝑛) ) ≡ 𝑚(1)𝑘 ≡ 𝑚 (𝑚𝑜𝑑 𝑛)

3
❖ ESEMPIO
𝑝 = 885320963, 𝑞 = 238855417
→ 𝑛 = 𝑝𝑞 = 211463707796206571
𝑒 = 9007
Alice vuol inviare la stringa ′𝑐𝑎𝑡′, con la convenzione che:
𝑎 = 01
𝑏 = 02

𝑧 = 26
→ 𝑐𝑎𝑡 = 030120 = 30120
𝑐 ≡ 𝑚𝑒 ≡ 301209007 ≡ 113535859035722866 (𝑚𝑜𝑑 𝑛).
Mediante l’algoritmo di Euclide esteso, Bob calcola 𝑑 = 116402471153538991 ed
infine, 𝑐 𝑑 ≡ 113535859035722866116402471153538991 ≡ 30120 (𝑚𝑜𝑑 𝑛), coincidente
con 𝑚.
Tutti gli elevamenti a potenza vanno fatti con il metodo visto nel capitolo precedente.

❖ SICUREZZA
1- Eve conosce 𝑛 ed 𝑒 e può intercettare 𝑐 = 𝑚𝑒 ma non riesce a trovare la radice 𝑒-
esima.
2- Non conosce 𝑝, 𝑞, 𝑑, quest’ultimo va mantenuto segreto perché la fattorizzazione di 𝑛 è
possibile se si conosce 𝑑. Anche 𝜑(𝑛) dev’essere mantenuto segreto, altrimenti Eve
riesce a ricavare 𝑑 dato che 𝑒 è il suo inverso moltiplicativo, non è possibile perché non
conosce il modulo, essendo (𝑚𝑜𝑑 𝜑(𝑛)).
3- Bob sceglie 𝑝 e 𝑞 a caso, indipendenti l’uno dall’altro e molto grandi, almeno 100
cifre, meglio se di lunghezze leggermente diversi, alcune scelte vanno evitate perché
facilitano la fattorizzazione.
4- Trovare 𝜑(𝑛) o 𝑑, esponente di decifratura è difficile quanto fattorizzare 𝑛.
Sia 𝑛 = 𝑝𝑞, il prodotto di due primi distinti, se 𝑛 e 𝜑(𝑛) sono noti, allora 𝑝 e 𝑞
possono essere calcolati:
𝑛 − 𝜑(𝑛) + 1 ± √(𝑛 − 𝜑(𝑛) + 1)2 − 4𝑛
𝑝, 𝑞 =
2
Come radici del polinomio:
𝑋 2 − (𝑛 − 𝜑(𝑛) + 1)𝑋 + 𝑛
= 𝑋 2 − (𝑝𝑞 − (𝑝 − 1)(𝑞 − 1) + 1)𝑋 + 𝑝𝑞
= 𝑋 2 − (𝑝 + 𝑞)𝑋 + 𝑝𝑞
= (𝑋 − 𝑝)(𝑋 − 𝑞)
→ 𝑋 2 − (𝑛 − 𝜑(𝑛) + 1)𝑋 + 𝑛 = (𝑋 − 𝑝)(𝑋 − 𝑞)
→ se conosco sia 𝜑(𝑛) che 𝑛 riesco a trovarmi 𝑝 e 𝑞.

4
❖ VELOCITÀ
- Richiede il calcolo di potenze in aritmetica modulare, come 𝑚𝑒 (𝑚𝑜𝑑 𝑛), che per via
dei numeri in gioco, richiede un metodo efficiente di calcolo. Tempo richiesto: potenza
di log (𝑛).
- Tempi accettabili se la mole di dati da cifrare, o firmare, è contenuta. Per questo è
impiegata:
A- Scambio di chiave di sessione.
La differenza con l’algoritmo di Diffie-Hellman sta nel fatto che la chiave è scelta
in maniera autonoma da Alice.
B- Mandare messaggi corti.
In entrambi i casi il sistema è one shot, non c’è un rimbalzo d’informazioni tra
destinatario e mittente, il mittente fornisce al destinatario tutti gli elementi per risalire
al messaggio.

❖ ATTACCHI
A- TEOREMA
𝑡 𝑡
Sia 𝑡 il numero delle cifre di 𝑛 = 𝑝𝑞. Se si conoscono le prime 4, o le ultime 4, cifre di
𝑝, allora si può fattorizzare 𝑛 in modo efficiente.

B- TEOREMA
Sia (𝑛, 𝑒) una chiave pubblica RSA, sia 𝑡 il numero delle cifre di 𝑛 e sia 𝑑, l’esponente
𝑡
di decifratura. Se si hanno almeno le ultime 4 cifre di 𝑑, allora si può trovare 𝑑 in modo
efficiente in un tempo che è lineare in 𝑒 log 2 𝑒.

C- TEOREMA
Se 𝑒 è piccolo, allora è piuttosto veloce trovare 𝑑 quando si conosce una parte
consistente di esso. Se 𝑒 è grande, per esempio quanto 𝑛, il teorema non dà un risultato
più favorevole di una ricerca di 𝑑 caso per caso, ricerca esaustiva.

D- TEOREMA
Siano 𝑝 e 𝑞 due primi tali che, 𝑞 < 𝑝 < 2𝑞.
Sia 𝑛 = 𝑝𝑞.
Siano 1 ≤ 𝑑, 𝑒 ≤ 𝜑(𝑛), tali che 𝑑𝑒 ≡ 1 (𝑚𝑜𝑑 (𝑝 − 1)(𝑞 − 1)).
1
1
Se 𝑑 < 3 𝑛4 → 𝑑 può essere calcolato rapidamente in un tempo polinomiale in log (𝑛).

5
E- ATTACCHI BASATI SUL TEMPO D’ESECUZIONE E SIDE CHANNEL
ATTACKS
Applicabili a tutti i sistemi crittografici, furono introdotti da Paul Kocher nel 1995 e
consistono nella stima del tempo impiegato per eseguire operazioni crittografiche al
fine di scoprire informazioni segrete, giacché alcune possono richiedere più o meno
tempo di altre e quindi lo studio di queste informazioni temporali può essere
un’informazione preziosa per il crittoanalista. L’implementazione di questo tipo di
attacco è intimamente legato all’hardware e al software attaccato.
Esempio
Possibile algoritmo di calcolo di Bob per 𝑦 𝑑 (𝑚𝑜𝑑 𝑛) dove la chiave di decifratura
𝑑 = 𝑏1 𝑏2 … 𝑏𝑤 è un numero binario ed 𝑦, 𝑛 interi:
1- Imponi il contatore dei bit 𝑘 = 1 e lo stato 𝑠1 = 1.
2- Se 𝑏𝑘 = 1 allora calcola 𝑟𝑘 ≡ 𝑠𝑘 𝑦 (𝑚𝑜𝑑 𝑛).
Se 𝑏𝑘 = 0 allora calcola 𝑟𝑘 ≡ 𝑠𝑘 (𝑚𝑜𝑑 𝑛).
3- Aggiorna lo stato 𝑠𝑘+1 ≡ 𝑟𝑘2 (𝑚𝑜𝑑 𝑛).
4- Quando 𝑘 = 𝑤 fermati.
Se invece 𝑘 < 𝑤, 𝑘 = 𝑘 + 1 e riparti dal punto 2.
Alla fine, 𝑟𝑤 ≡ 𝑦 𝑑 (𝑚𝑜𝑑 𝑛).

Quando nell’algoritmo passa un 1, il tempo impiegato è maggiore, per cui


conoscendo l’hardware, si può avere immediatamente un’idea del numero di uni
presenti in 𝑑, ma questo non è sufficiente per ricavarsi la chiave di decifratura.
Vi è la necessità di un’analisi statistica da parte di Eva, la quale si mette in ascolto ed
osserva 𝑛 testi cifrati 𝑦1 , … , 𝑦𝑛 che transitano tra Alice e Bob e determina:
1- I tempi 𝑡𝑖 necessari per decifrare ogni 𝑦𝑖 testi cifrati, cioè ogni 𝑦𝑖𝑑 (𝑚𝑜𝑑 𝑛).
𝑡1 +⋯+𝑡𝑛
2- Il tempo medio di decifratura, 𝜇 = 𝑛
(𝑡1 −𝜇)2 +⋯+(𝑡𝑛 −𝜇)2
3- Lo scarto quadratico medio o varianza, 𝑉𝐴𝑅{𝑡𝑖 } = 𝑛

Supponiamo che per ogni testo cifrato 𝑦𝑖 , Eva sappia stimare il tempo 𝑡𝑖′ per
effettuare la moltiplicazione 𝑠𝑘 𝑦𝑖 , non sapendo se venga effettivamente eseguita o
meno, se lo saprebbe, conoscerebbe la chiave segreta.
Di conseguenza può anche stimare il tempo necessario per tutte le altre operazioni,
𝒕′′ ′
𝒊 = 𝒕𝒊 − 𝒕𝒊 e calcola:
𝑡1′′ +⋯+𝑡𝑛
′′
1- Il tempo medio impiegato per eseguire tutte le altre operazioni, 𝜇 ′′ = 𝑛
2 ′′ −𝜇′′ )2
(𝑡1′′ −𝜇 ′′ ) +⋯+(𝑡𝑛
2- Lo scarto quadratico medio o varianza annesso, 𝑉𝐴𝑅{𝑡𝑖′′ } = 𝑛
A questo punto ci sono due casi:
1- Se la moltiplicazione viene eseguita → 𝒕′𝒊 , tempo necessario per fare quella
moltiplicazione e 𝒕′′
𝒊 , tempo necessario per fare tutto il resto, sono
statisticamente indipendenti, perché due operazioni diverse, allora vale la
seguente relazione:

6
𝑡𝑖 = 𝑡𝑖′ + 𝑡𝑖′′ → 𝑉𝐴𝑅{𝑡𝑖 } ≈ 𝑉𝐴𝑅{𝑡𝑖′ } + 𝑉𝐴𝑅{𝑡𝑖′′ } > 𝑉𝐴𝑅{𝑡𝑖′′ }
→ 𝑽𝑨𝑹{𝒕𝒊 } > 𝑽𝑨𝑹{𝒕′′
𝒊}

2- Se la moltiplicazione NON viene eseguita, 𝑡𝑖′ è il tempo necessario per


un’operazione che non ha legami con il calcolo e quindi è ragionevole supporre
che 𝒕𝒊 e 𝒕′𝒊 siano tra loro statisticamente indipendenti, allora vale la seguente
relazione:
𝑡𝑖′′ = 𝑡𝑖 − 𝑡𝑖′ → 𝑉𝐴𝑅{𝑡𝑖′′ } ≈ 𝑉𝐴𝑅{𝑡𝑖 } + 𝑉𝐴𝑅{−𝑡𝑖′ } > 𝑉𝐴𝑅{𝑡𝑖 }
→ 𝑽𝑨𝑹{𝒕𝒊 } < 𝑽𝑨𝑹{𝒕′′
𝒊}

In sintesi:
A- 𝑽𝑨𝑹{𝒕𝒊 } > 𝑽𝑨𝑹{𝒕′′
𝒊 } → 𝒃𝒌 = 𝟏.

B- 𝑽𝑨𝑹{𝒕𝒊 } < 𝑽𝑨𝑹{𝒕′′


𝒊 } → 𝒃𝒌 = 𝟎.

In conclusione, Eve ricorsivamente, bit per bit, calcola 𝑉𝐴𝑅{𝑡𝑖 } e 𝑉𝐴𝑅{𝑡𝑖′′ }, procede
al confronto e ricostruisce la chiave senza conoscerla soltanto perché c’è un if che
varia il comportamento dell’algoritmo di decifratura in funzione dei bit della chiave
segreta. Affinché l’attacco vada a buon fine, la decifratura non deve avere durata
fissa → un possibile rimedio ad attacchi di questo tipo, è quello di rendere le
operazioni a tempo-potenza d’esecuzione costante, per esempio, facendo conti
inutili, poi scartati.

Paul Kocher fu il primo ad accorgersi che un’implementazione software troppo


efficiente, dell’algoritmo crittografico, può rappresentare uno svantaggio, una via
d’accesso. Da allora presero piede i side channel attacks, cioè attacchi a canale
parallelo, che non affrontano la matematica alla base di un sistema crittografico ma
tutto quello che ci gira intorno, per esempio, misura del tempo di esecuzione, del
consumo di potenza, delle emissioni elettromagnetiche, … .
Finché gli attacchi a canale parallelo riescono a mettere in evidenza informazioni
pubbliche questo non risulta un problema, lo diventa per informazioni segrete.

F- ATTACCHI BASATI SULLA FATTORIZZAZIONE


Attacco alla base matematica di RSA. L’attacco più evidente, almeno in principio, è la
fattorizzazione del modulo 𝑛 = 𝑝𝑞, 𝑝 e 𝑞 due numeri primi.
Fattorizzare un numero e testarne la primalità non è la stessa cosa, molto più facile
testare se un numero è composto che non fattorizzarlo, infatti esistono molti grandi
interi che non sono mai stati fattorizzati anche se si sa che sono composti. Se questo
non valesse, Alice ed Eva sarebbero nella stessa condizione.
Affinché valga quanto detto, Alice non deve incappare in scelte per cui risulta facile
fattorizzare:
- Bisogna scegliere numeri primi 𝑝, tali che, (𝑝 − 1), abbia almeno un fattore molto
grande.

7
- Se voglio avere un numero primo 𝑝 con circa 100 cifre, dimensione classica di
RSA, parto con lo scegliere un primo un po' più piccolino che sarà il fattore
grande, per esempio 𝑝0 ≈ 1040 .

- Si cercano gli interi della forma: 𝑘𝑝0 + 1, con 𝑘 che varia tra alcuni interi attorno a
1060 , perché così facendo 𝑘𝑝0 ≈ 10100 .

- Si controlla la primalità, se la trovo, ho ottenuto un numero primo 𝑝 = 𝑘𝑝0, tale


per cui 𝑝0 è un numero primo grande. In media si ottiene un valore di 𝑝 in meno di
100 tentativi.
Analogo discorso va fatto per 𝑞.
In questo modo 𝑛 = 𝑝𝑞 sarà difficile da fattorizzare usando metodi noti.

RSA challenge e record di fattorizzazione


L’avvento di RSA ha fornito benzina ai ricercatori di tutto il mondo nel trovare metodi
di fattorizzazione, stimolati anche dagli stessi creatori tramite la RSA Challenge,
conclusa nel 2007. Nell’ultima metà del ventesimo secolo si sono fatti enormi progressi
nella fattorizzazione, in parte per lo sviluppo dei computer ed in parte per il
miglioramento degli algoritmi ma comunque il problema è ancora aperto e per molti di
loro ci si aspetta che rimanga aperto ancora a lungo, fino all’avvento del quantum
computer in larga scala, in quanto RSA fa parte dei sistemi quantum vulnerable.
Fino al 2010 sono stati fattorizzati 15 dei 54 numeri RSA, tutti i più piccoli:
da RSA-100 a RSA-180;
RSA-640;
RSA-768, 232 cifre decimali, nel 2009;
RSA-200.
Il numero a fianco la sigla indica il numero delle cifre decimali mentre da RSA-576
indica il numero di cifre binarie, fatta eccezione per RSA-617 in quanto creato prima
del cambio nel sistema di numerazione.
Record di fattorizzazione:

8
❖ TEST DI PRIMALITA’
Con l’avvento di RSA sono stati introdotti molti test volti a stabilire se un numero è primo
o meno. Se questo è pari sicuramente non lo è, se dispari continua a leggere.
Esempio
Preso un intero 𝑛 di 200 cifre, è primo?
1- Metodo a forza bruta classico.
Divido 𝑛 per tutti i numeri primi che gli sono minori.
Impossibile da mettere in pratica.

2- Metodo a forza bruta migliorato.


Divido 𝑛 soltanto con numeri primi minori o uguali alla √𝑛.
Se è un numero primo allora ha solo due fattori 1 e sé stesso, se invece è un
composto avrà due o più fattori. Se ne ha due è un semi-primo, come 𝑛 in RSA, per
cui i due fattori o sono tutti e due uguali alla √𝑛 oppure uno è maggiore, l’altro
minore, a questo punto tanto vale che arrivo fino alla radice, anche perché se ne
dovesse avere di più di due, questi sarebbero molto più piccoli di √𝑛.
Però anche quest’ultimo metodo risulta infattibile in un tempo accettabile poiché ci
sono circa 4𝑥1097 numeri primi minori di 10100 , con una capacità di elaborazione
di 109 numeri primi al secondo, il tempo stimato è di 1081 anni.

Test di non primalità di Fermat (conseguenza del Piccolo Teorema di Fermat)


È un test di non primalità perché permette di ridurre l’insieme dei numeri.
Sia 𝑛 > 1 un intero ed 𝑎 un intero casuale tale che 1 < 𝑎 < (𝑛 − 1).
Se 𝑎(𝑛−1) ≠ 1 (𝑚𝑜𝑑 𝑛) → 𝑛 è composto quindi non è primo.
Se 𝑎(𝑛−1) ≡ 1 (𝑚𝑜𝑑 𝑛) → 𝑛 è probabilmente primo.
È molto accurato per 𝑛 grande.
Esempio
𝑛 = 35 ed 𝑎 = 2 → 234 ≡ 9 (𝑚𝑜𝑑 35) → 35 è composto, quindi non è primo.

Test di primalità statistici


Approccio di tipo statistico. Non garantiscono il completo successo anche se questo è molto
alto, per quest’ultimo motivo vengono eseguiti molto più rapidamente di qualunque test di
primalità con approccio deterministico.

9
❖ SCELTA DEGLI ESPONENTI DI CIFRATURA, 𝐞 E DECIFRATURA, 𝐝
- Esponenti bassi = ↑ 𝑣𝑒𝑙𝑜𝑐𝑖𝑡à ↓ 𝑠𝑖𝑐𝑢𝑟𝑒𝑧𝑧𝑎.
- Una scelta furba è definire 𝑒 = 216 + 1 = 65537, in questo modo molti numeri che ne
derivano sono primi e quindi la condizione 𝑀𝐶𝐷(𝑒, (𝑝 − 1)(𝑞 − 1)) = 1, cioè 𝑒
coprimo con 𝜑(𝑛), è molto probabilmente verificata. Anche perché il numero ottenuto
è più grande di 1 di una potenza di 2, per cui l’elevamento a potenza di questo numero
può essere eseguita rapidamente:
𝑚65537 = {[[(𝑚2 )2 ]2 ]… }2 ∙ 𝑚 , dove l’elevamento a quadrato è svolto 16 volte.

❖ TESTO IN CHIARO CORTO


Un uso comune di RSA è per trasmettere chiavi di sessione da usare con cifrari simmetrici,
per esempio, la chiave DES è lunga 56 bit, ed essendo 256 − 1 ≈ 7.2𝑥1016 , il −1 sta ad
indicare che sto contando anche lo 0, si può pensare di scrivere la chiave come un numero
𝑚 < 1017 , che viene cifrato con RSA ottenendo 𝑐 ≡ 𝑚𝑒 (𝑚𝑜𝑑 𝑛) di dominio pubblico.

La dimensione ridotta di 𝑚 rende efficiente l’attacco cypher text only da parte di Eva:
1- Genera due liste:
- 𝑐𝑥 −𝑒 (𝑚𝑜𝑑 𝑛) per ogni 1 ≤ 𝑥 ≤ 109 ;
- 𝑦 𝑒 (𝑚𝑜𝑑 𝑛) per ogni 1 ≤ 𝑦 ≤ 109 .
𝑥 ed 𝑦 due contatori che arrivano fino a 109 per il paradosso del compleanno, √𝑚 ≅
109 .
2- Si cerca una corrispondenza tra un elemento della prima lista ed uno della seconda.
3- Se ne trova una, ho un valore di 𝑥 ed uno 𝑦, tale per cui:
𝑐𝑥 −𝑒 ≡ 𝑦 𝑒 (𝑚𝑜𝑑 𝑛)
𝑐 ≡ (𝑥𝑦)𝑒 (𝑚𝑜𝑑 𝑛)
→ 𝑚 = 𝑥𝑦
L’attacco ha successo solo se 𝑚, prodotto dei due interi 𝑥 ed 𝑦, è < 109 . Se uno dei due
fosse primo, l’attacco andrebbe a vuoto perché avrei un numero grande circa 1017 e
l’altro 1.
Risulta un attacco molto più efficiente della prova di tutte le 1017 possibilità, a forza
bruta, di 𝑚, perché lavoro con 2𝑥109 valori ogni volta.
Prevenzione → Aggiungendo a caso qualche cifra all’inizio o alla fine di 𝑚 in modo da
formare un testo in chiaro molto più lungo. Quando Bob decifra, rimuove queste cifre
casuali e riottiene 𝑚.
Un modo per estendere il messaggio è tramite l’operazione di padding, una versione
intelligente è l’Optimal Asymmetric Encryption Padding, OAEP.

10
❖ OPTIMAL ASYMMETRIC ENCRYPTION PADDING, OAEP
Introdotto da Bellare e Rogaway, è uno schema random padding che:
1- Aggiunge una componente di casualità che può essere usata per convertire uno schema
di crittazione deterministico, come RSA, in uno probabilistico. Ogni volta che cifro lo
stesso messaggio ottengo un testo cifrato diverso.
2- Controllo integrità del segnale ricevuto, se non ci sono gli zeri finali il testo cifrato non
corrisponde ad una cifratura valida.

𝑛, numero di bit nel modulo RSA.


𝑘0 𝑒 𝑘1 , costanti intere fissate nel protocollo.
𝑚 è il messaggio in chiaro ed è una stringa
lunga L’obiettivo è rendere più lungo il
messaggio originario in chiaro 𝑛 − 𝑘0 − 𝑘1 bit.
𝐺 ed 𝐻 sono due funzioni crittografiche di hash
fissate dal protocollo.
⊕ è l’operatore XOR, detto anche somma
modulo 2.

Cifratura
1- Al messaggio 𝑚 va applicato un padding di 𝑘1 zeri per arrivare ad una lunghezza di 𝑛 −
𝑘0 bit.
2- 𝑟 è una stringa casualmente generata lunga 𝑘0 bit.
3- 𝐺 espande i 𝑘0 bit di 𝑟 a 𝑛 − 𝑘0 bit.
4- 𝑋 = 𝑚00. .0 ⊕ 𝐺(𝑟).
5- 𝐻 riduce gli 𝑛 − 𝑘0 bit di 𝑋 a 𝑘0 bit.
6- 𝑌 = 𝑟 ⊕ 𝐻(𝑋).
7- L’output è 𝑋||𝑌, ovvero la concatenazione di 𝑋 ed 𝑌.

Decifrare
1- Recuperare 𝑟 calcolando 𝑌 ⊕ 𝐻(𝑋).
2- Recuperare il messaggio 𝑚 tramite 𝑚00. .0 = 𝑋 ⊕ 𝐺(𝑟).

Quindi per recuperare il messaggio 𝑚 si ha bisogno delle intere stringhe 𝑋 𝑒𝑑 𝑌. 𝑋 è


richiesto per ottenere 𝑟 da 𝑌, e 𝑟 è richiesta per ottenere 𝑚 da 𝑋. Dato anche una
piccolissima modifica dell’input di una funzione crittografica di hash cambia
completamente il risultato, 𝑋 𝑒𝑑 𝑌 devono essere interamente ottenute. Questo garantisce
l’integrità del messaggio, cioè la capacità di verificare che il messaggio ricevuto non sia
stato alterato accidentalmente durante la trasmissione.

11
❖ PROBLEMA DI DECISIONE
Eva afferma di essere in possesso del testo in chiaro 𝑚, corrispondente al testo cifrato, 𝑐.
Una qualsiasi persona può agevolmente verificare quanto afferma perché basta calcolarsi
𝑚𝑒 (𝑚𝑜𝑑 𝑛) ≡ 𝑐, dato che 𝑛 ed 𝑒 sono pubblici. Ciò è possibile perché la cifratura è
deterministica.

3- PRIMA DI LORO
James Henry Ellis nel 1970 concepì l’idea di una “cifratura non segreta”, ovvero della
crittografia a chiave pubblica.
Clifford Cocks nel 1973 ideò lo schema che oggi conosciamo come RSA.
Malcolm John Williamson nel 1974 ideò lo schema che oggi conosciamo come lo scambio di
chiavi di Diffi-Hellman.
Il problema è che questi lavoravano per il Government Communications HeadQuarters, GCHQ,
cioè l’agenzia governativa, con sede nel Regno Unito, che si occupa della sicurezza, nonché
dello spionaggio e controspionaggio, nell’ambito delle comunicazioni, che all’epoca
classificava queste scoperte segrete.
Soltanto nel 1997 il governo britannico le ha declassificate, rendendo pubblico il contributo di
Ellis, Cocks e Williamson.

4- CRITTOSISTEMA DI Taher ElGamal, 1985


Sicurezza matematica basata sulla difficoltà di calcolo del logaritmo discreto, già sfruttato da
Diffie-Hellman, in questo caso però è one shot ed utilizzato per cifrare un messaggio, in prima
istanza. Meccanismo più complesso di quello di RSA per via della base matematica.
Il punto di partenza è lo stesso di RSA, cifro con una chiave pubblica e decifro con quella
privata corrispondente.
In RSA il messaggio in chiaro 𝑚 (𝑚𝑜𝑑 𝑛), 𝑛 numero semi-primo cioè prodotto di due primi,
viene trasformato in quello cifrato ma sempre (𝑚𝑜𝑑 𝑛) rimane, i due sistemi coincidono.
Questa caratteristica faciliterà l’ottenimento di uno schema di firma a partire da quello di
cifratura.
In ElGamal il messaggio in chiaro 𝑚 (𝑚𝑜𝑑 𝑝), 𝑝 numero primo, viene espanso in due numeri di
cui uno solo è il vero testo cifrato, l’altro è una proof, trad. testimonianza, che serve per
decifrare. Per cui se devo cifrare 1GB di roba me ne ritrovo 2 trasferire, è però vero che la
cifratura asimmetrica non viene tipicamente utilizzata per cifrare una mole di dati così
importanti ma magari 1KB che me ne diventano 2, fattibile.
Quindi ricapitolando:

- Insieme dei possibili testi in chiaro = interi (𝑚𝑜𝑑 𝑝);


- Insieme dei possibili testi cifrati = coppie di interi (𝑟, 𝑡).

12
❖ FASE 1: GENERAZIONE COPPIE CHIAVI, PRIVATE → PUBBLICHE
Bob sceglie un primo 𝑝 grande abbastanza affinché il logaritmo discreto sia difficile da
calcolare ed una radice primitiva 𝛼 (𝑚𝑜𝑑 𝑝), stessa cosa di Diffie-Hellman.
Bob sceglie un intero 𝑎 e calcola 𝜷 ≡ 𝜶𝒂 (𝒎𝒐𝒅 𝒑).
Le chiavi di Bob: pubbliche {𝒑, 𝜶, 𝜷}, privata {𝒂}.

❖ FASE 2: CIFRATURA
Alice vuole inviare un messaggio 𝑚 a Bob.
Si assume 0 ≤ 𝑚 < 𝑝, altrimenti si spezza il messaggio in blocchi < 𝑝 e si cifra un blocco
alla volta.
Alice ottiene la chiave pubblica di Bob {𝑝, 𝛼, 𝛽}.
Alice sceglie a caso un intero 𝒌 segreto e calcola la coppia (𝑟, 𝑡) da inviare a Bob:

- 𝒓 ≡ 𝜶𝒌 (𝒎𝒐𝒅 𝒑)
- 𝒕 ≡ 𝜷𝒌 𝒎 (𝒎𝒐𝒅 𝒑), vi è un prodotto quini c’è un po' di RSA, se avesse continuato con
gli esponenti non ne sarebbe venuto fuori, a meno che non fai Shamir-Massey-Omura,
che però non è un algoritmo one shot.

❖ FASE 3: DECIFRATURA
Bob decifra calcolando:
−𝒂
𝒕𝒓−𝒂 ≡ 𝜷𝒌 𝒎(𝜶𝒌 ) ≡ (𝜶𝒂 )𝒌 𝒎𝜶−𝒂𝒌 ≡ 𝜶𝒂𝒌 𝒎𝜶−𝒂𝒌 ≡ 𝒎 (𝒎𝒐𝒅 𝒑)

❖ BASI DELLA SICUREZZA


- Se Eva determina 𝑎 viola il sistema.
- Se Eva determina 𝑘 viola il sistema poiché 𝑚 = 𝛽−𝑘 𝑡.
- 𝑚 = 0 → 𝑡 = 0 da evitare.
- Per ogni messaggio, è importante usare un 𝑘 diverso.
Esempio, Alice codifica due messaggi, 𝑚1 e 𝑚2 , con 𝑘 fisso, per cui 𝑚1 → (𝑟, 𝑡1 ) e
𝑚2 → (𝑟, 𝑡2 ), per cui se Eva trova 𝑚1 , può determinare 𝑚2 :
𝑡1 𝑡2 𝑚1
≡ 𝛽𝑘 ≡ (𝑚𝑜𝑑 𝑝) → 𝑚2 ≡ 𝑡2 (𝑚𝑜𝑑 𝑝)
𝑚1 𝑚2 𝑡1

❖ PROBLEMA DI DECISIONE
Eva afferma di essere in possesso del testo in chiaro 𝑚, corrispondente al testo cifrato,
(𝑟, 𝑡).
Questa verifica da parte di una qualsiasi persona ha difficile soluzione in quanto non si
conosce il valore di 𝑘 usato per la cifratura.
Per cui il problema decisionale di RSA è di facile soluzione, essendo un sistema
deterministico in origine, quello di ElGamal no, essendo statistico per via di 𝑘.
13

Potrebbero piacerti anche