Bestanden versleutelen en ontsleutelen

Op deze pagina:

Het versleutelen van bestanden is steeds belangrijker geworden om gevoelige gegevens te beschermen die in de cloud worden bewaard of vias het internet worden verzonden. Bestanden versleutelen kan via de opdrachtregel (commandline), maar ook via de GUI.

Bestanden versleutelen en ontsleutelen via Dolphin

Dolphin is een bestandsmanager in de KDE desktop.

Via rechtsklikken op een bestand kan gekozen worden voor Comprimeren, Comprimeren naar...

muismenu voor comprimeren

Je kan dan kiezen voor zip-archief en je kan het vinkje aanzetten bij "Het archief met een wachtwoord beschermen".

met wachtwoord beschermen

Je krijgt dan een archief met daarin het bestand dat met een wachtwoord is beschermd.

versleuteld bestand

Door het wachtwoord in te voeren wordt het weer leesbaar.

wachtwoord invoeren

Bestanden versleutelen en ontsleutelen met gpg

Losse bestanden bestanden en weer ontsleutelen kan eenvoudig met gpg (GNU Privacy Guard).

Het versleutelen gaat met de -c optie, je wordt dan tweemaal om een wachtwoord/zin gevraagd.


gpg -c test.pdf

Bovenstaande opdracht maakt het bestand test.pdf.gpg aan, dit is het versleutelde bestand, het oorspronkelijke onversleutelde bestand bestaat ook nog (de -c is voor conventionele symmetrische versleuteling). Bij symmetrische versleuteling wordt er slechts 1 sleutel gebruikt om het bestand te versleutelen en te ontsleutelen. Bij Assymetrische versleuteling worden er 2 sleutels gebruikt, een Public key en een Private key. Assymetrische versleuteling is veiliger, maar omslachtiger.


ls test.*

test.pdf  test.pdf.gpg

Bij het ontsleutelen hoef je je wachtwoord/zin slechts eenmaal op te geven.


gpg test.pdf.gpg

gpg: AES versleutelde gegevens
gpg: versleuteld met 1 wachtwoordzin
Bestand `test.pdf' bestaat. Overschrijven? (j/N) n
Voer een nieuwe bestandsnaam in: test2.pdf

ls test*
test2.pdf  test.pdf  test.pdf.gpg

Na het ontsleutelen bestaat het versleutelde bestand ook nog, je hebt bij het ontsleutelen de keuze om het oorspronkelijke onversleutelde bestand, als dat nog aanwezig is, te overschrijven, of om het nieuwe ontsleutelde bestand een nieuwe naam te geven.

Meer over de opties van gpg kun je opvragen via:


gpg --help

of via


man gpg

GPG heeft erg veel opties: GPG Key related options.

Bestanden versleutelen en ontsleutelen met mcrypt

Typ mcrypt in een terminal om te zien of het geinstalleerd is:


Het programma ‘mcrypt’ is momenteel niet geïnstalleerd. U kunt het installeren door het volgende te typen:
sudo apt install mcrypt

Als het wel is geinstalleerd, krijg je:


mcrypt: Encrypted data will not be written to a terminal.
Redirect the output instead.
Use the --help parameter for more help.

De Help opvragen geeft een flinke lijst met mogelijkheden, je kunt o.a. keyfiles gebruiken.

Het gebruik van mcrypt is eenvoudig, om te versleutelen geef je de bestanden op die versleuteld moeten worden:


mcrypt mijnbestand1.txt mijnbestand2.txt

Enter the passphrase (maximum of 512 characters)
Please use a combination of upper and lower case letters and numbers.

Je moet het wachtwoord 2x invoeren.

De versleutelde bestanden krijgen de extensie .nc.

Het ontsleutelen gaat met de -d optie:


mcrypt -d mijnbestand1.txt.nc mijnbestand2.txt.nc

Bestanden versleutelen en ontsleutelen met age

Het programma age is een open source en cross platform gereedschap waarmee je bestanden kunt versleutelen en ontsleutelen. Deze tool in gemaakt met de programmeertaal Go. Met age kun je bestanden via de opdrachtregel versleutelen en ontsleutelen met een wachtwoordzin, of met een publieke sleutel.

Age installeren

Het installeren van age is eenvoudig en werkt net zo als het installeren van andere programma's die aanwezig zijn in de repository van je Linux distrubutie.


# Debian/Ubuntu
sudo apt install age

# Arch Linux/Manjaro
pacman -S age

# Fedora 33+
dnf install age

# openSUSE
zypper install age

Voor Ubuntu is age beschikbaar in de repositories vanaf release 21.04. Als je een oudere release van Ubuntu gebruikt, dan kun je age toch installeren, door de bestanden op te halen van Github:


# Nagaan wat de laaste versie is van age en dit opslaan in een variabele
AGE_VERSION=$(curl -s "https://api.github.com/repos/FiloSottile/age/releases/latest" | grep -Po '"tag_name": "v\K[0-9.]+')

# Kijken of het versienummer inderdaad is opgeslagen in de variabele
echo $AGE_VERSION

# Je krijgt dan bijvoorbeeld:
1.0.0

# Download het tar.gz bestand met gebruik van de zojuist opgeslagen variabele voor de versie
curl -Lo age.tar.gz "https://github.com/FiloSottile/age/releases/latest/download/age-v${AGE_VERSION}-linux-amd64.tar.gz"

# Mogelijke uitvoer:
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 3815k  100 3815k    0     0  3258k      0  0:00:01  0:00:01 --:--:-- 8274k

# Het bestand age.tar.gz is nu aanwezig, dit kun je uitpakken met:
tar xf age.tar.gz

# Je krijgt dan een map 'age' met daarin 3 bestanden: age, age-keygen en LICENSE

# De bestanden age en age-keygen verplaatsen naar /usr/local/bin om age voor het hele systeem beschikbaar te maken
sudo mv age/age /usr/local/bin
sudo mv age/age-keygen /usr/local/bin

# Kijken of alles goed is gegaan door de versie op te vragen
age -version

# Je krijgt dan bijvoorbeeld:
v1.0.0

# Het opruimen van de installatie bestanden	
rm -rf age.tar.gz
rm -rf age

Wachtwoordzin gebruiken

Als je een bestand versleuteld met een wachtwoordzin (passphrase), dan heet dat symmetrische versleuteling omdat de sleutel waarmee je versleuteld gelijk is aan de sleutel waarmee je ontsleuteld. Voor het gebruik van een wachtwoordzin wordt de -p optie gebruikt.

Een bestand versleutelen, je wordt tweemaal om de wachtwoordzin (passphrase) gevraagd:


age -p test.txt > test.txt.age

Enter passphrase (leave empty to autogenerate a secure one):
Confirm passphrase:

Een bestand ontsleutelen, hiervoor wordt de -d optie gebruikt:


age -d test.txt.age

Enter passphrase:

Na het ingeven van de wachtwoordzin (passphrase) wordt het bestand niet alleen ontsleuteld, maar de inhoud ervan wordt ook op het scherm getoond.

Versleutelen met een automatisch aangemaakte wachtwoordzin kan ook. Wanneer je geen wachtwoordzin opgeeft, zal age een wachtwoordzin voor je genereren, deze wachtwoordzin moet je dan gebruiken om het bestand weer te ontsleutelen. Voor het gebruik van een wachtwoordzin wordt de -p optie gebruikt.


age -p test.txt > test.txt.age
Enter passphrase (leave empty to autogenerate a secure one): 
Using the autogenerated passphrase "raw-robot-calm-assume-traffic-push-spawn-bargain-undo-win".

Publieke en private sleutel gebruiken

Om bestanden te versleutelen en te ontsleutelen met een publieke sleutel heb je zowel een publieke als een private sleutel nodig. De private sleutel hou je geheim en gebruik je om een bestand te ontsleutelen, de publieke sleutel gebruik je om het bestand te versleutelen, deze publieke sleutel, de naam zegt het al, is openbaar.

#### Publieke en private sleutel aanmaken

Om een publierke en private sleutel aan te maken kun je age-keygen gebruiken.


age-keygen -o sleutels.txt

# De uitvoer is bjvoorbeeld:
Public key: age1p49h6nqxxga0y2x7gdm2d9qlkqgk5xauv6wyuuw4ryff90dceq9q0snepg

# De inhoud van het bestand sleutels.txt opvragen:
cat sleutels.txt

# Voorbeeld van de uitvoer:

 # created: 2022-06-17T12:48:17+02:00
 # public key: age1p49h6nqxxga0y2x7gdm2d9qlkqgk5xauv6wyuuw4ryff90dceq9q0snepg
 AGE-SECRET-KEY-1NHM0UKYSXDSC4E6N60NJVHWMMJ6TAEM5V8TSNZW3VKD3HZTPRD2QGPEQDC

Het bestand sleutels.txt bevat nu zowel de publieke als de private sleutel.

Nu een bestand versleutelen en weer ontsleutelen met de zojuist aangemaakte sleutels:


# Versleutelen met de publieke sleutel:
age -r age1p49h6nqxxga0y2x7gdm2d9qlkqgk5xauv6wyuuw4ryff90dceq9q0snepg test.txt > test.txt.age

# Ontsleutelen met de private sleutel uit sleutels.txt:
age -d -i sleutels.txt test.txt.age > test_ontsleuteld.txt

Raak je sleutels niet kwijt

Een bestand dat is versleuteld met een sleutel, kan alleen worden ontsleuteld met een sleutel. Raak je sleutels daarom niet kwijt, anders heb je niets meer aan je versleutelde bestanden.

Meer info over age

Meer informatie over age vind je op Github.

 

Verwante artikelen