Petrov - Crittografia

Da Wiki-itsos.

Situazione iniziale

Macchina di livello 1A e terminale

Obbiettivo

Cifrare e decifrare i documenti con GPG

Azioni svolte

-Avviare il terminale e fare il login come utente root con il comando sudo su

tech@Lab121Pc27:~$ sudo su
[sudo] password for tech: 
root@Lab121Pc27:/home/tech# 

-Installare il programma GPG con il comando apt-get install gpg

 root@Lab121Pc27:/home/tech# apt-get install gpg
 Lettura elenco dei pacchetti... Fatto
 Generazione albero delle dipendenze       
 Lettura informazioni sullo stato... Fatto
 root@Lab121Pc27:/home/tech# 

-Entrare nel programma e generare una coppia di chiavi, una pubblica e una privata con il comando gpg --gen-key

root@Lab121Pc27:/home/tech# gpg --gen-key
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
gpg: directory "/root/.gnupg" creata
gpg: creato un nuovo file di configurazione "/root/.gnupg/gpg.conf"
gpg: ATTENZIONE: le opzioni in "/root/.gnupg/gpg.conf" non sono ancora attive durante questa esecuzione del programma
gpg: portachiavi "/root/.gnupg/secring.gpg" creato
gpg: portachiavi "/root/.gnupg/pubring.gpg" creato

-Selezionare il tipo di chiave da utilizzare (RSA)

Selezionare il tipo di chiave:
   (1) RSA e RSA (predefinito)
   (2) DSA ed Elgaman
   (3) DSA (solo firma)
   (4) RSA (solo firma)
Selezione? 1
La lunghezza delle chiavi RSA è compresa tra 1024 e 4096 bit.
Quale dimensione impostare per la chiave? (2048) 1024
La dimensione chiave richiesta è 1024 bit
Specificare la durata di validità della chiave.
         0 = la chiave non scade
      <N>  = la chiave scade dopo N giorni
      <N>w = la chiave scade dopo N settimane
      <N>m = la chiave scade dopo N mesi
      <N>y = la chiave scade dopo N anni
Per quanto tempo deve essere valida la chiave? (0) 0
La chiave non scade
È tutto corretto? (s/N) s

-Impostare i seguenti parametri per l'identificativo dell'utente

 Nome reale: Petar
Indirizzo email: petiopetrov1996@gmail.com
Commento: pippo
È stato selezionato questo USER-ID:
    "<Petar (pippo) <petiopetrov1996@gmail.com>"
Modificare (n)ome, (c)ommento, (e)mail oppure (o)k/(u)scire? k
È necessaria una passphrase per proteggere la proprio chiave segreta.

-Inserire il passphrase

-le chiavi vengono salvate nella sottodirectory .gnupg della home directory

 tech@Lab121Pc27:~$ cd .gnupg/
tech@Lab121Pc27:~/.gnupg$ ll
totale 44
drwx------  2 tech tech 4096 nov 21 09:08 ./
drwxr-xr-x 35 tech tech 4096 nov 21 09:04 ../
-rw-------  1 tech tech 9398 nov 15 13:29 gpg.conf
-rw-------  1 tech tech 2390 nov 21 09:08 pubring.gpg
-rw-------  1 tech tech 2390 nov 21 09:08 pubring.gpg~
-rw-------  1 tech tech  600 nov 21 09:08 random_seed
-rw-------  1 tech tech 5146 nov 21 09:08 secring.gpg
-rw-------  1 tech tech 1360 nov 21 09:08 trustdb.gpg
tech@Lab121Pc19:~/.gnupg$

-il comando gpg --list-secret-keys mostra la chiave privata dell'utente

root@Lab121Pc27:/home/tech/.gnupg# gpg --list-secret-keys
/root/.gnupg/secring.gpg
-----------------------
sec   1024R/7FF3E7E7 2016-11-21
uid                  Petar (pippo) <petiopetrov1996@gmail.com>
ssb   1024R/0C936771 2016-11-21
sec   1024R/B0D87F84 2016-11-21
uid                  Petar (pippo) <petiopetrov1996@gmail.com>
ssb   1024R/5861A581 2016-11-21
root@Lab121Pc27:/home/tech/.gnupg# 

-il comando gpg --list-key visualizza le chiavi pubbliche

/root/.gnupg/pubring.gpg
------------------------
pub   1024R/7FF3E7E7 2016-11-21
uid                  Petar (pippo) <petiopetrov1996@gmail.com>
sub   1024R/0C936771 2016-11-21

-salvo la chiave privata in modo che il prossimo utente la possa leggere

root@Lab121Pc27:/home/tech/.gnupg# gpg --export -o Petar.asc 7FF3E7E7 
root@Lab121Pc27:/home/tech/.gnupg# 

-Ora creo il secondo utente con il comando gpg --gen-key e inserisco le impostazioni date in precedenza

Nome reale: PetarRoot
Indirizzo email: petio2@gmail.com
Commento: pippo2
È stato selezionato questo USER-ID:
    "PetarRoot (pippo2) <petio2@gmail.com>"

-'PetarRoot riceve la chiave inviata da Petar e la inserisce nel suo portachiavi con il comando gpg --import Petar.asc

root@Lab121Pc27:/home/tech/.gnupg# gpg --import Petar.asc
gpg: chiave 7FF3E7E7: "Petar (pippo) <petiopetrov1996@gmail.com>" non cambiata
gpg: Numero totale esaminato: 1
gpg:              non modificate: 1

-da PetarRoot invio un messaggio a Petar con il comando echo

root@Lab121Pc27:/home/tech/.gnupg# echo "ciao petar" >messaggioA

-PetarRoot decifra il messaggio con il comando gpg --output cifratoB.gpg --encrypt --recipient petiopetrov1996@gmail.com messaggioA

root@Lab121Pc27:/home/tech/.gnupg# gpg --output cifratoB.gpg --encrypt --recipient petiopetrov1996@gmail.com messaggioA
root@Lab121Pc27:/home/tech/.gnupg# 

-PetarRoot salva il testo in chiaro con il comando gpg --output doc PetarRoot --decrypt cifratoB.gpg

root@Lab121Pc27:/home/tech/.gnupg# gpg --output doc PetarRoot --decrypt cifratoB.gpg
Uso: gpg [OPZIONE...] [NOMEFILE]
root@Lab121Pc27:/home/tech/.gnupg#