July 17, 2019
  • 8:40 pm Outlook-mobiilisovellus – Viestit eivät synkronoidu, ja tilin lisääminen johtaa virheeseen
  • 3:06 am Tutkimus suomalaisten IT-alan yritysten käyttämistä roskapostin torjuntakeinoista
  • 8:52 pm GnuPG – Sähköpostien salaaminen suoraan Outlookissa GgpOL-lisäosan kautta
  • 4:15 pm GnuPG – Tiedostojen salaaminen ja allekirjoittaminen PGP-protokollalla | Windows 10
  • 10:15 pm GnuPG – Asennus, PGP-avainparien luonti ja hallinta | Windows 10

Johdanto

PGP on salausprotokolla, jota käytetään erityisesti sähköpostin salaamisessa. GnuPG on vapaan ohjelmiston implementaatio OpenPGP stadardista (RFC4880). GnuPG lyhennetään usein lyhenteellä GPG ja sen suosiosta johtuen sitä käytetäänkin satunnaisesti synonyymina PGP:lle. Gpg4win on GnuPG:n Windows versio, jonka asennan tässä harjoituksessa. GnuPG on julkaistu GNU General Public -lisenssillä.

Kuvaan tässä raportissa GnuPG:n asennuksen ja avainten hallinnan sekä graafisessa käyttöliittymässä että komentorivissä.


Asennus

Latasin asennusohjelman GnuPG:n sivuilta: https://www.gnupg.org/download/index.html.

Lataamani versio oli 2.2.15 (päiväys 2019-03-26). Suoritettavat latausohjelmat löytyvät kyseiseltä sivulta GnuPG Binary Releases -otsikon alta. Valitsin full featured Windows version, eli Gpg4win.

Gnu pyysi rahaa projektin tukemiseen, mutta koska olen köyhä, laitoin lahjoitukseksi 0$ ja painoin “Download“.

Suoritin asennusohjelman gpg4win-3.1.7.exe, annoin oikeudet muutoksin UAC-ikkunassa ja valitsin asennuskielen. Painelin asennusohjelmassa seuraavaa, kunnes pääsin kohtaan, jossa valitaan ohjelman komponentit.

Menin oletusvalinnoilla, eli GnuPG itse, Kleopatra (salausavainten hallintaan), GpgOL (Gpg for Outlook) ja GpgEX (shell extention).

Seuraavassa vaiheessa valitsin asennuspolun, ja sitten painoin seuraavaa, kunnes ohjelma oli asennettu.


Uuden avainparin luominen ja avainten hallinta

Graafinen käyttöliittymä

Uuden henkilökohtaisen avainparin luominen Kleopatrassa:

Avasin Kleopatran, joka tuli GnuPG asennuksen mukana. Navigoin: Tiedosto > Uusi avainpari…

Kysyttiin, minkä tyyppisen avainparin haluan luoda. Valitsin “Luo oma OpenPGP-avainpari“.

Pyydettiin tietoja, joihin syötin oman nimeni ja sähköpostiosoitteeni. Tietojen tulee olla aitoja, sillä ne toimivat tunnisteina myös muille ihmisille, jos jaat julkisen avaimesi.

Sitten painoin “Lisäasetukset…” ja valitsin salaustyypiksi RSA + RSA (4096 bittiä). Varmenteen käytöksi asetin “Allekirjoitus” ja “Salaus“. Lisäksi otin täpän pois ruudusta “Vanhenemisaika“, sillä en halua uusia avaimia aika-ajoittain.

Painoin “OK” ja sitten “Seuraava”. Seuraavassa ikkunassa pystyin vielä tarkistamaan, että antamani tiedot olivat oikein. Lopuksi painoin “Luo“.

Sitten pyydettiin asettamaan salasana. Asetin avaimelle vahvan salasanan. Tällöin ei riitä, että joku luvaton henkilö saa yksityisen avaimeni haltuunsa, vaan hän tarvitsisi myös salasanani. Syötettyäni salasanan ja painoin “OK“.

Avainparin generoimisessa meni hetki…

Lopuksi avainpari oli luotu onnistuneesti. Kleopatra näytti avaimen sormenjäljen, joka on käytännössä lyhennetty muoto julkisesta avaimesta.

Tässä vaiheessa otin avaimestani varmuuskopion ja painoin “Tee avainparistasi varmuuskopio“. Tallensin avaimen haluamaani hakemistoon nimellä “markus-private.asc“.

GnuPG pyysi salasanaani, jonka syötin.

Sitten sain ilmoituksen “Salaiset avaimet viety onnistuneesti”. Painoin “Valmis” ja pääsin Kleopatran oletusvalikkoon. Käytännössä tämä on tietokanta kaikista yhteystiedoistasi ja heidän salausavaimistaan.

Listassa näkyy tällä hetkellä vain yksi tietue. Se on tuo juuri luomani avainpari. Klikkaamalla sitä hiiren oikealla painikkeella, pystyn tekemään siihen muutoksia halutessani. Pystyn myös viemään julkisen tai yksityisen avaimeni erilliseen tiedostoon.

Otin jo aiemmin varmuuskopion yksityisestä avaimestani. Sitä ei luonnollisesti saa jakaa muille osapuolille. Nyt vienkin julkisen avaimeni tiedostoon, jota voin sitten levittää sitä tarvitseville osapuolille.

Painoin “Vie…” ja tallensin sen haluamaani sijaintiin nimellä “markus-public.asc“.

Itse laitoin julkisen avaimen nettisivuilleni. Lopuksi loin julkiselle avaimelleni kumoamissertifikaatin (revocation certificate). Jos esimerkiksi unohdan yksityisen avaimeni salasanan tai se leviää luvattomaan käyttöön, voin julkaista tämän sertifikaatin todisteena siitä, että julkinen avaimeni on poistunut käytöstä.

Klikkasin hiiren oikealla painikkeella avainpariani Kleopatrassa ja valitsin “Yksityiskohdat“. Sitten painoin “Luo perusmisvarmenne“.

Nimesin varmenteen ja tallensin sen valitsemaani hakemistoon.

Sitten syötin avaimeni salasanan ja painoin “OK“.

Sain ilmoituksen varmenteen luonnin onnistumisesta.

 

Uuden julkisen avaimen tuominen Kleopatraan:

Seuraavaksi testasin tuoda jonkun toisen henkilön julkisen PGP-avaimen Kleopatraan. Painoin “Tuo…“.

Valitsin avaintiedoston sijainnista, johon olin sen tallentanut. Avain on esimerkiksi voitu saada tekstitiedostona, joka on sitten tallennettu .asc-päätteiseksi.

Seuraavaksi Kleopatra vaati minua varmentamaan, että tuomani avaimen sormenjälki vastaa oikeasti kyseisen henkilön avaimen sormenjälkeä. Kysyttiin, haluanko aloittaa käsittelyn, johon vastasin “Kyllä“. Käytännössä tässä vaiheessa pitäisi varmistaa kyseiseltä henkilöltä, että sormenjälki vastaa. Se kannattaa tehdä eri kommunikointitapaa käyttäen, kun mistä avaimen alunperin sait (esimerkiksi soittamalla henkilölle).

Sitten valitsin käyttäjätunnisteen, jota olin varmentamassa ja laitoin täpän ruutuun “Olen todentanut sormenjäljen” ja painoin “Seuraava“.

Seuraavassa vaiheessa piti päättää, miten avain varmennetaan. Vaihtoehdot olivat “Varmenna vain itselleni” ja “Varmenna kaikkien nähtäväksi”.

Valitsin “Varmenna vain itselleni” ja painoin “Varmenna“.

Minulta pyydettiin oman yksityisen avaimeni salasanaa, sillä käytän yksityistä avaintani Essin julkisen avaimen allekirjoittamiseen (varmennan sen). Syötin salasanan, painoin “OK” ja sitten “Valmis“.

Sain tiedon, että varmentaminen onnistui. Painoin “Valmis“.

Essi Esimerkin julkinen avain oli nyt avaintietokannassani:

Seuraavaksi muutin Essin julkisen avaimen omistajan luottamustason. Klikkasin Essin avainta hiiren oikealla klikillä ja valitsin “Muuta omistajan luottamusta…“.

Asetin luottamustasoksi “Pidän tarkistuksia hyvin tarkkoina” eli täysi luottamus ja painoin “OK“. Olen luottavainen, koska varmistin sormenjäljen henkilöltä itseltään.

Sain ilmoituksen “Varmenteen luottamuksen muuttaminen onnistui” ja homma oli selvä.


Komentorivi:

Uuden henkilökohtaisen avainparin luominen:

Käytin GPG:tä PowerShellissä. Loin uuden avaimen komennolla:

gpg --full-gen-key

GPG kysyi, millaisen avaimen haluan. Syötin 1, eli oletusvaihtoehto RSA and RSA.

Valitse millaisen avaimen haluat:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (vain allekirjoitus)
(4) RSA (vain allekirjoitus)
Valintasi? 1

Seuraavaksi kysyttiin avaimen kokoa bitteinä. Valinta 1024-4096 väliltä. Oletuspituus on 2048, mutta valitsin suurimman ja syötin 4096.

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Halutun avaimen koko on 4096 bittiä

Sitten piti määritellä, milloin avain vanhenee. Syötin 0, eli ei koskaan. Sen jälkeen vahvistin painamalla y eli yes.

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) 0
Key does not expire at all
Is this correct? (y/N) y

Sitten GPG tarvitsi nimen, johon kyseinen avain sidotaan. Kirjoitin “Markus Pyhäranta“. Lisäksi pyydettiin sähköpostiosoite, jonka annoin. Lopuksi pystyi antamaan vielä kuvauksen kyseiselle henkilölle. Itse jätin sen tyhjäksi.

GnuPG needs to construct a user ID to identify your key.

Oikea nimi: Markus Pyhäranta
Sähköpostiosoite: markus.pyharanta@mapy.fi
Huomautus:

Sain vastauksen, jossa pyydettiin vahvistamaan tiedot. Syötin O eli Ok.

You are using the 'CP850' character set.
Valitsit seuraavan käyttäjätunnuksen:
    "Markus Pyhäranta <markus.pyharanta@mapy.fi>"

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

Sitten tulostui tällainen ilmoitus ja samaan aikaan aukesi ikkuna, jossa pyydettiin asettamaan avaimelle salasana:

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.

Suojasin avaimen vahvalla salasanalla, jonka otin talteen. Tätä salasanaa tarvitaan aina, kun avainta käytetään (salaaminen, salauksen purkaminen).

Painettuani OK, tein vielä toisessa ikkunassa satunnaisia näppäinpainalluksia ja liikkeitä hiirellä, jotta avaimesta luotiin mahdollisimman satunnainen.

Kun avain oli luotu, sain tulokseksi seuraavan:

gpg: key D71C9A2795E0F635 marked as ultimately trusted
gpg: revocation certificate stored as 'C:/Users/Markus/AppData/Roaming/gnupg/openpgp-revocs.d\4F884BA8E2E774D9A961A51ED71C9A2795E0F635.rev'
julkinen ja salainen avain on luotu ja allekirjoitettu.

pub rsa4096 2019-04-09 [SC]
4F884BA8E2E774D9A961A51ED71C9A2795E0F635
uid Markus Pyhäranta <markus.pyharanta@mapy.fi>
sub rsa4096 2019-04-09 [E]

Ilmeisesti GnuPG loi samalla automaattisesti julkiselle avaimelleni kumoamissertifikaatin (revocation certificate). Sillä todistetaan, että julkinen avain on poistunut käytöstä, jos salasana unohtuu tai yksityinen avain on levinnyt luvattomiin käsiin. Kumoamissertifikaatti löytyy hakemistosta:

C:/Users/Markus/AppData/Roaming/gnupg/openpgp-revocs.d\

Koko avainten generointiprosessi:

Tallennetut avaimet voi tarkistaa komennolla:

gpg -k

tai

gpg --list-secret-keys

Komento listaa avainten salauksen, bittikoon, luomispäivämäärän sekä sormenjäljen että omistajan. “sub”-tietue on aliavain (subkey), joka luodaan automaattisesti avainparin luomisen yhteydessä. Sitä käytetään ymmärtääkseni nimenomaan salauksen yhteydessä, kun taas pääavainta “pub” käytetään allekirjoittamiseen.

Alla olevassa tulosteessa on kaksi avainta, koska testasin avainten luomista ensin Kleopatran graafisessa käyttöliittymässä.

Seuraavaksi otin omasta yksityisestä avaimestani varmuuskopiot komennolla:

gpg --export-secret-keys --armor F1270A503E7DAC11AE50C2D4E157B433DB53F050 > 'C:\Users\Markus\Desktop\markus-private.asc'

Komennossa määritelty merkkijono on avainparini sormenjälki, jota GnuPG tunnistaa haluamani avaimen.

Aukesi ikkuna, johon syötin asettamani salasanan. Syötin salasanan ja painoin “OK“.

Salasanan jälkeen, yksityinen avain ilmestyi määrittelemääni hakemistoon markus-private.asc -tiedostoon.

Sitten otin myös julkisen avaimeni talteen, jotta voin jakaa sen tarvittaessa eteenpäin.

Julkisen avaimen vienti komennolla:

gpg --export --armor F1270A503E7DAC11AE50C2D4E157B433DB53F050 > 'C:\Users\Markus\Desktop\markus-publ
ic.asc'

Julkinen avain ilmestyi määrittelemääni hakemistoon.

 

Uuden julkisen avaimen tuominen GnuPG:hen:

Sitten testasin tuoda jonkun toisen henkilön julkisen PGP-avaimen GPG:hen komentorivin kautta.

Valitsin avaintiedoston sijainnista, johon olin sen tallentanut. Avain oli alunperin liitetty muistioon ja  tallennettu .asc-päätteiseksi.

Julkisen avaimen tuominen komennolla:

gpg --import 'C:\Users\Markus\Desktop\hessu-public-asc'

Sain vastaukseksi:

gpg: key 426A50B671023C71: public key "Hessu Hopo <hessu.hopo@gmail.com>" imported
gpg: Kaikkiaan käsitelty: 1
gpg: tuotu: 1

Listasin vielä kaikki avaimet ja varmistin, että Hessun avain löytyy sieltä:

gpg -k

Kyllä löytyi. Huomaa, että Hessun luottamus on merkattu “[unknown]“:

Seuraavaksi muutinkin avaimen omistajan luottamustason. Tässä tapauksessa oletetaan, että olen vahvistanut Hessulta avaimen aitouden vertailemalla niiden sormenjälkiä.

Muokkasin Hessun julkista avainta komennolla:

gpg --edit-key A0EE8B0371A3302EF28099AD426A50B671023C71

Merkkijono on vastaa avaimen sormenjälkeä. Pääsin gpg:n shell-ympäristöön, jossa ajoin komennon:

trust

Annoin Hessulle tason 4, eli “I trust fully“. Taso on sama, kuin Essi Esimerkillä, jonka loin aiemmin graafisen käyttöliittymän kautta. Taso 5 on taas ultimate, joka on oletusluottamustaso itse tehdyille avaimille.

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

1 = I don't know or won't say
2 = I do NOT trust
3 = I trust marginally
4 = I trust fully
5 = I trust ultimately
m = back to the main menu

Valintasi? 4

Sain vastaukseksi:

pub  rsa4096/426A50B671023C71
     created: 2019-04-11  expires: ei koskaan  usage: SC
     trust: full          validity: tuntematon
sub  rsa4096/D99554A50C1E7996
     created: 2019-04-11  expires: ei koskaan  usage: E
[ unknown] (1). Hessu Hopo <hessu.hopo@gmail.com>

Lopuksi allekirjoitin Hessun avaimen omalla yksityisellä avaimellani:

sign

Kysyttiin, haluanko varmasti allekirjoittaa avaimen. Vastasin “y” eli yes.

Are you sure that you want to sign this key with your
key "Markus Pyhäranta <markus.pyharanta@mapy.fi>" (E157B433DB53F050)

Really sign? (y/N) y

GnuPG pyysi taas avaimeni salasanaa:

Syötettyäni salasanani, tallensin vielä muutokset komennolla:

save

Lopuksi listasin avaimet nähdäkseni, muuttuiki Hessun luottamustaso. Kyllä muuttui:

pub rsa4096 2019-04-11 [SC]
A0EE8B0371A3302EF28099AD426A50B671023C71
uid [ full ] Hessu Hopo <hessu.hopo@gmail.com>
sub rsa4096 2019-04-11 [E]

Yhteenveto

Tässä on nyt käyty läpi sekä graafisen käyttöliittymän että komentorivin kanssa, kuinka luoda uusia PGP-avainpareja ja hallita niitä GnuPG:ssä.

Seuraavaksi salaan tiedostoja ja puran niiden salauksia käyttämällä tässä harjoituksessa luotuja avaimia:

GnuPG – Tiedostojen salaaminen ja allekirjoittaminen PGP-protokollalla | Windows 10


TÄTÄ DOKUMENTTIA SAA KOPIOIDA JA MUOKATA GNU GENERAL PUBLIC LICENSE (VERSIO 3 TAI UUDEMPI) MUKAISESTI. HTTP://WWW.GNU.ORG/LICENSES/GPL.HTML
MARKUS PYHÄRANTA
Markus Pyhäranta

RELATED ARTICLES
LEAVE A COMMENT