Kas tas yra
Privatumo iliuzija apsauga, failų kodavimas, email, dokumentų pasirašymas, vėl kodavimas. Taip, elektroninis parašas + daugiau galimybių 😉 Be institucijų.
GPG naudojimas
Prašome atsakyti į kelis anketos klausimus. Ačiū.
Pirmiausiai reiktų pasigaminti raktus, o paskui naudoti buityje. Todėl jei dar neturite raktų, skaitykite nuo „Gaminam raktus“. „Pasigaminę“ ir sugrįžę čia rasite pagrindines reikalingiausias komandas.
Importuotiems raktams pasitikėjimo Trust nustatymas. Savo raktams ir žmonių, kuriuos gerai žinote, raktus nustatome Ultimate trust lygį:
gpg --edit-key E31828C0 Secret key is available. [...] dalis teksto praleista gpg> trust [...] dalis teksto praleista Your decision? 5 Do you really want to set this key to ultimate trust? (y/N) y [...] dalis teksto praleista gpg> quit
Apsikeitimas raktais
Raktų siuntimas į serverius
Sukurtas raktas tėra tik jūsų kompe, todėl reikia nusiųsti public raktą į serverius. Geriausiai į serverių pools:
gpg --keyserver pool.sks-keyservers.net --send-key E31828C0
Galima įrašyti serverių eilutes į gpg.conf failą:
keyserver hkp://keys.gnupg.net keyserver http://http-keys.gnupg.net
Įrašius nereiks siunčiant / gaunant raktus naudoti –keyserver serveris, nebent kitą norite naudoti. Geriau naudoti serverių pool`us. Nusiuntus į vieną serverį, jūsų raktą susinchronizuos į visus.
Analogiškai gauti raktus iš serverių:
gpg --keyserver pool.sks-keyservers.net --recv-key E31828C0
arba jei įrašyta į gpg konfigūracijos failą gpg.conf serveriai:
gpg --recv-key E31828C0
Raktų eksportas / importas
Galima nepublikuoti viešuose serveriuose raktų, o nusiųsti public key el. paštu ar kitomis priemonėmis. Viešo rakto eksportavimas:
gpg --export --armor --output vardenis.txt vardenis.pavardenis@servas.lt
Rakto imortavimas:
gpg --import vardenis.txt
Pasirašymas, kodavimas
Koduotas irba pasirašytas paštas
Thunderbird yra pluginas enigmail. Kitose pašto programose analogiški priedai yra. Šiuos pluginus galėtų instaliuoti ir neturintys savo raktų – matytų, ar laišką išsiuntė žinantis siuntėjo gpg kodą, tai yra pats rakto savininkas.
Pluginus vieną kartą sukonfigūravus, automatiškai pagal turimus raktus, gavėjų email`ų adresus koduojama irba pasirašinėjama laiškai.
Kai kam iškyla klausimas „o kam to reikia?“. Šiom dienom skandalas su tagu #vilniusleaks. Po to visokie keisti susirašinėjimai pasiaiškinimai, razborkės prasideda. To nebūtų „nušvilpus“ koduotus laiškus.
Failų kodavimas:
gpg --output slaptas_dokumentas.doc.gpg --encrypt --recipient vardenis.pavardenis@servas.lt slaptas_dokumentas.doc
Bus sukurtas naujas failas slaptas_dokumentas.doc.gpg . Nepamirškite ištrinti nekoduotos dokumento versijos slaptas_dokumentas.doc .
–recipient nurodo kam skirtas dokumentas – tai yra tik privatų raktą su ID vardenis.pavardenis@servas.lt turintis žmogus galės iškoduoti dokumentą.
Tai dar vienas privalumas gpg sistemos koduojant paštą – nereikia perduoti jokiais slaptais, saugiais kanalais galiniam adresatui jokio privataus rakto – jis jį jau turi. Tereikia siuntėjui parsisiųsti iš serverių gavėjo public key ir pakabinti spyną , kurią atrakinti gali tik turintis raktą su ID vardenis.pavardenis@servas.lt
Failų iškodavimas:
gpg --output slaptas_dokumentas.doc --decrypt slaptas_dokuemtas.doc.gpg
Katalogų kodavimas
gpg nekoduoja katalogų, todėl pirmiausiai reikia suarchyvuoti. Tam panaudojame tar:
tar -c katalogas | gpg --encrypt --recipient vardenis.pavardenis@servas.lt > katalogas.gpg
Nepamirštam ištrinti katalogas.
Ir katalogo iškodavimas:
gpg --decrypt katalogas.gpg > katalogas && tar -xf katalogas
Dokumentų pasirašymas
Sukurkite naują dokumentą ar pasirašykite jau turimą:
gpg --armor --detach-sig dokumentas.doc
Bus sukurtas failas dokumentas.doc.asc. Juos laikykite viename kataloge, o jei siunčiate kitam asmeniui, tai siųskite abudu. Kitaip nebus galimybės patikrinti pasirašymo fakto ir parašo galiojimo.
Parašo patikrinimas:
gpg --verify dokumentas.doc.asc [...]dalis teksto praleista gpg: Good signature from [...]dalis teksto praleista
„Good signature“ – šis dokumentas buvo pasirašytas, jokių modifikacijų neatlikta. Parašas galioja.
Pakeitus bent vieną simbolį dokumente, ar netgi modifikavimo laiką, parašas jau negalios. Dokumente parašykite vieną bet kokį simbolį, išsaugokite, ištrinkite tą simbolį, vėl išsaugokite. Dokumento turinys nepasikeitė – ką parašėt naujai, tą ištrynėte. Tačiau:
gpg --verify dokumentas.doc.asc [...] dalis teksto praleista gpg: BAD signature from[...] dalis teksto praleista.
Parašas šiam dokumentui jau nebegalioja – dokumentas po pasirašymo modifikuotas.
Web of Trust (WOT)
Importavę, atsisiuntę iš serverių raktą galite jį pasirašyti ir išsiųsti atgal pasirašytą į serverius. Taip kuriamas „pasitikėjimo tinklas“. Pasirašyti viešuosius raktus galima ir pageidautina asmenų, kuriuos gerai pažystate, arba kurių duomenis patikrinote pagal institucijų išduotus dokumentus (pvz. pasą). Prieš pasirašant labai gera praktika patikrinti rakto autentiškumą pagal rakto ilgį IR fingerprint – negalima aklai pasitikėti vien rakto ID. Daugiau apie tai skyriaus „Tips & Tricks“ nuorodoje „geriausia praktika“.
Rakto pasirašymo pavyzdžiui panaudotas PGP Global Directory 2048 bitų raktas ca57ad7c , kurio fingerprint 50BB 6FFC 9719 DFD2 BEBB 04C6 9710 B89B CA57 AD7C.
Rakto fingerprint patikrinimas, pasirašymas, pasitikėjimo nustatymas į didžiausią.
gpg --edit-key do-not-reply gpg (GnuPG) 1.4.18; Copyright (C) 2014 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pub 2048R/CA57AD7C created: 2004-12-06 expires: never usage: SC trust: unknown validity: unknown [ unknown] (1). PGP Global Directory Verification Key [ unknown] (2) DNR KS1 <do-not-reply@keyserver1.pgp.com> [ unknown] (3) DNR-KS2 <do-not-reply@keyserver2.pgp.com> [ unknown] (4) [jpeg image of size 3400] gpg> fpr pub 2048R/CA57AD7C 2004-12-06 PGP Global Directory Verification Key Primary key fingerprint: 50BB 6FFC 9719 DFD2 BEBB 04C6 9710 B89B CA57 AD7C gpg> sign Really sign all user IDs? (y/N) y pub 2048R/CA57AD7C created: 2004-12-06 expires: never usage: SC trust: unknown validity: unknown Primary key fingerprint: 50BB 6FFC 9719 DFD2 BEBB 04C6 9710 B89B CA57 AD7C PGP Global Directory Verification Key DNR KS1 <do-not-reply@keyserver1.pgp.com> DNR-KS2 <do-not-reply@keyserver2.pgp.com> [jpeg image of size 3400] Are you sure that you want to sign this key with your key "Vardenis Pavardenis <vardenis.pavardenis@servas.lt>" (D485B76) Really sign? (y/N) y You need a passphrase to unlock the secret key for user: "Vardenis Pavardenis <vardenis.pavardenis@servas.lt>" 4096-bit RSA key, ID E31828C0, created 2015-05-28 gpg> trust pub 2048R/CA57AD7C created: 2004-12-06 expires: never usage: SC trust: unknown validity: unknown [ unknown] (1). PGP Global Directory Verification Key [ unknown] (2) DNR KS1 <do-not-reply@keyserver1.pgp.com> [ unknown] (3) DNR-KS2 <do-not-reply@keyserver2.pgp.com> [ unknown] (4) [jpeg image of size 3400] 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 Your decision? 5 Do you really want to set this key to ultimate trust? (y/N) y pub 2048R/CA57AD7C created: 2004-12-06 expires: never usage: SC trust: ultimate validity: unknown [ unknown] (1). PGP Global Directory Verification Key [ unknown] (2) DNR KS1 <do-not-reply@keyserver1.pgp.com> [ unknown] (3) DNR-KS2 <do-not-reply@keyserver2.pgp.com> [ unknown] (4) [jpeg image of size 3400] Please note that the shown key validity is not necessarily correct unless you restart the program. gpg> save gpg --send-key CA57AD7C
Kaina
Kaina už šią paslaugą – jūsų laikas sukuriant raktus, sukonfigūruojant pašto programų pluginus, paeksperimentuojant koduojant.
Tai tiek, kiek vertinate savo keliasdešimt minučių / kelias valandas savo laiko. Serverius kažkas išlaiko, sąskaitų nebus.
Windows OS ir OS X naudotojams
gpg4win tai ko reikia ir dar daugiau. Instaliavę šią programą, command prompt`e galite naudotis visomis aprašytomis komandomis. Arba naudokitės grafine Kleopatrą raktų tvarkymo sąsaja.
Apple produktams yra GPG suite ir GnuPG for OS X.
Skirtumai tarp institucijų išduodamo elektroninio parašo ir GnuPG
Pagrindinis ir esminis GnuPG elektroninio parašo trūkumas: nepopuliarumas institucijų nepripažinimas (?).
PAPILDYMAS: daugiau skirtumų rasite kitame įraše.
Tips & Tricks
Geriausia praktika – įvairūs patarimai nuo saugumo padininimo iki socialinio aspektų, kaip raktų priežiūra.
gpg komandų sąrašas – visos galimos komandos. Naudojantiems ne grafinius gpg įrankius, verta peržiūrėti ir įsisavinti trumpinius – mažiau rašyti. Žemiau pateikta vienas ir tas pats ilgomis komandomis ir trumpomis:
gpg --armor --detach-sig dokumentas.doc
gpg -a -b dokumentas.doc
Raktus ir kitą info galite serveriuose. Paieškos laukelyje ieškant pagal Key ID, prieš raktą ID prirašykite 0x , pvz: 0xE31828C0.
Rakto info keitimui vietoje rakto ID galima naudoti dalinį pašto adresą:
gpg --edit-key vardenis.pavardenis
Gaminam raktus
Kramtantys English, gali skaityti originalų straipsnį. Skirtumas bus tarp debian ir arch, tiksliau tarp gpg 1 ir gpg 2.
Offline mašina
Būsto raktus saugot, telefoną saugot, piniginė irgi dėmesio nestinga, tad ir kompuose pakelti paranojos slinkiklio lygį reikia aukščiau 0. Pagrindinio master key laikymas darbiniame kompiuteryje yra bloga praktika – labai nesaugu. Geriausias variantas – master key laikyti kažkur saugioje tamsioje vietoje, jį naudoti tik koreguojant savo subraktus arba pasirašant kitų raktus, o kasdienai atskiri subkeys dokumentų / susirašinėjimų pasirašymui, kodavimui ar autentifikacijai.
Neturintiems laisvo kompo, offline mašiną nusipirkite už truputį savo laiko – ją puikiai atstos virtualkė. Susimeskit į virtualkę tą patį debian, archą ar kitą distrą, neduokit internetų ir turėsit offline mašiną 🙂
Originaliame straipsnyje pasirinkta debian su gnome desktopu, o gnome keyringas su Yubico NEO korta (arba bet kokia kita, palaikančia opengpg) nelabai draugauja. Padės internetuose straipsnis kaip gnome keyringą pakeisti gpg agentu.
Instrukcija rašyta naudojant arch 64 bitų, gpg 2.1.6. PASTABA: cutting edge distroje arche neveikia toggle komanda tvarkant raktus. Galimas workaround`as – downgradinti gpg.
Sukuriame namų aplanke katalogą raktų tvarkymui:
export GNUPGHOME=~/gnupghome mkdir $GNUPGHOME chmod 700 $GNUPGHOME cd $GNUPGHOME mkdir backup
export GNUPGHOME=~/gnupghome komandą reiks įvykdyti kiekvieną kartą perkrovus OS. Defaultinis katalogas kažkur kitur sistemoje yra, kas mums visai nerūpi, nes mes viską asmeninio laikome namuose žinomoje ir įprastoje vietoje.
Blogerių susitikime pas merą Nerius Jasinavičius sakė, kad GPG galima nulaužti. Išmanantys irba besidomintys parenka šiai dienai bent jau teoriškai nepažeidžiumus algoritmus ir chiper`s, nenaudoja defaultinių pažeidžiamų. Tam tiuninguojam gnupg.
Kopijuojam po vieną eilutę, po paskutinės Enter ir Ctrl+C:
cat > $GNUPGHOME/gpg.conf default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAMELLIA256 CAMELLIA192 CAMELLIA128 TWOFISH cert-digest-algo SHA512 use-agent lock-never
Generuojam master key
Darom tik pasirašymo raktą, o kodavimui, autentifikavimui bus subkeys.
Skirtumai nuo originalaus straipsnio:
Kompas galingas, tad nustatom paranojos lygį į maksimalų, ir naudojam 4096 bitų dydžio raktą. Tačiau pakanka ir mažesnio, turėtų būti kažkas tarp 2048 ir 4096.
Pagal gerąją gnupg praktiką, rekomenduojama nustatyti riboto amžiaus raktus – ne ilgiau 2 metams. Tipo besinaudojantys gpg galės pasižiūrėti jūsų gyvumą – atnaujinate ar ne. Vėliau galiojimą pratęsite nesunkiai.
Generuojant raktą, kompas rinks atsitiktinius baitus. Jei ilgai niekas nevyksta, darykite įvairius veiksmu su kompu: daužykite trankykite kopijuokite piratinius fimus į kitą katalogą, paleiskite mėgstamą muziką, atidarykite sunkiasvorią nelegalią moterų gražinimo programą potošop, darykite daug skirtingų veiksmų. Kai užsimanys slaptažodžio, sukurkite jį. Tai bus jūsų pagrindinio rakto slaptažodis. Pagrindinis raktas bus naudojamas retai, slaptažodį sugalvokite ilgą, su skaičiais, didžiosiomis ir mažosiomis raidėmis.
Bold`u parašyta komandos, visa kita output`as.
gpg2 --gen-key gpg (GnuPG) 2.1.6; Copyright (C) 2015 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: keybox '/home/vardenis/gnupghome/pubring.kbx' created Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 4 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 2y Key expires at Thu 13 Jul 2017 10:42:31 PM EEST Is this correct? (y/N) y GnuPG needs to construct a user ID to identify your key. Real name: Vardenis Pavardenis Email address: pastas@servas.lt Comment: You selected this USER-ID: "Vardenis Pavardenis <pastas@servas.lt>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. gpg: /home/vardenis/gnupghome/trustdb.gpg: trustdb created gpg: key D485B760 marked as ultimately trusted gpg: directory '/home/vardenis/gnupghome/openpgp-revocs.d' created public and secret key created and signed. gpg: checking the trustdb 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: next trustdb check due at 2017-07-13 Note that this key cannot be used for encryption. You may want to use the command "--edit-key" to generate a subkey for this purpose. pub rsa4096/D485B760 2015-07-14 [expires: 2017-07-13] Key fingerprint = DD22 1BCA 3100 9EAD 13A8 0307 1C00 2D2D D485 B760 uid [ultimate] Vardenis Pavardenis <pastas@servas.lt>
Turim naują master key D485B760. Jūsų atveju nepamirštam vykdant komandas pakeisti į jums sugeneruotą.
Nuotraukos pridėjimą į raktą praleisiu – norintys parodyti save, konsultuokitės su originaliu straipsniu. Kaip ir kito email`o pridėjimą. Šituos dalykus galima vėliau susitvarkyti.
Sukuriam atšaukimo (revocation) sertifikatą. Jis reikaingas, jei jūsų privatų raktą nutekino , pavogė, pametėt ar tiesiog nenorite daugiau šito rakto naudoti.
gpg --output $GNUPGHOME/revocation-certificate.txt --gen-revoke D485B760 sec rsa4096/D485B760 2015-07-14 Vardenis Pavardenis <pastas@servas.lt> Create a revocation certificate for this key? (y/N) y Please select the reason for the revocation: 0 = No reason specified 1 = Key has been compromised 2 = Key is superseded 3 = Key is no longer used Q = Cancel (Probably you want to select 1 here) Your decision? 1 Enter an optional description; end it with an empty line: > Nupyzdino rakta, naikinu galiojima > Reason for revocation: Key is compromised Nupyzdino rakta, naikinu galiojima Is this okay? (y/N) y ASCII armored output forced. Revocation certificate created. Please move it to a medium which you can hide away; if Mallory gets access to this certificate he can use it to make your key unusable. It is smart to print this certificate and store it away, just in case your media become unreadable. But have some caution: The print system of your machine might store the data and make it available to others!
Failą revocation-certificate.txt reikia saugoti ne mažiau, nei pagrindinį raktą. Kitaip kas nors gali tiesiog panaikinti jus jūsų rakto galiojimą.
Pagrindinio rakto kopija
Ir ateityje bus daug kopijų, tskant dėl viso pikto pasidarom galimybę GPG keliauti laiku:
gpg -a --export-secret-keys D485B760 > $GNUPGHOME/masterkey.txt cp -a $GNUPGHOME $GNUPGHOME/backup/backup-masterkey
Sukuriam subkey
VIso jų bus 3: kodavimui, pasirašymui, autentifikavimui.
Naudojant YubikeyNeo, subraktų dydį rinkitės 2048 bitų raktą. Nebent naujesnės versijos palaikytų ilgesnius raktus. Arba jei nenaudosite smartcard`ų, galite nustatyti paranojos lygį daugiau nei 2048.
Reikės įvesti kelis kartus slaptažodį. 3 bus nauji subraktams, sugalvokite ką nors sudėtingiau už „123“. Ir reiks atrakinti pagrindinį raktą slaptažodžiu, kurį sugalvojote pagrindinio rakto kūrimo metu. Nepamiršote dar? 🙂
gpg --expert --edit-key D485B760 gpg (GnuPG) 2.1.6; Copyright (C) 2015 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. pub rsa4096/D485B760 created: 2015-07-14 expires: 2017-07-13 usage: SC trust: ultimate validity: ultimate [ultimate] (1). Vardenis Pavardenis <pastas@servas.lt> gpg> addkey Please select what kind of key you want: (3) DSA (sign only) (4) RSA (sign only) (5) Elgamal (encrypt only) (6) RSA (encrypt only) (7) DSA (set your own capabilities) (8) RSA (set your own capabilities) (10) ECC (sign only) (11) ECC (set your own capabilities) (12) ECC (encrypt only) (13) Existing key Your selection? 4 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 2048 Requested keysize is 2048 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 2y Key expires at Sat 15 Jul 2017 10:10:48 PM EEST Is this correct? (y/N) y Really create? (y/N) y We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. pub rsa4096/D485B760 created: 2015-07-14 expires: 2017-07-13 usage: SC trust: ultimate validity: ultimate sub rsa2048/10F4B59D created: 2015-07-16 expires: 2017-07-15 usage: S [ultimate] (1). Vardenis Pavardenis <pastas@servas.lt> gpg> addkey Please select what kind of key you want: (3) DSA (sign only) (4) RSA (sign only) (5) Elgamal (encrypt only) (6) RSA (encrypt only) (7) DSA (set your own capabilities) (8) RSA (set your own capabilities) (10) ECC (sign only) (11) EaddCC (set your own capabilities) (12) ECC (encrypt only) (13) Existing key Your selection? 6 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 2048 Requested keysize is 2048 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 2y Key expires at Sat 15 Jul 2017 10:19:41 PM EEST Is this correct? (y/N) y Really create? (y/N) y We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. pub rsa4096/D485B760 created: 2015-07-14 expires: 2017-07-13 usage: SC trust: ultimate validity: ultimate sub rsa1024/10F4B59D created: 2015-07-16 expires: 2017-07-15 usage: S sub rsa2048/A4F78DFB created: 2015-07-16 expires: 2017-07-15 usage: E [ultimate] (1). Vardenis Pavardenis <pastas@servas.lt> gpg> addkey Please select what kind of key you want: (3) DSA (sign only) (4) RSA (sign only) (5) Elgamal (encrypt only) (6) RSA (encrypt only) (7) DSA (set your own capabilities) (8) RSA (set your own capabilities) (10) ECC (sign only) (11) ECC (set your own capabilities) (12) ECC (encrypt only) (13) Existing key Your selection? 8 Possible actions for a RSA key: Sign Encrypt Authenticate Current allowed actions: Sign Encrypt (S) Toggle the sign capability (E) Toggle the encrypt capability (A) Toggle the authenticate capability (Q) Finished Your selection? s Possible actions for a RSA key: Sign Encrypt Authenticate Current allowed actions: Encrypt (S) Toggle the sign capability (E) Toggle the encrypt capability (A) Toggle the authenticate capability (Q) Finished Your selection? e Possible actions for a RSA key: Sign Encrypt Authenticate Current allowed actions: (S) Toggle the sign capability (E) Toggle the encrypt capability (A) Toggle the authenticate capability (Q) Finished Your selection? a Possible actions for a RSA key: Sign Encrypt Authenticate Current allowed actions: Authenticate (S) Toggle the sign capability (E) Toggle the encrypt capability (A) Toggle the authenticate capability (Q) Finished Your selection? qsave RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 2048 Requested keysize is 2048 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 2y Key expires at Sat 15 Jul 2017 10:21:13 PM EEST Is this correct? (y/N) y Really create? (y/N) y We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. pub rsa4096/D485B760 created: 2015-07-14 expires: 2017-07-13 usage: SC trust: ultimate validity: ultimate sub rsa2048/10F4B59D created: 2015-07-16 expires: 2017-07-15 usage: S sub rsa2048/A4F78DFB created: 2015-07-16 expires: 2017-07-15 usage: E sub rsa2048/6E470D14 created: 2015-07-16 expires: 2017-07-15 usage: A [ultimate] (1). Vardenis Pavardenis <pastas@servas.lt> gpg> save
Žiūrim ką turim:
gpg --list-keys /home/vardenis/gnupghome/pubring.kbx ----------------------------------- pub rsa4096/D485B760 2015-07-14 [expires: 2017-07-13] uid [ultimate] Vardenis Pavardenis <pastas@servas.lt> sub rsa2048/10F4B59D 2015-07-16 [expires: 2017-07-15] sub rsa2048/A4F78DFB 2015-07-16 [expires: 2017-07-15] sub rsa2048/6E470D14 2015-07-16 [expires: 2017-07-15] gpg --list-secret-keys /home/vardenis/gnupghome/pubring.kbx ----------------------------------- sec rsa4096/D485B760 2015-07-14 [expires: 2017-07-13] uid [ultimate] Vardenis Pavardenis <pastas@servas.lt> ssb rsa2048/10F4B59D 2015-07-16 [expires: 2017-07-15] ssb rsa2048/A4F78DFB 2015-07-16 [expires: 2017-07-15] ssb rsa2048/6E470D14 2015-07-16 [expires: 2017-07-15]
sec ir ssb reiškia, kad pagrindinis ir subraktai yra pasiekiami.
Eksportuojam juos ir padarom dar vieną atsarginę kopiją:
gpg -a --export-secret-keys D485B760 > $GNUPGHOME/mastersubkeys.txt gpg -a --export-secret-subkeys D485B760 > $GNUPGHOME/subkeys.txt cp -a $GNUPGHOME $GNUPGHOME/backup/backup-mastersubkeys
Perkeliam public master key ir subkeys į darbinę online mašiną
Turintys Yubico Neo kortą (ar kitą smartcardą, palaikantį openpgp, toliau skaityti „Perkeliam raktus į NEO“.
cd $GNUPGHOME gpg --armor --export pastas@servas.lt > publickey.txt
Perkelti reikia viešą raktą public_key.txt ir privačius subraktus – failas subkeys.txt. Iš offline mašinos galite perkelti naudodami USB raktą, jei dirbate virtualkėje, galima sumažinti paranojos lygį ir įjungti bendrus katalogus su host mašina, arba leisti virtualkei naudoti bendrą clipboard.
Visa kita lieka offline kompe, kuri įjungiama tik norint pasirašyti kitų žmonių raktus, koreguoti savo raktų info, ir pan.
Darbiniame online kompe galite taip pat galite nustatyti raktų saugojimo vietą įvykdę komandą export (žr. straipsnio pradžioje). Arch distribucijoje ji yra namų aplanko kataloge .gnupg. Pilnas kelias ~/.gnupg Tačiau pakeitę raktų vietą į kitą, nepamirškite kiekvieną kartą perkrovus kompiuterį, nustatyti šią vietą iš naujo. Arba padarykite automatinį gpg raktų vietos nustatymą.
Online mašinoje importuojam public raktą ir subraktus:
Nukopijuojame du failus publickey.txt ir subkeys.txt į gpg katalogą (defaultinį ~/.gnupg ar jūsų nustatytą).
cd $GNUPGHOME gpg --import publickey.txt gpg --import subkeys.txt
Nustatome pilną pasitikėjimą raktu:
gpg --edit-key D485B760 gpg (GnuPG) 2.1.6; Copyright (C) 2015 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. pub rsa4096/D485B760 created: 2015-07-14 expires: 2017-07-13 usage: SC trust: unknown validity: unknown sub rsa2048/10F4B59D created: 2015-07-16 expires: 2017-07-15 usage: S sub rsa2048/A4F78DFB created: 2015-07-16 expires: 2017-07-15 usage: E sub rsa2048/6E470D14 created: 2015-07-16 expires: 2017-07-15 usage: A [ unknown] (1). Vardenis Pavardenis <pastas@servas.lt> gpg> trust pub rsa4096/D485B760 created: 2015-07-14 expires: 2017-07-13 usage: SC trust: unknown validity: unknown sub rsa2048/10F4B59D created: 2015-07-16 expires: 2017-07-15 usage: S sub rsa2048/A4F78DFB created: 2015-07-16 expires: 2017-07-15 usage: E sub rsa2048/6E470D14 created: 2015-07-16 expires: 2017-07-15 usage: A [ unknown] (1). Vardenis Pavardenis <pastas@servas.lt> 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 Your decision? 5 Do you really want to set this key to ultimate trust? (y/N) y pub rsa4096/D485B760 created: 2015-07-14 expires: 2017-07-13 usage: SC trust: ultimate validity: unknown sub rsa1024/10F4B59D created: 2015-07-16 expires: 2017-07-15 usage: S sub rsa1024/A4F78DFB created: 2015-07-16 expires: 2017-07-15 usage: E sub rsa1024/6E470D14 created: 2015-07-16 expires: 2017-07-15 usage: A [ unknown] (1). Vardenis Pavardenis <pastas@servas.lt> Please note that the shown key validity is not necessarily correct unless you restart the program. gpg> quit
Pasiržiūrim slaptus raktus:
gpg --list-secret-keys /home/vardenis/gnupghome/pubring.kbx ----------------------------------- sec# rsa4096/D485B760 2015-07-14 [expires: 2017-07-13] uid [ultimate] Vardenis Pavardenis <pastas@servas.lt> ssb rsa1024/10F4B59D 2015-07-16 [expires: 2017-07-15] ssb rsa1024/A4F78DFB 2015-07-16 [expires: 2017-07-15] ssb rsa1024/6E470D14 2015-07-16 [expires: 2017-07-15]
Prie pagrindinio rakto sec ženklas # reiškia, kad čia nėra pagrindio privataus rakto. Jis liko offline mašinoje. Reiktų saugiai laikyti offline mašiną, ar virtualkę apsaugoti įmetus į kokį truecrypt koduotą konteinerį, ar pasidaryti apsaugotą stipriu slaptažodžiu archyvą gnupghome ir visų backup`ų.
Perkeliam raktus į NEO
Pirmiausiai paruošiam offline kompą smartcardams. Debian atveju aprašyta originaliame straipsnyje, čia sutvarkysime arch`ą.
Arch wiki sako, kad reikia suinstalinti ir paleisti pcsclite ir libusb-compat, taip pat startuoti reikia pcscd.service
:
pacman -S pcsclite libusb-compat pcsc-tools
systemctl enable pcscd.service
systemctl start pcscd.service
Po šito negalėjau pasiekti smart card kaip reguliarus useris, tad dar suinstalinau iš AUR šiuos:
yubikey-neo-manager-git (manau šito vieno pakaktų, jei ne, likusius instaliuoti reikia):
yubico-c , yubico-c-client, yubikey-personalization-git
Paruošiam YubikeyNeo:
Reikalinga įjungti OTP/CCID:
ykpersonalize -m82
Keičiam defaultinius user PIN 123456 ir admin PIN 12345678 į savo. Jei naujasis PIN netiks, bandykite ilgesnį – bent jau 6 skaitmenų.
ATSARGIAI su admin PIN – suvedus 3 kartus neteisingai, išmesit keliasdešimt dolerių! Kortelė užblokuota bus negrįžtamai. User pin suklydus galima atblokuoti žinant admino pin.
Changing the user and admin pin on the NEO
Use of the gpg key stored on the NEO requires you to enter a pin code (default is normally 123456). Getting the pin code wrong 3 times locks the user pin. The default admin pin is normally 12345678. Getting the admin pin code wrong 3 times will lock the card and cannot be reset. Make sure you remember these pin codes!
https://JusuURL/public.txt – jei įkėlėt į internetus savo public key, galite nurodyti tikslų URL. Arba vėliau pridėsite.
gpg --card-edit Application ID ...: D2760001240102000060000000420000 Version ..........: 2.0 Manufacturer .....: unknown Serial number ....: 00000042 Name of cardholder: [not set] Language prefs ...: [not set] Sex ..............: unspecified URL of public key : [not set] Login data .......: [not set] Signature PIN ....: forced Key attributes ...: 2048R 2048R 2048R Max. PIN lengths .: 127 127 127 PIN retry counter : 3 3 3 Signature counter : 0 Signature key ....: [none] Encryption key....: [none] Authentication key: [none] General key info..: [none] gpg/card> admin Admin commands are allowed gpg/card> passwd gpg: OpenPGP card no. D2760001240102000060000000420000 detected 1 - change PIN 2 - unblock PIN 3 - change Admin PIN 4 - set the Reset Code Q - quit Your selection? 3 PIN changed. 1 - change PIN 2 - unblock PIN 3 - change Admin PIN 4 - set the Reset Code Q - quit Your selection? 1 PIN changed. 1 - change PIN 2 - unblock PIN 3 - change Admin PIN 4 - set the Reset Code Q - quit Your selection? q gpg/card> name Cardholder's surname: Pavardenis Cardholder's given name: Vardenis gpg/card> lang Language preferences: en gpg/card> url URL to retrieve public key: https://JusuURL/public.txt gpg/card> sex Sex ((M)ale, (F)emale or space): m gpg/card> login Login data (account name): varpav (login i ka nors useris) gpg/card> Application ID ...: D2760001240102000060000000420000 Version ..........: 2.0 Manufacturer .....: unknown Serial number ....: 00000042 Name of cardholder: Vardenis Pavardenis Language prefs ...: sv Sex ..............: male URL of public key : https://JusuURL/public.txt Login data .......: varpav Signature PIN ....: forced Key attributes ...: 2048R 2048R 2048R Max. PIN lengths .: 127 127 127 PIN retry counter : 3 3 3 Signature counter : 0 Signature key ....: [none] Encryption key....: [none] Authentication key: [none] General key info..: [none] gpg/card> quit
Keliam raktus. Pvz panaudotas iš originalaus straipsnio, esmė ta pati:
gpg --edit-key D485B760 gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. pub 3744R/1C5C4717 created: 2014-06-18 expires: 2014-09-26 usage: SC trust: ultimate validity: ultimate sub 2048R/72D5245B created: 2014-06-18 expires: 2014-09-26 usage: S sub 2048R/A11F46D2 created: 2014-06-18 expires: 2014-09-26 usage: E sub 2048R/D6987A02 created: 2014-06-18 expires: 2014-09-26 usage: A [ultimate] (1). Simon Josefsson <simon@josefsson.org> [ultimate] (2) [jpeg image of size 6048] [ultimate] (3) Simon Josefsson <simon@yubico.com> gpg> toggle sec 3744R/1C5C4717 created: 2014-06-18 expires: 2014-09-26 ssb 2048R/72D5245B created: 2014-06-18 expires: never ssb 2048R/A11F46D2 created: 2014-06-18 expires: never ssb 2048R/D6987A02 created: 2014-06-18 expires: never (1) Simon Josefsson <simon@josefsson.org> (2) [jpeg image of size 6048] (3) Simon Josefsson <simon@yubico.com> gpg> key 1 sec 3744R/1C5C4717 created: 2014-06-18 expires: 2014-09-26 ssb* 2048R/72D5245B created: 2014-06-18 expires: never ssb 2048R/A11F46D2 created: 2014-06-18 expires: never ssb 2048R/D6987A02 created: 2014-06-18 expires: never (1) Simon Josefsson <simon@josefsson.org> (2) [jpeg image of size 6048] (3) Simon Josefsson <simon@yubico.com> gpg> keytocard Signature key ....: [none] Encryption key....: [none] Authentication key: [none] Please select where to store the key: (1) Signature key (3) Authentication key Your selection? 1 You need a passphrase to unlock the secret key for user: "Simon Josefsson <simon@josefsson.org>" 2048-bit RSA key, ID 72D5245B, created 2014-06-18 sec 3744R/1C5C4717 created: 2014-06-18 expires: 2014-09-26 ssb* 2048R/72D5245B created: 2014-06-18 expires: never card-no: 0060 00000042 ssb 2048R/A11F46D2 created: 2014-06-18 expires: never ssb 2048R/D6987A02 created: 2014-06-18 expires: never (1) Simon Josefsson <simon@josefsson.org> (2) [jpeg image of size 6048] (3) Simon Josefsson <simon@yubico.com> gpg> key 1 sec 3744R/1C5C4717 created: 2014-06-18 expires: 2014-09-26 ssb 2048R/72D5245B created: 2014-06-18 expires: never card-no: 0060 00000042 ssb 2048R/A11F46D2 created: 2014-06-18 expires: never ssb 2048R/D6987A02 created: 2014-06-18 expires: never (1) Simon Josefsson <simon@josefsson.org> (2) [jpeg image of size 6048] (3) Simon Josefsson <simon@yubico.com> gpg> key 2 sec 3744R/1C5C4717 created: 2014-06-18 expires: 2014-09-26 ssb 2048R/72D5245B created: 2014-06-18 expires: never card-no: 0060 00000042 ssb* 2048R/A11F46D2 created: 2014-06-18 expires: never ssb 2048R/D6987A02 created: 2014-06-18 expires: never (1) Simon Josefsson <simon@josefsson.org> (2) [jpeg image of size 6048] (3) Simon Josefsson <simon@yubico.com> gpg> keytocard Signature key ....: EF34 D1F7 95C0 3392 E52A 54FE DFF1 6372 72D5 245B Encryption key....: [none] Authentication key: [none] Please select where to store the key: (2) Encryption key Your selection? 2 You need a passphrase to unlock the secret key for user: "Simon Josefsson <simon@josefsson.org>" 2048-bit RSA key, ID A11F46D2, created 2014-06-18 sec 3744R/1C5C4717 created: 2014-06-18 expires: 2014-09-26 ssb 2048R/72D5245B created: 2014-06-18 expires: never card-no: 0060 00000042 ssb* 2048R/A11F46D2 created: 2014-06-18 expires: never card-no: 0060 00000042 ssb 2048R/D6987A02 created: 2014-06-18 expires: never (1) Simon Josefsson <simon@josefsson.org> (2) [jpeg image of size 6048] (3) Simon Josefsson <simon@yubico.com> gpg> key 2 sec 3744R/1C5C4717 created: 2014-06-18 expires: 2014-09-26 ssb 2048R/72D5245B created: 2014-06-18 expires: never card-no: 0060 00000042 ssb 2048R/A11F46D2 created: 2014-06-18 expires: never card-no: 0060 00000042 ssb 2048R/D6987A02 created: 2014-06-18 expires: never (1) Simon Josefsson <simon@josefsson.org> (2) [jpeg image of size 6048] (3) Simon Josefsson <simon@yubico.com> gpg> key 3 sec 3744R/1C5C4717 created: 2014-06-18 expires: 2014-09-26 ssb 2048R/72D5245B created: 2014-06-18 expires: never card-no: 0060 00000042 ssb 2048R/A11F46D2 created: 2014-06-18 expires: never card-no: 0060 00000042 ssb* 2048R/D6987A02 created: 2014-06-18 expires: never (1) Simon Josefsson <simon@josefsson.org> (2) [jpeg image of size 6048] (3) Simon Josefsson <simon@yubico.com> gpg> keytocard Signature key ....: EF34 D1F7 95C0 3392 E52A 54FE DFF1 6372 72D5 245B Encryption key....: E24D 5135 C2FC 905C 8995 ACD8 EC96 9E77 A11F 46D2 Authentication key: [none] Please select where to store the key: (3) Authentication key Your selection? 3 You need a passphrase to unlock the secret key for user: "Simon Josefsson <simon@josefsson.org>" 2048-bit RSA key, ID D6987A02, created 2014-06-18 sec 3744R/1C5C4717 created: 2014-06-18 expires: 2014-09-26 ssb 2048R/72D5245B created: 2014-06-18 expires: never card-no: 0060 00000042 ssb 2048R/A11F46D2 created: 2014-06-18 expires: never card-no: 0060 00000042 ssb* 2048R/D6987A02 created: 2014-06-18 expires: never card-no: 0060 00000042 (1) Simon Josefsson <simon@josefsson.org> (2) [jpeg image of size 6048] (3) Simon Josefsson <simon@yubico.com> gpg> save
Pasižiūrėjus slaptus raktus, matome ssb> ženklą – tai slaptų raktų stub`s (galai?) yra smart card`e.
gpg --list-secret-keys /home/vardenis/gnupghome/secring.gpg -------------------------------------- sec 3744R/D485B760 2014-06-18 [expires: 2014-09-26] uid Simon Josefsson <simon@josefsson.org> uid [jpeg image of size 6048] uid Simon Josefsson <simon@yubico.com> ssb> 2048R/72D5245B 2014-06-18 ssb> 2048R/A11F46D2 2014-06-18 ssb> 2048R/D6987A02 2014-06-18
Dar vienas backup:
gpg -a --export-secret-keys D485B760 > $GNUPGHOME/masterstubs.txt gpg -a --export-secret-subkeys D485B760 > $GNUPGHOME/subkeysstubs.txt gpg -a --export D485B760 > $GNUPGHOME/publickey.txt cp -a $GNUPGHOME $GNUPGHOME/backup/backup-masterstubs
Perkeliam USB raktu, tinklu, copy/paste principu ar kitaip publickey.txt į darbinę mašiną ir importuojam:
gpg --import < publickey.txt
Prijungiam Neo kortą ir sugeneruojam slaptų raktų stub`us.
gpg --card-status [..]praleista daug output teksto sec# 3744R/1C5C4717 created: 2014-06-18 expires: 2014-09-26 ssb> 2048R/72D5245B created: 2014-06-18 expires: 2014-09-26 card-no: 0060 00000042 ssb> 2048R/A11F46D2 created: 2014-06-18 expires: 2014-09-26 card-no: 0060 00000042 ssb>
Ženklai # ir > reiškia, kad pagrindinio rakto nėra, o subraktai tėra „galai“ smartcarde.
Troubleshoot
gpg –send-key neišsiunčia raktų į serverius. Firewall gali blokuoti gpg portą 11371 TCP. Sprendimai: atverti TCP portą 11371.
Eksportuotus armored ASCII formatu raktus įkopijuoti tiesiogiai per www naršyklę langelyje „Submit a Key„.
Naujausi komentarai