Nick Ryan
Softwarov² in╛en²r
Produkt PGP je snad nejvφce znßm pro svΘ schopnosti ╣ifrovßnφ elektronickΘ po╣ty. Zatφmco d°φve byl koncept ╣ifrovßnφ ve°ejn²m klφΦem pro mnohΘ te╛ko srozumiteln², dnes nenφ v²jimkou PGP "otisk prstu" (fingerprint) na vizitce. S pomocφ PGP je dnes mo╛nΘ p°enß╣et informace v prakticky jakΘkoli podob∞ p°es jak²koli typ sφt∞ s ·plnou bezpeΦnostφ.
Soukromφ komunikace je v╣ak pouze Φßstφ celku. Nemß valnΘho smyslu ╣ifrovat va╣e emailovΘ zprßvy, kdy╛ zßrove≥ nechßvßte va╣e d∙v∞rnΘ soubory na va╣em poΦφtaΦi nechrßn∞nΘ. AΦkoli samotnΘ PGP se dß pou╛φt i pro ╣ifrovßnφ jednotliv²ch soubor∙, nenφ p°ili╣ pohodlnΘ ruΦn∞ ╣ifrovat a de╣ifrovat dokumenty, kterΘ pou╛φvßte Φasto. PGPdisk, kter² je souΦßstφ PGP od verze 6.0, poskytuje jednoduch² zp∙sob pro zabezpeΦenφ va╣ich dat.
Jak PGPdisk pracuje
Podobn∞ jako je tomu u tradiΦnφho produktu PGP, koncept PGPdisku m∙╛e b²t napoprvΘ pro pochopenφ obtφ╛n². PGPdisk vytvß°φ virtußlnφ ╣ifrovanou jednotku jakΘkoli pevnΘ dΘlky, v nφ╛ lze ulo╛it libovolnΘ mno╛stvφ soubor∙. V∞t╣ina lidφ vφ, ╛e soubory na jejich poΦφtaΦi jsou uklßdßny na pevn² disk. OperaΦnφ systΘm poΦφtaΦe v╣ak nemusφ vid∞t ka╛d² pevn² disk jako jedinou schrßnku.
Ve skuteΦnosti vidφ pevn² disk jako jednu nebo vφce jednotek, z nich╛ ka╛dß je logicky odd∞lena. Jednotka je jednodu╣e nßzev pro kus pam∞╗ovΘho prostoru, kter² pak m∙╛e slou╛it pro uchovßvßnφ soubor∙, a jeden pevn² disk m∙╛e obsahovat vφce ne╛ jednu jednotku. Na poΦφtaΦi s Microsoft Windows jsou jednotky oznaΦovßny pφsmeny od A do Z, zatφmco na Macintoshi mohou mφt libovolnΘ jmΘno. N∞kterΘ druhy jednotek, jako nap°. ZIP diskety, se na poΦφtaΦi mohou objevovat a mizet. To se d∞je procesem, kter² mß nßzev "p°ipojenφ" a "odpojenφ" jednotky.
U╛ivatel m∙╛e p°ipojovat nebo odpojovat jednotky PGPdisku, nebo takΘ "PGP-disky", podle svΘ v∙le, pouze vlo╛enφm frßze hesla. Zvlß╣tnφm aspektem je to, ╛e jednotka PGPdisku nenφ ve skuteΦnosti pam∞╗ovou oblastφ plnou soubor∙, ale jedin²m souborem ulo╛en²m na jinΘ jednotce. To je mo╛nΘ, proto╛e jednotky jsou pouhΘ abstrakce, jejich╛ implementace zßvisφ pouze na p°φslu╣nΘm softwaru. Vlastnφ implementace je transparentnφ jak pro operaΦnφm systΘm, tak pro u╛ivatele, a v²sledkem je dojem, ╛e PGP-disk je jednotka jako ka╛dß jinß. To ji Φinφ velmi jednoduchou pro pou╛φvßnφ. Kdy╛ chce u╛ivatel zalo╛it za╣ifrovanou jendotku o velikosti 100MB, PGP disk vytvo°φ soubor tΘto velikosti. Aby mohl b²t pou╛it, musφ u╛ivatel po╛ßdat PGPdisk o p°ipojenφ p°φslu╣nΘ jednotky, vlo╛it frßzi hesla a jednotka se objevφ na jeho poΦφtaΦi jako ka╛dß jinß jednotka, nap°. jako disk C:. ⌐ifrovßnφ a de╣ifrovßnφ probφhß transparentn∞ na pozadφ.
PGP-disky jsou velmi bezpeΦnΘ. Data v souborech PGPdisku jsou v╛dy ulo╛ena v ╣ifrovanΘ podob∞, i kdy╛ je PGP-disk prßv∞ p°ipojen. Data jsou zabezpeΦena i v p°φpad∞, ╛e poΦφtaΦ je vypnut nebo havaruje. To je takΘ ve skuteΦnosti nejd∙le╛it∞j╣φ vlastnost PGPdisku: data jsou za╣ifrovßna, pokud se prßv∞ nepou╛φvajφ.
Samotn² program PGPdisk nemß p°ehled o datech ulo╛en²ch na sv²ch jednotkßch. Souborov² systΘm (filesystem), ovlßdan² operaΦnφm systΘmem, je odpov∞dn² za naklßdßnφ se v╣emi po╛adavky na prßci se soubory i adresß°i (nov∞ji slo╛kami) ka╛dΘho PGP-disku. P°eklßdß tyto operace na Φtenφ a zßpisy jednotliv²ch blok∙ (nebo "sektor∙") dat, kterΘ se pak p°edßvajφ jednotce. PGP-disk proto nenφ systΘmem soubor∙, je to skuteΦn∞ pouze jednotka. Kdy╛ u╛ivatel vytvo°φ jednotku PGPdisku, dostane p°φle╛itost naformßtovat ji jako libovoln² systΘm soubor∙ dostupn² v operaΦnφm systΘmu. I kdy╛ to neumo╛≥uje pou╛φvat PGP-disky nap°φΦ platformami, poskytuje alespo≥ maximßlnφ kompatibilitu pro velkΘ mno╛stvφ aplikacφ.
Pohled dovnit° PGPdisku
PGP-disk je soubor, s nφm╛ se naklßdß jako s posloupnostφ blok∙ o velikosti 512 byt∙, z nich╛ se sklßdß jednotka. Bloky na zaΦßtku a konci souboru se pou╛φvajφ pro aministrativnφ data jako alokaΦnφ tabulka soubor∙ (FAT), zatφmco prost°ednφ Φßst souboru (datovß oblast) uchovßvß za╣ifrovan² obraz samotnΘ PGP-disk jednotky. PGPdisk uspokojuje po╛adavky na Φtenφ a zßpis blok∙ od operaΦnφho systΘmu jejich mapovßnφm na Φtenφ a zßpisy z a do datovΘ oblasti a provßdφ "za b∞hu" ╣ifrovßnφ a de╣ifrovßnφ podle pot°eby. Jak je popsßno v²╣e, PGPdisk neznß infromace o souborech ulo╛en²ch na nep°ipojenΘm PGP-disku. To proto, ╛e pro PGP-disk m∙╛e b²t pou╛it libovoln² systΘm soubor∙. PGPdisk ani nepot°ebuje v∞d∞t, jak²m zp∙sobem uklßdß systΘm soubor∙ data na disk.
RezervovanΘ bloky na zaΦßtku a konci souboru PGP-disku slou╛φ k uklßdßnφ propojenΘho seznamu hlaviΦkov²ch struktur, jejich╛ primßrnφ funkcφ je uklßdat kryptografickß data. PGPdisk vyu╛φvß 128bitovΘ verze symetrickΘho algoritmu CAST pro ╣ifrovßnφ a de╣ifrovßnφ. Kdy╛ je PGP-disk zalo╛en, nasbφrß od u╛ivatele nßhodnß data a vytvo°φ z nich jedineΦn² 128bitov² CAST klφΦ a 64 bit∙ "soli". "Solenφ" znamenß proces kombinovßnφ jakΘhokoli Φφsla s frßzφ hesla v dob∞ vytvß°enφ CAST klφΦe, aby byly znemo╛n∞ny slovnφkovΘ ·toky. U╛ivatel vlo╛φ frßzi hesla, kterß se stane "hlavnφ frßzφ hesla" pro tento PGP-disk. (Jedin² PGP-disk mß jednu hlavnφ frßzi hesla a a╛ sedm alternativnφch frßzφ hesla a navφc neomezenΘ mno╛stvφ PGP ve°ejn²ch klφΦ∙.) PGPdisk pak zalo╛φ jednotku a datovß oblast je vynulovßna a za╣ifrovßna CAST klφΦem.
Frßze hesla PGP-disku
Normßln∞ majφ ╣ifrovacφ klφΦe pouze jednu frßzi hesla. PGPdisk v╣ak povoluje vφce frßzφ hesla, kterΘ pak slou╛φ k p°φstupu k jedinΘmu CAST klφΦi. Je to zaji╣t∞no ulo╛enφm separßtnφch za╣ifrovan²ch kopiφ klφΦe pro ka╛dou frßzi hesla. P°i p°idßnφ novΘ frßze hesla je u╛ivatel vyzvßn nejprve k zadßnφ hlavnφ frßze hesla PGP-disku. Tato frßze hesla se pou╛ije k zφskßnφ CAST klφΦe PGP-disku a potΘ mß u╛ivatel p°φle╛itost p°idat dal╣φ frßzi hesla. PGPdisk provede kontrolnφ souΦet SHA-1 algoritmem a "osolφ" novou frßzi hesla. V²sledkem je CAST klφΦ, kter²m se za╣ifruje hlavnφ CAST klφΦ PGP-disku. Tato za╣ifrovanß kopie je nakonec ulo╛ena v hlaviΦce PGP-disku.
V p°φpad∞ frßze hesla ve°ejnΘho klφΦe je u╛ivatel po╛ßdßn o urΦenφ ve°ejnΘho klφΦe, kter² mß b²t p°ipojen k PGP-disku. S vyu╛itφm funkcφ PGPsdk (╣ifrovacφch knihoven, kterΘ jsou souΦßstφ v╣ech PGP produkt∙) pak PGPdisk za╣ifruje CAST klφΦ PGP-disku uveden²m ve°ejn²m klφΦem a v²sledek ulo╛φ v novΘ hlaviΦce, spolu s identifikaΦnφm Φφslem ve°ejnΘho klφΦe. Podobn²m zp∙sobem PGP ╣ifruje emailovΘ zprßvy.
Jak je PGP-disk p°ipojen
Pro p°ipojenφ PGP-disku je nutnΘ, aby u╛ivatel vlo╛il frßzi hesla. Frßze hesla je nejd°φve kontrolovßna proti hlavnφ frßzi hesla a v╣em alternativnφm frßzφm hesla. Pokud s n∞kterou souhlasφ, klφΦ se pou╛ije k de╣ifrovßnφ za╣ifrovanΘho CAST klφΦe PGP-disku, a PGP-disk je p°ipojen.
Pokud vlo╛enß frßze hesla nesouhlasφ s ╛ßdnou frßzφ hesla PGP-disku, je srovnßna s ve°ejn²mi klφΦi PGP-disku. Pro ka╛dou hlaviΦku ve°ejnΘho klφΦe pou╛ije PGPdisk slu╛eb knihovny PGPsdk ke zji╣t∞nφ, zda vlo╛enß frßze hesla dek≤duje privßtnφ klφΦ, kter² odpovφdß ve°ejnΘmu klφΦi, jeho╛ identifikßtor je v hlaviΦce. (Pokud pßr ve°ejn²/privßtnφ klφΦ nenφ v aktußlnφm okruhu klφΦ∙, tento proces skonΦφ chybou a u╛ivatel je varovßn.) Za╣ifrovan² CAST klφΦ PGP-disku je pak de╣ifrovßn s pomocφ tohoto privßtnφho klφΦe.
V souboru PGP-disku jsou v╣echny hlavnφ i alternativnφ frßze hesla ulo╛eny v jedinΘ struktu°e naz²vanΘ primßrnφ hlaviΦka PGP-disku (primary PGPdisk file header). Tato struktura obsahuje informace o verzi, "s∙l" a dal╣φ administrativnφ data. Obsahuje takΘ d°φve zmφn∞nΘ struktury klφΦ∙ pro frßze hesla, jednu pro hlavnφ frßzi hesla a dßl╣φ a╛ pro sedm alternativnφch frßzφ hesla. Tato primßrnφ hlaviΦka je ulo╛ena v prvnφm bloku souboru a zßlo╛nφ kopie, zvanß alternativnφ hlaviΦka (alternate header), je ulo╛ena v poslednφm bloku souboru. Navφc, frßze hesla ve°ejn²ch klφΦ∙ se uklßdajφ do separßtnφch hlaviΦek zvan²ch hlaviΦky ve°ejn²ch klφΦ∙ PGP-disku (PGPdisk public key headers). Ka╛dß mß velikost jednoho nebo vφce blok∙, co╛ zßvisφ na velikosti za╣ifrovan²ch dat (ta se m∞nφ s velikostφ ve°ejnΘho klφΦe). Tyto hlaviΦky jsou ulo╛eny v propojenΘm seznamu se zaΦßtkem za primßrnφ hlaviΦkou PGP-disku. V zßvislosti na poΦtu rezervovan²ch blok∙ na zaΦßtku souboru PGP-disku mohou b²t dal╣φ hlaviΦky ve°ejn²ch klφΦ∙ ulo╛eny na konec souboru, pokud se vyΦerpß prostor na zaΦßtku.
Formßt hlaviΦek PGP-disku je dostateΦn∞ flexibilnφ, aby umo╛nil ╣ifrovßnφ jin²mi 128bitov²mi symetrick²mi algoritmy ne╛ CAST. «ßdnß takovß ╣ifra v╣ak nenφ v souΦasnΘ dob∞ podporovßna.
PGPdisk se takΘ do znaΦnΘ mφry sna╛φ zajistit, aby ve╣kerß citlivß data klφΦ∙ a frßzφ hesla byla ulo╛ena v bezpeΦn²ch vyrovnßvacφch pam∞tech. Tyto vyrovnßvacφ pam∞ti jsou uzamΦeny, aby nemohly b²t odlo╛eny do odklßdacφho souboru na disku, a p°ed uvoln∞nφm jsou v╛dy vymazßny. Navφc se v╣emi vstupnφmi ·daji od u╛ivatele se naklßdß tak, ╛e ╛ßdnß kopie frßze hesla se nezkopφruje v ╛ßdnΘm p°φpad∞ na ╛ßdnΘ mφsto v pam∞ti, ani b∞hem vklßdßnφ. I kdy╛ je stßle mo╛nΘ zφskßnφ frßze hesla s pomocφ programu pro monitorovßnφ ·der∙ na klßvesnici, jde o potencißlnφ problΘm v╣ech bezpeΦnostnφch produkt∙ na jakΘkoli platform∞. Stoprocentnφ ochrana proti takov²m program∙m je prakticky nemo╛nß, proto╛e podobn² monitorovacφ program m∙╛e b²t vlo╛en do n∞kterΘ z mnoha ·rovnφ operaΦnφho systΘmu.
PGPdisk a Microsoft Windows
Srdce PGPdisku le╛φ v ovladaΦi PGPdisku. OvladaΦ je software, kter² je provßd∞n na vy╣╣φ privilegovanΘ ·rovni ne╛ b∞╛n² k≤d aplikace. Proo implementaci operacφ jako p°ipojenφ a odpojenφ diskov²ch jednotek ve Windows je nutnΘ napsat ovladaΦ.
Ve Windows 98 a NT je rozdφl mezi k≤dem b∞╛φcφm v u╛ivatelskΘm re╛imu a v re╛imu jßdra. U╛ivatelsk² re╛im se znamenß spustitelnΘ programy, kterΘ pou╛φvajφ Win32 aplikaΦnφ rozhranφ (API), jako nap°. aplikace PGPdisk a dynamickß knihovna PGPdisk shell extension. Tyto komponenty mohou b∞╛et beze zm∞ny pod ob∞ma operaΦnφmi systΘmy. V re╛imu jßdra b∞╛φ ovladaΦe, kterΘ dovolujφ provßd∞t ·kony souvisejφcφ s p°φstupem k hardwaru a implementacφ systΘmu soubor∙. Windows 98 a NT majφ ·pln∞ jinΘ aplikaΦnφ rozhranφ (API) pro ovladaΦe, tak╛e jsme museli napsat dv∞ r∙znΘ verze PGPdisku, jednu pro ka╛d² z obou operaΦnφch systΘm∙. Zde se budu soust°edit na ovladaΦ pro NT, kter² je pokroΦilej╣φ koncepΦn∞ i prakticky. Primßrnφ ·kol ovladaΦe PGPdisku je nabφdnout obraz jednotky PGP-disku operaΦnφmu systΘmu. To zahrnuje vytvß°enφ a ru╣enφ pφsmenn²ch oznaΦenφ disk∙ a provßd∞nφ vstupn∞ v²stupnφ operacφ. OvladaΦ takΘ zaji╣╗uje n∞kolik sekundßrnφch funkcφ, nap°. zamykßnφ vyrovnßvacφch pam∞tφ a zachytßvßnφ pohyb∙ my╣i a ·der∙ na klßvesnici.
Kdy╛ si u╛ivatel p°eje p°ipojit PGP-disk, aplikace PGPdisk odpovφdß za vy╛ßdßnφ frßze hesla a de╣ifrovßnφ CAST klφΦe PGP-disku. Pak p°edß ovladaΦφ PGPdisku klφΦ, cestu k souboru p°ipojovanΘho PGP-disku a u╛ivatelem preferovanΘ pφsmeno pro oznaΦenφ disku. OvladaΦ pak zavolß systΘmovΘ slu╛by, kterΘ vytvo°φ nov² objekt odpovφdajφcφ diskovΘ jednotce, a spojφ jej s pφsmenn²m oznaΦenφm. Jednotka v╣ak je╣t∞ nenφ p°ipravena k prßci. Musφ na nφ toti╛ b²t nejd°φve p°ipraven systΘm soubor∙. Tuto ·lohu provßdφ operaΦnφ systΘm, kter² se ptß ka╛dΘho nainstalovanΘho ovladaΦe systΘmu soubor∙, zda rozeznßvß tuto PGP-diskovou jednotku. Ka╛d² ovladaΦ Φte prvnφ sektor PGP-disku, kter² obsahuje znaΦku pro identifikaci systΘmu soubor∙, kter²m byla jednotka naformßtovßna. Pokud ovladaΦ tuto znaΦku poznß, prohlßsφ PGP-disk za sv∙j vlastnφ a umo╛nφ na n∞m pracovat se soubory a adresß°i (slo╛kami). P°i odpojenφ PGP-disku zajistφ nejpreve ovladaΦ PGPdisku, ╛e ╛ßdn² ze soubor∙ na p°φslu╣nΘ jednotce nenφ prßv∞ pou╛φvßn. Pokusφ se zamknout celou jednotku pro v²hradnφ p°φstup, a pokud se pokus o zamknutφ nepovede, po╛ßdß PGPdisk u╛ivatele zav°φt ka╛dou aplikaci, kterß by mohla vyu╛φvat soubor∙ na jednotce. Jakmile je jednotka ·sp∞╣n∞ uzamknuta, ovladaΦ po╛ßdß systΘm o odd∞lenφ propojenφ mezi jednotkou PGP-disku a jejφm pφsmenn²m oznaΦenφm.
OvladaΦ v╣ak d∞lß mnohem vφce ne╛ pouhΘ p°ipojovßnφ a odpojovßnφ PGP-disk∙. Obsluhuje takΘ v╣echny po╛adavky na vstupn∞ v²stupnφ operace pro svΘ jednotky s vyu╛itφm separßtnφch "vlßken" (threads) b∞╛φcφch v re╛imu jßdra, jednoho pro ka╛d² p°ipojen² PGP-disk. Obdr╛en² po╛adavek je ulo╛en do fronty "vlßkna" odpovφdajφcφho PGP-disku. V p°φpad∞ Φtenφ a zßpisu je tato operace provedena a za b∞hu jsou data de╣ifrovßna a ╣ifrovßna podle pot°eby.
Je mßlo znßmo, ╛e ovladaΦe ve Windows 98 i NT mohou otevφrat soubory stejn∞ jako ka╛dß jinß aplikace. Dφky jedineΦnΘ povaze prost°edφ jßdra je nutnΘ dßvat pozor, aby nedo╣lo k uvßznutφ. Dokud se dodr╛ujφ v╣echna pravidla a pou╛φvajφ se sprßvnΘ synchronizaΦnφ mechanismy, v╣e pracuje tΘm∞° bez pov╣imnutφ. Firma Microsoft pravd∞podobn∞ nikdy nep°edpoklßdala, ╛e jednotky a soubory se budou pou╛φvat tφmto zp∙sobem, ale takΘ toto pou╛φvßnφ neznemo╛nila.
Obecn∞ je vhodnΘ provßd∞t v re╛imu jßdra co nejmΘn∞ operacφ. D∙vodem je, ╛e kdy╛ dojde k problΘmu nebo havßrii v re╛imu jßdra, je velmi pravd∞podobnΘ, ╛e to zbortφ cel² systΘm, a╗ u╛ v podob∞ "zatuhnutφ" nebo modrΘ obrazovky. Havßrie v u╛ivatelskΘm re╛imu mß naproti tomu za nßsledek p°inejhor╣φm ztrßtu aktußlnφ aplikace. Proto ne zcela zßsadnφ funkce, jako nap°. kontrola hlaviΦek PGP-disku, jsou provßd∞ny aplikacφ, ne ovladaΦem. TakovΘ chovßnφ vynutφme nejlΘpe tak, ╛e ovaldaΦ a aplikace sdφlejφ co nejmΘn∞ funkΦnφho k≤du. Do k≤du v u╛ivatelskΘm re╛imu lze pak svobodn∞ p°idßvat cokoli, zatφmco k≤d v jßd°e z∙stßvß co nej·tlej╣φ.
OvladaΦ se starß takΘ o dv∞ dal╣φ funkce. Ji╛ jsem se zmφnil, ╛e PGPdisk se starß o udr╛ovßnφ citliv²ch ·daj∙ o klφΦφch a frßzφch hesla zamΦen²ch ve vyrovnßvacφch pam∞tech. Obvykle Win32 aplikace nem∙╛e °φct systΘmu o alokovßnφ zamΦenΘ pam∞ti pro sebe. OvladaΦ v╣ak m∙╛e zamΦφt v pam∞ti libovoln² rozsah strßnek. Aplikace PGPdisk volß pom∞rn∞ Φasto ovladaΦ proto, aby ho po╛ßdala o uzamknutφ bezpeΦn²ch vyrovnßvacφch pam∞tφ a o jejich odemknutφ p°ed tφm, ne╛ jsou uvoln∞ny.
OvladaΦ krom∞ toho zachytßvß vstup z my╣i a klßvesnice. To je nutnΘ proto, aby mohly b²t v╣echny PGP-disky odpojeny po jistΘ dob∞, po kterou nebyla ze strany u╛ivatele zaznamenßna ╛ßdnß aktivita. Bohu╛el nenφ pro tuto vlastnost ╛φdnß podpora pro Win32 aplikace, tak╛e tento ·kol musφ b²t ponechßn na ovladaΦi. Zachytßvßnφ je velmi jednoduchΘ, proto╛e jde pouze o vynulovßnφ Φasov²ch stopek poka╛dΘ, kdy╛ je zaznamenßn ·hoz na klßvesnici nebo pohyb Φi stisknutφ my╣i. Nenφ po°izovßn ╛ßdn² zßznam o tom, co u╛ivatel pφ╣e nebo d∞lß. Vzpome≥te si na v²╣e uvedenΘ komentß°e o tom, jak je jednoduchΘ monitorovat ·dery na klßvesnici bez toho, ╛e by o tom u╛ivatel v∞d∞l. Toto je demonstrace, jak jednodu╣e lze vniknout do systΘmu na velmi nφzkΘ ·rovni.
Jak m∙╛ete vid∞t, PGPdisk je slo╛itß aplikace, kterß poskytuje vysokou ·rove≥ bezpeΦφ v jednoduchΘ, snadno pou╛itelnΘ a pohodlnΘ podob∞. Pokud mßte zßjem o bli╛╣φ pohled na PGPdisk, vyz²vßme vßs k proΦtenφ zdrojovΘho k≤du, kter² nechßvßme tisknout kv∙li kryptografickΘ kontrole ve°ejnostφ. Zdrojov² k≤d PGPdisku je souΦßstφ zdrojovΘho k≤du pro PGP 6.0 a pozd∞j╣φ verze. Podrobn∞j╣φ informace o tom, kde zφskat zdrojovΘ k≤dy PGP, se dozvφte na poslednφ stran∞ tohoto vydßnφ Φasopisu The Zimmermann Telegram.