• Non ci sono risultati.

Allo scopo di fornire alcuni strumenti utili per chiarire la soluzione proposta per il Task 1 vengono nei seguenti paragrafi presentati alcuni cenni di crittografia.

Partiamo da alcune definizioni generali per poi esplorare alcuni algoritmi di crittografia comunemente utilizzati.

Se M è il messaggio da cifrare, C il messaggio cifrato, K la chiave, E la ‘funzione’ di cifratura e D quella di decifratura, e A e B sono due soggetti che intendono scambiarsi informazioni, nella crittografia moderna ci sono essenzialmente due tipi di cifratura, simmetrica ed asimmetrica.

5.3.1 Crittografia Simmetrica

In Figura 5.2 è schematizzata la cifratura simmetrica.

Figura 5.2: Cifratura simmetrica

Nella Crittografia Simmetrica esiste una unica chiave utilizzata per cifrare e decifrare il messaggio. C = E (M, K) and M = D (C, K). La chiave K deve essere tenuta segreta, quindi deve essere concordata in anticipo o trasmessa su di un canale sicuro. Questa modalità è comunemente utilizzata per scambi sicuri di informazioni, ma presenta le seguenti controindicazioni:

- Le chiavi devono essere comunicate in segreto, attraverso un canale sicuro

- Se la chiave è compromessa (ovvero un attaccante riesce a entrarne in possesso) allora tutti messaggi possono essere compromessi, ovvero decifrati e/o sostituiti

- Se si devono comunicare messaggi cifrati a molti utenti, è necessario concordare una chiave per ogni coppia di utenti, in modo che un destinatario non possa decifrare messaggi inviati ad un altro destinatario. Tuttavia, il numero delle chiavi da utilizzare e distribuire diventa velocemente molto grande.

Nonostante i problemi evidenziati la cifratura simmetrica è spesso utilizzata in quanto richiede minore potenza computazionale rispetto ad altre tecniche.

Alcuni algoritmi di crittografia simmetrica sono: Data Encryption Standard (DES) e varianti (3DES ad esempio), Advanced Encryption Standard (AES). In bibliografia sono presenti alcuni riferimenti per approfondire la conoscenza di tali algoritmi.

5.3.2 Crittografia Asimmetrica

Per superare alcuni limiti della cifratura simmetrica è possibile utilizzare una cifratura detta per differenza asimmetrica, esemplificata nella seguente Figura 5.3:

Figura 5.3: Cifratura asimmetrica

Nella Crittografia Asimmetrica ci sono due chiavi, K1 e K2, dette pubblica e privata, che consentono di ottenere vari risultati. La chiave pubblica è nota a chiunque, la privata solo al suo proprietario. Si ha che C = E (M, K1) ed M = D (C, K2). A cifra M trasformandolo in C, e lo invia a B. Se K1 è la chiave pubblica e K2 è la privata, e A è il soggetto sorgente che cripta il messaggio M in C con la chiave pubblica K1 del destinatario B si ottiene che solo B possa leggere l’informazione decifrandola con la sua chiave privata K2 (ciò consenta ad esempio di scambiarsi una chiave segreta e procedere con crittografia simmetrica). Nel caso invece che K1 sia la chiave privata e K2 la pubblica, A ottiene il risultato di ‘firmare’ il messaggio, in quanto questo potrà essere decodificato con la sua sola chiave pubblica (tipico esempio di firma digitale).

Si supponga che un attaccante possa intercettare tutte le comunicazioni tra A e B. Egli ad esempio intercetta la chiave pubblica e il messaggio cifrato durante le fasi intercorse nel primo

esempio descritto. Tuttavia non può decifrare il messaggio, perché è necessaria la chiave privata, che non viene mai trasmessa. Inoltre, diversi utenti possono utilizzare la stessa chiave pubblica di B per cifrare messaggi, perché la conoscenza della chiave pubblica non permette la decifrazione. Con questo sistema si risolvono di colpo i due problemi della crittografia simmetrica relativi alle chiavi da distribuire; in pratica:

- Le chiavi pubbliche possono essere trasmesse in un modo qualsiasi, la sicurezza delle trasmissione non dipende da queste, anzi devono essere note a chiunque voglia comunicare con il proprietario della chiave. Esistono varie tecnologie a supporto dello scambio di chiavi che può essere anche automatizzato.

- Se la chiave pubblica viene intercettata non c’è nessun problema, anzi è il normale funzionamento della cifratura asimmetrica. La chiave privata invece deve rimanere assolutamente riservata ma non bisogno di trasmetterla. Per un attaccante in pratica è impossibile intercettare l’unica chiave utile per la decifratura lungo il canale di trasmissione. - Se si devono comunicare messaggi cifrati a molti utenti, non è necessario concordare una chiave segreta su canale sicuro per ogni coppia di utenti, ma basta rendere pubbliche le rispettive chiavi.

Esistono vari tipi di algoritmi per la crittografia asimmetrica che si basano su differenti principi matematici. Ad esempio RSA (da Rivest, Shamir and Adleman, primi autori a descrivere pubblicamente l’algoritmo) e Rabin (dal nome del suo autore) si basano sulla fattorizzazione di numeri interi, ovvero sulla difficoltà di fattorizzare un numero formato dal prodotto di due numeri primi sufficientemente grandi. Invece ElGamal (dal nome del suo autore) e DHIES (Diffie-Hellman Integrated Encryption Scheme) si basano su di un problema matematico detto ‘problema del logaritmo discreto’, in inglese Discrete Logarithm Problem (DLP). Il problema maggiore della cifratura asimmetrica è che la potenza computazionale richiesta è molto maggiore che nel caso della simmetrica. In bibliografia sono presenti riferimenti che consentono di approfondire gli algoritmi citati.

5.3.3 Algoritmi ibridi

Sembrerebbe che la crittografia asimmetrica, sia molto migliore di quella simmetrica, in virtù dei vantaggi illustrati precedentemente. Tuttavia non è esente da alcuni problemi come la lentezza: gli algoritmi simmetrici sono molto più veloci di quelli asimmetrici nel cifrare e decifrare i dati, che di fatto sono piuttosto ‘pesanti’ dal punto di vista computazionale.

Per ovviare a questo problema si utilizzano algoritmi ibridi che combinano i vantaggi degli algoritmi simmetrici e di quelli asimmetrici. Questa può essere una buona soluzione anche per il campo agricolo, e nel seguito sarà discusso il motivo per cui è molto importante riuscire ad evitare di utilizzare la crittografia simmetrica.

L'idea consiste nel generare una chiave simmetrica casuale e cifrarla con la chiave pubblica asimmetrica del destinatario. Il mittente invierà la chiave cifrata. Il destinatario decifrerà con la propria chiave privata asimmetrica la chiave simmetrica casuale. La procedura potrebbe essere la seguente:

1. B invia ad A la sua chiave pubblica

2. A genera una chiave simmetrica casuale K e la cifra con la chiave pubblica di B 3. B riceve la chiave K cifrata e la recupera con la sua chiave privata

4. A questo punto sia B che A si sono accordati su una comune chiave K simmetrica con cui cifrare i messaggi

I vantaggi sono diversi: per prima cosa le comunicazioni saranno cifrate e decifrate con la chiave simmetrica K, molto più veloce e lo scambio della chiave K avviene in modo sicuro; solo il destinatario potrà decifrarla. Inoltre, per una maggiore sicurezza, si può generare una nuova chiave K quando si desidera (ad esempio al trascorrere di un certo intervallo o in funzione di una certa quantità di dati scambiati) e la si può inviare con lo stesso sistema. La chiave K viene generalmente detta chiave di sessione.

5.3.4 Crittografia in ISOBUS - ulteriori problemi

Riassumendo l’utilizzo di crittografia in un sistema in standard ISOBUS presenta svariate criticità. Sicuramente uno dei problemi è legato alla limitata potenza di calcolo disponibile, che limita l’utilizzo della crittografia asimmetrica nelle attuali centraline. Oltre a ciò analizzando il funzionamento dei vari tipi di crittografia emerge anche una altro problema. Se fossimo effettivamente costretti ad utilizzare esclusivamente crittografia simmetrica sarebbe necessario cablare nel software delle centraline le chiavi necessarie alla cifratura. E’ evidente che tale approccio presenta una notevole criticità. E’ evidente che non sarebbe saggio utilizzare una chiave unica, ad esempio per tutte le centraline di un singolo produttore perché

la compromissione di questa singola chiave comporterebbe la perdita di segretezza su tutti i dati prodotti sino a quel momento e la necessità di dover modificare la chiave in tutte le centraline ed i sistemi già funzionanti, una ipotesi molto difficilmente realizzabile. Immaginare di utilizzare chiavi diverse per il software di ogni singola centralina comporterebbe notevoli difficoltà per la gestione e la programmazione delle chiavi, tanto da doversi ritenere anch’essa una strada difficilmente praticabile.