GPG (GNU Privacy Guard) kas tai? Tai yra nemokama ir atviro kodo PGP (Pretty Good Privacy) alternatyva. Kadangi šis tinklapis skirtas FOSS, PGP daugiau neminėsiu, tiesiog turėkit omeny jog tai tas pats tik autoriai skirtingi. GPG tai yra programa duomenų šifravimui ir iššifravimui. Dažnai naudojama el. laiškų pasirašymui ar/ir šifravimui.

Diegimas

Turbūt visi distributyvai savo saugyklose turi paketą „gnupg“ (arba panašiai pavadintą). Kaip diegti nepasakosiu, visi žino.

Raktai

Yra 3 raktai:

Viešas įkeliamas į kelis raktų saugojimo puslapius, kartais prisegamas prie laiško, dažniausiai paraše būna parašomas tik rakto numeris pvz. GPG: 0x21C70548
Privatus su juo šifruojama/iššifruojama. Neduokdie papuls į blogas rankas.
Atšaukimo raktas, su šiuo raktu atšaukiamas rakto galiojimas, jis pažymimas kaip neveikiantis. Šio rakto prireiks tada jei pamiršite slaptažodį arba privatus raktas pateks į blogas rankas. Jeigu ką, tai laikyt privatų ir atšaukimo raktą toje pačioj laikmenoj visiškai neprotinga 🙂

Generavimas

Pačio rakto generavimas

Komanda:

gpg --gen-key

ir atsakom į visus klausimus, numatytosios reikšmės visiškai tinkamos naudoti. Tik aš siūlyčiau nustatyti galiojimo laiką, pvz. 1 metus. Po metų bus galima pratęsti jo galiojimą. Pametus raktą ir jo neatšaukus tikrai žinosime jog jo nepanaudos niekas kitas.

Viešojo rakto failo generavimas
Sugeneravus raktą reikia sukurti viešą raktą:
pirmiausia pažiūrim kokie raktai saugomi raktinėj

gpg --list-keys

matom maždaug:

------------------------------
pub 2048R/21C70548 2011-12-14 [expires: 2016-12-12]
uid Algimantas Margevičius <margevicius.algimantas@xxxxxxx>
uid gymka <gymka@xxxxxxx>
uid archlinux <gymka@xxxxxxx>

mūsų rakto id yra 21C70548 (toliau visur bus naudojamas šis skaičius, o ne „rakto_id“, nes taip lengviau skaityt)

gpg --export --armor -a 21C70548 >21C70548.asc

sukuriamas failas „21C70548.asc“ jį galima dalinti bet kam ir bet kur, pvz. prisegti prie pasirašyto/užšifruoto laiško.

Yra daug raktų serverių, aš siunčiu į šiuos 3:

gpg --keyserver pgp.mit.edu --send-keys 21C70548
gpg --keyserver subkeys.pgp.net --send-keys 21C70548
gpg --keyserver pool.sks-keyservers.net --send-keys 21C70548

Dabar mūsų raktas yra raktų serveryje ir visi kiti žmonės galės patikrinti mūsų raktą turėdami tik rakto ID t. y. „21C70548“, nebūtina duoti failo „21C70548.asc“. Tam skirta programa jį parsiųs iš serverio ir patikrins.

Privataus rakto failo generavimas

gpg --export-secret-keys 21C70548 --output privatus_raktas_iskart_perkelti_i_saugia_vieta

Atšaukimo rakto generavimas

gpg --output atsaukimo_raktas_saugoti_ne_ten_pat_kur_privatus_raktas.asc --gen-revoke 21C70548

ir atsakom į užduotus klausimus. Jei raktas tampa sukompromituotas, pvz. piktavaliai pavagia slaptažodį ar šiaip privatų raktą. Atšaukiam mūsų rakto galiojimą:

gpg --import atsaukimo_raktas_saugoti_ne_ten_pat_kur_privatus_raktas.asc

tada išsiunčiam jį į serverį jog visi žinotų jog šis raktas sukompromituotas:

gpg --keyserver pgp.mit.edu --send-keys 21C70548
gpg --keyserver subkeys.pgp.net --send-keys 21C70548
gpg --keyserver pool.sks-keyservers.net --send-keys 21C70548

Naudojimas

Rakto importavimas
Jei reikia importuoti raktą ir to nepadarė jūsų pašto programa ar failų tvarkyklė:

gpg --import raktas.asc

Failo užšifravimas

gpg -o naujas_uzsifruotas_failas_kuri_siusime.txt --encrypt -r 21C70548 failas_kuris_bus_uzsifruotas.txt

Failo iššifravimas

gpg --decrypt naujas_uzsifruotas_failas_kuri_siusime.txt

Rakto redagavimas, galiojimo laiko keitimas

gpg --edit-key 21C70548

Patenkam į gpg shell, parašius „help“ gausim visas galimas komandas, dėl savaime suprantamų priežasčių aš neaprašinėsiu jų.
Parašom „key“ matom maždaug:

gpg> key
pub 2048R/21C70548 created: 2011-12-14 expires: 2016-12-12 usage: SCA
trust: ultimate validity: ultimate
sub 2048R/803B871A created: 2011-12-14 expires: 2016-12-12 usage: E
[ultimate] (1). Algimantas Margevičius <margevicius.algimantas@xxxxxxx>
[ultimate] (2) gymka <gymka@xxxxxxx>
[ultimate] (3) archlinux <gymka@xxxxxxx>

galima redaguoti ne pagrindinį raktą, bet ir papildomus raktus. Pvz. norint redaguoti tą kuris pavadintas „archlinux“ turėčiau parašyt „key 3“.
Tada parašom „expire“ matom maždaug:

gpg> expire
Changing expiration time for the primary key.
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)

ir įrašom galiojimo laiką, aš noriu jog mano raktas galiotų metus, skaičiuojant nuo šiandien, todėl parašau „1y“. Patvirtinus pakeitimus išsaugom pakeitimus parašydami „save“. Pakeitimai kol kas yra tik mūsų kompiuteryje, juos reikia išsiųsti į serverį, kad visas pasaulis žinotų kada baigsis mūsų rakto galiojimas.

Savaime aišku yra ir tam skirtų programų kurios gali kurti ir redaguoti raktus ir jos turi GUI. Pvz. „seahorse“. Ten savaime viskas aišku todėl nerašysiu kas ir kaip.

Praktika

Aš asmeniškai paštui naudoju programą „thunderbird“, ji pagal nutylėjimą nesusitvarko su gpg. Tam yra plėtinys „enigmail“. Įdiegus jį ten viskas aišku kas ir kaip, todėl taipogi nerašysiu kaip naudotis.

Praktiniai panaudojimo pavyzdžiai:

  1. Siunčiat ne viešus duomenis el. paštu, net jei ir piktavaliai nenulauš jūsų pašto dėžutės vistiek tuos duomenis gali perskaityt pašto serverio administratorius, teisėsauga ir google bot’as 😀 kai duomenys vieši tai nebėda, bet jei reik perduot neviešus duomenis tada į pagalbą ateina laiškų šifravimas. Užšifravus laišką jį gali perskaityt tik žmogus kuriam skirtas tas laiškas(siuntėjas užšifruoja laišką viešu gavėjo raktu, jį iššifruoti galima tik to gavėjo privačiu raktu).
  2. Failų tapatumo patikrinimas, jei parsisiunčiat ubuntu cd atvaizdį ir jis yra išskirstytas į daug .rar failų jų tapatumą/vientisumą galima patikrinti su kartu pridėtu .sfv failu, bet jei žmogus jums atsiuntė programą kuriai reikia „root“ teisių tai jūs tikrai nepasitikėsit nežinia kieno parašytu sfv failu ir nediegsit tokios programos į savo sistemą. Čia į pagalbą ateina gpg, jūs turit siuntėjo viešą raktą ir galit patikrint ar gavote tikrai tą failą kurį siuntė siuntėjas. Siuntėjas jums atsiųs, jūsų viešu raktu pasirašytą failą ir iššifruoti tą failą galėsite tik jūs. Praktikoj „archlinux“ paketai yra pasirašyti gpg raktais ir diegiant yra patvirtinamas jų tapatumas, įsitikinama ar tikrai tai tie failai kuriuos įdėjo „archlinux“ kūrėjai, o ne piktavaliai įsilaužę į „archlinux“ paketų saugyklas. Apie tai plačiau galima paskaityti archwiki.

P. S. dar daug ko neparašiau, bet ir taip labai jau ilgas tekstas gavosi. Gali būt jog kada nors parašysiu antrą šio straipsnio dalį, taip sakant pratęsimą.