Come funziona Cos'è e cosa fa Web of trust

Gestione delle chiavi

La prima cosa che un nuovo utente di PGP deve fare, è la generazione della sua coppia di chiavi pubblica e privata. PGP offre la possibilità di scegliere fra diversi formati e due diversi algoritmi usati per la generazione:

  • Diffie-Hellman/DSS
  • RSA
  • Nella generazione della coppia di chiavi RSA, PGP utilizza numeri casuali.

    PGP usa due key-ring [1] che contengono le chiavi pubblica e privata dell'utente e le chiavi pubbliche delle persone che fanno uso di PGP. I key-ring sono due strutture:

  • Private key-ring usato per memorizzare le chiavi pubblica e privata dell'utente, i campi sono illustrati nella tabella 1.3:

    CampiDescrizione sintetica
    TIMESTAMPIndica l’ora in cui è stata generata la chiave.
    KEY ID 64 bit meno significativi della chiave pubblica.
    PUBLIC KEY Chiave pubblica.
    PRIVATE KEY Chiave privata cifrata con la passphrase.
    USER ID Proprietario della chiave.

  • tabella 1.3

  • Public key-ring: è usato per memorizzare le chiavi pubbliche delle persone note all’utente, i campi sono illustrati nella tabella 1.4:

    CampiDescrizione sintetica
    TIMESTAMPIndica l’ora in cui è stata generata o inserita la chiave.
    KEY ID 64 bit meno significativi della chiave pubblica.
    PUBLIC KEY Chiave pubblica.
    OWNER TRUST Fiducia nel proprietario della chiave
    KEY LEGITIMACY Fiducia nella chiave
    FIRMA Firma per la chiave
    SIGNATURE TRUST Fiducia nella firma
  • tabella 1.4

    Dopo aver generato la coppia di chiavi, PGP chiede all'utente di digitare una passphrase per proteggere la chiave privata. Tutte le volte che si vorrà usare la chiave segreta bisognerà digitare la passphrase. Quest'ultima è la versione estesa di una password, e in teoria, più sicura; può contenere spazi, numeri, caratteri e punteggiatura, al fine di essere praticamente impossibile da individuare, con una ricerca esaustiva, ma deve essere facile da ricordare. Nella figura 1.5 viene mostrato come PGP calcola l’indice di bontà della passphrase mentre viene digitata, è normale che la qualità di una passphrase aumenta se sono digitati caratteri che non hanno dipendenza gli uni con gli altri.

    Scelta della passphrase

    Figura 1.5

    La minima lunghezza richiesta da PGP per una passphrase è di 8 caratteri, se l'utente dovesse digitarne un numero inferiore, sarà visualizzato un messaggio in cui si avverte l'utente che non ha inserito il numero di caratteri richiesto, e che quella inserita non è una buona passphrase.

    Successivamente, PGP chiede all'utente se vuole inserire la sua chiave pubblica nel key-server. Questi ultimi, sono particolari server presenti su Internet, dedicati al deposito e al prelievo delle chiavi pubbliche. Sono in rete tra loro, per cui ogni chiave inserita in un server viene diffusa anche sugli altri. Ogni volta che si inserisce una nuova chiave si ha una sincronizzazione a catena di tutti i key-server che aggiornano i loro elenchi. Sono dei particolari database a cui è possibile accedere, per inserire una nuova chiave pubblica o per prelevarne una, con una semplice e-mail all’indirizzo del key-server, anche se non si dovrebbe fare molto affidamento sulle chiave pubbliche prelevate da un key-server. In genere sono gestiti dalle università. Ad esempio http://www.keys.pgp.net/, è il key-server gestito dal MIT.

    Per ogni chiave presente nel key-ring esiste un certificato [7]. E' costituito da un insieme di informazioni identificative legate insieme da una chiave pubblica e firmati da una terza parte fidata per provarne l'autenticità. PGP ne riconosce due formati differenti:

  • certificati PGP
  • certificati X.509
  • I certificati PGP associati ad ogni chiave presente nel key-ring, includono le informazioni descritte nella tabella 1.5:

    InformazioniDescrizione sintetica
    Version number Identifica quale versione di PGP è stata usata per creare la chiave associata col certificato.
    TimeIndica l'ora in cui è stata creata la chiave.
    ValidityIl periodo di validità della chiave.
    Key-TypeL'algoritmo che è stato usato per generare le chiavi, DH oppure RSA.
    User IdIdentifica il proprietario della chiave.
    Self-SignatureFirma ottenuta usando la chiave privata della chiave pubblica associata al certificato.
    Message digest algorithmAlgoritmo utilizzato per avere il message digest.
    Signed message digest Firma del message digest.
    Symmetric encryption algorithm Algoritmo di cifratura usato per cifrare le informazioni.

    tabella 1.5

    I certificati X.509 sono conformi allo standard internazionale ITU-T X.509. Esiste una autorità di certificazione (CA Certification Authority) che fa da garante. Sono costituiti da un insieme di informazioni descritte nella tabella 1.6:

    InformazioniDescrizione sintetica
    X.509 Version number Quale versione dello standard X.509 è stata usata per questo certificato.
    certificate holder's public key Chiave pubblica del proprietario del certificato.
    serial number Identificativo per questo certificato.
    Distinguished NameIdentificativo del proprietario del certificato.
    Validity Periodo di validità del certificato.
    certificate issuerIdentifica chi ha firmato il certificato, in genere CA.
    digital signature of the issuer Firma ottenuta usando la chiave privata di che ha firmato il certificato.
    signature algorithm identiferAlgoritmo utilizzato per firmare il certificato.

    tabella 1.6

    Le differenze tra certificati PGP e certificati X.509:

  • un utente può creare il proprio certificato PGP, mentre un certificato X.509 deve essere richiesto alla CA
  • i certificati X.509 supportano solo una firma per dimostrare la validità di una chiave.
  • Se le chiavi fossero compromesse sarà necessario generare un certificato di "chiave compromessa" per avvisare che una chiave pubblica non è più valida. Questo certificato sarà firmato con la chiave che si vuole revocare. PGP installerà il certificato nel key-ring di chiunque lo riceva impedendo l’uso della chiave compromessa.