Algoritmi a chiave pubblica e autenticità dei dati (parte 1) | Ing. Eugenio Bonifacio
Tags: applicazioni sms, applicazioni web, cataloghi elettronici, commercio elettronico, consulenza agenzie web, consulenza opensource, consulenza oscommerce, consulenza Drupal, consulenza Wordpress, consulenza Zend Framework, e-commerce, portali web, sistemi di prenotazione, sistemi informativi, siti web comiso, siti web ragusa, siti web sicilia, software personalizzati, sviluppo firmware, programmatore php freelance, sviluppatore zend framework, sviluppatore doctrine, programmatore zend framework, programmatore doctrine, sviluppatore cakephp
29
Feb 12

Algoritmi a chiave pubblica e autenticità dei dati (parte 1)

 

Oggi voglio cominciare una piccolissima trattazione degli algoritmi di cifratura ed il loro utilizzo per fini di sicurezza informatica. In questa prima parte vorrei spiegare cos'è un algoritmo di cifratura a chiave asimmetrica e quali differenze ci sono con la cifratura a chiave simmetrica.

Piano piano stiamo cominciando a sentire parlare di dematerializzazione dei documenti e di identità digitale. Già usiamo con successo i servizi sicuri per trasferire informazioni sicure attraverso internet, come SSL e la firma digitale. Ma come funzionano? Su cosa basano il loro funzionamento?

Un algoritmo di cifratura è un procedimento informatico attraverso il quale si rendono non intelleggibili dei dati, nascondendo il loro reale significato al pubblico. In questo modo le informazioni possono viaggiare attraverso un mezzo insicuro, di pubblico dominio, senza il rischio di rivelarne il contenuto. Il vero destinatario dei dati potrà decifrare i dati attraverso l'ausilio di una chiave, e sarà l'unico in grado di accedere alle informazioni contenute.

Tutti i concetti di crittografia sono basati su algoritmi matematici per cui ognuno ha i propri punti deboli e di forza, oltre ad ambiti di utilizzo specifici. Partiamo dal presupposto che non ci sono metodi sicuri al 100% ed in effetti la sicurezza di questi algoritmi si basa sulla probabilità di essere violati attraverso un brute force, ossia provando a decifrare il messaggio usando tutti le chiavi possibili. Naturalmente da effettuarsi attraverso dei supercomputer. Anche di questo si deve tenere conto quando si parla di avanzamento della tecnologia. Venti anni fa non era immaginabile avere le potenze di calcolo di oggi, per cui alcuni algoritmi dell'epoca sono diventati superati proprio perchè la tecnologia ha permesso di forzarli abbastanza velocemente. Gli algoritmi usati oggi hanno bisogno di centinaia di anni per essere forzati, quindi attualmente sono abbastanza sicuri, ma cosa succederà se di colpo si scoprisse il modo di produrre macchine migliaia di volte più veloci? Oggi leggo spesso di tentativi di forzatura basati su cloud computing, ossia reti composte da centinaia di calcolatori che si distribuiscono il carico di lavoro. Spesso lo scopo di questi è mostrare la fragilità dei sistemi attuali; per fortuna nessuno ha portato a successo questi esperimenti su cose veramente importanti.

Ovviamente la sicurezza non dipende solo dalla statistica, ma purtroppo anche dagli errori che si possono annidare nell'implementazione dei vari algoritmi o da condotte di conservazione delle chiavi non proprio sicure. Quest'ultimo è di gran lunga il punto più debole. Oggi infatti l'attenzione dei pirati informatici non è più rivolta alla forzatura degli algoritmi o alla scoperta di falle di sicurezza, quanto al furto delle credenziali per la decifratura. Ci si rende conto come questo sia un problema da non sottovalutare mai, si parla di furto di identità digitale, cioè chiunque si può spacciare per noi.

Tornando agli algoritmi di cifratura, ne esistono di due tipologie a chiave simmetrica e chiave asimmetrica. Fondamentamente entrambi agiscono allo stesso modo:

Il messaggio in chiaro, cioè un qualsiasi documento in formato digitale, viene cifrato da un mittente per mezzo di un algoritmo e di una chiave. La chiave non è altro che una sequenza di bit di opportuna lunghezza. Il messaggio cifrato viaggia attraverso un mezzo insicuro fino a destinazione. A questo punto, il destinatario lo decifra attraverso una chiave in suo possesso rivelatagli opportunamente dal mittente.

La differenza tra un algoritmo a chiave simmetrica ed uno a chiave asimmetrica è la seguente:

  • L'algoritmo a chiave simmetrica utilizza la stessa chiave sia per cifrare che per decifrare;
  • L'algoritmo a chiave asimmetrica utilizza una coppia di chiavi complementari. Ciò che viene cifrato con l'una può essere decifrato solo con l'altra.

Semplificando, utilizzano un algoritmo a chiave simmetrica tutti quei sistemi che per criptare ci chiedono una password (in questo caso è una chiave formata da gruppi di bit, i caratteri). Gli algoritmi a chiave asimmetrica generalmente non chiedeno password perchè il meccanismo è più complesso e trasparente all'utente.

La crittografia a chiave asimmetrica oggi è la base del funzionamento di due tecnologie in particolare su cui si basa l'evoluzione di internet come strumento di commercio e scambio di documenti riservati: il protocollo SSL e la firma digitale. Probabilmente vista l'importanza dell'argomento si deve andare coi piedi di piombo, un errore di valutazione potrebbe compromettere l'economia mondiale, anche per questo il processo di dematerializzazione dei documenti sta andando molto lentamente.

Algoritmi di crittografia a chiave simmetrica privata

In un algoritmo a chiave simmetrica la chiave di cifratura e decifratura coincidono, quindi è necessario mantenere la chiave al sicuro. E' un algoritmo molto veloce rispetto a quelli asimmetrici, per cui può essere utilizzato in ambiti di calcolo non particolarmente performanti. Soprattutto viene usato quando gli utilizzatori si conoscono, perchè il trasferimento della chiave a distanza è un'operazione potenzialmente sensibile.

Algoritmi di crittografia a chiave pubblica

In questo genere di algoritmi viene creata una coppia di chiavi pubblica/privata. Ciò che viene criptato con l'una può essere decifrato solo con l'altra. La cosa importante comunque è mantenere riservata la chiave privata. La chiave pubblica invece può essere, appunto, distribuita pubblicamente. In questo caso però l'algoritmo è più complesso.

Nella seconda parte vedremo come gli algoritmi a chiave asimmetrica vengono utilizzati nella pratica per la sicurezza digitale dei dati scambiati.