GnuPG Gentoo brugervejledning
1.
Introduktion
Hvad denne vejledning indeholder
Denne vejledning regner med at du har nogenlunde kendskab til
public-key kryptografi, kryptering, og digitale underskrifter. Hvis
dette ikke er tilfældet, så spring til Offentlig nøglekryptografi eller tag et kig på
GnuPG
håndbogen (engelsk) kapitel 2, og så kom tilbage.
Denne vejledning vil lære dig hvordan man installerer GnuPG, hvordan
man laver et nøglepar, hvordan man tilføjer nøgler til din nøglering,
hvordan man tilføjer sin offentlige nøgle til en nøgle-server og
hvordan man signerer, dekrypterer, verificerer eller dekoder
meddelelser, som du sender eller modtager. Du vil også lære hvordan
man krypterer filer på din lokale computer for at beskytte dem mod at
blive læst af andre personer.
Installation af den nødvendige software
På et meget basalt niveau skal du emerge gnupg. Mange
programmer i dag har en slags understøttelse for gpg, så at have
crypt i dine USE-flag er sikkert en god idé. Hvis du ønsker at
benytte en email klient, som kan bruge gnupg, kan du anvende pine
(emerge pinepgp), mutt (emerge mutt), Mozilla/Netscape
Mail, evolution (evolution er en GNOME klon af Microsoft Outlook) og
KDEs egen KMail (KMail er en del af kdepim pakken).
Kgpg er måske af interesse hvis du bruger KDE. Dette lille program
giver dig mulighed for at generere nøglepar, importere nøgler fra
ASCII filer, signere og importere nøgler, eksportere nøgler, og et par
flere nyttige ting.
2.
At generere din nøgle og tilføje den til din offentlige nøglering
At generere din nøgle
For at generere din nøgle, bare kør gpg --gen-key. Første gang
du kører den, vil den lave nogle mapper; kør den igen, og den vil lave
de aktuelle nøgler:
Kode oversigt 2.1: genereringsprocessen af dine nøgler |
$ 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
|
Her kan du vælge den type nøgle du vil bruge. De fleste brugere vil
vælge den normale DSA og ElGamal. Det næste er størrelsen på din nøgle
- husk at jo større den er, desto bedre, men brug ikke mere end 2048
med DSA/ElGamal nøgler. Normalt 1024 er mere end nok til almindelige
emails.
Efter størrelse kommer udløbsdatoen. Her er lavest det bedre, men de
fleste brugere kan bruge en nøgle, som aldrig udløber eller fra 2 til
3 år.
Kode oversigt 2.2: Valg af størrelse på nøgle |
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
|
Nu er det så tid til at indtaste nogle personlige informationer
omkring dig selv. Hvis du har planlagt at sende din offentlige nøgle
til andre mennesker, skal du indtaste din rigtige email-adresse her.
Kode oversigt 2.3: Indtastning af bruger information |
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:
"Henrik Hansen (Digteren) <henrik@opdigtetnet.dk>"
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:
|
Nu skal du indtaste koden 2 gange. Det er en god idé at bruge en stærk
kode. Hvis nogen får fat på din private nøgle og bryder din kode, vil
de være istand til at sende beskeder signeret af *dig*, som alle vil
tro vitterligt er signeret af dig.
Nu vil GnuPG generere din nøgle. Hvis du flytter med musen eller
spiller en mp3 i baggrunden, vil det hjælpe på hastigheden, da den
genererer en masse tilfældig data.
Generere et tilbagetrækkelsescerfifikat
Vigtigt:
Denne del er meget vigtig, og du skal gøre det NU.
|
Efter du har lavet dine nøgler bør du lave et
tilbagetrækkelsescertifikat. Ved at gøre dette, bliver du istand til
at tilbagetrække dine nøgler i tilfælde af at noget slemt sker for
dine nøgler (nogen får fat på din nøgle/kodeord)
Kode oversigt 2.4: Generering af tilbagetrækkelsescertifikat |
$ 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
$ 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!
|
gpg --list-keys-kommandoen vil vise dine nøgler i din
offentlige nøglering. Du kan bruge det til at se ID'en af din nøgle så
du kan lave tilbagetrækkelsescertifikatet. Nu er det en god idé at
kopierer hele .gnupg-mappen og tilbagetrækkelseiscertifikatet (i ASCII
- revoke.asc) til at sikkert medium (2 disketter eller en
CDR, som du gemmer et sikkert sted). Husk at revoke.asc
kan blive brugt til at tilbagetrække din nøgle og lave den ubrugelig i
fremtiden.
Bemærk:
Hvis du har adskillige email-adresser, som du vil benytte med denne
nøgle, kan du køre gpg --edit-key DIN_ID og så
adduid-kommandoen. den vil så spørge dig om dit navn, email og
kommentar af din nummer 2 ID, du vil benytte.
|
Eksportering af nøgler
For at eksportere din nøgle, skriver du gpg --armor --output
john.asc --export john@nowhere.someplace.flick. Du kan nærmest
altid bruge ID'et af din nøgle eller noget, der identificerer nøglen
(her bruger vi email-adressen). Nu har vi en john.asc,
som kan sendes til venner, eller et sted på en webside, så folk kan
kommunikere sikkert med ham.
Importering af nøgler
For at tilføje filer til din offentlige nøglering, skal du først
importere den, så tjekke dets fodspor, og efter du har verificeret
fodsporet, bør du validere det.
Bemærk:
Du bør være mere end sikker når du verificerer nøgler. Det er nemlig
en af de svage punkter af en offentlig nøgle-kryptering.
|
Nu vil vi tilføje Luis Pinto's (en af mine venners) offentlige nøgle
til vores nøglering. Efter at ringe til ham og spørge ham om hans
nøgles fodspor, sammenligner jeg fodsporet med det jeg får fra
kommandoen fpr. Eftersom nøglen er autentisk, tilføjer jeg den
til nøgleringen. I dette opsatte tilfælde, vil Luis's nøgle udløbe
2003-12-01, og jeg bliver derfor spurgt om jeg vil have mit signatur
til at udløbe det samme tidspunkt.
Kode oversigt 2.5: Importering og signering af nøgler |
$ gpg --import luis.asc
gpg: key 462405BB: public key imported
gpg: Total number processed: 1
gpg: imported: 1
$ 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]
$ 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.
Udveksling af nøgler med en nøgle-server
Afsendelse af nøgler til nøgle-server
Nu da vi har din nøgle, er det formodentlig en god idé, at sende den
til en nøgle-server. Der er masser af nøgle-servere i verden, og de
fleste af dem udveksler nøgler imellem dem. Her skal vi sende Luis's
nøgle til pgp.mit.edu nøgle-serveren. Den bruger HTTP, så hvis du har
brug for en proxy til HTTP trafik, glem ikke at sætte den. (export
http_proxy=http://proxy_host:port/). Kommandoen for at sende
nøglen er: gpg --keyserver pgp.mit.edu --keyserver-options
honor-http-proxy --send-key 75447B14 hvor 75447B14 er nøgle
ID. Hvis du ikke har brug for en HTTP Proxy til HTTP trafik kan du
fjerne: --keyserver-options honor-http-proxy.
Du kan også sende andre folks nøgler, som du har signeret til
nøgle-serveren. Vi kunne sende Luis Pinto's nøgle til
nøgle-serveren. På denne måde kan nogen som stoler på din nøgle bruge
det signatur, som du har lagt på nøgle-serveren, til at stole på
Luis's Nøgle.
Afhentning af nøgler fra nøgle-server
Nu vil vi så prøve at søge for Gustavo Fellisbertos nøgle og tilføje
den til John Does nøglering (i tilfælde af at du ikke har opdaget det
endnu, er Gustavo Felisberto personen, som har skrevet denne guide :)
).
Kode oversigt 3.1: Søgning på nøgler fra nøgle-server |
$ 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
|
Som du kan se i svaret fra nøgle-serveren, har jeg et par nøgler
indrykket på nøgle-serveren, men jeg bruger kun B9F2D52A for
tiden. Nu kan John Doe få den og signere den, hvis han stoler på den.
4.
At bruge en GPG agent
Hvad er en GPG agent?
Der er tilfælde, når du arbejder med specifikke applikationer, hvor du
bruger din GPG nøgle meget ofte, hvilket betyder at du skal taste dit
kodeord mange gange. Adskillige applikationer understøttede før i
tiden en mekanisme der cachede kodeord for at gøre livet nemmere for
brugere, men dette gav desværre ikke mulighed for at dele den cache på
tværs af programmer (hvor sikkert ville det være?) og tvang
applikationer til at opfinde hjulet igen og igen.
En GPG agent er en separat applikation som GPG bruger til at cache
kodeord på en standardiseret og sikker måde. Den tillader
applikationer at bruge GPG samtidigt: hvis du indtaster dit kodeord
imens du arbejder med en applikation, så kan den anden applikation
arbejde uden at gentage forespørgslen om kodeordet for at låse op for
nøglen - det er hvis GPG agenten er sat sådan op, selvfølgelig.
Gentoo tilbyder et par GPG agentapplikationer. app-crypt/gpg-agent kan betragtes som den mest
refererede og er den vi vil bruge i dette dokument.
At installere og konfigurere gpg-agent og pinentry
Du skal selvfølgelig installere gpg-agent og pinentry,
som er den hjælpe applikation som gpg-agent bruger til at forespørge
kodeordet i et grafisk vindue. Det kommer i tre varianter: det kan få
et vindue til at springe op ved brug af gtk+, Qt og curses
bibliotekerne (afhængig af de USE flag du sætter når du emerger den).
Kode oversigt 4.1: At installere gpg-agent og pinentry |
# emerge gpg-agent pinentry
|
Lav derefter en fil der hedder ~/.gnupg/gpg-agent.conf og
skriv de følgnede linjer som definerer standard udløbstid på kodeordet
(f.eks. 30 minutter) og den applikation der skal kaldes når kodeordet
skal hentes den første gang (f.eks. Qt versionen af pinentry).
Kode oversigt 4.2: At redigere ~/.gnupg/gpg-agent.conf |
pinentry-program /usr/bin/pinentry-qt
no-grab
default-cache-ttl 1800
|
Konfigurer nu GnuPG til at bruge en agent når det er passende. Rediger
~/.gnupg/gpg.conf og tilføj den følgende linje:
Kode oversigt 4.3: At sætte GnuPG op til at bruge en GPG agent |
use-agent
|
Nu er dit system (næsten) klar til at bruge GPG agenten.
Automatically Starting the GPG Agent
Hvis du bruger KDE som grafisk miljø, så rediger
/usr/kde/3.x/env/agent-startup.sh (globalt) eller
~/.kde/env/gpgagent.sh (på bruger basis) og tilføj den
følgende kommando for at få KDE til at starte GPG agenten automatisk:
Kode oversigt 4.4: At få KDE til automatisk at starte GPG agenten |
eval "$(gpg-agent --daemon)"
|
Hvis du bruger et andet grafisk miljø, så sæt den linje (den samme som
nævnt ovenfor) i ~/.xinitrc (hvis du bruger
startx) eller ~/.xsession (hvis du bruger XDM/GDM/KDM/...).
5.
Arbejde med dokumenter
Kryptering og signering
Lad os antage, at du har en fil du ønsker at sende til Luis nu. Du kan
kryptere den, signere den, eller kryptere og signere den. Kryptering
betyder at kun Luis vil være istand til at åbne den, signaturet
fortæller luis at det vitterligt var dig, der lavede filen.
De næste 3 kommandoer vil bare gøre det at, kryptere, signere og kryptere/signere.
Kode oversigt 5.1: Krypterer og underskrivelse af filer |
$ 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
|
Det her vil lave binære filer, men hvis du ønsker at lave ASCII-filer,
bare tilføj --clearsign i starten af kommandoen.
Dekryptering og verificering af signaturer
Antaget at du har modtaget en fil der er krypteret til dig, vil
kommandoen til at dekryptere den være: gpg --output document
--decrypt encrypted_doc.gpg. Det vil dekryptere dokumentet og
verificere signaturen (hvis der er en)
Advancerede egenskaber
Der er nogle spændende advancerede egenskaber i GnuPG. For at finde
dem, åben ~/.gnupg/gpg.conf-filen.
Kode oversigt 5.2: ~/.gnupg/gpg.conf |
#keyserver x-hkp://pgp.mit.edu
#keyserver-options auto-key-retrieve include-disabled include-revoked
|
Søg efter de to ovenstående linjer og afkommentere dem. Dette vil gøre,
at hver gang GnuPG skal tjekke en underskrift og den ikke finde den
offentlige nøgle på den lokale nøglering, vil den kontakte
nøgle-serveren hos pgp.mit.edu og
den vil prøve at hente den fra der.
En anden interessant kommando er gpg --refresh-keys. Dette vil
kontakte nøgleserveren, som er defineret i options-filen og
genopfriske offentlige nøgle i din lokale nøglering fra der, ved at
søge efter tilbagekaldte nøgler, nye ID'er og nye underskrifter på
nøgler. Du bør dog køre denne én eller to gange om måneden, så, hvis
nogen tilbagekalder hans nøgle, vil du blive kontaktet.
6.
GnuPG Grænseflader
Om email-underskrifter
95% af tiden, hvor du bruger GnuPG til mail, er
underskrivning/kryptering af udegående beskeder og læse
underskrevne/krypterede beskeder. Så det er kun fair at tale om dette
først.
Der er to metoder for at underskrive/kryptere en email med GnuPG: den
gamle metode og den nye metode :). Ved den gamle metode, vil beskeder
vise sig i ren tekst, uden nogen mulig formatering og vedhæftede filer
ville ikke blive underskrevet/krypteret, her er et eksempel på en
besked, underskrevet på den gamle metode:
Kode oversigt 6.1: En alm. tekst signatur |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Test message
-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use
iQA/AwUBP8461jMX0745gR7AEQIEOwCg011GbufXO3ED3FkLWXmfzg7xm1cAoJD0
0EU3Kd2EKNCqataEqM5qjpPs
=LchZ
-----END PGP SIGNATURE-----
|
Beskeder ved denne metoder er ikke godt i dag, hvor vi har flotte
grafiske grænseflader og email-læsere som kan forstå HTML.
For at løse dette, blev en udvidelse til MIME (Multipurpose Internet
Mail Extensions) oprettet. Dette tilføjede et felt til emailen, som
fortæller mail-læseren at det fuldstændige indhold af en besked er
underskrevet og/eller krypteret. Problemet er at ikke alle mail-læsere
understøtter dette. Og nogle ødelægger endda indholdet, hvilket
Microsofts Outlook er berømt for.
Kgpg
kgpg er et dejligt grafisk program til at administrere GnuPG, i
hovedskærmen kan man sætte text ind som man ønsker at have signeret
eller krypteret, man kan også indsætte den ASCII-beskyttede text, som
man ønsker at dekryptere.
Figur 6.1 |
 |
På det her billede kan du se kgpg-hovedvinduet med ASCII beskyttet og
krypteret text indsættet til det. Derfra kan man dekryptere det (du
vil blive nødt til at give koden), kryptere andre filer, eller
indsætte nyt text til at signere ...
Figur 6.2 |
 |
Nu kan du se nøgle-administrationsvinduet, derfra kan vi se vores gode
nøgle, for john doe. De 2 nøgler vi stoler på, fra Gustavo og Luis, og
den nøgle fra Daniel Robbins (jeg har stadig ikke ringet til ham, for
at tjekke hans fodspor :) ).
Seahorse
Seahorse sigter mod at være en GnuPG grafisk grænseflade til GNOME
Desktop. Softwaren har udviklet sig hurtigt, men den mangler stadigvæk
vigtige egenskaber, som kan blive fundet i Kgpg eller kommando-linje
versionen.
Mozilla Enigmail
Mozillas version fra 1.0 og opefter, kommer med Enigmail, et plugin
til email-klienter, som er meget simpelt at opsætte. Bare gå til
Opsætning -> Privacy & Security -> Enigmail. Der skriver du
emailen til din nøgle, og så er det det.
Meddelelser, der kommer med en upålidelig pgp eller gpg signatur, vil
blive mærket med en ødelagt pen, andre der har et godt og pålideligt
signatur, vil komme som en fin og pæn pen. Enigmail kommer endda med
muligheden for at hente nøgler fra nøgle-servere, men hvis det har
problemer, vil det komme med nogle mærkelige meddelelser (men du kan
jo stadig huske måden at gøre det på i CLI, ikke? ;-) ).
KMail
Hvis du har sat crypt USE flaget, så vil KMail blive kompileret
med gpg understøttelse og vil være i stand til at kryptere og
dekryptere inkommende PGP mails automatisk så vel som at kryptere
OpenPGP/MIME mails. Hvis du også vil dekryptere OpenPGP/MIME mails
(hvilket du nok vil) så bliver du nødt til at have en kørende GPG
agent (ee At bruge en GPG agent).
Du kan verificere om KMail er korrekt sat op ved at gå til Settings,
Configure KMail, Security, Crypto Backends. Der
bør du se en GpgME-baseret backend listet og du bør være i stand tli
at ufylde OpenPGP checkboxen. Hvis den er listet, men markeret med
grå, så klik på Rescan. Hvis den GpgME-baserede backend stadig
er markeret grå, så virker KMail ikke ordentligt.
Sylpheed-Claws
Dette er min favorit email-læser. Den er meget hurtig med store
mailboxes, har alle de spændende egenskaber, som man vil have i
email-læsere og virker godt med gpg. Det eneste problem er at den ikke
virker med de gamle PGP-signaturer, så når du modtager disse emails,
bliver du nødt til at manuelt tjekke signaturerne.
For at bruge din gpg-nøgle med Sylpheed-Claws, gå bare ind i
konto-indstillingerne (account configuration) og vælg privacy. Når du
er der, vælg så hvilken nøgle du vil bruge, og de fleste vil nok bruge
standard-nøglen.
7.
Offentlig nøglekryptografi
Grundlæggende offentlig nøglekryptografi
Konceptet bag om offentlig nøglekryptografi blev opfundet af Whitfield
Diffie og Martin Hellman i 1976. Da jeg først hørte ordene "offentlig
nøgle" og "kryptografi" i samme sætning, tilbage i 1993, troede jeg at
det ville være umuligt at gøre sådan en ting. I disse dage var der
ingen Internet (det var det godt nok, men ikke for mig) så jeg gik hen
til det offentlige bibliotek og spurgte for bøger om kryptografi. Jeg
må sige, at jeg var 16 år på dette tidspunkt, så bibliotekaren så på
mig med forbløffelse og gav mig en bog til børn om udskiftelige cypher
(disse, hvor du ændrer et bogstav til et andet, som den berømte Caesar
kode eller ROT-13 (Tragbb Ebpxf, naq lbh xabj vg vf tbbq orpnhfr lbh
ner ernqvat guvf qbp.), (emerge rotix hvis du ikke kan læse den
foregående tekst)). Jeg var meget sur over dette, og startede med at
søge for flere informationer. Det er godt at have matematikere i
familien, da jeg begyndte at tale til en af dem, var jeg introduceret
til en ny verden.
Og nu en smule matematik:
Kode oversigt 7.1: Matematiske koncepter |
Definationer:
1- Et primtal er en positiv integer nummer, som kun kan divideres med med 1 og sig selv (huskeren er delingen af 0). De første 8 primtal er 1,2,3,5,7,11,13,17
Læresætning (ingen beviser her)
1- For ethvert ikke positiv primtal integer, er det muligt at bryde det som produktet af primtalsnumre, og dette produkt er unik.
4=2*2
6=2*3
8=2*4=2*2*2
10=2*5
12=2*6=2*2*3
"Fakta":
1- Det er matematisk let at gange to store heltal.
2- Det er svært at finde prim-faktorerne af et givet positivt heltal.
|
Hvis jeg giver dig nummeret 35, og jeg fortæller dig at dette nummer
er et produkt af to primtal, er det let at finde ud af at det var 5 og
7. Men hvis jeg fortæller dig det samme for 1588522601, vil du bruge
en del tid (eller processorkraft) til at finde ud af at det var
49811*31891. Og hvis dette nummer er virkeligt stort, vil opgaven
blive "umulig". Så hvis jeg nu giver verdenen mit store nummer, som
er et produkt af to primtal, vil jeg vide noget om det nummer, som
ingen andre ved.
Dette er grundlaget for offentlig nøglekryptografiske ('Public Key
Cryptography (PKC)') implementeringer i dag. Som et (urealistisk)
eksempel, vil jeg give nogen mit nummer og denne vil bruge det til at
kryptere en besked til mig. Alle, som kan se den krypterede besked, og
fordi at jeg er den eneste som kender en genvej til at læse den, skal
alle andre først begynde at "splitte" det store nummer for at kunne
læse beskeden, og det er "fakta" at det er umuligt at gøre dette på
kort tid (metoder i dag og hurtigere computere i verdenen vil tage
tusinder af år om at gøre dette). I denne indstilling vil de to store
primtal blive kaldet for PRIVAT NØGLE (PRIVATE KEY), og det store ikke
primtal er den OFFENTLIGE NØGLE (PUBLIC KEY).
I praksis er dette ikke 100% nøjagtigt med realiteten, men vil give et
godt indblik til den nyankomne. For flere informationer, kig på
hack.gr omkring Diffie-Hellman
protokollen. For endnu flere informationer, gå hen til dit offentlige
bibliotek og få fat i en kopi af "Handbook of Applied
Cryptography" af Alfred J. Menezes, Paul C. van Oorschot og
Scott A. Vanstone. Denne bog er også tilgængelig gratis online på
ovenstående side.
En konsekvens af det ovenstående er at hvis du koder en besked til
mig, og du mister den originale ukodede besked, vil du ikke længere
have mulighed for at hente den fra den kodede version.
Signaturer
Vi har allerede set hvordan nogen kan sende os en kodet besked, hvis de har
vores offentlige nøgle. Men hvordan ved vi om forfatteren af beskeden
virkelig er den, som han påstår han er? Eller i andre ord: Hvis vi
modtager en email fra dig, hvordan ved jeg virkeligt at det var dig og
ikke en anden, som påstår at være dig?
Huskede du det var mig som sagde at PKC ikke var så simpelt, som jeg
sagde? Ideen er at når du koder en besked til mig, underskriver du den
med din private nøgle, så når jeg modtager den, kan jeg bruge din
offentlige nøgle for at tjekke din signatur og så bruge den i min
private nøgle til at dekode beskeden. Som du kan se, kunne vi ikke
gøre dette i opsætningen, som beskrevet før.
Det er også vigtigt, for at underskrive beskeder, at du ikke skal kode
dem førhen. Som sådan kan du oprette beskeder, som kan blive læst af
alle, men kommer med din "branding". Og hvis noget tegn er ændret i
beskeden, kan (og vil) det blive opdaget.
Nøgleservere og underskrevne nøgler
Men lad os sige at jeg ikke har nogen foregående kontakt med dig,
indtil du sender mig en besked, hvordan kan jeg få din offentlige
nøgle, og hvordan ved jeg virkeligt at det er dit?
For at løse dette problem, er offentlige nøgleservere skabt. Når du
opretter et nøglepa (offentlig og privat nøgle) sender du din
offentlige nøgle til nøgleserveren. Efter dette, vil alle kunne
modtage din nøgle derfra. Dette løser problemet med at finde
nøglen. Men hvordan ved jeg virkelig at nøglen er forfatterens nøgle?
Til dette, skal et nyt koncept introduceres, og det er
nøgle-underskrivelse:
Nøgle-underskrivelse betyder, at hvis jeg har en offentlig nøgle fra
en anden person, og jeg ved virkeligt at det er dens persons
nøgle (det er min personlige ven, nogen jeg kender i den virkelige
verden osv.) kan jeg underskrive denne offentlige nøgle og sende det
til nøgleservere, og på den måde fortæller jeg verdenen: "Denne nøgle
tilhører virkelig den person, som påstår at tilhøre den". På den måde
kan personer, som har offentlige nøgler og stoler på mig, bruge denne
tillid til at stole andre nøgler.
Det kan til tider være forvirrende, så lad os se på en situation fra
den virkelige verden.
Lad os forestille os en tre-persons situation: John, Mary og
Lisa. John er en god ven af Mary, men kender ikke Lisa; Lisa er en god
ven af Mary, men kender ikke John. En dag sender Lisa en underskreven
email til John. John vil hente Lisas offentlige nøgle fra
nøgleserveren og teste beskeden, hvis den gik igennem, vil han se at
hvem der end har skrevet den besked, også lavede den nøgle. Men
hvordan vil jeg vide at det virkelig er den person, som der påståes?
Han ser så at den er underskrevet af Mary, som han kan tjekke, idet
han allerede har Marys nøgle og stoler på den. Med den ring af tillid
fortsætter han med at tro på at emailen, som har modtaget, virkelig er
skrevet af Lisa.
Du er nu klar til at bruge denne vejledning, og kan nu gå tilbage til
kapitel 1 med at lære om at bruge gpg.
8.
Sidste tanker og anerkendelser
Nogle problemer
Jeg har problemer med billeder i nøgler. Tjek den version du
bruger. Hvis du har GnuPG 1.2.1-r1 eller højere, er det sikkert okay,
ældre version kan har problemer. Også kan de fleste nøgleservere ikke
lide nøgler med billeder, så det er bedre, hvis du ikke tilføjer
billeder.
De sidste versioner af gnupg virker tilsyneladende ikke med gpg
--send-keys, som var brugt til at sende alle nøgler fra din
nøglering til den offentlige server.
Hvad ikke er her
GPG er et meget komplekst værktøj, som tillader at gøre MEGET mere end
hvad jeg har været omkring i den her guide. dette dokument er for
brugeren, som er ny til GnuPG. For flere informationer, bør du tjekke:
GnuPG Hjemmesiden.
Jeg kommer heller ikke omkring andre programmer som pgp4pine,
gpgpine, evolution og måske windows-værktøjer, men jeg
vil formodentlig udvide dette dokument i fremtiden.
Anerkendelser
John Michael Ashleys GnuPG Håndbog
er en meget god bog til begynnere.
Swift (Sven Vermeulen) for at skubbe mig til at omskrive dette.
Alle jer i #gentoo-doc holdet, I er simpelthen for seje!.
Tiago Serra for at få mig tilbage til privacy vejen
Indholdet i dette dokument er autoriseret under en Creative Commons -
Attribution / Share Alike licens.
|