Kako deluje?

Recimo, da želim osebi x poslati sporočilo in želim, da ga ne more prebrati nihče drug. Torej zakodiram sporočilo »samo« za osebo x. Osebi x pošljem kriptografski ključ, da lahko odkodira sporočilo. To je poenostavljen princip delovanja v kriptosistemu enega ključa.
V konvencionalnih kriptosistemih, kot je US Federal Data Encryption Standard (DES), je po en ključ za enkripcijo in dekripcijo. To pomeni, da mora biti ključ poslan preko varnih kanalov tako, da ga imata obe strani, preden se zakodirano sporočilo pošlje preko nezaščitenih kanalov. To je lahko zelo komplicirano. Pojavlja se vprašanje: »Če imamo varen kanal za izmenjavo ključev, zakaj sploh rabimo kriptografijo?«
V kriptosistemu javnega ključa obstajata dva komplementarna ključa: javno znan ključ in tajni oz. privatni ključ. Če poznamo javni ključ, ne pomeni, da lahko odkrijemo tajni ključ tako, da javni ključ objavimo in razpošljemo širom po komunikacijskem omrežju. Takšen protokol omogoča privatnost brez potrebe po varnih kanalih.
Vsak lahko uporabi objavljen javni ključ za ekripcijo sporočila tej osebi, vendar edino lastnik objavljenega javnega ključa lahko s svojim korespodentnim tajnim ključem odkodira sporočilo, ker le on pozna svoj tajni ključ. Niti oseba, ki je zakodirala sporočilo, le-tega ne more več odkodirati.
Avtentičnost sporočila je omogočena. Pošiljateljev tajni ključ se lahko uporabi pri kodiranju sporočila za signaturo oz. podpis. Ta način kreira digitalno signaturo sporočila, ki jo sprejemnik ali kdorkoli drug preveri oz. odkodira z uporabo pošiljateljevega javnega ključa. To dokazuje, da je pošiljatelj resnični pošiljatelj oz. noben drug ni poslal to sporočilo, ker le pošiljatelj pozna svoj tajni ključ. Nemogoče je ponarediti podpisano sporočilo in pošiljatelj ne more zanikati svojo signaturo.
Ta dva procesa je možno kombinirati za omogočanje privatnosti in avtentičnosti tako, da se najprej podpiše sporočilo z uporabo pošiljateljevega tajnega ključa, potem pa zakodira sporočilo s prejemnikovim javnim ključem. Prejemnik dela obratno: najprej odkodira sporočilo s svojim privatnim ključem, potem pa preveri signaturo s pošiljateljevim javnim ključem. Prejemnikov software postopek avtomatizira.
Ker je enkripcijski algoritem javnega ključa počasnejši od konvencionalne enkripcije enega ključa, je enkripcija pohitrena z uporabo algoritma visoko kvalitetne, hitre, konvencionalne enkripcije enega ključa. Originalni »goli« tekst se imenuje »plaintext«. V nevidnem procesu za konvencionalno kodiranje plaitext datoteke za uporabnika se uporablja začasni random ključ, ki je kreiran samo za eno uporabo. Potem se prejemnikov javni ključ uporabi za kodiranje tega začasnega random konvencionalnega ključa. Ta konvencionalni enkratuporabni javni ključ se pošlje skupaj z zakodiranim tekstom (cipertext) prejemniku. Prejemnik uporabi svoj tajni ključ za obnovo začasnega ključa in s tem začasnim ključem zažene hiter konvencionalni algoritem enega ključa za dekodiranje velikega cipertext sporočila.
Javni ključi so shranjeni v individualnih »certifikatih ključev«, ki vsebujejo ID lastnika ključa, datum kreiranja para ključev ter dejanski javni ključ. Certifikat javnega ključa vsebuje javni ključ, certifikat tajnega ključa vsebuje tajni ključ. Vsak tajni ključ je tudi zakodiran z lastnim geslom za primer kraje. Datoteka ključev oz. »key ring« vsebuje enega ali več certifikatov. Datoteka javnih ključev vsebuje certifikate javnih ključev, analogno za datoteko tajnih ključev.
Ključi so trajno povezani s ključevim ID, kar je »kratica« javnega ključa oz. zadnji pomembni 64 biti velikega javnega ključa. Na zaslonu vidimo samo spodnjih 32 bitov ključevega ID. Torej dva ključa lahko imata enak uporabniški ID, ampak ne moreta imeti enak ključev ID.
PGP uporablja »message digest« za kreiranje signatur. To je 128-bitna kriptografsko močna enousmerjena hash funkcija sporočila, ki se uporablja za preverjanje morebitnih sprememb v sporočilu. Nemogoče je računsko priti do drugega sporočila, ki bi imelo enako hash vrednost. Message digest se kodira s tajnim ključem za formiranje signature.
Dokumenti so podpisani tako, da se na začetek postavi signaturni certifikat, ki vsebuje ID ključa, uporabljenega za podpis, hash tajnega ključa podpisovalca dokumenta ter datum kreiranja signature. Prejemnikov software avtomatično poišče pošiljateljev javni ključ in uporabniški ID v prejemnikovi datoteki javnih ključev.
Začetek kode zakodirane datoteke vsebuje ID javnega ključa, uporabljenega za kodiranje. Ta začetna koda pomaga prejemniku, da poišče tajni ključ, potreben za dekodiranje sporočila. To avtomatično naredi prejemnikov software - poišče ga v datoteki tajnih ključev.
Ta dva principa oz. dve datoteki ključev sta osnovni metodi za shranjevanje in upravljanje javnih in tajnih ključev. Iskanje je avtomatično ali z uporabniškim ID ali s ključevim ID.


Nekatere notranje značilnosti PGP-ja
  PGP uporablja kriptografski generator naključnih števil za generiranje začasnega konvencionalnega ključa. Datoteka se imenuje »randseed.bin« in se ustvari pri kreiranju javnega/tajnega ključa z merjenjem časovnega razmaka med pritiski tipk tipkovnice. Ta generator, pri vsaki uporabi ključa, preišče datoteko »randseed.bin« in naključne vrednosti iz datoteke zmeša s časom dneva kreiranja. Uporablja klasični kodirni algoritem za generiranje števil.
Omenjena datoteka bi vsaj malo morala biti zaščitena, zaradi zmanjšanja napadov na uporabljane ključe. Vlomilec se bo namučil prej no dobil nekaj koristnega iz datoteke, ker se datoteka avtomatično kriptografsko zaščiti pred in po uporabi. Za vsak slučaj jo je potrebno zaščititi, da ne pride v napačne roke.
Če ne verjamete bilo kakšnemu algoritemskemu generatorju naključnih števil, potem se spomnite, da ste že verjeli in uporabljali konvencionalno kodiranje za zaščito sporočil. Če je dovolj je močna za to, potem je tudi dovolj močna za kreiranje naključnih števil za začasne, enouporabne ključe. PGP še vedno uporablja naključna števila fizičnega izvora (v glavnem čas med udarci po tipkovnici) za generiranje večuporabnega para javni/tajni ključ.
  PGP uporablja enoključni kodirni algoritem, imenovan IDEA. IDEA ima 64-bitne bloke za plaintext in ciphertext. Uporablja ključ velik 128 bitov. Zasnovana je na konceptu »mešanja operacij različnih algeberskih skupin«. PGP jo uporablja za 64-bitne CFB-je.
IPER/IDEA je nastala v ETH, Cirih. Razvijalca sta James L. Massay in Xuejia Lai. Prvič je objavljena 1990 pod imenom IPES (Improved Proposed Encryption Standard), kasneje sta avtorja spremenila ime v IDEA (International Data Encryption Algorithm). IDEA je bolj odporna na napade kot drugi kodirni algoritmi, npr.: DES, FEAL, REDOC-II, LOKI, Snefru in Khafre. Odporna je na kriptoanalitične napade Biham in Shamir-ja, akademskih kriptoanalitičnih skupin iz Belgije, Anglije in Nemčije ter mnogih vojaških služb širom Evrope.
Ljudje, ki razbijajo kodirne algoritme, trdijo, da je enako težko razbiti 128-bitni ključ IDEA kot 3100-bitni ključ RSA-ja. To je dober rezultat, ker se ponavadi uporablja 1024-bitni RSA ključ. S to velikostjo ključa in predpostavko, da je IDEA brez skritih slabosti, je nevarnost v algoritmu javnega ključa, ne v konvencionalni kriptografiji. Ni praktično uporabljati čisti RSA algoritem z velikimi ključi za kodiranje in dekodiranje dolgih sporočil. 1024-bitni RSA ključ bi dekodiral sporočilo 4000 krat počasnejše kot IDEA. Privlačnost kriptografijejavnega ključa ni v njenimoči v odnosu na klasično kriptografijo, ampak v pomoči pri upravljanju s ključi.
  Kodirani podatki se ne morejo stisniti (zapakirati), zaradi tega PGP zapakira podatke pred kodiranjem. Pakiranje podatkov skrajša modemski čas prenosa, zmanjša zasedenost diska ter poveča moč zakodiranosti. Številne kriptoanalize izkoriščajo redundanco plaintexta za razbijanje kodiranja. Podatkovna kompresija to redundanco zmanjšuje.
Uporabnik lahko uporabi PKZIP za kompresijo plaintexta, ker PKZIP ali kompatibilen freeware ZIP lahko skupaj zapakira razdeljene datoteke. PGP ne kompresira že kompresirano datoteko.
Noveše verzije PGP-ja uporabljajo ZIP kompresijsko rutino, čigavi avtorji so Jean-Loup Gailly, Mark Adler in Richard B. Wales. Zip je izbran ker ima dostopno C izvorno kodo, zelo dobro kompresijsko vrednost in zaradi hitrosti.
Na mnogih FTP straneh je dostopen freeware kompresijski program HPACK od Peter Gutmann-a, ki zakodira stisnjeno datoteko uporabljajoči PGP podatkovni format in datoteko ključev.
  Za kreiranje digitalne signature, PGP kodira s tajnim ključem, ampak s tajnim ključem ne kodira celotno sporočilo, ker bi predolgo trajalo. Namesto tega PGP kodira s tajnim ključem samo izvleček sporočila.
Izvleček sporočila je 128-bitno jedro »destiliranega« sporočila, v konceptu podobno checksumi, nekaj kot prstni odtis sporočila. Predstavlja sporočilo v smislu, če bi bilo sporočilo spremenjeno na bilo kakšen način, tudi bi se spremenil izvleček sporočila. To omogoča detekcijo sprememb sporočila. Izračuna se z uporabo kriptografsko močne, enousmerjene hash funkcije. Praktično je nemogoče najti drugo sporočilo, ki bi podalo enak izvleček. Torej, uporaba izvlečka sporočila je dosti uporabnejša kot checksum, ker je zelo enostavno najti dva sporočila za enako cheksumo. Izvleček sporočila ni enousmerjena funkcija, torej iz izvlečka lahko dobimo prvotno sporočilo.
Za zagotovitev avtentičnosti sporočila se izvleček sporočila zakodira (podpisati) s tajnim ključem pošiljatelja.
Pošiljatelj izračuna izvleček iz sporočila. S pošiljateljevim tajnim ključem se izvleček zakodira ter z elektronsko časovno znamko se formira digitalna signatura ali signaturni certifikat. Pošiljatelj pošlje digitalno signaturo skupaj s sporočilom. Prejemnik prejme sporočilo in digitalno signaturo ter obnovi prvotni izvleček sporočila iz digitalne signature tako, da dekodira signaturo s pošiljateljevim javnim ključem. Prejemnik izračuna novi izvleček sporočila iz sporočila ter ga primerja s tistim iz digitalne signature. Če se ujemata, potem je sporočilo avtentično.
Ni možno narediti lažno sporočilo, ki bi podalo enak izvleček sporočila kot prvotno sporočilo; tudi ni možno kreirati lažno signaturo brez poznavanja tajnega ključa tako, da digitalna signatura dokazuje avtentičnost sporočila in onemogoči pošiljatelju nepriznavanje lastne signature.
Druge prednosti so: signatura je male velikosti, zanemarljive v primerjanju z velikostjo sporočila; omogoča avtomatično software-sko preverjanje avtentičnosti sporočila; lahko se shrani ločeno od sporočila, tudi v javnih arhivah, ker noben ne more priti do vsebine sporočila iz samega izvlečka.
 

    NAZAJ                                                        NAPREJ