GnuPG i el.pošta

Подели преко

Sada ?emo se pozabaviti
i slanjem poruka e-pošte istim putem, ali uz osiguravanje privatnosti
sistemom zaštite GnuPG. GnuPG (GNU Privacy Guard) je besplatan sistem
zaštite otvorenog izvornog koda, i kao takav predstavlja odgovaraju?u
potpunu zamenu za PGP. Pošto je izdat pod GPL licencom, moÄ‘ete ga
slobodno preuzeti sa Interneta i instalirati na koliko želite
ra?unara, kao i menjati izvorni kod ili kopirati. Skript ?emo uraditi
u programskom jeziku PHP zbog njegove brzine, jednostavnosti i
portabilnosti. (GnuPG), PHP i Apache su dostupni i na Windows i na Unix
platformama, tako da bi skript trebao, uz eventualne minimalne izmene,
raditi istovetno. Konkretno, mi ?emo govoriti o Unix (Linux) platformi.Slanje obi?ne poruke

Za slanje poruka putem
e-pošte, PHP poseduje ugradjenu mail() funkciju, koja svoj posao obavlja
brzo i ?isto. Pored toga, može se koristiti i sistem cevovoda za
direktno ubrizgavanje sistemskom agentu za prenos pošte ili uti?nice za
slanje preko spoljnog SMTP servera.

Prvo ?emo prikazati
jednostavnu upotrebu funkcije mail(). Moramo znati koje
ulazne vrednosti funkcija o?ekuje od nas, a to su, redom: adresa na
koju šaljemo, naslov (subject engl.), poruka, dodatni podaci za
zaglavlje, dodatni parametri. Prve ?etiri vrednosti su neophodne, dok
dodatni podaci i parametri vezani za zaglavlje poruke nisu obavezni.
Istu poruku možemo poslati na više adresa tako što ih navedemo odvojene
zarezom u okviru prve promenljive, ili navodjenjem u delu namenjenom za
dopunu zaglavlja (?etvrta ulazna vrednost) pod Cc: ili Bcc:
opisom. Ovom funkcijom omogu?eno je i slanje priloga putem MIME
kodiranja, ali o tome više neki drugi put.

Pod Windows operativnim
sistemom, postoje neke razlike u odnosu na Unix, jer se ne koristi
lokalni program za slanje pošte, ve? se neposredno koriste uti?nice za
povezivanje sa spoljnim SMTP serverom. Dalje, u verzijama PHP-a
starijim od verzije 4.3, u Windows-u je bio podržan samo Cc: tip
zaglavlja, na šta treba obratiti pažnju.

Skript mail.php
– Skript za slanje tekstualne poruke unete preko formulara.

Ovo je upotrebljiv
skript za npr. formular na prezentaciji kojim se može ostvariti povratna
sprega sa posetiocima. Ako umesto toga želimo da ovaj naš skript bude
deo Web klijenta za rukovanje elektronskom poštom, postavljaju se i
neki posebni zahtevi. Među prvima bi bio zahtev za osiguranjem
privatnosti poslatih poruka.

Zašto GnuPG?

Danas je tzv.
prisluškivanje kanala kojim putuju paketi na Internetu ?esta pojava.
Poznata je ?injenica da svi ve?i provajderi u cilju zaštite sopstvene
mreže prisluškuju promet paketa u potrazi za eventualnim zlonamernim
paketima kojim hakeri napadaju servere i mrežnu opremu. Isto tako,
ukoliko koristite Internet sa neke javne mreže (Internet kafe, fakultet
ili biblioteka) privatnost može biti vrlo lako ugrožena (po pravilu i
jeste).

Rešenja postoje i treba
ih iskoristiti. Uvek kada to možete koristite sigurnosne uti?nice (SSL)
koje sav kodiraju nekim algoritmom. Time ?ete se osigurati od kradje
lozinki, a time i mnogo ve?e štete gde je kraÄ‘a Internet vremena kod
provajdera manja stavka.

Ali kada je bezbednost u
pitanju, tu se pri?a nikako ne završava. Vi možete dostaviti poruku SMTP
serveru preko sigurnosnih uti?nica, ali komunikacija izmedju vašeg i
SMTP servera primaoca ne?e biti kodirana. Na kraju, niko ne garantuje
da možda lozinka primaoca nije kompromitovana. Korporativnim
korisnicima ?e biti od naro?itog zna?aja da poruka određenoj osobi bude
stvarno dostupna samo onome kome je i namenjena.

Kona?ni skript

Ne?emo ulaziti u na?in
konfigurisanja GnuPG sistema, kao ni u izradu klju?eva jer to nije tema
ove Radionice. Više informacija o tome, zajedno sa poslednjom verzijom
koju možete preuzeti, na?i?ete na adresi http://www.gnupg.org.

Da bismo mogli da
uspešno kodiramo, moramo prekopirati direktorijum koji sadrži GnuPG
konfiguraciju na mesto koje je dostupno Web serveru. U tom direktorijumu
su nam potrebne 3 datoteke i to: gpg.conf (GnuPG 1.2 i kasniji, a ranije
verzije koriste datoteku options), pubring.gpg i trustdb.gpg, Prava
pristupa su vrlo bitna i ona moraju biti takva da dozvole korisniku pod
kojim radi Web server upis i ulazak u pomenuti direktorijum, ali ne i
?itanje. Takodje, nad ove 3 datoteke samo vlasnik može imati sva prava,
a Web server samo za ?itanje. Ovo je vrlo bitno da dobro odradite, jer
u suprotnom GnuPG ne?e mo?i da radi.


Slika 2: kontakt.jpg – Kontakt strana u okviru prezentacije

Polaze?i od prethodnog
skripta, postupno ?emo ga nadograđivati. Prvo ?emo se pozabaviti
kodiranjem. Kao argument pri startovanju gpg komande moramo navesti u
okviru opcije –homedir lokaciju na disku gde se nalazi
direktorijum sa konfiguracijom koji smo prethodno pripremili. Zatim sa
opcijom -r navodimo kome korisniku iz spiska u datoteci
pubring.gpg je poruka namenjena (adresa e-pošte na koju šaljemo bi
trebalo da odradi taj deo posla) i na kraju mu opcijom -e kažemo
da kodira podatke sa standardnog ulaza. Naravno, na standardni ulaz mu
dajemo telo poruke. Pre toga, funkcijom escapeshellarg()
?emo o?istiti telo poruke, za slu?aj da korisnik formulara želi da
ubrizga u naš skript komande koje ne želimo da startujemo.

Skript gpgmail.php

Funkcija exec()
koju koristimo za startovanje gpg vrati?e kodiranu poruku u niz koji joj
je dat kao primarni argument. Da bismo od tog niza dobili odgovaraju?i
string koji ?emo poslati funkciji mail(), iskoristi?emo implode()
kojim ?emo spojiti redove.

Za kraj u skript ?emo
uneti i proveru popunjenosti svih polja formulara. Ukoliko je neko od
polja ostalo nepopunjeno, ispisa?emo upozorenje i vratiti korisnika na
ponovno popunjavanje, ali zadržavaju?i ve? unete vrednosti. Svi znamo
koliko nervira kada morate ponovo da unosite i vrednosti koje ste bili
ukucali.