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.[1]

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.[2]

Näide muuda

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

Kasutajanimi Parool MD5 räsi
kasutaja1 parool_123 5efb61a76902974afd74a1b745a60fb8
kasutaja2 parool_123 5efb61a76902974afd74a1b745a60fb8

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:

Kasutajanimi Parool Sool Räsitav sõne MD5 räsi
kasutaja1 parool_123 niKbYpjqmglLL9jQ parool_123niKbYpjqmglLL9jQ 15fb36fe3a7cf495a963ebffc3619987
kasutaja2 parool_123 SjFwaC73SdgLLFcx parool_123SjFwaC73SdgLLFcx 845255474a9e07ba488d6a5bed25342c

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 muuda

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.[2]

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.[2]

Eelised muuda

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.[3] 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 muuda

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.[4]

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.[5]

Viited muuda

  1. Morris, R., & Thompson, K. (1979). Password security: a case history. Communications of the ACM, 22(11), 594–597. doi:10.1145/359168.359172 (inglise)
  2. 2,0 2,1 2,2 Secure Salted Password Hashing - How to do it ProperlyKasutatud 19.11.2018 (inglise)
  3. CrackStationKasutatud 2018-11-19 (inglise)
  4. Garfinkel, S., Schwarz, A., & Spafford, G. (2011). Practical UNIX and Internet Security, 3rd Edition [raamat]. Peatükk 4.3: How Unix Implements Passwords. Kasutatud 28.11.2018 [1] (inglise)
  5. PasslibKasutatud 28.11.2018 (inglise)