Vous êtes sur la page 1sur 31

GNU Privacy Guard (GnuPG)

•Prema zvanicnoj README datoteci, GnuPG je


alat koji obezbeuje sigurnu komunikaciju i
skladištenje podataka.
•GnuPG se može upotrebiti za šifrovanje
podataka i kreiranje digitalnog potpisa.
•U GnuPG su ukljuene tehnike za lakše
upravljanje ključevima.
•Paket je prilagoen sa predloženim OpenPGP
Internet standardom, opisanim u RFC2440.
Algoritmi koje GnuPG koristi su:

• simetrični kriptoalgoritmi: 3DES, CAST5,


BLOWFISH, RIJNDAEL, RIJNDAEL192,
RIJNDAEL256, TWOFISH
• algoritmi sa javnim ključem: RSA, RSA-E, RSA-
S, ELG-E, DSA, ELG
• hash funkcije: MD5, SHA1, RIPEMD160
GnuPG se može koristiti za:
• šifrovanje podataka,
• kreiranje digitalnih potpisa,
• proveru integriteta izvornog programa.

Šifrovanjem podataka obezbeuje se visoki stepen


pouzdanosti podataka.
Programski paket GnuPG nudi korisnicima mogunost
šifrovanja raznih vrsta podataka uključujući
elektronsku poštu i datoteke. Time se proširuje
primena ovog paketa na radne stanice: korisnici mogu
šifrovati svoje datoteke i komunicirati sa ostatkom
sveta na siguran način.
Šifrovanje obuhvata matematičke postupke
modifikacije podataka takve da šifrovane podatke
(šifrat) mogu pročitati samo korisnici sa
odgovarajućim ključem.
Proces šifrovanja matematičkom funkcijom uz
određeni ključ transformiše otvoren tekst (plain
text), odnosno originalnu poruku ili datoteku, u
zaštićen, šifrovan tekst (ciphertext - šifrat).
U osnovi svih kriptoalgoritama leže matematički
postupci konfuzije (odnosno supstitucije - zamene
karaktera) i difuzije (odnosno permutacije -
premeštanja).
Supstitucija obuhvata zamenu delova originalne
poruke (pojedinačno ili u grupama konstantne dužine)
drugim slovima ili kombinacijom tih slova sa ključem.
Permutacijom se originalna poruka preuređuje po
nekom algoritmu.
Kombinovanjem ovih procesa ostvaruje se visok
stepen zaštite podataka.
Transformacije šifrata u otvoreni tekst
(dešifrovanje) je obrnut proces - matematičkom
funkcijom uz određeni ključ šifrovani podaci se
transformišu u originalnu poruku ili datoteku.
Šifrovani podaci su kao takvi zaštićeni od
neautorizovanog pristupa (odnosno od svih korisnika
koji nemaju odgovarajući ključ) i kao takvi se mogu
preneti preko nesigurnog kanala ili čuvati na disku
koji nije obezbeđen od neautorizovanog pristupa.

Osnovna aksioma teorije kriptografije:


snaga kriptoalgoritma ne sme se zasnivati na tajnosti
samog algoritma, već isključivo na
tajnosti ključa.
Simetrični algoritmi i algoritmi sa javnim
ključem

Kriptoalgoritmi se dele na simetrine (isti ključ se


koristi i za šifrovanje i za dešifrovanje
podataka) i algoritme sa javnim ključem (podaci se
šifruju javnim ključem a dešifruju privatnim).
Funkcija šifrovanja simetrinim kriptoalgoritmom E
na osnovu ključa k i ulaznih podataka p kreira
šifrat c.
Funkcija dešifrovanja D na osnovu istog kljua k i
šifrata c kreira originalnu poruku p:
E(p,k)=c šifrovanje
D(c,k)=p dešifrovanje
Simetrični algoritmi su brzi i kao takvi se mogu
koristiti za šifrovanje veićh datoteka ili
implementaciju u kripto sisteme datoteka.
Najpoznatiji simetrični kriptoalgoritmi su DES
(Data Encryption Standard), AES (Advanced
Encryption Standard), IDEA, Blowfish i
drugi.
Funkcija šifrovanja kriptoalgoritmom sa javnim
ključem E na osnovu javnog ključa k1 i
ulaznih podataka p kreira šifrat c.
Funkcija dešifrovanja D na osnovu privatnog ključa
k2 i šifrata c kreira originalnu poruku p:
E(p,k1)=c šifrovanje javnim ključem
D(c,k2)=p dešifrovanje privatnim ključem
Javni ključ je poznat onim osobama sa kojima
korisnik želi da komunicira, dok je tajni ključ
poznat samo korisniku koji ga je kreirao.
Najpoznatiji algoritam sa javnim ključem
je RSA (RSA Data Security - Ronald Rivest, Adi
Shamir i Leonard Adelman).
Asimetrični algoritmi su sporiji i primenjuju se za
kreiranje digitalnih potpisa i šifrovanje ključeva
simetričnih algoritama kojima su šifrovane
datoteke.
Digitalni potpis (digital signature)

elektronska verziju potpisa, na osnovu koga se


može identifikovati pošiljalac i dokazati
verodostojnost poruke.
Prilikom kreiranja digitalnog potpisa ne šifruje se
cela poruka, već samo hash vrednost.
Hash funkcija na osnovu ulaznih podataka bilo koje
dužine kreira niz tačno određene dužine (hash
vrednost) koji na jedinstven način definiše ulazni
podatak. Pri tome, na osnovu hash vrednosti se
ne mogu odrediti originalni podaci - funkcija je
strogo jednosmerna.
Prilikom potpisivanja, najpre se jednosmernom
hash funkcijom izračuna hash vrednost h poruke p,
koja se nakon toga šifruje algoritmom sa javnim
ključem:

kreiranje hash vrednosti


H(p)=h1

potpisivanje (šifrovanje hash vredosti privatnim


ključem)
E(k1,h1)=s
Korisnik šalje originalnu poruku i digitalni potpis
primaocu.
Primalac na osnovu poruke određuje hash vrednost
h2 i dešifruje primljeni potpis javnim ključem
pošiljaoca.
Upoređivanjem vrednosti h1 i h2 proverava se
identitiet pošiljaoca:
kreiranje hash vrednosti H(p)=h2
provera primljenog potpisa (dešifovanje potpisa
javnim ključem) D(k2,s)=h1
poređenje hash vrednosti if h1=h2 then OK
Naješće korišćena hash funkcija je MD5 (Message
Digest).
Potrebno je kreirati novi par kljuečva (javni i privatni)
da bi se mogle koristiti mogućnosti šifrovanja.

Kreiranje para ključeva

gpg --gen-key
Program gpg dalje postavlja nekoliko pitanja
korisniku.

Prvo pitanje se odnosi na tip ključeva.

Please select what kind of key you want:


(1)DSA and ElGamal (default)
(2) DSA (sign only)
(4) ElGamal (sign and encrypt)

Your selection? 1
DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
Nakon toga program zahteva od korisnika da
odabere veličinu ključeva (podrazumevana
vrednost je 1024 bita):

minimum keysize is 768 bits


default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024) 1024
Requested keysize is 1024 bits
Korisnik zatim određuje koliko e dugo ključevi biti
validni. Podrazumeva se da ključevi nemaju rok
nakon koga više nisu validni:

Please specify how long the key should be valid.


0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct (y/n)? y
Zatim je potrebno dati neke osnovne parametre o
vlasniku ključeva:
You need a User-ID to identify your key; the
software constructs the user id from Real Name,
Comment and Email Address in this form:
"Heinrich Heine (Der Dichter)
<heinrichh@duesseldorf.de>"
Real name: Jovan Jovanovic
joca@yahoo.org
Email address:
Comment: Moj komentar
You selected this USER-ID:
“Jovan Jovanovic (Moj komentar) <joca@yahoo.org>"
Change (N)ame, (C)omment, (E)mail or
(O)kay/(Q)uit? O
Nakon toga se programu daje šifra (passphrase)
kojom se štiti par ključeva.

Prilikom generisanja ključeva generator


pseudoslučajnih brojeva oslanja se na razne akcije
koje se dešavaju u pozadini sistema (procesorski
šum, pomeranje miša, aktivnosti koje nastaju kao
posledica keširanja diskova).

Poželjno je radi postizanja slučajnije vrednosti da


korisnik izvršava neku pozadinsku aktivnost (na
primer, da kopira neku datoteku ili pomera miša).
You need a Passphrase to protect your secret key.
Enter passphrase: 123456789
Repeat passphrase: 123456789
We need to generate a lot of random bytes. It is a
good idea to perform some other action (type on
the keyboard, move the mouse, utilize the disks)
during the prime generation; this gives the
random number generator a better chance to gain
enough entropy.
...
public and secret key created and signed.
Izvoz ključeva

Par ključeva se može izvesti (export) nakon čega se


javni ključ može distribuirati korisnicima sa
kojima je potrebno ostvariti šifrovani
komunikacioni kanal širom sveta.
Takođe, javni klju se može objaviti na nekoj web
stranici, ali će u tom slučaju biti svima
dostupan.

Za snimanje javnog ključa u ASCII zaštićenom


formatu koristi se sledeća komanda:
gpg --export –ao UID
Npr. prethodno generisani klju č (koji pripada
korisniku Jovan Jovanovic ) se može izvesti
u ASCII format sledećom komandom:
gpg --export –ao Jovan Jovanovic

--export izvlaenje javnog ključa iz objavljene


šifrovane datoteke
-a kreiranje ASCII zaštićene datoteke koja se
može poslati poštom, objaviti ili staviti na web
stranicu
-o snimanje rezultata u datoteku
UID korisnički klju č koji treba biti izvčuen
Uvoz ključeva

Javni ključ koji korisnik dobije od osobe sa kojom


želi da komunicira preko šifrovanog kanala mora se
dodati u bazu ključeva. Nakon toga, taj ključ se
može koristiti za šifrovanje podataka i
verifikaciju potpisa.
Za uvoz javnih ključeva u bazu ključeva koristi se
sledeća komanda:
gpg --import filename

Komanda će uvesti novi ključ u bazu samo ako je


potpisan.
Označavanje ključeva

Nakon uvoza ključeva u bazu javnih ključeva,


korisnik može potpisati javni ključ svojim
privatnim ključem.
Potpisivanjem se postiže dodatni nivo sigurnosti:
tada se zna da je pomenuti korisnik stvarni vlasnik
ključa.
Za označavanje ključa kog smo prethodno dodali u
našu bazu, koristimo sledeću komandu:

gpg --sign-key UID


Provera potpisa

Kada je javni ključ korisnika jednom izvučen i


izvezen, svako ko dobije taj javni ključ biće u
mogućnosti da:
• šalje korisniku šifrovane podatke,
• proveri potpis tog korisnika.

Za proveru potpisa šifrovanih podataka koristi se


sledeća komanda:
gpg --verify Data

Data - šifrovani podatak (datoteka) čiji potpis


proveravamo.
Šifrovanje i dešifrovanje

Za šifrovanje javnim ključem korisnika UID (čiji je


javni ključ prethodno unesen u bazu) i
potpisivanje šifrata svojim privatnim kljuem, koristi
se sledeća komanda:

gpg -sear USER file

Od korisnika se zahteva da unese passphrase svog


privatnog ključa.
gpg -sear USER file

s potpisivanje (sign) - potpisivanjem šifrata


privatnim kljuem izbegava se
rizik da se neko predstavi kao korisnik koji je
datoteku šifrovao
e šifrovanje (encrypt)
a kreiranje ASCII zaštienog izlaza (“.asc” -
spremno za slanje poštom)
r šifrovanje javnim kljuem korisnika koji je naveden
kao USER
Za dešifrovanje podatka, koristi se sledeća
komanda:

gpg -d file

Argument d se odnosi na dešifrovanje, a file je


ime datoteke koju treba dešifrovati.
Veoma je važno da javni ključ pošiljaoca poruke koju
želimo da dešifrujemo bude u našoj javnoj
bazi - u suprotnom proces dešifrovanja nije moguć.
• gpg –version
• gpg --gen-key
• gpg --export UID
• gpg --import “FileName“
• gpg –-gen-revoke
• gpg –-list-keys
• gpg –-list-sigs
• gpg –-fingerprint
• gpg –-list-secret-keys
• gpg –-delete-key UID
• gpg –-delete-secret-key
• gpg –-edit-key UID
• gpg –version
• gpg --gen-key
• gpg --armor --output "KEY.txt" --export "YOUR-
NAME“
• gpg --import "KEY.txt"
gpg --edit-key "NAME“
• gpg --recipient "RECIPIENT" --output
"FILENAME.gpg"--encrypt "FILENAME“
• gpg --amror --recipient "RECIPIENT" --output
"FILENAME.gpg" --encrypt "FILENAME“
• gpg --decrypt-files "FILENAME.asc"
   ili
• gpg --decrypt-files "FILENAME.gpg"
• gpg --local-user "YOUR-NAME" --clearsign
"FILENAME“
• gpg --local-user "YOUR-NAME" --output
"FILENAME.sig"--detach-sign "FILENAME“
• gpg --verify "FILENAME.asc“
• gpg --verify "FILENAME.sig“
• gpg --armor --local-user "YOUR-NAME" --recipient
"RECIPIENT"--sign --output "FILENAME.asc"
--encrypt "FILENAME“
• gpg --homedir . SOME-COMMAND
Zadatak:
Pomoću komandne linije generisati ključ dužine
2048 bitova.
gpg --gen-key
šifrovanje dokumenta test.txt npr.:
gpg --encrypt –recipient “VAŠE IME” test.txt
ili
gpg -e -r “VAŠE IME” test.txt

dešifrovanje šifrata:
gpg --decrypt test.txt.gpg
ili
gpg -d test.txt.gpg

Vous aimerez peut-être aussi