Jak na GnuPG

Tato stánka není oficiální dokumentací ani manuálovou stránkou, je to jen stručný popis generování klíče a zacházení s ním…

Vygenerování klíče

Klíč pro GnuPG se generuje pomocí příkazu

gpg --gen-key

Po spuštění jsem vybral volbu (1) DSA a ElGamal (implicitní) dále jsem zvolil délku klíče 1024 bajtů (myslím, že bohatě stačí…) Poté se zadá Jméno, email případně nějaká poznámka úplně na konec se zadává heslo 2x za sebou. Nakonec proběhne vygenerování klíčů (private, public). Klíče si vypíšeme příkazem
gpg --list-keys
Přidávání(import) dalších veřejných klíčů (většinou je dostaneme jako textový soubor) se provádí pomocí příkazu
gpg --import file
Mazání klíče:
gpg --delete-key 57548DCD
editace klíče:
gpg --edit-key 57548DCD

Podepisování a ověřování

Podepisování souborů

Na hodně ftp serverech nacházíme kromě vlastního souboru jěště soubor se stejným jménem a příponou .asc, je to podpis. Ověření probíhá pomocí příkazu:

gpg --verify nejakej_soubor-i386.tgz.asc nejakej_soubor-i386.tgz.asc

Podepisování souborů:
gpg -s soubor

vytvoří podepsaný zkomprimovaný soubor s koncovkou .pgp který obsahuje i originální data
gpg --clearsign soubor

vytvoří podepsaný soubor s koncovkou .asc, která obsahuje i originální data a je v kódivání 7 bitové ASCI, lze poslat emailem
gpg -b soubor

vytvoří soubor s příponou .sig, který obsahuje pouze bínární formu podpisu
gpg -b --armor soubor

vytvoří soubor s koncovkou .asc, který obsahuje pouze ASCII podobu podpisu

Podepisování klíčů

Klíče se podepisují pomocí příkazu
gpg --lsign-key identifikator_uzivatele
takze pro podepsání mého (importovaného) klíče je třeba udělat toto:
gpg --lsign-key zdenda@zdenda.com

Šifrování a dešifrování

Šifrování:

gpg -er 0161626E filename
zašifruje soubor veřejným klíčem s ID 0161626E
gpg -esr 0161626E filename
vytvoří soubor šifrovaný veřejným klíčem daného ID a podepsaný vaším vlastním privátním klíčem

Dešifrování:

Pro dešifrování je tento příkaz:

gpg -o vystupni_soubor -d zasiforvany_soubor.gpg

Když se vynechá parametr -o vystupni_soubor, tak se výsledek vypíše na obrazovku.

Podepisování emailů

pine

Pro nainstalování podpory GnuPG do pine je potřeba spustit program(jen jednou!):
pinegpg-install
potom se při odesílání emailu objeví hláška:

Send message (unfiltered)?

pomocí CTRL-p nebo CTRL-n si přepneme na požadovanou akci, toto jsou možnosti:

  • Send message (unfiltered)?
    Odeslání normálního, nepodepsaného a nešifrovaného emailu.
  • Send message (filtered thru "gpg-sign")?
    Odeslání podepsaného emailu.
  • Send message (filtered thru "gpg-encrypt")?
    Odeslání zašifrovaného emailu.
  • Send message (filtered thru "gpg-sign+encrypt")?
    Odeslání zašifrovaného a podepsaného emailu.

Když chceme poslat zašifrovaný email, tak musíme mít pro adresáta naimportovaný jeho veřejný klíč (jinak není pomocí čeho šifrovat…).

mutt

nastavení gpg v muttu je trošku složitější než je to v pine (ale ne o moc 🙂
V první řadě budete potřebovat soubor .gpg.rc, ten si uložíte do svého domácího adresáře (~/.gpg.rc), do svého ~/.muttrc si připíšete řádky:

source ~/.gpg.rc
set fcc_clear
set forward_decrypt
unset pipe_decode
set pgp_ignore_subkeys # On OpenPGP keys only show the main key, not the sub.
unset pgp_autosign # pgp sign every outgoing mail. (send-hook?)
unset pgp_autoencrypt # pgp encrypt every outgoing mail. (send-hook?)
set pgp_create_traditional=ask-no # Use old-style PGP? (don't do it!)
set pgp_replyencrypt # Encrypt replies on encrypted mail
set pgp_replysign # Sign replies on signed mail
set pgp_replysignencrypted # Sign replies on encrypted mail
unset pgp_retainable_sigs # disable retainable signatures.
set pgp_verify_sig=yes # ask me whether I want to check a pgp signature
set pgp_timeout=7200 # forget PGP passphrase after 7200 seconds (=2 hours)
set pgp_strict_enc # allway use QP enc. with PGP.
unset pgp_long_ids # display 64bit PGP key-ids (don't change this!)
set pgp_show_unusable # show unusable PGP keys in menu

## napiste si tam mosto 0161626E id klice kterym chcete podepisovat
set pgp_sign_as=0x0161626E

# %n = number %k = key id %K = key id of the principal key
# %u = user id %a = algorithm %A = algorithm of the princ. key
# %l = length %L = length of the princ. key
# %f = flags %F = flags of the princ. key
# %c = capabilities %C = capabilities of the princ. key
# %t = trust/validity of the key-uid association
set pgp_entry_format="%4n %t%f %[%y/%m/%d] %4l/0x%k %-4a %2c %u"
set pgp_sort_keys=trust

# nesifrovat
send-hook . unset pgp_autoencrypt
# podepsat
send-hook . set pgp_autosign
# prerusit jestli neni subjekt
send-hook . set abort_nosubject=ask-yes

# Now the exceptions:
# Majordomo doesn't care about signatures or subject lines
send-hook Majordomo@ unset pgp_autosign
send-hook Majordomo@ set abort_nosubject=no
# Send encrypted to these people
#send-hook tim@cyberelk\.demon\.co\.uk set pgp_autoencrypt
#send-hook twaugh@redhat.com set pgp_autoencrypt
#send-hook bandregg@redhat\.com set pgp_autoencrypt
# Use the 'twaugh@redhat.com' key for this address
#pgp-hook tim@cyberelk\.demon\.co\.uk 44E96F28


Po napsání emailu múžete v nabídce před odesláním zvolit požadovanou akci gpg, menu se vyvolá stisknutím klávesy p.
Možnosti: (š)ifrovat, (p)odepsat, podepsat (j)ako, (o)bojí, či (n)ic?

V případě, že se zobrazí nezkontrolovaný podpis stiskněte klávesu ESC a pak P (SHIFT-p).
Tohle můžete přidat do ~/.procmailrc, upraví to hlavičku emailu která není úplně korektní.

# Add a "Content-Type: application/pgp" header so Mutt will know the
# mail is encrypted.
:0 fBw
* ^-----BEGIN PGP MESSAGE-----
* !Content-type: multipart
| formail -i "Content-Type: application/pgp; format=text; x-action=encryptsign"

# Add a "Content-Type: application/pgp" header so Mutt will know the
# mail is signed.
:0 fBw
* ^-----BEGIN PGP SIGNED MESSAGE-----
* !Content-type: multipart
| formail -i "Content-Type: application/pgp; format=text; x-action=sign"

Můj .muttrc.

Napsat komentář