Sool (krüptograafia)

Krüptograafias on sool lisaturvameede räsitud paroolide kaitsmiseks räside lekke korral.

Ajalooliselt on paroole hoitud algselt lihttekstina ning seejärel räsitud kujul ilma soolamata, ent ainult räsitud paroolid on osutunud murtavaks toore jõu meetodil ning sellest edasi arenenud sõnastikuründega.

Sool on ühekordseks kasutamiseks genereeritud juhuslik andmehulk, mis lisatakse enne räsimist paroolile ning salvestatakse koos räsiga. Soolamine ei aeglusta paroolide murdmist toore jõu meetodil, ent takistab tõhusamate eelgenereeritud sõnastike ning vikerkaaretabelite kasutamist.

Näide

Ilma soolamata paroolide räsimisel MD5 algoritmiga on tulemus selline:

Siit on näha, et ründaja peab vaid ühe korra arvutama välja räsi sõnele "parool_123" ja ta teab räsi nähes kohe kõigi sama parooli kasutavate isikute paroole. Sellel põhimõttel toimivadki sõnastikuründed. Sama näide soolamisega:

Nagu näha, on soolamisel ka samasuguste paroolide räsid erinevad ning ründaja ei tea ilma välja arvutamata sedagi, kas kahe kasutaja paroolid on identsed.

Levinud vead

Soolade korduvkasutus

Sama soola kasutamine kõikide räside soolamiseks vähendab turvalisust, kuna identsetel paroolidel tekivad ikkagi identsed räsid. Lisaks, kui sool on teada, on lihtne genereerida sõnastik selle konkreetse soola jaoks, mis eemaldab kõik soola kasutamise eelised.

Liiga lühike sool

Kui sool on liiga lühike, on ründajal võimalik genereerida sõnastik iga võimaliku soola jaoks. Näiteks kui sool koosneb kolmest tähemärgist, on võimalike soolade koguarv 95^3 ehk 857 357, mis võib tunduda suur, aga kui sõnastik koosneb 1 MB levinuimatest paroolidest, on kõigi sõnastike kogumaht 837 GB, mis pole tänapäeval väga palju.

Eelised

Soolamine ei tee ühe konkreetse räsi murdmist keerulisemaks, vaid selle eelised tulevad välja paljude räside korraga murdmisel. Selle tõhusamalt tegemiseks genereeritakse sõnastikud levinumate paroolide ning nende räsidega ja võrreldakse murtavaid räsisid nendega. Korralikult soolatud paroolide räsid pole enam identsed ning seetõttu tuleb sõnastike asemel kasutada vähem efektiivset toore jõu meetodil murdmist.

Implementatsioon

Varane Unix

Esimesed soola implementeerivad Unixi süsteemid kasutasid modifitseeritud Data Encryption Standardi  algoritmi funktsioonis crypt(). Et takistada kasutamast spetsiaalselt DES-i murdmiseks ehitatud kiipe, lisab crypt() 12-bitise soola, mille abil on sama parooli krüpteerimiseks 4096 võimalust.

Moodne Unix

Moodsamad Unixil põhinevad süsteemid on täiustanud turvalisust, kasutades funktsiooni crypt() asemel näiteks funktsiooni bcrypt(), mis kasutab 22-tähemärgist soola ja Blowfishi algoritmi DES-i asemel.

Viited

Krüptograafia