[LUGOS-MOZILLA] Thunderbird - zaščita pošte z geslom
Matej Kovacic
matej.kovacic at owca.info
Mon Nov 1 12:25:51 CET 2004
Ziv!
> Ce ti nekdo dekriptira maile, ti tudi kriptiranje ne pomaga. Za Windowse
> obstajajo programi, s katerimi lahko "skrivas" izbrane imenike, ampak
> mislim, da niso brezplacni. Najbolje, da gres kar z md5() cez vse maile,
> bo najbolj varno. ;)
No, tole zahteva dodatno pojasnilo. Bo malce daljše, ampak če boste
prabrali ne bo nikomur škodilo. :-)
Ko govorimo o varnosti elektronske pošte MED PRENOSOM, govorimo o
šifriranju, digitalnem podpisovanju sporočil in overjanju javnih
ključev. Sporočilu lahko dodamo tudi potrdilo potrdilo (certificate), ki
vsebuje še čas nastanka, podatke o lastniku, rok veljavnosti ipd.
Digitalni podpis zagotavlja verodostojnost sporočila (da ga ni niče
spremenil). Naredimo ga takole: z zgostitvenim algoritmom izračunamo
"prstni odtis" sporočila, ta prstni odtis pa nato zašifriramo s svojim
zasebnim ključem. Prejemnik bo z našim javnim ključem dešifriral podpis
(ter pridobil "prstni odtis" v njem), hkrati pa bo iz sporočila ponovno
izračunal "prstni odtis” ter ga primerjal s tistim, ki ga je dobil v
podpisu. Če je sporočilo prišlo do njega nespremenjeno, se oba "prstna
odtisa" ujemata.
Najbolj znana zgostitvena algoritma sta MD5 in SHA. MD4 je leta 1990
razvil Ron Rivest, ga izboljšal in leta 1992 je nastal MD5 (MD = Message
Digest).
SHA-0 pa je leta 1993 razvila ameriška tajna služba National Security
Agency. Leta 1995 je NSA v SHA-0 odkrila varnosto luknjo (katere
podrobnosti niso hoteli razkriti) in potem je NSA predstavil a SHA-1
(SHA = Secure Hash Algorithm). MD5 uporabljajo nekateri stareši sistemi,
SHA pa je trenutno najbolj "in".
Torej, če sporočilo "zaščitiš" z MD5, s tem zagotoviš samo to, da boš
vedel, če je sporočilo nekdo spremenil. Vsebina bo še vedno vidna.
Razlog, zakaj ljudje pogosto zamešajo MD5 (ali SHA) s šifrirnimi
algoritmi pa je v tem, da se zgostitveni algoritmi uporabljajo za
shranjevanje gesel v sistemih.
Ko se prijavim v nek sistem moram vpisati geslo. Kako pa sistem ve, da
je geslo pravo? Tudi on mora imeti kopijo gesla.
Vendar pa je precej nevarno kopijo gesla shraniti v sistem. ČE nekdo
vdre v sistem, bo lahko s krajo baze ukradel vsa gesla, ne?
No, zato se v sistemu shrani samo "MD5 hash" našega gesla. Ko se
prijavimo, sistem sprejme naše geslo in izračuna njegov "hash". Potem
pogleda v bazo in vidi ali se "hasha" ujemata.
No, zdaj pa pridemo do še ene pomembne zadeve. Zgostitveni algoritmi so
enosmerni. To pomeni, da lahko iz gesla izračunam hash, iz hasha pa ne
morem dobiti gesla. (Še en razlog zakaj ni dobro sporočila "zaščititi" z
MD5 - pote jih ne bi mogli dobiti nazaj!). Druga zadeva pa je, da ne sme
priti do kolizije - se pravi, da ne obstajata dve različni gesli, ki bi
imeli isti hash.
Letos poleti je bilo precej govoric, da so SHA uspeli razbiti, že pred
tem pa so neodvisni raziskovalci demonstrirali uspešen "napad" na MD5 in
SHA-0. Dejstvo je, da zaenkrat niso našli nič kritičnega, oziroma nič
takega, kar bi bilo kritično s stališča navadnega uporabnika.
To je bilo glede MD5.
Zdaj pa glede šifriranja.
Verjetno marsikdo med vamipozna programček Windows Password Changer.
Zadeva dela takole. Program posnamemo na bootable CD, CD vstavimo v
računalnik in ga zaženemo. Naloži se neka okleščena verzija Linuxa in
zažene ta program. Ta program gre gledat v windows datoteko kjer so
shranjeni "hashi" gesel, nakar vas vpraša za novo geslo, iz njega
izračuna hashin le-tega zapiše v datoteko. Po ponovnem zagonu vpišete
novo geslo in ste v Windowsih.
Seveda lahko spremenite tudi administratorsko geslo.
Tukaj sta zdaj kritični dve zadevi.
1. kaj če je v BIOSU onemogočen zagon računalnika iz CDja?
2. lastnik računalnika bo opazil, da je bilo geslo spremenjeno (ker
njegovo ni več veljavno).
Problem je v tem, da to nista kritični zadevi. 1. Obstajajo namreč
splošna ("servisna") BIOS gesla, relativno enostavno pa je tudi iz
računalnika vzeti disk ven in ga priklopiti na drug računalnik.
2. Nekateri "password changerji" omogočajo "backup" starega "hasha".
Stari hash lahko kasneje zapišete nazaj in nihče ne bo vedel, da je bilo
geslo vmes spremenjeno.
Kaj pa sedaj?
V tem primeru je najboljša možnost, da imate kritične datoteke
spravljene na šifriranem disku. V tem primeru lahko napadalec vzame vaš
disk domov, ve vaše administratosko geslo, pa mu še vedno nič ne pomaga
- ker ne ve gesla za šifrirani disk.
Seveda obstaja možnost, da bo nekdo delal kriptoanalizo in dešifriral te
podatke. Ampak ta možnost je v praksi - če uporabljate varne algoritme
zelo majhna. Varni algoritmi so IDEA, AES, itd. Skratka, algoritmi, ki
jih vsebuje paket PGP. (OK, pri AES-u so našli neko varnostno
ranljivost, vendar je bolj teoretična, oziroma je bil problem v
implementaciji - kolikor vem, je zadeva že odpravljena).
Vedno je pa možen "brute force" napad. To pomeni, da napadalec preiskusi
vsa možna gesla. Seveda ima lahko srečo in v prvo ugane pravo. Lahko pa
ima smolo in bo pravega uganil šele nazadnje. V povprečju, ga ugane na
polovici.
Torej izračunajmo koliko časa potrebuje, da preveri vse kombinacije pri
10 mestnem geslu. Uporabimo lahko 25 črk in 10 številk (za enostavnost
izračuna bom izpustil ločila). Torej imamo 10^35 kombinacij, oziroma
100000000000000000000000000000000000 kombinacij. Recimo, da računalnik
lahko preveri 1 milijon kombinacij na sekundo.
Če se nisem zmotil v izračunu, bi vse možne kombinacije preverili v
3251144402829800000000 letih. V povprečju lahko pričakujemo, da bo
napadalec dešifriral naše geslo na polovici tega časa.
OK, druga možnost je pa "klasična" frekvenčna analiza. To so delali med
2. svetovno vojno (in kasneje). Proti temu se borimo z randomizacijo. Če
imamo neko dovolj veliko besedilo, in ga zašifriramo, je mogoče
ugotoviti frekvenco pojavljanja določenih znakov in zaporedij znakov.
Ker je znano kakšne so frekvenčne distribucije za različne jezike, je
mogoče ugotoviti katere prave znake predstavlja zaporedje šifriranih
znakov. (no, zadeva je malce bolj zapletena, ampak približno tako to gre).
Kaj pa, če šifriramo ZIP datoteko? No, pri ZIP datoteki je stvar taka,
da izgleda naključno. Zato, ker če je porazdelitev znakov dovolj
naključna, je psoledica, da je datoteka dobro stisnjena. Če torej
šifriramo ZIP datoteko, je frekvenčna analiza bistveno težja (če ne
nemogoča). Velja tudiobratno: če imamo dober algoritem, je šifrirano
datoteko nemogoče stisniti oziroma je stopnja stiskanja zelo majhna.
Pri šifriranem disku pa imamo naslednji problem. Recimo, da imam disk
velik 600 Mb, podatkov pa le za 100 Mb. Torej je mogoče ugotoviti, da je
500 Mb praznega prostora. Ker tudi vemo kakšne so nekatere datoteke
(recimo ThunderBird.exe, itd.) imamo že velikovhodnih podatkov.
Praktično nam manjkajo samo še maili, ki pa so šifrirani po enakem
ključu kot exe in ostale datoteke iz profila, za katere pa imamo in
vhodne in izhodne podatke.
Zato priporočam, da šifrirani disk napolnite z naključnimi znaki - le ti
se še dodatno zašifrirajo. Torej bo napadalec imel kot vhodni podatek
znano število znanih datotek (exe,...), neznano število mailov in
neznano število naključnih podatkov. Ker je vse premešano, si ne more
pomagati s frekvenčno analizo, ker ne more ločiti kaj je kaj.
Skratka - krriptoanaliza je možna, vendar v praksi zelo težko
izvedljiva. Za razliko od dostopa do diska, ki je v praksi zelo eostavno
izvedljiv.
Če se komu vse skupaj zdi zapleteno, naj si zapomni le tole:
1. šifriranje diska je smiselno, ker je mogoče do podatkov na disku
priti relativno enostavno;
2. predvsem so kritični podatki na prenosnikih, ki nam ga lahko kdo
ukrade, pa tudi: računalnik lahko odnesemo na servis, domov nam lahko
pride policija ali SOVA, v službi ima dostop do računalnika sodelavec
ali šef,... ja, ADSL ali kabel uporabniki so lahko tarča hekerjev, ki
imajo kompleten dostop do vašega diska preko interneta;
3. obstaja brezplačni odprtokodni program PGPdisk;
4. priporoča se, da se PGPdisk napolni z naključnimi znaki (s programom
CleanDisk Security).
In ja, grožna je realna, saj sem za 1. in 2. videl kar nekaj primerov,
kako enostavno je priti do "zaščitenega" računalnika.
lp, Matej
More information about the lugos-mozilla
mailing list