N
Nhoya
Ultima modifica da un moderatore:
PGP, acronimo di Pretty Good Privacy è una suite di programmi che rende possibile l'utilizzo di una sessione (compresa autenticazione) completamente in modo anonimo
Il PGP è stato sviluppato da Phil Zimmermann (stesso sviluppatore di PGPfone e ZRTP)
Questo programma è famoso in tutto il mondo perchè è stato il primo a sfruttare un sistema di crittografia asimmetrica (anche se comunque ha la possibilità di avvalersi anche di quello simmetrico)
Possiamo suddividere il funzionamento del PGP in 8 passaggi fondamentali:
**Per la generazione della Session-key vengono utilizzati numeri pseudocasuali contenuti in un particolare algoritmo (contenuto nell' ANSI X9.17) e che utilizzano come input:
I sistemi a crittografia asimmetrica basano tutto il loro funzionamento su due chiavi (una pubblica e una privata). La chiave pubblica è addetta alla cifratura e può essere distribuita senza che l'algoritmo risulti indebolito, quella privata invece deve essere conosciuta SOLO e SOLTANTO dal proprietario in quanto è il fulcro che permette il decrypt del messaggio.
Sia la chiave pubblica che quella privata vengono generate randomicamente così da accrescerne ancora di più la sicurezza.
Gli algoritmi previsti per l'uso di PGP sono fra i più stabili e sicuri in circolazione, bisogna peró considerare che il processo di cifratura/decifratura ha ovviamente bisogno di un maggior numero di risorse rispetto all'invio degli stessi messaggi in chiaro, mi sembra ovvio.
--- Protocollo CAST-128 (CAST-5)
Il cifrario Utilizzato di default da PGP e GPG prende il nome di CAST-128 (predecessore di CAST-256) e appartiene a quella categoria di algoritmi denominati Cifrari di Feistel
Riporto qui sotto le quattro fasi del funzionamento:
Ha una chiave di lunghezza variabile dai 40 ai 128 bit e basa la resistenza del suo algoritmo sulle Substitution Box, che detto molto alla spicciola, convertono x bit in entrata in y in uscita rendendone più difficile la crittanalisi
In particolare questo protocollo utilizza operazioni XOR, sottrazioni e addizioni (modulari)
Diagramma Cast 128
Questo programma di base andrebbe utilizzato sfruttando la riga di comando, ma esistono parecchie GUI che vi faciliteranno la vita. Consiglio comunque di utilizzare la shell in quanto non si è limitati alle operazioni che la GUI ha preimpostato.
--- Compilare e Installare GPG
Logo GPG
Per installare GPG sui vostri terminali sarà necessario seguire la guida sotto riportata.
ma dal momento che potrebbero verificarsi errori in fase di compilazione è preferibile sviluppare le due operazioni distintamente
Ecco una lista dei metodi di installazione per le distro più conosciute (nel caso in cui non vi vogliate compilare i sorgenti)
ArchLinux (e derivate)
Debian (e derivate)
RedHat (e derivate)
Fedora (e derivate)
--- Configurare GPG
Ci mancano gli ultimi 3 passaggi ovvero:
Cominciamo per ordine, rechiamoci nel nostro terminale e digitiamo:
vi saranno richiesti Nome, Cognome, mail, un commento opzionale e una parola segreta (passphrase) molto importante perchè bloccherà l'accesso alla chiave privata quindi cercate di non dimenticarla e di non distribuirla in giro. (La passphrase potrebbe anche non essere inserita lasciando lo spazio vuoto e premendo invio ma è fortemente sconsigliato)
--- Generare ed utilizzare un certificato di revoca
Adesso il secondo passaggio vedrà protagonista il Certificato di Revoca.
Immaginate adesso che la vostra Identità (che è rappresentata dalla coppia di chiavi) viene compromessa (o perchè l'avete cambiata o perchè qualcuno è entrato in possesso della vostra passphrase). In questo caso avete necessità di un modo veloce per far sapere a tutti che quelle chiavi non sono più in uso e che probabilmente ne utilizzerete altre. Quello che vi permette di compiere questa operazione è il Certificato di Revoca.
Per generarlo digitiamo:
in questo modo avete creato un file chiamato revoca.asc che conterrà appunto il certificato.
Per utilizzare e quindi pubblicare il certificato di revoca basterà scrivere
e
--- I Keyserver
Alle volte si può sentire la necessità di voler condividere la propria chiave pubblica e di inserirla in uno spazio web, così da poter dare la possibilità a chiunque di potervi contattare , è il caso dei Keyserver ovvero veri e propri server adibiti appunto allo storage delle chiavi pubbliche
Per richiedere la chiave al Keyserver basta scrivere
Per inviarla invece basta inserire il comando
Per assicurarsi che una chiave appartenga davvero al legittimo proprietario usiamo un metodo fornito dal pgp stesso: la firma di autenticità da parte di altre chiavi pubbliche su una specifica chiave.
Quella di firmare una chiave è un'operazione utilizzata da molti che consiste nell'associare alla propria chiave una fingerprint.
Per firmare una chiave ci basta digitare il comando
e subito dopo
Adesso siamo pronti per poter cifrare e decifrare i messaggi.
Utilizziamo i seguenti comandi:
e
Se si fosse deciso di utilizzare la cifratura simmetrica allora avremmo dovuto aggiungere l'opzione -d e cambiare l'estensione da pgp a pgpi come sotto:
--- Enigmail, il PGP menu per Icedove e Thunderbird
Enigmail è un software che si associa ad uno dei client di posta tra Icedove e Thunderbird e rende più facile la gestione di chiavi e messaggi cifrati con RSA
per installare Enigmail scriviamo
N.B. Sono indispensabili GnuPG e un client di posta
Dopo aver configurato l'account mail ci basterà accedere alla voce OpenPGP presente nella barra superiore per poter interfacciarci graficamente con il management di PGP.
Consigliata la lettura anche di questi documenti:
Il PGP è stato sviluppato da Phil Zimmermann (stesso sviluppatore di PGPfone e ZRTP)
Questo programma è famoso in tutto il mondo perchè è stato il primo a sfruttare un sistema di crittografia asimmetrica (anche se comunque ha la possibilità di avvalersi anche di quello simmetrico)
Possiamo suddividere il funzionamento del PGP in 8 passaggi fondamentali:
- Generazione del Message Digest*
- Esecuzione della firma del Message Digest (calcolato precedentemente) utilizzando la Chiave privata
- La firma viene inclusa (in chiaro) nel messaggio
- Il messaggio viene compresso
- Generazione di una session-key (SK)**
- La SK viene utilizzata per cifrare il messaggio
- La precedente SK viene anchessa cifrata utilizzando però la Chiave pubblica dell'utente appartente al ricevente (non al mittente)
- Il pacchetto completo di tutto viene inviato al destinatario
**Per la generazione della Session-key vengono utilizzati numeri pseudocasuali contenuti in un particolare algoritmo (contenuto nell' ANSI X9.17) e che utilizzano come input:
- il seed value (64 bit) (numero casuale)
- la rappresentazione a 64 bit di data e ora della generazione
- una coppia di chiavi a 56 bit
- il seed value aggiornato
- la SK
I sistemi a crittografia asimmetrica basano tutto il loro funzionamento su due chiavi (una pubblica e una privata). La chiave pubblica è addetta alla cifratura e può essere distribuita senza che l'algoritmo risulti indebolito, quella privata invece deve essere conosciuta SOLO e SOLTANTO dal proprietario in quanto è il fulcro che permette il decrypt del messaggio.
Sia la chiave pubblica che quella privata vengono generate randomicamente così da accrescerne ancora di più la sicurezza.
Gli algoritmi previsti per l'uso di PGP sono fra i più stabili e sicuri in circolazione, bisogna peró considerare che il processo di cifratura/decifratura ha ovviamente bisogno di un maggior numero di risorse rispetto all'invio degli stessi messaggi in chiaro, mi sembra ovvio.
--- Protocollo CAST-128 (CAST-5)
Il cifrario Utilizzato di default da PGP e GPG prende il nome di CAST-128 (predecessore di CAST-256) e appartiene a quella categoria di algoritmi denominati Cifrari di Feistel
Riporto qui sotto le quattro fasi del funzionamento:
- (key schedule) Compute 16 pairs of subkeys {Kmi, Kri} from K
- (L0,R0) <-- (m1...m64). (Split the plaintext into left and right 32-bit halves L0 = m1...m32 and R0 = m33...m64.)
- (16 rounds) for i from 1 to 16, compute Li and Ri as follows
Li = Ri-1;
Ri = Li-1 ^ f(Ri-1,Kmi,Kri), (f is of Type 1, Type 2, or Type 3, depending on i)- c1...c64 <-- (R16,L16). (Exchange final blocks L16, R16 and concatenate to form the ciphertext.)
Ha una chiave di lunghezza variabile dai 40 ai 128 bit e basa la resistenza del suo algoritmo sulle Substitution Box, che detto molto alla spicciola, convertono x bit in entrata in y in uscita rendendone più difficile la crittanalisi
In particolare questo protocollo utilizza operazioni XOR, sottrazioni e addizioni (modulari)
Diagramma Cast 128
How to in linux - GPG
Un'implementazione di OpenPGP all'interno di sistemi Linux è GPG (Gnu Privacy Guard) realizzato da Werner Koch rilasciato per la prima volta nel lontano 1999. Nel 2000 invece, dato il grande successo, è stato anche un porting per versioni Windows
Questo programma di base andrebbe utilizzato sfruttando la riga di comando, ma esistono parecchie GUI che vi faciliteranno la vita. Consiglio comunque di utilizzare la shell in quanto non si è limitati alle operazioni che la GUI ha preimpostato.
--- Compilare e Installare GPG
Logo GPG
Per installare GPG sui vostri terminali sarà necessario seguire la guida sotto riportata.
- Rechiamoci sul sito https://www.gnupg.org/download/ e scarichiamo il pacchetto (che sarà in formato .tar.gz)
- utilizziamo il comando
Codice:
$ tar xvzf gnupg-x.x.x.tar.gz
- andiamo poi nella directory contenente il source e digitiamo
Codice:
$ ./configure --help
- Scriviamo adesso
Codice:
$ make
Codice:# make install
Codice:
# make && make install
Ecco una lista dei metodi di installazione per le distro più conosciute (nel caso in cui non vi vogliate compilare i sorgenti)
ArchLinux (e derivate)
Codice:
[COLOR=#000000]pacman -Sy gnupg[/COLOR]
Codice:
apt-get install gnupg
Codice:
rpm -q gnupg
Codice:
yum install gnupg
--- Configurare GPG
Ci mancano gli ultimi 3 passaggi ovvero:
- Generare le coppie di chiavi
- Creare un certificato di revoca
- Inserire le chiavi in un Keyserver (opzionale)
Cominciamo per ordine, rechiamoci nel nostro terminale e digitiamo:
Codice:
$ gpg --gen-key
--- Generare ed utilizzare un certificato di revoca
Adesso il secondo passaggio vedrà protagonista il Certificato di Revoca.
Immaginate adesso che la vostra Identità (che è rappresentata dalla coppia di chiavi) viene compromessa (o perchè l'avete cambiata o perchè qualcuno è entrato in possesso della vostra passphrase). In questo caso avete necessità di un modo veloce per far sapere a tutti che quelle chiavi non sono più in uso e che probabilmente ne utilizzerete altre. Quello che vi permette di compiere questa operazione è il Certificato di Revoca.
Per generarlo digitiamo:
Codice:
gpg --armor --output revoca.asc --gen-revoke ID.chiave
Per utilizzare e quindi pubblicare il certificato di revoca basterà scrivere
Codice:
gpg --import revoca.asc
Codice:
gpg --send-key ID.Chiave
--- I Keyserver
Alle volte si può sentire la necessità di voler condividere la propria chiave pubblica e di inserirla in uno spazio web, così da poter dare la possibilità a chiunque di potervi contattare , è il caso dei Keyserver ovvero veri e propri server adibiti appunto allo storage delle chiavi pubbliche
Per richiedere la chiave al Keyserver basta scrivere
Codice:
gpg --keyserver NOMEKEYSERVER --recv-key id_chiave
Per inviarla invece basta inserire il comando
Codice:
gpg --keyserver http://pool.sks-keyservers.net/ --send-key id_chiave
Per assicurarsi che una chiave appartenga davvero al legittimo proprietario usiamo un metodo fornito dal pgp stesso: la firma di autenticità da parte di altre chiavi pubbliche su una specifica chiave.
Quella di firmare una chiave è un'operazione utilizzata da molti che consiste nell'associare alla propria chiave una fingerprint.
Per firmare una chiave ci basta digitare il comando
Codice:
[COLOR=#000000][FONT=monospace]gpg --edit-key ID[/FONT][/COLOR]
Codice:
sign
Adesso siamo pronti per poter cifrare e decifrare i messaggi.
Utilizziamo i seguenti comandi:
Codice:
gpg --output file.gpg --encrypt --recipient [EMAIL="[email protected]"][email protected][/EMAIL] file
Codice:
gpg --output file --decrypt file.gpg
Se si fosse deciso di utilizzare la cifratura simmetrica allora avremmo dovuto aggiungere l'opzione -d e cambiare l'estensione da pgp a pgpi come sotto:
Codice:
gpg -d file.gpgi
--- Enigmail, il PGP menu per Icedove e Thunderbird
Enigmail è un software che si associa ad uno dei client di posta tra Icedove e Thunderbird e rende più facile la gestione di chiavi e messaggi cifrati con RSA
per installare Enigmail scriviamo
Codice:
# apt-get install enigmail
Dopo aver configurato l'account mail ci basterà accedere alla voce OpenPGP presente nella barra superiore per poter interfacciarci graficamente con il management di PGP.
Consigliata la lettura anche di questi documenti: