Lykilorð í Vodafone lekanum

Hluti af "signup" töflunni í Vodafone lekanum

Hluti af “signup” töflunni í Vodafone lekanum

Þann 30. nóvember 2013 láku gögn af netþjóni Vodafone á netið. Stærstur hluti lekans voru sms-skilaboð sem notendur höfðu sent í gegnum vef fyrirtækisins. Einnig var þar að finna gagnagrunnstöflur með símanúmerum, kennitölum, netföngum og lykilorðum notenda (svo fátt eitt sé nefnt). Lekinn hafði víðtæk áhrif, netöryggissveit Póst- og fjarskiptastofnunar skrifaði skýrslu um málið og nokkrir notendur fengu skaðabætur eftir dómsmál.

Forritarar Vodafone kusu að dulrita öll lykilorð í gagnagrunninum, yfirleitt í dálki nefndum ‘encpasswd’. Alls voru 104.754 lykilorð dulrituð þannig. Af þeim voru 30.140, eða um 29%, einnig ódulrituð í dálki nefndum ‘password’. Það eru þessi lykilorð sem við ætlum að líta aðeins á.

Mismunandi var hvort lykilorðin voru pöruð við netföng. Sumar töflur voru þannig að notendanafn var kennitala eða símanúmer. Það sem hér fer á eftir á við þau lykilorð sem ekki voru dulkóðuð og höfðu viðhengt netfang. Einnig fjarlægðum við tvítekningar. Eftir standa 26.654 lykilorð og netföng.

Byrjum á smá tölfræði.

Ekki er mikið um tvítekningar lykilorða. Hér eru efstu 20:

user@computer:$ cat top_20.txt
123456 = 21 (0.08%)
vodafone = 6 (0.02%)
pjakkur1 = 6 (0.02%)
abc123 = 6 (0.02%)
mamma123 = 6 (0.02%)
asdf1234 = 5 (0.02%)
skuggi = 5 (0.02%)
fokker50 = 5 (0.02%)
mamma1 = 5 (0.02%)
sumar123 = 5 (0.02%)
hekla1 = 5 (0.02%)
1234 = 5 (0.02%)
pjakkur = 5 (0.02%)
alexander1 = 5 (0.02%)
jonas123 = 5 (0.02%)
gaman123 = 5 (0.02%)
perla1 = 4 (0.02%)
voda123 = 4 (0.02%)
sandra = 4 (0.02%)

Ef við skoðum topp 20 þegar búið er að taka tákn og tölur af báðum endum:

user@computer:$ cat top_20_base.txt
mamma = 57 (0.21%)
siggi = 54 (0.2%)
anna = 51 (0.19%)
vodafone = 50 (0.19%)
sumar = 44 (0.17%)
gunnar = 42 (0.16%)
inga = 41 (0.15%)
helga = 37 (0.14%)
hundur = 36 (0.14%)
disa = 36 (0.14%)
nonni = 35 (0.13%)
simi = 33 (0.12%)
hildur = 31 (0.12%)
voda = 31 (0.12%)
sigrun = 31 (0.12%)
gummi = 31 (0.12%)
liverpool = 30 (0.11%)
sigga = 29 (0.11%)
ingi = 28 (0.11%)
vetur = 28 (0.11%)

Dreifing lengdar:

user@computer:$ cat top_length-lenght.txt
1 = 1 (0.0%)
2 = 3 (0.01%)
3 = 10 (0.04%)
4 = 41 (0.15%)
5 = 45 (0.17%)
6 = 3841 (14.41%)
7 = 3691 (13.85%)
8 = 8086 (30.34%)
9 = 4558 (17.1%)
10 = 3081 (11.56%)
11 = 1557 (5.84%)
12 = 927 (3.48%)
13 = 390 (1.46%)
14 = 203 (0.76%)
15 = 103 (0.39%)
16 = 61 (0.23%)
17 = 22 (0.08%)
18 = 11 (0.04%)
19 = 3 (0.01%)
20 = 10 (0.04%)
21 = 4 (0.02%)
23 = 4 (0.02%)
24 = 1 (0.0%)
32 = 1 (0.0%)

Og lengd röðuð eftir fjölda:

user@computer:$ cat top_20_length-count.txt
8 = 8086 (30.34%)
9 = 4558 (17.1%)
6 = 3841 (14.41%)
7 = 3691 (13.85%)
10 = 3081 (11.56%)
11 = 1557 (5.84%)
12 = 927 (3.48%)
13 = 390 (1.46%)
14 = 203 (0.76%)
15 = 103 (0.39%)
16 = 61 (0.23%)
5 = 45 (0.17%)
4 = 41 (0.15%)
17 = 22 (0.08%)
18 = 11 (0.04%)
20 = 10 (0.04%)
3 = 10 (0.04%)
23 = 4 (0.02%)
21 = 4 (0.02%)
2 = 3 (0.01%)
19 = 3 (0.01%)
32 = 1 (0.0%)
1 = 1 (0.0%)
24 = 1 (0.0%)

One to six characters = 3941 (14.79%)
One to eight characters = 15718 (58.97'%)
More than eight characters = 10936 (41.03%)

Samsetning lykilorðanna:

user@computer:$ cat characters.txt
Character sets
loweralphanum: 20084 (75.35%)
mixedalphanum: 3774 (14.16%)
loweralpha: 1498 (5.62%)
numeric: 529 (1.98%)
loweralphaspecialnum: 312 (1.17%)
mixedalphaspecialnum: 226 (0.85%)
mixedalpha: 110 (0.41%)
upperalphanum: 66 (0.25%)
loweralphaspecial: 26 (0.1%)
upperalpha: 15 (0.06%)
mixedalphaspecial: 9 (0.03%)
specialnum: 2 (0.01%)
upperalphaspecial: 1 (0.0%)

Character set ordering
stringdigit: 18207 (68.31%)
stringdigitstring: 2808 (10.54%)
allstring: 1623 (6.09%)
othermask: 1536 (5.76%)
digitstring: 1299 (4.87%)
alldigit: 529 (1.98%)
digitstringdigit: 349 (1.31%)
stringspecialdigit: 268 (1.01%)
stringspecialstring: 28 (0.11%)
stringspecial: 6 (0.02%)
specialstringspecial: 1 (0.0%)

Ok. Hvað vitum við nú?

  • Það er lítið um tvítekningar. Það er: fáir notendur eru að nota sama lykilorðið.
  • Eitthvað er um að notendur noti sömu orðin til að útbúa lykilorð (með viðbótum).
  • Flest lykilorð eru 6-10 stafir að lengd
  • Langflest lykilorð (75%) eru lágstafir+tölustafir
  • Mikill meirihluti (68%) eru strengur+tala/tölur

Skoðum núna hvort einhverjir notendur notuðu hluta af netföngum sínum sem lykilorð:

user@computer:$ cat emails.txt
Exact Matches
-------------
Whole Email Address
No Exact Matches

Just Name
Total: 175

Semsagt: 175 notendur voru með sama lykilorð og fyrri hluti netfangs. Dæmi (tilbúið):

Netfang: helgibest@tolvupostur.is
Lykilorð: helgibest

Ef við notumst við Levenshtein algrímið til að sjá hvort notendur eru að gera (smávægilegar) breytingar á fyrri hluta netfangs og nota það sem lykilorð:

user@computer:$ cat emails-levenshtein_3.txt
Levenshtein Results (max 3)
-------------------
Average distance (email) 16.59
Average distance (name) 8.47

Close Matches
-------------
Whole Email Address
Total: 1

Just Name
Total: 902

902 lykilorð eru þremur breytingum eða færra frá fyrri hluta netfangs notandans. Dæmi (tilbúið)

Netfang: helgibest@tolvupostur.is
Lykilorð: helgi6best

Eins og áður sagði voru öll lykilorð hjá Vodafone geymd dulkóðuð (þó stór hluti þeirra hafi einnig verið geymd ódulkóðuð). Dulkóðunin sem Vodafone valdi er bcrypt með 8 lotum. Ímyndum okkur nú að einhver hafi komist yfir gagnagrunninn og ekkert lykilorð hafi verið ódulkóðað, heldur einungis dulkóðaða útgáfan. Hverjir væru möguleikar hins illa hakkara til að komast í lykilorðin?

Hún gæti prófað allar samsetningar allra stafa, en það tæki óratíma. Til að stytta sér leið væri hægt að notast við orðalista. Einn sá helsti sem auðveldlega er hægt að nálgast er listi með lykilorðum frá bandaríska fyrirtækinu rockyou.

Skoðum hversu mörg lykilorð í rockyou listanum eru í listanum okkar:

user@computer:$ cat rockyou.txt | wc -l
4225

Lykilorð 4224 reikninga í Vodafone lekanum eru stafrétt eins og í rockyou lekanum. Það eru 16% af þeim sem við erum að vinna með.

Eitt helsta tól til að brjóta dulkóðuð lykilorð á þennan hátt (brute-force) er hashcat. Ef við keyrum hashcat á þau lykilorð sem eftir eru og bætum við einum tölustaf aftast í öll lykilorðin í rockyou listanum:

user@computer:$ cat rockyou?d.txt | wc -l
1467

Example:

grettir3:grettir3
gormur13:gormur13

Hér erum við semsagt búin að prófa öll lykilorðin í rockyou listanum og bæta við einni tölu aftast við hvert. Dæmi:

lykilorð: siggi1
prófað: siggi10, siggi11, siggi12, siggi13, siggi14, siggi15, siggi16, siggi17, siggi18, siggi19

En afhverju einn tölustafur? Jú við vitum að 68% lykilorða er strengur + tala/tölustafur.

Prófum að bæta við einni tölu enn (sú aðgerð er mun tímafrekari, en samt sem áður vel framkvæmanleg):

user@computer:$ cat rockyou?d?d.txt | wc -l
2855

Example:

G-striker79:G-striker79
Freyja28:Freyja28

Og þeirri þriðju:

user@computer:$ cat rockyou?d?d?d.txt | wc -l
920

Example:

Element2006:Element2006
Centrino123:Centrino123

Hér erum við semsagt komin með lykilorð 9467 reikninga, eða 36%.

Ímyndum okkur nú að hakkarinn okkar sé nokkuð kunnugur íslensku samfélagi og viti að grunnurinn sem hún er með í höndunum sé frá íslensku fyrirtæki. Mætti kannski hugsa sér að prófa sérsniðinn orðalista?

Notum orðalista Beygingarlýsingar íslensks nútímamáls (BÍN), en síum út orð með íslenskum sértáknum. Það gera um 730.000 orð:

user@computer:$ cat bin.txt | wc -l
106

Example:

stundum:stundum
surtur:surtur

Prófum að bæta við einum tölustaf:

user@computer:$ cat bin?d.txt | wc -l
223

Example:

brussa1:brussa1
Dadda1:Dadda1

Tveimur bætt við:

user@computer:$ cat bin?d?d.txt | wc -l
644

Example:

skepna79:skepna79
skemmtileg64:skemmtileg64

Þrír:

user@computer:$ cat bin?d?d?d.txt | wc -l
171

Example:

folda234:folda234
austur104:austur104

Hér bættust við 500 reikningar.

Prófum einn orðalista enn: Öll samþykkt mannanöfn, fengið héðan.

user@computer:$ cat mannanofn.txt | wc -l
1

Example:

hersir:hersir

Ekki gaf það mikið. Bætum við einum tölustaf:

user@computer:$ cat mannanofn?d.txt | wc -l
35

Example:

Sigurjon2:Sigurjon2
Kristall3:Kristall3

Tveir:

user@computer:$ cat mannanofn?d?d.txt | wc -l
87

Example:

Frosti06:Frosti06
Hafrun28:Hafrun28

Látum staðar numið hér. Með tiltölulega litlum tilkostnaði höfum við fundið lykilorð 10.774 reikninga, eða 40%.

Athugaðu að þegar við segjum “með litlum tilkostnaði”, þá er það ekki allskostar rétt. Það veltur allt á því hverskonar dulkóðun verið er að reyna að brjóta. Í tilfelli Vodafone var sjálf dulkóðunin nokkuð sterk, fyrir utan náttúrulega það ótrúlega verklag að geyma lykilorð ódulkóðuð. Það sem hinsvegar minnkar kostnaðinn er hvernig notendur samsetja lykilorðin sín. Það er mjög fyrirsjáanlegt, eins og við höfum sýnt fram á.

Nú höfum við ekkert til að bera saman við þennan lykilorðalista sem var í Vodafone lekanum, en það hefur sýnt sig erlendis að notendur nota sömu lykilorð á mismunandi stöðum (eins og við reyndar sýndum fram á með samanburðinum við rockyou listann). Það má því leiða líkur að því að í öðrum kerfum, velji íslenskir netnotendur sér lykilorð sem eru af svipuðum (eða jafnvel bara nákvæmlega eins) toga.

En hvað er þá til ráða? Hvernig á að velja lykilorð?

1. Besta lykilorðið er lykilorð sem þú kannt ekki.
Notaðu forrit til að halda utanum lykilorðin þín, og láttu það forrit útbúa þau sjálfkrafa. Hér eru nokkur góð: 1Password, LastPass, KeePass.

2. Ekki nota sama lykilorðið neinstaðar. Ég endurtek: ekki nota sama lykilorðið neinstaðar.
Ef hakkari finnur lykilorðið þitt á einni vefsíðu, og þú hefur notað það víðar, þá ertu búinn að tapa. Þá er allt búið.

3. Ef þú af einhverjum furðulegum ástæðum getur ekki notað eitt af þeim forritum hér að ofan til að halda utanum lykilorð, reyndu þá að útbúa lykilorðin þín þannig að þau séu ekki í líkingu við þau sem meirihluti notenda Vodafone útbjó. Landsbankinn birti nýlega ágætis grein um hvernig gott er að velja lykilorð.

Dæmi:
Skref 1: Búum til lykilorðasetningu:
Hví í ósköpunum þarf ég að muna svona mörg lykilorð?

Skref 2: Fjarlægjum orðabilin:
Hvííósköpunumþarfégaðmunasvonamörglykilorð?

Skref 3: Veljum stuttan bút úr setningunni:
íósköpun

Skref 4: Bætum tölustöfum og a.m.k. einum hástaf einhversstaðar inn:
íósKöpun73 (10 stafir með blöndu af bók- og tölustöfum, há- og lágstöfum).

Við þetta má bæta að ef þessi aðferð er notuð er gott að venja sig á að velja ekki bút úr setningunni sem hefst á orði. Dæmi um það væri t.d.:

unas3voNamö

Sá sem þetta ritar er með 826 lykilorð vistuð í því forriti sem heldur utanum lykilorð. Mögulega er það í hærri kantinum, en það er ljóst að meðal notandi þarf að halda utanum tugi lykilorða. Það er erfitt að muna flókin lykilorð, jafnvel þó hjálparsetningar séu notaðar. Lang, lang best er að nota forrit til að hjálpa sér við það.