La sicurezza di RSA si basa sulla teoria dei numeri, in particolare sulla difficoltà di scomporre numeri molto grandi nei loro fattori primi.
Processo di Cifratura
Prima di cifrare il testo dobbiamo dividerlo in blocchi tramite questa regola:
“Dobbiamo dividere la sequenza in blocchi lunghi cifre, dove è il numero più grande possibile tale che il blocco risultante sia sempre minore di “.
Una volta diviso il testo in blocchi si scelgono due numeri primi molto grandi, e e si calcola il loro prodotto: (questo è parte della chiave pubblica ed è chiamato modulo). Insieme al modulo abbiamo un esponente pubblico . Quindi la chiave pubblica è composta in questo modo:
La cifratura fatta dall’utente A usa la chiave pubblica dell’utente B () per calcolare il messaggio cifrato :
Processo di Decifratura
Prima di effettuare la decifratura dobbiamo calcolare la chiave privata () dell’utente B. Per farlo dobbiamo eseguire questo calcolo:
La decifratura fatta da B usa la sua chiave privata () per recuperare il messaggio originale :
Perché RSA è sicuro
La sicurezza di RSA risiede nel problema della fattorizzazione degli interi. È facilissimo per un computer moltiplicare due numeri primi giganti () per ottenere , ma è estremamente difficile (computazionalmente intrattabile), dato solo , risalire ai due numeri originali e .
Autenticazione della firma digitale
La Firma Digitale è l’applicazione “speculare” dell’RSA rispetto alla cifratura. Se nella cifratura l’obiettivo è la segretezza (nascondere il messaggio), nella firma digitale l’obiettivo è l’autenticità (provare chi l’ha scritto) e l’integrità (provare che non è stato modificato). Quando l’utente A invia a B il messaggio cifrato insieme ad esso viene inviata anche la firma (che nel nostro caso corrisponde all’ultima parte del messaggio) cifrata con la seguente formula:
L’utente B decifra il messaggio (nella maniera classica vista sopra) e anche la firma tramite questa operazione:
Il messaggio è autenticato se l’ultima parte del messaggio decifrato coincide con la decifratura della firma che l’utente B ha svolto.