Úvod do GPG

28. 9. 1999
Doba čtení: 5 minut

Sdílet

Před několika týdny vyšla verze 1.0 programu GNU Privacy Guard (GPG), který si klade za cíl vytvořit plnohodnotnou alternativu ke komerčnímu šifrovacímu řešení Pretty Good Privacy (PGP). Jelikož ochrana citlivých dat je stále aktuálnější, nebude jistě na škodu menší úvod do používání tohoto programu.

CO JE TO VLASTNĚ GPG?

Pokud budu citovat autory, tak „jde o kompletní volně šiřitelnou náhradu PGP, která neobsahuje patentované algoritmy, takže její použití není nijak omezeno“. Jednoduše řečeno, GPG je program, který umí šifrovat a dešifrovat data, elektronicky podepisovat a podpis zpětně ověřovat. Zároveň je schopen realizovat správu šifrovacích klíčů.


JAKÉ ALGORITMY GPG OBSAHUJE?

V GPG jsou implementovány následující šifrovací a hashovací algoritmy:

  • ElGamal
  • DSA
  • 3DES
  • Blowfish
  • Twofish
  • CAST5
  • MD5
  • SHA-1
  • RIPE-MD-160
  • TIGER

Některé z uvedených algoritmů jsou použity i v PGP, což umožňuje částečnou kompatibilitu obou programů. Jak vidno, ve výčtu chybí RSA, neboť tento algoritmus je patentovaný. Pro GPG existuje i dodatečný modul, který přidává podporu této šifry, ale obávám se, že jeho použití není legální (nechci budit paniku neověřenými informacemi, ale nějak si neumím představit způsob, kterým by bylo možné tuto patentovanou technologii zcela volně šířit).


SPRÁVA KLÍČŮ

Všechny šifrovací operace jsou vždy řízeny nějakým klíčem – ať už jde o šifru symetrickou (šifrování i dešifrování se provádí stejným klíčem) či asymetrickou (jeden klíč slouží k zašifrování, druhý k dešifrování, dále se již budeme zaobírat převážně touto metodou). GPG obsahuje nástroje pro správu databáze těchto klíčů. Pokud chceme GPG používat k šifrování či podepisování dat, budeme potřebovat vlastní dvojici klíčů a tak prvním krokem je vygenerování takového páru. To provedeme pomocí povelu

gpg –gen-key

Následně se GPG zeptá na základní údaje o klíči (například jeho délku nebo případné časové omezení platnosti) a hlavně na tak zvanou Passphrase, tedy tajnou větu či sekvenci, bez jejíž znalosti není možné použít privátní klíč. Po zodpovězení těchto otázek se vygeneruje nová dvojice klíčů.

Je velice pravděpodobné, že budete GPG také používat k ověřování elektronických podpisů. K tomu slouží veřejné klíče těch, kdo elektronický podpis vytvořili a ty musíte nejdříve nějakým způsobem získat. Ať už budete v tomto bodě postupovat jakkoliv, měli byste obdržet veřejný klíč v podobě textového souboru. Zařadit jej do databáze lze pak snadno povelem

gpg –import file

kde file značí soubor s klíčem. Ne vždy je možné získat klíč přímo od dané osoby. Nic není ztraceno, existují tak zvané Key servers, které shromažďují veřejné klíče – a GPG s nimi dokáže pracovat. Pokud budu tedy chtít do své databáze zařadit dejme tomu klíč autora GPG Wernera Kocha, najedu si v prohlížeči adresu wwwkeys.pgp.net a pomocí vyhledávání si zjistím ID jeho klíče – 57548DCD. Pak mám dvě možnosti. Buď si klíč zobrazím, uložím do textového souboru a přidám jej stejně jako ve výše uvedeném případě a nebo jej načtu přímo z key serveru povelem

gpg –keyserver wwwkeys.pgp.net –recv-keys 57548DCD

Seznam všech veřejných klíčů obsažených v uživatelské databázi lze zobrazit povelem

gpg –list-keys

Klíče lze samozřejmě z databáze i mazat:

gpg –delete-key 57548DCD

a případně je i upravovat:

gpg –edit-key 57548DCD

Tím možnosti správy klíčů zdaleka nekončí, ale pro začátek uživatel vystačí s těmito funkcemi. Ti zvídavější se samozřejmě mohou pustit například do studia man stránky programu.


PODEPISOVÁNÍ A OVĚŘOVÁNÍ PODPISŮ

Často se v praxi setkáváme s případy, kdy není nutné používat šifrování, neboť nejde o žádná citlivá data, ale je nutné ověřit pravost dokumentu. Typickým příkladem může být třeba situace, kdy si stáhnete z Internetu program, který by mohl v případě šikovného podvrhu posloužit útočníkovi jako zadní vrátka. Digitální podpis je pro takové účely jako stvořený. Stačí, aby autor svým tajným klíčem soubor podepsal a pak si může každý uživatel pomocí jeho veřejného klíče ověřit autenticitu souboru.
Možná jste si již všimli, že se často na FTP serverech vyskytuje vedle vlastního programu i soubor stejného jména, pouze s koncovkou .asc, případně .sig. A právě tento soubor obsahuje digitální podpis, který ověříme povelem

gpg –verify gnupg-1.0.0–1.i386.rpm.asc gnupg-1.0.0–1.i386.rpm

První soubor obsahuje podpis, druhý je pak ten, který ověřujeme. Pokud soubor obsahuje vlastní data i podpis současně (viz dále), předává se GPG v parametru pouze tento jeden soubor. Může se stát, že GPG nebude mít klíč potřebný k ověření ve své databázi. V takovém případě je třeba jej získat a importovat jednou z výše uvedených metod.

Při podepisování lze postupovat několika způsoby. Primárně bych rozdělil metody podle toho, zda je výsledkem pouze samotný podpis nebo zda je ve výstupu obsažen i originální soubor. První metoda je vhodná třeba pro zmiňované ověřování souborů stažených z Internetu, druhá se hodí zejména na podepisování emailových zpráv.

  • gpg -s soubor
    vytvoří podepsaný soubor s koncovkou .gpg, který obsahuje i originální data, je použita komprese
  • gpg –clearsign soubor
    vytvoří podepsaný soubor s koncovkou .asc, který obsahuje i originální data. Vše, co přidává GPG je v 7bit ASCII, takže lze posílat emailem
  • gpg -b soubor
    vytvoří soubor s koncovkou .sig, který obsahuje pouze binární podobu podpisu bez originálních dat
  • gpg -b –armor soubor
    vytvoří soubor s koncovkou .asc, který obsahuje pouze ASCII podobu podpisu bez originálních dat

bitcoin školení listopad 24

ŠIFROVÁNÍ A DEŠIFROVÁNÍ

Ani na šifrování není třeba hledat žádné složitosti. Jediné, co musíte programu říct je to, pro koho je soubor určen. Při šifrování se pak použije jeho veřejný klíč, který pochopitelně musí být v databázi. Volitelně lze definovat algoritmus, který se při šifrování použije. Protože se šifrování provádí pomocí veřejného klíče, ke kterému může mít přístup kdokoliv, je vhodné současně šifrovat i podepisovat. Následuje několik příkladů:

  • gpg -er 57548DCD soubor
    nejjednodušší postup, zašifruje soubor veřejným klíčem s ID 57548DCD, pokud by se vypustil parametr r a ID klíče, program by se na něj dotázal
  • gpg -esr 57548DCD soubor
    vytvoří soubor šifrovaný veřejným klíčem daného ID a podepsaný vaším vlastním privátním klíčem
  • gpg –cipher-algo TWOFISH -esr 57548DCD soubor
    to samé jako v předchozím případě, ale s explicitně určeným šifrovacím algoritmem TWOFISH. Seznam možných algoritmů získáte pomocí gpg –version

Dešifrování je ještě jednodušší – nepotřebujete vědět vůbec nic o tom, co je uvnitř souboru, jaké algoritmy byly použity ani žádné další údaje. Stačí pouze použít

gpg -o soubor -d soubor.gpg

Samozřejmě, že musíte být vlastníky správného klíče a znát k němu Passphrase. Pakliže byl šifrovaný soubor i podepsán, GPG automaticky podpis ověří. Pokud by nebyl uveden přepínač -o a za ním jméno souboru, vypsal by program dešifrovaná data na obrazovku.


Dnes jsme se rámcově seznámili s možnostmi GPG. Jak vidíte, není na jeho používání nic těžkého. Přesto by jistě mnozí z vás dali přednost grafickému rozhraní před příkazovou řádkou. A právě pro tyto uživatele bude jistě dobrou zprávou, že se v dohledné době ještě k GPG vrátíme a speciálně se zaměříme na GUI nadstavby k tomuto zajímavému programu.

Autor článku