- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah -

LinuxovΘ noviny B°ezen 1998

Pretty Good Privacy

Petr Kolß°, 10.b°ezna 1998

P°esto╛e Internet byl vytvo°en na zakßzku americkΘho ministerstva obrany, pat°ilo zabezpeΦenφ p°epravovan²ch soubor∙, zprßv a hesel proti zneu╛itφ cizφmi osobami k dosti opomφjen²m otßzkßm. Pomocφ klasick²ch protokol∙, jako jsou telnet, FTP, SMTP, POP, HTTP a dal╣φ, jsou informace vΦetn∞ hesel p°epravovßny v∞t╣inou neza╣ifrovan∞ a s velmi omezen²mi mo╛nostmi, jak ov∞°it jejich pravost. P°itom odposlouchßvßnφ provozu v sφtφch je principißln∞ mo╛nΘ a o tom, nakolik je vyu╛φvßno, kolujφ d∞sivΘ fßmy. O mnoho lep╣φ nenφ ani zabezpeΦenφ soubor∙ ulo╛en²ch v poΦφtaΦφch - i kdy╛ vφceu╛ivatelskΘ systΘmy poskytujφ ochranu soubor∙, ve v∞t╣in∞ systΘm∙ vΦetn∞ tΘm∞° v╣ech odr∙d UNIXu mß sprßvce poΦφtaΦe neomezen² p°φstup ke v╣emu.

Se stßle ╣ir╣φm pou╛φvßnφm sφtφ a s komercializacφ Internetu zaΦalo b²t zabezpeΦenφ p°enß╣en²ch i ulo╛en²ch dat nezbytnostφ. Stßle vφce poΦφtaΦ∙ je p°ipojeno k Internetu, kter² je pou╛φvßn k osobnφ i firemnφ korespondenci jako dopln∞k Φi nßhrada telefonu a faxu. Po sφti se p°enß╣ejφ i tak citlivß data jako p°φkazy k platbßm, Φφsla ·Φt∙ a kreditnφch karet.

V roce 1991 byl v USA navr╛en zßkon, podle kterΘho mohou b²t vyrßb∞na pouze takovß ╣ifrovacφ za°φzenφ, kterß umo╛nφ vlßd∞ USA (p°i spln∞nφ podmφnek dan²ch dal╣φmi zßkony) de╣ifrovßnφ zprßv. Zßrove≥ byla zahßjena v²roba Φip∙ Clipper, ve kter²ch jsou zabudovßny "tajnΘ dve°e", kterΘ toto de╣ifrovßnφ umo╛≥ujφ. Ka╛dß zprßva za╣ifrovanß (jinak ·dajn∞ velmi kvalitnφ ╣ifrou) Φipem Clipper toti╛ obsahuje pou╛it² klφΦ. Tento klφΦ je (samoz°ejm∞) za╣ifrovßn klφΦem danΘho Φipu, kter² je ulo╛en rozd∞len² na dv∞ Φßsti u dvou nezßvisl²ch organizacφ. Vlßda USA m∙╛e na zßklad∞ soudnφho rozhodnutφ zφskat komponenty klφΦe konkrΘtnφho Φipu a s jejich pomocφ de╣ifrovat v╣echny zprßvy za╣ifrovanΘ tφmto Φipem. Nßvrh zßkona vyvolal obrovskou kampa≥ proti zasahovßnφ stßtu do soukromφ jednotlivce vedenou pod heslem "jestli╛e se soukromφ postavφ mimo zßkon, pak pouze ti, co stojφ mimo zßkon, budou mφt soukromφ". Jednφm z produkt∙ tΘto kampan∞ bylo vytvo°enφ programu PGP (Pretty Good Privacy, v p°ekladu n∞co jako "dost slu╣nΘ soukromφ"), kter² zp°φstup≥uje silnΘ ╣ifrovßnφ a autentizaci informacφ ka╛dΘmu.

KlasickΘ ╣ifrovßnφ a ╣ifrovßnφ s ve°ejn²m klφΦem

"BezpeΦnost" nejstar╣φch "╣ifer" byla zalo╛ena na tom, ╛e algoritmus ╣ifrovßnφ i de╣ifrovßnφ byl udr╛ovßn v tajnosti. "⌐ifrovßnφ" Φasto spoΦφvalo pouze ve zvlß╣tnφm zp∙sobu zßpisu jednotliv²ch znak∙ Φi slov zprßvy, proto se nejednalo o ╣ifrovßnφ v pravΘm slova smyslu, ale o pouhΘ k≤dovßnφ.

O skuteΦnΘm ╣ifrovßnφ lze mluvit a╛ u postup∙, u nich╛ za╣ifrovan² v²stup zßvisφ nejen na obsahu vstupnφho souboru (naz²vanΘho otev°en² text), ale takΘ na parametru naz²vanΘm klφΦ. Pokud se pro ╣ifrovßnφ i de╣ifrovßnφ pou╛φvß stejn² klφΦ, musφ b²t udr╛ovßn v tajnosti a proto mluvφme o ╣ifrovßnφ s tajn²m klφΦem nebo o symetrickΘm kryptosystΘmu. Nev²hodou tohoto systΘmu je fakt, ╛e tajn² klφΦ musφ mφt odesφlatel i p°φjemce zprßvy.

Dφky tomu, ╛e ╣ifrovan² v²stup zßvisφ na tajnΘm klφΦi, mohou b²t algoritmy ╣ifrovßnφ a de╣ifrovßnφ zve°ejn∞ny. Jejich trvalΘ utajovßnφ je prakticky nemo╛nΘ a pokud jsou skuteΦn∞ kvalitnφ, jejich znalost p°i de╣ifrovßnφ zprßv (pokud se nepoda°ilo zφskat klφΦ nebo pokud nenφ proveditelnΘ vyzkou╣et v╣echny mo╛nΘ klφΦe) p°φli╣ nepom∙╛e. Pokud n∞kterΘ firmy p°esv∞dΦujφ zßkaznφky o tom, ╛e jejich ╣ifra je bezpeΦnß, proto╛e je tajnß (n∞kdy je tento p°φstup naz²vßn "security by obscurity"), b²vß to Φasto zp∙sobeno tφm, ╛e ╣ifra je ve skuteΦnosti velmi slabß a proto musφ b²t tajnß. Kvalitnφ ╣ifra je takovß, kterß je del╣φ dobu znßmß, pou╛φvanß, a p°esto odolßvß pokus∙m o lu╣t∞nφ a zlomenφ.

ProblΘmy s nutnostφ udr╛ovat klφΦ v tajnosti a zßrove≥ zajistit, aby byl k dispozici odesφlateli i p°φjemci zprßv, odstra≥ujφ asymetrickΘ kryptosystΘmy, kterΘ pou╛φvajφ pro ╣ifrovßnφ a de╣ifrovßnφ dvojici r∙zn²ch klφΦ∙. Existence t∞chto metod je zalo╛ena na algoritmech, kterΘ na zßklad∞ jednoho nebo vφce nßhodn²ch vstupnφch parametr∙, je╛ se po v²poΦtu zapomenou, spoΦφtajφ dvojici klφΦ∙. Ov╣em i p°i znalosti algoritmu a jednoho z klφΦ∙ je zji╣t∞nφ druhΘho klφΦe daleko mimo mo╛nosti souΦasnΘ v²poΦetnφ techniky.

Ka╛d² z u╛ivatel∙ asymetrickΘho kryptosystΘmu tak mß dvojici klφΦ∙, z nich╛ jeden (soukrom² klφΦ) udr╛uje v tajnosti a druh² zve°ejnφ. Proto se tento zp∙sob ╣ifrovßnφ takΘ naz²vß ╣ifrovßnφ s ve°ejn²m klφΦem. Dφky tomu, ╛e je mo╛nΘ ╣ifrovat libovoln²m klφΦem z dvojice a de╣ifrovat druh²m, existujφ dva zp∙soby pou╛itφ:

  • Zprßvu za╣ifrovat pou╛itφm cizφho ve°ejnΘho klφΦe. Tφm se zajistφ utajenφ zprßvy, proto╛e ji m∙╛e de╣ifrovat pouze vlastnφk p°φslu╣nΘho soukromΘho klφΦe.
  • Zprßvu ╣ifrovat pou╛itφm vlastnφho soukromΘho klφΦe. Tφm se utajenφ nezajistφ, proto╛e pro de╣ifrovßnφ zprßvy se pou╛φvß klφΦ, kter² je ve°ejn∞ p°φstupn². Dosßhne se v╣ak autentizace - zprßva po de╣ifrovßnφ urΦit²m ve°ejn²m klφΦem dßvß smysl prßv∞ tehdy, kdy╛ ji za╣ifroval vlastnφk odpovφdajφcφho soukromΘho klφΦe. Proto╛e v tomto p°φpad∞ nenφ cφlem utajenφ zprßvy, je mo╛nΘ mφsto za╣ifrovßnφ p°ipojit ke zprßv∞ pouze (soukrom²m klφΦem) za╣ifrovan² kontrolnφ souΦet textu zprßvy, tak zvan² digitßlnφ podpis. Kdokoli m∙╛e spoΦφtat kontrolnφ souΦet zprßvy a porovnat jej s de╣ifrovan²m podpisem. Jestli╛e kontrolnφ souΦet zßvisφ na obsahu zprßvy tak nep°edvφdateln²m zp∙sobem, ╛e nenφ mo╛nΘ zprßvu upravit ani╛ by se souΦet zm∞nil, pak souhlas kontrolnφch souΦt∙ zaruΦuje, ╛e zprßvu skuteΦn∞ podepisoval Φlov∞k, kter² vlastnφ p°φslu╣n² soukrom² klφΦ, a ╛e od tΘ doby nebyla zprßva zm∞n∞na.

S pou╛itφm asymetrickΘho kryptosystΘmu lze p°es nezabezpeΦen² komunikaΦnφ kanßl provßd∞t i dal╣φ zdßnliv∞ nemo╛nΘ v∞ci (viz CHIP 1995/08).

Program PGP

PGP je program pro ╣ifrovßnφ a autentizaci textov²ch i binßrnφch soubor∙. Byl vytvo°en Philipem Zimmermannem v roce 1991. Autorovi vynesl PGP soudnφ °φzenφ a dφky zßkazu v²vozu bezpeΦn²ch ╣ifrovacφch technologiφ z USA je nadßle vyvφjen ve dvou kompatibilnφch °adßch, jednΘ pro USA, druhΘ pro zbytek sv∞ta. Stal se neoficißlnφm standardem pro ╣ifrovßnφ a autentizaci e-po╣tovnφch a newsov²ch zprßv. Je k dispozici ftp://ftp.ifi.uio.no/pub/pgp/ ve zdrojovΘm i binßrnφm tvaru pro v╣echny b∞╛nΘ platformy - MS DOS, OS/2, UNIXy, VMS, Macintosh, Amiga, Atari ST.

Nejnov∞j╣φ verzφ na poΦßtku roku 1998 je PGP 5.5, ov╣em dφky nevyjasn∞n²m otßzkßm kompatibility, licencφ, apod., je zatφm doporuΦovßna verze 2.6.3i.

PGP ╣ifruje vlastnφ zprßvu nebo soubor rychlou symetrickou ╣ifrou IDEA s nßhodn∞ vygenerovan²m tajn²m klφΦem. Pou╛it² klφΦ je za╣ifrovßn asymetrickou ╣ifrou RSA a ulo╛en do v²slednΘho souboru. Tφm se zφskajφ v²hody ╣ifrovßnφ s tajn²m klφΦem p°i rychlosti ╣ifrovßnφ tajn²m klφΦem. Pro vytvß°enφ digitßlnφch podpis∙ je pou╛it algoritmus MD-5.

┌vodnφ nastavenφ

Pokud nevyhovuje implicitnφ umφst∞nφ soubor∙ s klφΦi, konfiguraΦnφho souboru config.txt a dal╣φ soubor∙ v adresß°i ~/.pgp, je t°eba p°ed pou╛itφm PGP nastavit prom∞nnou prost°edφ PGPPATH na cestu k adresß°i, kde budou tyto soubory.

Prom∞nnou PGPPATH bude t°eba obvykle nastavit v jin²ch systΘmech ne╛ je UNIX, stejn∞ jako prom∞nnou TZ, kterß musφ obsahovat sprßvnou Φasovou z≤nu (v ╚eskΘ republice staΦφ hodnota -1 pro zimnφ a -2 pro letnφ Φas).

Vytvo°enφ vlastnφ dvojice klφΦ∙

Pro prßci s PGP je nutnΘ nejd°φve vygenerovat svoji vlastnφ dvojici klφΦ∙:

pgp -kg

Program PGP se zeptß na poΦet bit∙ klφΦe (v souΦasnosti je doporuΦovßna dΘlka 1024 bit∙), va╣i identifikaci - jmΘno, p°φjmenφ a n∞co, co zajistφ jednoznaΦnost (nejlΘpe e-mailovß adresa - b²vß zvykem ji psßt mezi <  >; pokud ji nemßte, pak nap°φklad telefonnφ Φφslo), pak se zeptß na heslo (pass phrase), kterΘ zabra≥uje, aby cizφ osoba, kterß se dostane k va╣emu poΦφtaΦi, mohla pou╛φvat vß╣ soukrom² klφΦ, a na zßv∞r vßs po╛ßdß o maΦkßnφ klßves a vygeneruje dvojici klφΦ∙ podle Φasov²ch interval∙, kterΘ uplynou mezi stisky klßves a podle stisknut²ch klßves. P°φstupovΘ heslo si musφte pamatovat. Neexistuje zp∙sob, jak zapomenutΘ p°φstupovΘ heslo zjistit!

Soukrom² klφΦ udr╛ujte v tajnosti, ve°ejn² v textovΘ form∞ (zφskanΘ p°φkazem pgp -kxa) zve°ejn∞te (ulo╛te jej do souboru .plan, aby jej bylo mo╛nΘ zjistit slu╛bou finger, umφst∞te jej na svou WWW strßnku, umφst∞te jej na server PGP klφΦ∙ http://wwwkeys.pgp.net nebo http://www.pgp.cz/pgpnet/, roze╣lete jej sv²m partner∙m e-po╣tou, apod.).

SoukromΘ klφΦe jsou ulo╛eny v souboru ~/.pgp/secring.pgp, ve°ejnΘ v ~/.pgp/pubring.pgp.

⌐ifrovßnφ souboru

Pro za╣ifrovßnφ souboru musφ b²t pou╛it ve°ejn² klφΦ osoby, kterß bude soubor de╣ifrovat:

pgp -e soubor ID_adresßta
pgp -ea soubor ID_adresßta

Jako ID_adresßta staΦφ uvΘst libovoln² pod°et∞zec identifikace adresßta. Prvnφ p°φkaz vytvo°φ binßrnφ soubor a ulo╛φ jej do souboru soubor.pgp, druh² vytvo°φ textov² soubor (kter² je mo╛nΘ poslat nap°φklad e-po╣tou) a ulo╛φ jej do souboru soubor.asc. V²stup v textovΘm tvaru m∙╛ete takΘ vy╛ßdat uvedenφm °ßdku

armor=on
v souboru config.txt. SouΦßstφ ╣ifrovßnφ je i komprimace - binßrnφ soubor, kter² vznikne za╣ifrovanφm b²vß krat╣φ ne╛ p∙vodnφ soubor. Pokud se ╣ifruje textov² soubor, kter² mß b²t p°enesen na systΘm, kter² pou╛φvß odli╣nΘ znaky pro konec °ßdku, je t°eba do voleb doplnit pφsmeno t. Parametrem -m po╛ßdßme, aby soubor nebyl p°i pozd∞j╣φm de╣ifrovßnφ uklßdßn na disk, ale pouze zobrazovßn; ·Φelem volby je zabrßnit tomu, aby nezku╣en² p°φjemce zanechal roz╣ifrovan² soubor n∞kde na disku, nikoli aby zku╣en² u╛ivatel nemohl zprßvu ulo╛it do souboru.

Soubor je takΘ mo╛nΘ p°φkazem

pgp -c soubor
pouze za╣ifrovat (pro ulo╛enφ na disku) symetrickou ╣ifrou IDEA.

Podepsßnφ souboru

P°φkazy

pgp -s soubor [ -u vß╣_ID ]
pgp -st soubor [ -u vß╣_ID ]
pgp -sa soubor [ -u vß╣_ID ]
pgp -sta soubor [ -u vß╣_ID ]
podepφ╣ou soubor va╣φm soukrom²m klφΦem. Je-li uvedena volba -a, bude v²sledn² soubor textov² se jmΘnem soubor.asc, jinak bude binßrnφ se jmΘnem soubor.pgp. Parametr -u vß╣_ID se pou╛ije, mßte-li vφce soukrom²ch klφΦ∙. Volba -t oznamuje, ╛e vstupnφ soubor je textov² a ╛e znaky konce °ßdk∙ majφ b²t konvertovßny podle zvyklostφ p°φslu╣nΘho systΘmu. Pouze poslednφ z p°φkaz∙ vyprodukuje Φiteln² soubor s podpisem.

P°φkazy pro za╣ifrovßnφ a podepsßnφ je mo╛nΘ spojit:

pgp -es[t][a] soubor ID_adresßta [-u vß╣_ID]

Ve v╣ech p°edchozφch p°φpadech je mo╛nΘ pomocφ parametru -o soubor stanovit jinΘ jmΘno v²stupnφho souboru (nenφ-li jmΘno s p°φponou, doplnφ se .pgp nebo .asc).

De╣ifrovßnφ a ov∞°enφ podpisu

K de╣ifrovßnφ, p°φpadn∞ autentizaci souboru nebo do╣lΘ zprßvy slou╛φ jedin² p°φkaz:

pgp zprßva -o v²stup

Program PGP sßm rozpoznß, jakΘ operace mß provΘst.

Podepisovßnφ binßrnφch soubor∙

PGP umo╛≥uje podepisovat binßrnφ soubory tak, ╛e soubor z∙stane nezm∞n∞n, a podpis se ulo╛φ do zvlß╣tnφho souboru:

pgp -bs soubor
pgp -bsa soubor

V prvnφm p°φpad∞ se ulo╛φ binßrnφ podpis do souboru soubor.sig, ve druhΘm textov² do souboru soubor.asc. Autentizace souboru se provede takto:

pgp soubor.asc soubor
pgp soubor.pgp soubor

Prßce s klφΦi

Jako nutnΘ zlo s sebou PGP p°inß╣φ pot°ebu prßce s klφΦi. P°φkazy

pgp -k
pgp -kv [ ID ]
vypφ╣φ po °ad∞ nßpov∞du pro prßci s klφΦi a seznam klφΦ∙ (jejich╛ identifikace obsahuje °et∞zec ID) obsa╛en²ch ve va╣em souboru ve°ejn²ch klφΦ∙. Pro v²m∞nu klφΦ∙ jsou pot°eba p°φkazy, kterΘ umo╛nφ vypsßnφ klφΦe do souboru a naΦtenφ klφΦe ze souboru. Vypsßnφ zajistφ jeden z p°φkaz∙

pgp -kx ID soubor
pgp -kxa ID soubor

Prvnφ p°φkaz zkopφruje klφΦ jeho╛ identifikßtor obsahuje °et∞zec ID ze souboru ve°ejn²ch klφΦ∙ a ulo╛φ jej do binßrnφho souboru soubor.pgp, druh² zkopφruje klφΦ do textovΘho souboru soubor.asc. KlφΦ samoz°ejm∞ v souboru ve°ejn²ch klφΦ∙ z∙stßvß.

P°idßnφ klφΦ∙ do souboru ve°ejn²ch klφΦ∙ zajistφ p°φkaz

pgp -ka soubor

Zadan² soubor obsahujφcφ jeden nebo vφce ve°ejn²ch klφΦ∙, m∙╛e b²t textov² i binßrnφ.

V nesymetrick²ch kryptosystΘmech je sice mo╛nΘ p°edßvat ve°ejnΘ klφΦe po nezabezpeΦenΘm komunikaΦnφm kanßlu, je v╣ak nezbytn∞ nutnΘ zabrßnit zcizenφ va╣eho soukromΘho klφΦe, ale takΘ zaruΦit pravost klφΦ∙! Pokud byste cht∞li komunikovat s osobou B a osoba C by vßm poskytla sv∙j klφΦ, kter² by vydßvala za klφΦ osoby B, bude moci C lu╣tit va╣e zprßvy pro B.

Proto╛e ne v╛dy je mo╛nΘ zφskat ve°ejn² klφΦ p°φmo od jeho majitele a o klφΦi zφskanΘm ze sφt∞ nem∙╛eme mφt nikdy stoprocentnφ jistotu, ╛e nenφ podvr╛en², PGP umo╛≥uje vypsßnφ "otisku klφΦe" - ╣estnßctibytovΘ hodnoty zapsanΘ v ╣estnßctkovΘ soustav∞, kter² je mo╛nΘ p°idat do podpisu v e-po╣t∞, vytisknout na vizitku nebo ov∞°it telefonicky:

pgp -kvc ID

Krom∞ toho existuje mechanismus podepisovßnφ klφΦ∙, kter² umo╛≥uje, aby kdokoli, kdo bezpeΦn∞ (tj. pokud mo╛no p°i osobnφm kontaktu) zφskal n∞Φφ klφΦ, podepsal tento klφΦ umφst∞n² ve svΘm souboru ve°ejn²ch klφΦ∙ p°φkazem

pgp -ks ID

Pokud zφskßte klφΦe podepsanΘ n∞k²m, komu d∙v∞°ujete, ╛e podepisuje pouze ov∞°enΘ klφΦe, m∙╛ete tyto klφΦe pova╛ovat za pravΘ.

Vypu╣t∞nφ klφΦe se zadan²m ID ze souboru ve°ejn²ch a p°φpadn∞ i soukrom²ch klφΦ∙ provede p°φkaz:

pgp -kr ID

Neprovßd∞jte tento p°φkaz na vlastnφ klφΦ (ulo╛en² v souboru soukrom²ch klφΦ∙), pokud jej chcete je╣t∞ n∞kdy pou╛φt!

Jestli╛e dojde k prozrazenφ va╣eho soukromΘho klφΦe, je nutnΘ p°φkazem

pgp -kd vß╣_ID
vygenerovat potvrzenφ, ╛e klφΦ se zadan²m ID je neplatn². Potvrzenφ je t°eba rozeslat lidem, kte°φ majφ vß╣ ve°ejn² klφΦ, aby si jej p°idali do svΘho souboru ve°ejn²ch klφΦ∙ pomocφ pgp -ka, a tφm vß╣ klφΦ zneplatnili.

Zßkladnφ informace o PGP naleznete na adrese http://www.pgp.cz. *


- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah -