Kriptografija javnog ključa alatom GnuPG - GASERI


U današnje vrijeme mrežna razmjena dokumenata postala je glavna vrsta razmjene u privatnim i poslovnim sferama. Poslovni, a i privatni dokumenti vrlo su primamljivi pojedincima ili organizacijama koje razmišljaju o njihovoj neovlaštenoj upo...



Onion Details



Page Clicks: 1

First Seen: 03/15/2024

Last Indexed: 09/18/2024

Domain Index Total: 397



Onion Content



Kriptografija javnog ključa alatom GnuPG - U današnje vrijeme mrežna razmjena dokumenata postala je glavna vrsta razmjene u privatnim i poslovnim sferama. Poslovni, a i privatni dokumenti vrlo su primamljivi pojedincima ili organizacijama koje razmišljaju o njihovoj neovlaštenoj upotrebi i korištenju u neplanirane svrhe. U samim počecima ovakve razmjene, kako bi se riješio problem sigurne mrežne komunikacije, bilo je potrebno stvoriti protokol za enkripciju poruka koji bi bio dovoljno siguran da se počne na veliko koristiti. Najviše korišten način enkripcije podataka je standard OpenPGP i njegove najpoznatije implementacije Pretty Good Privacy (PGP) i GNU Privacy Guard (GnuPG) . U nastavku će biti opisan GnuPG, njegova konfiguracija i povezivanje sa poslužiteljima ključeva. Kriptografija javnog ključa - Kriptografija javnog ključa (engl. Public Key Infrastructure , kraće PKI) otkrivena je 70-ih godina, temelji se na paru komplementarnih ključeva koji obavljaju operacije enkripcije ili dekripcije, poznata je i kao asimetrična kriptografija. Prvi ključ je javni (engl. public key ), a drugi tajni (engl. private key ). Javni ključ slobodno se distribuira. Enkripcija i dekripcija obavljaju se asimetričnim algoritmima koji su definirani tako da koriste par ključeva od kojih se bilo koji može koristiti za kriptiranje. Ako se koristi jedan ključ iz para za kriptiranje, onda se drugi ključ iz para koristi za dekriptiranje. Obično se kriptiranje obavlja javnim ključem, a dekriptiranje tajnim, tako poruku može dekriptirati samo vlasnik tajnog ključa. Javni ključevi su javno dostupni. Bitno je napomenuti da je jedna od osnovnih sigurnosnih pretpostavki kriptografije javnog ključa ta da je (praktički) nemoguće izvesti tajni privatni ključ iz poznatog javnog ključa. Postoji mnogo praktičnih primjena kriptografije javnog ključa, među kojima su najbitnije: Digitalno potpisati poruku znači kreirati tekstualnu reprezentaciju poruke (sažetak) i kriptirati je tajnim ključem. Digitalni potpis autentificira pošiljatelja i čuva integritet poruke. Hash algoritam je skup matematičkih operacija kojima se iz dokumenta generira jedinstven sažetak, hash kod ili otisak poruke (engl. message digest) iz kojeg je nemoguće ponovno kreirati izvorni dokument. Postoji više hash funkcija (MD5, SHA-1, SHA-256, ...), one za svaki ulazni niz bilo koje duljine daju izlazni niz iste fiksne duljine. Kreirani digitalni potpis prilaže se izvornoj poruci. Samo potpisnik, vlasnik tajnog ključa, može kreirati takav digitalni potpis. Također, svatko uz posjedovanje javnog ključa potpisnika može provjeriti valjanost digitalnog potpisa. Dovoljno je usporediti dva sažetka: prvi koji se dobije dekriptiranjem digitalnog potpisa i drugi koji se dobije primjenom hash funkcije na izvornu poruku. Ako se ta dva sažetka poklapaju, digitalni potpis je valjan. GnuPG - Sve implementacije OpenPGP-a koriste kombinaciju simetričnog i asimetričnog algoritma za enkripciju te algoritma za stvaranje hash otiska poruke. Princip rada je ostao isti od početka postojanja standarda, mijenjali su se samo korišteni algoritmi. Programi PGP i GnuPG omogućavaju šifriranje i digitalni potpis dokumenata. Princip rada oba programa je sličan i bazira se na kombinaciji raznih enkripcijskih algoritama kako bi se postigla što veća razina sigurnosti. Prva verzija programa GnuPG je razvijena 1999. godine unutar open source zajednice kao odgovor na brojne patentne i zakonske probleme koji su se javljali kod distribucije PGP programa. GnuPG posjeduje tekstualno korisničko sučelje, ali i brojne dodatke koji omogućuju njegovo korištenje putem grafičkog sučelja. Datoteke se kriptiraju pomoću asimetričnog para enkripcijskih para ključeva kojega pojedinačno stvara svaki korisnik. Par ključeva sastoji se od privatnog ključa, koji je poznat samo korisniku, i javnog ključa kojega je moguće distribuirati na različite načine (npr. putem Interneta pomoću različitih poslužitelja). Lokalni rad s ključevima - Postupak stvaranja para enkripcijskih ključeva započinje naredbom: Ovom naredbom stvara se direktorij .gnupg unutar kojega se pohranjuju ključevi, konfiguracijske datoteke i slično. Nakon što odaberemo vrstu ključa, duljinu u bitovima, valjanost ključa, ime, e-mail adresu i lozinku, stvoren je par ključeva. Ključ se generira uz pomoć slučajnih vrijednosti koje program skuplja iz ugrađenog generatora slučajnih brojeva. Sigurnost ključa može se povećati unošenjem slučajnih znakova preko tipkovnice. Vidimo redom: javni ključ, 2048-bitni RSA ključ, ID ključa, otisak ključa koji služi za autentifikaciju, ID korisnika ključa. Sljedeća naredba omogućava nam ispis svih generiranih ključeva, ovdje provjeravamo je li ključ ispravno unesen u bazu: Generirani ključ može se ispisati naredbom: što u našem slučaju postaje: Naredba --armor (ili kraće --a) određuje hoće li ključ biti zapisan u tekstualnom ili binarnom obliku. Još jedan slučaj je eksportiranje u datoteku, npr.: Za učitavanje ključeva u program (tj. u bazu podataka javnih ključeva) iz datoteke koristimo naredbu: gdje ime_datoteke označava datoteku u kojoj se nalaze željeni ključevi. Ako se izostavi, program će ključ čitati sa standardnog ulaza. Fingerprint naredba ispisuje otisak pohranjenih ključeva. To je jedan od načina kako se može provjeriti autentičnost primljenog ključa. Prije korištenja uvezenog javnog ključa, potrebno ga je potpisati: Datoteku je moguće kriptirati naredbom (u ovom slučaju Viktor je primatelj datoteke): Viktor tada može dekriptirati datoteku naredbom: Sljedećom naredbom možemo deekriptirati poruku u .txt datoteku. Rad s poslužiteljem ključeva - Naredbe koje koristimo kako bi komunicirali sa poslužiteljem ključeva su sljedeće; opciju --keyserver koristimo ako u datoteci gpg.conf imamo navedeno više poslužitelja: Slanje ključeva na poslužitelj: Primanje ključeva sa poslužitelja: Pretraga ključeva na poslužitelju: Poslužitelji ključeva i način konfiguracije - Poslužitelji ključeva (engl. keyservers ) koriste se za distribuciju javnih ključeva s drugim poslužiteljima ključeva kako bi drugi korisnici mogli po imenu ili e-mail adresi pronaći javni ključ određene osobe kojoj misle poslati kriptiranu poruku. To eliminira proces fizičke ili nesigurne razmjene javnih ključeva i omogućuje drugima da nas mogu pronaći u bazi podataka na Internetu. Instalacija poslužitelja SKS - Synchronising Key Server (SKS) je OpenPGP poslužitelj čiji je cilj jednostavnost implementacije, decentraliziranost i vrlo pouzdana sinkronizacija. Slijedi nekoliko osnovnih koraka instalacije i konfiguriranja poslužitelja SKS: Prva naredba je jasna, radi se o instalaciji poslužitelja, poslije toga potrebno je konfigurirati/stvoriti datoteku /etc/sks/sksconf i unijeti odgovarajuće podatke, za potrebe ovog primjera promijenjen je samo hostname koji je postavljen na localhost . Sadržaj datoteke je: Sljedeća konfiguracijska datoteka je /etc/sks/membership , ona sadrži sve SKS čvorove (hostname i portove) s kojima želimo uspostaviti komunikaciju. S obzirom da ne možemo početi sa praznom bazom ključeva, još jedan važan korak je kreiranje dump direktorija, gdje će biti sadržani svi ključevi. Potrebno je pokrenuti skriptu sks_build.sh u root direktoriju SKS poslužitelja. Pokrećemo SKS bazu podataka: Ako dobijemo sljedeću poruku, znamo da smo imali puno sreće pri konfiguraciji i pokretanju baze poslužitelja: Lokalna komunikacija - U ovom poglavlju prikazana je komunikacija između običnog korisnika i administratora prijavljenih na istom računalu. Svaki korisnik je generirao svoj par ključeva, te je prikazana jednostavna međusobna razmjena. Kako bi se bolje vidjelo koji korisnik raspolaže s kojim ključevima, izlistan je popis. U komunikaciji korisnik ema poslao je administratoru ključ Branko Bobic , a primio je od administratora ključ Ivan Ivic . U dvjema konfiguracijskim datotekama potrebno je staviti redak: Kao korisnik ema imamo sljedeće: Kao korisnik root imamo sljedeće: Komunikacija preko vanjskog poslužitelja ključeva - S obzirom da je komunikacija preko provjerenih, stabilnih i ažurnih poslužitelja najčešća, odabrala sam jedan takav poslužitelj: MIT PGP Public Key Server . U konfiguracijskim datotekama gpg.conf potrebno je uključiti redak: Kao korisnik ema sad imamo: Kao korisnik root imamo: Iako je klijent javio da je ključ uspješno poslan i primljen, putem web sučelja MIT-ovog poslužitelja može se provjeriti je li ključ zaista poslan na poslužitelj. Rezultat pretrage koji poslužitelj prikazuje strukturom je vrlo sličan onome koji daje GnuPG pa ne treba detaljnije objašnjavati. Zaključak - Kao što je već spomenuto kroz ovaj rad, enkripcija besplatnim programom GnuPG najpopularnija je i vjerovatno najjednostavnija enkripcija poruka ovog tipa. Bez obzira na jednostavnost korištenja, sigurnost i sve druge pozitivne stvari, ovaj postupak enkripcije danas se koristi pretežno u zatvorenim krugovima entuzijastičnih korisnika, no pitanje je da li je i u njihovim krugovima to još uvijek popularno i korisno. Instalacija SKS Keyservera i njegova konfiguracija opisana je na više izvora jednostavnim koracima, no prosječni korisnik se može lako izgubiti u svim tim opcijama, s druge strane upitno je koliko prosječnih korisnika stvarno koristi kombinaciju kriptiranja poruka alatom GnuPG korištenjem poslužitelja ključeva. Literatura - Todo - Reference treba pročistiti i povezati u tekstu. Author: Ema Matijević, Vedran Miletić