Šifrování pro lamy - instalace GnuPG (GPG) na Windows
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!):
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\
.
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?
[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? ;-)
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...
[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..
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!
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
[6] pokud nemáš privátní klíč, nebo aspoň revocation certificate, tak máš smůlu..
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
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?
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.