GnuPG Gentoo Gebruikersgids
1.
Introductie
Wat mag je van deze gids verwachten?
Deze gids veronderstelt dat je weet wat publieke sleutelcryptografie is, hoe
encryptie ongeveer werkt, en wat digitale handtekeningen zijn. Indien dat niet
het geval is, lees dan de GnuPG Handbook
(Engels), hoofdstuk 2.
Deze gids legt je uit hoe je GnuPG moet installeren, hoe je een sleutelpaar
aanmaakt, hoe je sleutels toevoegt aan je keyring, hoe je je publieke sleutel
naar een keyserver stuurt, en hoe je berichten encodeert, signeert, controleert
of decodeert. Je zal tevens leren hoe je bestanden encrypteert op je pc zodat
anderen de inhoud ervan niet kunnen bekijken.
Installatie van de nodige software
Je moet op zijn minst emerge gnupg uitvoeren; indien je een e-mailclient
wenst met ondersteuning voor GnuPG kan je pine (emerge pinepgp), mutt
(emerge mutt), Mozilla/Netscape Mail, evolution (evolution is een
Outlook achtige mailclient) en KDE's eigen KMail (welke in de kdenetwork
package zit) proberen.
Kgpg kan je interesseren indien je KDE gebruikt. Dit klein programmaatje laat
je toe om sleutelparen aan te maken, sleutels te importeren, geimporteerde
sleutels te signeren, sleutels te exporteren, en nog enkele andere features
(het heeft op dit moment geen mogelijkheid tot het importeren van sleutels van
keyservers, maar we zullen je dat later leren via de commandline interface).
2.
Sleutels aanmaken en toevoegen aan je publieke keyring
Je sleutel aanmaken
Om je sleutel aan te maken voer je gpg --gen-key uit. De eerste keer dat
je dit uitvoert zal het enkele directories aanmaken. Voer het opnieuw uit om de
sleutels aan te maken:
Codevoorbeeld 2.1: key generation process |
#gpg --gen-key
gpg (GnuPG) 1.0.7; Copyright (C) 2002 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.
Please select what kind of key you want:
(1) DSA and ElGamal (default)
(2) DSA (sign only)
(4) ElGamal (sign and encrypt)
(5) RSA (sign only)
Your selection?1 |
Hier heb je de keuze tussen verschillende types van sleutels. De meeste
gebruikers zullen voor de default DSA/ElGamal gaan. De volgende vraag is de
sleutelgrootte. Weet dat grotere sleutels veiliger zijn, maar je moet geen
sleutels nemen die groter zijn dan 2048. Voor e-mail is 1024 meer dan
voldoende.
Na de sleutelgrootte komt de vervaldag. Hoe korter, hoe beter, maar de meeste
gebruikers kunnen een sleutel nemen die niet vervalt, of misschien pas over 1
of 2 jaar.
Codevoorbeeld 2.2: De sleutelgrootte kiezen |
DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
minimum keysize is 768 bits
default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024) 2048
Requested keysize is 2048 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
|
Het is nu tijd om wat persoonlijke informatie in te geven over jezelf. Indien
je je publieke sleutel wil verzenden naar andere mensen moet je je werkelijke
e-mailadres ingeven.
Codevoorbeeld 2.3: Je persoonlijke gegevens ingeven |
Is this correct (y/n)? y
You need a User-ID to identify your key; the software constructs the user id
from Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: John Doe
Email address: john@nowhere.someplace.flick
Comment: The Real John Doe
You selected this USER-ID:
"John Doe (The Real John Doe) <john@nowhere.someplace.flick>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.
Enter passphrase:
|
Je moet je wachtwoord twee maal ingeven. Het is een goed idee om een sterk
wachtwoord te gebruiken. Indien iemand ooit je private sleutel bemachtigt en je
wachtwoord kraakt, dan kan hij/zij berichten versturen in jouw naam en iedereen
zal geloven dat die inderdaad door jouw gestuurd zijn.
Daarna zal GnuPG je sleutel aanmaken. Verplaats je muiscursor of speel een
mp3'tje in de achtergrond om het proces sneller te doen verlopen aangezien dit
random data aanmaakt.
Een revocatiecertificaat aanmaken
Belangrijk: Dit is zeer belangrijk en je moet het NU doen. |
Nadat je je sleutels aangemaakt hebt moet je een revocatiecertificaat aanmaken.
Dit laat je toe om je sleutel ongeldig te maken indien er iets misloopt met je
sleutel (bv wanneer iemand je sleutel/wachtwoord bemachtigd heeft).
Codevoorbeeld 2.4: Revocatiecertificaat aanmaken |
#gpg --list-keys
/home/humpback/.gnupg/pubring.gpg
---------------------------------
pub 1024D/75447B14 2002-12-08 John Doe (The Real John Doe) <john@nowhere.someplace.flick>
sub 2048g/96D6CDAD 2002-12-08
bash-2.05a$ gpg --output revoke.asc --gen-revoke 75447B14
sec 1024D/75447B14 2002-12-08 John Doe (The Real John Doe) <john@nowhere.someplace.flick>
Create a revocation certificate for this key? y
Please select the reason for the revocation:
0 = No reason specified
1 = Key has been compromised
2 = Key is superseded
3 = Key is no longer used
Q = Cancel
(Probably you want to select 1 here)
Your decision? 1
Enter an optional description; end it with an empty line:
> Someone cracked me and got my key and passphrase
>
Reason for revocation: Key has been compromised
Someone cracked me and got my key and passphrase
Is this okay? y
You need a passphrase to unlock the secret key for
user: "John Doe (The Real John Doe) <john@nowhere.someplace.flick>"
1024-bit DSA key, ID 75447B14, created 2002-12-08
ASCII armored output forced.
Revocation certificate created.
Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable. But have some caution: The print system of
your machine might store the data and make it available to others!
|
De gpg --list-keys commando toont de sleutels in je publieke keyring. Je
kan het gebruiken om de ID van je sleutel te weten te komen zodat je je
revocatiecertificaat kan aanmaken. Het is nu een goed idee om alles van .gnupg
over te kopieren en het revocatiecertificaat ergens op een veilige plaats op te
slaan (bijvoorbeeld op 2 floppies of een CD-R die je ergens op een veilige
plaats opslaat). Herinner je eraan dat revoke.asc kan gebruikt worden om je
sleutels ongeldig te maken in de toekomst.
Nota:
Indien je meerdere e-mailadressen hebt die je met deze sleutel wil gebruiken,
dan kan je gpg --edit-key JE_ID gebruiken waarna je met het
adduid commando je extra gegevens kan invoeren. Dit laatste zal je
vragen naar je naam, e-mail en commentaar en zal deze gegevens toevoegen.
|
Sleutels exporteren
Om je sleutel te exporteren type je gpg --armor --output john.asc --export
john@nwhere.someplace.flick. Je kan alles gebruiken wat de sleutel kan
identificeren (hier gebruiken we het e-mailadres). Je hebt nu een john.asc
bestand dat je naar je vrienden kan sturen, of op een webpagina plaatsen zodat
mensen deze kunnen downloaden om veilig met je te kunnen communiceren.
Sleutels importeren
Om geexporteerde sleutels in je keyring te steken moet je ze eerst importeren
en daarna de vingerafdruk controleren. Nadat je deze geverifieerd hebt moet je
de geimporteerde sleutel accepteren.
Nota:
Je moet zeer voorzichtig zijn bij het verifieren van sleutels. Dit is een van
de zwakke zaken van publieke sleutelcryptografie.
|
Nu gaan we Luis Pinto's sleutel in onze publieke keyring steken. Na hem te
telefoneren en hem om zijn vingerafdruk te vragen (fingerprint dus :)
controleren we deze met de uitvoer van het fpr commando. Aangezien de
sleutel authentiek is voegen we ze toe aan de publieke keyring. In dit
particulier geval vervalt de sleutel op 2003-12-01 dus wordt mij gevraagd of ik
mijn eigen handtekening op zijn sleutel wil doen vervallen op dezelfde datum.
Codevoorbeeld 2.5: Importeren en handtekenen van sleutels |
#gpg --import luis.asc
gpg: key 462405BB: public key imported
gpg: Total number processed: 1
gpg: imported: 1
humpback@sam humpback $ gpg --list-keys
/home/humpback/.gnupg/pubring.gpg
---------------------------------
pub 1024D/75447B14 2002-12-08 John Doe (The Real John Doe) <john@nowhere.someplace.flick>
sub 2048g/96D6CDAD 2002-12-08
pub 1024D/462405BB 2002-12-01 Luis Pinto <lmpinto@student.dei.uc.pt>
uid Luis Pinto <lmpinto@dei.uc.pt>
sub 4096g/922175B3 2002-12-01 [expires: 2003-12-01]
humpback@sam humpback $ gpg --edit-key lmpinto@dei.uc.pt
gpg (GnuPG) 1.0.7; Copyright (C) 2002 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: checking the trustdb
gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1
pub 1024D/462405BB created: 2002-12-01 expires: 2003-12-01 trust: -/-
sub 4096g/922175B3 created: 2002-12-01 expires: 2003-12-01
(1) Luis Pinto <lmpinto@dei.uc.pt>
(2). Luis Pinto <lmpinto@student.dei.uc.pt>
Command> fpr
pub 1024D/462405BB 2002-12-01 Luis Pinto <lmpinto@dei.uc.pt>
Fingerprint: F056 3697 ADE3 CF98 B80B 8494 0AD3 E57B 4624 05BB
Command> sign
Really sign all user IDs? y
pub 1024D/462405BB created: 2002-12-01 expires: 2003-12-01 trust: -/-
Fingerprint: F056 3697 ADE3 CF98 B80B 8494 0AD3 E57B 4624 05BB
Luis Pinto <lmpinto@dei.uc.pt>
Luis Pinto <lmpinto@student.dei.uc.pt>
This key is due to expire on 2003-12-01.
Do you want your signature to expire at the same time? (Y/n) Y
How carefully have you verified the key you are about to sign actually belongs
to the person named above? If you don't know what to answer, enter "0".
(0) I will not answer. (default)
(1) I have not checked at all.
(2) I have done casual checking.
(3) I have done very careful checking.
Your selection? 3
Are you really sure that you want to sign this key
with your key: "John Doe (The Real John Doe) <john@nowhere.someplace.flick>"
I have checked this key very carefully.
Really sign? y
You need a passphrase to unlock the secret key for
user: "John Doe (The Real John Doe) <john@nowhere.someplace.flick>"
1024-bit DSA key, ID 75447B14, created 2002-12-08
Command> check
uid Luis Pinto <lmpinto@dei.uc.pt>
sig!3 462405BB 2002-12-01 [self-signature]
sig!3 75447B14 2002-12-08 John Doe (The Real John Doe) <john@nowhe
uid Luis Pinto <lmpinto@student.dei.uc.pt>
sig!3 462405BB 2002-12-01 [self-signature]
sig!3 75447B14 2002-12-08 John Doe (The Real John Doe) <john@nowhe
|
3.
Sleutels uitwisselen via keyservers
Sleutels verzenden naar keyservers
Nu dat je je sleutel hebt is het waarschijnlijk een goed idee om deze te
verzenden naar een keyserver. Er zijn verschillende keyservers in de wereld en
de meesten wisselen sleutels uit. Hier gaan we Luis' sleutel naar pgp.mit.edu
verzenden. Deze maakt gebruik van HTTP, dus indien je een proxy moet instellen
voor http-verkeer, doe dat dan nu (export
http_proxy=http://proxy_server:poort/). Het commando voor het verzenden van
de sleutel is gpg --keyserver pgp.mit.edu --keyserver-options
honor-http-proxy --send-key john@nowhere.someplace.flick. Indien je geen
HTTP proxy nodig hebt kan je de --keyserver-options honor-http-proxy
weglaten.
Je kan dus ook andere mensen hun sleutel uploaden nadat je ze gesigneerd hebt.
We kunnen dus Luis Pinto's sleutel naar de keyserver sturen. Op deze manier kan
iemand, die jouw sleutel vertrouwt, ook Luis' sleutel vertrouwen aangezien jij
die gesigneerd hebt.
Sleutels van keyservers halen
We gaan nu Gustavo Felisberto's sleutel zoeken en toevoegen aan onze keyring.
Codevoorbeeld 3.1: Sleutels zoeken op keyservers |
#gpg --keyserver pgp.mit.edu --keyserver-options honor-http-proxy \
--search-keys humpback@felisberto.net
gpg: searching for "humpback@felisberto.net" from HKP server pgp.mit.edu
Keys 1-5 of 5 for "humpback@felisberto.net"
(1)Gustavo Felisberto (apt-get install anarchy) <humpback@felisberto.net> 1024
created 2002-12-06, key B9F2D52A
(2)Gustavo Felisberto <humpback@altavista.net> 1024
created 1999-08-03, key E97E0B46
(3)Gustavo A.S.R. Felisberto <humpback@altavista.net> 1024
created 1998-12-10, key B59AB043
(4)Gustavo Adolfo Silva Ribeiro Felisberto <humpback@altavista.net> 1024
created 1998-08-26, key 39EB133D
(5)Gustavo Adolfo Silva Ribeiro Felisberto <humpback@altavista.net> 1024
created 1998-06-14, key AE02AF87
Enter number(s), N)ext, or Q)uit >1
gpg: requesting key B9F2D52A from HKP keyserver pgp.mit.edu
gpg: key B9F2D52A: public key imported
gpg: Total number processed: 1
gpg: imported: 1
|
Zoals je kan zien aan de server zijn antwoord heeft Gustavo al een aardig
aantal sleutels naar de keyserver gestuurd. Op dit moment gebruikt hij
B9F2D52A. Je kan deze nu binnenhalen en, indien je ervan overtuigd bent dat
de sleutel authentiek is (i.e. na controle van de fingerprint) kan je deze
signeren.
4.
Met documenten werken
Encrypteren en ondertekenen
Veronderstel nu dat je een bestand hebt dat je naar Luis wil zenden. Je kan dat
bestand encrypteren, singeren, of encrypteren en signeren. Encrypteren wil
zeggen dat enkel Luis dat bestand zal kunnen lezen. Handtekenen wil zeggen dat
Luis weet dat het echt wel jij was die het bestand gecreeerd heeft.
De volgende 3 commando's doen dat: encrypteren, signeren, en
encrypteren+signeren.
Codevoorbeeld 4.1: Encrypteren, signeren en encrypteren+signeren van bestanden |
#gpg --output doc.gpg --encrypt --recipient lmpinto@dei.uc.pt doc_to_encrypt
#gpg --output doc.gpg --sign --recipient lmpinto@dei.uc.pt doc_to_sign
#gpg --output doc.gpg --encrypt --sign --recipient \
lmpinto@dei.uc.pt doc_to_encrypt_and_sign
|
Dit zal binaire bestanden aanmaken. Indien je er ascii-bestanden wil van maken,
voeg dan --clearsign vooraan aan het commando toe.
Decrypteren en verifieren van handtekeningen
Veronderstel dat je een bestand hebt ontvangen dat voor jouw geencrypteerd is.
Het commando om te decrypteren is gpg --output document --decrypt
geencrypteerd_document.gpg. Dit zal het document decrypteren en, indien er
een handtekening aan hangt, verifieren.
5.
GnuPG interfaces
kgpg
kgpg is een GUI interface voor GnuPG. In het hoofdscherm kan je tekst plakken
die je wil signeren of encrypteren, alsook geencrypteerde tekst plaatsen die je
wil decrypteren.
Figuur 5.1 |
 |
In deze screenshot kan je kgpg's hoofdscherm zien met geencrypteerde tekst in.
Van hieruit kan je deze decrypteren (je zal uiteraard je wachtwoord moeten
meeleveren), andere bestanden encrypteren, nieuwe tekst plakken om te signeren,
...
Figuur 5.2 |
 |
Hier zie je het sleutelbeheerscherm. We zien hier John Doe's sleutel, 2
vertrouwde sleutels (Gustavo en Luis), en de niet-vertrouwde sleutel van Daniel
Robbins (aangezien we die nog niet gebeld hebben om zijn vingerafdruk te
controleren).
Figuur 5.3 |
 |
Figuur 5.4 |
 |
Mozilla Enigmail
Mozilla's versie 1.0 of hoger komt met Enigmail, een plugin voor de mailclient
die zeer eenvoudig te configureren is. Je moet gewoon naar Preferences ->
Privacy & Security -> Enigmail gaan. Daar geef je je sleutel's
e-mailadres in, en daarmee is het configureren beeindigd :).
Mails die van een niet-vertrouwde pgp of gpg gesigneerd zijn zullen door een
gebroken pen aangeduid worden. Andere zullen een volledige pen als symbool
krijgen. Enigmail heeft tevens de mogelijkheid om sleutels van keyservers te
halen, maar als het problemen heeft met iets zal het zeer vreemde berichten
geven (je weet toch nog steeds hoe je met de commando's moet werken eh? :).
KMail
Kmail is ook zeer eenvoudig in te stellen. Ik zal gewoon enkele screenshots
geven waaruit je gemakkelijk kan afleiden hoe je KMail hiervoor configureert.
Het komt erop neer dat je KMail vertelt dat hij GnuPG moet gebruiken en via
welke sleutel hij moet signeren.
6.
Finale gedachten, credits en resources
Problemen
Ik had enkele problemen met het importeren van foto's in de keyring. Controleer
allesinds de versie van GnuPG die je gebruikt. Indien je GnuPG 1.2.1-r1 of
later hebt dan zit je waarschijnlijk goed, maar oudere versies kunnen problemen
geven. De meeste keyservers houden ook niet echt van sleutels met foto's in.
Wat je hier niet zal vinden
Gpg is een zeer complexe tool die je toelaat om veel meer te doen dan wat hier
uitgelegd staat. Dit document is voor de gebruiker die GnuPG niet kent. Voor
meer informatie dien je de GnuPG Website
te raadplegen.
Ik bespreek tevens geen andere tools zoals pgp4pine, gpgpine, evolution en
Windows tools, maar misschien dat dit in de toekomst verandert.
Credits
John Michael Ashley's GnuPG Handbook is
eenvoudigweg prachtig. Het is een zeer goed boek voor beginners (Engels).
Iedereen in de #gentoo-doc team: jullie zijn gewoon de max!
Tiago Serra wordt bedankt om me terug naar de privacy te lokken.
Copyright
Copyright door Gustavo Felisberto. Gentoo Technologies Inc. mag dit document
publiceren op de manier dat het dat zelf wenst.
|