Gentoo Logo

Disclaimer : Dit document is niet juist en is niet meer onderhouden.


GnuPG Gentoo Gebruikersgids

Inhoud:

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

Fig. 1: kgpg hoofdscherm

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

Fig. 2: kgpg sleutel beheerscherm

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

Fig. 3: kmail securityopties OpenGPG


Figuur 5.4

Fig. 4: kmail identity opties OpenGPG key

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.



Print

Upgedate op 19 Mei 2003

De originele versie van dit document wordt niet meer onderhouden

Korte inhoud: Deze kleine gids legt je de basiscommando's uit van GnuPG, een tool voor veilige communicatie.

Gustavo Felisberto
Author

John P. Davis
Editor

Sven Vermeulen
Translator

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.