Encryptie

Waarom versleutelen

Encryptie of versleuteling van data verzekert geheimhouding. In de context van backups is het nuttig data te versleutelen, als je ze bijvoorbeeld moet bewaren op een plek waar je geen controle hebt over wie wanneer toegang heeft tot het systeem.

Versleuteling van data kan ook handig zijn voor E-mail, omdat er vaak gevoelige gegevens via mail verstuurd worden, en je maar nooit weet wie de mail te zien krijgt.

Op Linux systemen vind je meestal GnuPG, de GNU Privacy Guard, een suite van programma's die compatibel zijn met PGP, Pretty Good Privacy.

[Opmerking]Eenvoudig gebruik

We bespreken hier enkel het heel eenvoudige geval dat we data voor eigen gebruik willen versleutelen. GnuPG kan veel meer dan dat, maar het zou ons te ver leiden om op alle details in te gaan. De man pagina geeft uitgebreidere informatie en links naar web sites.

Een sleutel aanmaken

Vooraleer je data kan encrypteren, dien je eerst een sleutelpaar aan te maken. Het paar bestaat uit een publieke en een private sleutel. De publieke sleutel kan je naar correspondenten doorsturen. Zij kunnen dan die sleutel gebruiken om berichten of data, die voor jou bestemd zijn, te versleutelen. Jij kan ze dan ontcijferen met je private sleutel. Data die met jouw publieke sleutel geëncrypteerd zijn, kunnen alleen met jouw private sleutel gedecrypteerd worden. Wat er ook gebeurt, je private sleutel stuur je nooit naar iemand anders. Deze sleutel is ook beschermd met een wachtwoord, zodat niemand hem kan misbruiken.

Maak de sleutel aan met het gpg commando:

[Belangrijk]Een sleutelpaar genereren
willy@ubuntu:~$ gpg --key-gen
gpg (GnuPG) 1.4.2.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions.  See the file COPYING for details.

gpg: directory `/home/willy.gnupg' created
gpg: new configuration file `/home/willy/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/willy/.gnupg/gpg.conf' are not yet 
 active during this run
gpg: keyring `/home/willy/.gnupg/secring.gpg' created
gpg: keyring `/home/willy/.gnupg/pubring.gpg' created
Please select what kind of key you want:
   (1) DSA and Elgamal (default)
   (2) DSA (sign only)
   (5) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
	 0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the 
user ID from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Willy De Wandel
Email address: wdw@mvg.vl
Comment: Willem
You selected this USER-ID:
    "Willy De Wandel (Willem) <wdw@mvg.vl>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

Passphrase: 

Geef nu een wachtwoord op. Het mag een hele zin zijn, hoe langer, hoe liever, maar zorg natuurlijk wel dat je hem kan onthouden. Ter verificatie moet je daarna nog eens dezelfde sequentie opgeven.

Daarna wordt het sleutelpaar aangemaakt. Dit gebeurt door een programma dat willekeurige nummers genereert en dat onder andere gevoed wordt door de aktiviteit op het systeem. Het is een goed idee om nu enkele programma's op te starten, de muis te bewegen of willekeurige toetsen van het klavier in te drukken. Zo is de kans groter dat er veel verschillende getallen gegenereerd zullen worden, en dat het sleutelpaar dus moeilijker te achterhalen valt.

Over je sleutel

Wanneer je sleutel aangemaakt is, krijg je een boodschap over de fingerprint of vingerafdruk. Deze sequentie van 40 hexadecimale cijfers is uniek, het is zo'n danig lang getal dat de kans bijzonder klein is dat iemand op de wereld dezelfde serie kan aanmaken. De korte vorm van je sleutel bestaat uit je naam in combinatie met de 8 laatste hexadecimale cijfers.

Informatie over je sleutel vraag je zo op:

willy@ubuntu:~$ gpg --list-keys
/home/willy/.gnupg/pubring.gpg
------------------------------
pub	1024D/BF5C3DBB 2006-08-08
uid		       Willy De Wandel (Willem) <wdw@mvg.vl>
sub	4096g/A3449CF7 2006-08-08

Willy's zogenaamde sleutel ID (key ID) is “BF5C3DBB”, de 8 laatste hexadecimale cijfers van zijn electronische vingerafdruk. Het sleutel ID en je naam kan je deponeren bij een sleutelserver, zodat andere mensen je gegevens kunnen opvragen en data voor jou kunnen versleutelen. Je kan hen echter ook zelf je publieke sleutel doorsturen. Dit is de lange rij nummers die je verkrijgt met het commando

[Opmerking]Sleutelserver?

Een sleutelserver of key server is een centraal depot voor het publieke deel van encryptiesleutels. Het private deel van je sleutel houd je natuurlijk altijd voor jezelf.

gpg --export -a

We gaan er hier echter van uit dat je je sleutel enkel nodig hebt voor jezelf. Lees de handleiding van gpg als je meer wilt weten.

Data versleutelen

Nu kan je een .tar of een gecomprimeerd bestand versleutelen, voor je het wegschrijft naar een backup medium. gebruik het gpg commando als volgt:

gpg -e -r (deel van) uid bestand

De -e optie staat voor encrypteren, -r voor recipient. Bijvoorbeeld:

willy@ubuntu:~$ gpg -e -r Willy /var/tmp/home-willy-20060808.tar
[Belangrijk]Netwerkbackup

Als je je bestanden op een machine op het netwerk moet achterlaten, is het om privacy redenen best ze te versleutelen. Maak bij wijze van oefening een tar archief van je home map, comprimeer het met bzip2 en versleutel het daarna. In het volgende hoofdstuk bespreken we hoe we zo zelfs op een onbeveiligde server onze data volledig veilig kunnen dumpen.

Data ontcijferen

Een tekstbestand kan je ontcijferen door de optie -d mee te geven aan het gpg commando. De tekst rolt dan over het scherm, maar het bestand blijft in versleutelde vorm op de schijf staan. Voor andere soorten bestanden (beelden, archieven, programma's) werk je echter best met een output bestand. Doe dit door de -o optie te gebruiken:

Handeling met de muis.

willy@ubuntu:~$ gpg -d -o /var/tmp/home-willy-decrypt.tar /var/tmp/home-willy-20060808.tar.gpg

You need a passphrase to unlock the secret key for
user: "Willy De Wandel (Willem) <wdw@mvg.vl>"
4096 ELG-E key, ID A3449CF7, created 2006-08-08 (main key ID BF5C3DBB)

gpg: encrypted with 4096-bit ELG-E key, ID A3449CF7, created 2006-08-08
	"Willy De Wandel (Willem) <wdw@mvg.vl>"

Hier heb je dus het wachtwoord voor je geheime sleutel nodig.

[Waarschuwing]Geen wachtwoord = geen data

Ook de systeembeheerder kan je niet helpen als je je wachtwoord vergeten bent. Data die versleuteld werden met een sleutel waarvan het wachtwoord zoek is, zijn verloren. Om deze reden bewaart de systeembeheerder van grotere omgevingen de wachtwoorden ook nog eens op papier in een verzegelde enveloppe in een kluis. De enveloppe mag enkel opengemaakt worden in de aanwezigheid van getuigen.