Che cos’è la crittografia RSA e come funziona?

La crittografia RSA è un sistema che risolve quello che una volta era uno dei maggiori problemi della crittografia: come si può inviare a qualcuno un messaggio in codice senza avere l’opportunità di condividere in precedenza il codice con loro?

Questo articolo vi insegnerà tutto quello che c’è da sapere su come è stata sviluppata la crittografia RSA, come funziona, la matematica dietro di esso, ciò che viene utilizzato per così come alcuni dei più grandi problemi di sicurezza che deve affrontare., Conoscere RSA ti darà alcune conoscenze fondamentali che ti aiutano a capire quante parti della nostra vita online sono tenute al sicuro.

Che cos’è la crittografia RSA?

Diciamo che vuoi dire al tuo amico un segreto. Se sei proprio accanto a loro, puoi semplicemente sussurrarlo. Se sei su lati opposti del paese, ovviamente non funzionerà. Potresti scriverlo e spedirlo a loro, o usare il telefono, ma ognuno di questi canali di comunicazione è insicuro e chiunque abbia una motivazione abbastanza forte potrebbe facilmente intercettare il messaggio.,

Se il segreto fosse abbastanza importante, non rischieresti di scriverlo normalmente–spie o un dipendente postale canaglia potrebbero guardare attraverso la tua posta. Allo stesso modo, qualcuno potrebbe essere toccando il telefono senza la vostra conoscenza e la registrazione di ogni singola chiamata effettuata.

Una soluzione per impedire agli intercettatori di accedere al contenuto del messaggio è crittografarlo. Questo significa fondamentalmente aggiungere un codice al messaggio che lo trasforma in un pasticcio confuso. Se il tuo codice è sufficientemente complesso, le uniche persone che saranno in grado di accedere al messaggio originale sono quelle che hanno accesso al codice.,

Se hai avuto la possibilità di condividere il codice con il tuo amico in anticipo, allora uno di voi può inviare un messaggio crittografato in qualsiasi momento, sapendo che voi due siete gli unici con la possibilità di leggere il contenuto del messaggio. Ma cosa succede se non hai avuto la possibilità di condividere il codice in anticipo?

Questo è uno dei problemi fondamentali della crittografia, che è stato affrontato da schemi di crittografia a chiave pubblica (noto anche come crittografia asimmetrica) come RSA.

Sotto la crittografia RSA, i messaggi vengono crittografati con un codice chiamato chiave pubblica, che può essere condiviso apertamente., A causa di alcune proprietà matematiche distinte dell’algoritmo RSA, una volta che un messaggio è stato crittografato con la chiave pubblica, può essere decifrato solo da un’altra chiave, nota come chiave privata. Ogni utente RSA dispone di una coppia di chiavi composta da chiavi pubbliche e private. Come suggerisce il nome, la chiave privata deve essere tenuta segreta.

Gli schemi di crittografia a chiave pubblica differiscono dalla crittografia a chiave simmetrica, in cui sia il processo di crittografia che quello di decrittografia utilizzano la stessa chiave privata., Queste differenze rendono la crittografia a chiave pubblica come RSA utile per comunicare in situazioni in cui non è stata possibile distribuire in modo sicuro le chiavi in anticipo.

Gli algoritmi a chiave simmetrica hanno le proprie applicazioni, come la crittografia dei dati per uso personale o per quando ci sono canali sicuri su cui è possibile condividere le chiavi private.

Vedi anche: Crittografia a chiave pubblica

Dove viene utilizzata la crittografia RSA?

La crittografia RSA viene spesso utilizzata in combinazione con altri schemi di crittografia o per le firme digitali che possono dimostrare l’autenticità e l’integrità di un messaggio., Generalmente non viene utilizzato per crittografare interi messaggi o file, perché è meno efficiente e più pesante di risorse rispetto alla crittografia a chiave simmetrica.

Per rendere le cose più efficienti, un file verrà generalmente crittografato con un algoritmo a chiave simmetrica e quindi la chiave simmetrica verrà crittografata con crittografia RSA. In questo processo, solo un’entità che ha accesso alla chiave privata RSA sarà in grado di decifrare la chiave simmetrica.

Senza poter accedere alla chiave simmetrica, il file originale non può essere decifrato., Questo metodo può essere utilizzato per mantenere i messaggi e file sicuri, senza richiedere troppo tempo o consumare troppe risorse di calcolo.

La crittografia RSA può essere utilizzata in diversi sistemi. Può essere implementato in OpenSSL, wolfCrypt, cryptlib e un certo numero di altre librerie crittografiche.

Come uno dei primi schemi di crittografia a chiave pubblica ampiamente utilizzati, RSA ha gettato le basi per gran parte delle nostre comunicazioni sicure. È stato tradizionalmente utilizzato in TLS ed è stato anche l’algoritmo originale utilizzato nella crittografia PGP., RSA è ancora visto in una gamma di browser web, e-mail, VPN, chat e altri canali di comunicazione.

RSA è spesso utilizzato anche per effettuare connessioni sicure tra client VPN e server VPN. In protocolli come OpenVPN, gli handshake TLS possono utilizzare l’algoritmo RSA per scambiare chiavi e stabilire un canale sicuro.

Lo sfondo della crittografia RSA

Come abbiamo accennato all’inizio di questo articolo, prima della crittografia a chiave pubblica, era una sfida comunicare in modo sicuro se non ci fosse stata la possibilità di scambiare in modo sicuro le chiavi in anticipo., Se non c’era l’opportunità di condividere il codice in anticipo, o un canale sicuro attraverso il quale le chiavi potevano essere distribuite, non c’era modo di comunicare senza che la minaccia dei nemici fosse in grado di intercettare e accedere al contenuto del messaggio.

Non è stato fino al 1970 che le cose hanno davvero cominciato a cambiare. Il primo grande sviluppo verso ciò che ora chiamiamo crittografia a chiave pubblica è stato pubblicato all’inizio del decennio da James H. Ellis., Ellis non è riuscito a trovare un modo per implementare il suo lavoro, ma è stato ampliato dal suo collega Clifford Cocks per diventare ciò che ora conosciamo come crittografia RSA.

L’ultimo pezzo del puzzle è quello che ora chiamiamo lo scambio di chiavi Diffie-Hellman. Malcolm J. Williamson, un altro collega, ha capito uno schema che permetteva a due parti di condividere una chiave di crittografia, anche se il canale veniva monitorato dagli avversari.

Tutto questo lavoro è stato intrapreso presso l’agenzia di intelligence del Regno Unito, il Government Communications Headquarters (GCHQ), che ha mantenuto la scoperta classificata., In parte a causa delle limitazioni tecnologiche, il GCHQ non poteva vedere un uso per la crittografia a chiave pubblica al momento, quindi lo sviluppo sedeva pigramente sullo scaffale a raccogliere polvere. Non è stato fino al 1997 che il lavoro è stato declassificato e gli inventori originali di RSA sono stati riconosciuti.

Diversi anni dopo, concetti simili stavano iniziando a svilupparsi nella sfera pubblica. Ralph Merkle creò una prima forma di crittografia a chiave pubblica, che influenzò Whitfield Diffie e Martin Hellman nella progettazione dello scambio di chiavi Diffie-Hellman.,

Alle idee di Diffie e Hellman mancava un aspetto importante che avrebbe reso il loro lavoro un fondamento della crittografia a chiave pubblica. Questa era una funzione unidirezionale che sarebbe stata difficile da invertire. Nel 1977, Ron Rivest, Adi Shamir e Leonard Adleman, i cui cognomi formano l’acronimo RSA, si avvicinò con una soluzione dopo un anno di lavoro sul problema.

Gli accademici del MIT-based hanno fatto la loro svolta dopo una festa di Pasqua nel 1977., Dopo una notte di bere, Rivest tornò a casa, ma invece di dormire, trascorse la serata febbrilmente scrivendo un documento che formalizzava la sua idea per la necessaria funzione a senso unico.

L’idea è stata brevettata nel 1983 dal MIT, ma non è stato fino ai primi giorni di internet che l’algoritmo RSA ha cominciato a vedere l’adozione diffusa come un importante strumento di sicurezza.

Come funziona la crittografia RSA?

Quanto segue sarà un po ‘ una semplificazione, perché troppi lettori sono stati probabilmente sfregiati dal loro insegnante di matematica del liceo., Per evitare che la matematica diventi troppo fuori mano, semplificheremo alcuni concetti e utilizzeremo numeri molto più piccoli. In realtà, la crittografia RSA utilizza numeri primi che sono molto più grandi in grandezza e ci sono alcune altre complessità.

Ci sono diversi concetti che dovrai capire prima di poter spiegare come tutto si adatta. Questi includono le funzioni botola, generando i numeri primi, la funzione totient di Carmichael e i processi separati coinvolti nel calcolo delle chiavi pubbliche e private utilizzate nei processi di crittografia e decrittografia.,

Funzioni botola

La crittografia RSA funziona con la premessa che l’algoritmo è facile da calcolare in una direzione, ma quasi impossibile al contrario. Ad esempio, se ti dicessero che 701.111 è un prodotto di due numeri primi, saresti in grado di capire cosa sono questi due numeri?

Anche con una calcolatrice o un computer, la maggior parte di noi non avrebbe alcuna idea di dove cominciare, per non parlare di essere in grado di capire la risposta. Ma se capovolgiamo le cose, diventa molto più facile., Qual è il risultato di:

907 x 773

Se fossi abbastanza annoiato, saresti stato in grado di estrarre il tuo telefono o magari calcolarlo nella tua testa per scoprire che la risposta è il 701,111 precedentemente menzionato. Questo 907 e 773 sono i numeri primi che rispondono alla nostra prima domanda, il che ci mostra che certe equazioni possono essere facili da capire in un modo, ma apparentemente impossibili al contrario.

Un altro aspetto interessante di questa equazione è che è semplice capire uno dei numeri primi se hai già l’altro, così come il prodotto., Se ti viene detto che 701,111 è il risultato di 907 moltiplicato per un altro numero primo, puoi capire l’altro primo con la seguente equazione:

701,111 ÷ 907 = 773

Poiché la relazione tra questi numeri è semplice da calcolare in una direzione, ma incredibilmente difficile al contrario, l’equazione è nota come funzione botola. Essere consapevoli del fatto che, mentre l’esempio di cui sopra è difficile per le persone a capire, i computer possono fare l’operazione in una banale quantità di tempo.

A causa di ciò, RSA utilizza numeri molto più grandi., La dimensione dei numeri primi in una reale implementazione RSA varia, ma in RSA a 2048 bit, si unirebbero per creare chiavi lunghe 617 cifre. Per aiutarti a visualizzarlo, una chiave sarebbe un numero di queste dimensioni:

Generazione di numeri primi

Le funzioni della botola sopra menzionate costituiscono la base per il funzionamento degli schemi di crittografia a chiave pubblica e privata. Le loro proprietà consentono di condividere le chiavi pubbliche senza mettere in pericolo il messaggio o rivelare la chiave privata. Consentono inoltre di crittografare i dati con una chiave in un modo che può essere decifrato solo dall’altra chiave della coppia.,

Il primo passo per crittografare un messaggio con RSA consiste nel generare le chiavi. Per fare ciò, abbiamo bisogno di due numeri primi (p e q) che sono selezionati con un test di primalità. Un test di primalità è un algoritmo che trova in modo efficiente i numeri primi, come il test di primalità Rabin-Miller.

I numeri primi in RSA devono essere molto grandi e anche relativamente distanti. I numeri che sono piccoli o più vicini sono molto più facili da decifrare. Nonostante questo, il nostro esempio utilizzerà numeri più piccoli per rendere le cose più facili da seguire e calcolare.,

Diciamo che il test di primalità ci dà i numeri primi che abbiamo usato sopra, 907 e 773. Il passo successivo è quello di scoprire il modulo (n), utilizzando la seguente formula:

n = p x q

Dove p = 907 e q = 773

Quindi:

n = 907 x 773

n = 701,111

Carmichael totient funzione

una Volta che abbiamo n, usiamo Carmichael totient funzione:

λ(n) = mcm (p − 1, q − 1)

Se è passato del tempo da quando hai raggiunto la matematica libri di testo, di cui sopra potrebbe sembrare un po ‘ terrificante., Puoi saltare questa parte e fidarti che la matematica funzioni, altrimenti rimani con noi per qualche altro calcolo. Tutto sarà spiegato nel modo più dettagliato possibile per aiutarti a capire le basi.

Per coloro che non sono consapevoli, λ(n) rappresenta il totiente di Carmichael per n, mentre lcm significa il multiplo comune più basso, che è il numero più basso in cui sia p che q possono dividere. Ci sono alcuni modi diversi per capirlo, ma il più facile è fidarsi di un calcolatore online per fare l’equazione per te., Quindi inseriamo i nostri numeri nell’equazione:

λ(701,111) = lcm (907 − 1, 773 − 1)

λ(701,111) = mcm (906, 772)

Utilizzando il calcolatore di link qui sopra, questo ci dà:

λ(701,111) = 349,716

Generare la chiave pubblica

Ora che abbiamo Carmichael totient dei nostri numeri primi, è tempo di capire la nostra chiave pubblica. Sotto RSA, le chiavi pubbliche sono costituite da un numero primo e, così come n. Il numero e può essere qualsiasi cosa tra 1 e il valore per λ(n), che nel nostro esempio è 349,716.,

Poiché la chiave pubblica è condivisa apertamente, non è così importante che e sia un numero casuale. In pratica, e è generalmente impostato a 65.537, perché quando i numeri molto più grandi sono scelti a caso, rende la crittografia molto meno efficiente. Per l’esempio di oggi, manterremo i numeri piccoli per rendere i calcoli efficienti. Diciamo:

e = 11

I nostri dati crittografati finali sono chiamati testo cifrato (c). Lo ricaviamo dal nostro messaggio in chiaro (m), applicando la chiave pubblica con la seguente formula:

c = me mod n

Abbiamo già creato e e conosciamo anche n., L’unica cosa che dobbiamo spiegare è mod. È un po ‘ fuori dalla profondità di questo articolo, ma si riferisce a un’operazione modulo, che significa essenzialmente il resto rimasto quando si divide un lato dall’altro. Ad esempio:

10 mod 3 = 1

Questo perché 3 va in 10 tre volte, con un resto di 1.

Torna alla nostra equazione. Per semplificare le cose, diciamo che il messaggio (m) che vogliamo crittografare e mantenere segreto è solo un singolo numero, 4., Inseriamo tutto:

c = me mod n

c = 411 mod 701,111

c = 4,194,304 mod 701,111

Ancora una volta, per rendere il funzionamento del modulo facile, useremo un calcolatore online, ma sei il benvenuto a capirlo da solo. Inserendo 4,194,304 nel calcolatore online, ci dà:

c = 688,749

Quindi quando usiamo RSA per crittografare il nostro messaggio, 4, con la nostra chiave pubblica, ci dà il testo cifrato di 688,749., I passaggi precedenti potrebbero essere sembrati un po ‘ troppo matematici, ma è importante ribadire ciò che è effettivamente accaduto.

Avevamo un messaggio di 4, che volevamo mantenere segreto. Abbiamo applicato una chiave pubblica ad esso, che ci ha dato il risultato crittografato di 688.749. Ora che è crittografato, possiamo inviare in modo sicuro il numero 688,749 al proprietario della coppia di chiavi. Sono l’unica persona che sarà in grado di decifrarlo con la loro chiave privata. Quando lo decrittografano, vedranno il messaggio che stavamo davvero inviando, 4.,

Generazione della chiave privata

Nella crittografia RSA, una volta che i dati o un messaggio sono stati trasformati in testo cifrato con una chiave pubblica, può essere decifrato solo dalla chiave privata dalla stessa coppia di chiavi. Le chiavi private sono composte da d e n. Sappiamo già n, e la seguente equazione è usata per trovare d:

d =1/e mod λ(n)

Nella Generazione della chiave pubblica sezione sopra, abbiamo già deciso che nel nostro esempio, e sarebbe uguale a 11. Allo stesso modo, sappiamo che λ(n) è uguale a 349,716 dal nostro precedente lavoro sotto la funzione totient di Carmichael., Le cose diventano un po ‘ più complicate quando ci imbattiamo in questa sezione della formula:

1/e mod

Questa equazione potrebbe sembrare che ti stia chiedendo di dividere 1 per 11, ma non è così. Invece, questo simboleggia solo che dobbiamo calcolare l’inverso modulare di e (che in questo caso è 11) e λ(n) (che in questo caso è 349,716).

Questo significa essenzialmente che invece di eseguire un’operazione modulo standard, useremo invece l’inverso., Questo si trova normalmente con l’algoritmo Euclideo esteso, ma è un po ‘ al di fuori dello scopo di questo articolo, quindi ci limiteremo a imbrogliare e utilizzare un calcolatore online invece., Ora che abbiamo capito tutto quello che sta succedendo, proviamo a collegare le nostre informazioni in formula:

d =1/11 mod 349,716

Per eseguire questa operazione, è sufficiente ingresso 11 (o qualsiasi valore che si può avere e se si sta tentando di questo con il tuo esempio) dove si dice Intero e 349,716 (o qualsiasi valore che si può avere per λ(n) se si sta tentando di questo con il tuo esempio) dove si dice Modulo in un calcolatore online che è stato collegato in precedenza., Se avete fatto tutto correttamente, si dovrebbe ottenere un risultato in cui:

d = 254, 339

Ora che abbiamo il valore di d, siamo in grado di decifrare i messaggi cifrati con la chiave pubblica utilizzando la seguente formula:

m = cd mod n

ora Possiamo tornare al testo che abbiamo crittografato con la Generazione della chiave privata sezione. Quando abbiamo crittografato il messaggio con la chiave pubblica, ci ha dato un valore per c di 688.749. Dall’alto, sappiamo che d è uguale a 254.339. Sappiamo anche che n è uguale a 701,111. Questo ci dà:

m = 688,749254,339 mod 701,111.,

Come avrai notato, cercare di portare un numero al 254.339 ° potere potrebbe essere un po ‘ troppo per la maggior parte delle calcolatrici normali. Invece, useremo un calcolatore di decrittazione RSA online. Se volessi usare un altro metodo, applicheresti i poteri come faresti normalmente ed eseguirai l’operazione modulo nello stesso modo in cui abbiamo fatto nella Generazione della sezione chiave pubblica.,

il calcolatore collegato sopra, inserire 701,111 dove si dice di Alimentazione Modulo: N, 254,399 dove si dice Chiave di decodifica: D, e 688,749 dove si dice Cifrato Messaggio in forma numerica, come mostrato di seguito:

una Volta inseriti i dati, colpito Decifrare, che metterà i numeri attraverso la decifrazione formula che è stato elencato sopra. Questo vi darà il messaggio originale nella casella qui sotto. Se hai fatto tutto correttamente, dovresti ottenere una risposta di 4, che era il messaggio originale che abbiamo crittografato con la nostra chiave pubblica.,

Come funziona la crittografia RSA in pratica

Le sezioni precedenti dovrebbero darti una comprensione ragionevole di come funziona la matematica dietro la crittografia a chiave pubblica. Può essere un po ‘ confuso, ma anche chi non ha capito la complessità delle equazioni può sperare di portare via alcune informazioni importanti sul processo.

Nei passaggi sopra elencati, abbiamo mostrato come due entità possono comunicare in modo sicuro senza aver precedentemente condiviso un codice in anticipo. Innanzitutto, ciascuno di essi deve impostare le proprie coppie di chiavi e condividere la chiave pubblica l’una con l’altra., Le due entità devono mantenere segrete le loro chiavi private affinché le loro comunicazioni rimangano sicure.

Una volta che il mittente ha la chiave pubblica del destinatario, può utilizzarla per crittografare i dati che desidera mantenere al sicuro. Una volta che è stato crittografato con una chiave pubblica, può essere decifrato solo dalla chiave privata dalla stessa coppia di chiavi. Anche la stessa chiave pubblica non può essere utilizzata per decifrare i dati. Ciò è dovuto alle proprietà delle funzioni della botola che abbiamo menzionato sopra.

Quando il destinatario riceve il messaggio crittografato, utilizza la propria chiave privata per accedere ai dati., Se il destinatario desidera restituire le comunicazioni in modo sicuro, può quindi crittografare il messaggio con la chiave pubblica della parte con cui sta comunicando. Ancora una volta, una volta che è stato crittografato con la chiave pubblica, l’unico modo in cui è possibile accedere alle informazioni è attraverso la chiave privata corrispondente.

In questo modo, la crittografia RSA può essere utilizzata da parti precedentemente sconosciute per inviare in modo sicuro i dati tra di loro. Parti significative dei canali di comunicazione che usiamo nelle nostre vite online sono state costruite da questa fondazione.,

In che modo i messaggi più complicati vengono crittografati con RSA?

Nel nostro esempio, abbiamo semplificato molto le cose per renderlo più facile da capire, motivo per cui abbiamo crittografato solo un messaggio di “4”. Essere in grado di crittografare il numero 4 non sembra particolarmente utile, quindi ci si potrebbe chiedere come è possibile crittografare un insieme più complicato di dati, come una chiave simmetrica (che è l’uso più comune di RSA), o anche un messaggio.,

Alcune persone potrebbero essere perplesse di come una chiave come “n38cb29fkbjh138g7fqijnf3kaj84f8b9f…” o un messaggio come “comprami un panino” possa essere crittografato da un algoritmo come RSA, che si occupa di numeri e non di lettere. La realtà è che tutte le informazioni che i nostri computer elaborano sono memorizzate in binario (1s e 0s) e usiamo standard di codifica come ASCII o Unicode per rappresentarle in modi che gli esseri umani possono capire (lettere).,

Ciò significa che chiavi come “n38cb29fkbjh138g7fqijnf3kaj84f8b9f already” e messaggi come “comprami un panino” esistono già come numeri, che possono essere facilmente calcolati nell’algoritmo RSA. I numeri da cui sono rappresentati sono molto più grandi e più difficili da gestire per noi, motivo per cui preferiamo trattare con caratteri alfanumerici piuttosto che un guazzabuglio di binari.

Se si desidera crittografare una chiave di sessione più lunga o un messaggio più complesso con RSA, comporterebbe semplicemente un numero molto più grande.,

Padding

Quando RSA è implementato, utilizza qualcosa chiamato padding per aiutare a prevenire una serie di attacchi. Per spiegare come funziona, inizieremo con un esempio. Diciamo che stavi inviando un messaggio in codice a un amico:

Cara Karen,

Spero che tu stia bene. Ceniamo ancora domani?

Cordiali saluti,

James

Diciamo che hai codificato il messaggio in modo semplice, cambiando ogni lettera a quella che lo segue nell’alfabeto. Questo cambierebbe il messaggio in:

Efbs Lbsfo,

J ipqf zpv bsf xfmm., Bsf xf tujmm ibwjoh ejoofs upnpsspx?

Zpvst tjodfsfmz,

Kbnft

Se i tuoi nemici hanno intercettato questa lettera, c’è un trucco che potrebbero usare per cercare di decifrare il codice. Potrebbero guardare il formato della tua lettera e cercare di indovinare cosa potrebbe dire il messaggio. Sanno che le persone normalmente iniziano le loro lettere con “Ciao”,” Ciao”,” Caro ” o una serie di altre convenzioni.

Se provassero ad applicare “Ciao” o “Ciao” come prima parola, vedrebbero che non si adatterebbe al numero di caratteri. Potrebbero quindi provare “Caro”., Si adatta, ma questo non significa necessariamente nulla. Gli aggressori avrebbero solo provare e vedere dove li ha portati. Quindi cambierebbero le lettere “e”, “f”, “b” e “s” con “d”, “e”, “a” e “r” rispettivamente. Questo darebbe loro:

Caro Laseo,

J ipqe zpv sono xemm. Sono xe tujmm iawjoh djooes upnpsspx?

Zpvrt tjoderemz,

Kanet

Sembra ancora piuttosto confuso, quindi gli aggressori potrebbero provare a guardare alcune altre convenzioni, come il modo in cui concludiamo le nostre lettere. Le persone spesso aggiungono “Da” o” Cordiali saluti ” alla fine, ma nessuno di questi si adatta al formato., Invece, gli aggressori potrebbero provare “Cordiali saluti” e sostituire le altre lettere per vedere dove li ottiene. Cambiando ” z”, “p”, “v”, “t”, “j” “o”, “d” e “m” con “y”, “o”, “u”, “s”, “i”, “n”, “c” e” l ” rispettivamente, otterrebbero:

Caro Lasen,

I ioqe sei xell. Sono xe tuill iawinh dinnes uonossox?

Cordiali saluti,

Kanet

Dopo quella modifica, sembra che gli aggressori stiano iniziando ad arrivare da qualche parte. Hanno trovato le parole ” Io”, “tu” e “sei”, oltre alle parole che componevano le loro ipotesi iniziali.,

Visto che le parole sono in ordine grammaticale corretto, gli aggressori possono essere abbastanza sicuri che si stanno dirigendo nella giusta direzione. Ormai, probabilmente hanno anche capito che il codice implicava che ogni lettera veniva cambiata in quella che la segue nell’alfabeto. Una volta che si rendono conto di questo, lo rende facile da tradurre il resto e leggere il messaggio originale.

L’esempio precedente era solo un semplice codice, ma come puoi vedere, la struttura di un messaggio può dare agli aggressori indizi sul suo contenuto., Certo, è stato difficile capire il messaggio dalla sua struttura e ci sono volute alcune congetture istruite, ma è necessario tenere a mente che i computer sono molto più bravi a farlo di noi. Ciò significa che possono essere utilizzati per capire codici molto più complessi in un tempo molto più breve, sulla base di indizi che provengono dalla struttura e da altri elementi.

Se la struttura può portare a un codice che viene violato e rivelare il contenuto di un messaggio, allora abbiamo bisogno di un modo per nascondere la struttura per mantenere il messaggio sicuro. Questo ci porta al padding.,

Quando un messaggio viene riempito, vengono aggiunti dati randomizzati per nascondere gli indizi di formattazione originali che potrebbero portare alla rottura di un messaggio crittografato. Con RSA, le cose sono un po ‘ più complicate, perché una chiave crittografata non ha la formattazione ovvia di una lettera che ha contribuito a darci indizi nel nostro esempio precedente.

Nonostante questo, gli avversari possono utilizzare una serie di attacchi per sfruttare le proprietà matematiche di un codice e rompere i dati crittografati. A causa di questa minaccia, le implementazioni di RSA utilizzano schemi di padding come OAEP per incorporare dati aggiuntivi nel messaggio., L’aggiunta di questo padding prima che il messaggio venga crittografato rende RSA molto più sicuro.

Firma messaggi

RSA può essere utilizzato per più di una semplice crittografia dei dati. Le sue proprietà lo rendono anche un sistema utile per confermare che un messaggio è stato inviato dall’entità che afferma di averlo inviato, oltre a dimostrare che un messaggio non è stato alterato o manomesso.,

Quando qualcuno vuole dimostrare l’autenticità del proprio messaggio, può calcolare un hash (una funzione che prende dati di dimensioni arbitrarie e li trasforma in un valore di lunghezza fissa) del testo in chiaro, quindi firmarlo con la propria chiave privata. Firmano l’hash applicando la stessa formula utilizzata nella decrittografia (m = cd mod n). Una volta che il messaggio è stato firmato, inviano questa firma digitale al destinatario accanto al messaggio.,

Se un destinatario riceve un messaggio con una firma digitale, può utilizzare la firma per verificare se il messaggio è stato autenticamente firmato dalla chiave privata della persona che afferma di averlo inviato. Possono anche vedere se il messaggio è stato modificato dagli aggressori dopo che è stato inviato.

Per controllare la firma digitale, il destinatario utilizza prima la stessa funzione hash per trovare il valore hash del messaggio ricevuto., Il destinatario applica quindi la chiave pubblica del mittente alla firma digitale, utilizzando la formula di crittografia (c = me mod n), per dare loro l’hash della firma digitale.

Confrontando l’hash del messaggio ricevuto insieme all’hash della firma digitale crittografata, il destinatario può stabilire se il messaggio è autentico. Se i due valori sono uguali, il messaggio non è stato modificato da quando è stato firmato dal mittente originale. Se il messaggio fosse stato modificato anche da un singolo carattere, il valore hash sarebbe completamente diverso.,

RSA security& attacca

Come la maggior parte dei criptosistemi, la sicurezza di RSA dipende da come viene implementata e utilizzata. Un fattore importante è la dimensione della chiave. Maggiore è il numero di bit in una chiave (essenzialmente per quanto tempo è la chiave), più difficile è decifrare attacchi come forzatura bruta e factoring.

Poiché gli algoritmi a chiave asimmetrica come RSA possono essere interrotti dalla fattorizzazione intera, mentre gli algoritmi a chiave simmetrica come AES non possono, le chiavi RSA devono essere molto più lunghe per raggiungere lo stesso livello di sicurezza.,

Attualmente, la dimensione della chiave più grande che è stata fattorizzata è lunga 768 bit. Questo è stato fatto da un team di accademici per un periodo di due anni, utilizzando centinaia di macchine.

Poiché il factoring è stato completato entro la fine del 2009 e la potenza di calcolo è cresciuta in modo significativo da quel momento, si può presumere che un tentativo di intensità simile potrebbe ora fatturare una chiave RSA molto più grande.

Nonostante ciò, il tempo e le risorse necessarie per questo tipo di attacco lo mettono fuori dalla portata della maggior parte degli hacker e nel regno degli stati nazionali., La lunghezza della chiave migliore da utilizzare dipenderà dal modello di minaccia individuale. Il National Institute of Standards and Technology raccomanda una dimensione minima della chiave di 2048 bit, ma le chiavi a 4096 bit vengono utilizzate anche in alcune situazioni in cui il livello di minaccia è più alto.

Il factoring è solo un modo in cui RSA può essere rotto. Un certo numero di altri attacchi hanno il potenziale per rompere la crittografia con una minore quantità di risorse, ma questi dipendono dall’implementazione e da altri fattori, non necessariamente RSA stessa. Alcuni di questi includono:

I numeri primi sono davvero casuali?,

Alcune implementazioni di RSA utilizzano deboli generatori di numeri casuali per creare i numeri primi. Se questi numeri non sono sufficientemente casuali, rende molto più facile per gli aggressori di loro fattore e rompere la crittografia. Questo problema può essere evitato utilizzando un generatore di numeri pseudo-casuali crittograficamente sicuro.

Scarsa generazione di chiavi

Le chiavi RSA devono rientrare in determinati parametri per essere sicure. Se i numeri primi p e q sono troppo vicini, la chiave può essere facilmente scoperta. Allo stesso modo, il numero d che costituisce parte della chiave privata non può essere troppo piccolo., Un valore basso lo rende facile da risolvere. È importante che questi numeri siano di lunghezza adeguata per mantenere la chiave al sicuro.

Attacchi a canale laterale

Si tratta di un tipo di attacco che non interrompe direttamente RSA, ma utilizza invece le informazioni dalla sua implementazione per dare agli aggressori suggerimenti sul processo di crittografia. Questi attacchi possono includere cose come l’analisi della quantità di potenza che viene utilizzata o l’analisi della previsione del ramo, che utilizza misurazioni del tempo di esecuzione per scoprire la chiave privata.

Un altro tipo di attacco a canale laterale è noto come attacco temporale., Se un utente malintenzionato ha la capacità di misurare il tempo di decrittazione sul computer del proprio target per un numero di messaggi crittografati diversi, queste informazioni possono consentire all’utente malintenzionato di accertare la chiave privata del target.

La maggior parte delle implementazioni di RSA evita questo attacco aggiungendo un valore una tantum durante il processo di crittografia, che rimuove questa correlazione. Questo processo è chiamato accecamento crittografico.

La crittografia RSA è sicura per il futuro?

La buona notizia è che RSA è considerato sicuro da usare, nonostante questi possibili attacchi., L’avvertenza è che deve essere implementato correttamente e utilizzare una chiave che rientra nei parametri corretti. Come abbiamo appena discusso, le implementazioni che non utilizzano padding, utilizzano numeri primi di dimensioni inadeguate o hanno altre vulnerabilità non possono essere considerate sicure.

Se si desidera utilizzare la crittografia RSA, assicurarsi di utilizzare una chiave di almeno 1024 bit. Quelli con modelli di minaccia più elevati dovrebbero attenersi a chiavi di 2048 o 4096 bit se vogliono utilizzare RSA con sicurezza., Se sei consapevole dei punti deboli di RSA e lo usi correttamente, dovresti sentirti sicuro di usare RSA per la condivisione delle chiavi e altre attività simili che richiedono la crittografia a chiave pubblica.

Vedi anche: Tipi di crittografia comuni spiegati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *