Cifrare un file in modalità batch
Obiettivo: si vuole cifrare un files su una macchina, ma renderne impossibile la decifrazione, a meno di essere in possesso di una chiave.
Ad esempio, si possono cifrare dei file di log, e solo il possessore della chiave privata con la cui rispettiva chiave pubblica è stata effettuata la cifrature, è in grado di decifrarli.
Soluzione: usare gpg in modalità batch.
Installare GnuPG
apt-get install gnupg
Generazione della coppia di chiavi
Sulla macchina che si userà per decifrare, generare la coppia di chiavi:
gpg --gen-key
Durante la generazione delle chiavi, assicurarsi di far eseguire dei lavori alla macchina (basta anche un ls -alR /)
Verrà creata la directory
~/.gnupg
contente le chiavi pubbliche e private. Fare molta attenzione a non far accedere nessuno a ~/.gnupg/secring.gpg, in quanto contiene le chiavi private, che, sebbene protette da password, è bene conservare privatamente.
Controllare che le chiavi siano correttamente generate, elencandole. Dovrebbe esserci quella creata:
gpg --list-keys
Esportazione della chiave pubblica
Esportare la propria chiave pubblica, che servirà per cifrare:
gpg --export -o nome_decifratore-public_key.gpg
Questa chiave andrà copiata sulla macchina dove si dovranno cifrare i files.
Importazione della chiave pubblica
Sulla macchina 'cifratrice' non è necessario generare delle chiavi, basta importare la chiave pubblica del decifratore:
gpg --import nome_decifratore-public_key.gpg
Anche in questo caso viene creata la gerarchia ~/.gnupg
Controllare che la chiave pubblica sia stata importata correttamente:
gpg --list-keys
Esempio di cifratura in batch di un file
Il vantaggio di usare una chiave pubblica, è quello di poter cifrare un file senza bisogno di password in maniera del tutto batch:
gpg --batch --trust-model always -ea -r nome_decifratore-chiave pippo.txt
Nota: nome_decifratore-chiave è quello elencato da gpg --list-keys
Verrà generato il file pippo.txt.asc simile a questo:
-----BEGIN PGP MESSAGE----- Version: GnuPG v1.4.1 (GNU/Linux) hQIOA2zl3fx0Jh2uEAf/dLCBG5eLahNTcLAQ4Y6JyacsYbDbVZFVwZhJ2Bz9I4rL 0r10bpzeKMcpnka7IoXkb2qFsuZoiW82p9rwfUVmX9EMyydE16ymmGpiHV1Nd3OB +RBurZilLPS803rCuV1AMKgcbyDe4KgLv4W5c8YI0xSzbw0HpUUWiyHjg46A4wNV 5P4m4wwqS08hK4EVUpix/lT6seUnCKy8jKbIDsf8fepQoN5gl1gf/zaphyBjtRLp U2qNmjBx5hSW1ElqbRXkGG3EEi5fpKTVpTE7gY1l1PDbgmxFxMucza+oRCQSjHO7 20ww1mNQCeFbH2o7OugBkpOsb7Zz30WcpLd2CFauTwgAmU+EkMhq8lvX/0BFAKrk sfxNkahRKfFZ2u2a5kXBcYixVm9kJJDfkb/BkOSdkwTFF3JwBfX0raSeKjtmk5X/ wObZMTZ/us0Dj16HDtn8gX1BORIsof3URf0tt7gdzi05MY+yzoL777VPntYBpfBh JFI8rKmAbXAxsN8sqx+hQfAkp/hv7DmnGVdwGEh/CJUymSlsT7VM/Cgsc9PP7ixx bhfIyuSR7adWbpkC08/9msKhj10BUETcoar8OozpQBmGGQvWTtXJJlWwmSG6O2vn GktwdfBmgOb9KLGZTL78hE+cFyIbfCmye2u+9m6+iW4iiTAT15WrZtr9LoaSIT+D KdJXAWB08YxXNYXGjz3MdVaNnogM833PCgCLnuWxk2yzNSjuWeqQVyt4GCjtaL53 Y5bUSsft6XnCtNUpJAe1ASn18NLPGfnWlnz1ptxQ67RLs1OT5y5ocBUE =9gV7 -----END PGP MESSAGE-----
Se si cancella l'originale pippo.txt nemmeno l'utente che ha cifrato il file in maniera batch riuscirà a decifrarlo.
Decifrazione del file
Portare pippo.txt.asc cifrato sulla macchina decifratrice, e come utente proprietario della chiave privata, decifrarlo:
gpg --decrypt -a /tmp/pippo.txt.asc
Il file verrà decifrato su STDOUT.