[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