Password in cassaforte e trust model di PKI e PGP


Non ho nulla in contrario al caro vecchio metodo della busta di carta con password di accesso a sistemi critici, chiusa con la ceralacca e messa in cassaforte. Ma nel 2008 ci sono sistemi più moderni!

Immaginiamo uno scenario, tipicamente di Business Continuity Planning (BCP), in cui particolari utenti, in condizioni critiche, debbano poter accedere a credenziali riservate. Come possiamo progettare una infrastruttura informatica che permetta ciò, rendendo l'accesso veloce e sicuro al tempo stesso?

Potremmo usare PGP o GnuPG nella sua versione FOSS e delineare due processi:



Processo di inizializzazione dell'infrastruttura di cifratura e firma

  • Installazione sulle macchine degli utenti selezionati di una versione di PGP o GnuPG: Gpg4win su Windows o GnuPG su Linux & Windows o, se avete voglia di spendere soldi, PGP;
  • Per ogni utente, creazione di una coppia di chiavi PGP; la passphrase di accesso alla chiave privata sarà scelta dallo stesso utente e dovrà rispettare alcune caratteristiche di sicurezza: complessità, lunghezza minima, lunghezza massima (per attacchi di tipo social engineering), etc.;
  • Definire una gerarchia delle chiavi PGP in relazione alla gerarchia aziendale; ricordo che il trust model di PGP è diverso da quello delle PKI (ma lo vedremo più avanti);
  • Firmare le chiavi pubbliche PGP degli utenti in un determinato livello gerarchico con quelle del livello superiore;

Processo per la cifratura del file delle credenziali


  • Memorizzare, in un ambiente sicuro e con una macchina sicura, un file di testo con le password critiche e cifrare tale file con TUTTE le chiavi pubbliche PGP degli utenti che vi dovranno accedere in caso di emergenza;
  • Far firmare il file cifrato dagli utenti di livello superiore con le loro chiavi private PGP;
  • Depositare il file cifrato e firmato in una condivisione di rete il cui accesso è monitorato e tracciato (dobbiamo sempre sapere chi accede e quando);
  • Introdurre della ridondanza depositando il file anche su diversi supporti quali chiavi USB da consegnare ad ogni utente di livello superiore (che terrà traccia delle richieste di tali supporti), oppure in modo analogo su CD-ROM;
  • Infine depositiamo il CD-ROM e la chiave USB in cassaforte ignifuga insieme alla cara e vecchia busta cartacea.
  • Ad ogni accesso al file cifrato dovranno seguire necessariamente una rigenerazione delle password e una nuova procedura di cifratura e distribuzione.

Quali possono essere i problemi in uno scenario simile?

  • ogni utente dovrà avere sempre a disposizione la propria coppia di chiavi PGP e un software per operarvi;
  • ogni utente dovrà custodire in modo appropriato la propria coppia di chiavi e la passphrase di accesso alla chiave privata;
  • ogni utente di livello superiore dovrà custodire con cura gli eventuali supporti magnetici con il file cifrato;
  • dovrà essere sempre tenuta traccia degli accessi degli utenti autorizzati alle credenziali cifrate, siano esse depositate su share di rete che su supporti magnetici in luoghi fisici;
  • le password di accesso ai sistemi devono essere cambiate in modo ciclico e il processo di cifratura deve essere ripetuto ex-novo;
  • i file decifrati debbono essere cancellati SEMPRE ed in modo sicuro;

Abbiamo parlato di PGP e di coppie di chiavi pubblico/private, ma allora che differenza c'è con una PKI (Public Key Infrastructure)?

Le PKI implementano un modello di trust che prevede delle autorità terze e fidate chiamate Registration Authority (RA) e Certification Authority (CA), le quali garantiscono un certificato identificandone il possessore in modo certo e firmandolo. Queste autorità sono organizzate in una gerarchia che diviene poi la catena di trust di un certificato pubblico. La catena di trust è la sequenza di certificati nella gerarchia, fino ad arrivare a quello dell'utente, in cui ogni certificato fidato è firmato dal precedente (fidato) e firmerà il successivo.

Una CA radice quindi firmerà il certificato radice di una CA subordinata, che a sua volta firmerà altre CA subordinate e così via, fino ad arrivare alla firma di un certificato utente per la firma di documenti, cifratura di mail, etc.

Questa gerarchia di enti certificatori introduce però una certa rigidità nella gestione dei certificati, che influisce in modo non sempre positivo nei processi aziendali legati ai certificati.

Un modello di trust differente è quello implementato da PGP o GPG: il Web of Trust.

Questo modello prevede che il certificato pubblico PGP sia firmato da altri utenti in possesso di una coppia di chiavi PGP in delle "riunioni di firma". Il trust della chiave pubblica è quindi implicato dalla fiducia che si attribuisce alle diverse persone che hanno firmato il certificato. Si procede in modo ricorsivo anche per la fiducia attribuita a tali firmatari.

Quali sono le differenze tra i due modelli?

Supponiamo di avere due certificati rispondenti ai due diversi modelli di trust: PKI e PGP.

Nel caso delle PKI il trust di un certificato utente è inferito dal certificato CA o subCA che lo ha firmato e che compare nella catena di trust contenuta nel certificato utente.

Qualsiasi utente potrà verificare il trust ripercorrendo la catena di trust e verificando che l'impronta del certificato radice CA al vertice della catena sia effettivamente valido (problema dei certificati fake). Nel caso quindi di PKI ci "fidiamo" dei "notai" esterni come le CA e verifichiamo che la loro firma sia sempre valida.

Nel caso di PGP, l'utente in possesso del certificato e della coppia di chiavi PGP, richiederà di firmare la propria chiave pubblica ad amici e conoscenti che, così facendo, aumenteranno il trust del suo certificato. Quando qualcuno vorrà verificare il trust di un certificato potrà analizzare gli autori delle firme, verificando per ognuno di essi il loro trust e così via, fino ad arrivare ad una persona conosciuta o di cui si fida.

Commenti

Post popolari in questo blog

Exploit: icsploit o espluà?

TrueCrypt 5.0: nuova release

ING Direct: ancora con il PAD numerico rotante!