Tips en Trucs 2016

Bestanden en mappen versleutelen met mcrypt

Mappen en bestanden kan je eenvoudig versleutelen met Mcrypt. Mcrypt kan bestanden zelfs comprimeren om ze daarna te versleutelen. Mcrypt is eveneens handig in scripts en voor het maken van back-ups.

Mcrypt installeren

dany@laptop:~> sudo zypper install mcrypt
root's password:
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Afhankelijkheden tussen pakketten oplossen...

De volgende 2 NIEUWE pakketten zullen worden geïnstalleerd:
  libmhash2 mcrypt

2 nieuw te installeren pakketten.
Totale downloadgrootte: 168,1 KiB. Reeds in de cache: 0 B. Na de operatie zal aanvullend 418,8 KiB worden gebruikt.
Doorgaan? [j/n/? alle opties tonen] (j): 
pakket libmhash2-0.9.9.9-31.2.x86_64 wordt opgehaald                                           (1/2),  99,9 KiB (226,1 KiB uitgepakt)
Ophalen: libmhash2-0.9.9.9-31.2.x86_64.rpm .....................................................................[gereed (59,9 KiB/s)]
pakket mcrypt-2.6.8-31.3.x86_64 wordt opgehaald                                                (2/2),  68,2 KiB (192,8 KiB uitgepakt)
Ophalen: mcrypt-2.6.8-31.3.x86_64.rpm .......................................................................................[gereed]
Controleren op conflicten tussen bestanden: .................................................................................[gereed]
(1/2) Installeert: libmhash2-0.9.9.9-31.2 ...................................................................................[gereed]
(2/2) Installeert: mcrypt-2.6.8-31.3 ........................................................................................[gereed]

Opzetten van een testomgeving

Eerst maken we een map aan met enkele bestanden waarmee we kunnen werken.

dany@laptop:~> mkdir map1
dany@laptop:~> cd map1
dany@laptop:~/map1> echo "Te versleutelen bestand" > bestand1
dany@laptop:~/map1> cat bestand1 
Te versleutelen bestand
dany@laptop:~/map1> fallocate -l 500MB bestand2
dany@laptop:~/map1> md5sum bestand*
f93fe660a95bb9e373d16003504c058b  bestand1
4034379ecc54213fc9a51785a9d0e8e2  bestand2

Met bovenstaande opdrachten maken we de map map1 aan met twee bestanden, bestand1 is een eenvoudig tekstbestand en bestand2 is een 500 MB groot bestand met willekeurige binaire data. Om de bestanden na de versleuteling te testen, wordt een md5sum van de bestandsinhoud gemaakt.

Versleutelen en ontsleutelen

Versleutelen

de volgende opdracht versleutelt bestand1 met een wachtwoord (-zin) die je moet invoeren na het uitvoeren van de volgende opdracht:

dany@laptop:~/map1> mcrypt bestand1 
Enter the passphrase (maximum of 512 characters)
Please use a combination of upper and lower case letters and numbers.
Enter passphrase: 
Enter passphrase: 

File bestand1 was encrypted.
dany@laptop:~/map1> ls -l                                                                                                            
totaal 488296                                                                                                                        
-rw-r--r-- 1 dany users        24 25 mrt 14:45 bestand1                                                                              
-rw------- 1 dany users       125 25 mrt 14:45 bestand1.nc                                                                           
-rw-r--r-- 1 dany users 500000000 25 mrt 14:46 bestand2
Mcrypt

De mcrypt opdracht maakt het versleutelde bestand met de naam bestand1.nc aan. Om beide bestanden in één keer te versleutelen, kan je beide bestandsnamen met de opdracht meegeven. Minder veilig, maar gemakkelijker is het meegeven van het wachtwoord met de opdracht:

dany@laptop:~/map1> mcrypt bestand1 bestand2 -k pin+4567
Warning: It is insecure to specify keywords in the command line
mcrypt: bestand1.nc already exists; do you wish to overwrite (y or n)?y
File bestand1 was encrypted.
File bestand2 was encrypted.

Beide bestanden werden versleuteld met het wachtwoord pin+4567.

Ontsleutelen

Om het bestand1 te ontsleutelen, gebruik je de opdrachten:

dany@laptop:~/map1> ls -l bestand1.nc
-rw------- 1 dany users 125 25 mrt 14:45 bestand1.nc
dany@laptop:~/map1> mkdir map2
dany@laptop:~/map1> mv bestand*.nc map2/
dany@laptop:~/map1> cd map2/
dany@laptop:~/map1/map2> ls
bestand1.nc  bestand2.nc
dany@laptop:~/map1/map2> mcrypt -d bestand1.nc 
Enter passphrase: 
File bestand1.nc was decrypted.

Op dezelfde manier ontsleutelen we de twee bestanden in één keer met de opdracht:

dany@laptop:~/map1/map2> mcrypt -k pin+4567 -d bestand1.nc bestand2.nc 
Warning: It is insecure to specify keywords in the command line
mcrypt: bestand1 already exists; do you wish to overwrite (y or n)?y
File bestand1.nc was decrypted.
File bestand2.nc was decrypted.

En vergelijken we de inhoud van de ontsleutelde bestanden met de voordien berekende md5sum resultaten:

dany@laptop:~/map1/map2> md5sum bestand[1,2]
f93fe660a95bb9e373d16003504c058b  bestand1
4034379ecc54213fc9a51785a9d0e8e2  bestand2

Versleutelen met compressie

Via een optie kan mcrypt bestanden tijdens het versleutelen ook comprimeren. Een voorbeeld:

dany@laptop:~/map1/map2> mcrypt -k pin+4567 -z bestand1
Warning: It is insecure to specify keywords in the command line
File bestand1 was encrypted.
dany@laptop:~/map1/map2> file bestand1.gz.nc 
bestand1.gz.nc: mcrypt 2.5 encrypted data, algorithm: rijndael-128, keysize: 32 bytes, mode: cbc,

In het voorbeeld hierboven werd bestand1 gecomprimeerd (met gzip) en daarna versleuteld met mcrypt. Om het versleutelde en gecomprimeerde bestand te ontsleutelen gaan we het proces omgekeerd doorlopen. Eerst onsleutelen met de opdracht:

dany@laptop:~/map1/map2> mcrypt -k pin+4567 -d bestand1.gz.nc 
Warning: It is insecure to specify keywords in the command line
File bestand1.gz.nc was decrypted.

En daarna uitpakken met de gzip opdracht:

dany@laptop:~/map1/map2> gunzip -v bestand1.gz 
gzip: bestand1 already exists; do you wish to overwrite (y or n)? y
bestand1.gz:     -8.3% -- replaced with bestand1

Om de inhoud van het ontsleutelde en uitgepakte bestand te controleren, berekenen we nogmaals de md5sum:

dany@laptop:~/map1/map2> md5sum bestand1
f93fe660a95bb9e373d16003504c058b  bestand1

Mappen versleutelen met Mcrypt

Om de inhoud van een map te versleutelen, moeten we deze eerst met tar omzetten naar een bestand. Met de volgende opdracht versleutelen we de volledige inhoud van map1:

dany@laptop:~/map1/map2> cd ../..
dany@laptop:~> tar cz map1/ | mcrypt -k pin+4567 > map1.tar.gz.nc
Warning: It is insecure to specify keywords in the command line
Stdin was encrypted.
dany@laptop:~> file map1.tar.gz.nc 
map1.tar.gz.nc: mcrypt 2.5 encrypted data, algorithm: rijndael-128, keysize: 32 bytes, mode: cbc,

Met de volgende opdrachten maken we map3 waarin we map1 herstellen vanuit map1.tar.gz.nc.

dany@laptop:~> mkdir map3
dany@laptop:~> mv map1.tar.gz.nc map3/
dany@laptop:~> cd map3/
dany@laptop:~/map3> ls
map1.tar.gz.nc

Eerst ontsleutelen we het archiefbestand:

dany@laptop:~/map3> mcrypt -k pin+4567 -d map1.tar.gz.nc 
Warning: It is insecure to specify keywords in the command line
File map1.tar.gz.nc was decrypted.

Na het ontsleutelen, pakken we het archief met tar uit:

dany@laptop:~/map3> tar xzf map1.tar.gz

En vergelijken we de berekende md5sum resultaten:

dany@laptop:~/map3> md5sum map1/bestand[1,2]
f93fe660a95bb9e373d16003504c058b  map1/bestand1
4034379ecc54213fc9a51785a9d0e8e2  map1/bestand2

Versleutelmechanisme instellen

Met de volgende opdracht krijg je een lijst met de door Mcrypt ondersteunde versleutelmechanismen:

dany@laptop:~/map3> mcrypt --list-hash
Supported Hash Algorithms:
crc32
md5
sha1
haval256
ripemd160
tiger
gost
crc32b
haval224
haval192
haval160
haval128
tiger128
tiger160
md4
sha256
adler32
sha224
sha512
sha384
whirlpool
ripemd128
ripemd256
ripemd320
snefru128
snefru256
md2

Gebruik de Mcrypt optie -h om zelf het te gebruiken versleutelmechanisme te selecteren. De volgende opdracht versleutelt bestand1 met het whirlpool versleutelmechanisme:

dany@laptop:~/map3> cd map1
dany@laptop:~/map3/map1> mcrypt -k pin+4567 -h whirlpool bestand1
Warning: It is insecure to specify keywords in the command line
File bestand1 was encrypted.

Mcrypt instellen

Mcrypt kan je sturen (instellen) via opties in de opdrachtregel, maar ook via een configuratiebestand. In het voorbeeld stellen we het standaard wachtwoord pin+4567 in:

dany@laptop:~/map3/map1> echo "key pin+4567" > ~/.mcryptrc
dany@laptop:~/map3/map1> mcrypt bestand1
Warning: It is insecure to specify keywords in the command line
mcrypt: bestand1.nc already exists; do you wish to overwrite (y or n)?y
File bestand1 was encrypted.

Testomgeving opruimen

Met de volgende opdrachten ruim je de testomgeving op:

dany@laptop:~/map3/map1> cd ../..
dany@laptop:~> rm -r map[1,3]