gpg_5_min — GnuPG in 5 minuten
Deze tekst gaat over GnuPG en andere PGP software. Het is een zeer minimale inleiding: de bedoeling is dat je zo snel mogelijk die software kunt gebruiken. Aan het eind staat een lijstje van meer uitgebreide documenten. Lees die als je meer over technische details, of over de achterliggende beveiligsaspecten wilt weten. En besef: GnuPG is slechts een instrument, echte veiligheid en zekerheid is alleen mogelijk als je weet wat je aan het doen bent. Het lezen van meer uitgebreide documentatie kan daar natuurlijk bij helpen.
Er wordt van je verondersteld dat je in staat bent software op je computer te installeren (je weet wat een "binary" is), en dat je om weet te gaan met e-mail. De meeste voorbeelden gaan ervan uit dat je het GnuPG programma op de commandline gebruikt. Voor MS Windows gebruikers ziet dat eruit als DOS. Echter: vrijwel alles wat voorgedaan wordt kan ook met grafische programma's gedaan worden. Hoe dat precies moet staat beschreven in de documentatie waar dit document naar zal verwijzen.
Deze tekst wordt bijgehouden en gepubliceerd op http://mdcc.cx/gnupg/. Werk aan de tekst is begonnen op de mailinglijst van LOSC Breda, in oktober 2003.
Als je GnuPG gebruikt, kun je met andere mensen (die ook GnuPG of een vergelijkbaar PGP programma gebruiken) veilig e-mailen. Jouw e-mail kan alleen door de geadresseerde gelezen worden; niemand kan je e-mailverkeer dus afluisteren. Verder is de geadresseerde er zeker van dat het bericht echt van jou afkomt. Voor e-mail van anderen naar jou geldt hetzelfde.
Normale e-mail garandeert je zoiets niet. Het is in het bijzonder erg eenvoudig mailtjes te sturen met vervalste afzender.
Er zijn alternatieven voor GnuPG die ongeveer dezelfde functionaliteit leveren.
Je hoeft geen GnuPG of andere PGP-implementatie te gebruiken: S/MIME via bijvoorbeeld CAcert levert ook autenticatie en vertrouwelijkheid. Sommigen zeggen dat dit systeem minder leertijd vergen. Anderzijds zou het kunnen dat deze manier van werken je meer afhankelijk maakt van 1 centrale
Dit document suggereert dat je je e-mailprogramma aanpast om PGP te gebruiken. Je kunt het PGP-werk echter ook buiten je e-mailprogramma laten doen. De GNU Anubis software maakt dat mogelijk. GNU Anubis kan handig zijn als het moeilijk is je e-mailsoftware aan te passen voor PGP. Een ander pakket dat ongeveer hetzelfde doet voor MS Windows is GPGrelay van Andreas John.
Uiteraard geldt: kies zelf uit welke manier jou het beste bevalt.
Je moet zes dingen doen:
Hieronder worden die dingen uitgelegd.
Als je het Debian of Ubuntu GNU/Linux besturingssysteem gebruikt, is het redelijk eenvoudig. Installeer het pakket "gnupg" met een pakketbeheerder zoals synaptic, of voer dit commando uit:
Voor ander GNU/Linux distributies zul je dit op een andere manier moeten doen; voor Gentoo Linux ziet het er bijvoorbeeld uit als emerge --sync && emerge gnupg. (Deze commando's moet je als root uitvoeren; dat kun je zien omdat er een # voor staat. Commando's die je onder je normale gebruikers-account uitvoert worden door een $ vooraf gegaan.)
Voor vrijwel alle andere GNU/Linux en BSD distributies zijn er gnupg packages beschikbaar. Ook op andere besturingsystemen (Mac OS X bijvoorbeeld) werkt GnuPG, zie http://www.gnupg.org/download/supported_systems.html.
Mensen die Microsoft Windows gebruiken, kunnen een .zip bestand met gnupg binary van ftp://ftp.gnupg.org/gcrypt/binary/ halen. Zie http://www.gnupg.org/download/ .
Er zijn verschillende smaken van keypairs. Sommige mensen gebruiken keys met subkeys. Hoe je zoiets maakt kun je lezen in de handleiding voor PGP keys met subkeys door Guus Sliepen e.a. Hier zullen we de traditionele en eenvoudigere manier laten zien. Zorg eerst dat de klok van je PC goed staat. GnuPG wil nogal eens lastig doen als er rare tijden of datums in je key staan. Genereer dan een keypair voor jezelf:
of, onder Microsoft Windows:
Er worden verschillende vragen gesteld. De standaard antwoorden zijn bijna altijd goed. Kies een veilige passphrase (op dezelfde manier waarop je een veilig password kiest). NB: tijdens het geven van je passphrase zal er niks op je scherm verschijnen; er zullen geen sterretjes weergegeven worden.
Genereer verder een revocation certificate:
Print de regels tussen
en
op een briefje, en berg dat veilig op. Je hebt dit briefje nodig als onverhoopt iemand je keypair steelt. (Je kunt de regels ook in een bestand zetten, dat op een CD branden en de CD veilig opbergen.)
Het keypair dat met gpg --gen-key gegenereerd is, bestaat uit twee delen: een publiek en een geheim deel. Het publieke deel is in ~/.gnupg/pubring.gpg gezet, het geheime deel in ~/.gnupg/secring.gpg. Zorg dat andere mensen het geheime bestand nooit kunnen lezen. Zorg dus dat de computer waarop je zulke bestanden bewaart, goed beveiligd is.
Je e-mailprogramma moet verschillende dingen mogelijk maken:
Als je voor je e-mail mutt gebruikt op Debian GNU/Linux of Ubuntu, dan heb je geluk: het werkt gewoon; de functies voor het signen en encrypten van e-mail zitten onder de ``p''. Bij het openen van ondertekende e-mail wordt meteen aangegeven of de handtekening klopt, en of die door jou te vertrouwen is. Bij het openen van versleutelde e-mail, wordt meteen begonnen met ontcijfering.
Als je de Mozilla mailer of Mozilla Thunderbird gebruikt (onder GNU/Linux, Unix of Microsoft Windows), dan kun je enigmail gebruiken als lijmlaag tussen je e-mailprogramma en GnuPG. Zie de enigmail website op http://enigmail.mozdev.org/ voor informatie. Een Nederlandse handleiding voor mensen die Enigmail onder MS Windows gebruiken staat op deze Enigmail handleiding van Tjaard de Vries. (NB: Ik heb geen goede Nederlandstalige site met hulp voor GNU/Linux gebruikers van Enigmail kunnen vinden. Het zou mooi zijn als de Enigmail Quick Start Guide ook naar het Nederlands vertaald werd.)
Ook Gnome's Evolution (voor GNU/Linux en andere Unix-achtigen) heeft goede support voor GnuPG.
Voor andere e-mailprogramma's en besturingssystemen zul je zelf wat onderzoek moeten doen. Een goede start is http://gnupg.org/related_software/frontends.html#mua. Een prima handleiding voor MS Windows gebruikers staat op http://drcwww.uvt.nl/~robert/gnupg/gnupg-windows.txt.
Upload het publieke deel van je key naar een keyserver:
Je kunt achterhalen wat het key ID van jouw key is, door het commando
te geven. De eerste regel die je dan ziet, zal eruit zien als bijvoorbeeld
De code achter de / is je key ID. In dit geval zou je dus uitvoeren
Je kunt ook een andere keyserver dan subkeys.pgp.net gebruiken; pgp.surfnet.nl bijvoorbeeld. Het maakt niet zoveel uit welke je gebruikt: de verschillende OpenPGP servers copiëren geregeld de data van elkaar.
Als je echt een nog andere keyserver wilt proberen, kun je de lijst van keyservers op http://www.gurski.org/~gurski/keys/keyservers raadplegen.
De meest gangbare methode om je key gesigned te krijgen is om degene die je key wil signen in levende lijve te ontmoeten. Als die persoon niet helemaal absoluut zeker is dat je bent wie je zegt dat je bent, dan overtuig je die persoon daarvan, bijvoorbeeld door je paspoort of rijbewijs te laten zien. Verder geef je de fingerprint van je publieke key aan die persoon. Dat kun je doen door die op een briefje te printen, en dat briefje te geven. Zo'n briefje - ook wel een keyslip geheten - kun je maken door
te doen. Op zo'n briefje staat dan iets als
Je kunt ook het script gpg-key2ps gebruiken (als je Debian of Ubuntu gebruikt, te verkrijgen via het signing-party Debian pakket) om een A4 met keyslips te maken in PostScript formaat:
Ontmoet Ander, en verifieer of die echt Ander is. Vraag haar om haar key fingerprint. Zorg dat je die op papier hebt, of sla de fingerprint die Ander je gaf op, op b.v. je laptop. Als de eerste regel van de keyslip van de Ander er uit ziet als
dan is de ``keyid'' van de ander 88C6EDF6. Ga naar huis. Als je geen reden hebt om aan te nemen dat Ander slecht met haar private key omgaat, dan kun je daarna haar key signen. Zie daarvoor de volgende sectie.
Als je deelgenomen hebt aan een PGP Keysigning Party, dan heb je nu waarschijnlijk een stapel briefjes met key fingerprints. Als het goed is heb je op de bijeenkomst geverifiëerd of die fingerprints echt van de personen zijn waarvan ze claimen te zijn. Je kunt dan nu die keys gaan signen.
Voor iedere keyslip voer je daarvoor het volgende uit. Download eerst de key:
(Je kunt trouwens ook zonder een keyid te gebruiken naar de public key van de Ander zoeken door
te doen.)
Sign daarna de key:
Als alle user IDs van dezelfde naam voorzien zijn, kies dan "y".
Check nu of de fingerprint die gpg je toont echt dezelfde is als op de keyslip staat. Als dat zo is, kies dan "y". Geef daarna de passphrase van je eigen key. De key van Ander is dan gesigned met jouw key.
Daarna kun je de gesignde key uploaden op het OpenPGP keyserver netwerk door te doen
. En je kunt Ander een mailtje sturen, waarin je schrijft dat je haar key hebt ge-upload.
N.B.: er zijn mensen die liever niet hebben dat je jouw signature op hun key zelf upload. Als je netjes wilt zijn, doe je dat dus niet, maar mail je de gesignde key naar die mensen. De gesignde key kun je in een bestandje opslaan (dat je daarna kunt mailen), door uit te voeren:
Zie verder overigens de opmerking over "caff" in de sectie met externe links voor nog een andere manier om te signen.
Waarschijnlijk zullen de andere deelnemers van de party jouw key gaan signen. Daarvoor hoef je in het algemeen verder niks te doen. Na een paar dagen kun je eventueel
doen, om de signatures van de anderen op jouw key te downloaden.
PGP software wordt o.a. veel gebruikt door Vrije Software ontwikkelaars, die samenwerken met mensen die ze nooit in levende lijve ontmoet hebben. Om toch enigszins zeker te zijn over de identiteit van je collega in Nieuw Zeeland, is het handig om GnuPG te gebruiken. Stel nu dat Hans in Nederland samen wil werken met Anne in Nieuw Zeeland, voor een project. Het project heeft echter geen budget om vliegreizen naar Nieuw Zeeland te betalen. Nu is het zo dat Anne een nicht in Duitsland heeft: Gisela. Met kerstmis ontmoeten Anne en Gisela elkaar, ze sign-en elkaars GnuPG keys. Jij ontmoet Gisela op een conferentie, en daar is een keysigning party. Omdat je dit document gelezen hebt, doe je natuurlijk mee aan die party. Wanneer je nu een versleuteld en ondertekend mailtje van je collega Anne krijgt, zie je dat Gisela de key van Anne gesigned heeft. Omdat jij zeker weet dat de key van Gisela van Gisela is (jij hebt die immers gesigned), en omdat je het gevoel hebt dat Gisela wel verstand van zaken heeft wat betreft keysigning (je hebt haar bezig gezien op de conferentie), kun je er wel vanuit gaan dat Gisela's signature op de key van Anne waarde heeft. Het is dus waarschijnlijk dat de key van Anne echt van Anne is.
(Het Web of Trust krijgt een lek als een key gecompromiteerd raakt zonder dat die revoked wordt! Stel dat Boef de geheime sleutel van Anne steelt (of Anne vergist zich in het gebruik van PGP, en geeft haar geheime sleutel aan Boef). Toen Gisela de key van Anne sign-de, kon zij niet nagaan hoe goed Anne met haar geheime sleutel omsprong. (Dit kan zelfs bijna nooit, in het algemeen.) Gisela kon alleen verifiëren dat Anne echt Anne is. Wanneer Boef de geheime sleutel van Anne te pakken heeft gekregen, kan het versleutelde en ondertekende mailtje dus van Boef komen, in plaats van van Anne!)
Omdat ook jij mogelijk de rol van Gisela kunt spelen voor anderen, is het fijn voor anderen als jij veel keys sign-t. Het is ook fijn voor anderen als je veel mensen de mogelijkheid geeft jouw key te sign-en. En, als je dit veel doet, dan heb je meer kans dat er voor jou een "Gisela" is als je die nodig hebt bij de communicatie met een "Anne".
Ik wil wel meehelpen. Maar waar zijn die conferentie's dan? Of zijn er ook andere manieren om mensen te ontmoeten die hun key gesigned willen hebben?
Lijsten van mensen die geïnteresseerd zijn in keysigning zijn o.a. te vinden op http://www.biglumber.com/x/web?va=1 en http://nm.debian.org/gpg.php . Je kunt jezelf daar ook opgeven.
Hoe je nu veilig kunt e-mailen, hangt nogal af van het e-mailprogramma dat je gebruikt. Voorlopig zul je de documentatie die je bij je e-mailprogramma kreeg moeten bekijken: dit hoofdstuk is nog niet geschreven. Ook het stukje over Hoe vertel ik mijn e-mailprogramma dat ie GnuPG moet gebruiken? kan je misschien op weg helpen. Uiteraard geldt: de auteur is blij met jouw bijdrage, en met relevante links.
GnuPG kan niet alleen voor e-mail gebruikt worden, maar ook voor het ondertekenen en versleutelen van bestanden. Dat doe je als volgt.
Versleutel en onderteken een bestand zodat alleen jij het nog kunt ontcijferen:
Het is aan te raden om bestanden die je versleutelt, altijd ook te ondertekenen. Op die manier weet je zeker dat de inhoud van het bestand niet stiekem gewijzigd is.
Het versleutelde bestand zal opgeslaan zijn onder de naam bestand.gpg. Dat versleutelde bestand zal niet-ascii-karakters bevatten. Vaak is het handig als zo'n bestand zonder problemen in een terminal te openen is, en eenvoudig per e-mail te versturen is. Geef in dat geval de optie "-a" (ofwel "--armor") mee aan gpg. In dat geval ziet het versleutelde bestand eruit als:
Zo'n bestand zal opgeslagen worden onder de naam bestand.asc.
Versleutel en onderteken een bestand zodat alleen Ander (of jij) het nog kunt ontcijferen:
N.B.: dit is alleen zinvol als je zeker weet dat de sleutel van Ander echt alleen van Ander is! Zie de sectie over Keysigning.
Ontcijfer een bestand
Als het bestand ook ondertekend is, zal een melding over de geldigheid en betrouwbaarheid van de ondertekening gemeld worden.
Je kunt een bestand trouwens ook versleutelen voor meer dan 1 ontvanger:
Dit is zeker niet alle informatie! En er zijn in dit stuk dingen over GnuPG niet behandeld, die toch wel belangrijk zijn. Het is dus zeker zinvol er meer over te lezen. Zoals eerder gezegd: GnuPG is slechts een instrument; echte veiligheid en zekerheid is alleen mogelijk als je weet wat je aan het doen bent.
Eerst een lijstje met algemene documentatie, en websites:
Over keysigning parties:
Over analyze van het Web of Trust:
In deze FAQ schrijven we dat je alleen de naam van degene van wie je de key tekent, verifieert. Je kunt echter ook de e-mailadressen die aan de key hangen verifiëren. Software die dat mogelijk maakt is caff (CA - fire and forget) op http://pgp-tools.alioth.debian.org/. (Ik denk dat Skami op http://alioth.debian.org/projects/skami inmiddels verouderd is; er was geen activiteit tussen 2005-07 en 2008-10.)
Twee tips: eentje over manieren om keys te verifiëren, en eentje over key revocation.
In dit document gaan we ervan uit dat je Ander ontmoet voordat je haar key sign-t. Er is ook een andere manier om de fingerprint van Ander over een veilig kanaal te ontvangen, en de identiteit van Ander te verifiëren: vraag aan Ander dit:
Als er te weinig ruimte is voor de hele fingerprint in het omschrijvingsveld, vraag dan om zoveel mogelijk van de laatste karakters van de fingerprint (of vraag om 2 overboekingen om alle informatie over de lijn te krijgen). Als Ander dat allemaal gedaan heeft, kun je de key van Ander tekenen. (Met dank aan Folkert van Heusden voor deze tip.) Pas echter op: er zijn mensen met verstand van zaken die schrijven: keysigning requires to meet in person for a reason.
Key revocation: In de sectie Genereer een PGP/GnuPG key schreven we dat je een revocation certificate moest maken. Als je vermoedt dat iemand anders je private key gestolen heeft, dan kun je je key niet meer gebruiken. Die is dan immers niet meer van jou alleen. Ook anderen zul je op de hoogte moeten stellen dat jouw key niet meer te vertrouwen is. Dat doe je door je revocation certificate te publiceren. Wanneer mensen dan je key downloaden van het keyserver netwerk, zullen ze zien dat de key ongeldig is verklaard. (De key wordt niet verwijderd van het netwerk.)
Ga als volgt te werk: Zorg dat je revocation certificate in een bestand revoce.asc staat. Doe dan
(Je kunt controleren dat dit gelukt is: als je gpg --list-key jouwemailadres uitvoert, dan staat er bij je key het woord "revoked".) Publiceer je publieke key, waar nu het revocation certificate aan hangt, door
te doen.
Dank aan Juul, Marianne Driessen, Stijn, en Ton voor het proeflezen van deze tekst. Dank aan Arjan Broos, Ronald van Engelen, Rop Gonggrijp, Maarten Horden, Thijs Kinkhorst, Benedikt Kratz, Matthijs Langenberg, Virginie Moerenhout, Teun Nijssen, Aldo Plomp en Anton Sluijtman voor het geven van aanvullingen. Dank aan Lionel Elie Mamane voor het suggereren van Anubis. Dank aan Henk Penning voor het noemen van de PGP Wiki pagina. Dank aan Jack Raats voor het suggereren van GPGrelay. Dank aan Arvid Gibas voor het suggereren van de GnuPG Gentoo Gebruikersgids. Dank aan Bug Hunter.
Versie --.
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Joost van Baal
Dit document is vrije software; je kunt het verspreiden en/of wijzigen onder de bepalingen van de GNU Algemene Publieke Licentie, zoals uitgegeven door de Free Software Foundation; oftewel versie 2 van de Licentie, of (naar vrije keuze) een latere versie.
Dit document is verspreid in de hoop dat het nuttig zal zijn maar zonder enige garantie; zelfs zonder de impliciete garantie van verkoopbaarheid of geschiktheid voor een bepaald doel. Zie de GNU Algemene Publieke Licentie voor meer details.
Een kopie van de GNU Algemene Publieke Licentie is beschikbaar op http://www.gnu.org/copyleft/gpl.html en op aanvraag via de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Broncode voor dit document is beschikbaar op http://mdcc.cx/gnupg/gpg_5_min.azm en wordt tegen kostprijs door de auteur beschikbaar gesteld.
Joost van Baal <joostvb-gnupg-5-min@mdcc.cx>