GnuPG - Kriptiranje i zaštita poruka |
| 1 | 2 | 3 | |
Uobičajena razmjena elektroničke pošte, ili slanja bilo kakvih podataka putem nekog telekomunikacijskog kanala, ili općenito preko usluga (servisa) Interneta, podložna je mogućem prisluškivanju i zlouporabi. Ovisno o okolnostima posljedice mogu biti pogubne. Stoga su razvijene metode koje služe da se svima razumljivi sadržaji učine nerazumljivim prema određenom algoritmu - KLJUČU prije slanja sadržaja, a da se po primitku tih sadržaja po istom algoritmu ali obrnutim postupkom nerazumljivi sadržaj učine razumljivim. Postupak 'skrivanja' izvornog sadržaja naziva se ŠIFRIRANJE, a postupak 'otkrivanja' izvornog sadržaja iz 'skrivenog' naziva se DEŠIFRIRANJE. Metodama koje to omogućavaju bavi se KRIPTOGRAFIJA - znanost bazirana na primijenjenoj matematici glede zaštite poruke od neovlaštene uporabe, a koja se može prenositi na različite načine pa tako i kao elektronička poruka putem komunikacijskog kanala. Osobitom programskom potporom šifrira (enkriptira) se elektronička pošta tako da je nitko ne može dešifrirati (dekriptirati) osim osobe kojoj je namijenjena, ili dodaje digitalni potpis na razumljivi proizvoljan tekst poruke glede provjere njene autentičnosti.
Još od davnina ljudi se služe različitim kriptografskim metodama kako bi skrili originalnu poruku tako da bude potpuno nerazumljiva osobama koje bi neovlašteno došle u njen posjed. S vremenom se javila i ideja prikaza slova drugim simbolima, ili jednostavno izmiješanim slovima prema nekoj zakonitosti. Ovakve i slične jednostavne metode korištene su sve do srednjeg vijeka, kada se pokazala potreba za boljim metodama skrivanja tajni, najčešće zbog utjecaja politike i religije. Primjeri koji su danas u uporabi kao Morse-ov kod, Braille-ovo pismo i ASCII kod nisu kriptografija već kodiranje, ali kodiranje i dekodiranje sastavni su dio kriptografije.
Jedna od prvih primjena enkriptiranja poruka datira iz doba rimskog carstva koje je koristilo vrlo jednostavni algoritam kriptiranja tako da se slova abecede pomiču za tri u desno:
ABCDEFGHIJKLMNOPQRSTUVWXYZ - Drago
Pomicanjem za 3 mjesta nadalje dobiva se alternativna abeceda:
DEFGHIJKLMNOPQRSTUVWXYZABC - Gudjr
Prema navedenom je D=>G, r=>u pa nadalje. Iz novije povijesti, iz drugog svjetskog rata poznata je naprava koju je rabila njemačka vojska zvana ENIGMA, elektromehanički uređaj poput pisaćeg stroja koji je imao zadaću ispremiješati znakove prema zadanom ključu, bez obzira da li se znak ponavlja ili ne.
Slika 1.1 Enigma. |
U to doba saveznici su angažirali velike materijalni i ljudske resurse kako bi se dešifrirale poruke šifrirane s Enigmom. Jedna od učinkovitih metoda bila je i 'krađa' ovog uređaja, o čemu je i snimljen film 'U-571' koji opisuje zarobljavanje Enigme iz oštećene njemačke podmornice. Danas u eri brzih i učinkovitih računalnih uređaja kriptografija je značajno napredovala što je osim uspješnosti šifriranja omogućilo i metode uspješnog 'razbijanja' šifre. Na Internetu se mogu pronaći stranice koje Enigmu pomoću 'Java Script' dodatka uspješno simuliraju. U to doba nije bilo računala koje je to moglo brzo i uspješno obaviti. U osnovi šifra mora biti sigurna od 'provaljivanja' onoliko dugo koliko je potrebno da se izvrši zadaća koju šifrirana poruka uspješno skriva. A uspješnost u osnovi ovisi o algoritmu i složenosti KLJUČA. Jaki kriptografski alati i algoritmi uživaju status sličan nuklearnom naoružanju i nerijetko su državna tajna najvišeg prioriteta. Ipak, povjerljive dokumente još uvijek nosi kurir okružen pratnjom.
Promatrano prema OSI modelu, kriptiranje se može vršiti na bilo kojem sloju koji sadrži podatke, dakle ili znakovno ili binarno. Ako se primjenjuje na sadržaje koji se šalju elektroničkom poštom, riječ je o kriptiranju znakova, što je i tema ovih stranica.
U osnovi koriste se dvije vrste algoritama u postupku kriptiranja:
Već ovaj kratki opis pokazuje koji je mehanizam jednostavniji. Simetrični ključ sličan je zaštiti zaporkom sadržaja u komprimiranoj datoteci (.zip, .rar ...), no zaporka samo štiti sadržaj a ključ i pripadni mu algoritam mijenjaju sadržaj što nije isto. Načelo korištenja simetričnog i asimetričnog ključa prikazuju naredne slike.
Slika* 1.2 Simetrično / Asimetrično kriptiranje poruke. ( + / - ) |
Kod simetričnog kriptiranja primatelj može pročitati poruku samo ako mu se dostavi ključ koji ima i pošiljatelj. Dobra osobina je jednostavnost, a loša osobina je nemogućnost čitanja poruke od strane pošiljatelja i primatelja ako se ključ izgubi i potreba za čestom promjenom ključa glede sigurnosti. Asimetrični algoritam povećava sigurnost analogno korištenju dva ključa za kasu, rješava problem gubljenja ključa pošiljatelja, ali ne rješava problem brze zamjene postojećeg ključa novim ključem. Ako se uzme u obzir 'tromost' korisnika glede ažuriranja ključeva sa sigurnosnog aspekta prikazana rješenja nisu učinkovita. Problem je riješio Philip Zimmermann 1991. godine kada objavljuje PGP (Pretty Good Privacy - Prilično Dobra Privatnost) programsku potporu za enkripciju i digitalno potpisivanje. Uzima najbolje karakteristike iz područja simetričnih i asimetričnih sustava kriptiranja kombinirajući ih u moćan protokol. Mehanizam se je pokazao tako dobar da je umalo ostatak života proveo u zatvoru zbog njegovog javnog publiciranja. Optužba se je temeljila na izvozu jake kriptografske programske potpore van SAD što je po njihovim zakonima zabranjeno.
PGP mehanizam kriptiranja koristi simetrično i asimetrično kriptiranje (hybrid cryptosystem) kako prikazuje naredna slika. Svaki korisnik raspolaže asimetričnim parom ključeva od kojih je jedan osobni (private) a drugi javni (public). Podaci se štite JEDNOKRATNIM simetričnim ključem koji se automatski generira za svaku poruku (sesiju) ponaosob, a ključ s kojim je to obavljeno šalje se pošiljatelju zaštićen asimetričnim kriptiranjem pomoću JAVNOG ključa primatelja. Jednokratni ključ generira PGP (GnuPG) programska potpora i složenost njegovog generiranja glavni je sigurnosni čimbenik u postupku kriptiranja. Što je vremensko razdoblje u generiranju slijeda ključeva dulje utoliko je teže otkriti način na koji se slijed generira temeljem 'prisluškivanja' njegovih dijelova. Ako je važnosti programske potpore i mjesta njene primjene velika, ponavljanje slijeda generiranih ključeva mjeri se u godinama, unatoč današnjim brzim i moćnim računalnim resursima.
Dijelovi PGP programske potpore su:
Za svaku poruku generira novi jednokratni ključ veličine 128 bit-a. Računalo generira jednu od mogućih 2128 = 340 282 366 920 938 463 463 374 607 431 768 211 456 različitih binarnih kombinacija (oko 1039 kombinacija). Ali računalo nije u stanju kreirati stvarno 'slučajno' generirane binarne brojeve, već koristi generator pseudo-slučajnih brojeva koji generira niz brojeva koji se čine slučajni, ali u stvarnosti se niz generira uvijek na isti način. Stoga se definira početno stanje od kojeg ovaj generator započinje rad i koje nije uvijek isto. Mogućnost probijanja PGP sustava postoji, ali samo ako se zna početno stanje generatora pseudo-slučajnih brojeva, jer je jedino u tom slučaju moguće predvidjeti niz brojeva koji će se generirati. Rješenje tog problema je dobro skrivanje početnog stanja generatora o čemu brine PGP programska potpora. Načelo rada PGP mehanizma kriptiranja prikazuje naredna slika.
Slika 1.3 PGP kriptiranje poruke pomoću jednokratnog (sesijskog) ključa. |
Simetrično kriptiranje, koje se odnosi na kriptiranje same poruke, koristi JEDNOKRATNI ključ tijekom postupka (sesije) enkriptiranja i dekriptiranja poruke. Naredna poruka je nova sesija s novim ključem. Svaka nova poruka traži novi JEDNOKRATNI (sesijski) ključ. Jednokratni ključ pošiljatelj enkriptira pomoću javnog ključa primatelja koristeći asimetrični algoritam. Nakon što je to obavljeno, enkriptirana poruka šalje se zajedno s enkriptiranim jednokratnim ključem za njezino dekriptiranje. Ukoliko se ne odredi drugačije PGP će u prvom koraku izvršiti kompresiju podataka u poruci ZIP algoritmom, bez zaporke, što u suštini ne mijenja poruku ali je čini količinski manjom i otpornijom na traženje ponovljenih uzoraka glede 'provale'.
Da bi primatelj pročitao poruku mora se poslužiti svojim osobnim i javnim ključem da dekriptira jednokratni ključ poruke. Potom s njim dekriptira samu poruku. Javni ključ u poruku je ukomponirao pošiljatelj bilo da mu ga je primatelj osobno dao ili se javni ključ primatelja nalazi na nekom od javnih PGP poslužitelja Interneta. Dakle, javni i osobi ključ osobe su matematički povezan neraskidiv par koji u zajednici s jednokratnim ključem omogućava enkriptiranje i dekriptiranje poruka. Poruka se može enkriptirati samo s jednim JAVNIM ključem, što znači da je usmjerena prema jednom korisniku i istovremeno slanje poruke na više adresa nije moguće.
Za čuvanje javnih ključeva na Internetu služi PKS poslužitelj (Public Key Server) koji omogućava prihvat i razmjenu JAVNIH PGP i njima kompatibilnih ključeva, na primjer 'pks.aaiedu.hr' je javni PKS poslužitelj mreže CARNet koji je u sinkronizaciji s ostalim poslužiteljima PGPNet svjetske mreže. Javni ključ objavljen na bilo kojem od poslužitelja u svijetu identificira se i preko navedenog poslužitelja bez obzira da li je preko njega objavljen ili ne. Na svakom od poslužitelje po postupku sinkronizacije s ostalima tvore se redundantne kopije ključa po svijetu u decentraliziranoj mrežnoj strukturi, te je ključ neprekidno raspoloživ. Jednom objavljeni javni ključ ne može se obrisati; samo se može proglasiti nevažećim, ali jedino ako je osobni ključ raspoloživ i ako se zaporka nije zaboravila :-).
Kako provjeriti da osobni ključ odgovara javnom ključu osobe kojoj se šalje poruka? Ako primatelj želi provjeriti tko je pošiljatelj poruke, pošiljatelj je treba 'POTPISATI', što čini pomoću vlastitog osobnog ključa. Primatelj koristeći javni ključ pošiljatelja uz činjenicu da su osobni i javni ključ jednoznačno matematički povezani, provjerava da li je potpis valjan. Ukoliko je potpis valjan, znači da je navedeni pošiljatelj ujedno i stvarni pošiljatelj poruke, jer po definiciji, samo pošiljatelj zna svoj osobni ključ, pa njegov potpis nitko ne može krivotvoriti. DIGITALNI POTPIS se ostvaruje na sljedeći način.
Slika 1.4 Potpis nešifrirane poruke. |
Pošiljatelj pravi sažetak poruke algoritmom za računanje sažetka (hash funkcija) kojeg enkriptira svojim osobnim ključem te sažetak šalje zajedno uz poruku ili odvojeno od poruke. Hash funkcija od male ili vrlo velike poruke uvijek pravi skraćeni oblik konstantne veličine (message digest). Ovako enkriptiran sažetak poruke predstavlja potpis poruke (fingerprint) koji će odgovarati primljenoj poruci samo ako potpis ili poruka nisu mijenjani, odnosno ako je osoba koja je poslala poruku stvarno ona osoba za koju se izdaje.
Kada primatelj primi poruku i njen potpis, on dekriptira sažetak javnim ključem pošiljatelja. Nakon što dekriptira sažetak, računa sažetak dobivene poruke te ga uspoređuje s dekriptiranim sažetkom. Ako su sažeci isti, poruka je autentična. Potpis se može koristiti samostalno u slučaju da poruka nije povjerljiva te je ne treba je enkriptirati, no od velike važnosti je njena autentičnost i integritet. Poruka se može potpisati samo s jednim OSOBNIM ključem, što znači da je istovremeno slanje nešifriranih potpisanih poruka na više adresa moguće. Provjera potpisa vrši se javnim ključem pošiljatelja.
Prema dosad opisanom logično je da se poruka istovremeno može i šifrirati i potpisati jer je tada primatelj siguran da je poruka poslana upravo od onoga tko tvrdi da je poslao poruku te je siguran da tu poruku nitko osim njega ne može pročitati. Analizom prethodnih slika 1.3 i 1.4, prema navedenom može se istovremenim šifriranjem i potpisivanjem koristiti i javni i privatni ključ koji su zapisima unutar njih međusobno povezani. Poruka se prvo potpiše pošiljateljevim osobnim ključem, a zatim se šifrira primateljevim javnim ključem te potom pošalje, bez uporabe jednokratnog ključa. Poruka se tada tretira kao DIGITALNI PEČAT.
Na prikazanim shemama kriptiranja, plavom bojom označeni dijelovi u strelicama koje opisuju smjer odvijanja postupaka šifriranja i dešifriranja poruke ili ključeva označavaju komunikacijski kanal koji povezuje dvije krajnje točke u komunikaciji; korisnika ' A ' i korisnika ' B '.
A što je to ključ? Ako se uz određenu stranicu točno određene knjige priloži list papira s rupicama koji će postavljanjem na točno određenu stranicu pokriti većinu znakova i omogućiti čitanje točno određenih znakova, onda taj papir predstavlja ključ za čitanje te stranice, a raspored rupa je algoritam. Za cijelu knjigu trebao bi ključ za svaku stranicu, a u današnjim metodama kriptiranja koristi se skupina slova koja vrijedi za cijelu poruku kako prikazuje naredni primjer.
Primjer I
Primjer generiranog para ključeva potrebit za PGP postupak kriptiranja.
************************************************************************ * WARNING: This file is a backup of your secret key. Please keep it in * * a safe place. * ************************************************************************ The key backed up in this file is: pub 1024D/3D0C8FF8 2009-04-26 (veličina_ključa_u_bit-ovima/IDENTIFIKATOR Datum-kreiranja-ključa) Key fingerprint = 98FF 938A 6AF6 AEF6 1B33 C8BC F719 447B 3D0C 8FF8 (kontrolni zbroj određenih parametara javnog ključa) uid Drago Radic (Za potrebe 'abecede') <tupko@buzdo.com> sub 1024g/A133AFBD 2009-04-26 -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.10 (MingW32) mQGiBEn0MvMRBACg5QL4VYjutTntcz0Xgnvy4MdF7yXofTJsg5faGVkWsEW/ZwNe QoVIZrWdls2wiXHkxLQ/1ehcMeo5bJdkthJYuw1jr2noDsC9zdhtw68X9vDbQdwi A7S+FLB88HsNbXfueKgeyhGXh5qlmBOzXNdwi/MR5X8hft1iimem4JaMhwCgynHq j+cndNIcTH9meQ4c1R2XPAUD/2719NBSUtfJ8vY7SVNXW24mkd5s+pAn/zS4pzcU BZA0sjxa83I+D r1AXosnNrIkQ4v2E7m oiy45v01UsnAI tU8/nZDmGCCZoFg1NU 3Ur2A/9LQrM9S Ovaj JAVNI KLJUČ XJEjY2cF/Fwx/Gw+bq wQCusWoWg7Vsq u osnovi se 9mla+Z/tYt16qI8cWh kR804faea5ygp javno objavljuje wlELQ0RHJhZ28gUmFk aWMgKFphIHBvd na poslužitelju V6ZG8uY29tPohgBBMR AgAgBQJJ9DLzA javnih ključeva. AACgkQ9xlEez0Mj/iO EQCfVOAUmkQud Ne može se zlouporabiti H9h5HIAeCS3EuquQEN BEn0MvMQBAClr bez osobnog ključa. UCIbEXCxgK1uRvFNYR WvEv90oGzom/h brg5HhphXXljl5exVY IG7L/7HWGXbF/ V1fttdvwADBQQAgyY1 UhHji2w/D/UCq3L6MWiUq7vUX74R12Fp0CoJYnZnuVwaaMlGy/Iip1DROGaE5evG uyRE/z+M2flsdDvn10ENRRAknK1MQFdFpnxoPCW29Gd1ASuCLuSnAtlQ2CKMc8VR 7GMx3gSsVjXvK8tnavLP2aXTUK2HFsdaIVEr7TiISQQYEQIACQUCSfQy8wIbDAAK CRD3GUR7PQyP+NuBAKCvFmvZ3lkNYFg4LpLn83RgjahUwwCfU1PrT7QmZfBEVfxY Jcu68U5HmZg= =EbV+ -----END PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PRIVATE KEY BLOCK----- Version: GnuPG v2.0.10 (MingW32) lQHhBEn0MvMRBACg5QL4VYjutTntcz0Xgnvy4MdF7yXofTJsg5faGVkWsEW/ZwNe QoVIZrWdls2wiXHkxLQ/1ehcMeo5bJdkthJYuw1jr2noDsC9zdhtw68X9vDbQdwi A7S+FLB88HsNbXfueKgeyhGXh5qlmBOzXNdwi/MR5X8hft1iimem4JaMhwCgynHq j+cndNIcTH9meQ4c1R2XPAUD/2719NBSUtfJ8vY7SVNXW24mkd5s+pAn/zS4pzcU BZA0sjxa83I+D r1AXosnNrIkQ4v2E7m oiy45v01UsnAI tU8/nZDmGCCZoFg1NU 3Ur2A/9LQrM9S Ovaj OSOBNI KLJUČ XJEjY2cF/Fwx/Gw+bq wQCusWoWg7Vsq čuva se u vidu 9mla+Z/tYt16qI8cWh kR804faea5ygp datoteke na nekom wlEP4CAwKwpLUMFYL2 1GCCLOHtvvE7n od medija za pohranu pbs5+RgTEs4mRx3r7N yhqgerQ0RHJhZ podataka ili ispisan, NlZGUnKSA8dHVwa29A YnV6ZG8uY29tP i mora biti nedostupan QVAggDBBYCAwECHgEC F4AACgkQ9xlEe drugim osobama glede LWdRsAn034hClIJqR6 kJH9h5HIAeCS3 sprječavanja njegove dk2L5Vxhab6eLDPhED rEUCIbEXCxgK1 zlouporabe. ORNIX8IoLMLPj+9aRc U9brg5HhphXXl 2MBA7k8DRy9ktgvpUG FCV1fttdvwADB 4R12Fp0CoJYnZnuVwa aMlGy/Iip1DROGaE5evGuyRE/z+M2flsdDvn10ENRRAknK1MQFdFpnxoPCW29Gd1 ASuCLuSnAtlQ2CKMc8VR7GMx3gSsVjXvK8tnavLP2aXTUK2HFsdaIVEr7Tj+AgMC sKS1DBWC9tRgY4xuob6P+A8mTt+muSuHShZwODekDIP2ZTIAA7WdtJqGSSHn5sm+ IohczFFz2L4pYfvmGvuw1a9MO1zSElGISQQYEQIACQUCSfQy8wIbDAAKCRD3GUR7 PQyP+NuBAJ4m0c1vfiiVVy96quvbDrq/ajgLJgCZAWgQ/jC7wB4Hd3XGWiGuysE2 j6M= =eYIR -----END PGP PRIVATE KEY BLOCK-----
Prikazani sadržaj je sigurnosna kopija asimetričnih ključeva (backup) spremljena u datoteku secret-key-3D0C8FF8.asc. Prilikom generiranja prikazanog para ključeva, javnog (public) i osobnog (private), traži se definiranje sigurnosne FRAZE, koja služi za generiranje ključa i kao neka vrst zaporke; što je duža daje raznolikiji ključ i dozvoljava unos izmjena u ključu, na primjer 'Buzdo je glup'. Ovu datoteku treba čuvati na više sigurnih mjesta, ali ne smiju biti toliko sigurna da se poslije ne može pronaći :-). Promjenom fraze mijenja se sadržaj osobnog ključa. Već je rečeno da su osobni i javni ključ jednoznačno matematički povezani tako da jednog nije moguće otkriti bez drugog.
Javni i / ili osobni ključevi dodaju se u .gpg datoteke tzv. prsten ključeva (keyring), bazu - kolekciju ključeva u koju se ključevi mogu dodavati ili iz nje brisati. Dakle, postoje dva prstena ključeva: javni i osobni (tajni). Svaki par ključeva ima svoju jedinstvenu oznaku glede prepoznavanja - identifikator (8 znakova; 64 bit-a).
U svakom bloku ključa spominju se pojmovi PGP i GnuPGP u zaglavlju bloka. OpenPGP je najčešće korišteni standard za šifriranje e-pošte na svijetu. Ona je definirana od strane radne grupe za OpenPGP Internet Engineering Task Force (IETF) u standardu RFC 4880. OpenPGP standard je izvorno izveden iz PGP (Pretty Good Privacy) predloška koji je izvorno kreirao 1991. godine Phil Zimmermann. No proizvod je komercijaliziran i jedino što je besplatno je preuzimanje demo programske potpore i ne plaćaju se licenčna prava (otuda riječ 'Open'). Na njegovim osnovama zajednica je odgovorila besplatnim 'GNU Privacy Guard' projektom o kojemu se više može naći na stranicama prema kojima vodi spojnica-logotip u vrhu ove stranice (osnovno o GNU opisano je u rječniku).
Projekt se u osnovi bavi izradom programske potpore za Linux i Windows platformu, iako kompilirani izvorni kod radi i na drugim platformama. 'Gpg4win' je besplatna računalna programska potpora za Windows operativne sustave (2000 / XP / 2003 / Vista) koja omogućava šifriranje e-pošte i datoteka. Oba kriptografska relevantna standarda su podržana, OpenPGP i S / MIME (potonji trenutno radi u sastavu 'Claws Mail' programske potpore). Oba se temelje na uporabi MIME (Multipurpose Internet Mail Extensions) strukture poruka koje koristi elektronička pošta. Programska potpora sastoji se od slijedećih programskih dijelova:
Besplatnu programsku potporu za Windows platformu, u sastavu GnuPG projekta (GPG) moguće je preuzeti sa sjedišta na adresi: https://www.gpg4win.org/download.html. Windows platforma odabrana je za opis zbog činjenice da je koristi približno 97% čitatelja ovih stranica. Naredne stranice opisuju kako navedeno koristiti.
Komplicirano? Zaista jeste, ali programski uradak 'EssentialPIM', kojemu je logo slika u zaglavlju paragrafa (slika je ujedno i poveznica prema sjedištu firme ASTONSOFT koja ga je izradila), rješava sve navedeno na vrlo jedostavan način. 'EssentialPIM' se tijekom mnogih godina razvio u fleksibilnu, ali vrlo intuitivnu programsku potporu koja je korisniku razumljiva za uporabu za nekoliko minuta rada s njom. Sve njezine značajke osiguravaju da je korisnik uistinu pravi gospodar svojih podataka. A dobar proizvod treba platiti, zar ne?
| 1 | 2 | 3 | |
Citiranje ove stranice: Radić, Drago. " Informatička abeceda " Split-Hrvatska. {Datum pristupa}; https://informatika.buzdo.com/pojmovi/datoteka. Copyright © by Drago Radić. Sva prava pridržana. | Odgovornost |