Brute-force-hyökkäysten toimintaperiaate

Miksi pituudella on merkitystä: laskelmia ja vastatoimenpiteitä.

Brute-force-hyökkäyksissä hyökkääjät yrittävät arvata salasanan kokeilemalla järjestelmällisesti kaikkia mahdollisia merkkikombinaatioita. Perusidea on yksinkertainen: testata mahdollisimman monta yhdistelmää sekunnissa – mieluiten GPU:illa tai hajautetuissa järjestelmissä. Tätä kutsutaan myös kattavaksi haun (exhaustive search).

Käytännössä tällaiset hyökkäykset ovat valitettavasti usein onnistuneita, koska monet salasanat ovat liian lyhyitä, rajoittuvat muutamaan merkkiryhmään (vain kirjaimet) tai esiintyvät sanaluetteloissa. Tämä pienentää hakualuetta huomattavasti ja helpottaa salasanan arvaamista. Vielä tärkeämpää: Erotetaan online-hyökkäykset (kirjautumislomakkeita vastaan, joissa auttavat arvausten rajoittaminen/tilien lukitseminen) ja offline-hyökkäykset (varastettuja salasanahash-arvoja vastaan, joissa hash-funktio ja salasanan vahvuus ratkaisevat hyökkäyksen keston).

Salasanojen murtaminen (offline) ≠ ”salauksen purkaminen”

Salasanoja ei purka salausta, vaan ne tallennetaan hash-arvoina ja sitten etsitään arvaamalla + hashaamalla</ em> (brute force, sanakirja-/naamiohyökkäykset). Nykyaikaisen laitteiston laskentanopeus on miljardeja sekunnissa (nopeille hash-menetelmille), minkä vuoksi pitkät ja hitailla menetelmillä (esim. Argon2, scrypt, PBKDF2, bcrypt) hajautetut salasanat ovat ratkaisevia.

Salasanan yhdistelmä ja pituus

Seuraavat esimerkit osoittavat pituuden ja merkkivalinnan vaikutuksen. Havainnollistamiseksi lasketaan 2 miljardia yritystä sekunnissa (erittäin tehokas yksittäinen tietokone; todelliset arvot vaihtelevat suuresti laitteistosta ja – offline-tilassa – hajautusmenetelmästä riippuen).

Tyypillisiä merkkiryhmiä:

  • Numerot (10: 0–9)
  • Kirjaimet (52: A–Z ja a–z)
  • Erikoismerkit (≈ 32; riippuu palvelun sallimasta merkkijonosta)

Mahdollisten yhdistelmien määrä lasketaan seuraavasti:

Mahdolliset yhdistelmät = (merkkimäärä)salasanan pituus

Tärkeää: Taulukossa on esitetty maksimi hakuaika. Keskimäärin todellinen aika on noin puolet tästä. Lisäksi sanakirja-, sääntö- ja maskikohtaiset hyökkäykset vähentävät hakualuetta huomattavasti, kun taas hitaat salasanan hajautusmenetelmät laskevat tehokasta nopeutta dramaattisesti.

Salasana koostuu Mahdolliset yhdistelmät (kaava) Tarvittava aika (2 miljardia/s)

5 merkkiä
(3 pientä kirjainta,
2 numeroa)

( 53) × 263 × 102 =
17 576 000

17 576 000 / 2 000 000 000 =
0,008788 sekuntia

7 merkkiä
(1 iso kirjain,
6 pientä kirjainta)

( 71) × 261+6 =
56 222 671 232

56 222 671 232 / 2 000 000 000 =
28,111335616 sekuntia

8 merkkiä
(4 pientä kirjainta,
2 erikoismerkkiä,
2 numeroa)

( 84) × ( 42 ) × 264 × 322 × 102 =
19 653 623 808 000

19 653 623 808 000 / 2 000 000 000 =
9 826,811904 sekuntia =
≈ 2,73 tuntia

9 merkkiä
(2 isoa kirjainta,
3 pientä kirjainta,
2 numeroa,
2 erikoismerkkiä)

( 92 ) × ( 73) × ( 42 ) × 262+3 × 102 × 322 =
9 197 895 942 144 000

9 197 895 942 144 000 / 2 000 000 000 =
4 598 947,971072 sekuntia =
≈ 53,23 päivää

12 merkkiä
(3 isoa kirjainta,
4 pientä kirjainta,
3 erikoismerkkiä,
2 numeroa)

( 123) × ( 94 ) × ( 53) × 263+4 × 323 × 102 =
7 295 525 784 083 496 960 000

7 295 525 784 083 496 960 000 / 2 000 000 000 =
3 647 762 892 041,74848 sekuntia =
≈ 115 590,63 vuotta

14 merkkiä
(4 isoa kirjainta,
4 pientä kirjainta,
3 numeroa,
3 erikoismerkkiä)

( 144 ) × ( 104) × ( 63 ) × 264+4 × 103 × 323 =
28 768 690 008 569 256 345 600 000

28 768 690 008 569 256 345 600 000 / 2 000 000 000 =
14 384 345 004 284 628,1728 sekuntia =
≈ 455 812 387,64 vuotta

Johtopäätös: Jokainen ylimääräinen merkki moninkertaistaa hakualueen. Pituus voittaa monimutkaisuus säännöt – erityisesti offline-hyökkäyksiä vastaan – edellyttäen, että palvelut käyttävät sopivia, hitaita hajautusmenetelmiä suolalla.

Suojautuminen brute force -hyökkäyksiltä

Tehokkain käyttäjän toimenpide on pitkä, satunnainen pääsalasana tai salasana (esim. useita satunnaisia sanoja) – joka on yksilöllinen jokaiselle palvelulle. Password Depot auttaa luomisessa ja näyttää arvioidun hyökkäysajan, joka ottaa huomioon pituuden/merkkijonon lisäksi myös sanakirjan heikkoudet.

  • Ota MFA/2FA käyttöön (esim. TOTP-sovellus tai laitteistotunnus) – mahdollisuuksien mukaan salasanat ovat vielä parempia. Katso BSI-ohjeet.
  • Ei salasanan kierrätystä. Jokaisella tilillä on oltava oma vahva salasana.
  • Pitkä salasana pakollisen monimutkaisuuden sijaan. Palveluiden tulisi sallia pitkät salasanat/salasanalauseet (vähintään 64 merkkiä) ja estää vaarantuneet salasanat (mustalista).
  • Hidas hash-menetelmä palvelinpuolella (esim. Argon2, scrypt, PBKDF2, bcrypt) Saltilla ja sopivilla työkertoimilla; nopeat hash-menetelmät, kuten MD5/SHA-1, eivät sopivia salasanan tallentamiseen.
  • Nopeuden rajoittaminen/kuristaminen ja lukitseminen: Online-hyökkäykset on hidastettava rajoittamalla virheellisten yritysten määrää, lisäämällä odotusaikoja ja tarvittaessa käyttämällä CAPTCHA-tunnistusta.

Lisäksi Password Depot vaikeuttaa online-yrityksiä estämällä pääsalasanan syöttömaskin virheellisten syöttöjen jälkeen – lisäämällä odotusaikaa toistuvien virheellisten yritysten yhteydessä.

Lisätietoja