22. feb. 2007

Dulrituð lykilorð

Uppfært 27.02.: Morgunblaðið birti víst ekki einungis lykilorðin heldur allar upplýsingar um eiganda viðkomandi síðu, þ.m.t. póstföngin. Fólk notar oft sama lykilorðið á mörgum stöðum, þó svo að það eigi ekki að gera það, og í þeim tilfellum þurfa viðkomandi að breyta lykilorðinu sínu á öllum þeim sömu stöðum, og byrja þá á póstinum sínum.

Upprunalegt 22.02.: Í Fréttablaðinu í dag (22.02., bls. 13, efst vinstra megin) er sagt frá því að Morgunblaðið hafi birt öll lykilorð bloggara hjá blog.is, fyrir tæknileg mistök.

Fréttamaðurinn spurði hvers vegna lykilorðin hefðu verið geymd ódulrituð í gagnagrunni, sem er ákaflega eðlileg spurning. Svar Morgunblaðsins er mjög sérstakt, "að ekki hafi verið metin þörf á því, upplýsingarnar séu ekki svo leynilegar".

Af þessu mætti draga þá ályktun að það sé erfitt og flókið mál að dulrita lykilorð til geymslu í gagnagrunni og því þurfi að vega og meta ávinninginn á móti vinnunni sem fer í forritun á slíku kerfi. Svo er þó alls ekki, það er mjög auðvelt að vinna með dulrituð gögn í helstu forritunarmálum sem notuð eru til forritunar vefkerfa, eins og Perl, PHP eða Python, og svo eru til heilu hjálparkerfin til dulritunar, eins og OpenSSL, sem er opinn og frjáls hugbúnaður.

Ég hef áður skrifað um þessi mál, neðanmáls í pistlinum IP-tölur og listin að fela sig (neðsta málsgreinin). Þar sagði ég að lykilorð eigi að geyma dulrituð, með einátta hakkafalli, og nota á mismunandi salt fyrir hvert einasta lykilorð. Þetta er auðvitað ekki eina aðferðin til að geyma lykilorð með öruggum hætti, en þetta er einföld aðferð þar sem ekki er krafist mjög mikils öryggis.

Þegar notandinn slær inn nýtt lykilorð þá er búið til nýtt salt, því skeytt saman við nýja lykilorðið og allt saman dulritað með einátta hakkafalli. Síðan er notandanafnið, saltið og dulritaða útkoman geymd í gagnagrunni.

Þegar notandinn skráir sig inn þá slær hann inn notandanafnið sitt og lykilorð. Notandanafnið er notað til að fletta upp saltinu hans, því er svo skeytt saman við lykilorðið sem hann sló inn og dulritað eins og áður. Útkoman er svo borin saman við dulrituðu útkomuna í gagnagrunninum. Ef þær eru eins þá hefur auðkenningin tekist og notandinn er skráður inn.

Með þessum hætti er ómögulegt að birta óvart lykilorðið því það er engin leið til að nálgast það í gagnagrunninum.

Það hefur auðvitað í för með sér að ekki er hægt að senda notandanum lykilorðið hans ef hann gleymir því, heldur verður að endurstilla það og senda honum nýtt lykilorð. En það er ekki flókið mál að forrita þá viðbót.

2 ummæli:

baldur sagði...

Fyrir utan það að öll eðlileg vefforrit ættu að dulrita og salta leyniorð þá finnst mér alltaf jafn furðulegt afhverju íslensk bloggsvæði fyrir almenning eru ávalt byggð á illa skrifuðu innanhús bloggforriti.

Flestir sem hafa einhvað sense myndu byggja sitt svæði á annaðhvort wordpressmu eða livejournal. Bæði eru opensource/free software.

Fyrir utan það hversu illa hönnuð íslensku bloggsvæðin eru út frá usability og útliti.

Ástandið á íslenska vefbransanum virðist vera frekar skammarlegt.

Erlendur S. Þorsteinsson sagði...

Það er auðvitað mjög athyglisverð spurning hvers vegna menn skrifa sín eigin kerfi í stað þess að nota tilbúin kerfi. Eins og þetta dæmi hjá Morgunblaðinu sýnir þá er margt sem þarf að hafa í huga og margt sem getur farið úrskeiðis ef menn skrifa sín eigin kerfi.

Ég hef þá tilgátu að þetta sé vegna þess að menn séu þegar með legacy kerfi sem þeir vilja tengja bloggkerfið inn í. En fremur en að breyta legacy kerfinu til að koma stöðluðu bloggkerfi fyrir þá skrifa menn bloggkerfi frá grunni.