Via Funtana 31, Ortueri (NU) - 08036, Italia

Crittografia RSA

La crittografia RSA (Rivest-Shamir-Adleman) è uno dei sistemi di crittografia a chiave pubblica più utilizzati. È basata su problemi matematici complessi, come la fattorizzazione di numeri grandi, che la rende sicura per l’uso nella protezione dei dati. Ecco una panoramica dettagliata su come funziona RSA:

1. Generazione delle chiavi

La generazione delle chiavi è la fase iniziale e coinvolge i seguenti passaggi:

  1. Scelta dei numeri primi: Si scelgono due numeri primi grandi e distinti, ppp e qqq.
  2. Calcolo di nnn: Si moltiplicano ppp e qqq per ottenere nnn. n=p×qn = p \times qn=p×q
  3. Calcolo di ϕ(n)\phi(n)ϕ(n): Si calcola la funzione di Eulero di nnn, indicata come ϕ(n)\phi(n)ϕ(n), che è: ϕ(n)=(p−1)×(q−1)\phi(n) = (p-1) \times (q-1)ϕ(n)=(p−1)×(q−1)
  4. Scelta dell’esponente pubblico eee: Si sceglie un numero intero eee tale che 1<e<ϕ(n)1 < e < \phi(n)1<e<ϕ(n) e che sia coprimo con ϕ(n)\phi(n)ϕ(n) (ossia eee e ϕ(n)\phi(n)ϕ(n) non hanno divisori comuni diversi da 1).
  5. Calcolo dell’esponente privato ddd: Si calcola l’inverso moltiplicativo di eee modulo ϕ(n)\phi(n)ϕ(n), ovvero ddd deve soddisfare: d×e≡1mod  ϕ(n)d \times e \equiv 1 \mod \phi(n)d×e≡1modϕ(n)

2. Chiavi pubbliche e private

  • Chiave pubblica: Composta dalla coppia (e,n)(e, n)(e,n).
  • Chiave privata: Composta dalla coppia (d,n)(d, n)(d,n).

3. Cifratura

Per cifrare un messaggio mmm (che deve essere un numero inferiore a nnn), si utilizza la chiave pubblica (e,n)(e, n)(e,n) e si esegue la seguente operazione:c=memod  nc = m^e \mod nc=memodn

Dove:

  • mmm è il messaggio in chiaro.
  • ccc è il testo cifrato.

4. Decifratura

Per decifrare il testo cifrato ccc, si utilizza la chiave privata (d,n)(d, n)(d,n) e si esegue la seguente operazione:m=cdmod  nm = c^d \mod nm=cdmodn

Dove:

  • ccc è il testo cifrato.
  • mmm è il messaggio in chiaro originale.

Esempio pratico

Supponiamo di avere i seguenti valori:

  • p=61p = 61p=61
  • q=53q = 53q=53
  • n=p×q=61×53=3233n = p \times q = 61 \times 53 = 3233n=p×q=61×53=3233
  • ϕ(n)=(61−1)×(53−1)=3120\phi(n) = (61-1) \times (53-1) = 3120ϕ(n)=(61−1)×(53−1)=3120
  • Scegliamo e=17e = 17e=17 (che è coprimo con 3120)
  • Calcoliamo ddd come l’inverso di 171717 modulo 3120, che risulta essere d=2753d = 2753d=2753

Le chiavi risultanti sono:

  • Chiave pubblica: (e,n)=(17,3233)(e, n) = (17, 3233)(e,n)=(17,3233)
  • Chiave privata: (d,n)=(2753,3233)(d, n) = (2753, 3233)(d,n)=(2753,3233)

Cifratura

Supponiamo di voler cifrare il messaggio m=65m = 65m=65:c=6517mod  3233=2790c = 65^{17} \mod 3233 = 2790c=6517mod3233=2790

Il testo cifrato è c=2790c = 2790c=2790.

Decifratura

Per decifrare c=2790c = 2790c=2790:m=27902753mod  3233=65m = 2790^{2753} \mod 3233 = 65m=27902753mod3233=65

Il messaggio originale è m=65m = 65m=65.

Sicurezza

La sicurezza di RSA si basa sulla difficoltà di fattorizzare il prodotto di due numeri primi grandi. Anche se nnn è noto (in quanto parte della chiave pubblica), la fattorizzazione di nnn per ottenere ppp e qqq è computazionalmente impraticabile per numeri sufficientemente grandi. La sicurezza può essere ulteriormente migliorata utilizzando numeri primi molto grandi (ad esempio, di 2048 bit o più).

Utilizzi

RSA è ampiamente utilizzato in:

  • Comunicazioni sicure (come SSL/TLS per il web)
  • Firma digitale
  • Gestione delle chiavi
  • Criptografia a chiave pubblica in generale

In sintesi, RSA è un metodo robusto per la crittografia a chiave pubblica, che si basa su solide fondamenta matematiche per garantire la sicurezza delle comunicazioni e dei dati.