GPG: Difference between revisions
(62 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
GnuPG abil saame krüpteerida sõnumeid, kasutades selleks asümmeetrilist ehk avalikku võtit, mis kasutaja poolt genereeritakse. Dešifreerimine toimub salajase võtme abil. Koos moodustavad avalik ning salajane võti võtmepaari. Avalikku võtit saab vahetada teiste kasutajatega näiteks läbi võtmeserverite või failina saates. GPG toetab ka mitmesuguseid sümmeetrilisi krüptoalgoritme, vaikimis kasutatakse CAST5 salajase võtmega krüptoalgoritmi. Tegu on vabavaralise programmiga ja GPGs on kasutusel ainult patenteerimata krüptoalgoritmid. | GnuPG abil saame krüpteerida sõnumeid, kasutades selleks asümmeetrilist ehk avalikku võtit, mis kasutaja poolt genereeritakse. Dešifreerimine toimub salajase võtme abil. Koos moodustavad avalik ning salajane võti võtmepaari. Avalikku võtit saab vahetada teiste kasutajatega näiteks läbi võtmeserverite või failina saates. GPG toetab ka mitmesuguseid sümmeetrilisi krüptoalgoritme, vaikimis kasutatakse CAST5 salajase võtmega krüptoalgoritmi. Tegu on vabavaralise programmiga ja GPGs on kasutusel ainult patenteerimata krüptoalgoritmid. | ||
Siin artiklis kasutatud GnuPG on paigaldatav ja kasutatav erinevates operatsioonisüsteemides. Seega sobivad alltoodud käsud mistahes operatsioonisüsteemile kus GnuPG paigaldatud on. Käesolev artikkel on kirjutatud GNU/Linuxi näitel. | |||
==Sõrmejälg== | |||
Võtmepaari iseloomustab sõrmejälg, mis on nii avalikul kui salajasel võtmel sama.<br> | Võtmepaari iseloomustab sõrmejälg, mis on nii avalikul kui salajasel võtmel sama.<br> | ||
[https://en.wikipedia.org/wiki/Public_key_fingerprint Sõrmejälg] on lühike bitijada kirjeldamaks pikemat võtit. See luuakse [https://en.wikipedia.org/wiki/Cryptographic_hash_function krüptograafilist räsifunktsiooni] kasutades.<br> | [https://en.wikipedia.org/wiki/Public_key_fingerprint Sõrmejälg] on lühike bitijada kirjeldamaks pikemat võtit. See luuakse [https://en.wikipedia.org/wiki/Cryptographic_hash_function krüptograafilist räsifunktsiooni] kasutades.<br> | ||
Line 25: | Line 28: | ||
sub cv25519/6765DBFA115A5CCD 2020-02-12 [E] | sub cv25519/6765DBFA115A5CCD 2020-02-12 [E] | ||
</source> | </source> | ||
8 viimast sümbolit sõrmejäljest nimetatakse ka: võtme ID | |||
== GPG paigaldamine == | == GPG paigaldamine == | ||
Line 33: | Line 38: | ||
sudo apt update && sudo apt install gnupg2 xloadimage && sudo apt clean | sudo apt update && sudo apt install gnupg2 xloadimage && sudo apt clean | ||
</source> | </source> | ||
MS Windowsile on olemas [https://www.gpg4win.org/ Gpg4win]. Ettevaatust Kleopatra rakendusega MS Windowsis! Sellega loodud GPG-võtmeid ei pruugi olla turvaline usaldada! | |||
Teised valikud [https://gnupg.org/download/index.html#sec-1-2 GnuPG kodulehel] | |||
== GPG kasutamine == | == GPG kasutamine == | ||
GnuPG versiooni ja | GnuPG versiooni ja krüptoalgoritmide toe vaatamine: | ||
<source>gpg --version | <source>gpg --version | ||
Line 53: | Line 62: | ||
Pakkimine: Pakkimata, ZIP, ZLIB, BZIP2 | Pakkimine: Pakkimata, ZIP, ZLIB, BZIP2 | ||
</source> | </source> | ||
===Võtmete vaatamine=== | |||
<pre> | |||
gpg --list-keys | |||
gpg --list-public-keys | |||
gpg --list-secret-keys | |||
gpg --fingerprint | |||
gpg --check-signatures | |||
gpg --list-keys --keyid-format LONG --fingerprint | |||
gpg --list-keys --with-subkey-fingerprint <võtme ID> | |||
gpg --with-colons --list-keys | |||
gpg --with-colons --list-keys <ID> | |||
gpg --list-keys @user | |||
</pre> | |||
===Võtmepaari loomine=== | ===Võtmepaari loomine=== | ||
Line 59: | Line 82: | ||
Selle peale küsitakse, millist võtit luua soovitakse.<br> | Selle peale küsitakse, millist võtit luua soovitakse.<br> | ||
Väga soovitav on luua elliptilise krüpto toega (ECC ''Elliptic Curve Cryptography'') võtmepaar: | Väga soovitav on luua elliptilise krüpto toega (ECC ''Elliptic Curve Cryptography'') võtmepaar (vt [https://www.ria.ee/et/ametist/uuringud-analuusid-ulevaated.html krüptograafiliste algoritmide elutsükli uuringud]): | ||
<pre> | <pre> | ||
Palun valige, millist võtmetüüpi te soovite: | Palun valige, millist võtmetüüpi te soovite: | ||
Line 179: | Line 202: | ||
</source> | </source> | ||
Hilisem tühistussertifikaadi kasutamine | Tühistussertifikaatide loomise automatiseerimine skripti abil: | ||
<source lang="bash"> | |||
#!/bin/sh | |||
# 0 = Põhjus puudub | |||
printf "Y\n0\n\nY\nY\n"|gpg --no-tty --command-fd 0 --status-fd 2 --output tyhistamise-sertifikaat_pohjus-puudub.asc --armor --gen-revoke CC948816 >&- 2>&- | |||
# | |||
# 1 = Võti on kompromiteeritud | |||
printf "Y\n1\n\nY\nY\n"|gpg --no-tty --command-fd 0 --output tyhistamise-sertifikaat_pohjus-kompromiteeritud.asc --armor --gen-revoke CC948816 | |||
# | |||
# 2 = Võti on asendatud | |||
printf "Y\n2\n\nY\nY\n"|gpg --no-tty --command-fd 0 --output tyhistamise-sertifikaat_pohjus-asendatud.asc --armor --gen-revoke CC948816 | |||
# | |||
# 3 = Võti ei ole enam kasutusel | |||
printf "Y\n3\n\nY\nY\n"|gpg --no-tty --command-fd 0 --output tyhistamise-sertifikaat_pohjus-ei-ole-enam-kasutusel.asc --armor --gen-revoke CC948816 | |||
</source> | |||
Vajadusel impordime eelnevalt ka vana võtmepaari tühistamiseks | |||
<pre> | |||
gpg --import avalik-salajane-koos.asc | |||
</pre> | |||
Hilisem tühistussertifikaadi kasutamine: importimisega tühistame olemasoleva võtmepaari | |||
<pre> | <pre> | ||
gpg --import tyhistamise-sertifikaat.asc | gpg --import tyhistamise-sertifikaat.asc | ||
</pre> | |||
Serverites tühistamine peale vana võtme ja selle tühistusserdi importi: | |||
<pre> | |||
gpg --keyserver keys.openpgp.org --search-keys CC948816 | |||
gpg --keyserver keys.openpgp.org --send-keys CC948816 | |||
</pre> | |||
Näiteskript: | |||
<source lang="bash"> | |||
#!/bin/sh | |||
gpg --keyserver keys.gnupg.net --search-keys CC948816 | |||
gpg --keyserver keys.gnupg.net --send-keys CC948816 #tühistamine õnnestus kuid ei kinnitatud (sisuliselt ebaõnnestus) | |||
gpg --keyserver keys.openpgp.org --search-keys CC948816 | |||
gpg --keyserver keys.openpgp.org --send-keys CC948816 #tühistamine õnnestus | |||
gpg --keyserver hkps.pool.sks-keyservers.net --search-keys CC948816 | |||
gpg --keyserver hkps.pool.sks-keyservers.net --send-keys CC948816 #tühistamine õnnestus | |||
gpg --keyserver pool.sks-keyservers.net --search-keys CC948816 | |||
gpg --keyserver pool.sks-keyservers.net --send-keys CC948816 #tühistamine õnnestus | |||
gpg --keyserver pgp.key-server.io --search-keys CC948816 | |||
gpg --keyserver pgp.key-server.io --send-keys CC948816 #tühistamine õnnestus | |||
gpg --keyserver pgp.mit.edu --search-keys CC948816 | |||
gpg --keyserver pgp.mit.edu --send-keys CC948816 #tühistamine ebaõnnestus | |||
gpg --keyserver hkps://peegeepee.com --search-keys CC948816 | |||
gpg --keyserver hkps://peegeepee.com --send-keys CC948816 #tühistamine õnnestus | |||
gpg --keyserver keyserver.ubuntu.com --search-keys CC948816 | |||
gpg --keyserver keyserver.ubuntu.com --send-keys CC948816 #tühistamine ebaõnnestus | |||
gpg --keyserver zimmermann.mayfirst.org --search-keys CC948816 | |||
gpg --keyserver zimmermann.mayfirst.org --send-keys CC948816 #tühistamine õnnestus | |||
gpg --keyserver pgp.rediris.es --search-keys CC948816 | |||
gpg --keyserver pgp.rediris.es --send-keys CC948816 #tühistamine õnnestus | |||
gpg --keyserver hkps://keyserver.pgp.com --search-keys CC948816 | |||
gpg --keyserver hkps://keyserver.pgp.com --send-keys CC948816 #tühistamine ebaõnnestus | |||
gpg --keyserver pgp.zdv.uni-mainz.de --search-keys CC948816 | |||
gpg --keyserver pgp.zdv.uni-mainz.de --send-keys CC948816 #tühistamine ebaõnnestus | |||
</source> | |||
Kui võtmepaari enam vaja ei ole (tühistatud võti on võtmeserveritesse saadetud) siis võib kustutada | |||
<pre> | |||
gpg --delete-secret-and-public-key CC948816 | gpg --delete-secret-and-public-key CC948816 | ||
</pre> | </pre> | ||
===Võtme täiendamine=== | |||
<source lang="bash">gpg | vaatame esmalt, mis võtmed meil on: | ||
<source lang="bash"> | |||
gpg --list-keys | |||
</source> | |||
võtme ID on sõrmejälje 8 viimast sümbolit | |||
'''Võtme muutmiseks tuleb konkreetse võtme muutmine avada GPG interaktiivses haldusliideses''' | |||
<source lang="bash"> | |||
gpg --expert --edit-key CC948816 | |||
help #kõik GPG haldusliidese käsud | |||
quit välju sellest menüüst | |||
save salvesta ja välju | |||
help näita seda abiinfot | |||
fpr show key fingerprint | |||
grip show the keygrip | |||
list näita võtit ja kasutaja IDd | |||
uid vali kasutaja ID N | |||
key select subkey N | |||
check check signatures | |||
sign sign selected user IDs [* see below for related commands] | |||
lsign sign selected user IDs locally | |||
tsign sign selected user IDs with a trust signature | |||
nrsign sign selected user IDs with a non-revocable signature | |||
adduid lisa kasutaja ID | |||
addphoto lisa foto ID | |||
deluid delete selected user IDs | |||
addkey add a subkey | |||
addcardkey add a key to a smartcard | |||
keytocard move a key to a smartcard | |||
bkuptocard move a backup key to a smartcard | |||
delkey delete selected subkeys | |||
addrevoker lisa tühistamise võti | |||
delsig delete signatures from the selected user IDs | |||
expire change the expiration date for the key or selected subkeys | |||
primary flag the selected user ID as primary | |||
pref näita eelistusi (ekspert) | |||
showpref näita eelistusi (detailsena) | |||
setpref set preference list for the selected user IDs | |||
keyserver set the preferred keyserver URL for the selected user IDs | |||
notation set a notation for the selected user IDs | |||
passwd muuda parooli | |||
trust muuda omaniku usaldust | |||
revsig revoke signatures on the selected user IDs | |||
revuid revoke selected user IDs | |||
revkey revoke key or selected subkeys | |||
enable enable key | |||
disable disable key | |||
showphoto show selected photo IDs | |||
clean compact unusable user IDs and remove unusable signatures from key | |||
minimize compact unusable user IDs and remove all signatures from key | |||
* The 'sign' command may be prefixed with an 'l' for local signatures (lsign), | |||
a 't' for trust signatures (tsign), an 'nr' for non-revocable signatures | |||
(nrsign), or any combination thereof (ltsign, tnrsign, etc.). | |||
</source> | |||
====Pildi haldamine==== | |||
Alljärgnevad käsud on juba GPG haldusliideses | |||
<source lang="bash"> | |||
addphoto | |||
Valige foto ID'na kasutatav pilt. Pilt peab olema JPEG fail. | |||
Pidage meeles, et pilt salvestatakse teie avalikus võtmes. Kui kasutate | |||
väga suurt pilti, on ka kõti väha suur! | |||
Mõistlik pildi suurus võiks olla umbes 240x288. | |||
Sisestage foto ID jaoks JPEG faili nimi: pilt.jpg #vajadusel anda absoluutse aadressiga pildifaili asukoht | |||
On see foto õige (j/E/v)? j | |||
sec ed25519/409532D1CC948816 | |||
created: 2020-02-12 expires: mitte kunagi usage: SC | |||
trust: ultimate validity: ultimate | |||
ssb cv25519/6765DBFA115A5CCD | |||
created: 2020-02-12 expires: mitte kunagi usage: E | |||
[ultimate] (1). Eesnimi Perenimi <eesnimi@perenimi.ee> | |||
[ unknown] (2) [jpeg image of size 5671] | |||
</source> | |||
SELLEGA ON PILT LISATUD | |||
kui puudub pildi vaatamise programm: | |||
<pre> | |||
/bin/bash: xloadimage: käsku ei ole | |||
gpg: foto ID ei saa näidata! | |||
</pre> | |||
foto vaatamiseks ''xloadimage'i'' abil: | |||
<pre> | |||
showphoto | |||
Displaying jpeg photo ID of size 5671 for key 409532D1CC948816 (uid 2) | |||
</pre> | |||
====e-postiaadressi lisamine==== | |||
<pre> | |||
adduid | |||
Pärisnimi: Eesnimi2 Perenimi2 | |||
E-posti aadress: eesnimi2@perenimi2.ee | |||
Kommentaar: | |||
Te valisite selle KASUTAJA-ID: | |||
"Eesnimi2 Perenimi2 <eesnimi2@perenimi2.ee>" | |||
Muuda (N)ime, (K)ommentaari, (E)posti või (O)k/(V)älju? O | |||
sec ed25519/409532D1CC948816 | |||
created: 2020-02-12 expires: mitte kunagi usage: SC | |||
trust: ultimate validity: ultimate | |||
ssb cv25519/6765DBFA115A5CCD | |||
created: 2020-02-12 expires: mitte kunagi usage: E | |||
[ultimate] (1) Eesnimi Perenimi <eesnimi@perenimi.ee> | |||
[ultimate] (2) [jpeg image of size 5671] | |||
[ unknown] (3). Eesnimi2 Perenimi2 <eesnimi2@perenimi2.ee> | |||
save | |||
</pre> | |||
E-postiaadressi eemaldamiseks: ''deluid'' | |||
Uuesti sisenemisel saame vajadusel usaldada oma võtit ja sellele lisatud aadresse. | |||
<pre> | |||
gpg --expert --edit-key CC948816 | |||
trust | |||
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 | |||
Teie otsus? 5 | |||
Do you really want to set this key to ultimate trust? (y/N) y | |||
</pre> | |||
... see uuendab trust-db koheselt ja eraldi salvestada ei ole vaja. | |||
====vaikimisi e-postiaadressi (UID) määramine==== | |||
<pre> | |||
list #vaatame, mis saadaval, punktiga on tähistatud vaikimisi | |||
uid x #valime UID välja, x asemele õige number | |||
primary #määrame põhiliseks | |||
save #salvestame | |||
</pre> | |||
uuesti sisenemisel on vaikimisi (punktiga) juba uus aadress | |||
===Salasõna muutmine=== | |||
<pre> | |||
gpg --edit-key Your-Key-ID-Here | |||
gpg> passwd | |||
gpg> save | |||
</pre> | |||
===Võtme jagamine=== | |||
Algne idee on avalik võti võtmeserverisse üles laadida. Kui võti uueneb siis ka serveris uuendada. Sageli on võtmeservereid mitu, mida kasutatakse. | |||
Kuid ei soovita seda teha kuna kustutada sealt ei saa - saab vaid tühistada. Kui siis tühistussertifikaat mingil põhjusel kadunud või ei mäleta võtme salasõna siis ei saa ka tühistada. Lisaks kui ka on see kõik olemas siis vaatamata sellele mitmed võtmeserverid ei tühista võtit ära ja see jääb endiselt alles ning eksitab teisi inimesi. | |||
Avaliku võtme importimine | Pigem on soovitav avalik võti teisele osapoolele kodulehel, pilves failina edastada või ka suhtlusrakenduse, e-posti teel või mõne muu meediumi kaudu. Näiteks lisatakse tavaliselt kodulehele e-postiaadress - sinna juurde võiks siis kirjutada ka võtme sõrmejälje, mis on omakorda link avalikule võtmele ehk siis klõpsates sõrmejälge saab avaliku võtme alla laadida. Näiteks [https://www.ria.ee/et/kuberturvalisus/kuberintsidendist-teavitamine.html kirjutab CERT EE oma avaliku võtme sõrmejälge kodulehel]. | ||
<source lang="bash">gpg --search-keys <e-post@random.com> --keyserver | |||
===Võtme eksport-import=== | |||
Avaliku võtme eksport: | |||
<source lang="bash"> | |||
gpg --output avalik-voti.asc --armor --export CC948816 | |||
</source> | |||
Salajase võtme eksport | |||
<source lang="bash"> | |||
gpg --output salajane-voti.asc --armor --export-secret-keys CC948816 | |||
</source> | |||
Siin küsitakse ka salajase võtme salasõna. Skriptimisel aga see ei sobi ja saame tekstifailina salasõna ette anda ning muud dialoogid ka automaatselt ära kinnitada: | |||
<source lang="bash"> | |||
cat /asukoht/salas6na | gpg --pinentry-mode loopback --yes --passphrase-fd 0 --output salajane-voti.asc --armor --export-secret-keys CC948816 | |||
</source> | |||
Kaks võtit kokku ühte faili: | |||
<source> | |||
for f in avalik-voti.asc salajane-voti.asc; do (cat "${f}"; echo); done > avalik-salajane-koos.asc && truncate -s $(head -n -1 avalik-salajane-koos.asc | wc -c) avalik-salajane-koos.asc | |||
</source> | |||
Võtme(te) importimine | |||
<source lang="bash"> | |||
gpg --import avalik-voti.asc salajane-voti.asc | |||
</source> | |||
Teiste inimeste avalike võtmete importimine tagab selle, et teise osapoolega on info vahetamine võimalik. Pärast importimist lisandub teise isiku avalik võti sinu pubring.kbx faili. Veendu, et importimine oli edukas: | |||
<source lang="bash"> | |||
gpg --list-key | |||
</source> | |||
Avaliku võtme otsimine ja importimine võtmeserverist: | |||
<source> | |||
gpg --keyserver pool.sks-keyservers.net --search-keys <e-post@random.com> | |||
gpg --keyserver pool.sks-keyservers.net --search-keys "Eesnimi Perenimi" | |||
</source> | |||
===Võtmepaari kustutamine=== | |||
<source lang="bash"> | |||
gpg --delete-secret-and-public-key CC948816 | |||
Delete this key from the keyring? (y/N) y | |||
</source> | |||
Erinevad võimalused | |||
<pre> | |||
gpg --delete-keys name | |||
gpg --delete-secret-keys name | |||
gpg --delete-secret-and-public-key name | |||
</pre> | |||
===Graafiline haldus=== | |||
Erinevad graafilised (GUI) rakendused leiab [https://gnupg.org/software/frontends.html GnuPG kodulehelt]. Paraku ei toeta Linuxis ükski GUI rakendus ECC võtmeid (veel). | |||
Graafiliselt võimalik siiski ka ECC-võtmeid luua: | |||
* https://www.mailvelope.com/en - veebipõhise e-posti krüpteerimiseks, vt [https://www.mailvelope.com/en/help juhised] | |||
* [https://www.thunderbird.net/et/ Thunderbird]+[https://www.enigmail.net/ Enigmail], vt [https://www.enigmail.net/index.php/en/user-manual Enigmaili juhised]. [https://blog.thunderbird.net/2019/10/thunderbird-enigmail-and-openpgp/ Alates Thunderbird v78 on kuuldavasti krüpteerimise tugi ka otse rakendusse tulemas] ja enam ei ole vaja Enigmaili. | |||
===Andmete krüpteerimine=== | ===Andmete krüpteerimine=== | ||
Line 226: | Line 528: | ||
===Andmete | ===Andmete allkirjastamine=== | ||
Andmete | Andmete allkirjastamiseks on mitu võimalust:<br /> | ||
Krüpteeritud ASCII Armored fail. Tegemist on krüptogrammiga ning see pole ilma dešifreerimata loetav. | Krüpteeritud ASCII Armored fail. Tegemist on krüptogrammiga ning see pole ilma dešifreerimata loetav. | ||
Line 235: | Line 537: | ||
<source lang="bash">gpg --clearsign <failinimi.midagi></source> | <source lang="bash">gpg --clearsign <failinimi.midagi></source> | ||
Faili | Faili ehtsust on võimalik kontrollida järgmise käsuga: | ||
<source lang="bash">gpg --verify <failinimi.midagi></source> | <source lang="bash">gpg --verify <failinimi.midagi></source> | ||
Line 245: | Line 547: | ||
Selleks tuleb fail dešifreerida ning selle käigus kontrollitakse ka faili allkirja (käsku vaata eespoolt).<br /> | Selleks tuleb fail dešifreerida ning selle käigus kontrollitakse ka faili allkirja (käsku vaata eespoolt).<br /> | ||
Käskude kohta leiab rohkem | Käskude kohta leiab rohkem teavet: https://manpages.ubuntu.com/manpages/en/man1/gpg.1.html | ||
== Kasutatud kirjandus == | == Kasutatud kirjandus == | ||
[https://manpages.ubuntu.com/manpages/man1/gpg2.1.html man gpg]<br> | |||
http://www.glump.net/howto/gpg_intro<br /> | http://www.glump.net/howto/gpg_intro<br /> | ||
http://www.randombugs.com/linux/gpg-ubuntu-debian.html<br /> | http://www.randombugs.com/linux/gpg-ubuntu-debian.html<br /> | ||
Line 255: | Line 558: | ||
http://www.spywarewarrior.com/uiuc/gpg/gpg-com-4.htm<br /> | http://www.spywarewarrior.com/uiuc/gpg/gpg-com-4.htm<br /> | ||
https://manpages.ubuntu.com/manpages/bionic/man1/gpg2.1.html<br /> | https://manpages.ubuntu.com/manpages/bionic/man1/gpg2.1.html<br /> | ||
https://www.gnupg.org/documentation/manuals/gnupg/GPG-Examples.html | https://www.gnupg.org/documentation/manuals/gnupg/GPG-Examples.html<br> | ||
https://www.ria.ee/et/ametist/uuringud-analuusid-ulevaated.html<br> | |||
https://gnupg.org/software/frontends.html<br> | |||
Autor: Kaarel Kuurmann A21<br> | Autor: Kaarel Kuurmann A21<br> |
Latest revision as of 18:34, 19 April 2020
Sissejuhatus
GPG (GNU Privacy Guard) on vabavaraline tööriist, mis baseerub OpenPGP standardil. See võimaldab failide ja e-posti krüpteerimist ning digiallkirjastamist. Krüpteerimine tagab teabe konfidentsiaalsuse ja digiallkirjastamine andmete tervikluse. GNU Privacy Guard on eelkõige käsurealt kasutamiseks mõeldud, kuid leidub ka erinevat graafilise kasutajaliidesega tarkvara, mis GnuPG kasutamist võimaldab. Teatud rakendustele (näiteks Evolution, Mozilla Thunderbird, Kmail ja Psi) on see funktsioon juba sisse integreeritud.
GnuPG abil saame krüpteerida sõnumeid, kasutades selleks asümmeetrilist ehk avalikku võtit, mis kasutaja poolt genereeritakse. Dešifreerimine toimub salajase võtme abil. Koos moodustavad avalik ning salajane võti võtmepaari. Avalikku võtit saab vahetada teiste kasutajatega näiteks läbi võtmeserverite või failina saates. GPG toetab ka mitmesuguseid sümmeetrilisi krüptoalgoritme, vaikimis kasutatakse CAST5 salajase võtmega krüptoalgoritmi. Tegu on vabavaralise programmiga ja GPGs on kasutusel ainult patenteerimata krüptoalgoritmid.
Siin artiklis kasutatud GnuPG on paigaldatav ja kasutatav erinevates operatsioonisüsteemides. Seega sobivad alltoodud käsud mistahes operatsioonisüsteemile kus GnuPG paigaldatud on. Käesolev artikkel on kirjutatud GNU/Linuxi näitel.
Sõrmejälg
Võtmepaari iseloomustab sõrmejälg, mis on nii avalikul kui salajasel võtmel sama.
Sõrmejälg on lühike bitijada kirjeldamaks pikemat võtit. See luuakse krüptograafilist räsifunktsiooni kasutades.
$ gpg --list-keys
pub ed25519 2020-02-12 [SC]
58AA6DD2C39E2CC6CB047B91409532D1CC948816
uid [ultimate] Eesnimi Perenimi <eesnimi@perenimi.ee>
sub cv25519 2020-02-12 [E]
Siin on 58AA6DD2C39E2CC6CB047B91409532D1CC948816 selle võtmepaari sõrmejälg.
Kenama pildi saab:
$ gpg --list-keys --keyid-format LONG --fingerprint
pub ed25519/409532D1CC948816 2020-02-12 [SC]
Key fingerprint = 58AA 6DD2 C39E 2CC6 CB04 7B91 4095 32D1 CC94 8816
uid [ultimate] Eesnimi Perenimi <eesnimi@perenimi.ee>
sub cv25519/6765DBFA115A5CCD 2020-02-12 [E]
8 viimast sümbolit sõrmejäljest nimetatakse ka: võtme ID
GPG paigaldamine
Kuna suurem osa Linuxi distributsioonide paigaldusmeedia sisaldab GNU Privacy Guardi, siis pole seda tarvis eraldi paigaldada. Vajadusel saab GPG endale hankida http://gnupg.org/download/index.en.html veebilehelt.
Paigaldamine Ubuntu jt Debiani-põhistes Linuxites:
sudo apt update && sudo apt install gnupg2 xloadimage && sudo apt clean
MS Windowsile on olemas Gpg4win. Ettevaatust Kleopatra rakendusega MS Windowsis! Sellega loodud GPG-võtmeid ei pruugi olla turvaline usaldada!
Teised valikud GnuPG kodulehel
GPG kasutamine
GnuPG versiooni ja krüptoalgoritmide toe vaatamine:
gpg --version
gpg (GnuPG) 2.2.4
libgcrypt 1.8.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: /home/kasutaja/.gnupg
Toetatud algoritmid:
Avalik võti: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Šiffer: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Räsi: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Pakkimine: Pakkimata, ZIP, ZLIB, BZIP2
Võtmete vaatamine
gpg --list-keys gpg --list-public-keys gpg --list-secret-keys gpg --fingerprint gpg --check-signatures gpg --list-keys --keyid-format LONG --fingerprint gpg --list-keys --with-subkey-fingerprint <võtme ID> gpg --with-colons --list-keys gpg --with-colons --list-keys <ID> gpg --list-keys @user
Võtmepaari loomine
Võtmepaari loomiseks tuleb terminali sisestada:
gpg --full-gen-key --expert
Selle peale küsitakse, millist võtit luua soovitakse.
Väga soovitav on luua elliptilise krüpto toega (ECC Elliptic Curve Cryptography) võtmepaar (vt krüptograafiliste algoritmide elutsükli uuringud):
Palun valige, millist võtmetüüpi te soovite: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (ainult allkirjastamiseks) (4) RSA (ainult allkirjastamiseks) (7) DSA (set your own capabilities) (8) RSA (set your own capabilities) (9) ECC and ECC (10) ECC (sign only) (11) ECC (set your own capabilities) (13) Existing key Teie valik? 9
Järgmisena küsitakse meilt, millist elliptilist krüptot me kasutada soovime:
Please select which elliptic curve you want: (1) Curve 25519 (3) NIST P-256 (4) NIST P-384 (5) NIST P-521 (6) Brainpool P-256 (7) Brainpool P-384 (8) Brainpool P-512 (9) secp256k1 Teie valik? 1
Nüüd tuleb määrata oma võtme kehtivusaeg. Vaikimisi on see 0 ehk lõpmatult, kuid siin tasub meeles pidada, et kui võtit enam ei kasutata, siis tuleb see ka tühistada.
Palun määrake, kui kaua on võti kehtiv. 0 = võti ei aegu <n> = võti aegub n päevaga <n>w = võti aegub n nädalaga <n>m = võti aegub n kuuga <n>y = võti aegub n aastaga Võti on kehtiv kuni? (0) <Enter>
Kinnitame oma valikut:
Key does not expire at all Is this correct? (y/N) y
Järgmisena sammuna tuleb sisestada vajalikud andmed.
Näidisandmed asendada tegelikega.
GnuPG needs to construct a user ID to identify your key. Pärisnimi: Eesnimi Perenimi E-posti aadress: eesnimi@perenimi.ee Kommentaar: Te valisite selle KASUTAJA-ID: "Eesnimi Perenimi <eesnimi@perenimi.ee>" Muuda (N)ime, (K)ommentaari, (E)posti või (O)k/(V)älju? O [SALASÕNA KÜSIMINE VÕTMEPAARILE] Me peame genereerima palju juhuslikke baite. Praegu oleks hea teostada arvutil mingeid teisi tegevusi (kirjutada klaviatuuril, liigutada hiirt, kasutada kettaid jne), see annaks juhuarvude generaatorile võimaluse koguda paremat entroopiat. gpg: key 409532D1CC948816 marked as ultimately trusted gpg: revocation certificate stored as '/home/student/.gnupg/openpgp-revocs.d/58AA6DD2C39E2CC6CB047B91409532D1CC948816.rev' avalik ja salajane võti on loodud ja allkirjastatud. pub ed25519 2020-02-12 [SC] 58AA6DD2C39E2CC6CB047B91409532D1CC948816 uid Eesnimi Perenimi <eesnimi@perenimi.ee> sub cv25519 2020-02-12 [E]
Avalikku võtit saab vaadata käsuga:
gpg --list-key
/home/test/.gnupg/pubring.kbx
------------------------------
pub ed25519 2020-02-12 [SC]
58AA6DD2C39E2CC6CB047B91409532D1CC948816
uid [ultimate] Eesnimi Perenimi <eesnimi@perenimi.ee>
sub cv25519 2020-02-12 [E]
Avalik võti on CC948816 (8 viimast sümbolit sõrmejäljest)
Salajast võtit saab vaadata:
gpg --list-secret-keys
Tühistussertifikaat
Soovituslik oleks luua ka revocation key, millega saab avalikku võtit tühistada.
gpg --output tyhistamise-sertifikaat.asc --armor --gen-revoke CC948816
Create a revocation certificate for this key? (y/N) y
Palun valige tühistamise põhjus:
0 = Põhjus puudub
1 = Võti on kompromiteeritud
2 = Võti on asendatud
3 = Võti ei ole enam kasutusel
Q = Katkesta
(Tõenäoliselt soovite siin valida 1)
Teie otsus? 3
Sisestage mittekohustuslik kirjeldus. Lõpetage tühja reaga:
>
Tühistamise põhjus: Võti ei ole enam kasutusel
(Kirjeldust ei antud)
Is this okay? (y/N) y
Tühistamise sertifikaat on loodud.
Tühistussertifikaatide loomise automatiseerimine skripti abil:
#!/bin/sh
# 0 = Põhjus puudub
printf "Y\n0\n\nY\nY\n"|gpg --no-tty --command-fd 0 --status-fd 2 --output tyhistamise-sertifikaat_pohjus-puudub.asc --armor --gen-revoke CC948816 >&- 2>&-
#
# 1 = Võti on kompromiteeritud
printf "Y\n1\n\nY\nY\n"|gpg --no-tty --command-fd 0 --output tyhistamise-sertifikaat_pohjus-kompromiteeritud.asc --armor --gen-revoke CC948816
#
# 2 = Võti on asendatud
printf "Y\n2\n\nY\nY\n"|gpg --no-tty --command-fd 0 --output tyhistamise-sertifikaat_pohjus-asendatud.asc --armor --gen-revoke CC948816
#
# 3 = Võti ei ole enam kasutusel
printf "Y\n3\n\nY\nY\n"|gpg --no-tty --command-fd 0 --output tyhistamise-sertifikaat_pohjus-ei-ole-enam-kasutusel.asc --armor --gen-revoke CC948816
Vajadusel impordime eelnevalt ka vana võtmepaari tühistamiseks
gpg --import avalik-salajane-koos.asc
Hilisem tühistussertifikaadi kasutamine: importimisega tühistame olemasoleva võtmepaari
gpg --import tyhistamise-sertifikaat.asc
Serverites tühistamine peale vana võtme ja selle tühistusserdi importi:
gpg --keyserver keys.openpgp.org --search-keys CC948816 gpg --keyserver keys.openpgp.org --send-keys CC948816
Näiteskript:
#!/bin/sh
gpg --keyserver keys.gnupg.net --search-keys CC948816
gpg --keyserver keys.gnupg.net --send-keys CC948816 #tühistamine õnnestus kuid ei kinnitatud (sisuliselt ebaõnnestus)
gpg --keyserver keys.openpgp.org --search-keys CC948816
gpg --keyserver keys.openpgp.org --send-keys CC948816 #tühistamine õnnestus
gpg --keyserver hkps.pool.sks-keyservers.net --search-keys CC948816
gpg --keyserver hkps.pool.sks-keyservers.net --send-keys CC948816 #tühistamine õnnestus
gpg --keyserver pool.sks-keyservers.net --search-keys CC948816
gpg --keyserver pool.sks-keyservers.net --send-keys CC948816 #tühistamine õnnestus
gpg --keyserver pgp.key-server.io --search-keys CC948816
gpg --keyserver pgp.key-server.io --send-keys CC948816 #tühistamine õnnestus
gpg --keyserver pgp.mit.edu --search-keys CC948816
gpg --keyserver pgp.mit.edu --send-keys CC948816 #tühistamine ebaõnnestus
gpg --keyserver hkps://peegeepee.com --search-keys CC948816
gpg --keyserver hkps://peegeepee.com --send-keys CC948816 #tühistamine õnnestus
gpg --keyserver keyserver.ubuntu.com --search-keys CC948816
gpg --keyserver keyserver.ubuntu.com --send-keys CC948816 #tühistamine ebaõnnestus
gpg --keyserver zimmermann.mayfirst.org --search-keys CC948816
gpg --keyserver zimmermann.mayfirst.org --send-keys CC948816 #tühistamine õnnestus
gpg --keyserver pgp.rediris.es --search-keys CC948816
gpg --keyserver pgp.rediris.es --send-keys CC948816 #tühistamine õnnestus
gpg --keyserver hkps://keyserver.pgp.com --search-keys CC948816
gpg --keyserver hkps://keyserver.pgp.com --send-keys CC948816 #tühistamine ebaõnnestus
gpg --keyserver pgp.zdv.uni-mainz.de --search-keys CC948816
gpg --keyserver pgp.zdv.uni-mainz.de --send-keys CC948816 #tühistamine ebaõnnestus
Kui võtmepaari enam vaja ei ole (tühistatud võti on võtmeserveritesse saadetud) siis võib kustutada
gpg --delete-secret-and-public-key CC948816
Võtme täiendamine
vaatame esmalt, mis võtmed meil on:
gpg --list-keys
võtme ID on sõrmejälje 8 viimast sümbolit
Võtme muutmiseks tuleb konkreetse võtme muutmine avada GPG interaktiivses haldusliideses
gpg --expert --edit-key CC948816
help #kõik GPG haldusliidese käsud
quit välju sellest menüüst
save salvesta ja välju
help näita seda abiinfot
fpr show key fingerprint
grip show the keygrip
list näita võtit ja kasutaja IDd
uid vali kasutaja ID N
key select subkey N
check check signatures
sign sign selected user IDs [* see below for related commands]
lsign sign selected user IDs locally
tsign sign selected user IDs with a trust signature
nrsign sign selected user IDs with a non-revocable signature
adduid lisa kasutaja ID
addphoto lisa foto ID
deluid delete selected user IDs
addkey add a subkey
addcardkey add a key to a smartcard
keytocard move a key to a smartcard
bkuptocard move a backup key to a smartcard
delkey delete selected subkeys
addrevoker lisa tühistamise võti
delsig delete signatures from the selected user IDs
expire change the expiration date for the key or selected subkeys
primary flag the selected user ID as primary
pref näita eelistusi (ekspert)
showpref näita eelistusi (detailsena)
setpref set preference list for the selected user IDs
keyserver set the preferred keyserver URL for the selected user IDs
notation set a notation for the selected user IDs
passwd muuda parooli
trust muuda omaniku usaldust
revsig revoke signatures on the selected user IDs
revuid revoke selected user IDs
revkey revoke key or selected subkeys
enable enable key
disable disable key
showphoto show selected photo IDs
clean compact unusable user IDs and remove unusable signatures from key
minimize compact unusable user IDs and remove all signatures from key
* The 'sign' command may be prefixed with an 'l' for local signatures (lsign),
a 't' for trust signatures (tsign), an 'nr' for non-revocable signatures
(nrsign), or any combination thereof (ltsign, tnrsign, etc.).
Pildi haldamine
Alljärgnevad käsud on juba GPG haldusliideses
addphoto
Valige foto ID'na kasutatav pilt. Pilt peab olema JPEG fail.
Pidage meeles, et pilt salvestatakse teie avalikus võtmes. Kui kasutate
väga suurt pilti, on ka kõti väha suur!
Mõistlik pildi suurus võiks olla umbes 240x288.
Sisestage foto ID jaoks JPEG faili nimi: pilt.jpg #vajadusel anda absoluutse aadressiga pildifaili asukoht
On see foto õige (j/E/v)? j
sec ed25519/409532D1CC948816
created: 2020-02-12 expires: mitte kunagi usage: SC
trust: ultimate validity: ultimate
ssb cv25519/6765DBFA115A5CCD
created: 2020-02-12 expires: mitte kunagi usage: E
[ultimate] (1). Eesnimi Perenimi <eesnimi@perenimi.ee>
[ unknown] (2) [jpeg image of size 5671]
SELLEGA ON PILT LISATUD
kui puudub pildi vaatamise programm:
/bin/bash: xloadimage: käsku ei ole gpg: foto ID ei saa näidata!
foto vaatamiseks xloadimage'i abil:
showphoto Displaying jpeg photo ID of size 5671 for key 409532D1CC948816 (uid 2)
e-postiaadressi lisamine
adduid Pärisnimi: Eesnimi2 Perenimi2 E-posti aadress: eesnimi2@perenimi2.ee Kommentaar: Te valisite selle KASUTAJA-ID: "Eesnimi2 Perenimi2 <eesnimi2@perenimi2.ee>" Muuda (N)ime, (K)ommentaari, (E)posti või (O)k/(V)älju? O sec ed25519/409532D1CC948816 created: 2020-02-12 expires: mitte kunagi usage: SC trust: ultimate validity: ultimate ssb cv25519/6765DBFA115A5CCD created: 2020-02-12 expires: mitte kunagi usage: E [ultimate] (1) Eesnimi Perenimi <eesnimi@perenimi.ee> [ultimate] (2) [jpeg image of size 5671] [ unknown] (3). Eesnimi2 Perenimi2 <eesnimi2@perenimi2.ee> save
E-postiaadressi eemaldamiseks: deluid
Uuesti sisenemisel saame vajadusel usaldada oma võtit ja sellele lisatud aadresse.
gpg --expert --edit-key CC948816 trust 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 Teie otsus? 5 Do you really want to set this key to ultimate trust? (y/N) y
... see uuendab trust-db koheselt ja eraldi salvestada ei ole vaja.
vaikimisi e-postiaadressi (UID) määramine
list #vaatame, mis saadaval, punktiga on tähistatud vaikimisi uid x #valime UID välja, x asemele õige number primary #määrame põhiliseks save #salvestame
uuesti sisenemisel on vaikimisi (punktiga) juba uus aadress
Salasõna muutmine
gpg --edit-key Your-Key-ID-Here gpg> passwd gpg> save
Võtme jagamine
Algne idee on avalik võti võtmeserverisse üles laadida. Kui võti uueneb siis ka serveris uuendada. Sageli on võtmeservereid mitu, mida kasutatakse.
Kuid ei soovita seda teha kuna kustutada sealt ei saa - saab vaid tühistada. Kui siis tühistussertifikaat mingil põhjusel kadunud või ei mäleta võtme salasõna siis ei saa ka tühistada. Lisaks kui ka on see kõik olemas siis vaatamata sellele mitmed võtmeserverid ei tühista võtit ära ja see jääb endiselt alles ning eksitab teisi inimesi.
Pigem on soovitav avalik võti teisele osapoolele kodulehel, pilves failina edastada või ka suhtlusrakenduse, e-posti teel või mõne muu meediumi kaudu. Näiteks lisatakse tavaliselt kodulehele e-postiaadress - sinna juurde võiks siis kirjutada ka võtme sõrmejälje, mis on omakorda link avalikule võtmele ehk siis klõpsates sõrmejälge saab avaliku võtme alla laadida. Näiteks kirjutab CERT EE oma avaliku võtme sõrmejälge kodulehel.
Võtme eksport-import
Avaliku võtme eksport:
gpg --output avalik-voti.asc --armor --export CC948816
Salajase võtme eksport
gpg --output salajane-voti.asc --armor --export-secret-keys CC948816
Siin küsitakse ka salajase võtme salasõna. Skriptimisel aga see ei sobi ja saame tekstifailina salasõna ette anda ning muud dialoogid ka automaatselt ära kinnitada:
cat /asukoht/salas6na | gpg --pinentry-mode loopback --yes --passphrase-fd 0 --output salajane-voti.asc --armor --export-secret-keys CC948816
Kaks võtit kokku ühte faili:
for f in avalik-voti.asc salajane-voti.asc; do (cat "${f}"; echo); done > avalik-salajane-koos.asc && truncate -s $(head -n -1 avalik-salajane-koos.asc | wc -c) avalik-salajane-koos.asc
Võtme(te) importimine
gpg --import avalik-voti.asc salajane-voti.asc
Teiste inimeste avalike võtmete importimine tagab selle, et teise osapoolega on info vahetamine võimalik. Pärast importimist lisandub teise isiku avalik võti sinu pubring.kbx faili. Veendu, et importimine oli edukas:
gpg --list-key
Avaliku võtme otsimine ja importimine võtmeserverist:
gpg --keyserver pool.sks-keyservers.net --search-keys <e-post@random.com>
gpg --keyserver pool.sks-keyservers.net --search-keys "Eesnimi Perenimi"
Võtmepaari kustutamine
gpg --delete-secret-and-public-key CC948816
Delete this key from the keyring? (y/N) y
Erinevad võimalused
gpg --delete-keys name gpg --delete-secret-keys name gpg --delete-secret-and-public-key name
Graafiline haldus
Erinevad graafilised (GUI) rakendused leiab GnuPG kodulehelt. Paraku ei toeta Linuxis ükski GUI rakendus ECC võtmeid (veel).
Graafiliselt võimalik siiski ka ECC-võtmeid luua:
- https://www.mailvelope.com/en - veebipõhise e-posti krüpteerimiseks, vt juhised
- Thunderbird+Enigmail, vt Enigmaili juhised. Alates Thunderbird v78 on kuuldavasti krüpteerimise tugi ka otse rakendusse tulemas ja enam ei ole vaja Enigmaili.
Andmete krüpteerimine
Avatekst + vastuvõtja avalik võti ---> krüptogramm
Faili krüpteerimiseks sisesta järgmine käsk:
gpg --output <väljundfail.midagi> --encrypt -r <saaja_e-post@random.com> <avateksti.midagi>
Näide: gpg --output eritisalajane.txt --encrypt -r keegi@midagi.com saladus.txt
Selle käsuga krüpteerisime me faili nimega saladus.txt, kasutades selleks isiku(kes kasutab e-posti aadressit keegi@midagi.com) avalikku võtit ja saime krüptogrammi nimega eritisalajane.txt. Kui nüüd tekkinud krüptogrammi less käsuga vaatame, siis näeme, et faili sisu pole loetav. Avateksti (saladus.txt) võib nüüd kustutada ning alles jääb ainult krüpteeritud fail (eritisalajane.txt).
Andmete dešifreerimine
Krüptogramm + vastuvõtja salajane võti ---> avatekst
Krüptogrammi(mis on krüpteeritud sinu avaliku võtmega) dešifreerimiseks sisesta järgmine käsk:
gpg --decrypt <krüptogramm.midagi> --output <väljundfail.midagi>
N: gpg --decrypt eritisalajane.txt –output tavaline.txt
Siinkohal tasuks mainida, et saatja ning vastuvõtja ei ole alati erinevad inimesed. GPG abil võime krüpteerida ka oma enda andmeid. Sellisel juhul luuakse krüptogramm ning avateksti võime kustutada. Seda saab lihtsalt teha sümmeetrilist krüptoalgoritmi kasutades:
gpg -s <avatekst.midagi>
Dešifreerimine toimub eelnevalt mainitud käsuga:
gpg -d <krüptogramm.midagi> -o <väljundfail.midagi>
Andmete allkirjastamine
Andmete allkirjastamiseks on mitu võimalust:
Krüpteeritud ASCII Armored fail. Tegemist on krüptogrammiga ning see pole ilma dešifreerimata loetav.
gpg --armor --sign <failinimi.midagi>
Allkirjastatakse fail, kuid sisu krüpteerimist ei toimu ning fail jääb loetavaks.
gpg --clearsign <failinimi.midagi>
Faili ehtsust on võimalik kontrollida järgmise käsuga:
gpg --verify <failinimi.midagi>
Väljund:
gpg: Signature made Thu 29 Nov 2012 11:06:03 AM EET using RSA key ID D29AF589 gpg: Good signature from "Heli Kopter <hkopter@midagi.com>"
gpg --verify kontrollib ainult faili allkirja, kuid avateksti see näha ei võimalda(juhul kui fail on krüpteeritud).
Selleks tuleb fail dešifreerida ning selle käigus kontrollitakse ka faili allkirja (käsku vaata eespoolt).
Käskude kohta leiab rohkem teavet: https://manpages.ubuntu.com/manpages/en/man1/gpg.1.html
Kasutatud kirjandus
man gpg
http://www.glump.net/howto/gpg_intro
http://www.randombugs.com/linux/gpg-ubuntu-debian.html
http://manpages.ubuntu.com/manpages/lucid/man1/gpg.1.html
http://www.gnupg.org/features.en.html
https://help.ubuntu.com/community/GnuPrivacyGuardHowto
http://www.spywarewarrior.com/uiuc/gpg/gpg-com-4.htm
https://manpages.ubuntu.com/manpages/bionic/man1/gpg2.1.html
https://www.gnupg.org/documentation/manuals/gnupg/GPG-Examples.html
https://www.ria.ee/et/ametist/uuringud-analuusid-ulevaated.html
https://gnupg.org/software/frontends.html
Autor: Kaarel Kuurmann A21
Täiendused: Edmund Laugasson (12.02.2020)