Šifrování pro lamy - instalace GnuPG (GPG) na Windows

MyEgo.cz

home foto blogy mywindows.cz kontakt

Šifrování pro lamy - instalace GnuPG (GPG) na Windows

Bezpečnost 30.12.04
GnuPG

Tento třídílný seriál o šifrování (především emailové korespondence) na Windows nebude mít za cíl objasňovat žádnou teorii, o té toho již bylo napsáno dost třeba na novinky.cz (patnácti-dílný seriál), a něco málo napsal i Arthur Dent (úvodní článek).

Zprovoznit šifrování emailů pomocí standardu OpenPGP je na Linuxu mimořádně snadné, protože komponenty jako gpg, gpa či kgpg se instalují standardně v každé distribuci, a email klienti jako je KMail pro KDE či Evolution pro Gnome mají pro gpg standardně postavený GUI interface. Nicméně, na Windows je situace poněkud složitější, zvláště pro lidi, co neumí a nechtějí používat příkazovou řádku, ovšem i zde existují klikací balíčky pro řádkové gpg typu WinPT (správa klíčů), Enigmail (doplněk pro Thunderbird), či podpora pro gpg v programu TheBat!

První díl této série se bude zabývat instalaci GnuPG, což je open-source implementace OpenPGP standardu (plus je známá komerční implementace PGP).

OpenPGP je nejpoužívanější standard pro šifrování emailů na světě.

A proč vlastně šifrovat a podepisovat svoje zprávy?

Poslat email jako radek.hulan@gmail.com může naprosto každý, (Open)PGP podpis ovšem zaručí, že identifikace skutečného odesilatele není zkompromitována. Šifrování zprávy navíc znemožní, technicky, komukoliv neoprávněnému tuto zprávu číst, ať už to je Vaše konkurence, ISP, či další uživatelé internetu. Šifrovat prostě můžete, takže otázka nezní, proč ano, ale proč ne?

Instalace GnuPG

GnuPG si můžete zkompilovat, nejsnáze pomocí projektu CygWin, přímo ze zdrojových kódů, anebo si jej stáhnout v optimalizované variantě pro Windows z nullify.org (kód je kompilován ve Visual C++ .NET 2003 a optimalizován pro Pentium a kompatibilní procesory, tudíž, je rychlejší než standardní build z GnuPG.org; rovněž tento build obsahuje IDEA plugin pro kompatibilitu s ostatními, staršími, systémy).

Stažený soubor GnuPG 1.2.3-nr1.exe spusťte a instalujte do adresáře C:\GnuPG\ (standardní adresář pro tuto instalaci).

Následně Vám doporučuji si stáhnout WinPT tray, zvláště pokud s GnuPG začínáte, což je aplikace, která umožní "klikací" správu a generování klíčů, a to konkrétně soubor winpt-0.7.96-exe.zip. Tento zip soubor rozbalte také do adresáře C:\GnuPG\.

Následně si vytvořte následující soubor gpg.reg, který kliknutím importujete do registrů, a který obsahuje cesty k právě instalovanému GnuPG:

REGEDIT4


[HKEY_LOCAL_MACHINE\Software\GNU]

[HKEY_LOCAL_MACHINE\Software\GNU\GNUPG]

[HKEY_LOCAL_MACHINE\Software\GNU\GNUPG]
"gpgProgram"="C:\\GnuPG\\gpg.exe"

[HKEY_CURRENT_USER\Control Panel\Mingw32]

[HKEY_CURRENT_USER\Control Panel\Mingw32\NLS]

[HKEY_CURRENT_USER\Control Panel\Mingw32\NLS]
"MODir"="C:\\GnuPG\\Locale"

[HKEY_CURRENT_USER\Software\GNU]

[HKEY_CURRENT_USER\Software\GNU\GNUPG]

[HKEY_CURRENT_USER\Software\GNU\GNUPG]
"HomeDir"="C:\\GnuPG"
"gpgProgram"="C:\\GnuPG\\gpg.exe"
"OptFile"="C:\\GnuPG\\gpg.conf"

Následně si spusťte Ovládací panely / Systém / Upřesnit / Proměnné prostředí, a do proměnné PATH doplňte C:\GnuPG\.

Nyní se odhlašte a znovu přihlašte a po zadání gpg --version v příkazové řádce se Vám zobrazí toto:

C:\>gpg --version
gpg (GnuPG) 1.2.3-nr1
Copyright (C) 2003 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Home: C:\GnuPG
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA, ELG
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
Hash: MD5, SHA1, RIPEMD160, TIGER192, SHA256, SHA384, SHA512
Compression: Uncompressed, ZIP, ZLIB

Vytvoření Vašeho privátního a veřejného klíče

Nejdříve je nutné nastavit parametry GnuPG, a to modifikací souboru C:\GnuPG\gpg.conf. V tomto souboru nastavíme základní parametry GnuPG, povolení algoritmu IDEA (používaného v PGP 2.x), a režim kompatibility s v3 podpisy PGP:

keyserver  random.sks.keyserver.penguin.de
keyserver-options auto-key-retrieve include-subkeys
default-recipient-self
default-cert-check-level 3
force-v3-sigs
compress-algo 1
cipher-algo cast5
no-secmem-warning
load-extension Lib\idea.dll

Následně spusťte program gpg --list-keys, který zobrazí existující klíče, a protože žádný zatím nemáte, tak se Vám tímto vytvoří soubor pubring.gpg, s veřejnými klíči.

Vytvoření privátního a veřejného klíče můžete provést dvěma způsoby, buď pomocí aplikace WinPT, kterou spusťte, a v menu Key / Generate vytvořte Váš DSA/ELG klíč, viz ukázka (povinné je jen jméno a email, silně doporučuji zvolit si hodně složitou PassPhrase - heslo pro přístup ke klíči; minimálně 8 znaků, a těžko uhádnutelných, rozhodně nevytvářejte klíč bez PassPhrase!):

GPG gen

Druhou možností je použít řádkový příkaz gpg --gen-key a následně vyplnit odpovědi pár otázek (Vaše jméno, email, nepovinný komentář). Typ klíče ponechte předvolený (DSA/ELG, 1024), ostatní vyplňte dle potřeby.

Příkaz gpg --list-keys Vám následně vypíše něco takovéhoto, kde 41F23855 je id Vašeho nového klíče:

pub  1024D/41F23855 2004-07-16 Radek Hulan <info@hulan.info>
uid                            Radek Hul\xe1\x6e <info@hulan.info>
sub  2048g/2678E8F2 2004-07-16

Následně je vhodné Vaše nové číslo klíče nastavit jako defaultní pro šifrování, a rovněž jako další šifrovací klíč, abyste vůbec mohli šifrované zprávy i Vy dekódovat.

C:\GnuPG\gpg.conf můžete upravit, v mém případě, následovně (změňte si čísla klíčů a komentář, tučné položky):

comment "http://hulan.cz/kontakt/"
display-charset UTF-8
default-key 0x40C15F6341F23855
encrypt-to 0x40C15F6341F23855
keyserver random.sks.keyserver.penguin.de
keyserver-options auto-key-retrieve include-subkeys
pgp8
load-extension c:\gnupg\lib\idea.dll
default-cert-level 3
keyid-format SHORT
no-greeting
no-mdc-warning

Nahrání Vašeho veřejného klíče na server

Pro PGP klíče existuje jejich "centrální registr", pokud někomu pošlete zašifrovanou nebo podepsanou zprávu, a on nemá Váš veřejný klíč, může si jej (často email programem automaticky), stáhnout z tohoto centrálního registru klíčů.

Je tedy více než vhodné Váš veřejný klíč na tento server exportovat.

Pokud používáte WinPT, klikněte na daný klíč, zvolte Export, a klíč se Vám exportuje na zvolený server (postačí jeden server, mají mezi sebou mirror), můžete ale samozřejmě použít i příkazovou řádku:

C:\>gpg --keyserver random.sks.keyserver.penguin.de --send-keys 0x41F23855
gpg: success sending to `random.sks.keyserver.penguin.de' (status=200)

Co musíte ještě vědět?

Nyní máte zprovozněno OpenPGP (v GnuPG implementaci), Váš veřejný klíč si vystavte na webu (viz http://hulan.cz/kontakt/), a Váš soukromý klíč si mimořádně pečlivě uschovejte a nikomu jej nedávejte!

Na Windows je potřeba pamatovat i na nastavení práv k danému adresáři C:\GnuPG\, a také na to, abyste nepracovali na systému jako Administrator. Na Linuxu nepracuje jako root nikdo, na Windows je tato praxe bohužel velice špatnou "samozřejmostí"…

Je také velice vhodné si rovněž vytvořit "revoke certificate". K čemu to je? Pokud zapomenete PassPhrase, nemůžete klíč dále používat, nicméně, tento dále zůstává na veřejných serverech. Jedinou možností, jak jej zrušit, je vystavit si "Revoke certificate", a ten potom nahrát na server, nicméně, k jeho vystavení je potřeba znalost PassPhrase. Je tedy vhodné vystavit si "Revoke certificate" ihned, a to takto:

C:\>gpg --output revoke_my_key.asc --gen-revoke 0x41F23855

sec  1024D/41F23855 2004-07-16   Radek Hulan <info@hulan.info>

Create a revocation certificate for this key? 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)

Tento "Revoke certificate" (soubor revoke_my_key.asc) si potom pečlivě uschovejte, kdokoliv, kdo k němu má přístup, může totiž příkazem gpg --send-keys Váš klíč znevalidnit!

Pokud chcete vědět více o gpg, nápovědu získáte pomocí gpg --help, dokumentace je umístěná v adresáři C:\GnuPG\Doc\.


Komentáře

  1. 1 nonam 30.12.04, 04:12:00
    FB

    hele nějak to nechápu. Když jsem před 5 lety používal PGP na windows, tak to byla taková normální aplikace stáhnutá z webu, byl tam wizard, který řekl co jak má člověk udělat, nainstalovalo si to podporu do outlooku (a ještě do nějakého tehdejšího softu) a jelo se, nic se nemuselo upravovat. Když chtěl člověk šifrovat v něčem, co to nativně nepodporovalo, tak mu seděla v liště aplikačka, vybral text, ctrl+c, kliknul na ikonu a měl ve shránce zašifrovaný text nebo jeho hash. Přináší ten tvůj složitý postup něco navíc?

  2. 2 Radek Hulán 30.12.04, 04:12:04
    FB

    [1] toto je jen framework, kterej je nutnej, aby TheBat nebo Thunderbird mohli PGP používat.. A instalace rozhodně složitá není, GnuPG je aplikace co má 500KB, na rozdíl od PGP, které není zdarma, v plné verzi, a zabere 20MB v paměti..

    Integrace s TheBat a Thunderbird je ale díky Enigmail plně klikací a transparentní, gpg je aplikace, která funguje stejně na Win/Lin/MacOS/Solarisu/FreeBSD, atd... A Outlook to je co? To je ta parodie na email klienta od MSFT? ;-)

  3. 3 CATR 21.01.05, 01:01:18
    FB

    Zajimalo by me, jestli je mozne nejak jednoduse (nejlepe v PHP) nastvait podporu sifrovani i pro webove formulare jako napr. na http://hulan.cz/kontakt/.

    Jak koukam, take nejdete na vlastnim serveru, a proto email zaslany z weboveho formulare k vam putuje jako prosty text. Radeji bych ho prijimal sifrovany...

  4. 4 Radek Hulán 21.01.05, 08:01:12
    FB

    [3] dobrá otázka, šlo by to rozhodně přes externí spuštění GnuPG, nicméně, HTTP POST je vždy plain text, to by pak člověk musel použít HTTPS, a navíc GnuPG..

  5. 5 Jarda 31.01.05, 09:01:59
    FB

    Vas clanek jsem cetl a prisel mi zajimavy.Jiz delsi dobu se potykame s pristupem na server v jedne firme,kde bychom chteli zabranit prihlaseni na administratora hardwarovym DSA klicem.Jsem v teto problematice absolutni laik.Proto se Vas chci zeptat zda je mozne pomoci podobneho programu vytvorit hardwarovy klic (napr. na USB flash disk),bez ktereho by se nedalo prihlasit jako administrator.Server bezi na platforme windows 2003.Kdysi jsem videl podobne fungujici klic na masine s Linuxem.Hledam neco gnu jako popisujete vise.Predem Vam dekuji za odpoved!

  6. 6 hudla 22.07.05, 02:07:49
    FB

    Ahoj. Diky za dobry navod na GPG, ale jelikoz jsem v tomhle :lama: tak se mi podarilo vytvorit si 3 verjne klice a uspesne je umistit na key server. Jeden, ten posledni, jsem uz vedel, ze ho musim revokovat, ze nejde jen tak smazat, ale ty ostatni tam zustali a samozrejme jsem si smazal z disku ty pubringy a secringy...takze ho vlastne revokovat nemuzu. Nevite jak s tim hnout, pripada mi, ze to ted bude prijemce mych emailu docela mast, kdyz na servru uvidi 3 me verjne klice. Diky za rady. hudla@quick.cz

  7. 7 Radek Hulán 22.07.05, 03:07:05
    FB

    [6] pokud nemáš privátní klíč, nebo aspoň revocation certificate, tak máš smůlu..

  8. 8 vojta 12.11.06, 02:11:10
    FB

    Já jsem si omylem vytvořil 2 páry klíčů a oba sem nahrál na server a k tomu starému mám vygenerovaný i nějaký revokační ASC soubor, ale nevím jak to tam nahrát, aby se ten starý klíč označil jako REV :( Když si dám stránku www gpg cz a tam vlozim obsah toho rev.asc tak to nefunguje...Bohuzel z disku sem ten starej klic smazal a jediny co mi zbylo je ten revokacni soubor. Diky za pomoc

  9. 9 sonny 29.12.06, 04:12:59
    FB

    Je niaka sanca dostat kluce z PGP do GnuPG? Problem je totiz vtom ze PGP kluce mam v AES256 a GnuPG nema defaultnu podporu AES koli licencnym podmienkam. Nasiel som na GnuPG kniznicu ktora rozsiruje podporu pre licencne alogorytmy ale ta je len pre linux. Je teda niaka sanca dostat aes kluce do gnupg na windowse?

  10. 10 sonny 29.12.06, 10:12:17
    FB

    Teraz som si vsimol ze je tu podpora aes256, takze by to malo uz teraz ist. Ale pre zmenu mam teraz iny problem. WinPT mi neberie verziu gnupg. Stale mi pise ze potrebujem najmenej verziu 1.1.9x, pritom mam 1.4.6.Skusal som nainstalovat podla navodu, potom gnupg do winpt ale ani to nepomohlo. Este som rucne skopiroval gnupg subory do winpt/gnupg ale ani to nepomohlo.