Tu je voľný preklad časti dokumentácie, ktorá bola dodávaná s PGP 2.6.2. Je tu preto, lebo obsahuje zopár informácií zo zákulisia.


Pohľad pod pokrievku

Náhodné čísla

PGP používa kryptograficky silný pseudonáhodný generátor čísel pre vytvorenie dočasných konvenčných relačných kľúčov. Relačný kľúč sa používa pri jednej relácií - pri jednom zašifrovávaní. Jedno šifrovanie - jeden relačný kľúč. Ďalšie šifrovanie - ďalší relačný kľúč. Zárodočný súbor pre tieto relačné kľúče sa volá randseed.bin pre PGP, alebo random_seed pre GnuPG. Ak tento zárodočný súbor neexistuje, je automaticky vytvorený a naplnený zo skutočne náhodných čísel odvodených z časového oneskorenia vašich úderov do klávesnice.

Tento náhodný zárodočný súbor by mal byť aspoň trochu chránený pred odhalením, aby ste znížili riziko, že útočník odvodí váš nasledujúci alebo predchádzajúci relačný kľúč. Útočník by mal čo robiť aby získal čokoľvek užitočné z tohoto náhodného zárodočného súboru, pretože je kryptograficky spracovaný pred a po každom použití. Bez ohľadu na to mi pripadá rozumné sa prinajmenšom pokúsiť zabrániť tomu, aby padol do nesprávnych rúk.

Ak nedôverujete ľubovoľnému algoritmicky odvodenému zdroju náhodných čísel hocako silnému, majte na pamäti, že už dôverujete sile tej istej konvenčnej šifry pri ochrane svojich správ. Ak je dostatočne silná na to, tak by mala byť aj dostatočne silná pre použitie ako zdroj náhodných čísel pre dočasné relačné kľúče. Všimnite si, že PGP stále používa skutočne náhodné čísla z fyzických zdrojov (predovšetkým časovania klávesnice) pre generovanie párov dlhodobých kľúčov.

Konvenčný šifrovací algoritmus PGP

Ako bolo popísané inde, PGP "naštartuje" do konvenčného jedno-kľúčového šifrovacieho algoritmu použitím algoritmu verejného kľúča pre zašifrovanie konvenčného relačného kľúča a potom prepne do rýchlej konvenčnej kryptografie. Takže pohovorme si o konvenčnom šifrovacom algoritme. Nie je to DES.

Federálny štandard pre šifrovanie dát (Federal Data Ecryption Standard - DES) bol dobrý algoritmus pre väčšinu komerčných aplikácií. Ale vláda nikdy nedôverovala DES pre ochranu svojich vlastných utajovaných údajov, pretože DES používa kľúče o dĺžke 56 bitov, dosť krátke pre prelomenie hrubou silou. Tiež úplný 16-kolový DES bol napadnutý s istým úspechom Bihamom a Shamirom použitím diferenčnej kryptoanalýzy, a Matsuim použitím lineárnej kryptoanalýzy.

Najničivejší praktický útok na DES bol popísaný na Crypto '93 konferencii, kde Michael Wiener z Bell Northern Research presentoval dokument o prelomení DES špeciálnym strojom. Úspešne vyvinul a testoval čip, ktorá háda 50 miliónov DES kľúčov za sekundu, kým nenájde ten správny. Hoci sa doteraz nepustil do výroby kľúčov, dokáže vyrábať tieto čipy za 10 dolárov a 50 centov, a dokáže ich vyrobiť 57000 do špeciálneho stroja za 1 millión dolárov, ktorý dokáže otestovať každý DES kľúč do 7 hodín, čo vedie k premernej dobe do prelomenia 3,5 hodiny. 1 milión dolárov možno ukryť v rozpočte mnohých firiem. Za 10 miliónov dolárov prelomenie trvá 21 minút a za 100 miliónov dolárov, len dve minúty. S rozpočtom vlády hociktorej väčšej krajiny pre skúmanie DES premávky, možno túto šifru prelomiť za niekoľko sekúnd. To znamená že, priamy 56-bitový DES je prakticky mŕtvy pre účely aplikácií vážneho zabezpečenia údajov.

Možným nástupcom DES môže byť variácia známa ako "trojitý DES", ktorý používa dva DES kľúče pre zašifrovanie v troch prechodoch, čím sa dosiahne efektívny priestor kľúčov s veľkosťou 112 bitov. Ale tento prístup je tri krát pomalší ako normálny DES. Budúce verzie PGP budú asi voliteľne podporovať trojitý DES.

PGP nepoužíva DES ako svoj algoritmus pre konvenčné šifrovanie správ jedným kľúčom. Miesto toho PGP používa iný konvenčný algoritmus pre blokové šifrovanie s jedným kľúčom, zvaný IDEA™.

Pre tých čo sa zaujímajú o kryptografiu, šifra IDEA pracuje s 64-bitovými blokmi vstupného textu a šifrovaného textu. Používa kľúč s veľkosťou 128 bitov. Je založená na dizajnovom koncepte zmiešaných operácií z rôznych algebraických skupín. Jej softwarová implementácie funguje oveľa rýchlejšie než DES. Podobne ako DES, môžno ju použiť v móde spätnej väzby (cipher feedback -CFB) alebo reťazenia blokov (cipher block chaining - CBC). PGP ju používa v 64-bitovom CFB móde.

Bloková šifra IPES/IDEA bola vyvinutá v ETH v Zurichu James L. Massyeoma a Xuejia Laiom a publikovaná bola v roku 1990. Nie je to "kutilský" algoritmus. Jeho tvorcovia majú vynikajúcu reputáciu v kryptografických kruhoch. Prvé publikované dokumenty tento algoritmus nazývali IPES (Improved Proposed Encryption Standard), ale neskôr bol názov zmenený na IDEA (International Data Encryption Algorithm). Doteraz, IDEA odolávala útokom oveľa lepšie ako iné šifry ako napríklad FEAL, REDOC-II, LOKI, Snefru a Khafre. Posledné dôkazy napovedajú, že IDEA je odolnejšia než DES inak veľmi úspešným útokom diferenciálnou kryptoanalýzou Bihama a Shamira. Biham a Shamir podrobne skúmali IDEA a nenašli v nej žiadne slabé miesto. Akademické kryptoanalytické kruhy v Belgicku, Anglicku a Nemecku sa ju tiež pokúšajú napadnúť, rovnako ako vojenské služby niekoľkých Európskych krajín. Tak ako táto nová šifra priťahuje ďalšie a ďalšie pokusy o prelomenie z najrôznejších kútov kryptoanalytického sveta, dôvera v IDEA s postupom času rastie.

Vždy raz za čas dostanem list od niekoho kto práve zistil strašnú pravdu o tom, že PGP nepoužíva čisté RSA pre šifrovanie údajov. Majú obavy, že celý balík je oslabený ak používa hybridnú schému verejného kľúča a konvenčného šifrovania len kvôli urýchleniu. Koniec koncov celá reťaz je len tak pevná ako je pevné jej najslabšie ohnivko. Požadujú vysvetlenie tohoto zjavného kompromisu v sile PGP. Je to kvôli tomu, že sa chytili do verejnej bázne a úcty pred silou a záhadnosťou RSA, mylne sa domnievajúc že RSA je vnútorne silnejšia než ľubovoľná iná konvenčná šifra. Nuž nie je to tak.

Ľudia, ktorí pracujú vo výskume rozkladu na prvočísla vravia, že námaha na vyčerpanie všetky možné 128-bitové kľúče v šifre IDEA je zhruba porovnateľné námahe na rozklad na prvočísla na prelomenie 3100-bitového RSA kľúča, ktorý je oveľa väčší než 1024-bitový RSA kľúč, ktorý väčšina ľudí používa pre aplikácie s vysokou bezpečnosťou. Predpokladajúc tento rozsah veľkostí kľúčov a za predpokladu, že v konvenčnej šifre nie sú žiadne skryté slabiny, tak najslabšie spojenie v tomto hybridnom prístupe je v algoritme verejného kľúča a nie v konvenčnej šifre.

Nie je ergonomicky praktické používať čisto RSA s veľkými kľúčmi pre šifrovanie a rozšifrovávanie dlhých správ. 1024-bitový RSA kľúč by dešifroval správy asi 4000 krát pomalšie než šifra IDEA. Absolútne nikto to takto v reálnom svete nerobí. Veľa ľudí menej skúsených v kryptografii si neuvedomuje, že príťažlivosť kryptografie verejným kľúčom nie je v jej vnútornej sile oproti konvenčnej šifre - je zaujímavá pretože robí prácu s kľúčmi pohodlnejšou.

Nielen že je RSA príliš pomalá pre použitie na väčšie dáta, ale má dokonca isté slabiny ktoré možno v istých špeciálnych prípadoch využiť pre isté druhy správ, ktoré vstupujú do RSA šifry dokonca aj pri veľkých kľúčoch. Týmto špeciálnym prípadom sa možno vyhnúť použitím hybridného prístupu použitia RSA pre zašifrovanie náhodných relačných kľúčov a konvenčnej šifry, tak ako to robí PGP. Takže záver je takýto: Použitie čistého RSA na väčšie dáta je nesprávny prístup, bodka. Je príliš pomalý, nie je silnejší a môže dokonca byť slabší. Ak nájdete softwarovú aplikáciu ktorá používa RSA na väčšie dáta, pravdepodobne to znamená, že implementátor nerozumie týmto problémom, čo môže znamenať, že nerozumie ani iným dôležitým zásadám kryptografie.

Kompresia dát

PGP za normálnych okolností komprimuje vstupný text predtým než ho zašifruje. Komprimovať dáta po zašifrovaní je príliš neskoro; zašifrované dáta sú nekomprimovateľné. Dátová kompresia znižuje čas prenosu a spotrebu diskového priestoru a hlavne významne zvyšuje kryptografickú bezpečnosť. Väčšina kryptoanalytických techník využívajú na prelomenie šifry nadbytočnosť nachádzajúcu sa vo vstupnom texte. Dátová kompresia redukuje túto nadbytočnosť vo vstupnom texte a teda významne zvyšuje odolnosť voči kryptoanalýze. Komprimovanie vstupného textu zaberá čas navyše, ale z hľadiska bezpečnosti sa to vyplatí, prinajmenšom podľa mojej opatrnej mienky.

Súbory, ktoré sú príliš krátke na komprimáciu, alebo sa komprimujú zle nie sú v PGP komprimované.

Ak tomu dávate prednosť, môžete použiť PKZIP na komprimovanie vstupných dát pred ich zašifrovaním. PKZIP je rozšírená a efektívna MSDOS sharewarová komprimačná utilita od PKWare, Inc. Alebo môžete použiť ZIP, PKZIP-kompatibilnú freewarovú komprimačnú utilitu na Unix-e a iných systémoch, ktorej autorom je Jean-Loup Gailly. V istých prípadoch je použitie PKZIP-u alebo ZIP-u výhodou, pretože na rozdiel od PGP vstavaných komprimačných algoritmov, PKZIP a ZIP majú šikovnú schopnosť komprimovania viacerých súborov do jediného skomprimovaného súboru, ktorý je po rozbalení rozdelený naspäť do pôvodných súborov. PGP sa nebude pokúšať komprimovať vstupný súbor, ktorý už bol skomprimovaný. Po rozšifrovaní, príjemca môže rozbaliť vstupný súbor s PKUNZIP-om. Ak zašifrovaný vstupný súbor je komprimovaný PKZIP-om, PGP to rozozná a príjemcu upozorní, že rozšifrovaný súbor je pravdepodobne PKZIP súbor.

Pre technicky zvedavých čitateľov, súčasná verzia PGP používa freeware ZIP komprimačné funkcie napísané Jean-Loup Gaillym, Markom Adlerom a Richardom B. Walesom. Tento ZIP software používa funkčne ekvivalentný komprimačný algoritmus ako ten používaný v novom PKZIP 2.0 od PKWare-u. Tento ZIP komprimačný software bol zvolený pre PGP hlavne pre jeho voľne dostupný a portovateľný C zdrojový kód a pre jeho naozaj dobrý komprimačný pomer a preto, že je rýchly.

Peter Gutmann tiež napísal peknú komprimačnú utilitu zvanú HPACK, voľne dostupnú na mnohých Internetových FTP serveroch. Šifruje komprimované archívy, použitím PGP formátu dát a kľúčeniek. Chcel aby som ju tu spomenul.

Message digesty a Digitálne podpisy

Pre vytvorenie digitálneho podpisu PGP šifruje vaším tajným kľúčom. Ale PGP v skutočnosti nešifruje celú vašu správu vaším tajným kľúčom - to by trvalo veľmi dlho. Miesto toho PGP šifruje výťažok správy (message digest).

Tento výťažok správy je kompaktný (128 bitový) destilát vašej správy, konceptom podobný kontrolnej sume. Môžete si to predstaviť ako odtlačok prsta (fingerprint) vašej správy. Výťažok správy predstavuje vašu správu tak, že ak by správa bola zmenená ľubovoľným spôsobom zodpovedal by jej odlišný výťažok správy. To umožňuje zistiť ľubovoľné zmeny urobené v správe falšovateľom. Výťažok správy je vypočítaný použitím kryptograficky silnej jednosmernej hash funkcie zo správy. Pre útočníka je výpočtovo neuskutočniteľné zostaviť náhradnú správu, ktorá by vyprodukovala rovnaký výťažok správy. V tomto ohľade, je výťažok správy lepší než kontrolná suma, pretože je jednoduché zostaviť správu, ktorá by mala rovankú kontrolnú sumu. Ale podobne ako pri kontrolnej sume, nie je možné odvodiť pôvodnú správu z jej výťažku.

Výťažok správy sám o sebe nepostačuje pre overenie pravosti správy. Algoritmus výpočtu výťažku správy je verejne známy a nevyžaduje pre svoj výpočet žiadne tajné kľúče. Ak by sme len pripojili k správe výťažok správy, falšovateľ môže pozmeniť správu a jednoducho pripojiť nový výťažok správy vypočítaný z novej pozmenenej správy. Aby sme dostali reálne overenie pravosti správy, odosielateľ musí zašifrovať (podpísať) výťažok správy svojím tajným kľúčom.

Výťažok správy sa počíta zo správy na strane odosielateľa. Výťažok správy a elektronická časová pečiatka spolu tvoriace digitálny podpis, alebo podpisovaný certifikát, sa zašifruje odosielateľovým tajným kľúčom. Odosielateľ posiela digitálny podpis spolu so správou. Príjemca prijme správu a digitálny podpis a zistí originálny výťažok správy z z digitálneho podpisu tým, že ho dešifruje s verejným kľúčom odosielateľa. Príjemca spočíta nový výťažok správy a porovná či sa zhoduje s tým, ktorý získal z digitálneho podpisu. Ak sa zhodujú, tak to dokazuje, že správa nebola pozmenená a že prišla od odosielateľa, ktorý vlastní verejný kľúč použitý pre kontrolu podpisu.

Potenciálny falšovateľ by musel buď vytvoriť pozmenenú správu, ktorá má rovnaký výťažok správy (čo je neuskutočniteľné), alebo by musel vytvoriť nový digitálny podpis z odlišného výťažku správy (tiež neuskutočniteľné, bez znalosti tajného kľúča pôvodného odosielateľa).

Digitálny podpis dokazuje, kto poslal správu a že správa nebola pozmenená úmyselne, alebo omylom. Tiež zaručuje neodvolateľnosť, to znamená, že odosielateľ nemôže jednoducho poprieť svoj podpis na správe.

Použitie výťažkov správy pre vytvorenie digitálnych podpisov má aj iné výhody okrem toho, že sú rýchlejšie než priame podpisovanie celej skutočnej správy pomocou tajného kľúča. Použitie výťažkov správ umožňuje aby podpisy boli malé a pevnej dĺžky, bez ohľadu na veľkosť skutočnej správy. Tiež umožňuje softwaru skontrolovať integritu správy automaticky, spôsobom podobným použitiu kontrolnej sumy. Tiež umožňuje uloženie podpisu oddelene od správy, dokonca aj na verejne dostupnom mieste, bez odhalenia citlivých informácií o skutočnej správe, pretože nikto nemôže odvodiť obsah nejakej správy z výťažku správy.

Výťažok správy, ktorý sa tu používa je MD5 Message Digest Algorithm, uvoľnený pre širokú verejnosť firmou RSA Data Security, Inc. Autor MD5, Ronald Rivest, napísal o MD5 toto:

Odhaduje sa, že náročnosť vytvorenia dvoch správ s rovnakým výťažkom správy je rádovo 2^64 operácií, a že náročnosť vytvorenia ľubovoľnej správy so zadaným výťažkom správy je rádovo 2^128 operácií. Algoritmus MD5 bol dôkladne preverený na slabiny. Je to ale relatívne nový algoritmus a ďalšia bezpečnostná analýza je prirodzene oprávnená, tak ako je to s každým novým návrhom takéhoto druhu. Úroveň bezpečnosti poskytovaná MD5 by mala byť postačujúca pre implementovanie veľmi bezpečných hybridných digitálnych podpisových schém založených na MD5 a RSA kryptosystému verejného kľúča.


Tak toľko o PGP.
PGP je v súčasnosti komerčná aplikácia pôvodný program, ktorý pôvodne vedela len spravovať kľúče, šifrovať a dešifrovať súbory a podpisovať či overovať elektronické podpisy. V týchto dňoch je rozšírená na celú suitu aplikácií, ktoré ponúkajú aj šifrovanie celých diskov a podobne.

Bratrancom PGP, ktorý sa drží pôvodnej myšlienky je Gnu Privacy Guard - GPG. GPG ponúka algoritmy:

Verejného kľúča - asymetrické šifry
RSA, RSA-E, RSA-S, ELG-E, DSA, ELG
Symetrické šifry
3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
Výťažky správ
MD5, SHA1, RIPEMD160
Kompresie
ZIP, ZLIB alebo nekompresované
Defaultné algoritmy sú zvýraznené.

IDEA je dostupná oddelene ako plugin, kvôli patentovým problémom. GPG je publikované pod licenciou GPL, a je dostupné na http://www.gnupg.org/.