OpenSSL è un’implementazione rilasciata sotto licenza Open Source dei protocolli di sicurezza SSL e TLS; questo protocollo integra delle librerie di scritte in linguaggio C che hanno il compito di eseguite funzioni per la crittografia e vengono quindi utilizzate per la protezione di dati rendendoli inaccessibili ad occhi indiscreti.
OpenSSL è disponibile in tutte le più importanti piattaforme operative basate sul Kernel Linux e le sue funzionalità potranno essere richiamate ogni volta che si desidera crittografare una risorsa.
In questo post, appunto, vedremo come criptare e decriptare un file al fine di poterlo archiviare e/o condividere in tutta sicurezza, senza correre il rischio che possa cadere vittima di occhi indiscreti.
Criptare un file
Immaginiamo quindi di aver digitato delle informazioni importanti, dei dati personali o delle password, all’interno di un semplice file di testo denominato "secret.txt", per applicare la crittografia su di esso tramite il protocollo OpenSSL potremmo utilizzare un’istruzione sul modello della seguente:
openssl des3 -salt -in secret.txt -out mio_file.des3
A questo punto il sistema ci richiederà una password che dovremo scegliere, digitare e confermare tramite [Invio]; questa password ci servirà in seguito, se e quando dovremo decriptare la risorsa appena messa in sicurezza.
A questo punto il nostro file potrà essere archiviato oppure condiviso senza il timore che le informazioni in esso contenute possano essere trafugate da soggetti non autorizzati.
Algoritmi di cifratura
Nell’esempio proposto abbiamo utilizzato des3 (Triple DES), un cifrario a blocchi basato sulla ripetizione del Data Encryption Standard (DES) per tre volte.
Ovviamente des3 non è l’unico cifrario supportato. Di seguito un elenco dei ciphers supportati:
base64 Base 64 bf-cbc Blowfish in CBC mode bf Alias for bf-cbc bf-cfb Blowfish in CFB mode bf-ecb Blowfish in ECB mode bf-ofb Blowfish in OFB mode cast-cbc CAST in CBC mode cast Alias for cast-cbc cast5-cbc CAST5 in CBC mode cast5-cfb CAST5 in CFB mode cast5-ecb CAST5 in ECB mode cast5-ofb CAST5 in OFB mode des-cbc DES in CBC mode des Alias for des-cbc des-cfb DES in CBC mode des-ofb DES in OFB mode des-ecb DES in ECB mode des-ede-cbc Two key triple DES EDE in CBC mode des-ede Two key triple DES EDE in ECB mode des-ede-cfb Two key triple DES EDE in CFB mode des-ede-ofb Two key triple DES EDE in OFB mode des-ede3-cbc Three key triple DES EDE in CBC mode des-ede3 Three key triple DES EDE in ECB mode des3 Alias for des-ede3-cbc des-ede3-cfb Three key triple DES EDE CFB mode des-ede3-ofb Three key triple DES EDE in OFB mode desx DESX algorithm. gost89 GOST 28147-89 in CFB mode (provided by ccgost engine) gost89-cnt GOST 28147-89 in CNT mode (provided by ccgost engine) idea-cbc IDEA algorithm in CBC mode idea same as idea-cbc idea-cfb IDEA in CFB mode idea-ecb IDEA in ECB mode idea-ofb IDEA in OFB mode rc2-cbc 128 bit RC2 in CBC mode rc2 Alias for rc2-cbc rc2-cfb 128 bit RC2 in CFB mode rc2-ecb 128 bit RC2 in ECB mode rc2-ofb 128 bit RC2 in OFB mode rc2-64-cbc 64 bit RC2 in CBC mode rc2-40-cbc 40 bit RC2 in CBC mode rc4 128 bit RC4 rc4-64 64 bit RC4 rc4-40 40 bit RC4 rc5-cbc RC5 cipher in CBC mode rc5 Alias for rc5-cbc rc5-cfb RC5 cipher in CFB mode rc5-ecb RC5 cipher in ECB mode rc5-ofb RC5 cipher in OFB mode aes-[128|192|256]-cbc 128/192/256 bit AES in CBC mode aes[128|192|256] Alias for aes-[128|192|256]-cbc aes-[128|192|256]-cfb 128/192/256 bit AES in 128 bit CFB mode aes-[128|192|256]-cfb1 128/192/256 bit AES in 1 bit CFB mode aes-[128|192|256]-cfb8 128/192/256 bit AES in 8 bit CFB mode aes-[128|192|256]-ecb 128/192/256 bit AES in ECB mode aes-[128|192|256]-ofb 128/192/256 bit AES in OFB mode
Decriptare un file
Se volessimo condividere il file con una persona di fiducia, ad esempio, potremo inviare il file per posta elettronica e, successivamente, comunicare al destinatario la password per decriptarlo. Per maggior sicurezza la password non viaggerà mai insieme al file (abbiate cura di non scriverla nella mail alla quale avete allegato il file) ma seguirà altre vie (ad esempio potremo comunicarla a voce o tramite un SMS).
Per decriptare il file, il destinatario dovrà eseguire questa istruzione:
openssl des3 -d -salt -in mio_file.des3 -out secret.txt -k scrivere_password
Nell’istruzione vista sopra la dicitura "scrivere_password" dovrà, naturalmente, essere sostituita con la password scelta nel momento in cui si è effettuata la criptazione del file.