Differenza tra Algoritmi a chiave simmetrica e asimmetrica

Differenza tra Algoritmi a chiave simmetrica e asimmetrica

Introduzione alla crittografia

Il termine crittografia deriva dal greco antico, da due parole che possiamo tradurre come “scrittura segreta”. Ha radici storiche molto antiche, in quanto già in passato era necessario comunicare segretamente senza che altri intercettassero il contenuto della comunicazione.
Le varie tecniche che consentono di mantenere segreto il contenuto di un messaggio, vengono chiamate tecniche di cifratura e decifratura.
I messaggi da cifrare, detti testi in chiaro, vengono trasformati da una funzione parametrizzata da una chiave. L’output di questo processo di cifratura viene chiamato testo cifrato.
Decifrare è l’operazione legittima di lettura del messaggio cifrato, mentre decriptare è l’ attività di decifrazione da parte di un intruso malintenzionato. Un possibile intruso che cerca di scoprire il contenuto del messaggio durante la sua spedizione, non può fare altro che essere a conoscenza della chiave di cifratura per poterlo leggere, altrimenti vedrà solo lettere o simboli incomprensibili.

Gli intrusi appartengono principalmente a due categorie:

  • Intrusi passivi : cercano solo di capire il contenuto del messaggio
  • Intrusi attivi : cercano di modificare il contenuto del messaggio.

Differenza tra Algoritmi a chiave simmetrica e asimmetrica

Chiavi e Algoritmi

La segretezza della chiave è quindi un elemento fondamentale affinché la comunicazione resti sicura. La funzione o l’algoritmo di cifratura invece non deve essere segreto. Questo può sembrare un controsenso, ma dopo anni di esperienza si è concluso che, credere di avere un algoritmo segreto, quando in realtà l’intruso detto anche criptoanalista lo ha scoperto, produce più danno che guadagno.
In più rendendo pubblico un algoritmo di crittografia, si ottiene gratuitamente il test di numerose menti brillanti, che desiderano forzare il sistema per mostrare la propria intelligenza, avendo conferma o meno della sua robustezza.
Il principio è quindi di avere un algoritmo di cifratura pubblico ma complesso, per impedire all’ intruso di capire quale sia la chiave crittografica, pur avendo a disposizione una grande quantità di testo cifrato.

Esistono vari metodi per un criptoanalista per cercare di decriptare un messaggio, innanzitutto deve capire quale algoritmo è stato usato per la cifratura, poi deve scoprire la chiave. Per farlo può iniziare ragionare su di essa, oppure tentare un cosiddetto attacco a forza bruta, che significa provare tutte le possibili chiavi e combinazioni.
Qui entrano quindi in gioco le diverse tipologie di chiave. Dato che la vera segretezza sta in essa, la sua lunghezza è alla base della progettazione del sistema crittografico. Al giorno d’oggi gli algoritmi utilizzano come chiave una stringa che può variare dai 128 bit, ai 1024 bit, dipendendo anche dalla tecnica utilizzata. Una chiave da 128 bit, genera un possibile spazio di chiavi di 2128 ≈ 3 x 10^38 chiavi.

Due Principi fondamentali della crittografia

Sono due i principi della crittografia alla base dello studio dei diversi sistemi crittografici:

  1. Ridondanza
    Il primo principio dice che tutti i messaggi cifrati devono al loro interno contenere una parte ridondante, cioè una parte d’informazione non necessaria alla comprensione del messaggio stesso.
    Il destinatario deve quindi essere in grado di stabilirne la validità, con un semplice esame del contenuto o con un breve calcolo.
    Questo tecnica è necessaria per prevenire attacchi da parte di intrusi attivi, al contrario facilita la decrittazione degli intrusi passivi.
  2. Attualità
    Il secondo principio afferma che è necessario avere la possibilità di controllare che ogni messaggio sia stato trasmesso di recente. Questo per evitare che intrusi attivi inviino messaggi vecchi, proponendoli per nuovi, e per evitare attacchi a ripetizione di forzatura del codice.

Algoritmi a chiave simmetrica

Il principio alla base di questo tipo di algoritmi, sta nel fatto che viene usata la stessa chiave sia per cifrare che per decifrare il messaggio.
La maggior parte di questi utilizzano la tecnica della cifratura a blocco. Si prendono in input n bit alla volta dal testo in chiaro, e producono n bit di testo cifrato utilizzando la chiave. Tipicamente i blocchi vanno da un minimo di 64 bit ad un massimo di 256 bit. La trasformazione in testo cifrato avviene tramite varie iterazioni di trasposizione e sostituzione dei bit.

Tra i più famosi, possiamo citare DES1 (in disuso), triple DES (obsoleto, ma ancora in uso), AES2, IDEA3.
Uno dei vantaggi nella scelta di usare un algoritmo di tipo simmetrico è per la sua velocità. Infatti sia la cifratura che la decifratura risultano molto efficienti e rapidi. Lo svantaggio maggiore però, è che la chiave da utilizzare deve essere stata stabilita prima dell’inizio della comunicazione, e questo può pregiudicare fortemente la sicurezza.

Algoritmi a chiave simmetrica

Algoritmi a chiave pubblica o asimmetrica

Gli algoritmi a chiave pubblica o asimmetrica si distinguono rispetto ai precedenti, per il fatto che la chiave con la quale si cifra un messaggio è diversa dalla chiave con cui viene decifrato il messaggio. Inoltre la chiave di cifratura non è in alcun modo derivabile da quella di decifratura.

Ad ogni soggetto coinvolto che intenda comunicare, è quindi associata una coppia di chiavi:

  1. Una chiave privata, tenuta segreta ed utilizzata per decifrare i messaggi in arrivo dalla rete.
  2. Una chiave pubblica, resa disponibile a tutti, usata da qualsiasi soggetto del mondo esterno per cifrare un messaggio diretto al proprietario della relativa chiave privata.

Lo scenario di comunicazione opera in questo modo4:

  1. Bob intende comunicare con Alice. Si procura quindi la sua chiave pubblica, che è disponibile a tutti.
  2. Cifra il messaggio con la chiave appena ottenuta, e lo invia ad Alice.
  3. Alice riceve il messaggio, ed è l’unica che lo può decifrare, perché è la sola in possesso della chiave segreta relativa alla sua chiave pubblica.

Se ora Alice volesse rispondere a Bob in maniera sicura, dovrebbe quindi procurarsi la chiave pubblica di Bob, cifrare con questa il messaggio ed inviarlo. Bob dal canto suo sarebbe l’unico in grado di decifrarlo.
Il concetto generale alla base della crittografia asimmetrica, si fonda su principi matematici solidi. Precisamente sull’uso di un problema complesso, ovvero un operazione matematica facile da eseguire, ma difficile poter risalire agli elementi di partenza solo attraverso il risultato. Uno dei metodi più utilizzati è la scomposizione in fattori primi di numeri molto grandi, dalle trecento cifre in su. E’ molto facile e veloce moltiplicare due numeri primi, ben più difficile, laborioso e soprattutto lungo riottenere quei numeri dal risultato della loro moltiplicazione.

Algoritmi a chiave pubblica o asimmetrica

Tra gli algoritmi più famosi possono citare RSA, DSS e lo scambio di chiavi Diffie-Hellman.
Uno dei vantaggi più interessanti della tecnica degli algoritmi a chiave pubblica è la sicurezza. Infatti i soggetti coinvolti possono comunicare in tutta riservatezza, senza problema di essere intercettati.
Tuttavia un lato molto negativo può subentrare quando uno dei soggetti dichiara di essere chi in realtà non è. Questo è un problema molto grave e sono state inventate svariate soluzioni per risolvere ciò, come la firma e i certificati digitali e le PKI. Questi sfruttano un ulteriore proprietà degli algoritmi asimmetrici, ovvero che l’ordine in cui vengono usate le due chiavi può essere scambiato: si può cifrare un messaggio con la chiave privata e decifrarlo con la chiave pubblica.

Un altro dei principali svantaggi nell’uso di crittografia a chiave pubblica è la sua lentezza. Infatti per avere una buona sicurezza, è necessario utilizzare chiavi molto grandi. Per esempio l’algoritmo RSA che utilizza il metodo dei fattori primi, per essere considerato sicuro deve utilizzare chiavi da almeno 1024 bit, il che lo rende abbastanza lento.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: lavecchia.vi[email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

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