RIVEST–SHAMIR–ADLEMAN (RSA)

cifrario asimmetrico che sfrutta il problema della fattorizzazione di un numero primo in cui La chiave pubblica e formata da due numeri (noti) e la privata da (privati)

Generazione delle chiavi

viene scelto essere: con e numeri primi molto grandim si calcola poi un numero coprimo di come segue a questo punto viene scelto fra i coprimi di : infine viene calcolato : Le chiavi finali risultano essere:

La cifratura e la decifratura sono implementate come esponenziazioni modulari

E molto importante che nel caso questo venga frammentato per garantire una cifratura corretta

Ricerca numeri primi

Per implementare correttamente queste soluzioni e necessario trovare un’ implementazione efficiente per la ricerca di numeri primi

una possibile soluzione può essere

# numero random grande
int x = random.gen()
while(! primo(x)){ // test di primalita
x= x+2
}
return x

questa soluzione ha un tempo di esecuzione

Test di primalità

Per ricercare un numero primo per la generazione dei segreti previsti per RSA e necessario definire un metodo per determinare se un dato numero e primo o meno, ci sono 2 metodologie per eseguire un test di primalità:

  • deterministico più oneroso ma garantisce di trovare un numero primo
  • probabilistico meno oneroso ma non c’e certezza di trovare un numero primo

Attacchi a RSA

L’algoritmo RSA e vulnerabile a diverse tipologie di attacco:

  • Forza bruta: attacchi che sfruttano il numero n, la fattorizzazione del numeri primi, per evitare dobbiamo dividere in modo corretto la chiave.
  • Attacchi matematici
  • Attacchi a tempo: difficilissima da fare ma è stata dimostrata, esistono contromisure che possono essere adottate (es tecniche di padding)
  • Attacchi a testo cifrato scelto: posso evitare se utilizzo il padding oaet (probabilistico)

Firma con RSA

RSA e un algoritmo di cifratura con recupero (e.g. che necessita di frammentare il messaggio e firmare i singoli pezzi), questo lo rende meno adatto a eseguire la firma di testi in quanto essa può essere trasportata da un file ad un altro se i blocchi sono identici.

Perché firmare con rsa: autenticazione a occhi chiusi

grazie alla proprietà moltiplicativa di RSA e vero che:

questo consente di implementare la cosiddetta autenticazione ad occhi chiusi, dove un nodo e in grado di firmare un messaggio senza conoscerne il contenuto

  • X sceglie a caso un numero coprimo con
  • Invia a T il testo cifrato
  • T firma e restituisce a X
  • X moltiplica per :
  • Il destinatario di può verificare che è autenticato da T:

questa proprietà può essere sfruttata da un attaccante per far firmare messaggi a una destinazione che altrimenti non li firmerebbe

PREVIOUS NEXT