Sei sulla pagina 1di 1
Figura pe infomecta F «Lz Programmzzone.Popolarel« hp /nfomedia Come generare chiavi GPG e SSH Una guida passo-passo per generare le tutte registrarle ed utilizzarle. proprie chiavi L crittografia non serve solo a “nascondere” dati sensibili (dati personali, password, etc,..) ¢ criptare le connessioni internet per proteggerle da malintenzionati. B’ utilizzata anche per farsi “identificare” in rete (questo é in genere uso che si fa di GPG), cio® a realizzare la famosa “firma digitale” con Ja quale si pud garantie la provenienza e lintegrita dei file che scarichiamo dalla rete. In questarticolo vedremo come generare le proprie chiavi GnuPG, come diffonderle attraverso dei server dedicati, come utilizzarle per spedire messaggi di posta elettronica firmati. Vedremo inoltre come generare le proprie chiavi SSH; nel prossimo numero vedremo come utilizzare le chiavi SSH per accedere a macchine remote e come organizzare questi accessi. Chiavi GPG Gnu Privacy Guard (GPG) é il programma (conforme allo standard OpenPGP) che consente di creare e manipolare le proprie chiavi crittografiche con cui cifrare/decifrare documenti e firmare digitalmente file o messaggi. E” compatibile con PGP, e si trova installato di default su tutte le distribuzioni. Nel caso in cui non sia presente sulla vostro sistema potete cercarlo sul sito (http: //www.gnupg.org) o sul sito della vostra distribuzione. Quello che segue si riferisce ad un sistema GNU/Linux, ma vale in generale per ogni sistema operativo su cui é disponibile GPG. Il primo passo per utilizzare GPG & quello di generare una coppia di chiavi. Questa & un’operazione che pud essere fatta agevolmente dal terminale (vedi Riquadro 2) con il comando: $ gpg --gen-key A questo punto dobbiamo rispondere ad alcune domande. + Laprima riguarda il tipo di algoritmo da utilizzare per generare la chiave. E consigliato rispondere con quello indicato di default (DSA/EIGamal). + Laseconda domanda riguarda la hmghezza della chiave. Maggiore @ la Junghezza della chiave, minore é la probabilita di riuscire a decifrare un messaggio. La risposta di default (1024 bit) in genere é accettabile. + Suecessivamente il programma chiede il periodo di validita della chiave. Se volete creare una chiave di “prova”, vi consiglio di scegliere un periodo breve, + Aquesto punto é il momento di specificare la nostra identita: nome e cognome, e-mail e un commento (ad esempio il vostro nick, oppure un riferimento al contesto in cui userete la chiave). Potete modificare i dati inseriti fino ad ora oppure premere Ok per proseguire. + Ilsistema ora chiederd una passphrase che dovrete utilizzare tutte le volte che utilizzerete la chiave (per garantime il vostro esclusivo utilizzo). Ovviamente dovrete cercare di usare uma passphrase che non sia facilmemte indovinabile (evitare nomi, cognomi, date, etc..). A questo punto il sistema genera la chiave. E’ divertente notare come il sistema vi chiedera di muovere il mouse o digitare a caso sulla tastiera per migliorare la “casualita” con cui viene generata la chiave. Al termine delloperazione il programma vi mostra la fingerprint della vostra chiave. Fatti questi semplici passi avete appena creato una vostra identit& digitale. Sebbene non sia strettamente necessario, bene creare anche un cettificato di revoca, in modo da poter invalidare le coppie di chiavi in caso smarriste la vostra passphrase o nel caso in cui la vostra chiave risulti compromessa o vada persa. Questo certificato va custodito con cura in un luogo separato dal pe. Alla chiave appena creata @ associato un “uid” (composto dagli ultimi 8 caratteri della fingerprint). GnuPG offre anche la possibilita di associare una nostra immagine fotogratica alla chiave. Inanzitutto bisogna preparare Viimagine in formato jpeg. La dimensione consigliata é 240x288, ma dovete tenere presente che la dimensione della fotografia aumenta quella della chiave. A questo punto potete usare il comando $ gpg --edit-key uid Si aprir& un programma interattivo con il quale & possibile modificare i parametri della chiave come vedremo piit avanti. Al prompt potete dare il comando “addphoto” e scrivere il nome del file in cui avete messo la vostra foto, Lid verra aggiunto alla chiave e la foto pud essere visualizzata con il comando “showphoto”, Nel caso il vostro sistema non sia in grado di visualizzare la foto, potete far riferimento alla pagina di manuale di gpg (man gpg”) per vedere come specificare un visualizzatore di immagini. Diffusione delle chiavi Ora possiamo cominciare ad usare le chiavi create. Il primo passo & diffondere il pitt possibile la chiave pubblica (vedi Riquadro 1). La chiave pud essere esportata su un file con questo comando: $ gpg --export -a uid > chiave.tat dove uid @ il riferimento alla vostra chiave. Potete specificare gli ultimi 8 caratteri della fingerprint o il vostro nome, Femail utilizzata al momento della creazione delle chiavi. Lopzione ‘a’ serve a produrre in output un file ASGIT anziché un file binario, Si otterra un blocco simile al seguente: $ gpg --export -a zufue BEGIN PG DUBLIC KEY BLOCK-. Version: GnugG v1.2.4 (GNU/Linux) nQGi BEAAQg 4REACE GyodubQyhCuxwL9s5zWi fo¥ 6D70wLEHTT vidaz Pe4hRtzui Youll 1s¢ sRatB1laRO3Hp} rPq90 IWHRAMHTAiDbsLLenGNSeZayeCRTYNYO/ 09 [ 1 00 BND PGP PUBLIC KEY BLOCK---—- Le chiavi gpg sidistribuiscono generalmente attraverso i cosidetti “keyserver”. Per spedire la chiave ad un keyserver potete usare, ad esempio, il seguente comando: $ gpg ~-keyserver keyserver.linux.it --send-keys uid in alternativa, molti keyserver offrono un‘interfaccia web tramite la quale @ possibile immettere tutti i dati manualmente. Oltre a questo é bene aggiungere al proprio biglietto da visita (o preparare dei biglietti appositi) la fingerprint della vostra chiave (visualizzata al momento della creazione della chiave stessa, oppure stampabile con il comando “gpg—fingerprint uid”). Questo & necessario affinché i nostri corrispondenti possano importare correttamente la nostra chiave. Importare chiavi altrui & un‘operazione che si fa in tre passi: + Inostro corrispondente deve darei personalmente (o tramite un’altro canale considerato affidabile) la fingerprint della sua chiave publica. La fingerprint contiene (come detto sopra) IID della chiave. + Importiamo tramite un keyserver (i keyserver sono sineronizzati tra di oro) la chiave publica con il comando: $ gpg --keyserver keyserver.linux.it --recv-keys uid A questo punto la chiave & nel nostro keyring, + Verifichiamo che si tratti della chiave vera. Stampiamo la fingerprint: $ gpg --fingerprint uid econfrontiamola con quella che il nostro corrispondente ci ha dato personalmente. Questa é unica procedura con la quale possiamo stabilire con precisione che abbiamo importato la chiave giusta. Infatti @ possibile generare chiavi gpga nome di chiunque e distribuirle in rete, Per arginare questo fenomeno, & possibile firmare le chiavi pubbliche dei nostri corrispondent : pid firme contiene una chiave, pitt aumenta il grado di fiducia con cui possiamo utilizzare le chiavi pubbliche altrui, Se i tre passaggi indicati sopra sono stati eseguiti correttamente, possiamo firmare digitalmente la chiave publica che abbiamo appena importato. Questo si pud fare agevolmente con il comando: $ gpg --edit-key uid Al prompt potete digitate il comando “sign”. Vi verra chiesto il grado di fiducia con cui ritenete autentica la chiave: dovete rispondere in base alla modalita con cui avete ricevuto la chiave. Sard un alto grado di fiducia se avete ricevuto la chiave personalmente da qualcuno che conoscete da tempo; e sara basso se Pavete ricevuto da una persona che non avete mai visto, etc... Questo @ un punto importantissimo. Fatto questo, potete dare il comando “save” per salvare la firma aggiunta alla chiave. A questo punto avete due scelte: esportare la chiave pubblica modificata e rispedirla al mittente (in modo che questi possa aggiornare la chiave), oppure spedire la chiave del vostro corrispondente ad un keyserver (e avvisare il vostro corrispondente in modo che lui possa scaricare la sua chiave aggiornata). Generalmente si usa questa seconda procedura (a meno che non vi sia chiesto esplicitamente di adottare la prima). Manipolazione delle chiavi I comando ‘gpg—edit-key’ consente di fare molte altre operazioni sulle chiavi. elenco di queste operazioni si ottiene con il comando “help”. Fra queste le pitt comuni son: + aggiungere/rimuovere un'identita ad una chiave + aggiungere una nostra foto alla chiave (un‘immagine jpeg). + fare un’elenco delle firme apposte su ogni chiave Esistono ovviamente delle interfacce grafiche che consentono di manipolare le nostre chiavi GPG. Buoni tool grafici sono GPA (vedi Figura 1a) 0 SeaHorse (vedi Figura 1b). cel prafica che consente ci maniplate le ehiaw ap Figure tb Evolution Ne Agile al messaggio, GnuPG nello scambio di messaggi e la cifratura Una prassi piuttosto diffusa é quella di firmare digitalmente documenti tenendo il testo del documento in chiaro. In questo modo chiunque pud leggere il documento e inoltre i possessori della nostra chiave pubblica possono verificare sia la nostra identita, sia lintegrita del messaggio. Questa & una pratica usata spesso nello scambio di messaggi e-mail e nella pubblicazione di annunci sul web. Per cominciare abbiamo bisogno di un file di testo ASCII (che chiameremo “prova.txt”). Il file pud essere creato con un qualsiasi editor di testo: vim, kedit, gedit, openoffice, emacs, ...). A questo punto possiamo lanciare il comando: $ gpa --clearsign -a prova. txt dove prova.txt é il nome del file da firmare. Notate come gpg vi chiede di digitare la passphrase che avete scelto in fase di creazione della chiave. Questo comando produce il file prova.txt.asc che contiene due blocchi: uno con il testo del file originale e uno con la firma digitale alla fine del file. 11 file con la firma ha un aspetto di questo tipo: $ cat prova.txt.asc BEGIN PGP SIGNED wESsAcE-———- SHAL Hae! Ciao marco, gueste file 4 atato acritte per easere Fizmare con Gaupe. Come vedi il testo 2 eeritte in chiare e chiungue pud leggerlo. chi ha 1a mia chiave pubblica pud verificare anche Ltautenticita di gueste teste BEGIN PGP SIGNATURE. Version: Gnueg v1.2.4 (GNU/Linux) ipansqe AAVEChOXdeHWCwhoRALX/ AKCMavuge jzbrCDwehe9Aoiml zAkFOCUpIGE Spsocegkss1b2908sToQeOR= =EueA END PGP SIGNATURE Chi vorra controllare l'autenticité del messaggio potra usare il comando: $ gpg ~-verify file.txt.asc Loutput ci indichera il tipo di chiave usata per fare la firma (RSA, DSA, ete), Vautore della firma, e la validité della firma. Un utile esercizio per capire il funzionamento del sistema é questo: provate a modificare il testo del messaggio in chiaro e rieseguite la verifica. Otterrete un messaggio di errore ad indicare che il messaggio é stato alterato. Lo stesso principio viene utilizzato per la posta elettronica. In questo caso perd ogni mailer (Evolution, KMail, Mutt, Pine, Mozilla, etc..) ha delle funzioni integrate che consentono di fare tutte le operazioni di firma e verifica (vedi Figura 2). Nella documentazione del mailer che utilizzate troverete i dettagli. Altrettanto semplice @ cifrare un documento: scegliete un file sul vostro sistema e lanciate il comando: $ apg ~-encrypt File quando richiesto introducete Tid della chiave con cui volete criptare il file. Verra prodotto il file “file.gpg”. Per riottenere la versione decifrata potete usare il comando $ gpg --decrypt file.gpg > file Altre applicazioni di GnuPG GnuPG é usatissimo anche per garantire la provenienza e Vintegrita del software che scarichiamo dalla rete. Lidea é quella di firmare digitalmente i pacchetti in modo che gli utenti possano verificarne la validit prima di installare il software. Molte distribuzioni commerciali contengono nei CD installazione una chiave pubblica (Ia cui provenienza “dovrebbe" essere certa) con la quale controllare tutti gli update e il software aggiuntivo che viene scaricato successivamente tramite i server della casa produttrice. I dettagli per eseguire questi controlli sono contenuti nei manuali delle singole distribuzioni. Molti installer grafici eseguono automaticamente queste procedure Anche i programmi di chat sfruttano GnuPG per assicurare Tidentificazione delle persone che chattano. Uno molto famoso é Jabber (vedi Figura 3), che consente, tra altro, di scambiare messaggi con vari protocolli, tra cui 10Q, Messenger, etc.. Chiavi SSH SSH 2 un programma (basato sul protocollo SSL che consente di creare connessioni sicure) che permette il collegamento ad host remoti, spostare file tra macchine remote o, pit in generale, di eseguire comandi su server remoti in tutta sicurezza. II protocollo $SL inoltre @ molto utilizzato per le connessioni Internet (es: nei siti bancari), e rende possibile “Vincapsulamento” di qualsiasi connessione TCP in un “tunnel” criptato. Generando una coppia di chiavi SSH, @ possibile aumentare la sicurezza e la facilita di accesso a macchine remote. Creare una tale coppia di chiavi é molto pit semplice rispetto al caso di GPG, poich® queste chiavi non contengono informazioni personali. II comando 9 sshckeygen -t dss genera la coppia di chiavi. Al solito é richiesta una passphrase (che dovra essere digitata ogni volta che vorrete utilizzare la chiave). Di default le chiavi sono a 1024 bite vengono messe nel direttorio ~/.ssh/ e hanno nome id_dsa e id_dsa.pub. IL file con il suffisso .pub contiene oviamente la chiave publica. Specificando “-t dsa” nella riga di comando, chiediamo al programma di generare una chiave DSA compatibile con il protocollo SSH2. E bene sapere che ogni server SSH dispone di una coppia di chiavi SSH (senza passphrase) che vengono scambiate con i client SSH e vengono utilizzate per compiere le operazioni di cifratura e decifratura dei dati trasmessi, rendendo cos il canale di comunicazione “sicuro”. Queste coppie di chiavi sono generate automaticamente dal programma di installazione del server quindi non dovete curarvi di generarle, Come anticipato, nel prossimo numero vedremo come esportare queste chiavi su host remoti in modo da organizzare gli accessi in modo sicuro su vari host. Conclusioni GnuPG & uno strumento largamente utilizzato per comunicare su Internet, non solo tramite la posta elettronica, ma come abbiamo visto, anche con alcuni protocolli di chat. In molti casi é essenziale per lo sviluppo di progetti comunitari in rete (specialmente per quello che riguarda la distribuzione di programmi e Faccesso a machine di sviluppo remote). Come abbiamo visto, Tuso di GnuPG é molto semplicee alla portata di tutti, grazie allintegrazione con i principali programmi di posta e alla disponibilita di interfacce grafiche. Nel prossimo numero completeremo la panoramica sull'uso delle chiavi crittografiche illustrando T'uso pratico delle chiavi SSH. Riquadro 1—Le chiavi asimmetriche I moderni modelli crittografici utilizzano una coppia di chiavi per cifrare i document II funzionamento é molto semplice: cid che viene cifrato con una chiave, pud essere decifrato solo dalla chiave che costituisce il paio, ¢ viceversa. Una delle chiavi che costituisce la coppia ® detta “privata” e va custodita al sicuro. Laltra chiave @ detta “publica” e va distribuita il pitt possibile, in modo che chiunque possa decifrare e controllare Pautenticita dei documenti cifrati o firmati che distribuiamo, Per la diffusione delle chiavi pubbliche, spesso si organizzano “GPG Party” in cui le persone si seammbianole chiavi. Controllate nelle attivita del vostro LUG! Riquadro 2—Nota sul?esecuzione di gpg Inalcune distribuzioni, il programma gpg non ha il permesso setuid(root). In questo caso, il programma genera un warning ogni volta che viene eseguito. Per evitare questo problema bisogna rendere il programma setuid (root), oppure aggiungere una riga che contiene la stringa ‘no-secmem-warning’ nel file di configurazione (~/.gnupg/gpg.conf oppure ~/.gnupg/options a seconda delle versioni). Riquadro 3—Riferimenti bibliografici [1] M. Ashley, “Manuale GNU sulla privacy” http://www.gnupg.org/gph/it index.htm] Trad. it, L. Cappelletti 9Q 7 @ infomedia gees DEV. 4: La Programmacione. Yc] developing ea Popolire!s« software bt norectait solutions DEV lariasta tut OEY pemette ici la programmaone al 3BC. DEV ¢ ance la fonte per prin spp atfasonante mone in possone 1 Disable pas | Disable search suggestions I computer della NASA — i 1] Disable dom performance Disable dom resource timing 1] Disable battery ap, ‘More from infomeet [More from DEV. developing software solu Piccola aggiornata guida alla Configurare EMACS Progetto Apollo paranoia della privacy per © Luigi Moret i on Cam O10 EES ° Responses @ 2 the Arse 20 write axesp