Ero sivun ”GNU Privacy Guard” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
pEi muokkausyhteenvetoa
(35 välissä olevaa versiota 11 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
{{Ohjelma | nimi=GNU Privacy Guard | kuva=[[Kuva:Gpg_logo.png]] | kuvateksti= | lisenssi=[[GPL]] | käyttöliittymä=teksti | kotisivu=[http://www.gnupg.org www.gnupg.org]}}
{{Ohjelma
| nimi=GNU Privacy Guard
| kuva=[[Kuva:GnuPG_logo.png|200px]]
| kuvateksti=
| lisenssi=[[GPLv3+]]
| käyttöliittymä=teksti
| kotisivu=[https://gnupg.org/ gnupg.org]
}}


GNU Privacy Guard (GPG tai GnuPG) on vapaa versio tiedostojen salaamiseen ja allekirjoittamiseen tarkoitetusta [[wikipedia:fi:PGP|PGP]]-ohjelmasta. Siitä on saatavissa versiot Linuxin lisäksi myös Windowsille, MacOS:lle ja PocketPC:lle.
'''GNU Privacy Guard''' ('''GPG''' tai '''GnuPG''') on avoimen [[OpenPGP]]-standardin mukainen vapaa ohjelmisto tiedostojen salaamiseen ja allekirjoittamiseen tarkoitetusta kaupallisesta [[wikipedia:fi:PGP|PGP]]-ohjelmasta. Siitä on saatavissa versiot Linuxin lisäksi myös Windowsille, GNU Hurdille, [[BSD]]:ille, MacOS X:lle, VMS:lle ja PocketPC:lle.


== Salaiset ja julkiset avaimet ==
== Salaiset ja julkiset avaimet ==
Ggp:ssä käytetään kahdenlaisia avaimia, salaisia ja julkisia. Kuten nimistä voi päätellä, julkinen avain on tarkoitettu levitettäväksi julkisesti tai esimerkiksi lähetettäväksi avainpalvelimelle ja salainen avain on tarkoitus pitää vain käyttäjän omassa käytössä.
GPG:ssä käytetään kahdenlaisia avaimia, salaisia ja julkisia. Kuten nimistä voi päätellä, julkinen avain on tarkoitettu levitettäväksi julkisesti tai esimerkiksi lähetettäväksi avainpalvelimelle ja salainen avain on tarkoitus pitää vain käyttäjän omassa käytössä.


Kun käyttäjällä on toisen henkilön julkinen avain tämä voi salata viestin (tai tiedoston) siten, että sen avaamiseen tarvitaan vastaanottajan salainen avain. Vastaavasti salaista avainta käyttämällä on mahdollista lisätä viestiin allekirjoitus, jonka aitouden voi tarkistaa julkisella avaimella.
Kun käyttäjällä on toisen henkilön julkinen avain tämä voi salata viestin (tai tiedoston) siten, että sen avaamiseen tarvitaan vastaanottajan salainen avain. Vastaavasti salaista avainta käyttämällä on mahdollista lisätä viestiin allekirjoitus, jonka aitouden voi tarkistaa julkisella avaimella.


Salaista avainta käytettäessä tarvitaan myös avaimen salasana.
Salaista avainta käytettäessä tarvitaan myös avaimen salasana.
Lisätietoja tällaisesta salaustekniikasta löytyy Wikipedian [[wikipedia:fi:RSA|RSA]]-artikkelista.


== Käyttö ==
== Käyttö ==
Gpg:tä käytetään komentoriviltä, mutta sille on olemassa myös [[Gpg#Katso myös|graafisia käyttöliittymiä]].
GPG:tä käytetään komentoriviltä, mutta sille on olemassa myös [[GPG#Katso myös|graafisia käyttöliittymiä]].


=== Avainparin luominen ===
=== Avainparin luominen ===
Gpg:tä käytettäessä on luotava avainpari (tai tuotava jo olemassa oleva). Avainpari luodaan, mikäli mahdollista paikallisella koneella verkko alhaalla, komennolla
GPG:tä käytettäessä on luotava avainpari (tai tuotava jo olemassa oleva). Avainpari luodaan, mikäli mahdollista paikallisella koneella verkko alhaalla, komennolla
  $ gpg --gen-key
  $ gpg --gen-key
Tämän jälkeen gpg kysyy, minkä tyyppinen avain luodaan ja kuinka suuri avain (bitteinä) luodaan. Oletusasetukset ovat hyvät. Seuraavaksi kysytään, kuinka pitkään luotava avain on voimassa. Oletuksena avain ei vanhene koskaan mikä on usein hyvä vaihtoehto.
Tämän jälkeen GPG kysyy, minkä tyyppinen avain luodaan ja kuinka suuri avain (bitteinä) luodaan. Oletusasetukset ovat hyvät. Seuraavaksi kysytään, kuinka pitkään luotava avain on voimassa. Oletuksena avain ei vanhene koskaan mikä on usein hyvä vaihtoehto:
<pre>
Valitse millaisen avaimen haluat:
  (1) DSA ja ElGamal (oletus)
  (2) DSA (vain allekirjoitus)
  (5) RSA (vain allekirjoitus)
Valintasi? 1
DSA-avainparissa tulee olemaan 1024 bittiä.
ELG-E keys may be between 1024 and 4096 bits long.
Minkä kokoisen avaimen luodaan? (2048)
Halutun avaimen koko on 2048 bittiä
Kuinka kauan avaimen tulee olla voimassa.
        0 = Avain ei vanhene koskaan
    <n>  = Avain vanhenee n päivän kuluttua
    <n>w = Avain vanhenee n viikon kuluttua
    <n>m = Avain vanhenee n kuukauden kuluttua
    <n>y = Avain vanhenee n vuoden kuluttua
Avain on voimassa? (0)
Avain ei vanhene koskaan
Onko tämä oikein? (y/N) y
</pre>


Näiden tietojen jälkeen gpg kysyy nimen, kommentin ja sähköpostiosoitteen luotavaa avainta varten. Kommenttina voi olla vaikka privat, work tai home. Skandinaavisten ja muiden erikoismerkkien käyttö annetuissa arvoissa voi tuoda myöhemmin ongelmia. Real namen lisäksi avainpariin voi myöhemmin lisätä muita aliavaimia (identiteettejä, sähköpostiosoitteita), joten voit käyttää samaa avainta monella sähköpostitunnuksella.
Näiden tietojen jälkeen GPG kysyy nimen, kommentin ja sähköpostiosoitteen luotavaa avainta varten. Kommenttina voi olla vaikka privat, work tai home. Skandinaavisten ja muiden erikoismerkkien käyttö annetuissa arvoissa voi tuoda myöhemmin ongelmia. Real namen lisäksi avainpariin voi myöhemmin lisätä muita aliavaimia (identiteettejä, sähköpostiosoitteita), joten voit käyttää samaa avainta monella sähköpostitunnuksella.


<pre>
<pre>
Email address: pera@linux.fi
Oikea nimi: Pentti Perussurffaaja
Comment: Mun GPG-avain \o/
Sähköpostiosoite: pera@linux.fi
You selected this USER-ID:
Huomautus: Ensimmäinen GPG-avaimeni
     "Pertti Peruskayttaja (Mun GPG-avain \o/) <pera@linux.fi>"
Käytät merkistöä "utf-8".
Valitsit seuraavan käyttäjätunnuksen:
     "Pentti Perussurffaaja (Ensimmäinen GPG-avaimeni) <pera@linux.fi>"


Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
Muuta (N)imi, (H)uomautus, (S)ähköposti vai (O)k/(L)opeta? O
</pre>
</pre>


Nyt salaiselle avaimelle pyydetään salasana.
Nyt salaiselle avaimelle pyydetään salasana.
Voit käyttää salasanan keksimiseen apuna ohjelmaa pwgen. Salasana suojaa hiukan salaista avainta, jos se hukkuu tai joku saa kopion siitä käsiinsä.
Voit käyttää salasanan keksimiseen apuna ohjelmaa [[pwgen]]. Salasana suojaa hiukan salaista avainta jos se hukkuu tai joku saa kopion siitä käsiinsä.


<pre>
<pre>
You need a Passphrase to protect your secret key.
Tarvitset salasanan suojaamaan salaista avaintasi.


Enter passphrase:  [tarPEKs1_randoomi15salasana]
Syötä salasana:  [tarPEKs1_randoomi15salasana]
Repeat passphrase: [tarPEKs1_randoomi15salasana]
Toista salasana: [tarPEKs1_randoomi15salasana]
</pre>
</pre>


Salasana "tarPEKs1_randoomi15salasana" ei tietenkään ole enää turvallinen, käytä jotain muuta.


Näiden tietojen antamisen jälkeen kone luo varsinainen avainparin. Se voi kestää hetken ja jopa pysähtyä hetkeksi, jos tietokoneella ei tehdä muuta. Tällöin saat ilmoituksen
Näiden tietojen antamisen jälkeen kone luo varsinainen avainparin. Se voi kestää hetken ja jopa pysähtyä hetkeksi, jos tietokoneella ei tehdä muuta, sillä GPG tarvitsee satunnaisdataa riittävän turvallisten avainten luomiseksi. Satunnaisdataa saadaan seuraamalla käyttäjän enemmän tai vähemmän satunnaisia toimintoja koneella. Avainparin luomisen pysähtyessä saat ilmoituksen
<pre>
<pre>
Not enough random bytes available. Please do some other
Tarvitaan paljon satunnaislukuja. Voit suorittaa muita toimintoja
work to give the OS a chance to collect more entropy!
(kirjoittaa näppäimistöllä, liikuttaa hiirtä, käyttää levyjä)
alkulukujen luomisen aikana, tämä antaa satunnaislukugeneraattorille
paremmat mahdollisuudet kerätä riittävästi entropiaa.
</pre>
</pre>
Tässä tapauksessa liikuttele hiirtä tai selaa wikiä, jotta satunnaislukugeneraattori sekoittuu tarpeeksi.
Tässä tapauksessa liikuttele hiirtä tai selaa wikiä, jotta satunnaislukugeneraattori sekoittuu tarpeeksi.


Kun kaikki tämä on tehty, gpg tulostaa tiedot juuri luodusta avaimesta, allekirjoittaa julkisen avaimen salaisella avaimella (itsellään) sekä lisää sen korkeimmalle luottamustasolle (ultimate) avainrenkaaseen trustdb.gpg, joka luodaan, jos sitä ei vielä ole olemassa.
Kun kaikki tämä on tehty, GPG tulostaa tiedot juuri luodusta avaimesta, allekirjoittaa julkisen avaimen salaisella avaimella (itsellään) sekä lisää sen korkeimmalle luottamustasolle (ultimate) avainrenkaaseen trustdb.gpg, joka luodaan, jos sitä ei vielä ole olemassa.
<pre>
<pre>
gpg: /home/pertti/.gnupg/trustdb.gpg: trustdb created
gpg: key 7AF6D4B4 marked as ultimately trusted
gpg: key 7AF6D4B4 marked as ultimately trusted
public and secret key created and signed.
julkinen ja salainen avain on luotu ja allekirjoitettu.


gpg: checking the trustdb
gpg: tarkistetaan trustdb:tä
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:  1  signed:  0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 0  valid:  1  signed:  0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub  1024D/7AF6D4B4 2007-08-12
pub  1024D/7AF6D4B4 2007-08-12
       Key fingerprint = 6C00 8FC4 274D 441E F220  03F4 14D6 E291 7AF6 D4B4
       Key fingerprint = 6C00 8FC4 274D 441E F220  03F4 14D6 E291 7AF6 D4B4
uid                  Pertti Peruskayttaja (Mun GPG-avain \o/) <pera@linux.fi>
uid                  Pentti Perussurffaaja (Ensimmäinen GPG-avaimeni) <pera@linux.fi>
sub  2048g/49EF6931 2007-08-12
sub  2048g/49EF6931 2007-08-12
</pre>
</pre>
Tässä 7AF6D4B4 on avaimen tunnistenumero, 1024 salauksen pituus (bittiä), D DSA-algoritmilla luotu ja 6C00 8FC4 274D 441E F220  03F4 14D6 E291 7AF6 D4B4 sen sormenjälki. Viimeisellä rivillä on avaimen luontipäivä.
Tässä 7AF6D4B4 on avaimen tunnistenumero, jolla avaimeen tullaan myöhemmin viittaamaan. 1024 salauksen pituus (bittiä), D tarkoittaa että avain on DSA-algoritmilla luotu ja 6C00 8FC4 274D 441E F220  03F4 14D6 E291 7AF6 D4B4 on avaimen sormenjälki. Viimeisellä rivillä on avaimen luontipäivä.
Huomaa skandien syrjiminen.


Kaikki käytössä olevat avainparit näet komennolla
Kaikki käytössä olevat avainparit näet komennolla
  $ gpg --list-keys
  $ gpg --list-keys
Nyt avain on luotu ja allekirjoitettu itsellään (allekirjoituksista lisää myöhemmin). Tässä vaiheessa kannattaa luoda avaimen mitätöintitiedosto ja varmuuskopioida tämän jälkeen sekä äsken luotu salainen avain että mitätöintitiedosto varmaan paikkaan. Seuraavaksi käydään läpi miten tämä tapahtuu.


==== Avaimen mitätöintitiedosto ====
==== Avaimen mitätöintitiedosto ====
Rivi 71: Rivi 106:


Kumoamistiedoston luomiseen tarvitaan avaimen salainen osa ja sen salasana. Se tehdään komennolla
Kumoamistiedoston luomiseen tarvitaan avaimen salainen osa ja sen salasana. Se tehdään komennolla
  gpg --gen-revoke tunnistenumero
  $ gpg --gen-revoke tunnistenumero
Tämän jälkeen gpg kysyy syyn avaimen mitätöintiin ja kommentin mitätöinnille. Tämän jälkeen gpg tulostaa mitätöintiosan muodossa
Esimerkiksi edellä luodulle avaimelle
$ gpg --gen-revoke 7AF6D4B4
Tämän jälkeen GPG kysyy syyn avaimen mitätöintiin ja kommentin mitätöinnille, sen jälkeen tulostaa mitätöintiosan muodossa
  -----BEGIN PGP PUBLIC KEY BLOCK-----
  -----BEGIN PGP PUBLIC KEY BLOCK-----
  ohjelman versio ja muita tietoja
  ohjelman versio ja muita tietoja
  pitkä mystinen merkkisarja
  pitkä mystinen merkkisarja
  -----END PGP PUBLIC KEY BLOCK-----
  -----END PGP PUBLIC KEY BLOCK-----
Tallenna tämä osa esimerkiksi CD-levylle. Lisäksi se kannattaa varmuuden vuoksi esimerkiksi tulostaa.
Tallenna tämä osa esimerkiksi CD-levylle. Lisäksi se kannattaa varmuuden vuoksi tulostaa.


Mitätöintitiedostolla avain voidaan sitten poistaa esimerkiksi julkiselta avainpalvelimelta. Ohjeet tähän löytyy yleensä palvelimen kotisivulta.
Mitätöintitiedostolla avain voidaan sitten poistaa esimerkiksi julkiselta avainpalvelimelta. Ohjeet tähän löytyy yleensä palvelimen kotisivulta.


=== Avainten tuominen ja vieminen ===
=== Avainten tuominen ja vieminen ===
Jotta Gpg:n salauksista ja allekirjoituksista saataisiin jotain hyötyä, on käyttäjien pystyttävä antamaan julkisia avaimiaan toisilleen.
Jotta GPG:n salauksista ja allekirjoituksista saataisiin jotain hyötyä, on käyttäjien pystyttävä antamaan julkisia avaimiaan toisilleen.


Tietyn avaimen julkinen osa voidaan tallentaa tiedostoon komennolla
Tietyn avaimen julkinen osa voidaan tallentaa tiedostoon komennolla
  gpg --export -a tunnus > tiedosto.key
  $ gpg --export -a tunnistenumero > avain.key
Valitsin -a ei ole pakollinen, mutta se tallentaa avaimen teksti- eikä binäärimuodossa, jolloin se on selkeämpi lukea ja riski sen korruptoitumiseen on pieni.
Valitsin -a ei ole pakollinen, mutta se tallentaa avaimen teksti- eikä binäärimuodossa, jolloin se on selkeämpi lukea ja riski sen korruptoitumiseen on pieni.  


Tällä tavalla tallennettu tiedosto voidaan tuoda toisessa Gpg:ssä käyttöön komennolla
Tällä tavalla tallennettu tiedosto voidaan tuoda toisessa GPG:ssä käyttöön komennolla
  gpg --import avain.key
  $ gpg --import avain.key
 
Julkisen avaimen voi julkaista vaikka kotisivullaan tai kantaa USB-tikulla. Avain voidaan myös lähettää julkisille avainpalvelimille, mutta ennen avaimen lähetystä kannattaa harjoitella ensin jonkun aikaa sen käyttöä, sillä avaimen luonnissa tapahtunutta virhettä ei voi korjata sen jälkeen, kun avain on julkistettu avainpalvelimilla. Sen voi julkaisun jälkeen ainoastaan mitätöidä, jos salainen avain on vielä tallessa, tai jos mitätöintitiedosto on muistettu luoda etukäteen ja se on hyvä tallessa. Avaimen julkaiseminen avainpalvelimelle käsitellään myöhemmin tässä artikkelissa.
 
Vastaanottaja voi tarkistaa avaimen todenperäisyyden, mikäli hänellä on tiedossa avaimen sormenjälki, joka on mieluiten saatu jotain muuta, kuin sähköistä reittiä pitkin. Hyviä siirtovälineitä ovat paperimuoto tai tarpeen vaatiessa puhelin. Sormenjälki on avaimestasi tiivistealgoritmilla laskettu 40-merkkinen merkkijono joka varmistaa, että elektronisesti välitetty avain ei ole muuttunut siirron aikana ja että se todella vastaa väitettyä avainta. Sormenjäljen tarkistaminen on se tapa, jolla ihminen pystyy järkevällä resurssinkäytöllä varmistamaan elektronisen avaimen liitettäessä sitä omaan julkisten avainten renkaaseen ja antamaan tälle luottotason.
 
Oman avaimen sormenjäljen saa selville komennolla
$ gpg --fingerprint tunnistenumero
 
Myös salaisia avaimia voidaan tallentaa tiedostoon. Tällöin käytetään valitsinta <tt>--export-secret-key</tt>:
$ gpg --export-secret-key -a tunnistenumero > salainen_avain.key
Salainen avain on syytä tallentaa ulkoiselle medialle (esim. CD-levylle) ja viedä levy paikkaan, josta se ei varmasti joudu vääriin käsiin. Vaikka salaista avainta suojaa avainta luotaessa valittu salasana, tämä suojaus ei ole niin vahva, että se estäisi varmasti salaisen avaimen väärinkäytökset.
 
Salainen avain voidaan tuoda käyttöön samaan tapaan kuin julkinenkin avain komennolla <tt>gpg --import avain.key</tt>.


=== Viestien salaaminen ja purkaminen ===
=== Viestien salaaminen ja purkaminen ===
Tämän jälkeen viestin salaaminen onnistuu valitsimen <tt>-e</tt> (tai <tt>--encrypt</tt>) avulla:
Tämän jälkeen viestin salaaminen onnistuu valitsimen <tt>-e</tt> (tai <tt>--encrypt</tt>) avulla:
  gpg --encrypt tiedosto
  $ gpg --encrypt tiedosto
Jolloin Gpg luo tiedoston tiedosto.gpg jossa tiedoston sisältö on salattuna. Tämän jälkeen Gpg kysyy, millä julkisella avaimella viesti salataan (listan näet komennolla <tt>gpg --list-keys</tt>). Jos esimerkiksi haluataan salata tiedoston käyttäen yllä luodun avaimen julkista osaa, annetaan avaimen tunnukseksi avaimen tunnistenumero 7AF6D4B4 ja painetaan entteriä. Avaimen tunnistenumero voidaan antaa myös valitsimella <tt>-r</tt>:
Jolloin GPG luo tiedoston tiedosto.gpg, jossa tiedoston sisältö on salattuna. Tämän jälkeen GPG kysyy, millä julkisella avaimella viesti salataan (listan näet komennolla <tt>gpg --list-keys</tt>). Jos esimerkiksi halutaan salata tiedosto käyttäen yllä luodun avaimen julkista osaa, annetaan avaimen tunnukseksi avaimen tunnistenumero 7AF6D4B4 ja painetaan entteriä. Avaimen tunnistenumero voidaan antaa myös valitsimella <tt>-r</tt>:
  $ gpg -e -r 7AF6D4B4 tiedosto
  $ gpg -e -r 7AF6D4B4 tiedosto


Salattu viesti puretaan vastaavasti valitsimen --decrypt avulla:
Salattu viesti puretaan vastaavasti valitsimen --decrypt avulla:
  gpg --decrypt tiedosto.gpg
  $ gpg --decrypt tiedosto.gpg
Jolloin Gpg kysyy avaimeen kuuluvaa salasanaa. Avaimen salaisen osan on myös oltava käytettävissä.
Jolloin GPG kysyy avaimeen kuuluvaa salasanaa. Avaimen salaisen osan on myös oltava käytettävissä.


=== Allekirjoittaminen ===
=== Allekirjoittaminen ===
Allekirjoitettaessa tiedostoa annetaan gpg:lle valitsin <tt>-s</tt> (tai <tt>--sign</tt>) ja allekirjoitettava tiedosto:
Allekirjoitettaessa tiedostoa annetaan GPG:lle valitsin <tt>-s</tt> (tai <tt>--sign</tt>) ja allekirjoitettava tiedosto:
  $ gpg --sign tiedosto
  $ gpg --sign tiedosto
Jonka jälkeen gpg pyytää salasanan ja allekirjoittaa tiedoston oletusavaimella. Jos halutaan käyttää jotain muuta kuin oletuksena käytettävää avainta, se voidaan antaa valitsimella <tt>-u</tt>:
Jonka jälkeen GPG pyytää salasanan ja allekirjoittaa tiedoston oletusavaimella. Jos halutaan käyttää jotain muuta kuin oletuksena käytettävää avainta, se voidaan antaa valitsimella <tt>-u</tt>:
  $ gpg -s -u 7AF6D4B4 tiedosto
  $ gpg -s -u 7AF6D4B4 tiedosto
Tällöin tuloksen on tiedosto <tt>tiedosto.gpg</tt> jossa on allekirjoitettu viesti ja allekirjoitus pakattuna. Pakkaamattomana tiedosto allekirjoitetaan valitsimella <tt>--clearsign</tt>:
Tällöin tuloksena on tiedosto <tt>tiedosto.gpg</tt>, jossa on allekirjoitettu viesti ja allekirjoitus pakattuna. Pakkaamattomana tiedosto allekirjoitetaan valitsimella <tt>--clearsign</tt>:
  $ gpg --clearsign tiedosto
  $ gpg --clearsign tiedosto
Jonka jälkeen tiedoston <tt>tiedosto.asc</tt> sisältö on seuraavanlainen:
jonka jälkeen tiedoston <tt>tiedosto.asc</tt> sisältö on seuraavanlainen:
<pre>
<pre>
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
Rivi 126: Rivi 176:
Allekirjoituksen saa tallennettua erilliseen tiedostoon valitsimella <tt>-b</tt>. Tämä on kätevää etenkin allekirjoitettaessa binääritiedostoja:
Allekirjoituksen saa tallennettua erilliseen tiedostoon valitsimella <tt>-b</tt>. Tämä on kätevää etenkin allekirjoitettaessa binääritiedostoja:
  $ gpg -b tiedosto
  $ gpg -b tiedosto
Jolloin tuloksena on tiedosto <tt>tiedosto.sig</tt> jossa on allekirjoitus pakattuna.
Jolloin tuloksena on tiedosto <tt>tiedosto.sig</tt>, jossa on allekirjoitus pakattuna.


Allekirjoitus tarkistettaan antamalla gpg:lle valitsin <tt>--verify</tt>:
Allekirjoitus tarkistettaan antamalla GPG:lle valitsin <tt>--verify</tt>:
  $ gpg --verify tiedosto
  $ gpg --verify tiedosto
  gpg: Signature made Sun 12 Aug 2007 19:35:07 EEST using DSA key ID 7AF6D4B4
  gpg: Signature made Sun 12 Aug 2007 19:35:07 EEST using DSA key ID 7AF6D4B4
  gpg: Good signature from "Pentti Perussurffaaja (Mun GPG-avain \o/) <pera@linux.fi>"
  gpg: Good signature from "Pentti Perussurffaaja (Ensimmäinen GPG-avaimeni) <pera@linux.fi>"
Tällöin gpg siis kertoo, millä avaimella ja milloin allekirjoitus on tehty. Jos tiedostoa on muutettu allekirjoituksen jälkeen, toinen rivi muuttuu muotoon
Tällöin GPG siis kertoo, millä avaimella ja milloin allekirjoitus on tehty. Jos tiedostoa on muutettu allekirjoituksen jälkeen, toinen rivi muuttuu muotoon
  gpg: BAD signature from "Pentti Perussurffaaja (Mun GPG-avain \o/) <pera@linux.fi>"
  gpg: BAD signature from "Pentti Perussurffaaja (Ensimmäinen GPG-avaimeni) <pera@linux.fi>"


Jos allekirjoitus on erillisessä tiedostossa, annetaan se parametrina gpg:lle
Jos allekirjoitus on erillisessä tiedostossa, annetaan se parametrina GPG:lle.
  $ gpg --verify tiedosto.sig
  $ gpg --verify tiedosto.sig


Rivi 144: Rivi 194:
  $ gpg --keyserver palvelin --send-key tunniste
  $ gpg --keyserver palvelin --send-key tunniste
Esimerkiksi edellä luomamme avain lähetettäisiin palvelimelle wwwkeys.eu.pgp.net komennolla
Esimerkiksi edellä luomamme avain lähetettäisiin palvelimelle wwwkeys.eu.pgp.net komennolla
  $ gpg --keyserver wwwkeys.eu.pgp.net --send-key 7AF6D4B4
  $ gpg --keyserver pool.sks-keyservers.net --send-key 7AF6D4B4
Vastaavasti tietty avain haettaisiin sieltä komennolla
Vastaavasti tietty avain haettaisiin sieltä komennolla
  $ gpg --keyserver wwwkeys.eu.pgp.net --recv-key tunniste
  $ gpg --keyserver pool.sks-keyservers.net --recv-key tunniste


Joitain avainpalvelimia:
Joitain avainpalvelimia:
*wwwkeys.eu.pgp.net
*pool.sks-keyservers.net
*wwwkeys.us.pgp.net
*wwwkeys.us.pgp.net
*pgp.dtype.org
*pgp.mit.edu
*wweys.pgp.net
*pgp.surfnet.nl
*search.keyserver.net
 
Suurin osa avainpalvelimista on yhteydessä toisiinsa ja päivittää avaimet keskenään tietyin väliajoin. Siispä yleensä riittää, että lähettää avaimen vain yhdelle palvelimelle.
 
=== Avaimen mitätöiminen ===
Jos avain murretaan, salainen avain hukkuu tai avaimen käyttö muuten lopetetaan voidaan avainpalvelimelle lähettää tieto avaimen käytöstä poistamisesta '''vain''' mitätöintitiedoston avulla. Tästä syystä mitätöintitiedosto on tärkeää luoda avainparia luotaessa.
 
Mitätöintitiedosto lähetetään palvelimelle siten, että ensin se otetaan käyttöön GPG:lle ja tämän jälkeen avain lähetetään normaaliin tapaan avainpalvelimelle. Jos mitätöintitiedoston nimi olisi <tt>avain.revoke</tt>, se lähetettäisiin avainpalvelimelle seuraavasti:
$ gpg --import avain.revoke
gpg: key TUNNISTE: "Nimi <osoite>" revocation certificate imported
gpg: Kaikkiaan käsitelty: 1
gpg:    uusia avainten mitätöintejä: 1
--
$ gpg --keyserver avainpalvelin --send-key TUNNISTE
gpg: sending key TUNNISTE to hkp server avainpalvelin


== Luottamusverkot ja avainten allekirjoittaminen ==
== Luottamusverkot ja avainten allekirjoittaminen ==
PGP-avaimella on siis mahdollista allekirjoittaa tiedostoja ja viestejä. Mutta miten vastaanottaja voi luottaa siihen, että allekirjoittaja on oikeasti se, kuka väittää olevansa? Tätä varten PGP-avaimia on mahdollista allekirjoittaa.
PGP-avaimella on siis mahdollista allekirjoittaa tiedostoja ja viestejä. Mutta miten vastaanottaja voi luottaa siihen, että allekirjoittaja on oikeasti se, kuka väittää olevansa? Tätä varten PGP-avaimia on mahdollista allekirjoittaa.


Allekirjoittaminen tarkoittaa sitä, että PGP:tä käyttävät henkilöt tapaavat toisensa ja tarkistavat toistensa henkilöllisyyden virallisella kuvallisella henkilöllisyystodistuksella (ajokortti, passi tms.) ja vaihtavat avaintensa sormenjälkiä ja tietoja avainten salauksen vahvuudesta. Avaimen sormenjälki on tietyn avaimen tunnistemerkkijono. Gpg:llä avainten sormenjäljet näkee komennolla
Allekirjoittaminen tarkoittaa sitä, että PGP:tä käyttävät henkilöt tapaavat toisensa ja tarkistavat toistensa henkilöllisyyden virallisella kuvallisella henkilöllisyystodistuksella (ajokortti, passi tms.) ja avaintensa sormenjäljet. Avaimen sormenjälki on tietyn avaimen tunnistemerkkijono. GPG:llä avainten sormenjäljet näkee komennolla:
  gpg --fingerprint
  $ gpg --fingerprint
<tt>--fingerprint</tt>-valitsimen perään voi laittaa myös hakusanan, esimerkiksi
<tt>--fingerprint</tt>-valitsimen perään voi laittaa myös hakusanan, esimerkiksi
  gpg --fingerprint ''henkilön nimi''
  $ gpg --fingerprint ''henkilön nimi''
 
Sormenjäljen käytön ideana on varmistaa, että allekirjoitettava avain on nimenomaan kyseisen henkilön oikea julkinen avain.


Nyt kun sinulla on toisen käyttäjän avaimen sormenjälki ja olet tarkistanut tämän henkilöllisyyden (henkilöllisyyden tulee toki vastata avaimen tiedoissa olevaa nimeä), voit allekirjoittaa henkilön avaimen seuraavasti:
Nyt kun sinulla on toisen käyttäjän avaimen sormenjälki ja olet tarkistanut tämän henkilöllisyyden (henkilöllisyyden tulee toki vastata avaimen tiedoissa olevaa nimeä), voit allekirjoittaa henkilön avaimen seuraavasti:
*Tuo henkilön julkinen avain käyttäen joko avainpalvelimia tai lataamalla julkisen avaimen sisältävä tiedosto esim. kyseisen henkilön kotisivuilta
*Tuo henkilön julkinen avain käyttäen joko avainpalvelimia tai lataamalla julkisen avaimen sisältävä tiedosto esim. kyseisen henkilön kotisivuilta
*Avaa avain muokattavaksi komennolla
*Avaa avain muokattavaksi komennolla
  gpg --edit-key tunniste
  $ gpg --edit-key tunniste
*Aukeavassa listassa on avaimen tiedot ja tämän jälkeen yksi tai useampi rivi tyyliin
*Aukeavassa listassa on avaimen tiedot ja tämän jälkeen yksi tai useampi rivi tyyliin
  [ unknown] (1). Käyttäjän Nimi (kommentti) <nowiki><sähköposti></nowiki>
  [ unknown] (1). Käyttäjän Nimi (kommentti) <nowiki><sähköposti></nowiki>
*Kirjoita <tt>n</tt>, jossa n on suluissa oleva numero. Valitse näin uid:t, jotka haluat allekirjoittaa. Enterin painaminen valitsee kaikki uid:t.
*Kirjoita <tt>n</tt>, jossa n on suluissa oleva numero. Valitse näin uid:t (sähköpostiosoitteet), jotka haluat allekirjoittaa. Enterin painaminen valitsee kaikki uid:t.
*Gpg näyttää avaimen sormenjäljen ja salauksen vahvuuden. Tarkista, että tiedot ovat samat, jotka sait henkilöltä tapaamisen yhteydessä.
*GPG näyttää avaimen sormenjäljen ja salauksen vahvuuden. Tarkista, että tiedot ovat samat, jotka sait henkilöltä tapaamisen yhteydessä.
*Allekirjoita avain komennolla <tt>sign</tt>.
*Allekirjoita avain komennolla <tt>sign</tt>.
*Jos tarkistuksen huolellisuutta kysytään, valitse "arkinen" (''casual'') (2).
*Jos tarkistuksen huolellisuutta kysytään, valitse "arkinen" (''casual'') (2).
Rivi 176: Rivi 241:
*Poistu muokkaustilasta komennolla <tt>quit</tt>.
*Poistu muokkaustilasta komennolla <tt>quit</tt>.


<pre>
Avaimen allekirjoitukset näkee komennolla
Lisätietoa tarkistustasosta 3.
$ gpg --list-sigs tunniste
Lopuksi allekirjoitettu avain voidaan lähettää takaisin sen omistajalle tallentamalla se normaalisti tiedostoon (<tt>gpg --export -a tunniste > tiedostonimi</tt>). Jos joku allekirjoittaa avaimesi, kannattaa se sen jälkeen lähettää avainpalvelimelle tavalliseen tapaan (<tt>gpg --keyserver palvelin --send-keys tunniste</tt>).


Mikäli haluat valita tarkistustasoksi korkeimman eli arvon 3, sinun tulisi
===Lisätietoa tarkistustasosta 3===
lähettää allekirjoitettu (ali)avain kryptattuna vastaanottajan kyseiseen  
Mikäli haluat valita tarkistustasoksi korkeimman eli arvon 3, sinun tulisi lähettää allekirjoitettu (ali)avain kryptattuna vastaanottajan kyseiseen aliosoitteeseen. Tämä vastaa sitä, että tarkistat sähköpostiosoitteen toimivuuden. Jos vastaanottaja saa viestin auki, hän voi ottaa käyttöön tämän aliosoitteen allekirjoituksen. Tällöin allekirjoituksesi ilmestyy avaimen aliosoitteen kohdalle vasta, kun avaimen omistaja on päivittänyt avaimensa ja julkaissut sen. Ongelmaksi jää nyt se, että sinulle voi jäädä omaan avainrenkaaseen allekirjoitus, vaikka sinulla ei ole varmuutta, onko sähköposti voimassaoleva. Tähän auttaa se, että poistat ensin käyttäjän avaimen ja
aliosoitteeseen. Tämä vastaa sitä, että tarkistat sähköpostiosoitteen  
toimivuuden. Jos vastaanottaja saa viestin auki, hän voi ottaa käyttöön
tämän aliosoitteen allekirjoituksen. Tällöin allekirjoituksesi ilmestyy
avaimen aliosoitteen kohdalle vasta, kun avaimen omistaja on päivittänyt
avaimensa ja julkaissut sen.
Ongelmaksi jää nyt se, että sinulle voi jäädä omaan avainrenkaaseen  
allekirjoitus, vaikka sinulla ei ole varmuutta, onko sähköposti
voimassaoleva. Tähän auttaa se, että poistat ensin käyttäjän avaimen ja
noudat sen vain avainpalvelimilta tai käyttäjän kertoman julkaisukanavan kautta.
noudat sen vain avainpalvelimilta tai käyttäjän kertoman julkaisukanavan kautta.
</pre>
Avaimen allekirjoitukset näkee komennolla
gpg --list-sigs tunniste
Lopuksi allekirjoitettu avain voidaan lähettää takaisin sen omistajalle tallentamalla se normaalisti tiedostoon (<tt>gpg --export -a tunniste > tiedostonimi</tt>). Jos joku allekirjoittaa avaimesi, kannattaa se sen jälkeen lähettää avainpalvelimelle tavalliseen tapaan (<tt>gpg --keyserver palvelin --send-keys tunniste</tt>).


== Katso myös ==
== Katso myös ==
*[[KGpg]] - [[KDE]]:lle suunniteltu graafinen käyttöliittymä
*[[Enigmail]] - liitännäinen mm. [[Thunderbird|Mozilla Thunderbirdille]]
*[[Gpgp]] - [[GNOME]]lle suunniteltu graafinen käyttöliittymä
*[[Gpgp]] ja [[Seahorse]] - [[GNOME]]lle suunniteltuja graafisia käyttöliittymiä
*[[Seahorse]] - [[GNOME]]lle suunniteltu graafinen käyttöliittymä
*[[KGpg]] ja [[Kleopatra]] - [[KDE]]:lle suunniteltuja graafisia käyttöliittymiä


==Aiheesta muualla==
==Aiheesta muualla==
Rivi 205: Rivi 259:
*[http://firegpg.tuxfamily.org/ FireGPG] - GPG-liitännäinen [[Firefox]]iin
*[http://firegpg.tuxfamily.org/ FireGPG] - GPG-liitännäinen [[Firefox]]iin
*[http://enigmail.mozdev.org/ Enigmail] - GPG-liitännäinen [[Thunderbird]]iin
*[http://enigmail.mozdev.org/ Enigmail] - GPG-liitännäinen [[Thunderbird]]iin
*[http://www.vim.org/scripts/script.php?script_id=661 gnupg] - GPG-liitännäinen [[Vim]]iin
*[http://muropaketti.com/4096-bittinen-rsa-salaus-murtui-mikrofonin-avustuksella-paivitetty 4096-bittinen RSA-salaus murtui mikrofonin avustuksella]


 
{{Salausohjelmia}}
[[Luokka:Tietoturva]]
[[Luokka:Tietoturva]]
[[Luokka:Salausohjelmat]]
[[Luokka:Salausohjelmat]]

Versio 20. tammikuuta 2021 kello 10.33

GNU Privacy Guard

Käyttöliittymä teksti
Lisenssi GPLv3+
Kotisivu gnupg.org

GNU Privacy Guard (GPG tai GnuPG) on avoimen OpenPGP-standardin mukainen vapaa ohjelmisto tiedostojen salaamiseen ja allekirjoittamiseen tarkoitetusta kaupallisesta PGP-ohjelmasta. Siitä on saatavissa versiot Linuxin lisäksi myös Windowsille, GNU Hurdille, BSD:ille, MacOS X:lle, VMS:lle ja PocketPC:lle.

Salaiset ja julkiset avaimet

GPG:ssä käytetään kahdenlaisia avaimia, salaisia ja julkisia. Kuten nimistä voi päätellä, julkinen avain on tarkoitettu levitettäväksi julkisesti tai esimerkiksi lähetettäväksi avainpalvelimelle ja salainen avain on tarkoitus pitää vain käyttäjän omassa käytössä.

Kun käyttäjällä on toisen henkilön julkinen avain tämä voi salata viestin (tai tiedoston) siten, että sen avaamiseen tarvitaan vastaanottajan salainen avain. Vastaavasti salaista avainta käyttämällä on mahdollista lisätä viestiin allekirjoitus, jonka aitouden voi tarkistaa julkisella avaimella.

Salaista avainta käytettäessä tarvitaan myös avaimen salasana.

Lisätietoja tällaisesta salaustekniikasta löytyy Wikipedian RSA-artikkelista.

Käyttö

GPG:tä käytetään komentoriviltä, mutta sille on olemassa myös graafisia käyttöliittymiä.

Avainparin luominen

GPG:tä käytettäessä on luotava avainpari (tai tuotava jo olemassa oleva). Avainpari luodaan, mikäli mahdollista paikallisella koneella verkko alhaalla, komennolla

$ gpg --gen-key

Tämän jälkeen GPG kysyy, minkä tyyppinen avain luodaan ja kuinka suuri avain (bitteinä) luodaan. Oletusasetukset ovat hyvät. Seuraavaksi kysytään, kuinka pitkään luotava avain on voimassa. Oletuksena avain ei vanhene koskaan mikä on usein hyvä vaihtoehto:

Valitse millaisen avaimen haluat:
   (1) DSA ja ElGamal (oletus)
   (2) DSA (vain allekirjoitus)
   (5) RSA (vain allekirjoitus)
Valintasi? 1
DSA-avainparissa tulee olemaan 1024 bittiä.
ELG-E keys may be between 1024 and 4096 bits long.
Minkä kokoisen avaimen luodaan? (2048) 
Halutun avaimen koko on 2048 bittiä
Kuinka kauan avaimen tulee olla voimassa.
        0 = Avain ei vanhene koskaan
     <n>  = Avain vanhenee n päivän kuluttua
     <n>w = Avain vanhenee n viikon kuluttua
     <n>m = Avain vanhenee n kuukauden kuluttua
     <n>y = Avain vanhenee n vuoden kuluttua
Avain on voimassa? (0) 
Avain ei vanhene koskaan
Onko tämä oikein? (y/N) y

Näiden tietojen jälkeen GPG kysyy nimen, kommentin ja sähköpostiosoitteen luotavaa avainta varten. Kommenttina voi olla vaikka privat, work tai home. Skandinaavisten ja muiden erikoismerkkien käyttö annetuissa arvoissa voi tuoda myöhemmin ongelmia. Real namen lisäksi avainpariin voi myöhemmin lisätä muita aliavaimia (identiteettejä, sähköpostiosoitteita), joten voit käyttää samaa avainta monella sähköpostitunnuksella.

Oikea nimi: Pentti Perussurffaaja
Sähköpostiosoite: pera@linux.fi
Huomautus: Ensimmäinen GPG-avaimeni
Käytät merkistöä "utf-8".
Valitsit seuraavan käyttäjätunnuksen:
    "Pentti Perussurffaaja (Ensimmäinen GPG-avaimeni) <pera@linux.fi>"

Muuta (N)imi, (H)uomautus, (S)ähköposti vai (O)k/(L)opeta? O

Nyt salaiselle avaimelle pyydetään salasana. Voit käyttää salasanan keksimiseen apuna ohjelmaa pwgen. Salasana suojaa hiukan salaista avainta jos se hukkuu tai joku saa kopion siitä käsiinsä.

Tarvitset salasanan suojaamaan salaista avaintasi.

Syötä salasana:  [tarPEKs1_randoomi15salasana]
Toista salasana: [tarPEKs1_randoomi15salasana]

Salasana "tarPEKs1_randoomi15salasana" ei tietenkään ole enää turvallinen, käytä jotain muuta.

Näiden tietojen antamisen jälkeen kone luo varsinainen avainparin. Se voi kestää hetken ja jopa pysähtyä hetkeksi, jos tietokoneella ei tehdä muuta, sillä GPG tarvitsee satunnaisdataa riittävän turvallisten avainten luomiseksi. Satunnaisdataa saadaan seuraamalla käyttäjän enemmän tai vähemmän satunnaisia toimintoja koneella. Avainparin luomisen pysähtyessä saat ilmoituksen

Tarvitaan paljon satunnaislukuja.  Voit suorittaa muita toimintoja
(kirjoittaa näppäimistöllä, liikuttaa hiirtä, käyttää levyjä)
alkulukujen luomisen aikana, tämä antaa satunnaislukugeneraattorille
paremmat mahdollisuudet kerätä riittävästi entropiaa.

Tässä tapauksessa liikuttele hiirtä tai selaa wikiä, jotta satunnaislukugeneraattori sekoittuu tarpeeksi.

Kun kaikki tämä on tehty, GPG tulostaa tiedot juuri luodusta avaimesta, allekirjoittaa julkisen avaimen salaisella avaimella (itsellään) sekä lisää sen korkeimmalle luottamustasolle (ultimate) avainrenkaaseen trustdb.gpg, joka luodaan, jos sitä ei vielä ole olemassa.

gpg: key 7AF6D4B4 marked as ultimately trusted
julkinen ja salainen avain on luotu ja allekirjoitettu.

gpg: tarkistetaan trustdb:tä
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   1024D/7AF6D4B4 2007-08-12
      Key fingerprint = 6C00 8FC4 274D 441E F220  03F4 14D6 E291 7AF6 D4B4
uid                  Pentti Perussurffaaja (Ensimmäinen GPG-avaimeni) <pera@linux.fi>
sub   2048g/49EF6931 2007-08-12

Tässä 7AF6D4B4 on avaimen tunnistenumero, jolla avaimeen tullaan myöhemmin viittaamaan. 1024 salauksen pituus (bittiä), D tarkoittaa että avain on DSA-algoritmilla luotu ja 6C00 8FC4 274D 441E F220 03F4 14D6 E291 7AF6 D4B4 on avaimen sormenjälki. Viimeisellä rivillä on avaimen luontipäivä.

Kaikki käytössä olevat avainparit näet komennolla

$ gpg --list-keys

Nyt avain on luotu ja allekirjoitettu itsellään (allekirjoituksista lisää myöhemmin). Tässä vaiheessa kannattaa luoda avaimen mitätöintitiedosto ja varmuuskopioida tämän jälkeen sekä äsken luotu salainen avain että mitätöintitiedosto varmaan paikkaan. Seuraavaksi käydään läpi miten tämä tapahtuu.


Avaimen mitätöintitiedosto

Avainta luotaessa kannattaa samalla luoda tiedosto, jolla on mahdollista mitätöidä avain. Jos esimerkiksi tulevaisuudessa unohdat avaimen salasanan tai avainparin salainen osa joutuu vääriin käsiin, on avain mahdollista mitätöidä avainpalvelimilta tällä tiedostolla.

Kumoamistiedoston luomiseen tarvitaan avaimen salainen osa ja sen salasana. Se tehdään komennolla

$ gpg --gen-revoke tunnistenumero

Esimerkiksi edellä luodulle avaimelle

$ gpg --gen-revoke 7AF6D4B4

Tämän jälkeen GPG kysyy syyn avaimen mitätöintiin ja kommentin mitätöinnille, sen jälkeen tulostaa mitätöintiosan muodossa

-----BEGIN PGP PUBLIC KEY BLOCK-----
ohjelman versio ja muita tietoja
pitkä mystinen merkkisarja
-----END PGP PUBLIC KEY BLOCK-----

Tallenna tämä osa esimerkiksi CD-levylle. Lisäksi se kannattaa varmuuden vuoksi tulostaa.

Mitätöintitiedostolla avain voidaan sitten poistaa esimerkiksi julkiselta avainpalvelimelta. Ohjeet tähän löytyy yleensä palvelimen kotisivulta.

Avainten tuominen ja vieminen

Jotta GPG:n salauksista ja allekirjoituksista saataisiin jotain hyötyä, on käyttäjien pystyttävä antamaan julkisia avaimiaan toisilleen.

Tietyn avaimen julkinen osa voidaan tallentaa tiedostoon komennolla

$ gpg --export -a tunnistenumero > avain.key

Valitsin -a ei ole pakollinen, mutta se tallentaa avaimen teksti- eikä binäärimuodossa, jolloin se on selkeämpi lukea ja riski sen korruptoitumiseen on pieni.

Tällä tavalla tallennettu tiedosto voidaan tuoda toisessa GPG:ssä käyttöön komennolla

$ gpg --import avain.key

Julkisen avaimen voi julkaista vaikka kotisivullaan tai kantaa USB-tikulla. Avain voidaan myös lähettää julkisille avainpalvelimille, mutta ennen avaimen lähetystä kannattaa harjoitella ensin jonkun aikaa sen käyttöä, sillä avaimen luonnissa tapahtunutta virhettä ei voi korjata sen jälkeen, kun avain on julkistettu avainpalvelimilla. Sen voi julkaisun jälkeen ainoastaan mitätöidä, jos salainen avain on vielä tallessa, tai jos mitätöintitiedosto on muistettu luoda etukäteen ja se on hyvä tallessa. Avaimen julkaiseminen avainpalvelimelle käsitellään myöhemmin tässä artikkelissa.

Vastaanottaja voi tarkistaa avaimen todenperäisyyden, mikäli hänellä on tiedossa avaimen sormenjälki, joka on mieluiten saatu jotain muuta, kuin sähköistä reittiä pitkin. Hyviä siirtovälineitä ovat paperimuoto tai tarpeen vaatiessa puhelin. Sormenjälki on avaimestasi tiivistealgoritmilla laskettu 40-merkkinen merkkijono joka varmistaa, että elektronisesti välitetty avain ei ole muuttunut siirron aikana ja että se todella vastaa väitettyä avainta. Sormenjäljen tarkistaminen on se tapa, jolla ihminen pystyy järkevällä resurssinkäytöllä varmistamaan elektronisen avaimen liitettäessä sitä omaan julkisten avainten renkaaseen ja antamaan tälle luottotason.

Oman avaimen sormenjäljen saa selville komennolla

$ gpg --fingerprint tunnistenumero

Myös salaisia avaimia voidaan tallentaa tiedostoon. Tällöin käytetään valitsinta --export-secret-key:

$ gpg --export-secret-key -a tunnistenumero > salainen_avain.key

Salainen avain on syytä tallentaa ulkoiselle medialle (esim. CD-levylle) ja viedä levy paikkaan, josta se ei varmasti joudu vääriin käsiin. Vaikka salaista avainta suojaa avainta luotaessa valittu salasana, tämä suojaus ei ole niin vahva, että se estäisi varmasti salaisen avaimen väärinkäytökset.

Salainen avain voidaan tuoda käyttöön samaan tapaan kuin julkinenkin avain komennolla gpg --import avain.key.

Viestien salaaminen ja purkaminen

Tämän jälkeen viestin salaaminen onnistuu valitsimen -e (tai --encrypt) avulla:

$ gpg --encrypt tiedosto

Jolloin GPG luo tiedoston tiedosto.gpg, jossa tiedoston sisältö on salattuna. Tämän jälkeen GPG kysyy, millä julkisella avaimella viesti salataan (listan näet komennolla gpg --list-keys). Jos esimerkiksi halutaan salata tiedosto käyttäen yllä luodun avaimen julkista osaa, annetaan avaimen tunnukseksi avaimen tunnistenumero 7AF6D4B4 ja painetaan entteriä. Avaimen tunnistenumero voidaan antaa myös valitsimella -r:

$ gpg -e -r 7AF6D4B4 tiedosto

Salattu viesti puretaan vastaavasti valitsimen --decrypt avulla:

$ gpg --decrypt tiedosto.gpg

Jolloin GPG kysyy avaimeen kuuluvaa salasanaa. Avaimen salaisen osan on myös oltava käytettävissä.

Allekirjoittaminen

Allekirjoitettaessa tiedostoa annetaan GPG:lle valitsin -s (tai --sign) ja allekirjoitettava tiedosto:

$ gpg --sign tiedosto

Jonka jälkeen GPG pyytää salasanan ja allekirjoittaa tiedoston oletusavaimella. Jos halutaan käyttää jotain muuta kuin oletuksena käytettävää avainta, se voidaan antaa valitsimella -u:

$ gpg -s -u 7AF6D4B4 tiedosto

Tällöin tuloksena on tiedosto tiedosto.gpg, jossa on allekirjoitettu viesti ja allekirjoitus pakattuna. Pakkaamattomana tiedosto allekirjoitetaan valitsimella --clearsign:

$ gpg --clearsign tiedosto

jonka jälkeen tiedoston tiedosto.asc sisältö on seuraavanlainen:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Moi

Terveiset linux.fi-wikille
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGvza7FNbikXr21LQRAlZpAKCLpxonnAAT5A8szsRXKkRyO4mNoQCfUbe+
GFHRIF6LK6UnPxYVcoTdSC0=
=hZ5I

Allekirjoituksen saa tallennettua erilliseen tiedostoon valitsimella -b. Tämä on kätevää etenkin allekirjoitettaessa binääritiedostoja:

$ gpg -b tiedosto

Jolloin tuloksena on tiedosto tiedosto.sig, jossa on allekirjoitus pakattuna.

Allekirjoitus tarkistettaan antamalla GPG:lle valitsin --verify:

$ gpg --verify tiedosto
gpg: Signature made Sun 12 Aug 2007 19:35:07 EEST using DSA key ID 7AF6D4B4
gpg: Good signature from "Pentti Perussurffaaja (Ensimmäinen GPG-avaimeni) <pera@linux.fi>"

Tällöin GPG siis kertoo, millä avaimella ja milloin allekirjoitus on tehty. Jos tiedostoa on muutettu allekirjoituksen jälkeen, toinen rivi muuttuu muotoon

gpg: BAD signature from "Pentti Perussurffaaja (Ensimmäinen GPG-avaimeni) <pera@linux.fi>"

Jos allekirjoitus on erillisessä tiedostossa, annetaan se parametrina GPG:lle.

$ gpg --verify tiedosto.sig

Avainpalvelimet

Avainpalvelimet ovat palvelimia, jonne käyttäjät voivat lähettää julkiset avaimensa ja josta muiden käyttäjien julkisia avaimia on mahdollista hakea.

Oma avain lähetetään avainpalvelimelle komennolla

$ gpg --keyserver palvelin --send-key tunniste

Esimerkiksi edellä luomamme avain lähetettäisiin palvelimelle wwwkeys.eu.pgp.net komennolla

$ gpg --keyserver pool.sks-keyservers.net --send-key 7AF6D4B4

Vastaavasti tietty avain haettaisiin sieltä komennolla

$ gpg --keyserver pool.sks-keyservers.net --recv-key tunniste

Joitain avainpalvelimia:

  • pool.sks-keyservers.net
  • wwwkeys.us.pgp.net
  • pgp.mit.edu
  • pgp.surfnet.nl

Suurin osa avainpalvelimista on yhteydessä toisiinsa ja päivittää avaimet keskenään tietyin väliajoin. Siispä yleensä riittää, että lähettää avaimen vain yhdelle palvelimelle.

Avaimen mitätöiminen

Jos avain murretaan, salainen avain hukkuu tai avaimen käyttö muuten lopetetaan voidaan avainpalvelimelle lähettää tieto avaimen käytöstä poistamisesta vain mitätöintitiedoston avulla. Tästä syystä mitätöintitiedosto on tärkeää luoda avainparia luotaessa.

Mitätöintitiedosto lähetetään palvelimelle siten, että ensin se otetaan käyttöön GPG:lle ja tämän jälkeen avain lähetetään normaaliin tapaan avainpalvelimelle. Jos mitätöintitiedoston nimi olisi avain.revoke, se lähetettäisiin avainpalvelimelle seuraavasti:

$ gpg --import avain.revoke
gpg: key TUNNISTE: "Nimi <osoite>" revocation certificate imported
gpg: Kaikkiaan käsitelty: 1
gpg:    uusia avainten mitätöintejä: 1
--
$ gpg --keyserver avainpalvelin --send-key TUNNISTE
gpg: sending key TUNNISTE to hkp server avainpalvelin

Luottamusverkot ja avainten allekirjoittaminen

PGP-avaimella on siis mahdollista allekirjoittaa tiedostoja ja viestejä. Mutta miten vastaanottaja voi luottaa siihen, että allekirjoittaja on oikeasti se, kuka väittää olevansa? Tätä varten PGP-avaimia on mahdollista allekirjoittaa.

Allekirjoittaminen tarkoittaa sitä, että PGP:tä käyttävät henkilöt tapaavat toisensa ja tarkistavat toistensa henkilöllisyyden virallisella kuvallisella henkilöllisyystodistuksella (ajokortti, passi tms.) ja avaintensa sormenjäljet. Avaimen sormenjälki on tietyn avaimen tunnistemerkkijono. GPG:llä avainten sormenjäljet näkee komennolla:

$ gpg --fingerprint

--fingerprint-valitsimen perään voi laittaa myös hakusanan, esimerkiksi

$ gpg --fingerprint henkilön nimi

Sormenjäljen käytön ideana on varmistaa, että allekirjoitettava avain on nimenomaan kyseisen henkilön oikea julkinen avain.

Nyt kun sinulla on toisen käyttäjän avaimen sormenjälki ja olet tarkistanut tämän henkilöllisyyden (henkilöllisyyden tulee toki vastata avaimen tiedoissa olevaa nimeä), voit allekirjoittaa henkilön avaimen seuraavasti:

  • Tuo henkilön julkinen avain käyttäen joko avainpalvelimia tai lataamalla julkisen avaimen sisältävä tiedosto esim. kyseisen henkilön kotisivuilta
  • Avaa avain muokattavaksi komennolla
$ gpg --edit-key tunniste
  • Aukeavassa listassa on avaimen tiedot ja tämän jälkeen yksi tai useampi rivi tyyliin
[ unknown] (1). Käyttäjän Nimi (kommentti) <sähköposti>
  • Kirjoita n, jossa n on suluissa oleva numero. Valitse näin uid:t (sähköpostiosoitteet), jotka haluat allekirjoittaa. Enterin painaminen valitsee kaikki uid:t.
  • GPG näyttää avaimen sormenjäljen ja salauksen vahvuuden. Tarkista, että tiedot ovat samat, jotka sait henkilöltä tapaamisen yhteydessä.
  • Allekirjoita avain komennolla sign.
  • Jos tarkistuksen huolellisuutta kysytään, valitse "arkinen" (casual) (2).
    • Tämä numero on julkista tietoa ja kertoo, kuinka tarkkaan avainten vaihto on suoritettu. Taso 2 vastaa sitä, että henkilöllisyys on tarkistettu. Taso 3 tarkoittaa, että sähköpostin oikeellisuus on todettu.
  • Poistu muokkaustilasta komennolla quit.

Avaimen allekirjoitukset näkee komennolla

$ gpg --list-sigs tunniste

Lopuksi allekirjoitettu avain voidaan lähettää takaisin sen omistajalle tallentamalla se normaalisti tiedostoon (gpg --export -a tunniste > tiedostonimi). Jos joku allekirjoittaa avaimesi, kannattaa se sen jälkeen lähettää avainpalvelimelle tavalliseen tapaan (gpg --keyserver palvelin --send-keys tunniste).

Lisätietoa tarkistustasosta 3

Mikäli haluat valita tarkistustasoksi korkeimman eli arvon 3, sinun tulisi lähettää allekirjoitettu (ali)avain kryptattuna vastaanottajan kyseiseen aliosoitteeseen. Tämä vastaa sitä, että tarkistat sähköpostiosoitteen toimivuuden. Jos vastaanottaja saa viestin auki, hän voi ottaa käyttöön tämän aliosoitteen allekirjoituksen. Tällöin allekirjoituksesi ilmestyy avaimen aliosoitteen kohdalle vasta, kun avaimen omistaja on päivittänyt avaimensa ja julkaissut sen. Ongelmaksi jää nyt se, että sinulle voi jäädä omaan avainrenkaaseen allekirjoitus, vaikka sinulla ei ole varmuutta, onko sähköposti voimassaoleva. Tähän auttaa se, että poistat ensin käyttäjän avaimen ja noudat sen vain avainpalvelimilta tai käyttäjän kertoman julkaisukanavan kautta.

Katso myös

Aiheesta muualla

v  k  m
Salausohjelmia
bcrypt | CipherShed | ccrypt | Enigmail | EncFS | GNU Privacy Guard | LibreSSL | MCrypt | OpenSSL | Seahorse | Tomb | VeraCrypt