Tecnologie e servizi di rete/Cenni di sicurezza e crittografia

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search
Indice del libro

Obiettivi di base e applicazioni della crittografia[modifica]

Nel contesto delle reti, gli obiettivi di base dei meccanismi di sicurezza sono:

  • autenticazione degli endpoint;
  • integrità dei dati: si vuole essere sicuri che i dati non siano stati modificati nel percorso dalla sorgente alla destinazione;
  • confidenzialità: si vuole garantire che i dati non siano letti da nessuno che non sia la destinazione prefissata.

Si ottengono questi obiettivi attraverso l'uso di meccanismi di crittografia. Questa viene usata in due diversi contesti, cioè per due azioni diverse:

  • criptazione: consiste nel cifrare i dati scambiati, cioè cambiare il contenuto dei pacchetti in maniera che solo chi è stato autorizzato possa ricostruire il contenuto originale;
  • firma: serve per garantire l'integrità dei dati e l'autenticazione del mittente, e si effettua aggiungendo in fondo al messaggio una piccola sequenza di byte, che dipende dai dati stessi e da alcune informazioni che ha il mittente:
    • gli endpoint possono accorgersi se i dati sono stati modificati, ricalcolando questa seguenza di byte;
    • il funzionamento è simile a quello di un codice di rilevamento d'errore, ma diversamente da esso la sequenza di byte apposta è basata su una chiave segreta.

Tipi di chiavi[modifica]

Si distinguono due tipi di chiavi:

  • chiave simmetrica (o condivisa): una stessa chiave, che è una sequenza di byte, viene usata sia per criptare/firmare, sia per decriptare/autenticare i dati. La chiave deve essere tenuta segreta tra le stazioni che comunicano, e questo rappresenta una difficoltà perché la comunicazione messa in atto per negoziare la chiave dovrebbe essere essa stessa sicura;
  • chiave asimmetrica: due chiavi diverse vengono usate per criptare/firmare e decriptare/autenticare i dati. Una delle due, quella detta chiave pubblica, serve per decriptare i pacchetti che l'host sorgente ha criptato tramite la propria chiave privata, e può essere condivisa senza preoccupazione; l'altra deve essere tenuta segreta. Le due chiavi sono tali che ciò che viene criptato con una delle due può essere decriptato solo con l'altra.
    • Se, ad esempio, si vuole inviare un file in maniera sicura, è possibile applicare un algoritmo di crittografia usando la chiave privata e diffondere quella pubblica: in questo modo chi vuole comunicare in modo sicuro con quell'host può usare quella chiave per cifrare il messaggio, poiché solo quell'host avrà la chiave privata e potrà decodificarlo.
    • Per verificare l'identità del mittente, il meccanismo è analogo: se si vuol fare in modo che degli utenti possano verificare che un messaggio proviene da un certo mittente, basterà che usino la chiave pubblica del mittente per decifrare i messaggi da esso inviati.

Vantaggi e svantaggi dei tipi di chiave[modifica]

  • Le chiavi asimmetriche sono meno robuste e richiedono più risorse computazionali per l'algoritmo che le impiega rispetto alle chiavi simmetriche.
  • In molti casi, si usano le chiavi asimmetriche per comunicare in maniera sicura e concordare una chiave simmetrica:
    • un host invia la chiave pubblica che intende usare per quella comunicazione unidirezionale con l'host destinazione;
    • l'host destinazione sceglie una chiave simmetrica e la inoltra criptandola con la chiave pubblica prima ricevuta;
    • l'host sorgente decripta il messaggio utilizzando la chiave privata, e da quel momento userà la chiave simmetrica contenuta.

Punto chiave: quando qualcuno riceve la chiave pubblica relativa ad una entità, esso deve essere sicuro dell'identità dell'entità, cioè che essa sia veramente chi dice di essere: a questo scopi si usano i certificati.

Certificati[modifica]

Sono dei documenti che consentono di verificare l'appartenenza di una chiave pubblica ad una entità. Un certificato digitale contiene:

  • informazioni sulla chiave;
  • informazioni sull'identità dei proprietari;
  • la firma digitale di un'entità che ha verificato i contenuti del certificato.

La firma non è altro che una sequenza di byte, una sorta di digest, cifrato con la chiave privata della certification authority. Verificare la firma significa controllare che il certificato sia stato validato dalla certification autority, quindi basta usare il suo certificato, che conterrà la chiave pubblica, per decifrare la firma. Il certificato dell'entità certificante potrebbe essere già noto all'host, ad esempio perché è già presente nel sistema operativo o nel web browser, o potrebbe dover essere scaricato e a sua volta verificato nello stesso modo. Il certificato della Root CA deve essere ottenuto inevitabilmente in maniera affidabile.